mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-17 22:49:02 +00:00
x86: cpu: Skip init code when chain loading
When U-Boot is not the first-stage bootloader the interrupt and cache init must be skipped, as well as init for various peripherals. Update the code to add checks for this. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
52b9beb527
commit
526aabec24
3 changed files with 10 additions and 3 deletions
|
@ -239,8 +239,10 @@ int cpu_init_r(void)
|
|||
struct udevice *dev;
|
||||
int ret;
|
||||
|
||||
if (!ll_boot_init())
|
||||
if (!ll_boot_init()) {
|
||||
uclass_first_device(UCLASS_PCI, &dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = x86_init_cpus();
|
||||
if (ret)
|
||||
|
|
|
@ -264,6 +264,9 @@ int interrupt_init(void)
|
|||
struct udevice *dev;
|
||||
int ret;
|
||||
|
||||
if (!ll_boot_init())
|
||||
return 0;
|
||||
|
||||
/* Try to set up the interrupt router, but don't require one */
|
||||
ret = irq_first_device_type(X86_IRQT_BASE, &dev);
|
||||
if (ret && ret != -ENODEV)
|
||||
|
@ -295,8 +298,7 @@ int interrupt_init(void)
|
|||
* TODO(sjg@chromium.org): But we don't handle these correctly when
|
||||
* booted from EFI.
|
||||
*/
|
||||
if (ll_boot_init())
|
||||
enable_interrupts();
|
||||
enable_interrupts();
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -30,6 +30,9 @@ int init_cache_f_r(void)
|
|||
return ret;
|
||||
}
|
||||
|
||||
if (!ll_boot_init())
|
||||
return 0;
|
||||
|
||||
/* Initialise the CPU cache(s) */
|
||||
return init_cache();
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue