On 9 February 2018 at 15:37, Geert Uytterhoeven <ge...@linux-m68k.org> wrote:
> Hi Peter,
> On Fri, Feb 9, 2018 at 4:27 PM, Peter Maydell <peter.mayd...@linaro.org>
>> On 9 February 2018 at 15:17, Geert Uytterhoeven <geert+rene...@glider.be>
>>> 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+rene...@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.