|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] x86/hvm: re-work viridian APIC assist code
>>> On 18.01.18 at 16:10, <paul.durrant@xxxxxxxxxx> wrote:
> -int viridian_complete_apic_assist(struct vcpu *v)
> +bool viridian_apic_assist_completed(struct vcpu *v)
> {
> uint32_t *va = v->arch.hvm_vcpu.viridian.vp_assist.va;
> - int vector;
>
> if ( !va )
> - return 0;
> + return false;
>
> - if ( *va & 1u )
> - return 0; /* Interrupt not yet processed by the guest. */
> -
> - vector = v->arch.hvm_vcpu.viridian.vp_assist.vector;
> - v->arch.hvm_vcpu.viridian.vp_assist.vector = 0;
> + if ( v->arch.hvm_vcpu.viridian.vp_assist.pending &&
> + !(*va & 1u) )
> + {
> + /* An EOI has been avoided */
> + v->arch.hvm_vcpu.viridian.vp_assist.pending = false;
> + return true;
> + }
Especially with such a non-atomic update, please remind me: Despite
them having struct vcpu * parameters, these functions are all only
ever called with v == current? If the answer is yes, then
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
with one more cosmetic remark:
> @@ -120,9 +120,9 @@ void viridian_time_ref_count_thaw(struct domain *d);
> void viridian_vcpu_deinit(struct vcpu *v);
> void viridian_domain_deinit(struct domain *d);
>
> -void viridian_start_apic_assist(struct vcpu *v, int vector);
> -int viridian_complete_apic_assist(struct vcpu *v);
> -void viridian_abort_apic_assist(struct vcpu *v);
> +void viridian_set_apic_assist(struct vcpu *v);
> +bool viridian_apic_assist_completed(struct vcpu *v);
> +void viridian_clear_apic_assist(struct vcpu *v);
Could I talk you into naming them all viridian_apic_assist_...()?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |