On Thu, Nov 05, 2020 at 04:58:12PM +0000, Wei Liu wrote: > When Linux runs as the root partition on Microsoft Hypervisor, its > interrupts are remapped. Linux will need to explicitly map and unmap > interrupts for hardware. > > Implement an MSI domain to issue the correct hypercalls. And initialize > this irqdomain as the default MSI irq domain. > > Signed-off-by: Sunil Muthuswamy <sunilmut@xxxxxxxxxxxxx> > Co-Developed-by: Sunil Muthuswamy <sunilmut@xxxxxxxxxxxxx> > Signed-off-by: Wei Liu <wei.liu@xxxxxxxxxx> > --- > v2: > This patch is simplified due to upstream changes. > --- > arch/x86/hyperv/Makefile | 2 +- > arch/x86/hyperv/hv_init.c | 10 +- > arch/x86/hyperv/irqdomain.c | 330 ++++++++++++++++++++++++++++++++++++ > 3 files changed, 340 insertions(+), 2 deletions(-) > create mode 100644 arch/x86/hyperv/irqdomain.c > > diff --git a/arch/x86/hyperv/Makefile b/arch/x86/hyperv/Makefile > index 565358020921..2ebcf3969121 100644 > --- a/arch/x86/hyperv/Makefile > +++ b/arch/x86/hyperv/Makefile > @@ -1,6 +1,6 @@ > # SPDX-License-Identifier: GPL-2.0-only > obj-y := hv_init.o mmu.o nested.o > -obj-$(CONFIG_X86_64) += hv_apic.o hv_proc.o > +obj-$(CONFIG_X86_64) += hv_apic.o hv_proc.o irqdomain.o I need to move irqdomain.o to obj-y because 32bit build also needs it in hv_init.o. After this change, 32bit build of the kernel builds and works as expected. Wei.