Hi, A few cents from the Realm support point of view. On 05/02/2023 10:12, Marc Zyngier wrote:
On Fri, 03 Feb 2023 13:50:40 +0000, James Morse <james.morse@xxxxxxx> wrote:From: Jean-Philippe Brucker <jean-philippe@xxxxxxxxxx> When capability KVM_CAP_ARM_HVC_TO_USER is available, userspace can request to handle all hypercalls that aren't handled by KVM. With the help of another capability, this will allow userspace to handle PSCI calls. Suggested-by: James Morse <james.morse@xxxxxxx> Signed-off-by: Jean-Philippe Brucker <jean-philippe@xxxxxxxxxx> Signed-off-by: James Morse <james.morse@xxxxxxx> ---On top of Oliver's ask not to make this a blanket "steal everything", but instead to have an actual request for ranges of forwarded hypercalls:Notes on this implementation: * A similar mechanism was proposed for SDEI some time ago [1]. This RFC generalizes the idea to all hypercalls, since that was suggested on the list [2, 3]. * We're reusing kvm_run.hypercall. I copied x0-x5 into kvm_run.hypercall.args[] to help userspace but I'm tempted to remove this, because: - Most user handlers will need to write results back into the registers (x0-x3 for SMCCC), so if we keep this shortcut we should go all the way and read them back on return to kernel. - QEMU doesn't care about this shortcut, it pulls all vcpu regs before handling the call.
This may not be always possible, e.g., for Realms. GET_ONE_REG is not supported. So using an explicit passing down of the args is preferrable. Thanks Suzuki