Allow the instantation of generic dynamic sysbus devices again, without
the need to create a new device-specific vfio type.
This is a partial revert of commit 6f2062b9758ebc64 ("hw/arm/virt:
Allow only supported dynamic sysbus devices").
Not-Yet-Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
hw/arm/virt.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index b334c82edae9fb1f..fa83784fc08ed076 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -1596,6 +1596,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data)
mc->max_cpus = 255;
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_CALXEDA_XGMAC);
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_AMD_XGBE);
+ machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SYS_BUS_DEVICE);
mc->block_default_type = IF_VIRTIO;
mc->no_cdrom = 1;
mc->pci_allow_0_address = true;
--
2.7.4
On 9 February 2018 at 15:17, Geert Uytterhoeven <geert+renesas@glider.be> wrote: > Allow the instantation of generic dynamic sysbus devices again, without > the need to create a new device-specific vfio type. > > This is a partial revert of commit 6f2062b9758ebc64 ("hw/arm/virt: > Allow only supported dynamic sysbus devices"). > > Not-Yet-Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> > --- > hw/arm/virt.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index b334c82edae9fb1f..fa83784fc08ed076 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -1596,6 +1596,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) > mc->max_cpus = 255; > machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_CALXEDA_XGMAC); > machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_AMD_XGBE); > + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SYS_BUS_DEVICE); > mc->block_default_type = IF_VIRTIO; > mc->no_cdrom = 1; > mc->pci_allow_0_address = true; This needs a lot of justification. Dynamic sysbus is not supposed to be for plugging any random sysbus device in, it's for vfio, which needs special casing anyway to work right. (Overall it's a terrible hack -- in an ideal world all vfio would use pci or another probeable bus.) thanks -- PMM
Hi Peter, On Fri, Feb 9, 2018 at 4:27 PM, Peter Maydell <peter.maydell@linaro.org> wrote: > On 9 February 2018 at 15:17, Geert Uytterhoeven <geert+renesas@glider.be> wrote: >> Allow the instantation of generic dynamic sysbus devices again, without >> the need to create a new device-specific vfio type. >> >> This is a partial revert of commit 6f2062b9758ebc64 ("hw/arm/virt: >> Allow only supported dynamic sysbus devices"). >> >> Not-Yet-Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> >> --- >> hw/arm/virt.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/hw/arm/virt.c b/hw/arm/virt.c >> index b334c82edae9fb1f..fa83784fc08ed076 100644 >> --- a/hw/arm/virt.c >> +++ b/hw/arm/virt.c >> @@ -1596,6 +1596,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) >> mc->max_cpus = 255; >> machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_CALXEDA_XGMAC); >> machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_AMD_XGBE); >> + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SYS_BUS_DEVICE); >> mc->block_default_type = IF_VIRTIO; >> mc->no_cdrom = 1; >> mc->pci_allow_0_address = true; > > This needs a lot of justification. Dynamic sysbus is not supposed > to be for plugging any random sysbus device in, it's for vfio, > which needs special casing anyway to work right. (Overall it's Sure. Is there a way to limit this to vfio devices? > a terrible hack -- in an ideal world all vfio would use pci > or another probeable bus.) What about vfio-platform, which is my use case? On DT-based systems, platform devices are described very well in DT (even better than what's provided by probing PCI IDs and BARs ;-) Thanks! Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
On 9 February 2018 at 15:37, Geert Uytterhoeven <geert@linux-m68k.org> wrote: > Hi Peter, > > On Fri, Feb 9, 2018 at 4:27 PM, Peter Maydell <peter.maydell@linaro.org> wrote: >> On 9 February 2018 at 15:17, Geert Uytterhoeven <geert+renesas@glider.be> wrote: >>> Allow the instantation of generic dynamic sysbus devices again, without >>> the need to create a new device-specific vfio type. >>> >>> This is a partial revert of commit 6f2062b9758ebc64 ("hw/arm/virt: >>> Allow only supported dynamic sysbus devices"). >>> >>> Not-Yet-Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> >>> --- >>> hw/arm/virt.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>> diff --git a/hw/arm/virt.c b/hw/arm/virt.c >>> index b334c82edae9fb1f..fa83784fc08ed076 100644 >>> --- a/hw/arm/virt.c >>> +++ b/hw/arm/virt.c >>> @@ -1596,6 +1596,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) >>> mc->max_cpus = 255; >>> machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_CALXEDA_XGMAC); >>> machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_AMD_XGBE); >>> + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SYS_BUS_DEVICE); >>> mc->block_default_type = IF_VIRTIO; >>> mc->no_cdrom = 1; >>> mc->pci_allow_0_address = true; >> >> This needs a lot of justification. Dynamic sysbus is not supposed >> to be for plugging any random sysbus device in, it's for vfio, >> which needs special casing anyway to work right. (Overall it's > > Sure. Is there a way to limit this to vfio devices? That would be the code here which implements the whitelist of "only allow this for the vfio devices which we have support for mangling the device tree for and know will work". >> a terrible hack -- in an ideal world all vfio would use pci >> or another probeable bus.) > > What about vfio-platform, which is my use case? > On DT-based systems, platform devices are described very well in DT (even > better than what's provided by probing PCI IDs and BARs ;-) The TYPE_VFIO_* devices in the whitelist all use DT, yes: the code to handle creating/mangling the dt nodes for the passed-through device is in hw/arm/sysbus-fdt.c. thanks -- PMM
Hi Geert, On 09/02/18 16:17, Geert Uytterhoeven wrote: > Allow the instantation of generic dynamic sysbus devices again, without > the need to create a new device-specific vfio type. > > This is a partial revert of commit 6f2062b9758ebc64 ("hw/arm/virt: > Allow only supported dynamic sysbus devices"). > > Not-Yet-Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> > --- > hw/arm/virt.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index b334c82edae9fb1f..fa83784fc08ed076 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -1596,6 +1596,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) > mc->max_cpus = 255; > machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_CALXEDA_XGMAC); > machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_AMD_XGBE); > + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SYS_BUS_DEVICE); Couldn't you limit that to TYPE_VFIO_PLATFORM instead? Thanks Eric > mc->block_default_type = IF_VIRTIO; > mc->no_cdrom = 1; > mc->pci_allow_0_address = true; >
Hi Eric, On Wed, Feb 14, 2018 at 11:37 AM, Auger Eric <eric.auger@redhat.com> wrote: > On 09/02/18 16:17, Geert Uytterhoeven wrote: >> Allow the instantation of generic dynamic sysbus devices again, without >> the need to create a new device-specific vfio type. >> >> This is a partial revert of commit 6f2062b9758ebc64 ("hw/arm/virt: >> Allow only supported dynamic sysbus devices"). >> >> Not-Yet-Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> >> --- >> hw/arm/virt.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/hw/arm/virt.c b/hw/arm/virt.c >> index b334c82edae9fb1f..fa83784fc08ed076 100644 >> --- a/hw/arm/virt.c >> +++ b/hw/arm/virt.c >> @@ -1596,6 +1596,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data) >> mc->max_cpus = 255; >> machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_CALXEDA_XGMAC); >> machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_AMD_XGBE); >> + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_SYS_BUS_DEVICE); > Couldn't you limit that to TYPE_VFIO_PLATFORM instead? Yep, that works. Thanks! Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
© 2016 - 2025 Red Hat, Inc.