To do PCI passthrough with Xen, the property acpi-pcihp-bsel needs to be
set, but this was done only when ACPI tables are built which is not
needed for a Xen guest. The need for the property starts with commit
"pc: pcihp: avoid adding ACPI_PCIHP_PROP_BSEL twice"
(f0c9d64a68b776374ec4732424a3e27753ce37b6).
Set pci info before checking for the needs to build ACPI tables.
Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
Tested-by: Sander Eikelenboom <linux@eikelenboom.it>
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
---
In this patch rather than always calling acpi_set_pci_info() when
acpi_setup() is called, we could check first for acpi_enabled? (which is
true for Xen.)
This patch would be a canditade to backport to 2.9.
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Bruce Rogers <brogers@suse.com>
---
hw/i386/acpi-build.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 98dd424678..e1b7797408 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -2871,6 +2871,8 @@ void acpi_setup(void)
AcpiBuildState *build_state;
Object *vmgenid_dev;
+ acpi_set_pci_info();
+
if (!pcms->fw_cfg) {
ACPI_BUILD_DPRINTF("No fw cfg. Bailing out.\n");
return;
@@ -2888,8 +2890,6 @@ void acpi_setup(void)
build_state = g_malloc0(sizeof *build_state);
- acpi_set_pci_info();
-
acpi_build_tables_init(&tables);
acpi_build(&tables, MACHINE(pcms));
--
Anthony PERARD
On Fri, Aug 11, 2017 at 04:11:37PM +0100, Anthony PERARD wrote:
> To do PCI passthrough with Xen, the property acpi-pcihp-bsel needs to be
> set, but this was done only when ACPI tables are built which is not
> needed for a Xen guest. The need for the property starts with commit
> "pc: pcihp: avoid adding ACPI_PCIHP_PROP_BSEL twice"
> (f0c9d64a68b776374ec4732424a3e27753ce37b6).
>
> Set pci info before checking for the needs to build ACPI tables.
>
> Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
> Tested-by: Sander Eikelenboom <linux@eikelenboom.it>
> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
I am worried that Xen will come to depend on specific
assignment of bsel which isn't guaranteed. Thoughts on
how to avoid that?
>
> ---
> In this patch rather than always calling acpi_set_pci_info() when
> acpi_setup() is called, we could check first for acpi_enabled? (which is
> true for Xen.)
Yes, please change it like this. Also, please add
a comment explainging what it does.
Thanks!
>
> This patch would be a canditade to backport to 2.9.
>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Bruce Rogers <brogers@suse.com>
> ---
> hw/i386/acpi-build.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
> index 98dd424678..e1b7797408 100644
> --- a/hw/i386/acpi-build.c
> +++ b/hw/i386/acpi-build.c
> @@ -2871,6 +2871,8 @@ void acpi_setup(void)
> AcpiBuildState *build_state;
> Object *vmgenid_dev;
>
> + acpi_set_pci_info();
> +
> if (!pcms->fw_cfg) {
> ACPI_BUILD_DPRINTF("No fw cfg. Bailing out.\n");
> return;
> @@ -2888,8 +2890,6 @@ void acpi_setup(void)
>
> build_state = g_malloc0(sizeof *build_state);
>
> - acpi_set_pci_info();
> -
> acpi_build_tables_init(&tables);
> acpi_build(&tables, MACHINE(pcms));
>
> --
> Anthony PERARD
On Fri, Aug 11, 2017 at 08:18:28PM +0300, Michael S. Tsirkin wrote: > On Fri, Aug 11, 2017 at 04:11:37PM +0100, Anthony PERARD wrote: > > To do PCI passthrough with Xen, the property acpi-pcihp-bsel needs to be > > set, but this was done only when ACPI tables are built which is not > > needed for a Xen guest. The need for the property starts with commit > > "pc: pcihp: avoid adding ACPI_PCIHP_PROP_BSEL twice" > > (f0c9d64a68b776374ec4732424a3e27753ce37b6). > > > > Set pci info before checking for the needs to build ACPI tables. > > > > Reported-by: Sander Eikelenboom <linux@eikelenboom.it> > > Tested-by: Sander Eikelenboom <linux@eikelenboom.it> > > Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> > > I am worried that Xen will come to depend on specific > assignment of bsel which isn't guaranteed. Thoughts on > how to avoid that? Is it possible to have a different BSEL than 0 with PIIX ? Also, I don't known if having more than on PCI bus is going to work on Xen, there is nothing in our ACPI tables beyond _SB.PCI0, and nothing to use a different BSEL. > > > > --- > > In this patch rather than always calling acpi_set_pci_info() when > > acpi_setup() is called, we could check first for acpi_enabled? (which is > > true for Xen.) > > Yes, please change it like this. Also, please add > a comment explainging what it does. Will do. -- Anthony PERARD
On Mon, Aug 14, 2017 at 03:55:50PM +0100, Anthony PERARD wrote: > On Fri, Aug 11, 2017 at 08:18:28PM +0300, Michael S. Tsirkin wrote: > > On Fri, Aug 11, 2017 at 04:11:37PM +0100, Anthony PERARD wrote: > > > To do PCI passthrough with Xen, the property acpi-pcihp-bsel needs to be > > > set, but this was done only when ACPI tables are built which is not > > > needed for a Xen guest. The need for the property starts with commit > > > "pc: pcihp: avoid adding ACPI_PCIHP_PROP_BSEL twice" > > > (f0c9d64a68b776374ec4732424a3e27753ce37b6). > > > > > > Set pci info before checking for the needs to build ACPI tables. > > > > > > Reported-by: Sander Eikelenboom <linux@eikelenboom.it> > > > Tested-by: Sander Eikelenboom <linux@eikelenboom.it> > > > Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> > > > > I am worried that Xen will come to depend on specific > > assignment of bsel which isn't guaranteed. Thoughts on > > how to avoid that? > > Is it possible to have a different BSEL than 0 with PIIX ? With PCI to PCI bridges, yes. > Also, I don't known if having more than on PCI bus is going to work on > Xen, there is nothing in our ACPI tables beyond _SB.PCI0, and nothing to > use a different BSEL. My worry is someone might decide to implement hotplug for pci to pci bridges on Xen. If doing that, it's important to use the qemu supplied acpi tables. > > > > > > --- > > > In this patch rather than always calling acpi_set_pci_info() when > > > acpi_setup() is called, we could check first for acpi_enabled? (which is > > > true for Xen.) > > > > Yes, please change it like this. Also, please add > > a comment explainging what it does. > > Will do. > > -- > Anthony PERARD
On Mon, Aug 14, 2017 at 06:53:14PM +0300, Michael S. Tsirkin wrote: > On Mon, Aug 14, 2017 at 03:55:50PM +0100, Anthony PERARD wrote: > > On Fri, Aug 11, 2017 at 08:18:28PM +0300, Michael S. Tsirkin wrote: > > > On Fri, Aug 11, 2017 at 04:11:37PM +0100, Anthony PERARD wrote: > > > > To do PCI passthrough with Xen, the property acpi-pcihp-bsel needs to be > > > > set, but this was done only when ACPI tables are built which is not > > > > needed for a Xen guest. The need for the property starts with commit > > > > "pc: pcihp: avoid adding ACPI_PCIHP_PROP_BSEL twice" > > > > (f0c9d64a68b776374ec4732424a3e27753ce37b6). > > > > > > > > Set pci info before checking for the needs to build ACPI tables. > > > > > > > > Reported-by: Sander Eikelenboom <linux@eikelenboom.it> > > > > Tested-by: Sander Eikelenboom <linux@eikelenboom.it> > > > > Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> > > > > > > I am worried that Xen will come to depend on specific > > > assignment of bsel which isn't guaranteed. Thoughts on > > > how to avoid that? > > > > Is it possible to have a different BSEL than 0 with PIIX ? > > With PCI to PCI bridges, yes. > > > Also, I don't known if having more than on PCI bus is going to work on > > Xen, there is nothing in our ACPI tables beyond _SB.PCI0, and nothing to > > use a different BSEL. > > My worry is someone might decide to implement hotplug for pci to pci > bridges on Xen. If doing that, it's important to use the qemu supplied > acpi tables. I can always add assert((xen_enable() && !bsel) || !xen_enable()) in acpi_set_bsel(), so if someone was going to make any change, he would find out about bsel quicker. But I don't see Xen using QEMU supplied ACPI tables anytime soon.
On Mon, Aug 14, 2017 at 05:45:02PM +0100, Anthony PERARD wrote: > On Mon, Aug 14, 2017 at 06:53:14PM +0300, Michael S. Tsirkin wrote: > > On Mon, Aug 14, 2017 at 03:55:50PM +0100, Anthony PERARD wrote: > > > On Fri, Aug 11, 2017 at 08:18:28PM +0300, Michael S. Tsirkin wrote: > > > > On Fri, Aug 11, 2017 at 04:11:37PM +0100, Anthony PERARD wrote: > > > > > To do PCI passthrough with Xen, the property acpi-pcihp-bsel needs to be > > > > > set, but this was done only when ACPI tables are built which is not > > > > > needed for a Xen guest. The need for the property starts with commit > > > > > "pc: pcihp: avoid adding ACPI_PCIHP_PROP_BSEL twice" > > > > > (f0c9d64a68b776374ec4732424a3e27753ce37b6). > > > > > > > > > > Set pci info before checking for the needs to build ACPI tables. > > > > > > > > > > Reported-by: Sander Eikelenboom <linux@eikelenboom.it> > > > > > Tested-by: Sander Eikelenboom <linux@eikelenboom.it> > > > > > Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> > > > > > > > > I am worried that Xen will come to depend on specific > > > > assignment of bsel which isn't guaranteed. Thoughts on > > > > how to avoid that? > > > > > > Is it possible to have a different BSEL than 0 with PIIX ? > > > > With PCI to PCI bridges, yes. > > > > > Also, I don't known if having more than on PCI bus is going to work on > > > Xen, there is nothing in our ACPI tables beyond _SB.PCI0, and nothing to > > > use a different BSEL. > > > > My worry is someone might decide to implement hotplug for pci to pci > > bridges on Xen. If doing that, it's important to use the qemu supplied > > acpi tables. > > I can always add assert((xen_enable() && !bsel) || !xen_enable()) in > acpi_set_bsel(), so if someone was going to make any change, he would > find out about bsel quicker. But I don't see Xen using QEMU supplied > ACPI tables anytime soon. In that case I'd prefer assigning bsel 0 just for the root bus on xen. -- MST
© 2016 - 2026 Red Hat, Inc.