[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XEN][PATCH 1/2] x86: hvm: vmx: fix runtime vmx presence check for !CONFIG_INTEL_VMX case



On 16/09/2025 9:57 am, Grygorii Strashko wrote:
> Hi Jan,
>
> On 16.09.25 17:34, Jan Beulich wrote:
>> On 16.09.2025 12:32, Grygorii Strashko wrote:
>>> From: Grygorii Strashko <grygorii_strashko@xxxxxxxx>
>>>
>>> Since commit b99227347230 ("x86: Fix AMD_SVM and INTEL_VMX
>>> dependency") the
>>> HVM Intel VT-x support can be gracefully disabled, but it still
>>> keeps VMX
>>> code partially built-in, because HVM code uses mix of:
>>>
>>>   - "cpu_has_vmx" macro, which doesn't account for CONFIG_INTEL_VMX cfg
>>>   - "using_vmx()" function, which accounts for CONFIG_INTEL_VMX cfg
>>>
>>> for runtime VMX availability checking. As result compiler DCE can't
>>> remove
>>> all, unreachable VMX code.
>>>
>>> Fix it by sticking to "cpu_has_vmx" macro usage only which is
>>> updated to
>>> account CONFIG_INTEL_VMX cfg.
>>>
>>> Signed-off-by: Grygorii Strashko <grygorii_strashko@xxxxxxxx>
>>> ---
>>> Hi
>>>
>>> It could be good to have it in 4.21, so vmx/svm disabling
>>> option will be in complete state within 4.21 version.
>>
>> Imo this isn't release critical and has come too late. It's of course
>> Oleksii's call in the end.
>>
>>> --- a/xen/arch/x86/include/asm/cpufeature.h
>>> +++ b/xen/arch/x86/include/asm/cpufeature.h
>>> @@ -136,7 +136,8 @@ static inline bool boot_cpu_has(unsigned int feat)
>>>   #define cpu_has_sse3            boot_cpu_has(X86_FEATURE_SSE3)
>>>   #define cpu_has_pclmulqdq       boot_cpu_has(X86_FEATURE_PCLMULQDQ)
>>>   #define cpu_has_monitor         boot_cpu_has(X86_FEATURE_MONITOR)
>>> -#define cpu_has_vmx             boot_cpu_has(X86_FEATURE_VMX)
>>> +#define cpu_has_vmx             (IS_ENABLED(CONFIG_INTEL_VMX) && \
>>> +                                 boot_cpu_has(X86_FEATURE_VMX))
>>
>> I'm pretty sure using_vmx() was introduced precisely to avoid the use of
>> IS_ENABLED() here. What is completely missing from the description is a
>> discussion of the effect of this change on pre-existing uses of the
>> macro. ISTR there being at least one instance which would break with
>> that change. And no, I'm not looking forward to digging that out again,
>> when I already did at the time the using_vmx() was suggested and then
>> implemented. (I can't exclude it was the SVM counterpart; we want to
>> keep both in sync in any event, imo.)
>
> Thank you for your comments and sorry for not digging into the history of
> the related patches.
>
> All, please ignore these patches as existing places. where
> cpu_has_vmx/smv
> are still used, need to be revised one by one.
>

Off the top of my head, fixups to MSR_FEATURE_CONTROL, and AMD SKINIT
need cpu_has_vmx/svm not guarded by Kconfig like this.

~Andrew




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.