On 2018-08-24 18:43, Cédric Le Goater wrote: > On 08/24/2018 05:38 PM, Greg Kurz wrote: >> On Fri, 24 Aug 2018 17:30:12 +0200 >> Cédric Le Goater <c...@kaod.org> wrote: >> >>> On 08/24/2018 05:09 PM, Peter Maydell wrote: >>>> On 21 August 2018 at 05:33, David Gibson <da...@gibson.dropbear.id.au> >>>> wrote: >>>>> From: Cédric Le Goater <c...@kaod.org> [...] >>> Is there a way to specify which device type can or can not be >>> plugged on a machine ? >>> >>> I suppose we cannot use : >>> >>> machine_class_allow_dynamic_sysbus_dev() >>> >>> for cold plugged devices. Or can we ? That would be better. >>> >> >> Hmm... not sure this would help. The root problem is that many >> places in spapr_pci and spapr_cpu_core assume the machine is >> sPAPR. > > which is a perfectly legitimate assumption for a sPAPR only device, > same for spapr_cpu_core. I would think. Shouldn't we enforce > the restriction at the machine level instead and not at the device > level ? > > I thought that was the purpose of commit 0bd1909da606 ("machine: > Replace has_dynamic_sysbus with list of allowed devices"), to > make sure machines had a predefined list of user-creatable devices.
The "spapr-pci-host-bridge" is explicitly marked with "dc->user_creatable = true" - so it is creatable everywhere. You could try whether it is possible to make it only creatable via the white list instead ... not sure whether that works though, since there is a class hierarchy (TYPE_PCI_HOST_BRIDGE) in between? Thomas