qdev: Replace cannot_instantiate_with_device_add_yet with !user_creatable
cannot_instantiate_with_device_add_yet was introduced by commit
efec3dd631
to replace no_user. It was
supposed to be a temporary measure.
When it was introduced, we had 54
cannot_instantiate_with_device_add_yet=true lines in the code.
Today (3 years later) this number has not shrunk: we now have
57 cannot_instantiate_with_device_add_yet=true lines. I think it
is safe to say it is not a temporary measure, and we won't see
the flag go away soon.
Instead of a long field name that misleads people to believe it
is temporary, replace it a shorter and less misleading field:
user_creatable.
Except for code comments, changes were generated using the
following Coccinelle patch:
@@
expression DC;
@@
(
-DC->cannot_instantiate_with_device_add_yet = false;
+DC->user_creatable = true;
|
-DC->cannot_instantiate_with_device_add_yet = true;
+DC->user_creatable = false;
)
@@
typedef ObjectClass;
expression dc;
identifier class, data;
@@
static void device_class_init(ObjectClass *class, void *data)
{
...
dc->hotpluggable = true;
+dc->user_creatable = true;
...
}
@@
@@
struct DeviceClass {
...
-bool cannot_instantiate_with_device_add_yet;
+bool user_creatable;
...
}
@@
expression DC;
@@
(
-!DC->cannot_instantiate_with_device_add_yet
+DC->user_creatable
|
-DC->cannot_instantiate_with_device_add_yet
+!DC->user_creatable
)
Cc: Alistair Francis <alistair.francis@xilinx.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Marcel Apfelbaum <marcel@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Peter Maydell <peter.maydell@linaro.org>
Cc: Thomas Huth <thuth@redhat.com>
Acked-by: Alistair Francis <alistair.francis@xilinx.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
Acked-by: Marcel Apfelbaum <marcel@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20170503203604.31462-2-ehabkost@redhat.com>
[ehabkost: kept "TODO remove once we're there" comment]
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
599c9cb641
commit
e90f2a8c3e
@ -700,7 +700,7 @@ static void piix4_pm_class_init(ObjectClass *klass, void *data)
|
||||
* Reason: part of PIIX4 southbridge, needs to be wired up,
|
||||
* e.g. by mips_malta_init()
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
dc->hotpluggable = false;
|
||||
hc->plug = piix4_device_plug_cb;
|
||||
hc->unplug_request = piix4_device_unplug_request_cb;
|
||||
|
@ -1076,7 +1076,7 @@ static void sl_nand_class_init(ObjectClass *klass, void *data)
|
||||
dc->vmsd = &vmstate_sl_nand_info;
|
||||
dc->props = sl_nand_properties;
|
||||
/* Reason: init() method uses drive_get() */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo sl_nand_info = {
|
||||
|
@ -292,7 +292,7 @@ static void mv88w8618_audio_class_init(ObjectClass *klass, void *data)
|
||||
dc->vmsd = &mv88w8618_audio_vmsd;
|
||||
dc->props = mv88w8618_audio_properties;
|
||||
/* Reason: pointer property "wm8750" */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo mv88w8618_audio_info = {
|
||||
|
@ -223,7 +223,7 @@ static void pcspk_class_initfn(ObjectClass *klass, void *data)
|
||||
dc->vmsd = &vmstate_spk;
|
||||
dc->props = pcspk_properties;
|
||||
/* Reason: realize sets global pcspk_state */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo pcspk_info = {
|
||||
|
@ -91,7 +91,7 @@ static void or_irq_class_init(ObjectClass *klass, void *data)
|
||||
dc->vmsd = &vmstate_or_irq;
|
||||
|
||||
/* Reason: Needs to be wired up to work, e.g. see stm32f205_soc.c */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo or_irq_type_info = {
|
||||
|
@ -1118,6 +1118,7 @@ static void device_class_init(ObjectClass *class, void *data)
|
||||
* should override it in their class_init()
|
||||
*/
|
||||
dc->hotpluggable = true;
|
||||
dc->user_creatable = true;
|
||||
}
|
||||
|
||||
void device_reset(DeviceState *dev)
|
||||
|
@ -288,7 +288,7 @@ static void register_class_init(ObjectClass *oc, void *data)
|
||||
DeviceClass *dc = DEVICE_CLASS(oc);
|
||||
|
||||
/* Reason: needs to be wired up to work */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo register_info = {
|
||||
|
@ -601,7 +601,7 @@ static void i8257_class_init(ObjectClass *klass, void *data)
|
||||
idc->schedule = i8257_dma_schedule;
|
||||
idc->register_channel = i8257_dma_register_channel;
|
||||
/* Reason: needs to be wired up by isa_bus_dma() to work */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo i8257_info = {
|
||||
|
@ -305,7 +305,7 @@ static void sparc32_dma_class_init(ObjectClass *klass, void *data)
|
||||
dc->vmsd = &vmstate_dma;
|
||||
dc->props = sparc32_dma_properties;
|
||||
/* Reason: pointer property "iommu_opaque" */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo sparc32_dma_info = {
|
||||
|
@ -773,7 +773,7 @@ static void omap_gpio_class_init(ObjectClass *klass, void *data)
|
||||
dc->reset = omap_gpif_reset;
|
||||
dc->props = omap_gpio_properties;
|
||||
/* Reason: pointer property "clk" */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo omap_gpio_info = {
|
||||
@ -804,7 +804,7 @@ static void omap2_gpio_class_init(ObjectClass *klass, void *data)
|
||||
dc->reset = omap2_gpif_reset;
|
||||
dc->props = omap2_gpio_properties;
|
||||
/* Reason: pointer properties "iclk", "fclk0", ..., "fclk5" */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo omap2_gpio_info = {
|
||||
|
@ -491,7 +491,7 @@ static void omap_i2c_class_init(ObjectClass *klass, void *data)
|
||||
dc->props = omap_i2c_properties;
|
||||
dc->reset = omap_i2c_reset;
|
||||
/* Reason: pointer properties "iclk", "fclk" */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
dc->realize = omap_i2c_realize;
|
||||
}
|
||||
|
||||
|
@ -123,7 +123,7 @@ static void smbus_eeprom_class_initfn(ObjectClass *klass, void *data)
|
||||
sc->read_data = eeprom_read_data;
|
||||
dc->props = smbus_eeprom_properties;
|
||||
/* Reason: pointer property "data" */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo smbus_eeprom_info = {
|
||||
|
@ -103,7 +103,7 @@ static void ich9_smb_class_init(ObjectClass *klass, void *data)
|
||||
* Reason: part of ICH9 southbridge, needs to be wired up by
|
||||
* pc_q35_init()
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
I2CBus *ich9_smb_init(PCIBus *bus, int devfn, uint32_t smb_io_base)
|
||||
|
@ -597,7 +597,7 @@ static void port92_class_initfn(ObjectClass *klass, void *data)
|
||||
* wiring: its A20 output line needs to be wired up by
|
||||
* port92_init().
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo port92_info = {
|
||||
|
@ -286,7 +286,7 @@ static void vmmouse_class_initfn(ObjectClass *klass, void *data)
|
||||
dc->vmsd = &vmstate_vmmouse;
|
||||
dc->props = vmmouse_properties;
|
||||
/* Reason: pointer property "ps2_mouse" */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo vmmouse_info = {
|
||||
|
@ -501,7 +501,7 @@ static void apic_common_class_init(ObjectClass *klass, void *data)
|
||||
* Reason: APIC and CPU need to be wired up by
|
||||
* x86_cpu_apic_create()
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo apic_common_type = {
|
||||
|
@ -173,7 +173,7 @@ static void etraxfs_pic_class_init(ObjectClass *klass, void *data)
|
||||
dc->props = etraxfs_pic_properties;
|
||||
/*
|
||||
* Note: pointer property "interrupt_vector" may remain null, thus
|
||||
* no need for dc->cannot_instantiate_with_device_add_yet = true;
|
||||
* no need for dc->user_creatable = false;
|
||||
*/
|
||||
}
|
||||
|
||||
|
@ -360,7 +360,7 @@ static void grlib_irqmp_class_init(ObjectClass *klass, void *data)
|
||||
dc->reset = grlib_irqmp_reset;
|
||||
dc->props = grlib_irqmp_properties;
|
||||
/* Reason: pointer properties "set_pil_in", "set_pil_in_opaque" */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
dc->realize = grlib_irqmp_realize;
|
||||
}
|
||||
|
||||
|
@ -144,7 +144,7 @@ static void pic_common_class_init(ObjectClass *klass, void *data)
|
||||
* wiring of the slave to the master is hard-coded in device model
|
||||
* code.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo pic_common_type = {
|
||||
|
@ -80,7 +80,7 @@ static void altera_iic_class_init(ObjectClass *klass, void *data)
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
|
||||
/* Reason: needs to be wired up, e.g. by nios2_10m50_ghrd_init() */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
dc->realize = altera_iic_realize;
|
||||
}
|
||||
|
||||
|
@ -401,7 +401,7 @@ static void omap_intc_class_init(ObjectClass *klass, void *data)
|
||||
dc->reset = omap_inth_reset;
|
||||
dc->props = omap_intc_properties;
|
||||
/* Reason: pointer property "clk" */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
dc->realize = omap_intc_realize;
|
||||
}
|
||||
|
||||
@ -656,7 +656,7 @@ static void omap2_intc_class_init(ObjectClass *klass, void *data)
|
||||
dc->reset = omap_inth_reset;
|
||||
dc->props = omap2_intc_properties;
|
||||
/* Reason: pointer property "iclk", "fclk" */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
dc->realize = omap2_intc_realize;
|
||||
}
|
||||
|
||||
|
@ -805,7 +805,7 @@ static void ich9_lpc_class_init(ObjectClass *klass, void *data)
|
||||
* Reason: part of ICH9 southbridge, needs to be wired up by
|
||||
* pc_q35_init()
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
hc->plug = ich9_pm_device_plug_cb;
|
||||
hc->unplug_request = ich9_pm_device_unplug_request_cb;
|
||||
hc->unplug = ich9_pm_device_unplug_cb;
|
||||
|
@ -123,7 +123,7 @@ static void piix4_class_init(ObjectClass *klass, void *data)
|
||||
* Reason: part of PIIX4 southbridge, needs to be wired up,
|
||||
* e.g. by mips_malta_init()
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
dc->hotpluggable = false;
|
||||
}
|
||||
|
||||
|
@ -494,7 +494,7 @@ static void via_class_init(ObjectClass *klass, void *data)
|
||||
* Reason: part of VIA VT82C686 southbridge, needs to be wired up,
|
||||
* e.g. by mips_fulong2e_init()
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo via_info = {
|
||||
|
@ -1224,7 +1224,7 @@ static void gt64120_pci_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo gt64120_pci_info = {
|
||||
|
@ -163,7 +163,7 @@ static void vmport_class_initfn(ObjectClass *klass, void *data)
|
||||
|
||||
dc->realize = vmport_realizefn;
|
||||
/* Reason: realize sets global port_state */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo vmport_info = {
|
||||
|
@ -934,7 +934,7 @@ static void dp8393x_class_init(ObjectClass *klass, void *data)
|
||||
dc->vmsd = &vmstate_dp8393x;
|
||||
dc->props = dp8393x_properties;
|
||||
/* Reason: dma_mr property can't be set */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo dp8393x_info = {
|
||||
|
@ -630,7 +630,7 @@ static void etraxfs_eth_class_init(ObjectClass *klass, void *data)
|
||||
k->init = fs_eth_init;
|
||||
dc->props = etraxfs_eth_properties;
|
||||
/* Reason: pointer properties "dma_out", "dma_in" */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo etraxfs_eth_info = {
|
||||
|
@ -165,7 +165,7 @@ static void lance_class_init(ObjectClass *klass, void *data)
|
||||
dc->vmsd = &vmstate_lance;
|
||||
dc->props = lance_properties;
|
||||
/* Reason: pointer property "dma" */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo lance_info = {
|
||||
|
@ -128,7 +128,7 @@ static void dec_21154_pci_host_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo dec_21154_pci_host_info = {
|
||||
|
@ -150,7 +150,7 @@ static void pxb_host_class_init(ObjectClass *class, void *data)
|
||||
|
||||
dc->fw_name = "pci";
|
||||
/* Reason: Internal part of the pxb/pxb-pcie device, not usable by itself */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
sbc->explicit_ofw_unit_address = pxb_host_ofw_unit_address;
|
||||
hc->root_bus_path = pxb_host_root_bus_path;
|
||||
}
|
||||
|
@ -810,7 +810,7 @@ static void pbm_pci_host_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo pbm_pci_host_info = {
|
||||
|
@ -825,7 +825,7 @@ static void bonito_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo bonito_info = {
|
||||
|
@ -136,7 +136,7 @@ static void gpex_root_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo gpex_root_info = {
|
||||
|
@ -134,7 +134,7 @@ static void grackle_pci_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo grackle_pci_info = {
|
||||
|
@ -685,7 +685,7 @@ static void pci_piix3_class_init(ObjectClass *klass, void *data)
|
||||
* Reason: part of PIIX3 southbridge, needs to be wired up by
|
||||
* pc_piix.c's pc_init1()
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo piix3_pci_type_info = {
|
||||
@ -739,7 +739,7 @@ static void i440fx_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
dc->hotpluggable = false;
|
||||
}
|
||||
|
||||
@ -868,7 +868,7 @@ static void i440fx_pcihost_class_init(ObjectClass *klass, void *data)
|
||||
dc->fw_name = "pci";
|
||||
dc->props = i440fx_props;
|
||||
/* Reason: needs to be wired up by pc_init1 */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo i440fx_pcihost_info = {
|
||||
|
@ -508,7 +508,7 @@ static void e500_host_bridge_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo e500_host_bridge_info = {
|
||||
|
@ -364,7 +364,7 @@ static void raven_class_init(ObjectClass *klass, void *data)
|
||||
* Reason: PCI-facing part of the host bridge, not usable without
|
||||
* the host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo raven_info = {
|
||||
|
@ -156,7 +156,7 @@ static void q35_host_class_init(ObjectClass *klass, void *data)
|
||||
dc->realize = q35_host_realize;
|
||||
dc->props = mch_props;
|
||||
/* Reason: needs to be wired up by pc_q35_init */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
|
||||
dc->fw_name = "pci";
|
||||
}
|
||||
@ -549,7 +549,7 @@ static void mch_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo mch_info = {
|
||||
|
@ -366,7 +366,7 @@ static void unin_main_pci_host_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo unin_main_pci_host_info = {
|
||||
@ -390,7 +390,7 @@ static void u3_agp_pci_host_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo u3_agp_pci_host_info = {
|
||||
@ -414,7 +414,7 @@ static void unin_agp_pci_host_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo unin_agp_pci_host_info = {
|
||||
@ -438,7 +438,7 @@ static void unin_internal_pci_host_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo unin_internal_pci_host_info = {
|
||||
|
@ -479,7 +479,7 @@ static void versatile_pci_host_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo versatile_pci_host_info = {
|
||||
|
@ -309,7 +309,7 @@ static void xilinx_pcie_root_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo xilinx_pcie_root_info = {
|
||||
|
@ -351,7 +351,7 @@ static void ppc4xx_host_bridge_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo ppc4xx_host_bridge_info = {
|
||||
|
@ -675,7 +675,7 @@ static void spapr_dr_connector_class_init(ObjectClass *k, void *data)
|
||||
/*
|
||||
* Reason: it crashes FIXME find and document the real reason
|
||||
*/
|
||||
dk->cannot_instantiate_with_device_add_yet = true;
|
||||
dk->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo spapr_dr_connector_info = {
|
||||
|
@ -872,7 +872,7 @@ static void s390_pcihost_class_init(ObjectClass *klass, void *data)
|
||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||
HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(klass);
|
||||
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
dc->reset = s390_pcihost_reset;
|
||||
k->init = s390_pcihost_init;
|
||||
hc->plug = s390_pcihost_hot_plug;
|
||||
|
@ -299,7 +299,7 @@ static void milkymist_memcard_class_init(ObjectClass *klass, void *data)
|
||||
dc->reset = milkymist_memcard_reset;
|
||||
dc->vmsd = &vmstate_milkymist_memcard;
|
||||
/* Reason: init() method uses drive_get_next() */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo milkymist_memcard_info = {
|
||||
|
@ -515,7 +515,7 @@ static void pl181_class_init(ObjectClass *klass, void *data)
|
||||
k->vmsd = &vmstate_pl181;
|
||||
k->reset = pl181_reset;
|
||||
/* Reason: init() method uses drive_get_next() */
|
||||
k->cannot_instantiate_with_device_add_yet = true;
|
||||
k->user_creatable = false;
|
||||
k->realize = pl181_realize;
|
||||
}
|
||||
|
||||
|
@ -171,7 +171,7 @@ static void sh_pci_host_class_init(ObjectClass *klass, void *data)
|
||||
* PCI-facing part of the host bridge, not usable without the
|
||||
* host-facing part, which can't be device_add'ed, yet.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo sh_pci_host_info = {
|
||||
|
@ -287,7 +287,7 @@ static void pit_common_class_init(ObjectClass *klass, void *data)
|
||||
* wired to the HPET, and because of that, some wiring is always
|
||||
* done by board code.
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo pit_common_type = {
|
||||
|
@ -973,7 +973,7 @@ static void rtc_class_initfn(ObjectClass *klass, void *data)
|
||||
dc->vmsd = &vmstate_rtc;
|
||||
dc->props = mc146818rtc_properties;
|
||||
/* Reason: needs to be wired up by rtc_init() */
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static void rtc_finalize(Object *obj)
|
||||
|
@ -103,16 +103,17 @@ typedef struct DeviceClass {
|
||||
Property *props;
|
||||
|
||||
/*
|
||||
* Shall we hide this device model from -device / device_add?
|
||||
* Can this device be instantiated with -device / device_add?
|
||||
* All devices should support instantiation with device_add, and
|
||||
* this flag should not exist. But we're not there, yet. Some
|
||||
* devices fail to instantiate with cryptic error messages.
|
||||
* Others instantiate, but don't work. Exposing users to such
|
||||
* behavior would be cruel; this flag serves to protect them. It
|
||||
* should never be set without a comment explaining why it is set.
|
||||
* behavior would be cruel; clearing this flag will protect them.
|
||||
* It should never be cleared without a comment explaining why it
|
||||
* is cleared.
|
||||
* TODO remove once we're there
|
||||
*/
|
||||
bool cannot_instantiate_with_device_add_yet;
|
||||
bool user_creatable;
|
||||
bool hotpluggable;
|
||||
|
||||
/* callbacks */
|
||||
|
@ -134,12 +134,12 @@ extern PropertyInfo qdev_prop_arraylen;
|
||||
* device_add, so add code like this:
|
||||
* |* Reason: pointer property "NAME-OF-YOUR-PROP" *|
|
||||
* DeviceClass *dc = DEVICE_CLASS(class);
|
||||
* dc->cannot_instantiate_with_device_add_yet = true;
|
||||
* dc->user_creatable = false;
|
||||
*
|
||||
* - If the property may safely remain null, document it like this:
|
||||
* |*
|
||||
* * Note: pointer property "interrupt_vector" may remain null, thus
|
||||
* * no need for dc->cannot_instantiate_with_device_add_yet = true;
|
||||
* * no need for dc->user_creatable = false;
|
||||
* *|
|
||||
*/
|
||||
#define DEFINE_PROP_PTR(_n, _s, _f) \
|
||||
|
@ -3254,7 +3254,7 @@ void device_add_completion(ReadLineState *rs, int nb_args, const char *str)
|
||||
TYPE_DEVICE);
|
||||
name = object_class_get_name(OBJECT_CLASS(dc));
|
||||
|
||||
if (!dc->cannot_instantiate_with_device_add_yet
|
||||
if (dc->user_creatable
|
||||
&& !strncmp(name, str, len)) {
|
||||
readline_add_completion(rs, name);
|
||||
}
|
||||
|
@ -114,7 +114,7 @@ static void qdev_print_devinfo(DeviceClass *dc)
|
||||
if (dc->desc) {
|
||||
error_printf(", desc \"%s\"", dc->desc);
|
||||
}
|
||||
if (dc->cannot_instantiate_with_device_add_yet) {
|
||||
if (!dc->user_creatable) {
|
||||
error_printf(", no-user");
|
||||
}
|
||||
error_printf("\n");
|
||||
@ -156,7 +156,7 @@ static void qdev_print_devinfos(bool show_no_user)
|
||||
? !test_bit(i, dc->categories)
|
||||
: !bitmap_empty(dc->categories, DEVICE_CATEGORY_MAX))
|
||||
|| (!show_no_user
|
||||
&& dc->cannot_instantiate_with_device_add_yet)) {
|
||||
&& !dc->user_creatable)) {
|
||||
continue;
|
||||
}
|
||||
if (!cat_printed) {
|
||||
@ -241,7 +241,7 @@ static DeviceClass *qdev_get_device_class(const char **driver, Error **errp)
|
||||
}
|
||||
|
||||
dc = DEVICE_CLASS(oc);
|
||||
if (dc->cannot_instantiate_with_device_add_yet ||
|
||||
if (!dc->user_creatable ||
|
||||
(qdev_hotplug && !dc->hotpluggable)) {
|
||||
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "driver",
|
||||
"pluggable device type");
|
||||
|
@ -453,7 +453,7 @@ static void cpu_class_init(ObjectClass *klass, void *data)
|
||||
* Reason: CPUs still need special care by board code: wiring up
|
||||
* IRQs, adding reset handlers, halting non-first CPUs, ...
|
||||
*/
|
||||
dc->cannot_instantiate_with_device_add_yet = true;
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
static const TypeInfo cpu_type_info = {
|
||||
|
@ -4075,7 +4075,7 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
|
||||
cc->cpu_exec_enter = x86_cpu_exec_enter;
|
||||
cc->cpu_exec_exit = x86_cpu_exec_exit;
|
||||
|
||||
dc->cannot_instantiate_with_device_add_yet = false;
|
||||
dc->user_creatable = true;
|
||||
}
|
||||
|
||||
static const TypeInfo x86_cpu_type_info = {
|
||||
|
Loading…
Reference in New Issue
Block a user