On 2016-05-06 22:53, Radim Krčmář wrote: > The only way to send interrupts from outside of APIC devices is to use > the MSI-inspired memory mapped interface. The interface is not > sufficient because interrupt remapping in extended mode can exceed 8 bit > destination ids. > > The proper way to deliver interrupts would be to design a bus (QPI), but > that is a big undertaking. Real IR unit stores excessive bits in the > high work of MSI address register, which would be bit [63:40] in memory
s/work/word/ > address space, so I was considering two options: > - a new special address space for APIC to handle MSI-compatible writes > - one callback to the APIC class that delivers extended MSIs > > This patch uses latter option, because it was easier for me, but I think > the former one could be a tad nicer. Makes sense. Eventually, we should also finally untangle the MSI DMA request handling from the xAPIC MMIO processing. The former could become pretty generic (instead of being reimplemented by each APIC flavour), just potentially redirected to an IOMMU when one is present. But that could come as separate patches. Jan