Here is what I have in my stash which would be nice to have in 3.17.
Alexey Kardashevskiy (2):
vfio_spapr_eeh: Enable compile as a module
vfio_pci: spapr: Enable VFIO if EEH is not supported
Gavin Shan (2):
powerpc/eeh: Export eeh_iommu_group_to_pe()
vfio: spapr: Fix build error
arch/powerpc/kernel/eeh.c | 1 +
drivers/vfio/Makefile | 4 ++--
drivers/vfio/pci/vfio_pci.c | 6 ++----
drivers/vfio/vfio_spapr_eeh.c | 16 ++++++++++++++++
4 files changed, 21 insertions(+), 6 deletions(-)
--
2.0.0
@@ -14,15 +14,19 @@#include<asm/eeh.h>/* We might build address mapping here for "fast" path later */+#ifdef CONFIG_EEH+intvfio_spapr_pci_eeh_open(structpci_dev*pdev){returneeh_dev_open(pdev);}+EXPORT_SYMBOL_GPL(vfio_spapr_pci_eeh_open);voidvfio_spapr_pci_eeh_release(structpci_dev*pdev){eeh_dev_release(pdev);}+EXPORT_SYMBOL_GPL(vfio_spapr_pci_eeh_release);longvfio_spapr_iommu_eeh_ioctl(structiommu_group*group,unsignedintcmd,unsignedlongarg)
From: Gavin Shan <redacted>
The function is used by VFIO driver, which might be built as a
dynamic module.
Signed-off-by: Gavin Shan <redacted>
---
arch/powerpc/kernel/eeh.c | 1 +
1 file changed, 1 insertion(+)
The existing vfio_pci_open() fails if there is no EEH support for PCI.
This breaks POWER7's P5IOC2 PHB support which this patch brings back.
It is a warning because this should not normally happen on supported
configurations such as POWER8+IODA so we always want to see it in dmesg.
It is _once() as the message may be triggered by non-privileged userspace
and we do not want to pollute dmesg.
Signed-off-by: Alexey Kardashevskiy <redacted>
---
Changes:
v2:
* discussed with Ben Herrenschmidt and did s/pr_warn/pr_warn_once/
* updated commit log
---
drivers/vfio/pci/vfio_pci.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
@@ -179,10 +179,8 @@ static int vfio_pci_open(void *device_data)gotoerror;ret=vfio_spapr_pci_eeh_open(vdev->pdev);-if(ret){-vfio_pci_disable(vdev);-gotoerror;-}+if(ret)+pr_warn_once("EEH is not supported\n");}return0;
From: Alex Williamson <hidden> Date: 2014-08-06 03:13:01
On Wed, 2014-08-06 at 12:48 +1000, Alexey Kardashevskiy wrote:
From: Gavin Shan <redacted>
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 <redacted>
Signed-off-by: Gavin Shan <redacted>
[removed include "pci.h" in vfio.c]
Signed-off-by: Alexey Kardashevskiy <redacted>
---
Changes:
v2:
* removed #include <linux/pci.h> from vfio.c and tested
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.
@@ -14,15 +14,19 @@#include<asm/eeh.h>/* We might build address mapping here for "fast" path later */+#ifdef CONFIG_EEH+intvfio_spapr_pci_eeh_open(structpci_dev*pdev){returneeh_dev_open(pdev);}+EXPORT_SYMBOL_GPL(vfio_spapr_pci_eeh_open);voidvfio_spapr_pci_eeh_release(structpci_dev*pdev){eeh_dev_release(pdev);}+EXPORT_SYMBOL_GPL(vfio_spapr_pci_eeh_release);longvfio_spapr_iommu_eeh_ioctl(structiommu_group*group,unsignedintcmd,unsignedlongarg)
From: Alex Williamson <hidden> Date: 2014-08-06 03:44:27
On Wed, 2014-08-06 at 12:48 +1000, Alexey Kardashevskiy wrote:
quoted hunk
The existing vfio_pci_open() fails if there is no EEH support for PCI.
This breaks POWER7's P5IOC2 PHB support which this patch brings back.
It is a warning because this should not normally happen on supported
configurations such as POWER8+IODA so we always want to see it in dmesg.
It is _once() as the message may be triggered by non-privileged userspace
and we do not want to pollute dmesg.
Signed-off-by: Alexey Kardashevskiy <redacted>
---
Changes:
v2:
* discussed with Ben Herrenschmidt and did s/pr_warn/pr_warn_once/
* updated commit log
---
drivers/vfio/pci/vfio_pci.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
@@ -179,10 +179,8 @@ static int vfio_pci_open(void *device_data)gotoerror;ret=vfio_spapr_pci_eeh_open(vdev->pdev);-if(ret){-vfio_pci_disable(vdev);-gotoerror;-}+if(ret)+pr_warn_once("EEH is not supported\n");}return0;
Now the next question, what's the point of vfio_spapr_pci_eeh_open()
returning a value? Couldn't it return void now and this warning can go
into eeh specific code? Thanks,
Alex
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:
quoted
From: Gavin Shan <redacted>
=20
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:
=20
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=
=20
Reported-by: Alexey Kardashevskiy <redacted>
Signed-off-by: Gavin Shan <redacted>
[removed include "pci.h" in vfio.c]
Signed-off-by: Alexey Kardashevskiy <redacted>
---
Changes:
v2:
* removed #include <linux/pci.h> from vfio.c and tested
Appreciated for Alexey's help on it :)
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.
From: Benjamin Herrenschmidt <benh@kernel.crashing.org> Date: 2014-08-06 04:34:54
On Tue, 2014-08-05 at 21:44 -0600, Alex Williamson wrote:
quoted
ret = vfio_spapr_pci_eeh_open(vdev->pdev);
- if (ret) {
- vfio_pci_disable(vdev);
- goto error;
- }
+ if (ret)
+ pr_warn_once("EEH is not supported\n");
}
return 0;
Now the next question, what's the point of vfio_spapr_pci_eeh_open()
returning a value? Couldn't it return void now and this warning can
go into eeh specific code? Thanks,
In order to call vfio_pci_disable() when that happens ?
Cheers,
Ben.
On Tue, Aug 05, 2014 at 09:12:50PM -0600, Alex Williamson wrote:
quoted
On Wed, 2014-08-06 at 12:48 +1000, Alexey Kardashevskiy wrote:
quoted
From: Gavin Shan <redacted>
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 <redacted>
Signed-off-by: Gavin Shan <redacted>
[removed include "pci.h" in vfio.c]
Signed-off-by: Alexey Kardashevskiy <redacted>
---
Changes:
v2:
* removed #include <linux/pci.h> from vfio.c and tested
Appreciated for Alexey's help on it :)
My bad, that was wrong actually, we still need this:
@@ -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,
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: ‘struct pci_dev’ declared inside parameter list".
For some reason I only see this warning when backporting this patch to 3.10
and I do not see it in 3.16-rc7, I guess pci.h gets included somewhere.
quoted
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.
I'll introduce CONFIG_VFIO_SPAPR_EEH.
So, Gavin, then the patchset is yours (again), ok?
@@ -14,15 +14,19 @@#include<asm/eeh.h>/* We might build address mapping here for "fast" path later */+#ifdef CONFIG_EEH+intvfio_spapr_pci_eeh_open(structpci_dev*pdev){returneeh_dev_open(pdev);}+EXPORT_SYMBOL_GPL(vfio_spapr_pci_eeh_open);voidvfio_spapr_pci_eeh_release(structpci_dev*pdev){eeh_dev_release(pdev);}+EXPORT_SYMBOL_GPL(vfio_spapr_pci_eeh_release);longvfio_spapr_iommu_eeh_ioctl(structiommu_group*group,unsignedintcmd,unsignedlongarg)
On Wed, Aug 06, 2014 at 04:33:29PM +1000, Alexey Kardashevskiy wrote:
On 08/06/2014 01:54 PM, Gavin Shan wrote:
quoted
On Tue, Aug 05, 2014 at 09:12:50PM -0600, Alex Williamson wrote:
quoted
On Wed, 2014-08-06 at 12:48 +1000, Alexey Kardashevskiy wrote:
quoted
From: Gavin Shan <redacted>
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=
@@ -98,6 +98,7 @@ extern int vfio_external_user_iommu_id(struct vfio_gro=
up
*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 insi=
de parameter list".
For some reason I only see this warning when backporting this patch to 3=
.10
and I do not see it in 3.16-rc7, I guess pci.h gets included somewhere.
quoted
=20
quoted
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?
Sure. Thanks for your help, Alexey. I was busy with other
bugs with higher priority recently. I'm working on this.
Thanks,
Gavin