lkml.org 
[lkml]   [2021]   [Oct]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH v2 08/43] KVM: s390: Clear valid_wakeup in kvm_s390_handle_wait(), not in arch hook
    From
    Move the clearing of valid_wakeup from kvm_arch_vcpu_block_finish() so
    that a future patch can drop said arch hook. Unlike the other blocking-
    related arch hooks, vcpu_blocking/unblocking(), vcpu_block_finish() needs
    to be called even if the KVM doesn't actually block the vCPU. This will
    allow future patches to differentiate between truly blocking the vCPU and
    emulating a halt condition without introducing a contradiction.

    Alternatively, the hook could be renamed to kvm_arch_vcpu_halt_finish(),
    but there's literally one call site in s390, and future cleanup can also
    be done to handle valid_wakeup fully within kvm_s390_handle_wait() and
    allow generic KVM to drop vcpu_valid_wakeup().

    No functional change intended.

    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    ---
    arch/s390/kvm/interrupt.c | 1 +
    arch/s390/kvm/kvm-s390.c | 2 +-
    2 files changed, 2 insertions(+), 1 deletion(-)

    diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c
    index 10722455fd02..520450a7956f 100644
    --- a/arch/s390/kvm/interrupt.c
    +++ b/arch/s390/kvm/interrupt.c
    @@ -1336,6 +1336,7 @@ int kvm_s390_handle_wait(struct kvm_vcpu *vcpu)
    no_timer:
    srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
    kvm_vcpu_block(vcpu);
    + vcpu->valid_wakeup = false;
    __unset_cpu_idle(vcpu);
    vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);

    diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
    index 7cabe6778b1b..08ed68639a21 100644
    --- a/arch/s390/kvm/kvm-s390.c
    +++ b/arch/s390/kvm/kvm-s390.c
    @@ -5082,7 +5082,7 @@ static inline unsigned long nonhyp_mask(int i)

    void kvm_arch_vcpu_block_finish(struct kvm_vcpu *vcpu)
    {
    - vcpu->valid_wakeup = false;
    +
    }

    static int __init kvm_s390_init(void)
    --
    2.33.0.882.g93a45727a2-goog
    \
     
     \ /
      Last update: 2021-10-09 04:13    [W:4.130 / U:0.824 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site