qemu/hw/arm
Laszlo Ersek 578f3c7b08 arm: add fw_cfg to "virt" board
fw_cfg already supports exposure over MMIO (used in ppc/mac_newworld.c,
ppc/mac_oldworld.c, sparc/sun4m.c); we can easily add it to the "virt"
board.

Because MMIO access is slow on ARM KVM, we enable the guest, with
fw_cfg_init_mem_wide(), to transfer up to 8 bytes with a single access.
This has been measured to speed up transfers up to 7.5-fold, relative to
single byte data access, on both ARM KVM and x86_64 TCG.

The MMIO register block of fw_cfg is advertized in the device tree. As
base address we pick 0x09020000, which conforms to the comment preceding
"a15memmap": it falls in the miscellaneous device I/O range 128MB..256MB,
and it is aligned at 64KB. The DTB properties follow the documentation in
the Linux source file "Documentation/devicetree/bindings/arm/fw-cfg.txt".

fw_cfg automatically exports a number of files to the guest; for example,
"bootorder" (see fw_cfg_machine_reset()).

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-id: 1419250305-31062-9-git-send-email-pbonzini@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2014-12-22 23:39:19 +00:00
..
allwinner-a10.c hw/arm/allwinner-a10: initialize EMAC 2014-02-08 14:50:48 +00:00
armv7m.c memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
boot.c target-arm: Add arm_boot_info secure_boot control 2014-12-22 23:12:28 +00:00
collie.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
cubieboard.c memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
digic_boards.c memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
digic.c hw/arm/digic: add UART support 2013-12-17 20:12:51 +00:00
exynos4_boards.c machine: Conversion of QEMUMachineInitArgs to MachineState 2014-05-28 17:35:01 +02:00
exynos4210.c target-arm: Disable EL3 on unsupported machines 2014-12-22 23:12:28 +00:00
gumstix.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
highbank.c target-arm: Disable EL3 on unsupported machines 2014-12-22 23:12:28 +00:00
integratorcp.c target-arm: Disable EL3 on unsupported machines 2014-12-22 23:12:28 +00:00
kzm.c memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
mainstone.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
Makefile.objs hw/arm: add cubieboard support 2013-12-17 20:12:51 +00:00
musicpal.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
nseries.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
omap1.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
omap2.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
omap_sx1.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
palm.c memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
pxa2xx_gpio.c hw/arm/pxa2xx_gpio: Correct and register vmstate 2014-06-29 18:38:40 +01:00
pxa2xx_pic.c savevm: Remove all the unneeded version_minimum_id_old (arm) 2014-05-13 16:09:35 +01:00
pxa2xx.c target-arm: make DACR banked 2014-12-11 12:07:51 +00:00
realview.c target-arm: Disable EL3 on unsupported machines 2014-12-22 23:12:28 +00:00
spitz.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
stellaris.c arm: stellaris: Remove misleading address_space_mem var 2014-08-19 19:02:40 +01:00
strongarm.c memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
strongarm.h hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00
tosa.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
versatilepb.c target-arm: Disable EL3 on unsupported machines 2014-12-22 23:12:28 +00:00
vexpress.c target-arm: Enable CPU has_el3 prop during VE init 2014-12-22 23:12:28 +00:00
virt.c arm: add fw_cfg to "virt" board 2014-12-22 23:39:19 +00:00
xilinx_zynq.c target-arm: Disable EL3 on unsupported machines 2014-12-22 23:12:28 +00:00
z2.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00