mirror of https://gitee.com/openkylin/linux.git
powerpc/pci: Fix SRIOV not building without EEH enabled
On Book3E CPUs (and possibly other configs), it is possible to have SRIOV
(CONFIG_PCI_IOV) set without CONFIG_EEH. The SRIOV code does not check
for this, and if EEH is disabled, pci_dn.c fails to build.
Fix this by gating the EEH-specific code in the SRIOV implementation
behind CONFIG_EEH.
Fixes: 39218cd0
("powerpc/eeh: EEH device for VF")
Reported-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Russell Currey <ruscur@russell.cc>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
a430739009
commit
fb36e90736
|
@ -181,7 +181,9 @@ struct pci_dn *add_dev_pci_data(struct pci_dev *pdev)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_PCI_IOV
|
#ifdef CONFIG_PCI_IOV
|
||||||
struct pci_dn *parent, *pdn;
|
struct pci_dn *parent, *pdn;
|
||||||
|
#ifdef CONFIG_EEH
|
||||||
struct eeh_dev *edev;
|
struct eeh_dev *edev;
|
||||||
|
#endif /* CONFIG_EEH */
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* Only support IOV for now */
|
/* Only support IOV for now */
|
||||||
|
@ -208,11 +210,13 @@ struct pci_dn *add_dev_pci_data(struct pci_dev *pdev)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_EEH
|
||||||
/* Create the EEH device for the VF */
|
/* Create the EEH device for the VF */
|
||||||
eeh_dev_init(pdn, pci_bus_to_host(pdev->bus));
|
eeh_dev_init(pdn, pci_bus_to_host(pdev->bus));
|
||||||
edev = pdn_to_eeh_dev(pdn);
|
edev = pdn_to_eeh_dev(pdn);
|
||||||
BUG_ON(!edev);
|
BUG_ON(!edev);
|
||||||
edev->physfn = pdev;
|
edev->physfn = pdev;
|
||||||
|
#endif /* CONFIG_EEH */
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_PCI_IOV */
|
#endif /* CONFIG_PCI_IOV */
|
||||||
|
|
||||||
|
@ -266,12 +270,14 @@ void remove_dev_pci_data(struct pci_dev *pdev)
|
||||||
pdn->devfn != pci_iov_virtfn_devfn(pdev, i))
|
pdn->devfn != pci_iov_virtfn_devfn(pdev, i))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
#ifdef CONFIG_EEH
|
||||||
/* Release EEH device for the VF */
|
/* Release EEH device for the VF */
|
||||||
edev = pdn_to_eeh_dev(pdn);
|
edev = pdn_to_eeh_dev(pdn);
|
||||||
if (edev) {
|
if (edev) {
|
||||||
pdn->edev = NULL;
|
pdn->edev = NULL;
|
||||||
kfree(edev);
|
kfree(edev);
|
||||||
}
|
}
|
||||||
|
#endif /* CONFIG_EEH */
|
||||||
|
|
||||||
if (!list_empty(&pdn->list))
|
if (!list_empty(&pdn->list))
|
||||||
list_del(&pdn->list);
|
list_del(&pdn->list);
|
||||||
|
|
Loading…
Reference in New Issue