diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2024-09-11 00:39:30 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2024-09-16 08:09:38 +0000 |
commit | b7ea2b69ef666ee8cdc6dcc814d610df0a7f0999 (patch) | |
tree | 1547e65bda3b67c822690cd2cda0a073333d5560 | |
parent | 9a49c98bafbea2a896f72defe7d9f2b65a474c41 (diff) | |
download | src-b7ea2b69ef666ee8cdc6dcc814d610df0a7f0999.tar.gz src-b7ea2b69ef666ee8cdc6dcc814d610df0a7f0999.zip |
amd64 la57_trampoline: disable EFER.LME around setting CR4.LA57
Changing paging mode while LME is set seems to be not allowed.
Sponsored by: Advanced Micro Devices (AMD)
Sponsored by: jThe FreeBSD Foundation
MFC after: 1 week
-rw-r--r-- | sys/amd64/amd64/locore.S | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/amd64/amd64/locore.S b/sys/amd64/amd64/locore.S index 86db0f76b22b..9a991402cdc2 100644 --- a/sys/amd64/amd64/locore.S +++ b/sys/amd64/amd64/locore.S @@ -114,11 +114,21 @@ l1: movl $(3<<3),%eax andl $~CR0_PG,%eax movl %eax,%cr0 + movl $MSR_EFER,%ecx + rdmsr + andl $~EFER_LME,%eax + wrmsr + movl %cr4,%eax orl $CR4_LA57,%eax movl %eax,%cr4 movl %edi,%cr3 + + rdmsr + orl $EFER_LME,%eax + wrmsr + movl %ebp,%cr0 jmp 1f |