mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-01-03 21:20:31 -07:00
load_dtb() depends on arm_load_kernel() to figure out place
in RAM where it should be loaded, but it's not required for
arm_load_kernel() to work. Sometimes it's neccesary for
devices added with -device/device_add to be enumerated in
DTB as well, which's lead to [1] and surrounding commits to
add 2 more machine_done notifiers with non obvious ordering
to make dynamic sysbus devices initialization happen in
the right order.
However instead of moving whole arm_load_kernel() in to
machine_done, it's sufficient to move only load_dtb() into
virt_machine_done() notifier and remove ArmLoadKernelNotifier/
/PlatformBusFDTNotifierParams notifiers, which saves us ~90LOC
and simplifies code flow quite a bit.
Later would allow to consolidate DTB generation within one
function for 'mach-virt' board and make it reentrant so it
could generate updated DTB in device hotplug secenarios.
While at it rename load_dtb() to arm_load_dtb() since it's
public now.
Add additional field skip_dtb_autoload to struct arm_boot_info
to allow manual DTB load later in mach-virt and to avoid touching
all other boards to explicitly call arm_load_dtb().
1) (
|
||
|---|---|---|
| .. | ||
| allwinner-a10.h | ||
| arm.h | ||
| armv7m.h | ||
| aspeed_soc.h | ||
| bcm2835_peripherals.h | ||
| bcm2836.h | ||
| digic.h | ||
| exynos4210.h | ||
| fdt.h | ||
| fsl-imx6.h | ||
| fsl-imx7.h | ||
| fsl-imx25.h | ||
| fsl-imx31.h | ||
| iotkit.h | ||
| linux-boot-if.h | ||
| msf2-soc.h | ||
| omap.h | ||
| primecell.h | ||
| pxa.h | ||
| raspi_platform.h | ||
| sharpsl.h | ||
| smmu-common.h | ||
| smmuv3.h | ||
| soc_dma.h | ||
| stm32f205_soc.h | ||
| sysbus-fdt.h | ||
| virt.h | ||
| xlnx-zynqmp.h | ||