• Anup Patel's avatar
    RISC-V: KVM: Implement VCPU interrupts and requests handling · cce69aff
    Anup Patel authored
    This patch implements VCPU interrupts and requests which are both
    asynchronous events.
    
    The VCPU interrupts can be set/unset using KVM_INTERRUPT ioctl from
    user-space. In future, the in-kernel IRQCHIP emulation will use
    kvm_riscv_vcpu_set_interrupt() and kvm_riscv_vcpu_unset_interrupt()
    functions to set/unset VCPU interrupts.
    
    Important VCPU requests implemented by this patch are:
    KVM_REQ_SLEEP       - set whenever VCPU itself goes to sleep state
    KVM_REQ_VCPU_RESET  - set whenever VCPU reset is requested
    
    The WFI trap-n-emulate (added later) will use KVM_REQ_SLEEP request
    and kvm_riscv_vcpu_has_interrupt() function.
    
    The KVM_REQ_VCPU_RESET request will be used by SBI emulation (added
    later) to power-up a VCPU in power-off state. The user-space can use
    the GET_MPSTATE/SET_MPSTATE ioctls to get/set power state of a VCPU.
    Signed-off-by: default avatarAnup Patel <anup.patel@wdc.com>
    Acked-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Reviewed-by: default avatarAlexander Graf <graf@amazon.com>
    Acked-by: default avatarPalmer Dabbelt <palmerdabbelt@google.com>
    cce69aff
kvm.h 865 Bytes