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

Re: [Xen-devel] [PATCH] x86/hvm: more sure APIC assist is aborted if guest EOIs APIC

>>> On 17.01.18 at 13:53, <paul.durrant@xxxxxxxxxx> wrote:
> --- a/xen/arch/x86/hvm/vlapic.c
> +++ b/xen/arch/x86/hvm/vlapic.c
> @@ -422,6 +422,13 @@ void vlapic_EOI_set(struct vlapic *vlapic)
>      if ( vector == -1 )
>          return;
> +    /*
> +     * It is possible that APIC assist has been enabled by the guest but
> +     * it has chosen not to use it, by EOIing normally. It is therefore
> +     * necessary to abort any APIC assist that may have been started
> +     * to avoid confusing the state machine.
> +     */
> +    viridian_abort_apic_assist(vlapic_vcpu(vlapic));
>      vlapic_clear_vector(vector, &vlapic->regs->data[APIC_ISR]);

Fundamentally fine, but is clearing bit 0 in the shared location a
valid thing to do in this case? Plus shouldn't you pass in the vector,
so the abort would only happen for the very vector that is pending?
Iirc with nested interrupts normal EOI might still need to be used
by Windows (as only a single vector can be in flight in the assist), so
clearing the assist for the wrong vector might actually cause harm.


Xen-devel mailing list



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