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 | 5095 | /* NPort Recovery mode or node is just allocated */ |
| 5096 | 5096 | if (!lpfc_nlp_not_used(ndlp)) { |
| 5097 | 5097 | /* A LOGO is completing and the node is in NPR state. |
| 5098 | − * If this a fabric node that cleared its transport | |
| 5099 | − * registration, release the rpi. | |
| 5098 | + * Just unregister the RPI because the node is still | |
| 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 | 5101 | lpfc_unreg_rpi(vport, ndlp); |
| 5107 | 5102 | } else { |
| 5108 | 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 | 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 | 431 | static struct ufs_hba_variant_ops ufs_intel_cnl_hba_vops = { |
| 425 | 432 | .name = "intel-pci", |
| 426 | 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 | 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 | 468 | #ifdef CONFIG_PM_SLEEP |
| 453 | 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 | 579 | { PCI_VDEVICE(INTEL, 0x4B41), (kernel_ulong_t)&ufs_intel_ehl_hba_vops }, |
| 564 | 580 | { PCI_VDEVICE(INTEL, 0x4B43), (kernel_ulong_t)&ufs_intel_ehl_hba_vops }, |
| 565 | 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 | 584 | { } /* terminate list */ |
| 567 | 585 | }; |
| 568 | 586 | |