From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey Kardashevskiy Subject: Re: [PATCH v2 2/4] vfio: spapr: Fix build error Date: Wed, 06 Aug 2014 16:33:29 +1000 Message-ID: <53E1CC39.9000401@ozlabs.ru> References: <1407293313-24894-1-git-send-email-aik@ozlabs.ru> <1407293313-24894-3-git-send-email-aik@ozlabs.ru> <1407294770.316.76.camel@ul30vt.home> <20140806035413.GA7681@shangw> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: Alex Williamson , linuxppc-dev@lists.ozlabs.org, Benjamin Herrenschmidt , kvm@vger.kernel.org To: Gavin Shan Return-path: Received: from mail-pd0-f181.google.com ([209.85.192.181]:44511 "EHLO mail-pd0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754317AbaHFGdk (ORCPT ); Wed, 6 Aug 2014 02:33:40 -0400 Received: by mail-pd0-f181.google.com with SMTP id g10so2754012pdj.12 for ; Tue, 05 Aug 2014 23:33:39 -0700 (PDT) In-Reply-To: <20140806035413.GA7681@shangw> Sender: kvm-owner@vger.kernel.org List-ID: On 08/06/2014 01:54 PM, Gavin Shan wrote: > On Tue, Aug 05, 2014 at 09:12:50PM -0600, Alex Williamson wrote: >> On Wed, 2014-08-06 at 12:48 +1000, Alexey Kardashevskiy wrote: >>> From: Gavin Shan >>> >>> 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: =E2=80=98struct pci_dev=E2=80= =99 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] un= defined! >>> ERROR: ".vfio_spapr_pci_eeh_release" [drivers/vfio/pci/vfio-pci.ko]= undefined! >>> >>> Reported-by: Alexey Kardashevskiy >>> Signed-off-by: Gavin Shan >>> [removed include "pci.h" in vfio.c] >>> Signed-off-by: Alexey Kardashevskiy >>> --- >>> Changes: >>> v2: >>> * removed #include from vfio.c and tested >=20 > Appreciated for Alexey's help on it :) My bad, that was wrong actually, we still need this: diff --git a/include/linux/vfio.h b/include/linux/vfio.h index 25a0fbd..224128a 100644 --- a/include/linux/vfio.h +++ b/include/linux/vfio.h @@ -98,6 +98,7 @@ extern int vfio_external_user_iommu_id(struct vfio_gr= oup *group); extern long vfio_external_check_extension(struct vfio_group *group, unsigned long arg); +struct pci_dev; #ifdef CONFIG_EEH extern int vfio_spapr_pci_eeh_open(struct pci_dev *pdev); extern void vfio_spapr_pci_eeh_release(struct pci_dev *pdev); Otherwise it is "warning: =E2=80=98struct pci_dev=E2=80=99 declared ins= ide parameter list". =46or some reason I only see this warning when backporting this patch t= o 3.10 and I do not see it in 3.16-rc7, I guess pci.h gets included somewhere. >=20 >> >> I also commented regarding the ifdef around all of vfio_spapr_eeh.c: >> >> Why not add a new CONFIG_VFIO_SPAPR_EEH option to handle this >> instead? >> >> Did you disagree? The ifdef is pretty ugly. >> >=20 > I'll introduce CONFIG_VFIO_SPAPR_EEH. So, Gavin, then the patchset is yours (again), ok? > Thanks, > Gavin >=20 >>> --- >>> drivers/vfio/Makefile | 4 ++-- >>> drivers/vfio/vfio_spapr_eeh.c | 6 ++++++ >>> 2 files changed, 8 insertions(+), 2 deletions(-) >>> >>> diff --git a/drivers/vfio/Makefile b/drivers/vfio/Makefile >>> index 50e30bc..4891cca 100644 >>> --- a/drivers/vfio/Makefile >>> +++ b/drivers/vfio/Makefile >>> @@ -1,5 +1,5 @@ >>> obj-$(CONFIG_VFIO) +=3D vfio.o >>> obj-$(CONFIG_VFIO_IOMMU_TYPE1) +=3D vfio_iommu_type1.o >>> -obj-$(CONFIG_VFIO_IOMMU_SPAPR_TCE) +=3D vfio_iommu_spapr_tce.o >>> -obj-$(CONFIG_EEH) +=3D vfio_spapr_eeh.o >>> +obj-$(CONFIG_VFIO_IOMMU_SPAPR_TCE) +=3D vfio_iommu_spapr_tce.o \ >>> + vfio_spapr_eeh.o >>> obj-$(CONFIG_VFIO_PCI) +=3D pci/ >>> diff --git a/drivers/vfio/vfio_spapr_eeh.c b/drivers/vfio/vfio_spap= r_eeh.c >>> index f834b4c..1a93e83 100644 >>> --- a/drivers/vfio/vfio_spapr_eeh.c >>> +++ b/drivers/vfio/vfio_spapr_eeh.c >>> @@ -14,15 +14,19 @@ >>> #include >>> =20 >>> /* We might build address mapping here for "fast" path later */ >>> +#ifdef CONFIG_EEH >>> + >>> int vfio_spapr_pci_eeh_open(struct pci_dev *pdev) >>> { >>> return eeh_dev_open(pdev); >>> } >>> +EXPORT_SYMBOL_GPL(vfio_spapr_pci_eeh_open); >>> =20 >>> void vfio_spapr_pci_eeh_release(struct pci_dev *pdev) >>> { >>> eeh_dev_release(pdev); >>> } >>> +EXPORT_SYMBOL_GPL(vfio_spapr_pci_eeh_release); >>> =20 >>> long vfio_spapr_iommu_eeh_ioctl(struct iommu_group *group, >>> unsigned int cmd, unsigned long arg) >>> @@ -85,3 +89,5 @@ long vfio_spapr_iommu_eeh_ioctl(struct iommu_grou= p *group, >>> =20 >>> return ret; >>> } >>> +EXPORT_SYMBOL_GPL(vfio_spapr_iommu_eeh_ioctl); >>> +#endif /* CONFIG_EEH */ >> >> >> >=20 --=20 Alexey