Pull SCSI fixes from James Bottomley: "Two patches, both in drivers. One is a fix to FC recovery (lpfc) and the other is an enhancement to support the Intel Alder Motherboard with the UFS driver which comes under the -rc exception process for hardware enabling" * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: scsi: ufs: ufs-pci: Add support for Intel ADL scsi: lpfc: Fix non-recovery of remote ports following an unsolicited LOGO
Unified · Split
| @@ -5095,14 +5095,9 @@ lpfc_cmpl_els_logo_acc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, · 5094 unmodified lines | |||
| 5095 | /* NPort Recovery mode or node is just allocated */ | 5095 | /* NPort Recovery mode or node is just allocated */ |
| 5096 | if (!lpfc_nlp_not_used(ndlp)) { | 5096 | if (!lpfc_nlp_not_used(ndlp)) { |
| 5097 | /* A LOGO is completing and the node is in NPR state. | 5097 | /* A LOGO is completing and the node is in NPR state. |
| 5098 | * If this a fabric node that cleared its transport | 5098 | * Just unregister the RPI because the node is still |
| 5099 | * registration, release the rpi. | 5099 | * required. |
| 5100 | */ | 5100 | */ |
| 5101 | spin_lock_irq(&ndlp->lock); | ||
| 5102 | ndlp->nlp_flag &= ~NLP_NPR_2B_DISC; | ||
| 5103 | if (phba->sli_rev == LPFC_SLI_REV4) | ||
| 5104 | ndlp->nlp_flag |= NLP_RELEASE_RPI; | ||
| 5105 | spin_unlock_irq(&ndlp->lock); | ||
| 5106 | lpfc_unreg_rpi(vport, ndlp); | 5101 | lpfc_unreg_rpi(vport, ndlp); |
| 5107 | } else { | 5102 | } else { |
| 5108 | /* Indicate the node has already released, should | 5103 | /* Indicate the node has already released, should |
| @@ -421,6 +421,13 @@ static int ufs_intel_lkf_init(struct ufs_hba *hba) · 420 unmodified lines | |||
| 421 | return err; | 421 | return err; |
| 422 | } | 422 | } |
| 423 | 423 | ||
| 424 | static int ufs_intel_adl_init(struct ufs_hba *hba) | ||
| 425 | { | ||
| 426 | hba->nop_out_timeout = 200; | ||
| 427 | hba->quirks |= UFSHCD_QUIRK_BROKEN_AUTO_HIBERN8; | ||
| 428 | return ufs_intel_common_init(hba); | ||
| 429 | } | ||
| 430 | |||
| 424 | static struct ufs_hba_variant_ops ufs_intel_cnl_hba_vops = { | 431 | static struct ufs_hba_variant_ops ufs_intel_cnl_hba_vops = { |
| 425 | .name = "intel-pci", | 432 | .name = "intel-pci", |
| 426 | .init = ufs_intel_common_init, | 433 | .init = ufs_intel_common_init, |
| @@ -449,6 +456,15 @@ static struct ufs_hba_variant_ops ufs_intel_lkf_hba_vops = { · 22 unmodified lines | |||
| 449 | .device_reset = ufs_intel_device_reset, | 456 | .device_reset = ufs_intel_device_reset, |
| 450 | }; | 457 | }; |
| 451 | 458 | ||
| 459 | static struct ufs_hba_variant_ops ufs_intel_adl_hba_vops = { | ||
| 460 | .name = "intel-pci", | ||
| 461 | .init = ufs_intel_adl_init, | ||
| 462 | .exit = ufs_intel_common_exit, | ||
| 463 | .link_startup_notify = ufs_intel_link_startup_notify, | ||
| 464 | .resume = ufs_intel_resume, | ||
| 465 | .device_reset = ufs_intel_device_reset, | ||
| 466 | }; | ||
| 467 | |||
| 452 | #ifdef CONFIG_PM_SLEEP | 468 | #ifdef CONFIG_PM_SLEEP |
| 453 | static int ufshcd_pci_restore(struct device *dev) | 469 | static int ufshcd_pci_restore(struct device *dev) |
| 454 | { | 470 | { |
| @@ -563,6 +579,8 @@ static const struct pci_device_id ufshcd_pci_tbl[] = { · 108 unmodified lines | |||
| 563 | { PCI_VDEVICE(INTEL, 0x4B41), (kernel_ulong_t)&ufs_intel_ehl_hba_vops }, | 579 | { PCI_VDEVICE(INTEL, 0x4B41), (kernel_ulong_t)&ufs_intel_ehl_hba_vops }, |
| 564 | { PCI_VDEVICE(INTEL, 0x4B43), (kernel_ulong_t)&ufs_intel_ehl_hba_vops }, | 580 | { PCI_VDEVICE(INTEL, 0x4B43), (kernel_ulong_t)&ufs_intel_ehl_hba_vops }, |
| 565 | { PCI_VDEVICE(INTEL, 0x98FA), (kernel_ulong_t)&ufs_intel_lkf_hba_vops }, | 581 | { PCI_VDEVICE(INTEL, 0x98FA), (kernel_ulong_t)&ufs_intel_lkf_hba_vops }, |
| 582 | { PCI_VDEVICE(INTEL, 0x51FF), (kernel_ulong_t)&ufs_intel_adl_hba_vops }, | ||
| 583 | { PCI_VDEVICE(INTEL, 0x54FF), (kernel_ulong_t)&ufs_intel_adl_hba_vops }, | ||
| 566 | { } /* terminate list */ | 584 | { } /* terminate list */ |
| 567 | }; | 585 | }; |
| 568 | 586 | ||