3b77f6c353
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 |