On 11/04/15 22:35, Kinney, Michael D wrote:
> Laszlo,
> 
> Yes.  They are compatible.  And I do recommend switching to 
> BaseXApicX2ApicLib unconditionally.

Thanks everyone for the feedback, I'll update the patch.

Paolo, in case this turns out the only code update after v4 (I can
dream...), are you okay if I fix up the patch without posting v5?

Thanks
Laszlo

>  
> Mike
> 
>> -----Original Message-----
>> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
>> Laszlo Ersek
>> Sent: Wednesday, November 04, 2015 12:09 PM
>> To: Kinney, Michael D; Paolo Bonzini; edk2-de...@ml01.01.org; Fan, Jeff;
>> Justen, Jordan L
>> Subject: Re: [edk2] [PATCH v4 18/41] OvmfPkg: select LocalApicLib instance
>> with x2apic support if SMM_REQUIRE
>>
>> On 11/04/15 17:55, Kinney, Michael D wrote:
>>> Laszlo,
>>>
>>> BaseXApicX2ApicLib is intended to be used by platforms that support more
>>> =256 CPUs.
>>>
>>> If the current system configuration is < 256 CPUs, then the platform will
>> typically stay in APIC mode.  If >= 256 CPUs are detected, then X2 APIC mode
>> can be enabled using the following API.
>>>
>>> VOID
>>> EFIAPI
>>> SetApicMode (
>>>   IN UINTN  ApicMode
>>>   )
>>>
>>> So just adding BaseXApicX2ApicLib to the DSC does not enable X2 APIC
>> mode.  You have to add logic to enable X2 APIC mode.
>>>
>>> I see that QEMU is limited to 255 VCPUs, so the use of BaseXApicLib makes
>> sense.  Are OVMF configurations supported with >= 256 VCPUs?
>>
>> I don't think so, but 64-bit Linux guest kernels enable x2apic mode
>> anyway, apparently regardless of the VCPU count and topology.
>>
>> This is normally not a problem, but with SMM support, the APIC library
>> gets used (within SMM) *after* Linux configures x2apic mode. This causes
>> the "basic" library instance to blow up. Therefore I flipped the library
>> class resolution to the one instance that supports x2apic mode, but only
>> for the SMM build of OVMF.
>>
>> So, the question Paolo and I have is *not* whether we must use the
>> x2apic-capable library in the SMM build -- that is a fact, forced by the
>> X64 Linux guest kernel's behavior.
>>
>> Neither is our question "how could we enable x2apic mode"? About that,
>> we don't care at the moment. :)
>>
>> Instead, our question is if we can use BaseXApicX2ApicLib even in the
>> *non*-SMM build, without fear of regressions. In other words, if
>> BaseXApicX2ApicLib can safely replace BaseXApicLib in a build where
>> BaseXApicLib would be otherwise fully sufficient.
>>
>> Because, if the answer is "yes, it is compatible", then we shouldn't
>> complicate the library class resolution in the OVMF DSC files, making it
>> dependent on the build type (i.e., SMM -> BaseXApicX2ApicLib, non-SMM ->
>> BaseXApicLib). Rather than that, we should indiscriminately use
>> BaseXApicX2ApicLib.
>>
>> So... is BaseXApicX2ApicLib compatible with BaseXApicLib in the domain
>> where the latter would work sufficiently?
>>
>> Thanks!
>> Laszlo
>>
>>
>>>
>>> Thanks,
>>>
>>> Mike
>>>
>>>> -----Original Message-----
>>>> From: Laszlo Ersek [mailto:ler...@redhat.com]
>>>> Sent: Wednesday, November 04, 2015 2:41 AM
>>>> To: Paolo Bonzini; edk2-de...@ml01.01.org; Kinney, Michael D; Fan, Jeff;
>>>> Justen, Jordan L
>>>> Subject: Re: [edk2] [PATCH v4 18/41] OvmfPkg: select LocalApicLib instance
>>>> with x2apic support if SMM_REQUIRE
>>>>
>>>> On 11/04/15 09:48, Paolo Bonzini wrote:
>>>>>
>>>>>
>>>>> On 03/11/2015 22:00, Laszlo Ersek wrote:
>>>>>> +
>>>>>> +!if $(SMM_REQUIRE) == TRUE
>>>>>> +
>>>>
>> LocalApicLib|UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf
>>>>>> +!else
>>>>>>    LocalApicLib|UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.inf
>>>>>> +!endif
>>>>>> +
>>>>>
>>>>> Can we enable BaseXApicX2ApicLib unconditionally?
>>>>
>>>> I think I am technically capable of that :), but should we? We haven't
>>>> used BaseXApicX2ApicLib thus far in OVMF, so I can't predict at all if
>>>> it could regress stuff or not. If it causes problems with the
>>>> SMM_REQUIRE build, so be it, that's new stuff, but I wanted to avoid
>>>> such a global change for the traditional build.
>>>>
>>>> I'm not against it, I just don't have experience with BaseXApicX2ApicLib.
>>>>
>>>> Mike, Jeff, Jordan -- what do you think? Why do separate BaseXApicLib
>>>> and BaseXApicX2ApicLib instances exist? And why has OvmfPkg always
>> used
>>>> the former? If it has only been for simplicity's sake, and
>>>> BaseXApicX2ApicLib is otherwise widely used internally at Intel, then I
>>>> think Paolo is right, and we should just keep the OVMF DSCs simple.
>>>>
>>>> Thanks
>>>> Laszlo
>>
>> _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.01.org
>> https://lists.01.org/mailman/listinfo/edk2-devel
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
> 

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

Reply via email to