|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v4 1/3] xen/x86: add nmi continuation framework
On 09.11.2020 10:50, Juergen Gross wrote:
> Actions in NMI context are rather limited as e.g. locking is rather
> fragile.
>
> Add a framework to continue processing in normal interrupt context
> after leaving NMI processing.
>
> This is done by a high priority interrupt vector triggered via a
> self IPI from NMI context, which will then call the continuation
> function specified during NMI handling.
>
> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
with one further adjustment request:
> @@ -1799,6 +1800,24 @@ void unset_nmi_callback(void)
> nmi_callback = dummy_nmi_callback;
> }
>
> +bool nmi_check_continuation(void)
> +{
> + bool ret = false;
> +
> + return ret;
> +}
> +
> +void trigger_nmi_continuation(void)
> +{
> + /*
> + * Issue a self-IPI. Handling is done in spurious_interrupt().
> + * NMI could have happened in IPI sequence, so wait for ICR being idle
> + * again before leaving NMI handler.
> + */
> + send_IPI_self(SPURIOUS_APIC_VECTOR);
> + apic_wait_icr_idle();
> +}
This additionally relies on send_IPI_self_legacy() calling
send_IPI_shortcut(), rather than e.g. resolving the local CPU
number to a destination ID. I think this wants saying maybe
here, but more importantly in that function.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |