From: Alexander Graf <graf@amazon.com>
To: <qemu-devel@nongnu.org>
Cc: qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-riscv@nongnu.org,
qemu-s390x@nongnu.org, "Song Gao" <17746591750@163.com>,
"Aditya Gupta" <adityag@linux.ibm.com>,
"Alexey Kardashevskiy" <aik@ozlabs.ru>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Farhan Ali" <alifm@linux.ibm.com>,
"Alistair Francis" <alistair.francis@wdc.com>,
"Alistair Francis" <alistair@alistair23.me>,
"Antony Pavlov" <antonynpavlov@gmail.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Artyom Tarasenko" <atar4qemu@gmail.com>,
"BALATON Zoltan" <balaton@eik.bme.hu>,
"Felipe Balbi" <balbi@kernel.org>,
"Daniel P . Berrangé" <berrange@redhat.com>,
"Christian Borntraeger" <borntraeger@linux.ibm.com>,
"Brian Cain" <brian.cain@oss.qualcomm.com>,
"Hendrik Brueckner" <brueckner@linux.ibm.com>,
"Chao Liu" <chao.liu@processmission.com>,
"Huacai Chen" <chenhuacai@kernel.org>,
"Clément Chigot" <chigot@adacore.com>,
"Cédric Le Goater" <clg@kaod.org>, "Helge Deller" <deller@gmx.de>,
"Dorjoy Chowdhury" <dorjoychy111@gmail.com>,
"Edgar E . Iglesias" <edgar.iglesias@gmail.com>,
"Alexandre Iooss" <erdnaxe@crans.org>,
"Eric Farman" <farman@linux.ibm.com>,
"Fabiano Rosas" <farosas@suse.de>,
"Francisco Iglesias" <francisco.iglesias@amd.com>,
"Gaurav Sharma" <gaurav.sharma_7@nxp.com>,
"Gautam Gala" <ggala@linux.ibm.com>,
"Harsh Prateek Bora" <harshpb@linux.ibm.com>,
"Hervé Poussineau" <hpoussin@reactos.org>,
"Jan Kiszka" <jan.kiszka@web.de>,
"Max Filippov" <jcmvbkbc@gmail.com>,
"Joel Stanley" <joel@jms.id.au>,
"Jared Rossi" <jrossi@linux.ibm.com>,
"Tyrone Ting" <kfting@nuvoton.com>,
"Frederic Konrad" <konrad.frederic@yahoo.fr>,
"Laurent Vivier" <laurent@vivier.eu>,
"Manos Pitsidianakis" <manos.pitsidianakis@linaro.org>,
"Bibo Mao" <maobibo@loongson.cn>,
"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
"Glenn Miles" <milesg@linux.ibm.com>,
"Matthew Rosato" <mjrosato@linux.ibm.com>,
"Michael Rolnik" <mrolnik@gmail.com>,
"Michael S . Tsirkin" <mst@redhat.com>,
"Niek Linnenbank" <nieklinnenbank@gmail.com>,
"Nicholas Piggin" <npiggin@gmail.com>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Halil Pasic" <pasic@linux.ibm.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Peter Xu" <peterx@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@mailo.com>,
"Philippe Mathieu-Daudé" <philmd@oss.qualcomm.com>,
"Pierrick Bouvier" <pierrick.bouvier@oss.qualcomm.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Sai Pavan Boddu" <sai.pavan.boddu@amd.com>,
"Samuel Tardieu" <sam@rfc1149.net>,
"Bernhard Beschow" <shentey@gmail.com>,
"Stafford Horne" <shorne@gmail.com>,
"Sergio Lopez" <slp@redhat.com>,
"Subbaraya Sundeep" <sundeep.lkml@gmail.com>,
"Thomas Huth" <th.huth+qemu@posteo.eu>,
"Ran Wang" <wangran@bosc.ac.cn>, "Hao Wu" <wuhaotsh@google.com>
Subject: [RFC PATCH v2 077/137] hw/misc/unimp: Give create_unimplemented_device() a QOM parent
Date: Sat, 18 Jul 2026 21:35:52 +0000 [thread overview]
Message-ID: <20260718213652.37673-78-graf@amazon.com> (raw)
In-Reply-To: <20260718213652.37673-1-graf@amazon.com>
Every one of the ~500 call sites already sits inside a SoC .realize()
or a board .init() where the natural composition-tree owner is in
scope. Thread that owner through as the first argument, reuse the
existing @name string as the child<> id, and switch the internal
qdev_new_orphan()+sysbus_realize_and_unref() pair to the parented
qdev_new()+sysbus_realize().
Parent expression per caller class:
*_realize(DeviceState *dev, ...) OBJECT(dev)
*_soc_realize(DeviceState *dev_soc,) OBJECT(dev_soc)
board_init(MachineState *machine) OBJECT(machine) / OBJECT(ms) etc.
No behavioural change: the low-priority overlap mapping still lets
real device models take precedence. All 20 softmmu targets build.
AI-used-for: code (refactoring)
Signed-off-by: Alexander Graf <graf@amazon.com>
---
hw/arm/allwinner-a10.c | 2 +-
hw/arm/allwinner-h3.c | 2 +-
hw/arm/allwinner-r40.c | 2 +-
hw/arm/fsl-imx6.c | 2 +-
hw/arm/fsl-imx6ul.c | 35 +++---
hw/arm/fsl-imx7.c | 33 +++---
hw/arm/fsl-imx8mm.c | 2 +-
hw/arm/fsl-imx8mp.c | 2 +-
hw/arm/max78000_soc.c | 105 ++++++++--------
hw/arm/mps2-tz.c | 7 +-
hw/arm/mps2.c | 27 +++--
hw/arm/mps3r.c | 10 +-
hw/arm/msf2-soc.c | 20 ++--
hw/arm/npcm7xx.c | 91 +++++++-------
hw/arm/npcm8xx.c | 145 ++++++++++++-----------
hw/arm/nrf51_soc.c | 4 +-
hw/arm/stellaris.c | 12 +-
hw/arm/stm32f100_soc.c | 60 +++++-----
hw/arm/stm32f405_soc.c | 84 ++++++-------
hw/arm/stm32l4x5_soc.c | 88 +++++++-------
hw/arm/xilinx_zynq.c | 61 +++++-----
hw/avr/atmega.c | 20 ++--
hw/loongarch/virt.c | 2 +-
hw/microblaze/petalogix_s3adsp1800_mmu.c | 2 +-
hw/mips/loongson3_virt.c | 5 +-
hw/pci-host/bonito.c | 14 +--
hw/riscv/k230.c | 107 ++++++++---------
hw/riscv/microblaze-v-generic.c | 10 +-
hw/riscv/microchip_pfsoc.c | 54 ++++-----
hw/riscv/opentitan.c | 52 ++++----
hw/riscv/sifive_e.c | 12 +-
hw/riscv/sifive_u.c | 6 +-
hw/riscv/tt_atlantis.c | 2 +-
hw/sparc/sun4m.c | 8 +-
hw/sparc64/niagara.c | 3 +-
include/hw/misc/unimp.h | 9 +-
36 files changed, 557 insertions(+), 543 deletions(-)
diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c
index cbc0b38986..8b37fd61f3 100644
--- a/hw/arm/allwinner-a10.c
+++ b/hw/arm/allwinner-a10.c
@@ -131,7 +131,7 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
memory_region_init_ram(&s->sram_a, OBJECT(dev), "sram A", 48 * KiB,
&error_fatal);
memory_region_add_subregion(get_system_memory(), 0x00000000, &s->sram_a);
- create_unimplemented_device("a10-sram-ctrl", 0x01c00000, 4 * KiB);
+ create_unimplemented_device(OBJECT(dev), "a10-sram-ctrl", 0x01c00000, 4 * KiB);
/* Clock Control Module */
sysbus_realize(SYS_BUS_DEVICE(&s->ccm), &error_fatal);
diff --git a/hw/arm/allwinner-h3.c b/hw/arm/allwinner-h3.c
index 6f9a07610f..711bfae095 100644
--- a/hw/arm/allwinner-h3.c
+++ b/hw/arm/allwinner-h3.c
@@ -468,7 +468,7 @@ static void allwinner_h3_realize(DeviceState *dev, Error **errp)
/* Unimplemented devices */
for (i = 0; i < ARRAY_SIZE(unimplemented); i++) {
- create_unimplemented_device(unimplemented[i].device_name,
+ create_unimplemented_device(OBJECT(dev), unimplemented[i].device_name,
unimplemented[i].base,
unimplemented[i].size);
}
diff --git a/hw/arm/allwinner-r40.c b/hw/arm/allwinner-r40.c
index 4f9d8a606e..9c15d361b4 100644
--- a/hw/arm/allwinner-r40.c
+++ b/hw/arm/allwinner-r40.c
@@ -532,7 +532,7 @@ static void allwinner_r40_realize(DeviceState *dev, Error **errp)
/* Unimplemented devices */
for (unsigned i = 0; i < ARRAY_SIZE(r40_unimplemented); i++) {
- create_unimplemented_device(r40_unimplemented[i].device_name,
+ create_unimplemented_device(OBJECT(dev), r40_unimplemented[i].device_name,
r40_unimplemented[i].base,
r40_unimplemented[i].size);
}
diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
index 44046953be..f0fbdc1a68 100644
--- a/hw/arm/fsl-imx6.c
+++ b/hw/arm/fsl-imx6.c
@@ -471,7 +471,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
/*
* PCIe PHY
*/
- create_unimplemented_device("pcie-phy", FSL_IMX6_PCIe_ADDR,
+ create_unimplemented_device(OBJECT(dev), "pcie-phy", FSL_IMX6_PCIe_ADDR,
FSL_IMX6_PCIe_SIZE);
/* ROM memory */
diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c
index 1863558a0d..adbb896fd1 100644
--- a/hw/arm/fsl-imx6ul.c
+++ b/hw/arm/fsl-imx6ul.c
@@ -161,6 +161,7 @@ static void fsl_imx6ul_init(Object *obj)
static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
{
+ Object *obj = OBJECT(dev);
MachineState *ms = MACHINE(qdev_get_machine());
FslIMX6ULState *s = FSL_IMX6UL(dev);
DeviceState *mpcore = DEVICE(&s->a7mpcore);
@@ -198,37 +199,37 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
/*
* A7MPCORE DAP
*/
- create_unimplemented_device("a7mpcore-dap", FSL_IMX6UL_A7MPCORE_DAP_ADDR,
+ create_unimplemented_device(obj, "a7mpcore-dap", FSL_IMX6UL_A7MPCORE_DAP_ADDR,
FSL_IMX6UL_A7MPCORE_DAP_SIZE);
/*
* MMDC
*/
- create_unimplemented_device("a7mpcore-mmdc", FSL_IMX6UL_MMDC_CFG_ADDR,
+ create_unimplemented_device(obj, "a7mpcore-mmdc", FSL_IMX6UL_MMDC_CFG_ADDR,
FSL_IMX6UL_MMDC_CFG_SIZE);
/*
* OCOTP
*/
- create_unimplemented_device("a7mpcore-ocotp", FSL_IMX6UL_OCOTP_CTRL_ADDR,
+ create_unimplemented_device(obj, "a7mpcore-ocotp", FSL_IMX6UL_OCOTP_CTRL_ADDR,
FSL_IMX6UL_OCOTP_CTRL_SIZE);
/*
* QSPI
*/
- create_unimplemented_device("a7mpcore-qspi", FSL_IMX6UL_QSPI_ADDR,
+ create_unimplemented_device(obj, "a7mpcore-qspi", FSL_IMX6UL_QSPI_ADDR,
FSL_IMX6UL_QSPI_SIZE);
/*
* CAAM
*/
- create_unimplemented_device("a7mpcore-qspi", FSL_IMX6UL_CAAM_ADDR,
+ create_unimplemented_device(obj, "a7mpcore-qspi", FSL_IMX6UL_CAAM_ADDR,
FSL_IMX6UL_CAAM_SIZE);
/*
* USBMISC
*/
- create_unimplemented_device("a7mpcore-usbmisc", FSL_IMX6UL_USBO2_USBMISC_ADDR,
+ create_unimplemented_device(obj, "a7mpcore-usbmisc", FSL_IMX6UL_USBO2_USBMISC_ADDR,
FSL_IMX6UL_USBO2_USBMISC_SIZE);
/*
@@ -322,9 +323,9 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
/*
* IOMUXC
*/
- create_unimplemented_device("iomuxc", FSL_IMX6UL_IOMUXC_ADDR,
+ create_unimplemented_device(obj, "iomuxc", FSL_IMX6UL_IOMUXC_ADDR,
FSL_IMX6UL_IOMUXC_SIZE);
- create_unimplemented_device("iomuxc_gpr", FSL_IMX6UL_IOMUXC_GPR_ADDR,
+ create_unimplemented_device(obj, "iomuxc_gpr", FSL_IMX6UL_IOMUXC_GPR_ADDR,
FSL_IMX6UL_IOMUXC_GPR_SIZE);
/*
@@ -581,7 +582,7 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
/*
* SDMA
*/
- create_unimplemented_device("sdma", FSL_IMX6UL_SDMA_ADDR,
+ create_unimplemented_device(obj, "sdma", FSL_IMX6UL_SDMA_ADDR,
FSL_IMX6UL_SDMA_SIZE);
/*
@@ -595,7 +596,7 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
};
snprintf(name, NAME_SIZE, "sai%d", i);
- create_unimplemented_device(name, FSL_IMX6UL_SAIn_ADDR[i],
+ create_unimplemented_device(obj, name, FSL_IMX6UL_SAIn_ADDR[i],
FSL_IMX6UL_SAIn_SIZE);
}
@@ -615,14 +616,14 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
};
snprintf(name, NAME_SIZE, "pwm%d", i);
- create_unimplemented_device(name, FSL_IMX6UL_PWMn_ADDR[i],
+ create_unimplemented_device(obj, name, FSL_IMX6UL_PWMn_ADDR[i],
FSL_IMX6UL_PWMn_SIZE);
}
/*
* Audio ASRC (asynchronous sample rate converter)
*/
- create_unimplemented_device("asrc", FSL_IMX6UL_ASRC_ADDR,
+ create_unimplemented_device(obj, "asrc", FSL_IMX6UL_ASRC_ADDR,
FSL_IMX6UL_ASRC_SIZE);
/*
@@ -635,14 +636,14 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
};
snprintf(name, NAME_SIZE, "can%d", i);
- create_unimplemented_device(name, FSL_IMX6UL_CANn_ADDR[i],
+ create_unimplemented_device(obj, name, FSL_IMX6UL_CANn_ADDR[i],
FSL_IMX6UL_CANn_SIZE);
}
/*
* APHB_DMA
*/
- create_unimplemented_device("aphb_dma", FSL_IMX6UL_APBH_DMA_ADDR,
+ create_unimplemented_device(obj, "aphb_dma", FSL_IMX6UL_APBH_DMA_ADDR,
FSL_IMX6UL_APBH_DMA_SIZE);
/*
@@ -655,7 +656,7 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
};
snprintf(name, NAME_SIZE, "adc%d", i);
- create_unimplemented_device(name, FSL_IMX6UL_ADCn_ADDR[i],
+ create_unimplemented_device(obj, name, FSL_IMX6UL_ADCn_ADDR[i],
FSL_IMX6UL_ADCn_SIZE);
}
@@ -670,13 +671,13 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
/*
* CSU
*/
- create_unimplemented_device("csu", FSL_IMX6UL_CSU_ADDR,
+ create_unimplemented_device(obj, "csu", FSL_IMX6UL_CSU_ADDR,
FSL_IMX6UL_CSU_SIZE);
/*
* TZASC
*/
- create_unimplemented_device("tzasc", FSL_IMX6UL_TZASC_ADDR,
+ create_unimplemented_device(obj, "tzasc", FSL_IMX6UL_TZASC_ADDR,
FSL_IMX6UL_TZASC_SIZE);
/*
diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c
index 2defa498d3..07a5ae8cd0 100644
--- a/hw/arm/fsl-imx7.c
+++ b/hw/arm/fsl-imx7.c
@@ -154,6 +154,7 @@ static void fsl_imx7_init(Object *obj)
static void fsl_imx7_realize(DeviceState *dev, Error **errp)
{
+ Object *obj = OBJECT(dev);
MachineState *ms = MACHINE(qdev_get_machine());
FslIMX7State *s = FSL_IMX7(dev);
DeviceState *mpcore = DEVICE(&s->a7mpcore);
@@ -229,7 +230,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
/*
* A7MPCORE DAP
*/
- create_unimplemented_device("a7mpcore-dap", FSL_IMX7_A7MPCORE_DAP_ADDR,
+ create_unimplemented_device(obj, "a7mpcore-dap", FSL_IMX7_A7MPCORE_DAP_ADDR,
FSL_IMX7_A7MPCORE_DAP_SIZE);
/*
@@ -305,9 +306,9 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
/*
* IOMUXC and IOMUXC_LPSR
*/
- create_unimplemented_device("iomuxc", FSL_IMX7_IOMUXC_ADDR,
+ create_unimplemented_device(obj, "iomuxc", FSL_IMX7_IOMUXC_ADDR,
FSL_IMX7_IOMUXC_SIZE);
- create_unimplemented_device("iomuxc_lspr", FSL_IMX7_IOMUXC_LPSR_ADDR,
+ create_unimplemented_device(obj, "iomuxc_lspr", FSL_IMX7_IOMUXC_LPSR_ADDR,
FSL_IMX7_IOMUXC_LPSR_SIZE);
/*
@@ -520,12 +521,12 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
/*
* SDMA
*/
- create_unimplemented_device("sdma", FSL_IMX7_SDMA_ADDR, FSL_IMX7_SDMA_SIZE);
+ create_unimplemented_device(obj, "sdma", FSL_IMX7_SDMA_ADDR, FSL_IMX7_SDMA_SIZE);
/*
* CAAM
*/
- create_unimplemented_device("caam", FSL_IMX7_CAAM_ADDR, FSL_IMX7_CAAM_SIZE);
+ create_unimplemented_device(obj, "caam", FSL_IMX7_CAAM_ADDR, FSL_IMX7_CAAM_SIZE);
/*
* PWMs
@@ -539,7 +540,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
};
snprintf(name, NAME_SIZE, "pwm%d", i);
- create_unimplemented_device(name, FSL_IMX7_PWMn_ADDR[i],
+ create_unimplemented_device(obj, name, FSL_IMX7_PWMn_ADDR[i],
FSL_IMX7_PWMn_SIZE);
}
@@ -553,7 +554,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
};
snprintf(name, NAME_SIZE, "can%d", i);
- create_unimplemented_device(name, FSL_IMX7_CANn_ADDR[i],
+ create_unimplemented_device(obj, name, FSL_IMX7_CANn_ADDR[i],
FSL_IMX7_CANn_SIZE);
}
@@ -568,14 +569,14 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
};
snprintf(name, NAME_SIZE, "sai%d", i);
- create_unimplemented_device(name, FSL_IMX7_SAIn_ADDR[i],
+ create_unimplemented_device(obj, name, FSL_IMX7_SAIn_ADDR[i],
FSL_IMX7_SAIn_SIZE);
}
/*
* OCOTP
*/
- create_unimplemented_device("ocotp", FSL_IMX7_OCOTP_ADDR,
+ create_unimplemented_device(obj, "ocotp", FSL_IMX7_OCOTP_ADDR,
FSL_IMX7_OCOTP_SIZE);
/*
@@ -638,7 +639,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
sysbus_connect_irq(SYS_BUS_DEVICE(&s->usb[i]), 0, irq);
snprintf(name, NAME_SIZE, "usbmisc%d", i);
- create_unimplemented_device(name, FSL_IMX7_USBMISCn_ADDR[i],
+ create_unimplemented_device(obj, name, FSL_IMX7_USBMISCn_ADDR[i],
FSL_IMX7_USBMISCn_SIZE);
}
@@ -652,37 +653,37 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
};
snprintf(name, NAME_SIZE, "adc%d", i);
- create_unimplemented_device(name, FSL_IMX7_ADCn_ADDR[i],
+ create_unimplemented_device(obj, name, FSL_IMX7_ADCn_ADDR[i],
FSL_IMX7_ADCn_SIZE);
}
/*
* LCD
*/
- create_unimplemented_device("lcdif", FSL_IMX7_LCDIF_ADDR,
+ create_unimplemented_device(obj, "lcdif", FSL_IMX7_LCDIF_ADDR,
FSL_IMX7_LCDIF_SIZE);
/*
* DMA APBH
*/
- create_unimplemented_device("dma-apbh", FSL_IMX7_DMA_APBH_ADDR,
+ create_unimplemented_device(obj, "dma-apbh", FSL_IMX7_DMA_APBH_ADDR,
FSL_IMX7_DMA_APBH_SIZE);
/*
* PCIe PHY
*/
- create_unimplemented_device("pcie-phy", FSL_IMX7_PCIE_PHY_ADDR,
+ create_unimplemented_device(obj, "pcie-phy", FSL_IMX7_PCIE_PHY_ADDR,
FSL_IMX7_PCIE_PHY_SIZE);
/*
* CSU
*/
- create_unimplemented_device("csu", FSL_IMX7_CSU_ADDR,
+ create_unimplemented_device(obj, "csu", FSL_IMX7_CSU_ADDR,
FSL_IMX7_CSU_SIZE);
/*
* TZASC
*/
- create_unimplemented_device("tzasc", FSL_IMX7_TZASC_ADDR,
+ create_unimplemented_device(obj, "tzasc", FSL_IMX7_TZASC_ADDR,
FSL_IMX7_TZASC_SIZE);
/*
diff --git a/hw/arm/fsl-imx8mm.c b/hw/arm/fsl-imx8mm.c
index 875e92bb34..a38298c4a6 100644
--- a/hw/arm/fsl-imx8mm.c
+++ b/hw/arm/fsl-imx8mm.c
@@ -669,7 +669,7 @@ static void fsl_imx8mm_realize(DeviceState *dev, Error **errp)
break;
default:
- create_unimplemented_device(fsl_imx8mm_memmap[i].name,
+ create_unimplemented_device(OBJECT(dev), fsl_imx8mm_memmap[i].name,
fsl_imx8mm_memmap[i].addr,
fsl_imx8mm_memmap[i].size);
break;
diff --git a/hw/arm/fsl-imx8mp.c b/hw/arm/fsl-imx8mp.c
index bcd91739d9..c5bace6605 100644
--- a/hw/arm/fsl-imx8mp.c
+++ b/hw/arm/fsl-imx8mp.c
@@ -738,7 +738,7 @@ static void fsl_imx8mp_realize(DeviceState *dev, Error **errp)
break;
default:
- create_unimplemented_device(fsl_imx8mp_memmap[i].name,
+ create_unimplemented_device(OBJECT(dev), fsl_imx8mp_memmap[i].name,
fsl_imx8mp_memmap[i].addr,
fsl_imx8mp_memmap[i].size);
break;
diff --git a/hw/arm/max78000_soc.c b/hw/arm/max78000_soc.c
index 321e63723e..b8e0265de2 100644
--- a/hw/arm/max78000_soc.c
+++ b/hw/arm/max78000_soc.c
@@ -52,6 +52,7 @@ static void max78000_soc_initfn(Object *obj)
static void max78000_soc_realize(DeviceState *dev_soc, Error **errp)
{
+ Object *obj = OBJECT(dev_soc);
MAX78000State *s = MAX78000_SOC(dev_soc);
MemoryRegion *system_memory = get_system_memory();
DeviceState *dev, *gcrdev, *armv7m;
@@ -146,52 +147,52 @@ static void max78000_soc_realize(DeviceState *dev_soc, Error **errp)
sysbus_realize(SYS_BUS_DEVICE(dev), errp);
sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0x40000000);
- create_unimplemented_device("systemInterface", 0x40000400, 0x400);
- create_unimplemented_device("functionControl", 0x40000800, 0x400);
- create_unimplemented_device("watchdogTimer0", 0x40003000, 0x400);
- create_unimplemented_device("dynamicVoltScale", 0x40003c00, 0x40);
- create_unimplemented_device("SIMO", 0x40004400, 0x400);
- create_unimplemented_device("trimSystemInit", 0x40005400, 0x400);
- create_unimplemented_device("generalCtrlFunc", 0x40005800, 0x400);
- create_unimplemented_device("wakeupTimer", 0x40006400, 0x400);
- create_unimplemented_device("powerSequencer", 0x40006800, 0x400);
- create_unimplemented_device("miscControl", 0x40006c00, 0x400);
-
- create_unimplemented_device("gpio0", 0x40008000, 0x1000);
- create_unimplemented_device("gpio1", 0x40009000, 0x1000);
-
- create_unimplemented_device("parallelCamInterface", 0x4000e000, 0x1000);
- create_unimplemented_device("CRC", 0x4000f000, 0x1000);
-
- create_unimplemented_device("timer0", 0x40010000, 0x1000);
- create_unimplemented_device("timer1", 0x40011000, 0x1000);
- create_unimplemented_device("timer2", 0x40012000, 0x1000);
- create_unimplemented_device("timer3", 0x40013000, 0x1000);
-
- create_unimplemented_device("i2c0", 0x4001d000, 0x1000);
- create_unimplemented_device("i2c1", 0x4001e000, 0x1000);
- create_unimplemented_device("i2c2", 0x4001f000, 0x1000);
-
- create_unimplemented_device("standardDMA", 0x40028000, 0x1000);
- create_unimplemented_device("flashController0", 0x40029000, 0x400);
-
- create_unimplemented_device("adc", 0x40034000, 0x1000);
- create_unimplemented_device("pulseTrainEngine", 0x4003c000, 0xa0);
- create_unimplemented_device("oneWireMaster", 0x4003d000, 0x1000);
- create_unimplemented_device("semaphore", 0x4003e000, 0x1000);
-
- create_unimplemented_device("spi1", 0x40046000, 0x2000);
- create_unimplemented_device("i2s", 0x40060000, 0x1000);
- create_unimplemented_device("lowPowerControl", 0x40080000, 0x400);
- create_unimplemented_device("gpio2", 0x40080400, 0x200);
- create_unimplemented_device("lowPowerWatchdogTimer", 0x40080800, 0x400);
- create_unimplemented_device("lowPowerTimer4", 0x40080c00, 0x400);
-
- create_unimplemented_device("lowPowerTimer5", 0x40081000, 0x400);
- create_unimplemented_device("lowPowerUART0", 0x40081400, 0x400);
- create_unimplemented_device("lowPowerComparator", 0x40088000, 0x400);
-
- create_unimplemented_device("spi0", 0x400be000, 0x400);
+ create_unimplemented_device(obj, "systemInterface", 0x40000400, 0x400);
+ create_unimplemented_device(obj, "functionControl", 0x40000800, 0x400);
+ create_unimplemented_device(obj, "watchdogTimer0", 0x40003000, 0x400);
+ create_unimplemented_device(obj, "dynamicVoltScale", 0x40003c00, 0x40);
+ create_unimplemented_device(obj, "SIMO", 0x40004400, 0x400);
+ create_unimplemented_device(obj, "trimSystemInit", 0x40005400, 0x400);
+ create_unimplemented_device(obj, "generalCtrlFunc", 0x40005800, 0x400);
+ create_unimplemented_device(obj, "wakeupTimer", 0x40006400, 0x400);
+ create_unimplemented_device(obj, "powerSequencer", 0x40006800, 0x400);
+ create_unimplemented_device(obj, "miscControl", 0x40006c00, 0x400);
+
+ create_unimplemented_device(obj, "gpio0", 0x40008000, 0x1000);
+ create_unimplemented_device(obj, "gpio1", 0x40009000, 0x1000);
+
+ create_unimplemented_device(obj, "parallelCamInterface", 0x4000e000, 0x1000);
+ create_unimplemented_device(obj, "CRC", 0x4000f000, 0x1000);
+
+ create_unimplemented_device(obj, "timer0", 0x40010000, 0x1000);
+ create_unimplemented_device(obj, "timer1", 0x40011000, 0x1000);
+ create_unimplemented_device(obj, "timer2", 0x40012000, 0x1000);
+ create_unimplemented_device(obj, "timer3", 0x40013000, 0x1000);
+
+ create_unimplemented_device(obj, "i2c0", 0x4001d000, 0x1000);
+ create_unimplemented_device(obj, "i2c1", 0x4001e000, 0x1000);
+ create_unimplemented_device(obj, "i2c2", 0x4001f000, 0x1000);
+
+ create_unimplemented_device(obj, "standardDMA", 0x40028000, 0x1000);
+ create_unimplemented_device(obj, "flashController0", 0x40029000, 0x400);
+
+ create_unimplemented_device(obj, "adc", 0x40034000, 0x1000);
+ create_unimplemented_device(obj, "pulseTrainEngine", 0x4003c000, 0xa0);
+ create_unimplemented_device(obj, "oneWireMaster", 0x4003d000, 0x1000);
+ create_unimplemented_device(obj, "semaphore", 0x4003e000, 0x1000);
+
+ create_unimplemented_device(obj, "spi1", 0x40046000, 0x2000);
+ create_unimplemented_device(obj, "i2s", 0x40060000, 0x1000);
+ create_unimplemented_device(obj, "lowPowerControl", 0x40080000, 0x400);
+ create_unimplemented_device(obj, "gpio2", 0x40080400, 0x200);
+ create_unimplemented_device(obj, "lowPowerWatchdogTimer", 0x40080800, 0x400);
+ create_unimplemented_device(obj, "lowPowerTimer4", 0x40080c00, 0x400);
+
+ create_unimplemented_device(obj, "lowPowerTimer5", 0x40081000, 0x400);
+ create_unimplemented_device(obj, "lowPowerUART0", 0x40081400, 0x400);
+ create_unimplemented_device(obj, "lowPowerComparator", 0x40088000, 0x400);
+
+ create_unimplemented_device(obj, "spi0", 0x400be000, 0x400);
/*
* The MAX78000 user guide's base address map lists the CNN TX FIFO as
@@ -199,13 +200,13 @@ static void max78000_soc_realize(DeviceState *dev_soc, Error **errp)
* is listed as having data accessible up to offset 0x1000, the user
* guide is likely incorrect.
*/
- create_unimplemented_device("cnnTxFIFO", 0x400c0400, 0x2000);
+ create_unimplemented_device(obj, "cnnTxFIFO", 0x400c0400, 0x2000);
- create_unimplemented_device("cnnGlobalControl", 0x50000000, 0x10000);
- create_unimplemented_device("cnnx16quad0", 0x50100000, 0x40000);
- create_unimplemented_device("cnnx16quad1", 0x50500000, 0x40000);
- create_unimplemented_device("cnnx16quad2", 0x50900000, 0x40000);
- create_unimplemented_device("cnnx16quad3", 0x50d00000, 0x40000);
+ create_unimplemented_device(obj, "cnnGlobalControl", 0x50000000, 0x10000);
+ create_unimplemented_device(obj, "cnnx16quad0", 0x50100000, 0x40000);
+ create_unimplemented_device(obj, "cnnx16quad1", 0x50500000, 0x40000);
+ create_unimplemented_device(obj, "cnnx16quad2", 0x50900000, 0x40000);
+ create_unimplemented_device(obj, "cnnx16quad3", 0x50d00000, 0x40000);
}
diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c
index 17945d2b71..32e3db1134 100644
--- a/hw/arm/mps2-tz.c
+++ b/hw/arm/mps2-tz.c
@@ -800,6 +800,7 @@ static uint32_t boot_ram_size(MPS2TZMachineState *mms)
static void mps2tz_common_init(MachineState *machine)
{
+ Object *obj = OBJECT(machine);
MPS2TZMachineState *mms = MPS2TZ_MACHINE(machine);
MPS2TZMachineClass *mmc = MPS2TZ_MACHINE_GET_CLASS(mms);
MachineClass *mc = MACHINE_GET_CLASS(machine);
@@ -1193,11 +1194,11 @@ static void mps2tz_common_init(MachineState *machine)
"cfg_sec_resp", 0));
}
- create_unimplemented_device("FPGA NS PC", 0x48007000, 0x1000);
+ create_unimplemented_device(obj, "FPGA NS PC", 0x48007000, 0x1000);
if (mmc->fpga_type == FPGA_AN547) {
- create_unimplemented_device("U55 timing adapter 0", 0x48102000, 0x1000);
- create_unimplemented_device("U55 timing adapter 1", 0x48103000, 0x1000);
+ create_unimplemented_device(obj, "U55 timing adapter 0", 0x48102000, 0x1000);
+ create_unimplemented_device(obj, "U55 timing adapter 1", 0x48103000, 0x1000);
}
create_non_mpc_ram(mms);
diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c
index 2edd222674..23a814e4e4 100644
--- a/hw/arm/mps2.c
+++ b/hw/arm/mps2.c
@@ -135,6 +135,7 @@ static void make_ram_alias(MemoryRegion *mr, const char *name,
static void mps2_common_init(MachineState *machine)
{
+ Object *obj = OBJECT(machine);
MPS2MachineState *mms = MPS2_MACHINE(machine);
MPS2MachineClass *mmc = MPS2_MACHINE_GET_CLASS(machine);
MemoryRegion *system_memory = get_system_memory();
@@ -246,25 +247,25 @@ static void mps2_common_init(MachineState *machine)
OBJECT(system_memory), &error_abort);
sysbus_realize(SYS_BUS_DEVICE(&mms->armv7m), &error_fatal);
- create_unimplemented_device("zbtsmram mirror", 0x00400000, 0x00400000);
- create_unimplemented_device("RESERVED 1", 0x00800000, 0x00800000);
- create_unimplemented_device("Block RAM", 0x01000000, 0x00010000);
- create_unimplemented_device("RESERVED 2", 0x01010000, 0x1EFF0000);
- create_unimplemented_device("RESERVED 3", 0x20800000, 0x00800000);
- create_unimplemented_device("PSRAM", 0x21000000, 0x01000000);
+ create_unimplemented_device(obj, "zbtsmram mirror", 0x00400000, 0x00400000);
+ create_unimplemented_device(obj, "RESERVED 1", 0x00800000, 0x00800000);
+ create_unimplemented_device(obj, "Block RAM", 0x01000000, 0x00010000);
+ create_unimplemented_device(obj, "RESERVED 2", 0x01010000, 0x1EFF0000);
+ create_unimplemented_device(obj, "RESERVED 3", 0x20800000, 0x00800000);
+ create_unimplemented_device(obj, "PSRAM", 0x21000000, 0x01000000);
/* These three ranges all cover multiple devices; we may implement
* some of them below (in which case the real device takes precedence
* over the unimplemented-region mapping).
*/
- create_unimplemented_device("CMSDK APB peripheral region @0x40000000",
+ create_unimplemented_device(obj, "CMSDK APB peripheral region @0x40000000",
0x40000000, 0x00010000);
- create_unimplemented_device("CMSDK AHB peripheral region @0x40010000",
+ create_unimplemented_device(obj, "CMSDK AHB peripheral region @0x40010000",
0x40010000, 0x00010000);
- create_unimplemented_device("Extra peripheral region @0x40020000",
+ create_unimplemented_device(obj, "Extra peripheral region @0x40020000",
0x40020000, 0x00010000);
- create_unimplemented_device("RESERVED 4", 0x40030000, 0x001D0000);
- create_unimplemented_device("VGA", 0x41000000, 0x0200000);
+ create_unimplemented_device(obj, "RESERVED 4", 0x40030000, 0x001D0000);
+ create_unimplemented_device(obj, "VGA", 0x41000000, 0x0200000);
switch (mmc->fpga_type) {
case FPGA_AN385:
@@ -362,7 +363,7 @@ static void mps2_common_init(MachineState *machine)
for (i = 0; i < 4; i++) {
static const hwaddr gpiobase[] = {0x40010000, 0x40011000,
0x40012000, 0x40013000};
- create_unimplemented_device("cmsdk-ahb-gpio", gpiobase[i], 0x1000);
+ create_unimplemented_device(obj, "cmsdk-ahb-gpio", gpiobase[i], 0x1000);
}
/* CMSDK APB subsystem */
@@ -458,7 +459,7 @@ static void mps2_common_init(MachineState *machine)
qbus_mark_full(qbus);
}
}
- create_unimplemented_device("i2s", 0x40024000, 0x400);
+ create_unimplemented_device(obj, "i2s", 0x40024000, 0x400);
/* In hardware this is a LAN9220; the LAN9118 is software compatible
* except that it doesn't support the checksum-offload feature.
diff --git a/hw/arm/mps3r.c b/hw/arm/mps3r.c
index 8e249c9b9d..4d432de6ba 100644
--- a/hw/arm/mps3r.c
+++ b/hw/arm/mps3r.c
@@ -458,7 +458,7 @@ static void mps3r_common_init(MachineState *machine)
for (int i = 0; i < 4; i++) {
/* CMSDK GPIO controllers */
g_autofree char *s = g_strdup_printf("gpio%d", i);
- create_unimplemented_device(s, 0xe0000000 + i * 0x1000, 0x1000);
+ create_unimplemented_device(OBJECT(machine), s, 0xe0000000 + i * 0x1000, 0x1000);
}
object_initialize_child(OBJECT(mms), "watchdog", &mms->watchdog,
@@ -526,7 +526,7 @@ static void mps3r_common_init(MachineState *machine)
sysbus_realize(SYS_BUS_DEVICE(&mms->scc), &error_fatal);
sysbus_mmio_map(SYS_BUS_DEVICE(&mms->scc), 0, 0xe0200000);
- create_unimplemented_device("i2s-audio", 0xe0201000, 0x1000);
+ create_unimplemented_device(OBJECT(machine), "i2s-audio", 0xe0201000, 0x1000);
object_initialize_child(OBJECT(mms), "fpgaio", &mms->fpgaio,
TYPE_MPS2_FPGAIO);
@@ -537,7 +537,7 @@ static void mps3r_common_init(MachineState *machine)
sysbus_realize(SYS_BUS_DEVICE(&mms->fpgaio), &error_fatal);
sysbus_mmio_map(SYS_BUS_DEVICE(&mms->fpgaio), 0, 0xe0202000);
- create_unimplemented_device("clcd", 0xe0209000, 0x1000);
+ create_unimplemented_device(OBJECT(machine), "clcd", 0xe0209000, 0x1000);
object_initialize_child(OBJECT(mms), "rtc", &mms->rtc, TYPE_PL031);
sysbus_realize(SYS_BUS_DEVICE(&mms->rtc), &error_fatal);
@@ -552,8 +552,8 @@ static void mps3r_common_init(MachineState *machine)
lan9118_init(OBJECT(machine), 0xe0300000,
qdev_get_gpio_in(gicdev, 18));
- create_unimplemented_device("usb", 0xe0301000, 0x1000);
- create_unimplemented_device("qspi-write-config", 0xe0600000, 0x1000);
+ create_unimplemented_device(OBJECT(machine), "usb", 0xe0301000, 0x1000);
+ create_unimplemented_device(OBJECT(machine), "qspi-write-config", 0xe0600000, 0x1000);
mms->bootinfo.ram_size = machine->ram_size;
mms->bootinfo.board_id = -1;
diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c
index 76eba752bd..c03778c439 100644
--- a/hw/arm/msf2-soc.c
+++ b/hw/arm/msf2-soc.c
@@ -210,16 +210,16 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Error **errp)
qdev_get_gpio_in(armv7m, MSF2_EMAC_IRQ));
/* Below devices are not modelled yet. */
- create_unimplemented_device("i2c_0", 0x40002000, 0x1000);
- create_unimplemented_device("dma", 0x40003000, 0x1000);
- create_unimplemented_device("watchdog", 0x40005000, 0x1000);
- create_unimplemented_device("i2c_1", 0x40012000, 0x1000);
- create_unimplemented_device("gpio", 0x40013000, 0x1000);
- create_unimplemented_device("hs-dma", 0x40014000, 0x1000);
- create_unimplemented_device("can", 0x40015000, 0x1000);
- create_unimplemented_device("rtc", 0x40017000, 0x1000);
- create_unimplemented_device("apb_config", 0x40020000, 0x10000);
- create_unimplemented_device("usb", 0x40043000, 0x1000);
+ create_unimplemented_device(OBJECT(dev_soc), "i2c_0", 0x40002000, 0x1000);
+ create_unimplemented_device(OBJECT(dev_soc), "dma", 0x40003000, 0x1000);
+ create_unimplemented_device(OBJECT(dev_soc), "watchdog", 0x40005000, 0x1000);
+ create_unimplemented_device(OBJECT(dev_soc), "i2c_1", 0x40012000, 0x1000);
+ create_unimplemented_device(OBJECT(dev_soc), "gpio", 0x40013000, 0x1000);
+ create_unimplemented_device(OBJECT(dev_soc), "hs-dma", 0x40014000, 0x1000);
+ create_unimplemented_device(OBJECT(dev_soc), "can", 0x40015000, 0x1000);
+ create_unimplemented_device(OBJECT(dev_soc), "rtc", 0x40017000, 0x1000);
+ create_unimplemented_device(OBJECT(dev_soc), "apb_config", 0x40020000, 0x10000);
+ create_unimplemented_device(OBJECT(dev_soc), "usb", 0x40043000, 0x1000);
}
static const Property m2sxxx_soc_properties[] = {
diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c
index a930f7843a..1ee8820070 100644
--- a/hw/arm/npcm7xx.c
+++ b/hw/arm/npcm7xx.c
@@ -479,6 +479,7 @@ static void npcm7xx_init(Object *obj)
static void npcm7xx_realize(DeviceState *dev, Error **errp)
{
+ Object *obj = OBJECT(dev);
NPCM7xxState *s = NPCM7XX(dev);
NPCM7xxClass *nc = NPCM7XX_GET_CLASS(s);
int i;
@@ -600,30 +601,30 @@ static void npcm7xx_realize(DeviceState *dev, Error **errp)
/* GPIO modules. Cannot fail. */
QEMU_BUILD_BUG_ON(ARRAY_SIZE(npcm7xx_gpio) != ARRAY_SIZE(s->gpio));
for (i = 0; i < ARRAY_SIZE(s->gpio); i++) {
- Object *obj = OBJECT(&s->gpio[i]);
+ Object *gobj = OBJECT(&s->gpio[i]);
- object_property_set_uint(obj, "reset-pullup",
+ object_property_set_uint(gobj, "reset-pullup",
npcm7xx_gpio[i].reset_pu, &error_abort);
- object_property_set_uint(obj, "reset-pulldown",
+ object_property_set_uint(gobj, "reset-pulldown",
npcm7xx_gpio[i].reset_pd, &error_abort);
- object_property_set_uint(obj, "reset-osrc",
+ object_property_set_uint(gobj, "reset-osrc",
npcm7xx_gpio[i].reset_osrc, &error_abort);
- object_property_set_uint(obj, "reset-odsc",
+ object_property_set_uint(gobj, "reset-odsc",
npcm7xx_gpio[i].reset_odsc, &error_abort);
- sysbus_realize(SYS_BUS_DEVICE(obj), &error_abort);
- sysbus_mmio_map(SYS_BUS_DEVICE(obj), 0, npcm7xx_gpio[i].regs_addr);
- sysbus_connect_irq(SYS_BUS_DEVICE(obj), 0,
+ sysbus_realize(SYS_BUS_DEVICE(gobj), &error_abort);
+ sysbus_mmio_map(SYS_BUS_DEVICE(gobj), 0, npcm7xx_gpio[i].regs_addr);
+ sysbus_connect_irq(SYS_BUS_DEVICE(gobj), 0,
npcm7xx_irq(s, NPCM7XX_GPIO0_IRQ + i));
}
/* SMBus modules. Cannot fail. */
QEMU_BUILD_BUG_ON(ARRAY_SIZE(npcm7xx_smbus_addr) != ARRAY_SIZE(s->smbus));
for (i = 0; i < ARRAY_SIZE(s->smbus); i++) {
- Object *obj = OBJECT(&s->smbus[i]);
+ Object *sobj = OBJECT(&s->smbus[i]);
- sysbus_realize(SYS_BUS_DEVICE(obj), &error_abort);
- sysbus_mmio_map(SYS_BUS_DEVICE(obj), 0, npcm7xx_smbus_addr[i]);
- sysbus_connect_irq(SYS_BUS_DEVICE(obj), 0,
+ sysbus_realize(SYS_BUS_DEVICE(sobj), &error_abort);
+ sysbus_mmio_map(SYS_BUS_DEVICE(sobj), 0, npcm7xx_smbus_addr[i]);
+ sysbus_connect_irq(SYS_BUS_DEVICE(sobj), 0,
npcm7xx_irq(s, NPCM7XX_SMBUS0_IRQ + i));
}
@@ -781,39 +782,39 @@ static void npcm7xx_realize(DeviceState *dev, Error **errp)
sysbus_connect_irq(sbd, 0, npcm7xx_irq(s, irq));
}
- create_unimplemented_device("npcm7xx.shm", 0xc0001000, 4 * KiB);
- create_unimplemented_device("npcm7xx.vdmx", 0xe0800000, 4 * KiB);
- create_unimplemented_device("npcm7xx.pcierc", 0xe1000000, 64 * KiB);
- create_unimplemented_device("npcm7xx.kcs", 0xf0007000, 4 * KiB);
- create_unimplemented_device("npcm7xx.gfxi", 0xf000e000, 4 * KiB);
- create_unimplemented_device("npcm7xx.espi", 0xf009f000, 4 * KiB);
- create_unimplemented_device("npcm7xx.peci", 0xf0100000, 4 * KiB);
- create_unimplemented_device("npcm7xx.siox[1]", 0xf0101000, 4 * KiB);
- create_unimplemented_device("npcm7xx.siox[2]", 0xf0102000, 4 * KiB);
- create_unimplemented_device("npcm7xx.ahbpci", 0xf0400000, 1 * MiB);
- create_unimplemented_device("npcm7xx.mcphy", 0xf05f0000, 64 * KiB);
- create_unimplemented_device("npcm7xx.vcd", 0xf0810000, 64 * KiB);
- create_unimplemented_device("npcm7xx.ece", 0xf0820000, 8 * KiB);
- create_unimplemented_device("npcm7xx.vdma", 0xf0822000, 8 * KiB);
- create_unimplemented_device("npcm7xx.usbd[0]", 0xf0830000, 4 * KiB);
- create_unimplemented_device("npcm7xx.usbd[1]", 0xf0831000, 4 * KiB);
- create_unimplemented_device("npcm7xx.usbd[2]", 0xf0832000, 4 * KiB);
- create_unimplemented_device("npcm7xx.usbd[3]", 0xf0833000, 4 * KiB);
- create_unimplemented_device("npcm7xx.usbd[4]", 0xf0834000, 4 * KiB);
- create_unimplemented_device("npcm7xx.usbd[5]", 0xf0835000, 4 * KiB);
- create_unimplemented_device("npcm7xx.usbd[6]", 0xf0836000, 4 * KiB);
- create_unimplemented_device("npcm7xx.usbd[7]", 0xf0837000, 4 * KiB);
- create_unimplemented_device("npcm7xx.usbd[8]", 0xf0838000, 4 * KiB);
- create_unimplemented_device("npcm7xx.usbd[9]", 0xf0839000, 4 * KiB);
- create_unimplemented_device("npcm7xx.sd", 0xf0840000, 8 * KiB);
- create_unimplemented_device("npcm7xx.pcimbx", 0xf0848000, 512 * KiB);
- create_unimplemented_device("npcm7xx.aes", 0xf0858000, 4 * KiB);
- create_unimplemented_device("npcm7xx.des", 0xf0859000, 4 * KiB);
- create_unimplemented_device("npcm7xx.sha", 0xf085a000, 4 * KiB);
- create_unimplemented_device("npcm7xx.secacc", 0xf085b000, 4 * KiB);
- create_unimplemented_device("npcm7xx.spixcs0", 0xf8000000, 16 * MiB);
- create_unimplemented_device("npcm7xx.spixcs1", 0xf9000000, 16 * MiB);
- create_unimplemented_device("npcm7xx.spix", 0xfb001000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.shm", 0xc0001000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.vdmx", 0xe0800000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.pcierc", 0xe1000000, 64 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.kcs", 0xf0007000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.gfxi", 0xf000e000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.espi", 0xf009f000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.peci", 0xf0100000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.siox[1]", 0xf0101000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.siox[2]", 0xf0102000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.ahbpci", 0xf0400000, 1 * MiB);
+ create_unimplemented_device(obj, "npcm7xx.mcphy", 0xf05f0000, 64 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.vcd", 0xf0810000, 64 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.ece", 0xf0820000, 8 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.vdma", 0xf0822000, 8 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.usbd[0]", 0xf0830000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.usbd[1]", 0xf0831000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.usbd[2]", 0xf0832000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.usbd[3]", 0xf0833000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.usbd[4]", 0xf0834000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.usbd[5]", 0xf0835000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.usbd[6]", 0xf0836000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.usbd[7]", 0xf0837000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.usbd[8]", 0xf0838000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.usbd[9]", 0xf0839000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.sd", 0xf0840000, 8 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.pcimbx", 0xf0848000, 512 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.aes", 0xf0858000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.des", 0xf0859000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.sha", 0xf085a000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.secacc", 0xf085b000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm7xx.spixcs0", 0xf8000000, 16 * MiB);
+ create_unimplemented_device(obj, "npcm7xx.spixcs1", 0xf9000000, 16 * MiB);
+ create_unimplemented_device(obj, "npcm7xx.spix", 0xfb001000, 4 * KiB);
}
static const Property npcm7xx_properties[] = {
diff --git a/hw/arm/npcm8xx.c b/hw/arm/npcm8xx.c
index 48fcc65a98..c7c371cac6 100644
--- a/hw/arm/npcm8xx.c
+++ b/hw/arm/npcm8xx.c
@@ -471,6 +471,7 @@ static void npcm8xx_init(Object *obj)
static void npcm8xx_realize(DeviceState *dev, Error **errp)
{
+ Object *obj = OBJECT(dev);
NPCM8xxState *s = NPCM8XX(dev);
NPCM8xxClass *nc = NPCM8XX_GET_CLASS(s);
int i;
@@ -614,30 +615,30 @@ static void npcm8xx_realize(DeviceState *dev, Error **errp)
/* GPIO modules. Cannot fail. */
QEMU_BUILD_BUG_ON(ARRAY_SIZE(npcm8xx_gpio) != ARRAY_SIZE(s->gpio));
for (i = 0; i < ARRAY_SIZE(s->gpio); i++) {
- Object *obj = OBJECT(&s->gpio[i]);
+ Object *gobj = OBJECT(&s->gpio[i]);
- object_property_set_uint(obj, "reset-pullup",
+ object_property_set_uint(gobj, "reset-pullup",
npcm8xx_gpio[i].reset_pu, &error_abort);
- object_property_set_uint(obj, "reset-pulldown",
+ object_property_set_uint(gobj, "reset-pulldown",
npcm8xx_gpio[i].reset_pd, &error_abort);
- object_property_set_uint(obj, "reset-osrc",
+ object_property_set_uint(gobj, "reset-osrc",
npcm8xx_gpio[i].reset_osrc, &error_abort);
- object_property_set_uint(obj, "reset-odsc",
+ object_property_set_uint(gobj, "reset-odsc",
npcm8xx_gpio[i].reset_odsc, &error_abort);
- sysbus_realize(SYS_BUS_DEVICE(obj), &error_abort);
- sysbus_mmio_map(SYS_BUS_DEVICE(obj), 0, npcm8xx_gpio[i].regs_addr);
- sysbus_connect_irq(SYS_BUS_DEVICE(obj), 0,
+ sysbus_realize(SYS_BUS_DEVICE(gobj), &error_abort);
+ sysbus_mmio_map(SYS_BUS_DEVICE(gobj), 0, npcm8xx_gpio[i].regs_addr);
+ sysbus_connect_irq(SYS_BUS_DEVICE(gobj), 0,
npcm8xx_irq(s, NPCM8XX_GPIO0_IRQ + i));
}
/* SMBus modules. Cannot fail. */
QEMU_BUILD_BUG_ON(ARRAY_SIZE(npcm8xx_smbus_addr) != ARRAY_SIZE(s->smbus));
for (i = 0; i < ARRAY_SIZE(s->smbus); i++) {
- Object *obj = OBJECT(&s->smbus[i]);
+ Object *sobj = OBJECT(&s->smbus[i]);
- sysbus_realize(SYS_BUS_DEVICE(obj), &error_abort);
- sysbus_mmio_map(SYS_BUS_DEVICE(obj), 0, npcm8xx_smbus_addr[i]);
- sysbus_connect_irq(SYS_BUS_DEVICE(obj), 0,
+ sysbus_realize(SYS_BUS_DEVICE(sobj), &error_abort);
+ sysbus_mmio_map(SYS_BUS_DEVICE(sobj), 0, npcm8xx_smbus_addr[i]);
+ sysbus_connect_irq(SYS_BUS_DEVICE(sobj), 0,
npcm8xx_irq(s, NPCM8XX_SMBUS0_IRQ + i));
}
@@ -766,66 +767,66 @@ static void npcm8xx_realize(DeviceState *dev, Error **errp)
sysbus_connect_irq(SYS_BUS_DEVICE(&s->pspi), 0,
npcm8xx_irq(s, NPCM8XX_PSPI_IRQ));
- create_unimplemented_device("npcm8xx.shm", 0xc0001000, 4 * KiB);
- create_unimplemented_device("npcm8xx.gicextra", 0xdfffa000, 24 * KiB);
- create_unimplemented_device("npcm8xx.vdmx", 0xe0800000, 4 * KiB);
- create_unimplemented_device("npcm8xx.pcierc", 0xe1000000, 64 * KiB);
- create_unimplemented_device("npcm8xx.rootc", 0xe8000000, 128 * MiB);
- create_unimplemented_device("npcm8xx.kcs", 0xf0007000, 4 * KiB);
- create_unimplemented_device("npcm8xx.gfxi", 0xf000e000, 4 * KiB);
- create_unimplemented_device("npcm8xx.fsw", 0xf000f000, 4 * KiB);
- create_unimplemented_device("npcm8xx.bt", 0xf0030000, 4 * KiB);
- create_unimplemented_device("npcm8xx.espi", 0xf009f000, 4 * KiB);
- create_unimplemented_device("npcm8xx.peci", 0xf0100000, 4 * KiB);
- create_unimplemented_device("npcm8xx.siox[1]", 0xf0101000, 4 * KiB);
- create_unimplemented_device("npcm8xx.siox[2]", 0xf0102000, 4 * KiB);
- create_unimplemented_device("npcm8xx.tmps", 0xf0188000, 4 * KiB);
- create_unimplemented_device("npcm8xx.viru1", 0xf0204000, 4 * KiB);
- create_unimplemented_device("npcm8xx.viru2", 0xf0205000, 4 * KiB);
- create_unimplemented_device("npcm8xx.jtm1", 0xf0208000, 4 * KiB);
- create_unimplemented_device("npcm8xx.jtm2", 0xf0209000, 4 * KiB);
- create_unimplemented_device("npcm8xx.flm0", 0xf0210000, 4 * KiB);
- create_unimplemented_device("npcm8xx.flm1", 0xf0211000, 4 * KiB);
- create_unimplemented_device("npcm8xx.flm2", 0xf0212000, 4 * KiB);
- create_unimplemented_device("npcm8xx.flm3", 0xf0213000, 4 * KiB);
- create_unimplemented_device("npcm8xx.ahbpci", 0xf0400000, 1 * MiB);
- create_unimplemented_device("npcm8xx.dap", 0xf0500000, 960 * KiB);
- create_unimplemented_device("npcm8xx.mcphy", 0xf05f0000, 64 * KiB);
- create_unimplemented_device("npcm8xx.tsgen", 0xf07fc000, 8 * KiB);
- create_unimplemented_device("npcm8xx.copctl", 0xf080c000, 4 * KiB);
- create_unimplemented_device("npcm8xx.tipctl", 0xf080d000, 4 * KiB);
- create_unimplemented_device("npcm8xx.rst", 0xf080e000, 4 * KiB);
- create_unimplemented_device("npcm8xx.vcd", 0xf0810000, 64 * KiB);
- create_unimplemented_device("npcm8xx.ece", 0xf0820000, 8 * KiB);
- create_unimplemented_device("npcm8xx.vdma", 0xf0822000, 8 * KiB);
- create_unimplemented_device("npcm8xx.usbd[0]", 0xf0830000, 4 * KiB);
- create_unimplemented_device("npcm8xx.usbd[1]", 0xf0831000, 4 * KiB);
- create_unimplemented_device("npcm8xx.usbd[2]", 0xf0832000, 4 * KiB);
- create_unimplemented_device("npcm8xx.usbd[3]", 0xf0833000, 4 * KiB);
- create_unimplemented_device("npcm8xx.usbd[4]", 0xf0834000, 4 * KiB);
- create_unimplemented_device("npcm8xx.usbd[5]", 0xf0835000, 4 * KiB);
- create_unimplemented_device("npcm8xx.usbd[6]", 0xf0836000, 4 * KiB);
- create_unimplemented_device("npcm8xx.usbd[7]", 0xf0837000, 4 * KiB);
- create_unimplemented_device("npcm8xx.usbd[8]", 0xf0838000, 4 * KiB);
- create_unimplemented_device("npcm8xx.usbd[9]", 0xf0839000, 4 * KiB);
- create_unimplemented_device("npcm8xx.pci_mbox1", 0xf0848000, 64 * KiB);
- create_unimplemented_device("npcm8xx.gdma0", 0xf0850000, 4 * KiB);
- create_unimplemented_device("npcm8xx.gdma1", 0xf0851000, 4 * KiB);
- create_unimplemented_device("npcm8xx.gdma2", 0xf0852000, 4 * KiB);
- create_unimplemented_device("npcm8xx.aes", 0xf0858000, 4 * KiB);
- create_unimplemented_device("npcm8xx.des", 0xf0859000, 4 * KiB);
- create_unimplemented_device("npcm8xx.sha", 0xf085a000, 4 * KiB);
- create_unimplemented_device("npcm8xx.pci_mbox2", 0xf0868000, 64 * KiB);
- create_unimplemented_device("npcm8xx.i3c0", 0xfff10000, 4 * KiB);
- create_unimplemented_device("npcm8xx.i3c1", 0xfff11000, 4 * KiB);
- create_unimplemented_device("npcm8xx.i3c2", 0xfff12000, 4 * KiB);
- create_unimplemented_device("npcm8xx.i3c3", 0xfff13000, 4 * KiB);
- create_unimplemented_device("npcm8xx.i3c4", 0xfff14000, 4 * KiB);
- create_unimplemented_device("npcm8xx.i3c5", 0xfff15000, 4 * KiB);
- create_unimplemented_device("npcm8xx.spixcs0", 0xf8000000, 16 * MiB);
- create_unimplemented_device("npcm8xx.spixcs1", 0xf9000000, 16 * MiB);
- create_unimplemented_device("npcm8xx.spix", 0xfb001000, 4 * KiB);
- create_unimplemented_device("npcm8xx.vect", 0xffff0000, 256);
+ create_unimplemented_device(obj, "npcm8xx.shm", 0xc0001000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.gicextra", 0xdfffa000, 24 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.vdmx", 0xe0800000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.pcierc", 0xe1000000, 64 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.rootc", 0xe8000000, 128 * MiB);
+ create_unimplemented_device(obj, "npcm8xx.kcs", 0xf0007000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.gfxi", 0xf000e000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.fsw", 0xf000f000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.bt", 0xf0030000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.espi", 0xf009f000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.peci", 0xf0100000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.siox[1]", 0xf0101000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.siox[2]", 0xf0102000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.tmps", 0xf0188000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.viru1", 0xf0204000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.viru2", 0xf0205000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.jtm1", 0xf0208000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.jtm2", 0xf0209000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.flm0", 0xf0210000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.flm1", 0xf0211000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.flm2", 0xf0212000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.flm3", 0xf0213000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.ahbpci", 0xf0400000, 1 * MiB);
+ create_unimplemented_device(obj, "npcm8xx.dap", 0xf0500000, 960 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.mcphy", 0xf05f0000, 64 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.tsgen", 0xf07fc000, 8 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.copctl", 0xf080c000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.tipctl", 0xf080d000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.rst", 0xf080e000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.vcd", 0xf0810000, 64 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.ece", 0xf0820000, 8 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.vdma", 0xf0822000, 8 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.usbd[0]", 0xf0830000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.usbd[1]", 0xf0831000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.usbd[2]", 0xf0832000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.usbd[3]", 0xf0833000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.usbd[4]", 0xf0834000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.usbd[5]", 0xf0835000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.usbd[6]", 0xf0836000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.usbd[7]", 0xf0837000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.usbd[8]", 0xf0838000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.usbd[9]", 0xf0839000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.pci_mbox1", 0xf0848000, 64 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.gdma0", 0xf0850000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.gdma1", 0xf0851000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.gdma2", 0xf0852000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.aes", 0xf0858000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.des", 0xf0859000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.sha", 0xf085a000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.pci_mbox2", 0xf0868000, 64 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.i3c0", 0xfff10000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.i3c1", 0xfff11000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.i3c2", 0xfff12000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.i3c3", 0xfff13000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.i3c4", 0xfff14000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.i3c5", 0xfff15000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.spixcs0", 0xf8000000, 16 * MiB);
+ create_unimplemented_device(obj, "npcm8xx.spixcs1", 0xf9000000, 16 * MiB);
+ create_unimplemented_device(obj, "npcm8xx.spix", 0xfb001000, 4 * KiB);
+ create_unimplemented_device(obj, "npcm8xx.vect", 0xffff0000, 256);
}
static const Property npcm8xx_properties[] = {
diff --git a/hw/arm/nrf51_soc.c b/hw/arm/nrf51_soc.c
index 8d8ea71da4..f75b742242 100644
--- a/hw/arm/nrf51_soc.c
+++ b/hw/arm/nrf51_soc.c
@@ -171,9 +171,9 @@ static void nrf51_soc_realize(DeviceState *dev_soc, Error **errp)
memory_region_add_subregion_overlap(&s->container,
NRF51_IOMEM_BASE, &s->clock, -1);
- create_unimplemented_device("nrf51_soc.io", NRF51_IOMEM_BASE,
+ create_unimplemented_device(OBJECT(dev_soc), "nrf51_soc.io", NRF51_IOMEM_BASE,
NRF51_IOMEM_SIZE);
- create_unimplemented_device("nrf51_soc.private",
+ create_unimplemented_device(OBJECT(dev_soc), "nrf51_soc.private",
NRF51_PRIVATE_BASE, NRF51_PRIVATE_SIZE);
}
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index b2ff6f4d97..6a732a3c11 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -1381,12 +1381,12 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
/* Add dummy regions for the devices we don't implement yet,
* so guest accesses don't cause unlogged crashes.
*/
- create_unimplemented_device("PWM", 0x40028000, 0x1000);
- create_unimplemented_device("QEI-0", 0x4002c000, 0x1000);
- create_unimplemented_device("QEI-1", 0x4002d000, 0x1000);
- create_unimplemented_device("analogue-comparator", 0x4003c000, 0x1000);
- create_unimplemented_device("hibernation", 0x400fc000, 0x1000);
- create_unimplemented_device("flash-control", 0x400fd000, 0x1000);
+ create_unimplemented_device(OBJECT(ms), "PWM", 0x40028000, 0x1000);
+ create_unimplemented_device(OBJECT(ms), "QEI-0", 0x4002c000, 0x1000);
+ create_unimplemented_device(OBJECT(ms), "QEI-1", 0x4002d000, 0x1000);
+ create_unimplemented_device(OBJECT(ms), "analogue-comparator", 0x4003c000, 0x1000);
+ create_unimplemented_device(OBJECT(ms), "hibernation", 0x400fc000, 0x1000);
+ create_unimplemented_device(OBJECT(ms), "flash-control", 0x400fd000, 0x1000);
armv7m_load_kernel(ARMV7M(armv7m)->cpu, ms->kernel_filename, 0, flash_size);
}
diff --git a/hw/arm/stm32f100_soc.c b/hw/arm/stm32f100_soc.c
index 2358368dba..e9e722f359 100644
--- a/hw/arm/stm32f100_soc.c
+++ b/hw/arm/stm32f100_soc.c
@@ -149,36 +149,36 @@ static void stm32f100_soc_realize(DeviceState *dev_soc, Error **errp)
sysbus_connect_irq(busdev, 0, qdev_get_gpio_in(armv7m, spi_irq[i]));
}
- create_unimplemented_device("timer[2]", 0x40000000, 0x400);
- create_unimplemented_device("timer[3]", 0x40000400, 0x400);
- create_unimplemented_device("timer[4]", 0x40000800, 0x400);
- create_unimplemented_device("timer[6]", 0x40001000, 0x400);
- create_unimplemented_device("timer[7]", 0x40001400, 0x400);
- create_unimplemented_device("RTC", 0x40002800, 0x400);
- create_unimplemented_device("WWDG", 0x40002C00, 0x400);
- create_unimplemented_device("IWDG", 0x40003000, 0x400);
- create_unimplemented_device("I2C1", 0x40005400, 0x400);
- create_unimplemented_device("I2C2", 0x40005800, 0x400);
- create_unimplemented_device("BKP", 0x40006C00, 0x400);
- create_unimplemented_device("PWR", 0x40007000, 0x400);
- create_unimplemented_device("DAC", 0x40007400, 0x400);
- create_unimplemented_device("CEC", 0x40007800, 0x400);
- create_unimplemented_device("AFIO", 0x40010000, 0x400);
- create_unimplemented_device("EXTI", 0x40010400, 0x400);
- create_unimplemented_device("GPIOA", 0x40010800, 0x400);
- create_unimplemented_device("GPIOB", 0x40010C00, 0x400);
- create_unimplemented_device("GPIOC", 0x40011000, 0x400);
- create_unimplemented_device("GPIOD", 0x40011400, 0x400);
- create_unimplemented_device("GPIOE", 0x40011800, 0x400);
- create_unimplemented_device("ADC1", 0x40012400, 0x400);
- create_unimplemented_device("timer[1]", 0x40012C00, 0x400);
- create_unimplemented_device("timer[15]", 0x40014000, 0x400);
- create_unimplemented_device("timer[16]", 0x40014400, 0x400);
- create_unimplemented_device("timer[17]", 0x40014800, 0x400);
- create_unimplemented_device("DMA", 0x40020000, 0x400);
- create_unimplemented_device("RCC", 0x40021000, 0x400);
- create_unimplemented_device("Flash Int", 0x40022000, 0x400);
- create_unimplemented_device("CRC", 0x40023000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer[2]", 0x40000000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer[3]", 0x40000400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer[4]", 0x40000800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer[6]", 0x40001000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer[7]", 0x40001400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "RTC", 0x40002800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "WWDG", 0x40002C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "IWDG", 0x40003000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "I2C1", 0x40005400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "I2C2", 0x40005800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "BKP", 0x40006C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "PWR", 0x40007000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "DAC", 0x40007400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "CEC", 0x40007800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "AFIO", 0x40010000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "EXTI", 0x40010400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "GPIOA", 0x40010800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "GPIOB", 0x40010C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "GPIOC", 0x40011000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "GPIOD", 0x40011400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "GPIOE", 0x40011800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "ADC1", 0x40012400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer[1]", 0x40012C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer[15]", 0x40014000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer[16]", 0x40014400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer[17]", 0x40014800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "DMA", 0x40020000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "RCC", 0x40021000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "Flash Int", 0x40022000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "CRC", 0x40023000, 0x400);
}
static void stm32f100_soc_class_init(ObjectClass *klass, const void *data)
diff --git a/hw/arm/stm32f405_soc.c b/hw/arm/stm32f405_soc.c
index c2bc460603..dc9b3053a5 100644
--- a/hw/arm/stm32f405_soc.c
+++ b/hw/arm/stm32f405_soc.c
@@ -254,48 +254,48 @@ static void stm32f405_soc_realize(DeviceState *dev_soc, Error **errp)
qdev_connect_gpio_out(DEVICE(&s->syscfg), i, qdev_get_gpio_in(dev, i));
}
- create_unimplemented_device("timer[7]", 0x40001400, 0x400);
- create_unimplemented_device("timer[12]", 0x40001800, 0x400);
- create_unimplemented_device("timer[6]", 0x40001000, 0x400);
- create_unimplemented_device("timer[13]", 0x40001C00, 0x400);
- create_unimplemented_device("timer[14]", 0x40002000, 0x400);
- create_unimplemented_device("RTC and BKP", 0x40002800, 0x400);
- create_unimplemented_device("WWDG", 0x40002C00, 0x400);
- create_unimplemented_device("IWDG", 0x40003000, 0x400);
- create_unimplemented_device("I2S2ext", 0x40003000, 0x400);
- create_unimplemented_device("I2S3ext", 0x40004000, 0x400);
- create_unimplemented_device("I2C1", 0x40005400, 0x400);
- create_unimplemented_device("I2C2", 0x40005800, 0x400);
- create_unimplemented_device("I2C3", 0x40005C00, 0x400);
- create_unimplemented_device("CAN1", 0x40006400, 0x400);
- create_unimplemented_device("CAN2", 0x40006800, 0x400);
- create_unimplemented_device("PWR", 0x40007000, 0x400);
- create_unimplemented_device("DAC", 0x40007400, 0x400);
- create_unimplemented_device("timer[1]", 0x40010000, 0x400);
- create_unimplemented_device("timer[8]", 0x40010400, 0x400);
- create_unimplemented_device("SDIO", 0x40012C00, 0x400);
- create_unimplemented_device("timer[9]", 0x40014000, 0x400);
- create_unimplemented_device("timer[10]", 0x40014400, 0x400);
- create_unimplemented_device("timer[11]", 0x40014800, 0x400);
- create_unimplemented_device("GPIOA", 0x40020000, 0x400);
- create_unimplemented_device("GPIOB", 0x40020400, 0x400);
- create_unimplemented_device("GPIOC", 0x40020800, 0x400);
- create_unimplemented_device("GPIOD", 0x40020C00, 0x400);
- create_unimplemented_device("GPIOE", 0x40021000, 0x400);
- create_unimplemented_device("GPIOF", 0x40021400, 0x400);
- create_unimplemented_device("GPIOG", 0x40021800, 0x400);
- create_unimplemented_device("GPIOH", 0x40021C00, 0x400);
- create_unimplemented_device("GPIOI", 0x40022000, 0x400);
- create_unimplemented_device("CRC", 0x40023000, 0x400);
- create_unimplemented_device("Flash Int", 0x40023C00, 0x400);
- create_unimplemented_device("BKPSRAM", 0x40024000, 0x400);
- create_unimplemented_device("DMA1", 0x40026000, 0x400);
- create_unimplemented_device("DMA2", 0x40026400, 0x400);
- create_unimplemented_device("Ethernet", 0x40028000, 0x1400);
- create_unimplemented_device("USB OTG HS", 0x40040000, 0x30000);
- create_unimplemented_device("USB OTG FS", 0x50000000, 0x31000);
- create_unimplemented_device("DCMI", 0x50050000, 0x400);
- create_unimplemented_device("RNG", 0x50060800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[7]", 0x40001400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[12]", 0x40001800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[6]", 0x40001000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[13]", 0x40001C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[14]", 0x40002000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "RTC and BKP", 0x40002800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "WWDG", 0x40002C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "IWDG", 0x40003000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "I2S2ext", 0x40003000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "I2S3ext", 0x40004000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "I2C1", 0x40005400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "I2C2", 0x40005800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "I2C3", 0x40005C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "CAN1", 0x40006400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "CAN2", 0x40006800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "PWR", 0x40007000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "DAC", 0x40007400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[1]", 0x40010000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[8]", 0x40010400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "SDIO", 0x40012C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[9]", 0x40014000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[10]", 0x40014400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "timer-unimp[11]", 0x40014800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "GPIOA", 0x40020000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "GPIOB", 0x40020400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "GPIOC", 0x40020800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "GPIOD", 0x40020C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "GPIOE", 0x40021000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "GPIOF", 0x40021400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "GPIOG", 0x40021800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "GPIOH", 0x40021C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "GPIOI", 0x40022000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "CRC", 0x40023000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "Flash Int", 0x40023C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "BKPSRAM", 0x40024000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "DMA1", 0x40026000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "DMA2", 0x40026400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "Ethernet", 0x40028000, 0x1400);
+ create_unimplemented_device(OBJECT(dev_soc), "USB OTG HS", 0x40040000, 0x30000);
+ create_unimplemented_device(OBJECT(dev_soc), "USB OTG FS", 0x50000000, 0x31000);
+ create_unimplemented_device(OBJECT(dev_soc), "DCMI", 0x50050000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "RNG", 0x50060800, 0x400);
}
static void stm32f405_soc_class_init(ObjectClass *klass, const void *data)
diff --git a/hw/arm/stm32l4x5_soc.c b/hw/arm/stm32l4x5_soc.c
index 39b8cdf97d..d94ef49217 100644
--- a/hw/arm/stm32l4x5_soc.c
+++ b/hw/arm/stm32l4x5_soc.c
@@ -359,80 +359,80 @@ static void stm32l4x5_soc_realize(DeviceState *dev_soc, Error **errp)
EXTI_LPUART1_IRQ));
/* APB1 BUS */
- create_unimplemented_device("TIM2", 0x40000000, 0x400);
- create_unimplemented_device("TIM3", 0x40000400, 0x400);
- create_unimplemented_device("TIM4", 0x40000800, 0x400);
- create_unimplemented_device("TIM5", 0x40000C00, 0x400);
- create_unimplemented_device("TIM6", 0x40001000, 0x400);
- create_unimplemented_device("TIM7", 0x40001400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "TIM2", 0x40000000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "TIM3", 0x40000400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "TIM4", 0x40000800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "TIM5", 0x40000C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "TIM6", 0x40001000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "TIM7", 0x40001400, 0x400);
/* RESERVED: 0x40001800, 0x1000 */
- create_unimplemented_device("RTC", 0x40002800, 0x400);
- create_unimplemented_device("WWDG", 0x40002C00, 0x400);
- create_unimplemented_device("IWDG", 0x40003000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "RTC", 0x40002800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "WWDG", 0x40002C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "IWDG", 0x40003000, 0x400);
/* RESERVED: 0x40001800, 0x400 */
- create_unimplemented_device("SPI2", 0x40003800, 0x400);
- create_unimplemented_device("SPI3", 0x40003C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "SPI2", 0x40003800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "SPI3", 0x40003C00, 0x400);
/* RESERVED: 0x40004000, 0x400 */
- create_unimplemented_device("I2C1", 0x40005400, 0x400);
- create_unimplemented_device("I2C2", 0x40005800, 0x400);
- create_unimplemented_device("I2C3", 0x40005C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "I2C1", 0x40005400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "I2C2", 0x40005800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "I2C3", 0x40005C00, 0x400);
/* RESERVED: 0x40006000, 0x400 */
- create_unimplemented_device("CAN1", 0x40006400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "CAN1", 0x40006400, 0x400);
/* RESERVED: 0x40006800, 0x400 */
- create_unimplemented_device("PWR", 0x40007000, 0x400);
- create_unimplemented_device("DAC1", 0x40007400, 0x400);
- create_unimplemented_device("OPAMP", 0x40007800, 0x400);
- create_unimplemented_device("LPTIM1", 0x40007C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "PWR", 0x40007000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "DAC1", 0x40007400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "OPAMP", 0x40007800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "LPTIM1", 0x40007C00, 0x400);
/* RESERVED: 0x40008400, 0x400 */
- create_unimplemented_device("SWPMI1", 0x40008800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "SWPMI1", 0x40008800, 0x400);
/* RESERVED: 0x40008C00, 0x800 */
- create_unimplemented_device("LPTIM2", 0x40009400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "LPTIM2", 0x40009400, 0x400);
/* RESERVED: 0x40009800, 0x6800 */
/* APB2 BUS */
- create_unimplemented_device("VREFBUF", 0x40010030, 0x1D0);
- create_unimplemented_device("COMP", 0x40010200, 0x200);
+ create_unimplemented_device(OBJECT(dev_soc), "VREFBUF", 0x40010030, 0x1D0);
+ create_unimplemented_device(OBJECT(dev_soc), "COMP", 0x40010200, 0x200);
/* RESERVED: 0x40010800, 0x1400 */
- create_unimplemented_device("FIREWALL", 0x40011C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "FIREWALL", 0x40011C00, 0x400);
/* RESERVED: 0x40012000, 0x800 */
- create_unimplemented_device("SDMMC1", 0x40012800, 0x400);
- create_unimplemented_device("TIM1", 0x40012C00, 0x400);
- create_unimplemented_device("SPI1", 0x40013000, 0x400);
- create_unimplemented_device("TIM8", 0x40013400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "SDMMC1", 0x40012800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "TIM1", 0x40012C00, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "SPI1", 0x40013000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "TIM8", 0x40013400, 0x400);
/* RESERVED: 0x40013C00, 0x400 */
- create_unimplemented_device("TIM15", 0x40014000, 0x400);
- create_unimplemented_device("TIM16", 0x40014400, 0x400);
- create_unimplemented_device("TIM17", 0x40014800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "TIM15", 0x40014000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "TIM16", 0x40014400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "TIM17", 0x40014800, 0x400);
/* RESERVED: 0x40014C00, 0x800 */
- create_unimplemented_device("SAI1", 0x40015400, 0x400);
- create_unimplemented_device("SAI2", 0x40015800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "SAI1", 0x40015400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "SAI2", 0x40015800, 0x400);
/* RESERVED: 0x40015C00, 0x400 */
- create_unimplemented_device("DFSDM1", 0x40016000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "DFSDM1", 0x40016000, 0x400);
/* RESERVED: 0x40016400, 0x9C00 */
/* AHB1 BUS */
- create_unimplemented_device("DMA1", 0x40020000, 0x400);
- create_unimplemented_device("DMA2", 0x40020400, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "DMA1", 0x40020000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "DMA2", 0x40020400, 0x400);
/* RESERVED: 0x40020800, 0x800 */
/* RESERVED: 0x40021400, 0xC00 */
- create_unimplemented_device("FLASH", 0x40022000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "FLASH", 0x40022000, 0x400);
/* RESERVED: 0x40022400, 0xC00 */
- create_unimplemented_device("CRC", 0x40023000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "CRC", 0x40023000, 0x400);
/* RESERVED: 0x40023400, 0x400 */
- create_unimplemented_device("TSC", 0x40024000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "TSC", 0x40024000, 0x400);
/* RESERVED: 0x40024400, 0x7FDBC00 */
/* AHB2 BUS */
/* RESERVED: 0x48002000, 0x7FDBC00 */
- create_unimplemented_device("OTG_FS", 0x50000000, 0x40000);
- create_unimplemented_device("ADC", 0x50040000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "OTG_FS", 0x50000000, 0x40000);
+ create_unimplemented_device(OBJECT(dev_soc), "ADC", 0x50040000, 0x400);
/* RESERVED: 0x50040400, 0x20400 */
- create_unimplemented_device("RNG", 0x50060800, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "RNG", 0x50060800, 0x400);
/* AHB3 BUS */
- create_unimplemented_device("FMC", 0xA0000000, 0x1000);
- create_unimplemented_device("QUADSPI", 0xA0001000, 0x400);
+ create_unimplemented_device(OBJECT(dev_soc), "FMC", 0xA0000000, 0x1000);
+ create_unimplemented_device(OBJECT(dev_soc), "QUADSPI", 0xA0001000, 0x400);
}
static void stm32l4x5_soc_class_init(ObjectClass *klass, const void *data)
diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c
index 378ab532a3..30f0ce5b5f 100644
--- a/hw/arm/xilinx_zynq.c
+++ b/hw/arm/xilinx_zynq.c
@@ -205,6 +205,7 @@ static void ddr_ctrl_init(Object *parent, uint32_t base)
static void zynq_init(MachineState *machine)
{
+ Object *obj = OBJECT(machine);
ZynqMachineState *zynq_machine = ZYNQ_MACHINE(machine);
MemoryRegion *address_space_mem = get_system_memory();
MemoryRegion *ocm_ram = g_new(MemoryRegion, 1);
@@ -390,67 +391,67 @@ static void zynq_init(MachineState *machine)
* Refer to the ug585-Zynq-7000-TRM manual B.3 (Module Summary) and
* the zynq-7000.dtsi. Add placeholders for unimplemented devices.
*/
- create_unimplemented_device("zynq.i2c0", 0xE0004000, 4 * KiB);
- create_unimplemented_device("zynq.i2c1", 0xE0005000, 4 * KiB);
- create_unimplemented_device("zynq.can0", 0xE0008000, 4 * KiB);
- create_unimplemented_device("zynq.can1", 0xE0009000, 4 * KiB);
- create_unimplemented_device("zynq.gpio", 0xE000A000, 4 * KiB);
- create_unimplemented_device("zynq.smcc", 0xE000E000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.i2c0", 0xE0004000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.i2c1", 0xE0005000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.can0", 0xE0008000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.can1", 0xE0009000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.gpio", 0xE000A000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.smcc", 0xE000E000, 4 * KiB);
/* Direct Memory Access Controller, PL330, Non-Secure Mode */
- create_unimplemented_device("zynq.dma_ns", 0xF8004000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.dma_ns", 0xF8004000, 4 * KiB);
/* System Watchdog Timer Registers */
- create_unimplemented_device("zynq.swdt", 0xF8005000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.swdt", 0xF8005000, 4 * KiB);
/* AXI_HP Interface (AFI) */
- create_unimplemented_device("zynq.axi_hp0", 0xF8008000, 0x28);
- create_unimplemented_device("zynq.axi_hp1", 0xF8009000, 0x28);
- create_unimplemented_device("zynq.axi_hp2", 0xF800A000, 0x28);
- create_unimplemented_device("zynq.axi_hp3", 0xF800B000, 0x28);
+ create_unimplemented_device(obj, "zynq.axi_hp0", 0xF8008000, 0x28);
+ create_unimplemented_device(obj, "zynq.axi_hp1", 0xF8009000, 0x28);
+ create_unimplemented_device(obj, "zynq.axi_hp2", 0xF800A000, 0x28);
+ create_unimplemented_device(obj, "zynq.axi_hp3", 0xF800B000, 0x28);
- create_unimplemented_device("zynq.efuse", 0xF800d000, 0x20);
+ create_unimplemented_device(obj, "zynq.efuse", 0xF800d000, 0x20);
/* Embedded Trace Buffer */
- create_unimplemented_device("zynq.etb", 0xF8801000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.etb", 0xF8801000, 4 * KiB);
/* Cross Trigger Interface, ETB and TPIU */
- create_unimplemented_device("zynq.cti_etb_tpiu", 0xF8802000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.cti_etb_tpiu", 0xF8802000, 4 * KiB);
/* Trace Port Interface Unit */
- create_unimplemented_device("zynq.tpiu", 0xF8803000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.tpiu", 0xF8803000, 4 * KiB);
/* CoreSight Trace Funnel */
- create_unimplemented_device("zynq.funnel", 0xF8804000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.funnel", 0xF8804000, 4 * KiB);
/* Instrumentation Trace Macrocell */
- create_unimplemented_device("zynq.itm", 0xF8805000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.itm", 0xF8805000, 4 * KiB);
/* Cross Trigger Interface, FTM */
- create_unimplemented_device("zynq.cti_ftm", 0xF8809000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.cti_ftm", 0xF8809000, 4 * KiB);
/* Fabric Trace Macrocell */
- create_unimplemented_device("zynq.ftm", 0xF880B000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.ftm", 0xF880B000, 4 * KiB);
/* Cortex A9 Performance Monitoring Unit, CPU */
- create_unimplemented_device("cortex-a9.pmu0", 0xF8891000, 4 * KiB);
- create_unimplemented_device("cortex-a9.pmu1", 0xF8893000, 4 * KiB);
+ create_unimplemented_device(obj, "cortex-a9.pmu0", 0xF8891000, 4 * KiB);
+ create_unimplemented_device(obj, "cortex-a9.pmu1", 0xF8893000, 4 * KiB);
/* Cross Trigger Interface, CPU */
- create_unimplemented_device("zynq.cpu_cti0", 0xF8898000, 4 * KiB);
- create_unimplemented_device("zynq.cpu_cti1", 0xF8899000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.cpu_cti0", 0xF8898000, 4 * KiB);
+ create_unimplemented_device(obj, "zynq.cpu_cti1", 0xF8899000, 4 * KiB);
/* CoreSight PTM-A9, CPU */
- create_unimplemented_device("cortex-a9.ptm0", 0xF889c000, 4 * KiB);
- create_unimplemented_device("cortex-a9.ptm1", 0xF889d000, 4 * KiB);
+ create_unimplemented_device(obj, "cortex-a9.ptm0", 0xF889c000, 4 * KiB);
+ create_unimplemented_device(obj, "cortex-a9.ptm1", 0xF889d000, 4 * KiB);
/* AMBA NIC301 TrustZone */
- create_unimplemented_device("zynq.trustZone", 0xF8900000, 0x20);
+ create_unimplemented_device(obj, "zynq.trustZone", 0xF8900000, 0x20);
/* AMBA Network Interconnect Advanced Quality of Service (QoS-301) */
- create_unimplemented_device("zynq.qos301_cpu", 0xF8946000, 0x130);
- create_unimplemented_device("zynq.qos301_dmac", 0xF8947000, 0x130);
- create_unimplemented_device("zynq.qos301_iou", 0xF8948000, 0x130);
+ create_unimplemented_device(obj, "zynq.qos301_cpu", 0xF8946000, 0x130);
+ create_unimplemented_device(obj, "zynq.qos301_dmac", 0xF8947000, 0x130);
+ create_unimplemented_device(obj, "zynq.qos301_iou", 0xF8948000, 0x130);
zynq_binfo.ram_size = machine->ram_size;
zynq_binfo.board_id = 0xd32;
diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c
index 5eb640f628..b124db001f 100644
--- a/hw/avr/atmega.c
+++ b/hw/avr/atmega.c
@@ -312,7 +312,7 @@ static void atmega_realize(DeviceState *dev, Error **errp)
continue;
}
devname = g_strdup_printf("atmega-gpio-%c", 'a' + (char)i);
- create_unimplemented_device(devname,
+ create_unimplemented_device(OBJECT(dev), devname,
OFFSET_DATA + mc->dev[idx].addr, 3);
g_free(devname);
}
@@ -344,12 +344,12 @@ static void atmega_realize(DeviceState *dev, Error **errp)
continue;
}
if (!mc->dev[idx].is_timer16) {
- create_unimplemented_device("avr-timer8",
+ create_unimplemented_device(OBJECT(dev), "avr-timer8",
OFFSET_DATA + mc->dev[idx].addr, 5);
- create_unimplemented_device("avr-timer8-intmask",
+ create_unimplemented_device(OBJECT(dev), "avr-timer8-intmask",
OFFSET_DATA
+ mc->dev[idx].intmask_addr, 1);
- create_unimplemented_device("avr-timer8-intflag",
+ create_unimplemented_device(OBJECT(dev), "avr-timer8-intflag",
OFFSET_DATA
+ mc->dev[idx].intflag_addr, 1);
continue;
@@ -373,12 +373,12 @@ static void atmega_realize(DeviceState *dev, Error **errp)
g_free(devname);
}
- create_unimplemented_device("avr-twi", OFFSET_DATA + 0x0b8, 6);
- create_unimplemented_device("avr-adc", OFFSET_DATA + 0x078, 8);
- create_unimplemented_device("avr-ext-mem-ctrl", OFFSET_DATA + 0x074, 2);
- create_unimplemented_device("avr-watchdog", OFFSET_DATA + 0x060, 1);
- create_unimplemented_device("avr-spi", OFFSET_DATA + 0x04c, 3);
- create_unimplemented_device("avr-eeprom", OFFSET_DATA + 0x03f, 3);
+ create_unimplemented_device(OBJECT(dev), "avr-twi", OFFSET_DATA + 0x0b8, 6);
+ create_unimplemented_device(OBJECT(dev), "avr-adc", OFFSET_DATA + 0x078, 8);
+ create_unimplemented_device(OBJECT(dev), "avr-ext-mem-ctrl", OFFSET_DATA + 0x074, 2);
+ create_unimplemented_device(OBJECT(dev), "avr-watchdog", OFFSET_DATA + 0x060, 1);
+ create_unimplemented_device(OBJECT(dev), "avr-spi", OFFSET_DATA + 0x04c, 3);
+ create_unimplemented_device(OBJECT(dev), "avr-eeprom", OFFSET_DATA + 0x03f, 3);
}
static const Property atmega_props[] = {
diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
index 20a68ebd44..24d8dc6e57 100644
--- a/hw/loongarch/virt.c
+++ b/hw/loongarch/virt.c
@@ -483,7 +483,7 @@ static void virt_devices_init(DeviceState *pch_pic,
* There are some invalid guest memory access.
* Create some unimplemented devices to emulate this.
*/
- create_unimplemented_device("pci-dma-cfg", 0x1001041c, 0x4);
+ create_unimplemented_device(OBJECT(lvms), "pci-dma-cfg", 0x1001041c, 0x4);
sysbus_create_simple(OBJECT(lvms), "rtc", "ls7a_rtc", VIRT_RTC_REG_BASE,
qdev_get_gpio_in(pch_pic,
VIRT_RTC_IRQ - VIRT_GSI_BASE));
diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petalogix_s3adsp1800_mmu.c
index 0979d3632b..6986eb7732 100644
--- a/hw/microblaze/petalogix_s3adsp1800_mmu.c
+++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c
@@ -144,7 +144,7 @@ petalogix_s3adsp1800_init(MachineState *machine)
sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, ETHLITE_BASEADDR);
sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[ETHLITE_IRQ]);
- create_unimplemented_device("xps_gpio", GPIO_BASEADDR, 0x10000);
+ create_unimplemented_device(OBJECT(machine), "xps_gpio", GPIO_BASEADDR, 0x10000);
microblaze_load_kernel(cpu, endianness == ENDIAN_MODE_LITTLE, ddr_base,
ram_size, machine->initrd_filename,
diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c
index 99d2016ef1..8d8430562c 100644
--- a/hw/mips/loongson3_virt.c
+++ b/hw/mips/loongson3_virt.c
@@ -478,6 +478,7 @@ static inline void loongson3_virt_devices_init(MachineState *machine,
static void mips_loongson3_virt_init(MachineState *machine)
{
+ Object *obj = OBJECT(machine);
int i;
long bios_size;
MIPSCPU *cpu = NULL;
@@ -515,8 +516,8 @@ static void mips_loongson3_virt_init(MachineState *machine)
* exception when accessing invalid memory. Create some unimplememted
* devices to emulate this feature.
*/
- create_unimplemented_device("mmio fallback 0", 0x10000000, 256 * MiB);
- create_unimplemented_device("mmio fallback 1", 0x30000000, 256 * MiB);
+ create_unimplemented_device(obj, "mmio fallback 0", 0x10000000, 256 * MiB);
+ create_unimplemented_device(obj, "mmio fallback 1", 0x30000000, 256 * MiB);
memory_region_init(iocsr, OBJECT(machine), "loongson3.iocsr", UINT32_MAX);
diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c
index 83b328840a..7b4259c0e7 100644
--- a/hw/pci-host/bonito.c
+++ b/hw/pci-host/bonito.c
@@ -647,7 +647,7 @@ static void bonito_host_realize(DeviceState *dev, Error **errp)
g_free(name);
}
- create_unimplemented_device("pci.io", BONITO_PCIIO_BASE, 1 * MiB);
+ create_unimplemented_device(OBJECT(dev), "pci.io", BONITO_PCIIO_BASE, 1 * MiB);
}
static void bonito_pci_realize(PCIDevice *dev, Error **errp)
@@ -681,7 +681,7 @@ static void bonito_pci_realize(PCIDevice *dev, Error **errp)
memory_region_add_subregion(host_mem, BONITO_SPCICONFIG_BASE,
&phb->data_mem);
- create_unimplemented_device("bonito", BONITO_REG_BASE, BONITO_REG_SIZE);
+ create_unimplemented_device(OBJECT(dev), "bonito", BONITO_REG_BASE, BONITO_REG_SIZE);
memory_region_init_io(&s->iomem_ldma, OBJECT(s), &bonito_ldma_ops, s,
"ldma", 0x100);
@@ -692,7 +692,7 @@ static void bonito_pci_realize(PCIDevice *dev, Error **errp)
"cop", 0x100);
memory_region_add_subregion(host_mem, 0x1fe00300, &s->iomem_cop);
- create_unimplemented_device("ROMCS", BONITO_FLASH_BASE, 60 * MiB);
+ create_unimplemented_device(OBJECT(dev), "ROMCS", BONITO_FLASH_BASE, 60 * MiB);
/* Map PCI IO Space 0x1fd0 0000 - 0x1fd1 0000 */
memory_region_init_alias(&s->bonito_pciio, OBJECT(s), "isa_mmio",
@@ -706,17 +706,17 @@ static void bonito_pci_realize(PCIDevice *dev, Error **errp)
get_system_io(), 0, 256 * KiB);
memory_region_add_subregion(host_mem, BONITO_DEV_BASE,
&s->bonito_localio);
- create_unimplemented_device("IOCS[1]", BONITO_DEV_BASE + 1 * 256 * KiB,
+ create_unimplemented_device(OBJECT(dev), "IOCS[1]", BONITO_DEV_BASE + 1 * 256 * KiB,
256 * KiB);
- create_unimplemented_device("IOCS[2]", BONITO_DEV_BASE + 2 * 256 * KiB,
+ create_unimplemented_device(OBJECT(dev), "IOCS[2]", BONITO_DEV_BASE + 2 * 256 * KiB,
256 * KiB);
- create_unimplemented_device("IOCS[3]", BONITO_DEV_BASE + 3 * 256 * KiB,
+ create_unimplemented_device(OBJECT(dev), "IOCS[3]", BONITO_DEV_BASE + 3 * 256 * KiB,
256 * KiB);
memory_region_init_alias(pcimem_alias, NULL, "pci.mem.alias",
&bs->pci_mem, 0, BONITO_PCIHI_SIZE);
memory_region_add_subregion(host_mem, BONITO_PCIHI_BASE, pcimem_alias);
- create_unimplemented_device("PCI_2",
+ create_unimplemented_device(OBJECT(dev), "PCI_2",
(hwaddr)BONITO_PCIHI_BASE + BONITO_PCIHI_SIZE,
2 * GiB);
diff --git a/hw/riscv/k230.c b/hw/riscv/k230.c
index d51ad08d87..901106d602 100644
--- a/hw/riscv/k230.c
+++ b/hw/riscv/k230.c
@@ -144,7 +144,7 @@ static void k230_create_uart(Object *parent, MemoryRegion *sys_mem,
g_autofree char *name = g_strdup_printf("uart%d", index);
/* Cover the non-16550 part of the SDK's 0x1000 UART window. */
- create_unimplemented_device(name, memmap[uart_dev].base,
+ create_unimplemented_device(parent, name, memmap[uart_dev].base,
memmap[uart_dev].size);
serial_mm_init(parent, sys_mem, memmap[uart_dev].base, 2,
@@ -154,6 +154,7 @@ static void k230_create_uart(Object *parent, MemoryRegion *sys_mem,
static void k230_soc_realize(DeviceState *dev, Error **errp)
{
+ Object *obj = OBJECT(dev);
K230SoCState *s = RISCV_K230_SOC(dev);
MemoryRegion *sys_mem = get_system_memory();
int c908_cpus;
@@ -209,164 +210,164 @@ static void k230_soc_realize(DeviceState *dev, Error **errp)
qdev_get_gpio_in(DEVICE(s->c908_plic), K230_WDT1_IRQ));
/* unimplemented devices */
- create_unimplemented_device("kpu.l2-cache",
+ create_unimplemented_device(obj, "kpu.l2-cache",
memmap[K230_DEV_KPU_L2_CACHE].base,
memmap[K230_DEV_KPU_L2_CACHE].size);
- create_unimplemented_device("kpu_cfg", memmap[K230_DEV_KPU_CFG].base,
+ create_unimplemented_device(obj, "kpu_cfg", memmap[K230_DEV_KPU_CFG].base,
memmap[K230_DEV_KPU_CFG].size);
- create_unimplemented_device("fft", memmap[K230_DEV_FFT].base,
+ create_unimplemented_device(obj, "fft", memmap[K230_DEV_FFT].base,
memmap[K230_DEV_FFT].size);
- create_unimplemented_device("2d-engine.ai",
+ create_unimplemented_device(obj, "2d-engine.ai",
memmap[K230_DEV_AI_2D_ENGINE].base,
memmap[K230_DEV_AI_2D_ENGINE].size);
- create_unimplemented_device("gsdma", memmap[K230_DEV_GSDMA].base,
+ create_unimplemented_device(obj, "gsdma", memmap[K230_DEV_GSDMA].base,
memmap[K230_DEV_GSDMA].size);
- create_unimplemented_device("dma", memmap[K230_DEV_DMA].base,
+ create_unimplemented_device(obj, "dma", memmap[K230_DEV_DMA].base,
memmap[K230_DEV_DMA].size);
- create_unimplemented_device("decomp-gzip",
+ create_unimplemented_device(obj, "decomp-gzip",
memmap[K230_DEV_DECOMP_GZIP].base,
memmap[K230_DEV_DECOMP_GZIP].size);
- create_unimplemented_device("2d-engine.non-ai",
+ create_unimplemented_device(obj, "2d-engine.non-ai",
memmap[K230_DEV_NON_AI_2D].base,
memmap[K230_DEV_NON_AI_2D].size);
- create_unimplemented_device("isp", memmap[K230_DEV_ISP].base,
+ create_unimplemented_device(obj, "isp", memmap[K230_DEV_ISP].base,
memmap[K230_DEV_ISP].size);
- create_unimplemented_device("dewarp", memmap[K230_DEV_DEWARP].base,
+ create_unimplemented_device(obj, "dewarp", memmap[K230_DEV_DEWARP].base,
memmap[K230_DEV_DEWARP].size);
- create_unimplemented_device("rx-csi", memmap[K230_DEV_RX_CSI].base,
+ create_unimplemented_device(obj, "rx-csi", memmap[K230_DEV_RX_CSI].base,
memmap[K230_DEV_RX_CSI].size);
- create_unimplemented_device("vpu", memmap[K230_DEV_H264].base,
+ create_unimplemented_device(obj, "vpu", memmap[K230_DEV_H264].base,
memmap[K230_DEV_H264].size);
- create_unimplemented_device("gpu", memmap[K230_DEV_2P5D].base,
+ create_unimplemented_device(obj, "gpu", memmap[K230_DEV_2P5D].base,
memmap[K230_DEV_2P5D].size);
- create_unimplemented_device("vo", memmap[K230_DEV_VO].base,
+ create_unimplemented_device(obj, "vo", memmap[K230_DEV_VO].base,
memmap[K230_DEV_VO].size);
- create_unimplemented_device("vo_cfg", memmap[K230_DEV_VO_CFG].base,
+ create_unimplemented_device(obj, "vo_cfg", memmap[K230_DEV_VO_CFG].base,
memmap[K230_DEV_VO_CFG].size);
- create_unimplemented_device("3d-engine", memmap[K230_DEV_3D_ENGINE].base,
+ create_unimplemented_device(obj, "3d-engine", memmap[K230_DEV_3D_ENGINE].base,
memmap[K230_DEV_3D_ENGINE].size);
- create_unimplemented_device("pmu", memmap[K230_DEV_PMU].base,
+ create_unimplemented_device(obj, "pmu", memmap[K230_DEV_PMU].base,
memmap[K230_DEV_PMU].size);
- create_unimplemented_device("rtc", memmap[K230_DEV_RTC].base,
+ create_unimplemented_device(obj, "rtc", memmap[K230_DEV_RTC].base,
memmap[K230_DEV_RTC].size);
- create_unimplemented_device("cmu", memmap[K230_DEV_CMU].base,
+ create_unimplemented_device(obj, "cmu", memmap[K230_DEV_CMU].base,
memmap[K230_DEV_CMU].size);
- create_unimplemented_device("rmu", memmap[K230_DEV_RMU].base,
+ create_unimplemented_device(obj, "rmu", memmap[K230_DEV_RMU].base,
memmap[K230_DEV_RMU].size);
- create_unimplemented_device("boot", memmap[K230_DEV_BOOT].base,
+ create_unimplemented_device(obj, "boot", memmap[K230_DEV_BOOT].base,
memmap[K230_DEV_BOOT].size);
- create_unimplemented_device("pwr", memmap[K230_DEV_PWR].base,
+ create_unimplemented_device(obj, "pwr", memmap[K230_DEV_PWR].base,
memmap[K230_DEV_PWR].size);
- create_unimplemented_device("ipcm", memmap[K230_DEV_MAILBOX].base,
+ create_unimplemented_device(obj, "ipcm", memmap[K230_DEV_MAILBOX].base,
memmap[K230_DEV_MAILBOX].size);
- create_unimplemented_device("iomux", memmap[K230_DEV_IOMUX].base,
+ create_unimplemented_device(obj, "iomux", memmap[K230_DEV_IOMUX].base,
memmap[K230_DEV_IOMUX].size);
- create_unimplemented_device("timer", memmap[K230_DEV_TIMER].base,
+ create_unimplemented_device(obj, "timer", memmap[K230_DEV_TIMER].base,
memmap[K230_DEV_TIMER].size);
- create_unimplemented_device("wdt0", memmap[K230_DEV_WDT0].base,
+ create_unimplemented_device(obj, "wdt0", memmap[K230_DEV_WDT0].base,
memmap[K230_DEV_WDT0].size);
- create_unimplemented_device("wdt1", memmap[K230_DEV_WDT1].base,
+ create_unimplemented_device(obj, "wdt1", memmap[K230_DEV_WDT1].base,
memmap[K230_DEV_WDT1].size);
- create_unimplemented_device("ts", memmap[K230_DEV_TS].base,
+ create_unimplemented_device(obj, "ts", memmap[K230_DEV_TS].base,
memmap[K230_DEV_TS].size);
- create_unimplemented_device("hdi", memmap[K230_DEV_HDI].base,
+ create_unimplemented_device(obj, "hdi", memmap[K230_DEV_HDI].base,
memmap[K230_DEV_HDI].size);
- create_unimplemented_device("stc", memmap[K230_DEV_STC].base,
+ create_unimplemented_device(obj, "stc", memmap[K230_DEV_STC].base,
memmap[K230_DEV_STC].size);
- create_unimplemented_device("security", memmap[K230_DEV_SECURITY].base,
+ create_unimplemented_device(obj, "security", memmap[K230_DEV_SECURITY].base,
memmap[K230_DEV_SECURITY].size);
- create_unimplemented_device("i2c0", memmap[K230_DEV_I2C0].base,
+ create_unimplemented_device(obj, "i2c0", memmap[K230_DEV_I2C0].base,
memmap[K230_DEV_I2C0].size);
- create_unimplemented_device("i2c1", memmap[K230_DEV_I2C1].base,
+ create_unimplemented_device(obj, "i2c1", memmap[K230_DEV_I2C1].base,
memmap[K230_DEV_I2C1].size);
- create_unimplemented_device("i2c2", memmap[K230_DEV_I2C2].base,
+ create_unimplemented_device(obj, "i2c2", memmap[K230_DEV_I2C2].base,
memmap[K230_DEV_I2C2].size);
- create_unimplemented_device("i2c3", memmap[K230_DEV_I2C3].base,
+ create_unimplemented_device(obj, "i2c3", memmap[K230_DEV_I2C3].base,
memmap[K230_DEV_I2C3].size);
- create_unimplemented_device("i2c4", memmap[K230_DEV_I2C4].base,
+ create_unimplemented_device(obj, "i2c4", memmap[K230_DEV_I2C4].base,
memmap[K230_DEV_I2C4].size);
- create_unimplemented_device("pwm", memmap[K230_DEV_PWM].base,
+ create_unimplemented_device(obj, "pwm", memmap[K230_DEV_PWM].base,
memmap[K230_DEV_PWM].size);
- create_unimplemented_device("gpio0", memmap[K230_DEV_GPIO0].base,
+ create_unimplemented_device(obj, "gpio0", memmap[K230_DEV_GPIO0].base,
memmap[K230_DEV_GPIO0].size);
- create_unimplemented_device("gpio1", memmap[K230_DEV_GPIO1].base,
+ create_unimplemented_device(obj, "gpio1", memmap[K230_DEV_GPIO1].base,
memmap[K230_DEV_GPIO1].size);
- create_unimplemented_device("adc", memmap[K230_DEV_ADC].base,
+ create_unimplemented_device(obj, "adc", memmap[K230_DEV_ADC].base,
memmap[K230_DEV_ADC].size);
- create_unimplemented_device("codec", memmap[K230_DEV_CODEC].base,
+ create_unimplemented_device(obj, "codec", memmap[K230_DEV_CODEC].base,
memmap[K230_DEV_CODEC].size);
- create_unimplemented_device("i2s", memmap[K230_DEV_I2S].base,
+ create_unimplemented_device(obj, "i2s", memmap[K230_DEV_I2S].base,
memmap[K230_DEV_I2S].size);
- create_unimplemented_device("usb0", memmap[K230_DEV_USB0].base,
+ create_unimplemented_device(obj, "usb0", memmap[K230_DEV_USB0].base,
memmap[K230_DEV_USB0].size);
- create_unimplemented_device("usb1", memmap[K230_DEV_USB1].base,
+ create_unimplemented_device(obj, "usb1", memmap[K230_DEV_USB1].base,
memmap[K230_DEV_USB1].size);
- create_unimplemented_device("sd0", memmap[K230_DEV_SD0].base,
+ create_unimplemented_device(obj, "sd0", memmap[K230_DEV_SD0].base,
memmap[K230_DEV_SD0].size);
- create_unimplemented_device("sd1", memmap[K230_DEV_SD1].base,
+ create_unimplemented_device(obj, "sd1", memmap[K230_DEV_SD1].base,
memmap[K230_DEV_SD1].size);
- create_unimplemented_device("qspi0", memmap[K230_DEV_QSPI0].base,
+ create_unimplemented_device(obj, "qspi0", memmap[K230_DEV_QSPI0].base,
memmap[K230_DEV_QSPI0].size);
- create_unimplemented_device("qspi1", memmap[K230_DEV_QSPI1].base,
+ create_unimplemented_device(obj, "qspi1", memmap[K230_DEV_QSPI1].base,
memmap[K230_DEV_QSPI1].size);
- create_unimplemented_device("spi", memmap[K230_DEV_SPI].base,
+ create_unimplemented_device(obj, "spi", memmap[K230_DEV_SPI].base,
memmap[K230_DEV_SPI].size);
- create_unimplemented_device("hi_sys_cfg", memmap[K230_DEV_HI_SYS_CFG].base,
+ create_unimplemented_device(obj, "hi_sys_cfg", memmap[K230_DEV_HI_SYS_CFG].base,
memmap[K230_DEV_HI_SYS_CFG].size);
- create_unimplemented_device("ddrc_cfg", memmap[K230_DEV_DDRC_CFG].base,
+ create_unimplemented_device(obj, "ddrc_cfg", memmap[K230_DEV_DDRC_CFG].base,
memmap[K230_DEV_DDRC_CFG].size);
- create_unimplemented_device("flash", memmap[K230_DEV_FLASH].base,
+ create_unimplemented_device(obj, "flash", memmap[K230_DEV_FLASH].base,
memmap[K230_DEV_FLASH].size);
}
diff --git a/hw/riscv/microblaze-v-generic.c b/hw/riscv/microblaze-v-generic.c
index fbfdec7ede..7253ae7822 100644
--- a/hw/riscv/microblaze-v-generic.c
+++ b/hw/riscv/microblaze-v-generic.c
@@ -166,11 +166,11 @@ static void mb_v_generic_init(MachineState *machine)
sysbus_connect_irq(SYS_BUS_DEVICE(dma), 1, irq[AXIDMA_IRQ1]);
/* unimplemented devices */
- create_unimplemented_device("gpio", GPIO_BASEADDR, 0x10000);
- create_unimplemented_device("gpio2", GPIO_BASEADDR2, 0x10000);
- create_unimplemented_device("gpio3", GPIO_BASEADDR3, 0x10000);
- create_unimplemented_device("i2c", I2C_BASEADDR, 0x10000);
- create_unimplemented_device("qspi", QSPI_BASEADDR, 0x10000);
+ create_unimplemented_device(OBJECT(machine), "gpio", GPIO_BASEADDR, 0x10000);
+ create_unimplemented_device(OBJECT(machine), "gpio2", GPIO_BASEADDR2, 0x10000);
+ create_unimplemented_device(OBJECT(machine), "gpio3", GPIO_BASEADDR3, 0x10000);
+ create_unimplemented_device(OBJECT(machine), "i2c", I2C_BASEADDR, 0x10000);
+ create_unimplemented_device(OBJECT(machine), "qspi", QSPI_BASEADDR, 0x10000);
}
static void mb_v_generic_machine_init(MachineClass *mc)
diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c
index 0d298aa3fc..0a98ac1c5e 100644
--- a/hw/riscv/microchip_pfsoc.c
+++ b/hw/riscv/microchip_pfsoc.c
@@ -233,19 +233,19 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
e51_dtim_mem);
/* Bus Error Units */
- create_unimplemented_device("microchip.pfsoc.buserr_unit0_mem",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.buserr_unit0_mem",
memmap[MICROCHIP_PFSOC_BUSERR_UNIT0].base,
memmap[MICROCHIP_PFSOC_BUSERR_UNIT0].size);
- create_unimplemented_device("microchip.pfsoc.buserr_unit1_mem",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.buserr_unit1_mem",
memmap[MICROCHIP_PFSOC_BUSERR_UNIT1].base,
memmap[MICROCHIP_PFSOC_BUSERR_UNIT1].size);
- create_unimplemented_device("microchip.pfsoc.buserr_unit2_mem",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.buserr_unit2_mem",
memmap[MICROCHIP_PFSOC_BUSERR_UNIT2].base,
memmap[MICROCHIP_PFSOC_BUSERR_UNIT2].size);
- create_unimplemented_device("microchip.pfsoc.buserr_unit3_mem",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.buserr_unit3_mem",
memmap[MICROCHIP_PFSOC_BUSERR_UNIT3].base,
memmap[MICROCHIP_PFSOC_BUSERR_UNIT3].size);
- create_unimplemented_device("microchip.pfsoc.buserr_unit4_mem",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.buserr_unit4_mem",
memmap[MICROCHIP_PFSOC_BUSERR_UNIT4].base,
memmap[MICROCHIP_PFSOC_BUSERR_UNIT4].size);
@@ -259,7 +259,7 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
iks->clint_timebase_freq, false);
/* L2 cache controller */
- create_unimplemented_device("microchip.pfsoc.l2cc",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.l2cc",
memmap[MICROCHIP_PFSOC_L2CC].base, memmap[MICROCHIP_PFSOC_L2CC].size);
/*
@@ -314,17 +314,17 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
MICROCHIP_PFSOC_MAILBOX_IRQ));
/* AXISW */
- create_unimplemented_device("microchip.pfsoc.axisw",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.axisw",
memmap[MICROCHIP_PFSOC_AXISW].base,
memmap[MICROCHIP_PFSOC_AXISW].size);
/* MPUCFG */
- create_unimplemented_device("microchip.pfsoc.mpucfg",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.mpucfg",
memmap[MICROCHIP_PFSOC_MPUCFG].base,
memmap[MICROCHIP_PFSOC_MPUCFG].size);
/* FMETER */
- create_unimplemented_device("microchip.pfsoc.fmeter",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.fmeter",
memmap[MICROCHIP_PFSOC_FMETER].base,
memmap[MICROCHIP_PFSOC_FMETER].size);
@@ -368,48 +368,48 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
serial_hd(4));
/* Watchdogs */
- create_unimplemented_device("microchip.pfsoc.watchdog0",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.watchdog0",
memmap[MICROCHIP_PFSOC_WDOG0].base,
memmap[MICROCHIP_PFSOC_WDOG0].size);
- create_unimplemented_device("microchip.pfsoc.watchdog1",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.watchdog1",
memmap[MICROCHIP_PFSOC_WDOG1].base,
memmap[MICROCHIP_PFSOC_WDOG1].size);
- create_unimplemented_device("microchip.pfsoc.watchdog2",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.watchdog2",
memmap[MICROCHIP_PFSOC_WDOG2].base,
memmap[MICROCHIP_PFSOC_WDOG2].size);
- create_unimplemented_device("microchip.pfsoc.watchdog3",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.watchdog3",
memmap[MICROCHIP_PFSOC_WDOG3].base,
memmap[MICROCHIP_PFSOC_WDOG3].size);
- create_unimplemented_device("microchip.pfsoc.watchdog4",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.watchdog4",
memmap[MICROCHIP_PFSOC_WDOG4].base,
memmap[MICROCHIP_PFSOC_WDOG4].size);
/* SPI */
- create_unimplemented_device("microchip.pfsoc.spi0",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.spi0",
memmap[MICROCHIP_PFSOC_SPI0].base,
memmap[MICROCHIP_PFSOC_SPI0].size);
- create_unimplemented_device("microchip.pfsoc.spi1",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.spi1",
memmap[MICROCHIP_PFSOC_SPI1].base,
memmap[MICROCHIP_PFSOC_SPI1].size);
/* I2C */
- create_unimplemented_device("microchip.pfsoc.i2c0",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.i2c0",
memmap[MICROCHIP_PFSOC_I2C0].base,
memmap[MICROCHIP_PFSOC_I2C0].size);
- create_unimplemented_device("microchip.pfsoc.i2c1",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.i2c1",
memmap[MICROCHIP_PFSOC_I2C1].base,
memmap[MICROCHIP_PFSOC_I2C1].size);
/* CAN */
- create_unimplemented_device("microchip.pfsoc.can0",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.can0",
memmap[MICROCHIP_PFSOC_CAN0].base,
memmap[MICROCHIP_PFSOC_CAN0].size);
- create_unimplemented_device("microchip.pfsoc.can1",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.can1",
memmap[MICROCHIP_PFSOC_CAN1].base,
memmap[MICROCHIP_PFSOC_CAN1].size);
/* USB */
- create_unimplemented_device("microchip.pfsoc.usb",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.usb",
memmap[MICROCHIP_PFSOC_USB].base,
memmap[MICROCHIP_PFSOC_USB].size);
@@ -440,13 +440,13 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
qdev_get_gpio_in(DEVICE(s->plic), MICROCHIP_PFSOC_GEM1_IRQ));
/* GPIOs */
- create_unimplemented_device("microchip.pfsoc.gpio0",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.gpio0",
memmap[MICROCHIP_PFSOC_GPIO0].base,
memmap[MICROCHIP_PFSOC_GPIO0].size);
- create_unimplemented_device("microchip.pfsoc.gpio1",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.gpio1",
memmap[MICROCHIP_PFSOC_GPIO1].base,
memmap[MICROCHIP_PFSOC_GPIO1].size);
- create_unimplemented_device("microchip.pfsoc.gpio2",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.gpio2",
memmap[MICROCHIP_PFSOC_GPIO2].base,
memmap[MICROCHIP_PFSOC_GPIO2].size);
@@ -467,15 +467,15 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
MICROCHIP_PFSOC_MAILBOX_IRQ));
/* FPGA Fabric */
- create_unimplemented_device("microchip.pfsoc.fabricfic3",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.fabricfic3",
memmap[MICROCHIP_PFSOC_FABRIC_FIC3].base,
memmap[MICROCHIP_PFSOC_FABRIC_FIC3].size);
/* FPGA Fabric */
- create_unimplemented_device("microchip.pfsoc.fabricfic0",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.fabricfic0",
memmap[MICROCHIP_PFSOC_FABRIC_FIC0].base,
memmap[MICROCHIP_PFSOC_FABRIC_FIC0].size);
/* FPGA Fabric */
- create_unimplemented_device("microchip.pfsoc.fabricfic1",
+ create_unimplemented_device(OBJECT(dev), "microchip.pfsoc.fabricfic1",
memmap[MICROCHIP_PFSOC_FABRIC_FIC1].base,
memmap[MICROCHIP_PFSOC_FABRIC_FIC1].size);
diff --git a/hw/riscv/opentitan.c b/hw/riscv/opentitan.c
index 5b2f33d5ac..76653ccc77 100644
--- a/hw/riscv/opentitan.c
+++ b/hw/riscv/opentitan.c
@@ -258,57 +258,57 @@ static void lowrisc_ibex_soc_realize(DeviceState *dev_soc, Error **errp)
}
}
- create_unimplemented_device("riscv.lowrisc.ibex.gpio",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.gpio",
memmap[IBEX_DEV_GPIO].base, memmap[IBEX_DEV_GPIO].size);
- create_unimplemented_device("riscv.lowrisc.ibex.spi_device",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.spi_device",
memmap[IBEX_DEV_SPI_DEVICE].base, memmap[IBEX_DEV_SPI_DEVICE].size);
- create_unimplemented_device("riscv.lowrisc.ibex.i2c",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.i2c",
memmap[IBEX_DEV_I2C].base, memmap[IBEX_DEV_I2C].size);
- create_unimplemented_device("riscv.lowrisc.ibex.pattgen",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.pattgen",
memmap[IBEX_DEV_PATTGEN].base, memmap[IBEX_DEV_PATTGEN].size);
- create_unimplemented_device("riscv.lowrisc.ibex.sensor_ctrl",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.sensor_ctrl",
memmap[IBEX_DEV_SENSOR_CTRL].base, memmap[IBEX_DEV_SENSOR_CTRL].size);
- create_unimplemented_device("riscv.lowrisc.ibex.otp_ctrl",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.otp_ctrl",
memmap[IBEX_DEV_OTP_CTRL].base, memmap[IBEX_DEV_OTP_CTRL].size);
- create_unimplemented_device("riscv.lowrisc.ibex.lc_ctrl",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.lc_ctrl",
memmap[IBEX_DEV_LC_CTRL].base, memmap[IBEX_DEV_LC_CTRL].size);
- create_unimplemented_device("riscv.lowrisc.ibex.pwrmgr",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.pwrmgr",
memmap[IBEX_DEV_PWRMGR].base, memmap[IBEX_DEV_PWRMGR].size);
- create_unimplemented_device("riscv.lowrisc.ibex.rstmgr",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.rstmgr",
memmap[IBEX_DEV_RSTMGR].base, memmap[IBEX_DEV_RSTMGR].size);
- create_unimplemented_device("riscv.lowrisc.ibex.clkmgr",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.clkmgr",
memmap[IBEX_DEV_CLKMGR].base, memmap[IBEX_DEV_CLKMGR].size);
- create_unimplemented_device("riscv.lowrisc.ibex.pinmux",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.pinmux",
memmap[IBEX_DEV_PINMUX].base, memmap[IBEX_DEV_PINMUX].size);
- create_unimplemented_device("riscv.lowrisc.ibex.aon_timer",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.aon_timer",
memmap[IBEX_DEV_AON_TIMER].base, memmap[IBEX_DEV_AON_TIMER].size);
- create_unimplemented_device("riscv.lowrisc.ibex.usbdev",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.usbdev",
memmap[IBEX_DEV_USBDEV].base, memmap[IBEX_DEV_USBDEV].size);
- create_unimplemented_device("riscv.lowrisc.ibex.flash_ctrl",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.flash_ctrl",
memmap[IBEX_DEV_FLASH_CTRL].base, memmap[IBEX_DEV_FLASH_CTRL].size);
- create_unimplemented_device("riscv.lowrisc.ibex.aes",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.aes",
memmap[IBEX_DEV_AES].base, memmap[IBEX_DEV_AES].size);
- create_unimplemented_device("riscv.lowrisc.ibex.hmac",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.hmac",
memmap[IBEX_DEV_HMAC].base, memmap[IBEX_DEV_HMAC].size);
- create_unimplemented_device("riscv.lowrisc.ibex.kmac",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.kmac",
memmap[IBEX_DEV_KMAC].base, memmap[IBEX_DEV_KMAC].size);
- create_unimplemented_device("riscv.lowrisc.ibex.keymgr",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.keymgr",
memmap[IBEX_DEV_KEYMGR].base, memmap[IBEX_DEV_KEYMGR].size);
- create_unimplemented_device("riscv.lowrisc.ibex.csrng",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.csrng",
memmap[IBEX_DEV_CSRNG].base, memmap[IBEX_DEV_CSRNG].size);
- create_unimplemented_device("riscv.lowrisc.ibex.entropy",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.entropy",
memmap[IBEX_DEV_ENTROPY].base, memmap[IBEX_DEV_ENTROPY].size);
- create_unimplemented_device("riscv.lowrisc.ibex.edn0",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.edn0",
memmap[IBEX_DEV_EDNO].base, memmap[IBEX_DEV_EDNO].size);
- create_unimplemented_device("riscv.lowrisc.ibex.edn1",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.edn1",
memmap[IBEX_DEV_EDN1].base, memmap[IBEX_DEV_EDN1].size);
- create_unimplemented_device("riscv.lowrisc.ibex.alert_handler",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.alert_handler",
memmap[IBEX_DEV_ALERT_HANDLER].base, memmap[IBEX_DEV_ALERT_HANDLER].size);
- create_unimplemented_device("riscv.lowrisc.ibex.sram_ctrl",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.sram_ctrl",
memmap[IBEX_DEV_SRAM_CTRL].base, memmap[IBEX_DEV_SRAM_CTRL].size);
- create_unimplemented_device("riscv.lowrisc.ibex.otbn",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.otbn",
memmap[IBEX_DEV_OTBN].base, memmap[IBEX_DEV_OTBN].size);
- create_unimplemented_device("riscv.lowrisc.ibex.ibex_cfg",
+ create_unimplemented_device(OBJECT(dev_soc), "riscv.lowrisc.ibex.ibex_cfg",
memmap[IBEX_DEV_IBEX_CFG].base, memmap[IBEX_DEV_IBEX_CFG].size);
}
diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c
index fb62bc9aca..31cec460b3 100644
--- a/hw/riscv/sifive_e.c
+++ b/hw/riscv/sifive_e.c
@@ -268,19 +268,19 @@ static void sifive_e_soc_realize(DeviceState *dev, Error **errp)
sifive_uart_create(OBJECT(s), sys_mem, memmap[SIFIVE_E_DEV_UART0].base,
serial_hd(0), qdev_get_gpio_in(DEVICE(s->plic), SIFIVE_E_UART0_IRQ));
- create_unimplemented_device("riscv.sifive.e.qspi0",
+ create_unimplemented_device(OBJECT(dev), "riscv.sifive.e.qspi0",
memmap[SIFIVE_E_DEV_QSPI0].base, memmap[SIFIVE_E_DEV_QSPI0].size);
- create_unimplemented_device("riscv.sifive.e.pwm0",
+ create_unimplemented_device(OBJECT(dev), "riscv.sifive.e.pwm0",
memmap[SIFIVE_E_DEV_PWM0].base, memmap[SIFIVE_E_DEV_PWM0].size);
sifive_uart_create(OBJECT(s), sys_mem, memmap[SIFIVE_E_DEV_UART1].base,
serial_hd(1), qdev_get_gpio_in(DEVICE(s->plic), SIFIVE_E_UART1_IRQ));
- create_unimplemented_device("riscv.sifive.e.qspi1",
+ create_unimplemented_device(OBJECT(dev), "riscv.sifive.e.qspi1",
memmap[SIFIVE_E_DEV_QSPI1].base, memmap[SIFIVE_E_DEV_QSPI1].size);
- create_unimplemented_device("riscv.sifive.e.pwm1",
+ create_unimplemented_device(OBJECT(dev), "riscv.sifive.e.pwm1",
memmap[SIFIVE_E_DEV_PWM1].base, memmap[SIFIVE_E_DEV_PWM1].size);
- create_unimplemented_device("riscv.sifive.e.qspi2",
+ create_unimplemented_device(OBJECT(dev), "riscv.sifive.e.qspi2",
memmap[SIFIVE_E_DEV_QSPI2].base, memmap[SIFIVE_E_DEV_QSPI2].size);
- create_unimplemented_device("riscv.sifive.e.pwm2",
+ create_unimplemented_device(OBJECT(dev), "riscv.sifive.e.pwm2",
memmap[SIFIVE_E_DEV_PWM2].base, memmap[SIFIVE_E_DEV_PWM2].size);
/* Flash memory */
diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c
index 3d60a501dd..aba6716b73 100644
--- a/hw/riscv/sifive_u.c
+++ b/hw/riscv/sifive_u.c
@@ -861,13 +861,13 @@ static void sifive_u_soc_realize(DeviceState *dev, Error **errp)
}
}
- create_unimplemented_device("riscv.sifive.u.gem-mgmt",
+ create_unimplemented_device(OBJECT(dev), "riscv.sifive.u.gem-mgmt",
memmap[SIFIVE_U_DEV_GEM_MGMT].base, memmap[SIFIVE_U_DEV_GEM_MGMT].size);
- create_unimplemented_device("riscv.sifive.u.dmc",
+ create_unimplemented_device(OBJECT(dev), "riscv.sifive.u.dmc",
memmap[SIFIVE_U_DEV_DMC].base, memmap[SIFIVE_U_DEV_DMC].size);
- create_unimplemented_device("riscv.sifive.u.l2cc",
+ create_unimplemented_device(OBJECT(dev), "riscv.sifive.u.l2cc",
memmap[SIFIVE_U_DEV_L2CC].base, memmap[SIFIVE_U_DEV_L2CC].size);
sysbus_realize(SYS_BUS_DEVICE(&s->spi0), errp);
diff --git a/hw/riscv/tt_atlantis.c b/hw/riscv/tt_atlantis.c
index 6e0a54fe3c..068a0bc542 100644
--- a/hw/riscv/tt_atlantis.c
+++ b/hw/riscv/tt_atlantis.c
@@ -556,7 +556,7 @@ static void tt_atlantis_machine_init(MachineState *machine)
* Create an unimplemented device region so writes don't fault
* and reads return zero, which keeps Linux happy.
*/
- create_unimplemented_device("tt-atlantis.uart0",
+ create_unimplemented_device(OBJECT(machine), "tt-atlantis.uart0",
s->memmap[TT_ATL_UART1].base,
s->memmap[TT_ATL_UART1].size);
diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index 144345d46a..a0d0213d0b 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -948,7 +948,7 @@ static void sun4m_hw_init(MachineState *machine)
}
if (hwdef->sx_base) {
- create_unimplemented_device("sun-sx", hwdef->sx_base, 0x2000);
+ create_unimplemented_device(OBJECT(machine), "sun-sx", hwdef->sx_base, 0x2000);
}
dev = qdev_new(OBJECT(machine), "nvram", "sysbus-m48t08");
@@ -1032,16 +1032,16 @@ static void sun4m_hw_init(MachineState *machine)
if (hwdef->dbri_base) {
/* ISDN chip with attached CS4215 audio codec */
/* prom space */
- create_unimplemented_device("sun-DBRI.prom",
+ create_unimplemented_device(OBJECT(machine), "sun-DBRI.prom",
hwdef->dbri_base + 0x1000, 0x30);
/* reg space */
- create_unimplemented_device("sun-DBRI",
+ create_unimplemented_device(OBJECT(machine), "sun-DBRI",
hwdef->dbri_base + 0x10000, 0x100);
}
if (hwdef->bpp_base) {
/* parallel port */
- create_unimplemented_device("sun-bpp", hwdef->bpp_base, 0x20);
+ create_unimplemented_device(OBJECT(machine), "sun-bpp", hwdef->bpp_base, 0x20);
}
initrd_size = 0;
diff --git a/hw/sparc64/niagara.c b/hw/sparc64/niagara.c
index bceda70f2e..8fb9937127 100644
--- a/hw/sparc64/niagara.c
+++ b/hw/sparc64/niagara.c
@@ -98,6 +98,7 @@ static void add_rom_or_fail(const char *file, const hwaddr addr)
/* Niagara hardware initialisation */
static void niagara_init(MachineState *machine)
{
+ Object *obj = OBJECT(machine);
NiagaraBoardState *s = g_new(NiagaraBoardState, 1);
DriveInfo *dinfo = drive_get(IF_PFLASH, 0, 0);
MemoryRegion *sysmem = get_system_memory();
@@ -153,7 +154,7 @@ static void niagara_init(MachineState *machine)
}
serial_mm_init(OBJECT(machine), sysmem, NIAGARA_UART_BASE, 0, NULL,
115200, serial_hd(0), DEVICE_BIG_ENDIAN);
- create_unimplemented_device("sun4v-iob", NIAGARA_IOBBASE, NIAGARA_IOBSIZE);
+ create_unimplemented_device(obj, "sun4v-iob", NIAGARA_IOBBASE, NIAGARA_IOBSIZE);
sun4v_rtc_init(OBJECT(machine), NIAGARA_RTC_BASE);
}
diff --git a/include/hw/misc/unimp.h b/include/hw/misc/unimp.h
index 5158d29634..afef25671e 100644
--- a/include/hw/misc/unimp.h
+++ b/include/hw/misc/unimp.h
@@ -38,15 +38,18 @@ struct UnimplementedDeviceState {
* use it to cover a large region and then map other devices on top of it
* if necessary.
*/
-static inline void create_unimplemented_device(const char *name,
+static inline void create_unimplemented_device(Object *parent,
+ const char *name,
hwaddr base,
hwaddr size)
{
- DeviceState *dev = qdev_new_orphan(TYPE_UNIMPLEMENTED_DEVICE);
+ g_autofree char *id = name[strlen(name) - 1] == ']'
+ ? g_strdup(name) : g_strdup_printf("%s[*]", name);
+ DeviceState *dev = qdev_new(parent, id, TYPE_UNIMPLEMENTED_DEVICE);
qdev_prop_set_string(dev, "name", name);
qdev_prop_set_uint64(dev, "size", size);
- sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
+ sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal);
sysbus_mmio_map_overlap(SYS_BUS_DEVICE(dev), 0, base, -1000);
}
--
2.47.1
next prev parent reply other threads:[~2026-07-18 21:59 UTC|newest]
Thread overview: 290+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-11 22:34 [RFC PATCH 000/134] qom: Make composition-tree parenting mandatory Alexander Graf
2026-07-11 22:34 ` [RFC PATCH 001/134] qom: Introduce object_new_child() Alexander Graf
2026-07-13 8:47 ` Daniel P. Berrangé
2026-07-13 9:01 ` Graf (AWS), Alexander
2026-07-11 22:34 ` [RFC PATCH 002/134] qdev: Rename qdev_new()/qdev_try_new() to *_orphan() Alexander Graf
2026-07-13 8:22 ` Philippe Mathieu-Daudé
2026-07-11 22:34 ` [RFC PATCH 003/134] qdev: Reintroduce qdev_new() with a mandatory QOM parent Alexander Graf
2026-07-13 10:55 ` Philippe Mathieu-Daudé
2026-07-11 22:34 ` [RFC PATCH 004/134] sysbus: Make sysbus_create_simple()/_varargs() take a " Alexander Graf
2026-07-13 10:54 ` Philippe Mathieu-Daudé
2026-07-11 22:34 ` [RFC PATCH 005/134] pci: Make pci_new*()/pci_create_simple*() " Alexander Graf
2026-07-11 22:34 ` [RFC PATCH 006/134] isa: Make isa_new()/isa_try_new()/isa_create_simple() " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 007/134] i2c: Make i2c_slave_new()/i2c_slave_create_simple() " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 008/134] ssi, usb: Make bus-layer creators " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 009/134] cpu: Make cpu_create() " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 010/134] hw/avr: Give onboard devices " Alexander Graf
2026-07-13 8:25 ` Philippe Mathieu-Daudé
2026-07-11 22:35 ` [RFC PATCH 011/134] hw/tricore: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 012/134] hw/xtensa: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 013/134] hw/alpha: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 014/134] hw/nitro: " Alexander Graf
2026-07-13 8:29 ` Philippe Mathieu-Daudé
2026-07-11 22:35 ` [RFC PATCH 015/134] hw/vmapple: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 016/134] hw/hppa: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 017/134] hw/microblaze: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 018/134] hw/sh4: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 019/134] hw/s390x: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 020/134] hw/or1k: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 021/134] hw/loongarch: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 022/134] hw/intc: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 023/134] hw/pci-host: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 024/134] hw/core: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 025/134] hw/remote: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 026/134] hw/ufs: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 027/134] hw/nvme: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 028/134] hw/vfio: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 029/134] hw/mem: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 030/134] hw/cxl: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 031/134] hw/hexagon: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 032/134] hw/xen: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 033/134] hw/display: " Alexander Graf
2026-07-13 8:32 ` Philippe Mathieu-Daudé
2026-07-11 22:35 ` [RFC PATCH 034/134] hw/nvram: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 035/134] hw/dma: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 036/134] hw/misc: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 037/134] hw/scsi: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 038/134] hw/net: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 039/134] hw/ide: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 040/134] hw/i3c: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 041/134] hw/pci-bridge: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 042/134] hw/sparc64: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 043/134] hw/sparc: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 044/134] hw/m68k: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 045/134] hw/rtc: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 046/134] hw/i2c: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 047/134] hw/block: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 048/134] hw/char: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 049/134] hw/isa: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 050/134] hw/pci: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 051/134] hw/riscv: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 052/134] hw/mips: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 053/134] hw/i386: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 054/134] hw/ppc: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 055/134] hw/pci, hw/isa: Give VGA and slot-NIC helpers " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 056/134] hw/arm/virt: Give onboard devices " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 057/134] hw/arm/sbsa-ref: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 058/134] hw/arm/xilinx-zynq: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 059/134] hw/arm/xlnx-versal, xlnx-zynqmp: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 060/134] hw/arm/realview, integratorcp: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 061/134] hw/arm/npcm: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 062/134] hw/arm/versatile, vexpress: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 063/134] hw/arm/stellaris, musicpal: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 064/134] hw/arm/exynos: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 065/134] hw/arm/allwinner: " Alexander Graf
2026-07-11 22:35 ` [RFC PATCH 066/134] hw/arm/strongarm: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 067/134] hw/arm/omap: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 068/134] hw/arm/mps2: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 069/134] hw/arm/imx: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 070/134] hw/arm/misc: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 071/134] hw/arm/aspeed: Give onboard devices a QOM parent (part 1) Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 072/134] hw/arm/aspeed: Give onboard devices a QOM parent (part 2) Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 073/134] hw/nvram/at24c: Give at24c_eeprom_init() a QOM parent Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 074/134] hw/i386/pc: Give pcspk " Alexander Graf
2026-07-13 8:34 ` Philippe Mathieu-Daudé
2026-07-11 22:36 ` [RFC PATCH 075/134] hw/timer, hw/net: Give i8254 and isa-ne2000 helpers " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 076/134] hw/misc/unimp: Give create_unimplemented_device() " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 077/134] hw/usb: Give -usbdevice and auto-hub devices " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 078/134] hw/audio: Give -audio model= " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 079/134] hw/xen: Give xenstore-driven backend " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 080/134] hw/nitro: Give the vsock bridge " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 081/134] hw/isa: Give the isabus-bridge " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 082/134] net, target/mips: Give -nic and CPU-with-clock helpers " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 083/134] usb, ssi, i2c: Remove *_orphan() creator variants Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 084/134] isa: " Alexander Graf
2026-07-13 8:35 ` Philippe Mathieu-Daudé
2026-07-11 22:36 ` [RFC PATCH 085/134] pci: " Alexander Graf
2026-07-13 8:36 ` Philippe Mathieu-Daudé
2026-07-11 22:36 ` [RFC PATCH 086/134] cpu: Remove cpu_create_orphan() Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 087/134] sysbus: Remove *_orphan() creator variants Alexander Graf
2026-07-13 8:36 ` Philippe Mathieu-Daudé
2026-07-11 22:36 ` [RFC PATCH 088/134] qdev: Remove qdev_new_orphan() and qdev_try_new_orphan() Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 089/134] memory: Accept non-device owners in memory_region_init_ram() Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 090/134] hw/misc-boards: Give memory regions an explicit owner Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 091/134] hw/mips: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 092/134] hw/riscv: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 093/134] hw/i386: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 094/134] hw/arm: " Alexander Graf
2026-07-12 15:12 ` Bernhard Beschow
2026-07-11 22:36 ` [RFC PATCH 095/134] hw/arm/omap1: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 096/134] hw/sh4: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 097/134] hw/m68k: " Alexander Graf
2026-07-12 14:20 ` Thomas Huth
2026-07-11 22:36 ` [RFC PATCH 098/134] hw/ppc: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 099/134] hw/tricore: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 100/134] hw/xtensa: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 101/134] hw/display: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 102/134] hw/arm/omap: Give lcdc and dma " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 103/134] hw/char: Give parallel and htif " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 104/134] hw/remote: Give " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 105/134] system, backends: Give named " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 106/134] hw/ide: Let ide_init_ioport() take " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 107/134] memory: Require an owner for named memory regions Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 108/134] irq: Rename qemu_allocate_irq*() and friends to *_orphan() Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 109/134] irq: Reintroduce qemu_allocate_irq*() with a mandatory owner and name Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 110/134] hw/pci, hw/usb, system: Give allocated IRQs an " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 111/134] hw/i386, hw/xen: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 112/134] hw/arm: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 113/134] hw/xtensa: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 114/134] hw: " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 115/134] hw/core: Parent GPIO input IRQs and embedded IRQState via QOM Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 116/134] irq: Delete the *_orphan() IRQ allocation variants Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 117/134] sysbus: Parent main-system-bus directly under /machine Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 118/134] accel: Parent the accelerator singleton " Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 119/134] hw/core/reset: Give the root reset container and legacy shims a QOM path Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 120/134] system: Parent per-MR helper objects under their owner Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 121/134] hw/virtio, hw/display: Parent per-device helper objects Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 122/134] hw/i386/amd_iommu: Parent internally-created AMDVI-PCI under the IOMMU Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 123/134] hw/s390x, hw/remote: Parent per-devfn IOMMU objects Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 124/134] hw/pci-host/raven: Parent the OR-IRQ under the host bridge Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 125/134] hw/arm/mps2: Parent the OR-IRQ gates under the machine Alexander Graf
2026-07-11 22:36 ` [RFC PATCH 126/134] hw/arm/digic: Parent the DIGIC SoC " Alexander Graf
2026-07-11 22:37 ` [RFC PATCH 127/134] hw/microblaze: Parent the CPU " Alexander Graf
2026-07-11 22:37 ` [RFC PATCH 128/134] hw: Pair object_initialize_child() with plain realize() Alexander Graf
2026-07-11 22:37 ` [RFC PATCH 129/134] hw: Parent board-created CPUs under the machine Alexander Graf
2026-07-13 16:35 ` Bernhard Beschow
2026-07-13 20:01 ` Brian Cain
2026-07-11 22:37 ` [RFC PATCH 130/134] hw/pci-host/versatile: Use object_initialize_child() for pci_dev Alexander Graf
2026-07-11 22:37 ` [RFC PATCH 131/134] docs, qapi, scripts, iotests: Update /machine/unattached path references Alexander Graf
2026-07-11 22:37 ` [RFC PATCH 132/134] qom: Delete /machine/unattached and error on unparented realize Alexander Graf
2026-07-11 22:37 ` [RFC PATCH 133/134] docs/devel/qom: Document the composition-tree parenting contract Alexander Graf
2026-07-11 22:37 ` [RFC PATCH 134/134] MAINTAINERS: Add scripts/coccinelle/qom-parent/ under QOM Alexander Graf
2026-07-12 10:56 ` [RFC PATCH 000/134] qom: Make composition-tree parenting mandatory Bernhard Beschow
2026-07-18 21:34 ` [RFC PATCH v2 000/137] " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 001/137] qom: Introduce object_new_child() Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 002/137] qdev: Rename qdev_new()/qdev_try_new() to *_orphan() Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 003/137] qdev: Reintroduce qdev_new() with a mandatory QOM parent Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 004/137] sysbus: Make sysbus_create_simple()/_varargs() take a " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 005/137] pci: Make pci_new*()/pci_create_simple*() " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 006/137] isa: Make isa_new()/isa_try_new()/isa_create_simple() " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 007/137] i2c: Make i2c_slave_new()/i2c_slave_create_simple() " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 008/137] ssi, usb: Make bus-layer creators " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 009/137] cpu: Make cpu_create() " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 010/137] hw/avr: Give onboard devices " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 011/137] hw/tricore: " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 012/137] hw/xtensa: " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 013/137] hw/alpha: " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 014/137] hw/nitro: " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 015/137] hw/vmapple: " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 016/137] hw/hppa: " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 017/137] hw/microblaze: " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 018/137] hw/sh4: " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 019/137] hw/s390x: " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 020/137] hw/or1k: " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 021/137] hw/loongarch: " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 022/137] hw/intc: " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 023/137] hw/pci-host: " Alexander Graf
2026-07-18 21:34 ` [RFC PATCH v2 024/137] hw/core: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 025/137] hw/remote: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 026/137] hw/ufs: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 027/137] hw/nvme: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 028/137] hw/vfio: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 029/137] hw/mem: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 030/137] hw/cxl: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 031/137] hw/hexagon: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 032/137] hw/xen: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 033/137] hw/display: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 034/137] hw/nvram: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 035/137] hw/dma: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 036/137] hw/misc: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 037/137] hw/scsi: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 038/137] hw/net: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 039/137] hw/ide: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 040/137] hw/i3c: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 041/137] hw/core/sysbus: Skip nested devices in foreach_dynamic_sysbus_device() Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 042/137] hw/pci-bridge: Give onboard devices a QOM parent Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 043/137] hw/sparc64: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 044/137] hw/sparc: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 045/137] hw/m68k: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 046/137] hw/rtc: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 047/137] hw/i2c: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 048/137] hw/block: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 049/137] hw/char: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 050/137] hw/isa: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 051/137] hw/pci: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 052/137] hw/riscv: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 053/137] hw/mips: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 054/137] hw/i386: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 055/137] hw/ppc: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 056/137] hw/pci, hw/isa: Give VGA and slot-NIC helpers " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 057/137] hw/arm/virt: Give onboard devices " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 058/137] hw/arm/sbsa-ref: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 059/137] hw/arm/xilinx-zynq: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 060/137] hw/arm/xlnx-versal, xlnx-zynqmp: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 061/137] hw/arm/realview, integratorcp: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 062/137] hw/arm/npcm: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 063/137] hw/arm/versatile, vexpress: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 064/137] hw/arm/stellaris, musicpal: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 065/137] hw/arm/exynos: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 066/137] hw/arm/allwinner: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 067/137] hw/arm/strongarm: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 068/137] hw/arm/omap: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 069/137] hw/arm/mps2: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 070/137] hw/arm/imx: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 071/137] hw/arm/misc: " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 072/137] hw/arm/aspeed: Give onboard devices a QOM parent (part 1) Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 073/137] hw/arm/aspeed: Give onboard devices a QOM parent (part 2) Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 074/137] hw/nvram/at24c: Give at24c_eeprom_init() a QOM parent Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 075/137] hw/i386/pc: Give pcspk " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 076/137] hw/timer, hw/net: Give i8254 and isa-ne2000 helpers " Alexander Graf
2026-07-18 21:35 ` Alexander Graf [this message]
2026-07-18 21:35 ` [RFC PATCH v2 078/137] hw/usb: Give -usbdevice and auto-hub devices " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 079/137] hw/audio: Give -audio model= " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 080/137] hw/xen: Give xenstore-driven backend " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 081/137] hw/nitro: Give the vsock bridge " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 082/137] hw/isa: Give the isabus-bridge " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 083/137] net, target/mips: Give -nic and CPU-with-clock helpers " Alexander Graf
2026-07-18 21:35 ` [RFC PATCH v2 084/137] usb, ssi, i2c: Remove *_orphan() creator variants Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 085/137] isa: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 086/137] pci: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 087/137] cpu: Remove cpu_create_orphan() Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 088/137] sysbus: Remove *_orphan() creator variants Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 089/137] qdev: Remove qdev_new_orphan() and qdev_try_new_orphan() Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 090/137] memory: Accept non-device owners in memory_region_init_ram() Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 091/137] hw/misc-boards: Give memory regions an explicit owner Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 092/137] hw/mips: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 093/137] hw/riscv: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 094/137] hw/i386: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 095/137] hw/arm: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 096/137] hw/arm/omap1: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 097/137] hw/sh4: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 098/137] hw/m68k: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 099/137] hw/ppc: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 100/137] hw/tricore: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 101/137] hw/xtensa: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 102/137] hw/display: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 103/137] hw/arm/omap: Give lcdc and dma " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 104/137] hw/char: Give parallel and htif " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 105/137] hw/remote: Give " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 106/137] system, backends: Give named " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 107/137] hw/ide: Let ide_init_ioport() take " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 108/137] memory: Require an owner for named memory regions Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 109/137] irq: Rename qemu_allocate_irq*() and friends to *_orphan() Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 110/137] irq: Reintroduce qemu_allocate_irq*() with a mandatory owner and name Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 111/137] hw/pci, hw/usb, system: Give allocated IRQs an " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 112/137] hw/i386, hw/xen: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 113/137] hw/arm: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 114/137] hw/xtensa: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 115/137] hw: " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 116/137] hw/core: Parent GPIO input IRQs and embedded IRQState via QOM Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 117/137] irq: Delete the *_orphan() IRQ allocation variants Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 118/137] sysbus: Parent main-system-bus directly under /machine Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 119/137] accel: Parent the accelerator singleton " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 120/137] hw/intc/mips_gic: Register reset handler at realize, not instance_init Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 121/137] hw/core/reset: Give the root reset container and legacy shims a QOM path Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 122/137] system: Parent per-MR helper objects under their owner Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 123/137] hw/virtio, hw/display: Parent per-device helper objects Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 124/137] hw/i386/amd_iommu: Parent internally-created AMDVI-PCI under the IOMMU Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 125/137] hw/s390x, hw/remote: Parent per-devfn IOMMU objects Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 126/137] hw/pci-host/raven: Parent the OR-IRQ under the host bridge Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 127/137] hw/arm/mps2: Parent the OR-IRQ gates under the machine Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 128/137] hw/arm/digic: Parent the DIGIC SoC " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 129/137] hw/microblaze: Parent the CPU " Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 130/137] hw: Pair object_initialize_child() with plain realize() Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 131/137] hw: Parent board-created CPUs under the machine Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 132/137] hw/pci-host/versatile: Use object_initialize_child() for pci_dev Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 133/137] docs, qapi, scripts, iotests: Update /machine/unattached path references Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 134/137] qom: Delete /machine/unattached and error on unparented realize Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 135/137] tests/qtest/qom-test: Add smp-max init-time ceiling test Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 136/137] docs/devel/qom: Document the composition-tree parenting contract Alexander Graf
2026-07-18 21:36 ` [RFC PATCH v2 137/137] MAINTAINERS: Add scripts/coccinelle/qom-parent/ under QOM Alexander Graf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260718213652.37673-78-graf@amazon.com \
--to=graf@amazon.com \
--cc=17746591750@163.com \
--cc=adityag@linux.ibm.com \
--cc=aik@ozlabs.ru \
--cc=alex.bennee@linaro.org \
--cc=alifm@linux.ibm.com \
--cc=alistair.francis@wdc.com \
--cc=alistair@alistair23.me \
--cc=antonynpavlov@gmail.com \
--cc=armbru@redhat.com \
--cc=atar4qemu@gmail.com \
--cc=balaton@eik.bme.hu \
--cc=balbi@kernel.org \
--cc=berrange@redhat.com \
--cc=borntraeger@linux.ibm.com \
--cc=brian.cain@oss.qualcomm.com \
--cc=brueckner@linux.ibm.com \
--cc=chao.liu@processmission.com \
--cc=chenhuacai@kernel.org \
--cc=chigot@adacore.com \
--cc=clg@kaod.org \
--cc=deller@gmx.de \
--cc=dorjoychy111@gmail.com \
--cc=edgar.iglesias@gmail.com \
--cc=erdnaxe@crans.org \
--cc=farman@linux.ibm.com \
--cc=farosas@suse.de \
--cc=francisco.iglesias@amd.com \
--cc=gaurav.sharma_7@nxp.com \
--cc=ggala@linux.ibm.com \
--cc=harshpb@linux.ibm.com \
--cc=hpoussin@reactos.org \
--cc=jan.kiszka@web.de \
--cc=jcmvbkbc@gmail.com \
--cc=joel@jms.id.au \
--cc=jrossi@linux.ibm.com \
--cc=kfting@nuvoton.com \
--cc=konrad.frederic@yahoo.fr \
--cc=laurent@vivier.eu \
--cc=manos.pitsidianakis@linaro.org \
--cc=maobibo@loongson.cn \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=milesg@linux.ibm.com \
--cc=mjrosato@linux.ibm.com \
--cc=mrolnik@gmail.com \
--cc=mst@redhat.com \
--cc=nieklinnenbank@gmail.com \
--cc=npiggin@gmail.com \
--cc=palmer@dabbelt.com \
--cc=pasic@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=peterx@redhat.com \
--cc=philmd@mailo.com \
--cc=philmd@oss.qualcomm.com \
--cc=pierrick.bouvier@oss.qualcomm.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=sai.pavan.boddu@amd.com \
--cc=sam@rfc1149.net \
--cc=shentey@gmail.com \
--cc=shorne@gmail.com \
--cc=slp@redhat.com \
--cc=sundeep.lkml@gmail.com \
--cc=th.huth+qemu@posteo.eu \
--cc=wangran@bosc.ac.cn \
--cc=wuhaotsh@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox