Message ID | 20170223032726.943-1-vaibhav@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Michael Ellerman |
Headers | show |
Le 23/02/2017 à 04:27, Vaibhav Jain a écrit : > Fix a boundary condition where in some cases an eeh event with > state == pci_channel_io_perm_failure wont be passed on to a driver > attached to the virtual pci device associated with a slice. This will > happen in case the slice just before (n-1) doesn't have any vPHB bus > associated with it, that results in an early return from > cxl_pci_error_detected callback. > > With state==pci_channel_io_perm_failure, the adapter will be removed > irrespective of the return value of cxl_vphb_error_detected. So we now > always return PCI_ERS_RESULT_DISCONNECTED for this case i.e even if > the AFU isn't using a vPHB (currently returns PCI_ERS_RESULT_NONE). > > Fixes: e4f5fc001a6("cxl: Do not create vPHB if there are no AFU configuration records") > Signed-off-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com> > Reviewed-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com> > Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com> > > --- Acked-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
On Thu, 2017-02-23 at 03:27:26 UTC, Vaibhav Jain wrote: > Fix a boundary condition where in some cases an eeh event with > state == pci_channel_io_perm_failure wont be passed on to a driver > attached to the virtual pci device associated with a slice. This will > happen in case the slice just before (n-1) doesn't have any vPHB bus > associated with it, that results in an early return from > cxl_pci_error_detected callback. > > With state==pci_channel_io_perm_failure, the adapter will be removed > irrespective of the return value of cxl_vphb_error_detected. So we now > always return PCI_ERS_RESULT_DISCONNECTED for this case i.e even if > the AFU isn't using a vPHB (currently returns PCI_ERS_RESULT_NONE). > > Fixes: e4f5fc001a6("cxl: Do not create vPHB if there are no AFU configuration records") > Signed-off-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com> > Reviewed-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com> > Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com> > Acked-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com> Applied to powerpc fixes, thanks. https://git.kernel.org/powerpc/c/07f5ab6002a4f0b633f3495157166f cheers
diff --git a/drivers/misc/cxl/pci.c b/drivers/misc/cxl/pci.c index 80a87ab..679afc9 100644 --- a/drivers/misc/cxl/pci.c +++ b/drivers/misc/cxl/pci.c @@ -1780,15 +1780,13 @@ static pci_ers_result_t cxl_pci_error_detected(struct pci_dev *pdev, /* If we're permanently dead, give up. */ if (state == pci_channel_io_perm_failure) { - /* Tell the AFU drivers; but we don't care what they - * say, we're going away. - */ for (i = 0; i < adapter->slices; i++) { afu = adapter->afu[i]; - /* Only participate in EEH if we are on a virtual PHB */ - if (afu->phb == NULL) - return PCI_ERS_RESULT_NONE; - cxl_vphb_error_detected(afu, state); + /* Tell the AFU drivers; but we don't care what they + * say, we're going away. + */ + if (afu->phb != NULL) + cxl_vphb_error_detected(afu, state); } return PCI_ERS_RESULT_DISCONNECT; }