On Mon, Aug 01, 2016 at 12:38:58PM +0200, Paolo Bonzini wrote: > > > On 26/07/2016 05:28, Peter Xu wrote: > > IOMMU IR and IOAPIC legacy devices (e.g., e1000) cannot work well > > together with some old Linux kernels (upstream before v4.0, or any > > released RHEL kernels). This patch fixes it. > > > > The problem is that: some old linux kernels (with IR enabled) only > > support IOAPIC chips with version 0x20. New kernels after commit d32932d > > ("x86/irq: Convert IOAPIC to use hierarchical irqdomain interfaces") > > fixed this problem. To make sure we can work with even old kernels, > > let's upgrade our IOAPIC to version 0x20. > > > > To make sure we have minimum impact on old systems, IOAPIC version is > > only boosted to 0x20 when vIOMMU IR is enabled. Besides that, the old > > version 0x11 is used. > > I'd rather do this conditional only on the machine type, but as you > pointed out it's a bit late to change the default in QEMU 2.7. > Therefore, for 2.7 you could add a property to the IOAPIC device, and > document that you need "-global ioapic.version=0x20" for interrupt > remapping to work with Linux <= 4.0. QEMU 2.8 can then flip the default > for the new machine types.
Yes, an property seems to be a better choice. V3 sent. Thanks! -- peterx