qemu/hw/arm
Peter Maydell d8b1ae4237 hw/arm: new interface for devices which need to behave differently for kernel boot
For ARM we have a little minimalist bootloader in hw/arm/boot.c which
takes the place of firmware if we're directly booting a Linux kernel.
Unfortunately a few devices need special case handling in this situation
to do the initialization which on real hardware would be done by
firmware. (In particular if we're booting a kernel in NonSecure state
then we need to make a TZ-aware GIC put all its interrupts into Group 1,
or the guest will be unable to use them.)

Create a new QOM interface which can be implemented by devices which
need to do something different from their default reset behaviour.
The callback will be called after machine initialization and before
first reset.

Suggested-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Tested-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Message-id: 1441383782-24378-3-git-send-email-peter.maydell@linaro.org
2015-09-08 17:38:43 +01:00
..
allwinner-a10.c hw: Mark device misusing nd_table[] FIXME 2015-04-02 15:30:32 +02:00
armv7m.c target_arm: Parameterise the irq lines for armv7m_init 2015-02-05 13:37:21 +00:00
boot.c hw/arm: new interface for devices which need to behave differently for kernel boot 2015-09-08 17:38:43 +01:00
collie.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
cubieboard.c arm: memory: Replace memory_region_init_ram with memory_region_allocate_system_memory 2015-04-08 17:30:36 +01:00
digic.c hw/arm/digic: add UART support 2013-12-17 20:12:51 +00:00
digic_boards.c arm: memory: Replace memory_region_init_ram with memory_region_allocate_system_memory 2015-04-08 17:30:36 +01:00
exynos4_boards.c machine: Conversion of QEMUMachineInitArgs to MachineState 2014-05-28 17:35:01 +02:00
exynos4210.c error: Use error_report_err() where appropriate 2015-02-18 10:51:09 +01:00
fsl-imx25.c i.MX: Add SOC support for i.MX25 2015-09-07 10:39:30 +01:00
fsl-imx31.c i.MX: Add i2C devices to i.MX31 SOC 2015-09-07 10:39:31 +01:00
gumstix.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
highbank.c hw/arm/highbank.c: Wire FIQ between CPU <> GIC 2015-05-12 11:57:19 +01:00
imx25_pdk.c i.MX: Add the i.MX25 PDK platform 2015-09-07 10:39:31 +01:00
integratorcp.c arm: memory: Replace memory_region_init_ram with memory_region_allocate_system_memory 2015-04-08 17:30:36 +01:00
kzm.c i.MX: KZM: use standalone i.MX31 SOC support 2015-09-07 10:39:30 +01:00
mainstone.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
Makefile.objs i.MX: Add the i.MX25 PDK platform 2015-09-07 10:39:31 +01:00
musicpal.c musicpal: Drop eth_can_receive 2015-07-20 17:47:24 +01:00
netduino2.c netduino2: Add the Netduino 2 Machine 2015-03-11 13:21:06 +00:00
nseries.c hw/arm/nseries.c: Fix misusing qemu_allocate_irqs for single irq 2015-06-03 14:21:24 +03:00
omap1.c arm: Use g_new() & friends where that makes obvious sense 2015-09-07 10:39:27 +01:00
omap2.c arm: Use g_new() & friends where that makes obvious sense 2015-09-07 10:39:27 +01:00
omap_sx1.c hw/arm/omap_sx1.c: Fix memory leak spotted by valgrind 2015-06-03 14:21:24 +03:00
palm.c memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
pxa2xx.c arm: Use g_new() & friends where that makes obvious sense 2015-09-07 10:39:27 +01:00
pxa2xx_gpio.c Convert (ffs(val) - 1) to ctz32(val) 2015-04-28 15:36:08 +02:00
pxa2xx_pic.c hw/arm/pxa2xx: Mark coprocessor registers as ARM_CP_IO 2015-06-15 18:06:09 +01:00
realview.c error: Use error_report_err() where appropriate 2015-02-18 10:51:09 +01:00
spitz.c sysbus: Make devices picking up backends unavailable with -device 2015-04-02 15:30:44 +02:00
stellaris.c arm: Use g_new() & friends where that makes obvious sense 2015-09-07 10:39:27 +01:00
stm32f205_soc.c stm32f205: Add the stm32f205 SoC 2015-03-11 13:21:06 +00:00
strongarm.c arm: Use g_new() & friends where that makes obvious sense 2015-09-07 10:39:27 +01:00
strongarm.h hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00
sysbus-fdt.c hw/arm/sysbus-fdt: enable vfio-calxeda-xgmac dynamic instantiation 2015-06-19 14:17:44 +01:00
tosa.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
versatilepb.c arm: memory: Replace memory_region_init_ram with memory_region_allocate_system_memory 2015-04-08 17:30:36 +01:00
vexpress.c pflash_cfi01: change big-endian property to BIT type 2015-06-05 17:36:31 +02:00
virt-acpi-build.c hw/arm/virt: Add high MMIO PCI region, 512G in size 2015-09-07 10:39:29 +01:00
virt.c arm/virt: Add full-sized CPU affinity handling 2015-09-07 10:39:31 +01:00
xilinx_zynq.c arm: memory: Replace memory_region_init_ram with memory_region_allocate_system_memory 2015-04-08 17:30:36 +01:00
xlnx-ep108.c arm: xlnx-zynqmp: Add boot-cpu property 2015-06-19 14:17:45 +01:00
xlnx-zynqmp.c xlnx-zynqmp: Connect the four OCM banks 2015-08-25 15:45:06 +01:00
z2.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00