drivers/vfio: Fix EEH build error
The VFIO related components could be built as dynamic modules. Unfortunately, CONFIG_EEH can't be configured to "m". The patch fixes the build errors when configuring VFIO related components as dynamic modules as follows: CC [M] drivers/vfio/vfio_iommu_spapr_tce.o In file included from drivers/vfio/vfio.c:33:0: include/linux/vfio.h:101:43: warning: ‘struct pci_dev’ declared \ inside parameter list [enabled by default] : WRAP arch/powerpc/boot/zImage.pseries WRAP arch/powerpc/boot/zImage.maple WRAP arch/powerpc/boot/zImage.pmac WRAP arch/powerpc/boot/zImage.epapr MODPOST 1818 modules ERROR: ".vfio_spapr_iommu_eeh_ioctl" [drivers/vfio/vfio_iommu_spapr_tce.ko]\ undefined! ERROR: ".vfio_spapr_pci_eeh_open" [drivers/vfio/pci/vfio-pci.ko] undefined! ERROR: ".vfio_spapr_pci_eeh_release" [drivers/vfio/pci/vfio-pci.ko] undefined! Reported-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
parent
bc4fba7712
commit
92d18a6851
4 changed files with 11 additions and 1 deletions
|
@ -8,11 +8,17 @@ config VFIO_IOMMU_SPAPR_TCE
|
||||||
depends on VFIO && SPAPR_TCE_IOMMU
|
depends on VFIO && SPAPR_TCE_IOMMU
|
||||||
default n
|
default n
|
||||||
|
|
||||||
|
config VFIO_SPAPR_EEH
|
||||||
|
tristate
|
||||||
|
depends on EEH && VFIO_IOMMU_SPAPR_TCE
|
||||||
|
default n
|
||||||
|
|
||||||
menuconfig VFIO
|
menuconfig VFIO
|
||||||
tristate "VFIO Non-Privileged userspace driver framework"
|
tristate "VFIO Non-Privileged userspace driver framework"
|
||||||
depends on IOMMU_API
|
depends on IOMMU_API
|
||||||
select VFIO_IOMMU_TYPE1 if X86
|
select VFIO_IOMMU_TYPE1 if X86
|
||||||
select VFIO_IOMMU_SPAPR_TCE if (PPC_POWERNV || PPC_PSERIES)
|
select VFIO_IOMMU_SPAPR_TCE if (PPC_POWERNV || PPC_PSERIES)
|
||||||
|
select VFIO_SPAPR_EEH if (PPC_POWERNV || PPC_PSERIES)
|
||||||
select ANON_INODES
|
select ANON_INODES
|
||||||
help
|
help
|
||||||
VFIO provides a framework for secure userspace device drivers.
|
VFIO provides a framework for secure userspace device drivers.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
obj-$(CONFIG_VFIO) += vfio.o
|
obj-$(CONFIG_VFIO) += vfio.o
|
||||||
obj-$(CONFIG_VFIO_IOMMU_TYPE1) += vfio_iommu_type1.o
|
obj-$(CONFIG_VFIO_IOMMU_TYPE1) += vfio_iommu_type1.o
|
||||||
obj-$(CONFIG_VFIO_IOMMU_SPAPR_TCE) += vfio_iommu_spapr_tce.o
|
obj-$(CONFIG_VFIO_IOMMU_SPAPR_TCE) += vfio_iommu_spapr_tce.o
|
||||||
obj-$(CONFIG_EEH) += vfio_spapr_eeh.o
|
obj-$(CONFIG_VFIO_SPAPR_EEH) += vfio_spapr_eeh.o
|
||||||
obj-$(CONFIG_VFIO_PCI) += pci/
|
obj-$(CONFIG_VFIO_PCI) += pci/
|
||||||
|
|
|
@ -18,11 +18,13 @@ int vfio_spapr_pci_eeh_open(struct pci_dev *pdev)
|
||||||
{
|
{
|
||||||
return eeh_dev_open(pdev);
|
return eeh_dev_open(pdev);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(vfio_spapr_pci_eeh_open);
|
||||||
|
|
||||||
void vfio_spapr_pci_eeh_release(struct pci_dev *pdev)
|
void vfio_spapr_pci_eeh_release(struct pci_dev *pdev)
|
||||||
{
|
{
|
||||||
eeh_dev_release(pdev);
|
eeh_dev_release(pdev);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(vfio_spapr_pci_eeh_release);
|
||||||
|
|
||||||
long vfio_spapr_iommu_eeh_ioctl(struct iommu_group *group,
|
long vfio_spapr_iommu_eeh_ioctl(struct iommu_group *group,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
|
@ -85,3 +87,4 @@ long vfio_spapr_iommu_eeh_ioctl(struct iommu_group *group,
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(vfio_spapr_iommu_eeh_ioctl);
|
||||||
|
|
|
@ -98,6 +98,7 @@ extern int vfio_external_user_iommu_id(struct vfio_group *group);
|
||||||
extern long vfio_external_check_extension(struct vfio_group *group,
|
extern long vfio_external_check_extension(struct vfio_group *group,
|
||||||
unsigned long arg);
|
unsigned long arg);
|
||||||
|
|
||||||
|
struct pci_dev;
|
||||||
#ifdef CONFIG_EEH
|
#ifdef CONFIG_EEH
|
||||||
extern int vfio_spapr_pci_eeh_open(struct pci_dev *pdev);
|
extern int vfio_spapr_pci_eeh_open(struct pci_dev *pdev);
|
||||||
extern void vfio_spapr_pci_eeh_release(struct pci_dev *pdev);
|
extern void vfio_spapr_pci_eeh_release(struct pci_dev *pdev);
|
||||||
|
|
Loading…
Add table
Reference in a new issue