summaryrefslogtreecommitdiff
path: root/arch/loongarch/include/asm/kvm_vcpu.h
diff options
context:
space:
mode:
authorBibo Mao <maobibo@loongson.cn>2024-05-06 17:00:47 +0300
committerHuacai Chen <chenhuacai@loongson.cn>2024-05-06 17:00:47 +0300
commit73516e9da512adc63ba3859fbd82a21f6257348f (patch)
treeb6649ba6ff1a619cc318174f90da4eed684faa1a /arch/loongarch/include/asm/kvm_vcpu.h
parent9753d3037964fffa5c57de8c57168dc1a4832dd4 (diff)
downloadlinux-73516e9da512adc63ba3859fbd82a21f6257348f.tar.xz
LoongArch: KVM: Add vcpu mapping from physical cpuid
Physical CPUID is used for interrupt routing for irqchips such as ipi, msgint and eiointc interrupt controllers. Physical CPUID is stored at the CSR register LOONGARCH_CSR_CPUID, it can not be changed once vcpu is created and the physical CPUIDs of two vcpus cannot be the same. Different irqchips have different size declaration about physical CPUID, the max CPUID value for CSR LOONGARCH_CSR_CPUID on Loongson-3A5000 is 512, the max CPUID supported by IPI hardware is 1024, while for eiointc irqchip is 256, and for msgint irqchip is 65536. The smallest value from all interrupt controllers is selected now, and the max cpuid size is defines as 256 by KVM which comes from the eiointc irqchip. Signed-off-by: Bibo Mao <maobibo@loongson.cn> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Diffstat (limited to 'arch/loongarch/include/asm/kvm_vcpu.h')
-rw-r--r--arch/loongarch/include/asm/kvm_vcpu.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/loongarch/include/asm/kvm_vcpu.h b/arch/loongarch/include/asm/kvm_vcpu.h
index 0cb4fdb8a9b5..9f53950959da 100644
--- a/arch/loongarch/include/asm/kvm_vcpu.h
+++ b/arch/loongarch/include/asm/kvm_vcpu.h
@@ -81,6 +81,7 @@ void kvm_save_timer(struct kvm_vcpu *vcpu);
void kvm_restore_timer(struct kvm_vcpu *vcpu);
int kvm_vcpu_ioctl_interrupt(struct kvm_vcpu *vcpu, struct kvm_interrupt *irq);
+struct kvm_vcpu *kvm_get_vcpu_by_cpuid(struct kvm *kvm, int cpuid);
/*
* Loongarch KVM guest interrupt handling