diff options
author | Bin Meng <bmeng.cn@gmail.com> | 2015-09-10 06:20:26 (GMT) |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2015-09-17 01:53:53 (GMT) |
commit | 693b5f6c71c870276f5c370254fafcb10ee43cb1 (patch) | |
tree | cdf994bd06c48bc14ee4699e83c14ef3fac4ee8e /arch/x86/cpu | |
parent | 8e3683029ee4e828cdecf53d4f05c746b4227e4e (diff) | |
download | u-boot-693b5f6c71c870276f5c370254fafcb10ee43cb1.tar.xz |
x86: quark: Lock HMBOUND register before jumping to kernel
When Linux kernel boots, it hangs at:
[ 0.829408] Intel Quark side-band driver registered
This happens when Quark kernel Isolated Memory Region (IMR) driver
tries to lock an IMR register to protect kernel's text and rodata
sections. However in order to have IMR function correctly, HMBOUND
register must be locked otherwise the system just hangs.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'arch/x86/cpu')
-rw-r--r-- | arch/x86/cpu/quark/quark.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/cpu/quark/quark.c b/arch/x86/cpu/quark/quark.c index 8d53fe3..3ddf079 100644 --- a/arch/x86/cpu/quark/quark.c +++ b/arch/x86/cpu/quark/quark.c @@ -288,5 +288,8 @@ void board_final_cleanup(void) val &= ~0xff0000; writel(val, &rcba->esd); + /* Lock HMBOUND for security */ + msg_port_setbits(MSG_PORT_HOST_BRIDGE, HM_BOUND, HM_BOUND_LOCK); + return; } |