[PATCH-for-5.0,v3,6/6] hw/pci-host: Add Kconfig entry to select the IGD Passthrough Host Bridge
diff mbox series

Message ID 20191209095002.32194-7-philmd@redhat.com
State New
Headers show
Series
  • hw/pci-host: Add Kconfig selector for IGD PCIe pass-through
Related show

Commit Message

Philippe Mathieu-Daudé Dec. 9, 2019, 9:50 a.m. UTC
Add the XEN_IGD_PASSTHROUGH Kconfig option.

Xen build has that option selected by default. Non-Xen builds now
have to select this feature manually.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
v3: Only default with Xen (Alex Williamson)

I did not used 'depends on XEN' as suggested by Alex but
'default y if XEN', so one can build XEN without this feature
(for example, on other ARCH than X86).
---
 hw/pci-host/Kconfig       | 5 +++++
 hw/pci-host/Makefile.objs | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

Comments

Durrant, Paul Dec. 9, 2019, 10:10 a.m. UTC | #1
> -----Original Message-----
> From: Xen-devel <xen-devel-bounces@lists.xenproject.org> On Behalf Of
> Philippe Mathieu-Daudé
> Sent: 09 December 2019 09:50
> To: qemu-devel@nongnu.org
> Cc: Thomas Huth <thuth@redhat.com>; Stefano Stabellini
> <sstabellini@kernel.org>; Michael S. Tsirkin <mst@redhat.com>; Paul
> Durrant <paul@xen.org>; Markus Armbruster <armbru@redhat.com>; Alex
> Williamson <alex.williamson@redhat.com>; Marcel Apfelbaum
> <marcel.apfelbaum@gmail.com>; Paolo Bonzini <pbonzini@redhat.com>; Anthony
> Perard <anthony.perard@citrix.com>; xen-devel@lists.xenproject.org;
> Philippe Mathieu-Daudé <philmd@redhat.com>
> Subject: [Xen-devel] [PATCH-for-5.0 v3 6/6] hw/pci-host: Add Kconfig entry
> to select the IGD Passthrough Host Bridge
> 
> Add the XEN_IGD_PASSTHROUGH Kconfig option.
> 
> Xen build has that option selected by default. Non-Xen builds now
> have to select this feature manually.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> v3: Only default with Xen (Alex Williamson)
> 
> I did not used 'depends on XEN' as suggested by Alex but
> 'default y if XEN', so one can build XEN without this feature
> (for example, on other ARCH than X86).

Allowing it to be compiled out for Xen builds is quite reasonable IMO. I don't believe it is widely used.

Acked-by: Paul Durrant <paul@xen.org>

> ---
>  hw/pci-host/Kconfig       | 5 +++++
>  hw/pci-host/Makefile.objs | 2 +-
>  2 files changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/pci-host/Kconfig b/hw/pci-host/Kconfig
> index b0aa8351c4..24ba8ea046 100644
> --- a/hw/pci-host/Kconfig
> +++ b/hw/pci-host/Kconfig
> @@ -1,6 +1,11 @@
>  config PAM
>      bool
> 
> +config XEN_IGD_PASSTHROUGH
> +    bool
> +    default y if XEN
> +    select PCI_I440FX
> +
>  config PREP_PCI
>      bool
>      select PCI
> diff --git a/hw/pci-host/Makefile.objs b/hw/pci-host/Makefile.objs
> index fa6d1556c0..9c466fab01 100644
> --- a/hw/pci-host/Makefile.objs
> +++ b/hw/pci-host/Makefile.objs
> @@ -14,7 +14,7 @@ common-obj-$(CONFIG_VERSATILE_PCI) += versatile.o
>  common-obj-$(CONFIG_PCI_SABRE) += sabre.o
>  common-obj-$(CONFIG_FULONG) += bonito.o
>  common-obj-$(CONFIG_PCI_I440FX) += i440fx.o
> -common-obj-$(CONFIG_PCI_I440FX) += xen_igd_pt.o
> +common-obj-$(CONFIG_XEN_IGD_PASSTHROUGH) += xen_igd_pt.o
>  common-obj-$(CONFIG_PCI_EXPRESS_Q35) += q35.o
>  common-obj-$(CONFIG_PCI_EXPRESS_GENERIC_BRIDGE) += gpex.o
>  common-obj-$(CONFIG_PCI_EXPRESS_XILINX) += xilinx-pcie.o
> --
> 2.21.0
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xenproject.org
> https://lists.xenproject.org/mailman/listinfo/xen-devel
Paolo Bonzini Dec. 9, 2019, 10:39 a.m. UTC | #2
On 09/12/19 10:50, Philippe Mathieu-Daudé wrote:
> Add the XEN_IGD_PASSTHROUGH Kconfig option.
> 
> Xen build has that option selected by default. Non-Xen builds now
> have to select this feature manually.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> v3: Only default with Xen (Alex Williamson)
> 
> I did not used 'depends on XEN' as suggested by Alex but
> 'default y if XEN', so one can build XEN without this feature
> (for example, on other ARCH than X86).
> ---
>  hw/pci-host/Kconfig       | 5 +++++
>  hw/pci-host/Makefile.objs | 2 +-
>  2 files changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/pci-host/Kconfig b/hw/pci-host/Kconfig
> index b0aa8351c4..24ba8ea046 100644
> --- a/hw/pci-host/Kconfig
> +++ b/hw/pci-host/Kconfig
> @@ -1,6 +1,11 @@
>  config PAM
>      bool
>  
> +config XEN_IGD_PASSTHROUGH
> +    bool
> +    default y if XEN
> +    select PCI_I440FX

Maybe "depends on PCI_I440FX" (so if somebody builds a Xen+KVM, q35-only
machine they don't get IGD passthrough).  I can do this when applying.

Paolo

> +
>  config PREP_PCI
>      bool
>      select PCI
> diff --git a/hw/pci-host/Makefile.objs b/hw/pci-host/Makefile.objs
> index fa6d1556c0..9c466fab01 100644
> --- a/hw/pci-host/Makefile.objs
> +++ b/hw/pci-host/Makefile.objs
> @@ -14,7 +14,7 @@ common-obj-$(CONFIG_VERSATILE_PCI) += versatile.o
>  common-obj-$(CONFIG_PCI_SABRE) += sabre.o
>  common-obj-$(CONFIG_FULONG) += bonito.o
>  common-obj-$(CONFIG_PCI_I440FX) += i440fx.o
> -common-obj-$(CONFIG_PCI_I440FX) += xen_igd_pt.o
> +common-obj-$(CONFIG_XEN_IGD_PASSTHROUGH) += xen_igd_pt.o
>  common-obj-$(CONFIG_PCI_EXPRESS_Q35) += q35.o
>  common-obj-$(CONFIG_PCI_EXPRESS_GENERIC_BRIDGE) += gpex.o
>  common-obj-$(CONFIG_PCI_EXPRESS_XILINX) += xilinx-pcie.o
>
Paolo Bonzini Dec. 9, 2019, 10:42 a.m. UTC | #3
On 09/12/19 11:10, Durrant, Paul wrote:
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> ---
>> v3: Only default with Xen (Alex Williamson)
>>
>> I did not used 'depends on XEN' as suggested by Alex but
>> 'default y if XEN', so one can build XEN without this feature
>> (for example, on other ARCH than X86).

I think what you want is achieved by

	default y
	depends on XEN && PC_I440FX

?
Philippe Mathieu-Daudé Dec. 9, 2019, 10:56 a.m. UTC | #4
On 12/9/19 11:42 AM, Paolo Bonzini wrote:
> On 09/12/19 11:10, Durrant, Paul wrote:
>>>
>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>> ---
>>> v3: Only default with Xen (Alex Williamson)
>>>
>>> I did not used 'depends on XEN' as suggested by Alex but
>>> 'default y if XEN', so one can build XEN without this feature
>>> (for example, on other ARCH than X86).
> 
> I think what you want is achieved by
> 
> 	default y
> 	depends on XEN && PC_I440FX

I think so, but with PC_I440FX -> PCI_I440FX ;)

It would be cleaner to pass the CONFIG_XEN_PCI_PASSTHROUGH variable to 
Kconfig and use it (use 'depends on XEN_PCI_PASSTHROUGH').

This can be another step, so if this series looks OK to you so far, do 
you mind fixing this and the comment in the previous patch noticed by 
Thomas:

- Extract it into a new file, 'hw/pci-host/igd_pt.c'.
+ Extract it into a new file, 'hw/pci-host/xen_igd_pt.c'.

Thanks!

Phil.
Paolo Bonzini Dec. 9, 2019, 11:12 a.m. UTC | #5
On 09/12/19 11:56, Philippe Mathieu-Daudé wrote:
> 
> I think so, but with PC_I440FX -> PCI_I440FX ;)
> 
> It would be cleaner to pass the CONFIG_XEN_PCI_PASSTHROUGH variable to
> Kconfig and use it (use 'depends on XEN_PCI_PASSTHROUGH').
> 
> This can be another step, so if this series looks OK to you so far, do
> you mind fixing this and the comment in the previous patch noticed by
> Thomas:
> 
> - Extract it into a new file, 'hw/pci-host/igd_pt.c'.
> + Extract it into a new file, 'hw/pci-host/xen_igd_pt.c'.

Sure.

Paolo

Patch
diff mbox series

diff --git a/hw/pci-host/Kconfig b/hw/pci-host/Kconfig
index b0aa8351c4..24ba8ea046 100644
--- a/hw/pci-host/Kconfig
+++ b/hw/pci-host/Kconfig
@@ -1,6 +1,11 @@ 
 config PAM
     bool
 
+config XEN_IGD_PASSTHROUGH
+    bool
+    default y if XEN
+    select PCI_I440FX
+
 config PREP_PCI
     bool
     select PCI
diff --git a/hw/pci-host/Makefile.objs b/hw/pci-host/Makefile.objs
index fa6d1556c0..9c466fab01 100644
--- a/hw/pci-host/Makefile.objs
+++ b/hw/pci-host/Makefile.objs
@@ -14,7 +14,7 @@  common-obj-$(CONFIG_VERSATILE_PCI) += versatile.o
 common-obj-$(CONFIG_PCI_SABRE) += sabre.o
 common-obj-$(CONFIG_FULONG) += bonito.o
 common-obj-$(CONFIG_PCI_I440FX) += i440fx.o
-common-obj-$(CONFIG_PCI_I440FX) += xen_igd_pt.o
+common-obj-$(CONFIG_XEN_IGD_PASSTHROUGH) += xen_igd_pt.o
 common-obj-$(CONFIG_PCI_EXPRESS_Q35) += q35.o
 common-obj-$(CONFIG_PCI_EXPRESS_GENERIC_BRIDGE) += gpex.o
 common-obj-$(CONFIG_PCI_EXPRESS_XILINX) += xilinx-pcie.o