mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 16:10:58 +00:00
1e9ced28f1
At present it is possible to call uclass_get() before driver model is
inited. In fact this happens on x86 boards which use Intel FSPv1, since
mrccache_get_region() tries to get the SPI flash device very early
during init.
This has always been undefined behaviour. Previously it generally worked,
i.e. returned an error code without crashing, because gd->uclass_root_s
is zeroed and the uclass can be added despite driver model not being
ready, due to the way lists are implemented. With the change to use a
gd->uclass_root pointer, this no-longer works. For example, it causes a
hang on minnowmax.
Fix this by adding a check that driver model is ready when uclass_get() is
called. This function is called in the process of locating any device, so
it is a good place to add the check.
This fixes booting on minnowmax.
Signed-off-by: Simon Glass <sjg@chromium.org>
Fixes:
|
||
---|---|---|
.. | ||
cmd | ||
common | ||
dm | ||
env | ||
fs | ||
image | ||
lib | ||
log | ||
optee | ||
overlay | ||
py | ||
stdint | ||
trace | ||
bloblist.c | ||
bootm.c | ||
cmd_ut.c | ||
command_ut.c | ||
common.sh | ||
compression.c | ||
Kconfig | ||
Makefile | ||
nokia_rx51_test.sh | ||
print_ut.c | ||
run | ||
str_ut.c | ||
test-main.c | ||
time_ut.c | ||
unicode_ut.c | ||
ut.c |