lkml.org 
[lkml]   [2022]   [Apr]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v6 10/18] KVM: arm64: Support SDEI_PE_{MASK, UNMASK} hypercall
    Date
    This supports SDEI_PE_{MASK, UNMASK} hypercall. They are used by
    guest to stop or start receiving event on the specified vcpu.

    Signed-off-by: Gavin Shan <gshan@redhat.com>
    ---
    arch/arm64/kvm/sdei.c | 18 ++++++++++++++++++
    1 file changed, 18 insertions(+)

    diff --git a/arch/arm64/kvm/sdei.c b/arch/arm64/kvm/sdei.c
    index 9e642d01e303..3aca36e7e27b 100644
    --- a/arch/arm64/kvm/sdei.c
    +++ b/arch/arm64/kvm/sdei.c
    @@ -340,6 +340,18 @@ static unsigned long hypercall_info(struct kvm_vcpu *vcpu)
    return ret;
    }

    +static unsigned long hypercall_mask(struct kvm_vcpu *vcpu, bool mask)
    +{
    + struct kvm_sdei_vcpu *vsdei = vcpu->arch.sdei;
    + unsigned long ret = SDEI_SUCCESS;
    +
    + spin_lock(&vsdei->lock);
    + vsdei->masked = mask ? 1 : 0;
    + spin_unlock(&vsdei->lock);
    +
    + return ret;
    +}
    +
    int kvm_sdei_call(struct kvm_vcpu *vcpu)
    {
    struct kvm_sdei_vcpu *vsdei = vcpu->arch.sdei;
    @@ -382,6 +394,12 @@ int kvm_sdei_call(struct kvm_vcpu *vcpu)
    case SDEI_1_0_FN_SDEI_EVENT_GET_INFO:
    ret = hypercall_info(vcpu);
    break;
    + case SDEI_1_0_FN_SDEI_PE_MASK:
    + ret = hypercall_mask(vcpu, true);
    + break;
    + case SDEI_1_0_FN_SDEI_PE_UNMASK:
    + ret = hypercall_mask(vcpu, false);
    + break;
    default:
    ret = SDEI_NOT_SUPPORTED;
    }
    --
    2.23.0
    \
     
     \ /
      Last update: 2022-04-03 17:41    [W:7.189 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site