Skip to content

Commit fdd6f6a

Browse files
sean-jcbonzini
authored andcommitted
KVM: RISC-V: Use kvm_vcpu.srcu_idx, drop RISC-V's unnecessary copy
Use the generic kvm_vcpu's srcu_idx instead of using an indentical field in RISC-V's version of kvm_vcpu_arch. Generic KVM very intentionally does not touch vcpu->srcu_idx, i.e. there's zero chance of running afoul of common code. Signed-off-by: Sean Christopherson <seanjc@google.com> Message-Id: <20220415004343.2203171-3-seanjc@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
1 parent 2d08935 commit fdd6f6a

3 files changed

Lines changed: 10 additions & 13 deletions

File tree

arch/riscv/include/asm/kvm_host.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,6 @@ struct kvm_vcpu_arch {
193193

194194
/* Don't run the VCPU (blocked) */
195195
bool pause;
196-
197-
/* SRCU lock index for in-kernel run loop */
198-
int srcu_idx;
199196
};
200197

201198
static inline void kvm_arch_hardware_unsetup(void) {}

arch/riscv/kvm/vcpu.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -727,13 +727,13 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
727727
/* Mark this VCPU ran at least once */
728728
vcpu->arch.ran_atleast_once = true;
729729

730-
vcpu->arch.srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
730+
vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
731731

732732
/* Process MMIO value returned from user-space */
733733
if (run->exit_reason == KVM_EXIT_MMIO) {
734734
ret = kvm_riscv_vcpu_mmio_return(vcpu, vcpu->run);
735735
if (ret) {
736-
srcu_read_unlock(&vcpu->kvm->srcu, vcpu->arch.srcu_idx);
736+
srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
737737
return ret;
738738
}
739739
}
@@ -742,13 +742,13 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
742742
if (run->exit_reason == KVM_EXIT_RISCV_SBI) {
743743
ret = kvm_riscv_vcpu_sbi_return(vcpu, vcpu->run);
744744
if (ret) {
745-
srcu_read_unlock(&vcpu->kvm->srcu, vcpu->arch.srcu_idx);
745+
srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
746746
return ret;
747747
}
748748
}
749749

750750
if (run->immediate_exit) {
751-
srcu_read_unlock(&vcpu->kvm->srcu, vcpu->arch.srcu_idx);
751+
srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
752752
return -EINTR;
753753
}
754754

@@ -787,7 +787,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
787787
*/
788788
vcpu->mode = IN_GUEST_MODE;
789789

790-
srcu_read_unlock(&vcpu->kvm->srcu, vcpu->arch.srcu_idx);
790+
srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
791791
smp_mb__after_srcu_read_unlock();
792792

793793
/*
@@ -805,7 +805,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
805805
vcpu->mode = OUTSIDE_GUEST_MODE;
806806
local_irq_enable();
807807
preempt_enable();
808-
vcpu->arch.srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
808+
vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
809809
continue;
810810
}
811811

@@ -849,7 +849,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
849849

850850
preempt_enable();
851851

852-
vcpu->arch.srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
852+
vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
853853

854854
ret = kvm_riscv_vcpu_exit(vcpu, run, &trap);
855855
}
@@ -858,7 +858,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
858858

859859
vcpu_put(vcpu);
860860

861-
srcu_read_unlock(&vcpu->kvm->srcu, vcpu->arch.srcu_idx);
861+
srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
862862

863863
return ret;
864864
}

arch/riscv/kvm/vcpu_exit.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -456,9 +456,9 @@ static int stage2_page_fault(struct kvm_vcpu *vcpu, struct kvm_run *run,
456456
void kvm_riscv_vcpu_wfi(struct kvm_vcpu *vcpu)
457457
{
458458
if (!kvm_arch_vcpu_runnable(vcpu)) {
459-
srcu_read_unlock(&vcpu->kvm->srcu, vcpu->arch.srcu_idx);
459+
srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
460460
kvm_vcpu_halt(vcpu);
461-
vcpu->arch.srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
461+
vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
462462
kvm_clear_request(KVM_REQ_UNHALT, vcpu);
463463
}
464464
}

0 commit comments

Comments
 (0)