Skip to content

Commit 1e97928

Browse files
xiaobo55xavpatel
authored andcommitted
KVM: riscv: selftests: Add guest helper to get vcpu id
Add guest_get_vcpuid() helper to simplify accessing to per-cpu private data. The sscratch CSR was used to store the vcpu id. Signed-off-by: Haibo Xu <haibo1.xu@intel.com> Reviewed-by: Andrew Jones <ajones@ventanamicro.com> Signed-off-by: Anup Patel <anup@brainfault.org>
1 parent 38f680c commit 1e97928

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

tools/testing/selftests/kvm/include/aarch64/processor.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -226,8 +226,4 @@ void smccc_smc(uint32_t function_id, uint64_t arg0, uint64_t arg1,
226226
uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5,
227227
uint64_t arg6, struct arm_smccc_res *res);
228228

229-
230-
231-
uint32_t guest_get_vcpuid(void);
232-
233229
#endif /* SELFTEST_KVM_PROCESSOR_H */

tools/testing/selftests/kvm/include/kvm_util_base.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,4 +1081,6 @@ void kvm_selftest_arch_init(void);
10811081

10821082
void kvm_arch_vm_post_create(struct kvm_vm *vm);
10831083

1084+
uint32_t guest_get_vcpuid(void);
1085+
10841086
#endif /* SELFTEST_KVM_UTIL_BASE_H */

tools/testing/selftests/kvm/lib/riscv/processor.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,9 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id,
316316
vcpu_set_reg(vcpu, RISCV_CORE_REG(regs.sp), stack_vaddr + stack_size);
317317
vcpu_set_reg(vcpu, RISCV_CORE_REG(regs.pc), (unsigned long)guest_code);
318318

319+
/* Setup sscratch for guest_get_vcpuid() */
320+
vcpu_set_reg(vcpu, RISCV_GENERAL_CSR_REG(sscratch), vcpu_id);
321+
319322
/* Setup default exception vector of guest */
320323
vcpu_set_reg(vcpu, RISCV_GENERAL_CSR_REG(stvec), (unsigned long)guest_unexp_trap);
321324

@@ -437,6 +440,11 @@ void vm_install_interrupt_handler(struct kvm_vm *vm, exception_handler_fn handle
437440
handlers->exception_handlers[1][0] = handler;
438441
}
439442

443+
uint32_t guest_get_vcpuid(void)
444+
{
445+
return csr_read(CSR_SSCRATCH);
446+
}
447+
440448
struct sbiret sbi_ecall(int ext, int fid, unsigned long arg0,
441449
unsigned long arg1, unsigned long arg2,
442450
unsigned long arg3, unsigned long arg4,

0 commit comments

Comments
 (0)