Re: [PATCH v6 13/18] KVM: arm64: Support SDEI_EVENT_{COMPLETE,COMPLETE_AND_RESUME} hypercall

From: Gavin Shan
Date: Mon May 02 2022 - 02:20:13 EST


Hi Oliver,

On 5/1/22 2:50 PM, Oliver Upton wrote:
On Sun, Apr 03, 2022 at 11:39:06PM +0800, Gavin Shan wrote:
This supports SDEI_EVENT_{COMPLETE, COMPLETE_AND_RESUME} hypercall.
They are used by guest to notify the completion of event in its
handler. The previously interrupted or preempted context is restored
like below.

* x0 - x17, PC and PState are restored to what values we had in
the interrupted or preempted context.

* If it's SDEI_EVENT_COMPLETE_AND_RESUME hypercall, IRQ exception
is injected.

I don't think that's how COMPLETE_AND_RESUME works. The caller specifies an
address at which it would like to begin execution within the client
exception level.

SDEI spec suggests this behaves like a synchronous exception. DEN 0054C
5.2.2 'Event Resume Context' speaks more about how it is supposed to
work.


It's actually the linux convention. If the event handler, which was
specified in previous hypercall to EVENT_REGISTER, returns success,
the (linux) client calls into COMPLETE_AND_RESUME and the resume
address is specified with FIQ vector offset. More details can be
found from arch/arm64/kernel::sdei.c::do_sdei_event().

Thanks,
Gavin