On 05/10/20 17:28, David Woodhouse wrote: > From: David Woodhouse <dwmw@xxxxxxxxxxxx> > > This allows the host to indicate that IOAPIC and MSI emulation supports > 15-bit destination IDs, allowing up to 32Ki CPUs without remapping. > > Signed-off-by: David Woodhouse <dwmw@xxxxxxxxxxxx> > --- > Documentation/virt/kvm/cpuid.rst | 4 ++++ > arch/x86/include/uapi/asm/kvm_para.h | 1 + > arch/x86/kernel/kvm.c | 6 ++++++ > 3 files changed, 11 insertions(+) > > diff --git a/Documentation/virt/kvm/cpuid.rst b/Documentation/virt/kvm/cpuid.rst > index a7dff9186bed..1726b5925d2b 100644 > --- a/Documentation/virt/kvm/cpuid.rst > +++ b/Documentation/virt/kvm/cpuid.rst > @@ -92,6 +92,10 @@ KVM_FEATURE_ASYNC_PF_INT 14 guest checks this feature bit > async pf acknowledgment msr > 0x4b564d07. > > +KVM_FEATURE_MSI_EXT_DEST_ID 15 guest checks this feature bit > + before using extended destination > + ID bits in MSI address bits 11-5. > + > KVM_FEATURE_CLOCSOURCE_STABLE_BIT 24 host will warn if no guest-side > per-cpu warps are expeced in > kvmclock > diff --git a/arch/x86/include/uapi/asm/kvm_para.h b/arch/x86/include/uapi/asm/kvm_para.h > index 812e9b4c1114..950afebfba88 100644 > --- a/arch/x86/include/uapi/asm/kvm_para.h > +++ b/arch/x86/include/uapi/asm/kvm_para.h > @@ -32,6 +32,7 @@ > #define KVM_FEATURE_POLL_CONTROL 12 > #define KVM_FEATURE_PV_SCHED_YIELD 13 > #define KVM_FEATURE_ASYNC_PF_INT 14 > +#define KVM_FEATURE_MSI_EXT_DEST_ID 15 > > #define KVM_HINTS_REALTIME 0 > > diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c > index 1b51b727b140..4986b4399aef 100644 > --- a/arch/x86/kernel/kvm.c > +++ b/arch/x86/kernel/kvm.c > @@ -743,12 +743,18 @@ static void __init kvm_init_platform(void) > x86_platform.apic_post_init = kvm_apic_init; > } > > +static bool __init kvm_msi_ext_dest_id(void) > +{ > + return kvm_para_has_feature(KVM_FEATURE_MSI_EXT_DEST_ID); > +} > + > const __initconst struct hypervisor_x86 x86_hyper_kvm = { > .name = "KVM", > .detect = kvm_detect, > .type = X86_HYPER_KVM, > .init.guest_late_init = kvm_guest_init, > .init.x2apic_available = kvm_para_available, > + .init.msi_ext_dest_id = kvm_msi_ext_dest_id, > .init.init_platform = kvm_init_platform, > }; > > Looks like the rest of the series needs some more work, but anyway: Acked-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> Paolo