|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1] x86: make Viridian support optional
On 20.03.2025 16:18, Alejandro Vallejo wrote:
> On Thu Mar 20, 2025 at 9:39 AM GMT, Sergiy Kibrik wrote:
>> hi Alejandro,
>>
>> 17.03.25 11:19, Alejandro Vallejo:
>> [..]
>>> endif
>>>
>>> +config HVM_VIRIDIAN
>>> + bool "Viridian enlightenments support" if EXPERT
>>> + depends on HVM
>>> + default y
>>> +
>>>
>>>
>>>
>>> I don't see why this should be gated by EXPERT, provided a
>>> suitable (now absent) help message was to exist explaining
>>> what it does in plain simple words.
>>
>> The option is intended primarily for fine-tuned systems optimized for
>> particular platform and mode of operation. As for generic systems (e.g.
>> distributions) whey wouldn't want to disable it anyway.
>
>
>
>>>
>>> For the title, I'd say it needs to properly state it refers to
>>> enlightenments for guests, rather than enlightenments for
>>> Xen itself when running under Hyper-V. As it is, it sounds
>>> ambiguous (Maybe "Hyper-V enlighnments for guests"?).
>>>
>>
>> Agree, "Hyper-V enlighnments for guests" is better title.
>> As for help message, would the one below be sufficient?:
>>
>> help
>> Support optimizations for Hyper-V guests such as faster hypercalls,
>> efficient timer and interrupt handling, and enhanced paravirtualized
>> I/O. This is to improve performance and compatibility of Windows VMs.
>>
>> If unsure, say Y.
>
> Sounds good enough to me.
>
>>
>>
>>> On a personal nitpicky preference note, I'd say HVM_VIRIDIAN sounds
>>> rather redundant, and I think just VIRIDIAN works just as well
>>> while being shorter.
>>>
>>
>> this is rather to highlight the fact that the code is part of HVM
>> support, a bit of self-documenting
>>
>> [..]
>
> That's fair enough.
>
>>> diff --git a/xen/arch/x86/include/asm/hvm/vcpu.h
>>> b/xen/arch/x86/include/asm/hvm/vcpu.h
>>> index 196fed6d5d..bac35ec47a 100644
>>> --- a/xen/arch/x86/include/asm/hvm/vcpu.h
>>> +++ b/xen/arch/x86/include/asm/hvm/vcpu.h
>>> @@ -171,8 +171,9 @@ struct hvm_vcpu {
>>>
>>> /* Pending hw/sw interrupt (.vector = -1 means nothing
>>> pending). */
>>> struct x86_event inject_event;
>>> -
>>> +#ifdef CONFIG_HVM_VIRIDIAN
>>> struct viridian_vcpu *viridian;
>>> +#endif
>>> };
>>>
>>> #endif /* __ASM_X86_HVM_VCPU_H__ */
>>>
>>>
>>> nit: I suspect the code would be far less cluttered with "if
>>> viridian..." if the
>>> init/deinit/etc functions had dummy versions of those functions when
>>> !HVM_VIRIDIAN in the header.
>>>
>>
>> as Jan explained some time ago [1] it's preferable to compile as much as
>> possible in all build configuration. Besides most of calls to viridian
>> code are already guarded by is_viridian_domain() & not actually require
>> stubs.
>>
>> -Sergiy
>>
>> [1]
>> https://lore.kernel.org/xen-devel/36708a3f-2664-4b04-9f5d-f115d362d100@xxxxxxxx/
>
> That answer seems to state a preference for...
>
> if ( foo_enabled() )
> rc = foo();
>
> ... against...
>
> #ifdef CONFIG_FOO
> rc = foo();
> #endif
>
> ... where foo() in the header looks like...
>
> #ifdef CONFIG_FOO
> int foo(void);
> #else /* CONFIG_FOO */
> static inline int foo(void)
> {
> return /*some-error*/;
> }
> #endif /* CONFIG_FOO */
>
> But that's not what's going on here, I think? I didn't initially notice the
> subtlety of the change. On more careful look, it seems to rely on the compiler
> doing dead-code-elimination. The functions missing in the linking stage don't
> cause a compile-time error because the conditionals are completely gone by
> then. Neat as it is, it sounds a bit fragile. Can we really rely on this
> behaviour not changing? Furthermore, does MISRA have views about having dead
> code calls to unimplemented functions?
We use DCE like this in many places, so we already rely on this behavior not
changing.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |