On Wed, Oct 07 2020 at 13:20, David Woodhouse wrote: > > + /* > + * If the hypervisor supports extended destination ID in IOAPIC > + * and MSI, that increases the maximum APIC ID that can be used > + * for non-remapped IRQ domains. > + */ > + if (x86_init.hyper.msi_ext_dest_id()) { > + msi_ext_dest_id = 1; > + apic_limit = 32767; > + } This needs to be outside of the remap mode check because? > + > if (remap_mode != IRQ_REMAP_X2APIC_MODE) { > /* > * Using X2APIC without IR is not architecturally supported > @@ -1856,9 +1868,10 @@ static __init void try_to_enable_x2apic(int remap_mode) > * in physical mode, and CPUs with an APIC ID that cannnot > * be addressed must not be brought online. > */ > - x2apic_set_max_apicid(255); > + x2apic_set_max_apicid(apic_limit); > x2apic_phys = 1; > } > + > x2apic_enable(); > } > > diff --git a/arch/x86/kernel/apic/msi.c b/arch/x86/kernel/apic/msi.c > index 2825e003259c..85206f971284 100644 > --- a/arch/x86/kernel/apic/msi.c > +++ b/arch/x86/kernel/apic/msi.c > @@ -23,8 +23,11 @@ > > struct irq_domain *x86_pci_msi_default_domain __ro_after_init; > > +int msi_ext_dest_id __ro_after_init; bool please. Aside of that this breaks the build for a kernel with CONFIG_PCI_MSI=n Thanks, tglx