* [edk2-devel] Avoid split lock detection warnings triggered by OVMF?
@ 2025-06-04 9:56 Friedrich Weber
2025-06-05 7:04 ` Ard Biesheuvel via groups.io
0 siblings, 1 reply; 3+ messages in thread
From: Friedrich Weber @ 2025-06-04 9:56 UTC (permalink / raw)
To: devel
Hi,
Some of our Proxmox VE users report that on CPUs with the split_lock_detect
flag (such as recent Intel CPUs), QEMU+KVM VMs using our build of OVMF trigger
split lock detection warnings on the host on VM start (only for VMs with more
than one core, though), e.g.:
Jun 03 10:16:25 host kernel: x86/split lock detection: #AC: CPU 1/KVM/26750 took a split_lock trap at address: 0x7ff4b050
But I can also reproduce this on upstream QEMU and current OVMF master, see
below.
In my understanding, split locks can be caused by misaligned atomic memory
accesses, and by default kernels >= 5.19 artifically slow down threads that
cause a split-lock operation for ~10ms [1]. One complication is that the
warning above is only logged once per thread, so if a thread causes more such
operations and is again slowed down, this is not logged again. We have put
together a bpftrace command that logs subsequent slowdowns, see [2].
Using bpftrace, we can see that each thread can cause 0-2 such split-lock
operation on boot, so each thread is potentially slowed down for 10-20ms in
total. This slowdown is negligible, but the warnings have other downsides:
First, they look a bit scary, and second, in case the actual VM workload causes
split-lock operations later on, these early and somewhat spurious warnings
"mask" later actual relevant warnings. So I was wondering -- do you think OVMF
could be patched to avoid the split-lock operations and thus avoid the warning?
Some more details -- I can reproduce the issue on current EDK II master
(8c04bcc7ed0efbb2e3fde23f787ff0249e62f874) with the following steps:
- have a CPU with split_lock_detect flag, in my case Intel i7-13700K,
split_lock_mitigate sysctl at its default 1
- build OVMF (the PcdFirmwareVendor is not necessary, just to avoid confusing
myself)
build -a IA32 -a X64 -t GCC -p OvmfPkg/OvmfPkgIa32X64.dsc --pcd PcdFirmwareVendor=L"built at $(date)\\0"
- copy over the resulting Build/Ovmf3264/DEBUG_GCC/FV/OVMF_CODE.fd
- run bpftrace in parallel:
bpftrace -e 'kfunc:vmlinux:split_lock_warn /0<*(uint32*)kaddr("sysctl_sld_mitigate")/{time("%H:%M:%S: "); printf("comm=%s tid=%d ip=0x%x\n", comm, tid, args->ip);}'
- run upstream QEMU 9.2.4 with this firmware:
/path/to/qemu-9.2.4/qemu-system-x86_64 -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd -smp 4,sockets=1,cores=4 -accel kvm
- find in the journal:
Jun 04 10:37:34 host kernel: x86/split lock detection: #AC: qemu-system-x86/62190 took a split_lock trap at address: 0x7e8a050
Jun 04 10:37:34 host kernel: x86/split lock detection: #AC: qemu-system-x86/62188 took a split_lock trap at address: 0x7e8a050
Jun 04 10:37:34 host kernel: x86/split lock detection: #AC: qemu-system-x86/62189 took a split_lock trap at address: 0x7e8a050
- find in the bpftrace:
10:37:34: comm=qemu-system-x86 tid=62190 ip=0x7e8a050
10:37:34: comm=qemu-system-x86 tid=62188 ip=0x7e8a050
10:37:34: comm=qemu-system-x86 tid=62189 ip=0x7e8a050
The ip seems to be the same on each QEMU run. So I dumped the surrounding
instructions using -monitor stdio and:
memsave 0x7e8a000 0x1000 memdump.raw
and
ndisasm -b64 memsave.raw
and 0x50 with some context is (full output in [3]):
0000004B 89F7 mov edi,esi
0000004D 83C77D add edi,byte +0x7d
00000050 F0FF07 lock inc dword [rdi]
where the last one may indeed be a misaligned atomic memory access?
The disassembly looks like it could match this portion of LongModeStart in
UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm:
LongModeStart:
[...]
; Increment the number of APs executing here as early as possible
; This is decremented in C code when AP is finished executing
mov edi, esi
add edi, MP_CPU_EXCHANGE_INFO_FIELD (NumApsExecuting)
lock inc dword [edi]
... so NumApsExecuting in MP_CPU_EXCHANGE_INFO *may* be the culprit, but this
is really speculation on my part :)
I know nothing about EDK II/OVMF internals, so even when assuming the above
speculation makes sense, I can't judge whether the above MP_CPU_EXCHANGE_INFO
could perhaps be rearranged/padded such that it doesn't trigger the split lock
detection. What do you think?
Happy to provide more information if needed, just let me know.
Thanks and best wishes,
Friedrich
[1] https://lwn.net/Articles/911219/
[2] https://pve.proxmox.com/wiki/Split_lock_detection
[3]
00000000 8EDA mov ds,edx
00000002 8EC2 mov es,edx
00000004 8EE2 mov fs,edx
00000006 8EEA mov gs,edx
00000008 8ED2 mov ss,edx
0000000A 89DE mov esi,ebx
0000000C 89F7 mov edi,esi
0000000E 83C76D add edi,byte +0x6d
00000011 803F00 cmp byte [rdi],0x0
00000014 742B jz 0x41
00000016 B9800000C0 mov ecx,0xc0000080
0000001B 0F32 rdmsr
0000001D 0FBAE80B bts eax,byte 0xb
00000021 0F30 wrmsr
00000023 89F7 mov edi,esi
00000025 83C771 add edi,byte +0x71
00000028 8B07 mov eax,[rdi]
0000002A 0F22D8 mov cr3,rax
0000002D 0F20E0 mov rax,cr4
00000030 0FBAE805 bts eax,byte 0x5
00000034 0F22E0 mov cr4,rax
00000037 0F20C0 mov rax,cr0
0000003A 0FBAE81F bts eax,byte 0x1f
0000003E 0F22C0 mov cr0,rax
00000041 89F7 mov edi,esi
00000043 83C775 add edi,byte +0x75
00000046 833F01 cmp dword [rdi],byte +0x1
00000049 752E jnz 0x79
0000004B 89F7 mov edi,esi
0000004D 83C77D add edi,byte +0x7d
00000050 F0FF07 lock inc dword [rdi]
00000053 89F7 mov edi,esi
00000055 83C761 add edi,byte +0x61
00000058 BB01000000 mov ebx,0x1
0000005D F00FC11F lock xadd [rdi],ebx
00000061 4389F7 mov r15d,esi
00000064 83C745 add edi,byte +0x45
00000067 8B07 mov eax,[rdi]
00000069 89D9 mov ecx,ebx
0000006B 41F7E1 mul r9d
0000006E 89F7 mov edi,esi
00000070 83C741 add edi,byte +0x41
00000073 0307 add eax,[rdi]
00000075 89C4 mov esp,eax
00000077 EB3F jmp short 0xb8
00000079 B800000000 mov eax,0x0
0000007E 0FA2 cpuid
00000080 83F80B cmp eax,byte +0xb
00000083 7213 jc 0x98
00000085 B80B000000 mov eax,0xb
0000008A 31C9 xor ecx,ecx
0000008C 0FA2 cpuid
0000008E F7C3FFFF0000 test ebx,0xffff
00000094 7402 jz 0x98
00000096 EB0C jmp short 0xa4
00000098 B801000000 mov eax,0x1
0000009D 0FA2 cpuid
0000009F C1EB18 shr ebx,byte 0x18
000000A2 89DA mov edx,ebx
000000A4 31DB xor ebx,ebx
000000A6 8D4679 lea eax,[rsi+0x79]
000000A9 8B38 mov edi,[rax]
000000AB 3917 cmp [rdi],edx
000000AD 7406 jz 0xb5
000000AF 83C714 add edi,byte +0x14
000000B2 43EBF6 jmp short 0xab
000000B5 8B670C mov esp,[rdi+0xc]
000000B8 83EC04 sub esp,byte +0x4
000000BB 55 push rbp
000000BC 31ED xor ebp,ebp
000000BE 55 push rbp
000000BF 89E5 mov ebp,esp
000000C1 B8F0CAEB07 mov eax,0x7ebcaf0
000000C6 FFD0 call rax
000000C8 53 push rbx
000000C9 89F0 mov eax,esi
000000CB 0581000000 add eax,0x81
000000D0 FF30 push qword [rax]
000000D2 89F7 mov edi,esi
000000D4 83C749 add edi,byte +0x49
000000D7 8B07 mov eax,[rdi]
000000D9 FFD0 call rax
000000DB EBFE jmp short 0xdb
000000DD EBFE jmp short 0xdd
... only zeroes follow
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#121393): https://edk2.groups.io/g/devel/message/121393
Mute This Topic: https://groups.io/mt/113480235/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [edk2-devel] Avoid split lock detection warnings triggered by OVMF?
2025-06-04 9:56 [edk2-devel] Avoid split lock detection warnings triggered by OVMF? Friedrich Weber
@ 2025-06-05 7:04 ` Ard Biesheuvel via groups.io
2025-06-05 9:00 ` Friedrich Weber
0 siblings, 1 reply; 3+ messages in thread
From: Ard Biesheuvel via groups.io @ 2025-06-05 7:04 UTC (permalink / raw)
To: devel, f.weber
Thanks for the elaborate report. Does the following help?
diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.h
b/UefiCpuPkg/Library/MpInitLib/MpLib.h
index a63bb81bef88..a9b3fa77e14d 100644
--- a/UefiCpuPkg/Library/MpInitLib/MpLib.h
+++ b/UefiCpuPkg/Library/MpInitLib/MpLib.h
@@ -213,8 +213,6 @@ typedef struct {
UINTN StackStart;
UINTN StackSize;
UINTN CFunction;
- IA32_DESCRIPTOR GdtrProfile;
- IA32_DESCRIPTOR IdtrProfile;
UINTN BufferStart;
UINTN ModeOffset;
UINTN ApIndex;
@@ -227,6 +225,8 @@ typedef struct {
UINTN NumApsExecuting;
CPU_MP_DATA *CpuMpData;
UINTN InitializeFloatingPointUnitsAddress;
+ IA32_DESCRIPTOR GdtrProfile;
+ IA32_DESCRIPTOR IdtrProfile;
UINT32 ModeTransitionMemory;
UINT16 ModeTransitionSegment;
UINT32 ModeHighMemory;
diff --git a/UefiCpuPkg/Library/MpInitLib/MpEqu.inc
b/UefiCpuPkg/Library/MpInitLib/MpEqu.inc
index d8ba9ea1246c..d67c4c923c82 100644
--- a/UefiCpuPkg/Library/MpInitLib/MpEqu.inc
+++ b/UefiCpuPkg/Library/MpInitLib/MpEqu.inc
@@ -74,8 +74,6 @@ struc MP_CPU_EXCHANGE_INFO
.StackStart: CTYPE_UINTN 1
.StackSize: CTYPE_UINTN 1
.CFunction: CTYPE_UINTN 1
- .GdtrProfile: CTYPE_UINT8 IA32_DESCRIPTOR_size
- .IdtrProfile: CTYPE_UINT8 IA32_DESCRIPTOR_size
.BufferStart: CTYPE_UINTN 1
.ModeOffset: CTYPE_UINTN 1
.ApIndex: CTYPE_UINTN 1
@@ -88,6 +86,8 @@ struc MP_CPU_EXCHANGE_INFO
.NumApsExecuting: CTYPE_UINTN 1
.CpuMpData: CTYPE_UINTN 1
.InitializeFloatingPointUnits: CTYPE_UINTN 1
+ .GdtrProfile: CTYPE_UINT8 IA32_DESCRIPTOR_size
+ .IdtrProfile: CTYPE_UINT8 IA32_DESCRIPTOR_size
.ModeTransitionMemory: CTYPE_UINT32 1
.ModeTransitionSegment: CTYPE_UINT16 1
.ModeHighMemory: CTYPE_UINT32 1
On Thu, 5 Jun 2025 at 06:18, Friedrich Weber <f.weber@proxmox.com> wrote:
>
> Hi,
>
> Some of our Proxmox VE users report that on CPUs with the split_lock_detect
> flag (such as recent Intel CPUs), QEMU+KVM VMs using our build of OVMF trigger
> split lock detection warnings on the host on VM start (only for VMs with more
> than one core, though), e.g.:
>
> Jun 03 10:16:25 host kernel: x86/split lock detection: #AC: CPU 1/KVM/26750 took a split_lock trap at address: 0x7ff4b050
>
> But I can also reproduce this on upstream QEMU and current OVMF master, see
> below.
>
> In my understanding, split locks can be caused by misaligned atomic memory
> accesses, and by default kernels >= 5.19 artifically slow down threads that
> cause a split-lock operation for ~10ms [1]. One complication is that the
> warning above is only logged once per thread, so if a thread causes more such
> operations and is again slowed down, this is not logged again. We have put
> together a bpftrace command that logs subsequent slowdowns, see [2].
>
> Using bpftrace, we can see that each thread can cause 0-2 such split-lock
> operation on boot, so each thread is potentially slowed down for 10-20ms in
> total. This slowdown is negligible, but the warnings have other downsides:
> First, they look a bit scary, and second, in case the actual VM workload causes
> split-lock operations later on, these early and somewhat spurious warnings
> "mask" later actual relevant warnings. So I was wondering -- do you think OVMF
> could be patched to avoid the split-lock operations and thus avoid the warning?
>
> Some more details -- I can reproduce the issue on current EDK II master
> (8c04bcc7ed0efbb2e3fde23f787ff0249e62f874) with the following steps:
>
> - have a CPU with split_lock_detect flag, in my case Intel i7-13700K,
> split_lock_mitigate sysctl at its default 1
>
> - build OVMF (the PcdFirmwareVendor is not necessary, just to avoid confusing
> myself)
>
> build -a IA32 -a X64 -t GCC -p OvmfPkg/OvmfPkgIa32X64.dsc --pcd PcdFirmwareVendor=L"built at $(date)\\0"
>
> - copy over the resulting Build/Ovmf3264/DEBUG_GCC/FV/OVMF_CODE.fd
> - run bpftrace in parallel:
>
> bpftrace -e 'kfunc:vmlinux:split_lock_warn /0<*(uint32*)kaddr("sysctl_sld_mitigate")/{time("%H:%M:%S: "); printf("comm=%s tid=%d ip=0x%x\n", comm, tid, args->ip);}'
>
> - run upstream QEMU 9.2.4 with this firmware:
>
> /path/to/qemu-9.2.4/qemu-system-x86_64 -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd -smp 4,sockets=1,cores=4 -accel kvm
>
> - find in the journal:
>
> Jun 04 10:37:34 host kernel: x86/split lock detection: #AC: qemu-system-x86/62190 took a split_lock trap at address: 0x7e8a050
> Jun 04 10:37:34 host kernel: x86/split lock detection: #AC: qemu-system-x86/62188 took a split_lock trap at address: 0x7e8a050
> Jun 04 10:37:34 host kernel: x86/split lock detection: #AC: qemu-system-x86/62189 took a split_lock trap at address: 0x7e8a050
>
> - find in the bpftrace:
>
> 10:37:34: comm=qemu-system-x86 tid=62190 ip=0x7e8a050
> 10:37:34: comm=qemu-system-x86 tid=62188 ip=0x7e8a050
> 10:37:34: comm=qemu-system-x86 tid=62189 ip=0x7e8a050
>
> The ip seems to be the same on each QEMU run. So I dumped the surrounding
> instructions using -monitor stdio and:
>
> memsave 0x7e8a000 0x1000 memdump.raw
>
> and
>
> ndisasm -b64 memsave.raw
>
> and 0x50 with some context is (full output in [3]):
>
> 0000004B 89F7 mov edi,esi
> 0000004D 83C77D add edi,byte +0x7d
> 00000050 F0FF07 lock inc dword [rdi]
>
> where the last one may indeed be a misaligned atomic memory access?
>
> The disassembly looks like it could match this portion of LongModeStart in
> UefiCpuPkg/Library/MpInitLib/X64/MpFuncs.nasm:
>
> LongModeStart:
> [...]
>
> ; Increment the number of APs executing here as early as possible
> ; This is decremented in C code when AP is finished executing
> mov edi, esi
> add edi, MP_CPU_EXCHANGE_INFO_FIELD (NumApsExecuting)
> lock inc dword [edi]
>
> ... so NumApsExecuting in MP_CPU_EXCHANGE_INFO *may* be the culprit, but this
> is really speculation on my part :)
>
> I know nothing about EDK II/OVMF internals, so even when assuming the above
> speculation makes sense, I can't judge whether the above MP_CPU_EXCHANGE_INFO
> could perhaps be rearranged/padded such that it doesn't trigger the split lock
> detection. What do you think?
>
> Happy to provide more information if needed, just let me know.
>
> Thanks and best wishes,
>
> Friedrich
>
> [1] https://lwn.net/Articles/911219/
> [2] https://pve.proxmox.com/wiki/Split_lock_detection
> [3]
>
> 00000000 8EDA mov ds,edx
> 00000002 8EC2 mov es,edx
> 00000004 8EE2 mov fs,edx
> 00000006 8EEA mov gs,edx
> 00000008 8ED2 mov ss,edx
> 0000000A 89DE mov esi,ebx
> 0000000C 89F7 mov edi,esi
> 0000000E 83C76D add edi,byte +0x6d
> 00000011 803F00 cmp byte [rdi],0x0
> 00000014 742B jz 0x41
> 00000016 B9800000C0 mov ecx,0xc0000080
> 0000001B 0F32 rdmsr
> 0000001D 0FBAE80B bts eax,byte 0xb
> 00000021 0F30 wrmsr
> 00000023 89F7 mov edi,esi
> 00000025 83C771 add edi,byte +0x71
> 00000028 8B07 mov eax,[rdi]
> 0000002A 0F22D8 mov cr3,rax
> 0000002D 0F20E0 mov rax,cr4
> 00000030 0FBAE805 bts eax,byte 0x5
> 00000034 0F22E0 mov cr4,rax
> 00000037 0F20C0 mov rax,cr0
> 0000003A 0FBAE81F bts eax,byte 0x1f
> 0000003E 0F22C0 mov cr0,rax
> 00000041 89F7 mov edi,esi
> 00000043 83C775 add edi,byte +0x75
> 00000046 833F01 cmp dword [rdi],byte +0x1
> 00000049 752E jnz 0x79
> 0000004B 89F7 mov edi,esi
> 0000004D 83C77D add edi,byte +0x7d
> 00000050 F0FF07 lock inc dword [rdi]
> 00000053 89F7 mov edi,esi
> 00000055 83C761 add edi,byte +0x61
> 00000058 BB01000000 mov ebx,0x1
> 0000005D F00FC11F lock xadd [rdi],ebx
> 00000061 4389F7 mov r15d,esi
> 00000064 83C745 add edi,byte +0x45
> 00000067 8B07 mov eax,[rdi]
> 00000069 89D9 mov ecx,ebx
> 0000006B 41F7E1 mul r9d
> 0000006E 89F7 mov edi,esi
> 00000070 83C741 add edi,byte +0x41
> 00000073 0307 add eax,[rdi]
> 00000075 89C4 mov esp,eax
> 00000077 EB3F jmp short 0xb8
> 00000079 B800000000 mov eax,0x0
> 0000007E 0FA2 cpuid
> 00000080 83F80B cmp eax,byte +0xb
> 00000083 7213 jc 0x98
> 00000085 B80B000000 mov eax,0xb
> 0000008A 31C9 xor ecx,ecx
> 0000008C 0FA2 cpuid
> 0000008E F7C3FFFF0000 test ebx,0xffff
> 00000094 7402 jz 0x98
> 00000096 EB0C jmp short 0xa4
> 00000098 B801000000 mov eax,0x1
> 0000009D 0FA2 cpuid
> 0000009F C1EB18 shr ebx,byte 0x18
> 000000A2 89DA mov edx,ebx
> 000000A4 31DB xor ebx,ebx
> 000000A6 8D4679 lea eax,[rsi+0x79]
> 000000A9 8B38 mov edi,[rax]
> 000000AB 3917 cmp [rdi],edx
> 000000AD 7406 jz 0xb5
> 000000AF 83C714 add edi,byte +0x14
> 000000B2 43EBF6 jmp short 0xab
> 000000B5 8B670C mov esp,[rdi+0xc]
> 000000B8 83EC04 sub esp,byte +0x4
> 000000BB 55 push rbp
> 000000BC 31ED xor ebp,ebp
> 000000BE 55 push rbp
> 000000BF 89E5 mov ebp,esp
> 000000C1 B8F0CAEB07 mov eax,0x7ebcaf0
> 000000C6 FFD0 call rax
> 000000C8 53 push rbx
> 000000C9 89F0 mov eax,esi
> 000000CB 0581000000 add eax,0x81
> 000000D0 FF30 push qword [rax]
> 000000D2 89F7 mov edi,esi
> 000000D4 83C749 add edi,byte +0x49
> 000000D7 8B07 mov eax,[rdi]
> 000000D9 FFD0 call rax
> 000000DB EBFE jmp short 0xdb
> 000000DD EBFE jmp short 0xdd
> ... only zeroes follow
>
>
>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#121394): https://edk2.groups.io/g/devel/message/121394
Mute This Topic: https://groups.io/mt/113480235/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [edk2-devel] Avoid split lock detection warnings triggered by OVMF?
2025-06-05 7:04 ` Ard Biesheuvel via groups.io
@ 2025-06-05 9:00 ` Friedrich Weber
0 siblings, 0 replies; 3+ messages in thread
From: Friedrich Weber @ 2025-06-05 9:00 UTC (permalink / raw)
To: Ard Biesheuvel, devel
Thank you for your fast answer!
On 05/06/2025 09:04, Ard Biesheuvel wrote:
> Thanks for the elaborate report. Does the following help?
>
> diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.h
> b/UefiCpuPkg/Library/MpInitLib/MpLib.h
> index a63bb81bef88..a9b3fa77e14d 100644
> --- a/UefiCpuPkg/Library/MpInitLib/MpLib.h
> +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.h
> @@ -213,8 +213,6 @@ typedef struct {
> UINTN StackStart;
> UINTN StackSize;
> UINTN CFunction;
> - IA32_DESCRIPTOR GdtrProfile;
> - IA32_DESCRIPTOR IdtrProfile;
> UINTN BufferStart;
> UINTN ModeOffset;
> UINTN ApIndex;
> @@ -227,6 +225,8 @@ typedef struct {
> UINTN NumApsExecuting;
> CPU_MP_DATA *CpuMpData;
> UINTN InitializeFloatingPointUnitsAddress;
> + IA32_DESCRIPTOR GdtrProfile;
> + IA32_DESCRIPTOR IdtrProfile;
> UINT32 ModeTransitionMemory;
> UINT16 ModeTransitionSegment;
> UINT32 ModeHighMemory;
> diff --git a/UefiCpuPkg/Library/MpInitLib/MpEqu.inc
> b/UefiCpuPkg/Library/MpInitLib/MpEqu.inc
> index d8ba9ea1246c..d67c4c923c82 100644
> --- a/UefiCpuPkg/Library/MpInitLib/MpEqu.inc
> +++ b/UefiCpuPkg/Library/MpInitLib/MpEqu.inc
> @@ -74,8 +74,6 @@ struc MP_CPU_EXCHANGE_INFO
> .StackStart: CTYPE_UINTN 1
> .StackSize: CTYPE_UINTN 1
> .CFunction: CTYPE_UINTN 1
> - .GdtrProfile: CTYPE_UINT8 IA32_DESCRIPTOR_size
> - .IdtrProfile: CTYPE_UINT8 IA32_DESCRIPTOR_size
> .BufferStart: CTYPE_UINTN 1
> .ModeOffset: CTYPE_UINTN 1
> .ApIndex: CTYPE_UINTN 1
> @@ -88,6 +86,8 @@ struc MP_CPU_EXCHANGE_INFO
> .NumApsExecuting: CTYPE_UINTN 1
> .CpuMpData: CTYPE_UINTN 1
> .InitializeFloatingPointUnits: CTYPE_UINTN 1
> + .GdtrProfile: CTYPE_UINT8 IA32_DESCRIPTOR_size
> + .IdtrProfile: CTYPE_UINT8 IA32_DESCRIPTOR_size
> .ModeTransitionMemory: CTYPE_UINT32 1
> .ModeTransitionSegment: CTYPE_UINT16 1
> .ModeHighMemory: CTYPE_UINT32 1
Applied this on top of 8c04bcc7ed, and the minimal reproducer doesn't
trigger any split lock warnings anymore. I also booted some
Linux+Windows test VMs with a patched firmware build and didn't see any
split lock warnings caused by OVMF (the Windows VMs seem to occasionally
trigger some when booted, but this is a different issue).
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#121395): https://edk2.groups.io/g/devel/message/121395
Mute This Topic: https://groups.io/mt/113480235/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-06-05 9:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-04 9:56 [edk2-devel] Avoid split lock detection warnings triggered by OVMF? Friedrich Weber
2025-06-05 7:04 ` Ard Biesheuvel via groups.io
2025-06-05 9:00 ` Friedrich Weber
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox