diff options
author | Zeng Guang <guang.zeng@intel.com> | 2022-08-25 10:52:46 +0800 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2022-10-31 09:46:34 +0100 |
commit | 19e2a9fb9da067acba95b3be83588bda5a3f6a99 (patch) | |
tree | 862b883ecf442cf17668308eb740aeb523383855 /hw/i386/x86.c | |
parent | c891c24b1a4f5496cdb5f6afff9dae146334c7d3 (diff) | |
download | qemu-19e2a9fb9da067acba95b3be83588bda5a3f6a99.zip qemu-19e2a9fb9da067acba95b3be83588bda5a3f6a99.tar.gz qemu-19e2a9fb9da067acba95b3be83588bda5a3f6a99.tar.bz2 |
target/i386: Set maximum APIC ID to KVM prior to vCPU creation
Specify maximum possible APIC ID assigned for current VM session to KVM
prior to the creation of vCPUs. By this setting, KVM can set up VM-scoped
data structure indexed by the APIC ID, e.g. Posted-Interrupt Descriptor
pointer table to support Intel IPI virtualization, with the most optimal
memory footprint.
It can be achieved by calling KVM_ENABLE_CAP for KVM_CAP_MAX_VCPU_ID
capability once KVM has enabled it. Ignoring the return error if KVM
doesn't support this capability yet.
Signed-off-by: Zeng Guang <guang.zeng@intel.com>
Acked-by: Peter Xu <peterx@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Message-Id: <20220825025246.26618-1-guang.zeng@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'hw/i386/x86.c')
-rw-r--r-- | hw/i386/x86.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/hw/i386/x86.c b/hw/i386/x86.c index bd50a06..78cc131 100644 --- a/hw/i386/x86.c +++ b/hw/i386/x86.c @@ -140,6 +140,10 @@ void x86_cpus_init(X86MachineState *x86ms, int default_cpu_version) exit(EXIT_FAILURE); } + if (kvm_enabled()) { + kvm_set_max_apic_id(x86ms->apic_id_limit); + } + possible_cpus = mc->possible_cpu_arch_ids(ms); for (i = 0; i < ms->smp.cpus; i++) { x86_cpu_new(x86ms, possible_cpus->cpus[i].arch_id, &error_fatal); |