|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1] x86: make Viridian support optional
On 17.03.2025 08:19, Sergiy Kibrik wrote:
> --- a/xen/arch/x86/Kconfig
> +++ b/xen/arch/x86/Kconfig
> @@ -348,6 +348,11 @@ config HYPERV_GUEST
>
> endif
>
> +config HVM_VIRIDIAN
> + bool "Viridian enlightenments support" if EXPERT
> + depends on HVM
> + default y
Imo the prompt wants to include "guest", somewhat along the lines of what
Alejandro has also said.
> --- a/xen/arch/x86/hvm/hvm.c
> +++ b/xen/arch/x86/hvm/hvm.c
> @@ -695,9 +695,12 @@ int hvm_domain_initialise(struct domain *d,
> if ( hvm_tsc_scaling_supported )
> d->arch.hvm.tsc_scaling_ratio = hvm_default_tsc_scaling_ratio;
>
> - rc = viridian_domain_init(d);
> - if ( rc )
> - goto fail2;
> + if ( is_viridian_domain(d) )
> + {
> + rc = viridian_domain_init(d);
> + if ( rc )
> + goto fail2;
> + }
>
> rc = alternative_call(hvm_funcs.domain_initialise, d);
> if ( rc != 0 )
> @@ -733,7 +736,8 @@ void hvm_domain_relinquish_resources(struct domain *d)
> if ( hvm_funcs.nhvm_domain_relinquish_resources )
> alternative_vcall(hvm_funcs.nhvm_domain_relinquish_resources, d);
>
> - viridian_domain_deinit(d);
> + if ( is_viridian_domain(d) )
> + viridian_domain_deinit(d);
>
> ioreq_server_destroy_all(d);
>
> @@ -1637,9 +1641,12 @@ int hvm_vcpu_initialise(struct vcpu *v)
> && (rc = nestedhvm_vcpu_initialise(v)) < 0 ) /* teardown:
> nestedhvm_vcpu_destroy */
> goto fail5;
>
> - rc = viridian_vcpu_init(v);
> - if ( rc )
> - goto fail6;
> + if ( is_viridian_domain(v->domain) )
Like you do further up, please also use "d" here and ...
> @@ -1669,13 +1676,15 @@ int hvm_vcpu_initialise(struct vcpu *v)
> fail2:
> hvm_vcpu_cacheattr_destroy(v);
> fail1:
> - viridian_vcpu_deinit(v);
> + if ( is_viridian_domain(v->domain) )
... here.
> --- a/xen/arch/x86/hvm/vlapic.c
> +++ b/xen/arch/x86/hvm/vlapic.c
> @@ -426,7 +426,8 @@ void vlapic_EOI_set(struct vlapic *vlapic)
> * priority vector and then recurse to handle the lower priority
> * vector.
> */
> - bool missed_eoi = viridian_apic_assist_completed(v);
> + bool missed_eoi = has_viridian_apic_assist(v->domain) ?
> + viridian_apic_assist_completed(v) : false;
bool missed_eoi = has_viridian_apic_assist(v->domain) &&
viridian_apic_assist_completed(v);
?
> --- a/xen/arch/x86/include/asm/hvm/domain.h
> +++ b/xen/arch/x86/include/asm/hvm/domain.h
> @@ -110,9 +110,9 @@ struct hvm_domain {
>
> /* hypervisor intercepted msix table */
> struct list_head msixtbl_list;
> -
> +#ifdef CONFIG_HVM_VIRIDIAN
> struct viridian_domain *viridian;
> -
> +#endif
> /*
> * TSC value that VCPUs use to calculate their tsc_offset value.
> * Used during initialization and save/restore.
Why would the blank lines need to go away?
> --- a/xen/arch/x86/include/asm/hvm/hvm.h
> +++ b/xen/arch/x86/include/asm/hvm/hvm.h
> @@ -507,7 +507,8 @@ hvm_get_cpl(struct vcpu *v)
> (has_hvm_params(d) ? (d)->arch.hvm.params[HVM_PARAM_VIRIDIAN] : 0)
>
> #define is_viridian_domain(d) \
> - (is_hvm_domain(d) && (viridian_feature_mask(d) & HVMPV_base_freq))
> + (is_hvm_domain(d) && IS_ENABLED(CONFIG_HVM_VIRIDIAN) && \
> + (viridian_feature_mask(d) & HVMPV_base_freq))
May I suggest to put IS_ENABLED() first? And to adjust (reduce) indentation
on the 2nd line?
> --- 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
> };
Again, not need for the blank line to go away.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |