On 10/30/15 13:26, Laszlo Ersek wrote:

>> diff --git a/UefiCpuPkg/CpuDxe/CpuMp.c b/UefiCpuPkg/CpuDxe/CpuMp.c
>> index 3f56faa..e7f5b41 100644
>> --- a/UefiCpuPkg/CpuDxe/CpuMp.c
>> +++ b/UefiCpuPkg/CpuDxe/CpuMp.c
>> @@ -1451,6 +1451,8 @@ ApEntryPointInC (
>>    VOID*           TopOfApStack;
>>    UINTN           ProcessorNumber;
>>
>> +  AsmEnableCache ();
>> +
>>    if (!mAPsAlreadyInitFinished) {
>>      FillInProcessorInformation (FALSE, mMpSystemData.NumberOfProcessors);
>>      TopOfApStack  = (UINT8*)mApStackStart + gApStackSize;
> 
>     This should clear CR0.CD, and "undo" kernel commit b18d5431acc7 for
>     the AP (by falsifying the second subcondition seen in (1)).
> 
> Janusz, can you please test this one-liner (with no other out-of-tree
> patch applied)?

If it doesn't help (much), we can also try to do this in assembly, in
earlier parts of the startup code. Because, AsmApEntryPoint() in

UefiCpuPkg/CpuDxe/Ia32/MpAsm.asm
UefiCpuPkg/CpuDxe/Ia32/MpAsm.nasm
UefiCpuPkg/CpuDxe/X64/MpAsm.asm
UefiCpuPkg/CpuDxe/X64/MpAsm.nasm

already runs spinlock-like code.

Thanks
Laszlo
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to