diff options
author | Lokesh Vutla <lokeshvutla@ti.com> | 2017-02-13 03:51:22 (GMT) |
---|---|---|
committer | Stefan Roese <sr@denx.de> | 2017-03-29 05:38:07 (GMT) |
commit | d666558042a0272de3f38607ce15088e0d4c88b0 (patch) | |
tree | 7c9e6bf58d4024c9d9761662c8306b70a48a4cf2 /drivers | |
parent | 7a92652346b0a06566c2ed00107fae24efc386ba (diff) | |
download | u-boot-d666558042a0272de3f38607ce15088e0d4c88b0.tar.xz |
dm: core: Fix Handling of global_data moving in SPL
commit 2f11cd9121658 ("dm: core: Handle global_data moving in SPL")
handles relocation of GD in SPL if spl_init() is called before
board_init_r(). So, uclass_root.next need not be initialized always
and accessing uclass_root.next->prev gives an abort. Update the
uclass_root only if it is available.
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/core/root.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/core/root.c b/drivers/core/root.c index 93ab568..33cfde6 100644 --- a/drivers/core/root.c +++ b/drivers/core/root.c @@ -44,8 +44,10 @@ struct udevice *dm_root(void) void dm_fixup_for_gd_move(struct global_data *new_gd) { /* The sentinel node has moved, so update things that point to it */ - new_gd->uclass_root.next->prev = &new_gd->uclass_root; - new_gd->uclass_root.prev->next = &new_gd->uclass_root; + if (gd->dm_root) { + new_gd->uclass_root.next->prev = &new_gd->uclass_root; + new_gd->uclass_root.prev->next = &new_gd->uclass_root; + } } fdt_addr_t dm_get_translation_offset(void) |