• Marc Zyngier's avatar
    KVM: arm64: Expose SMC/HVC width to userspace · 0e5c9a9d
    Marc Zyngier authored
    When returning to userspace to handle a SMCCC call, we consistently
    set PC to point to the instruction immediately after the HVC/SMC.
    
    However, should userspace need to know the exact address of the
    trapping instruction, it needs to know about the *size* of that
    instruction. For AArch64, this is pretty easy. For AArch32, this
    is a bit more funky, as Thumb has 16bit encodings for both HVC
    and SMC.
    
    Expose this to userspace with a new flag that directly derives
    from ESR_EL2.IL. Also update the documentation to reflect the PC
    state at the point of exit.
    
    Finally, this fixes a small buglet where the hypercall.{args,ret}
    fields would not be cleared on exit, and could contain some
    random junk.
    Reviewed-by: default avatarOliver Upton <oliver.upton@linux.dev>
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/86pm8iv8tj.wl-maz@kernel.org
    0e5c9a9d
hypercalls.c 16.2 KB