On Thu, 2012-05-24 at 23:39 +0200, Thomas Gleixner wrote: > On Thu, 24 May 2012, Alex Williamson wrote: > > On Thu, 2012-05-24 at 18:02 +0100, Richard Weinberger wrote: > > > + if (address == msi_start + PCI_MSI_DATA_32) > > > + handle_cfg_write_msi(pci_dev, assigned_dev); > > > > Why didn't we just use range_covers_byte(address, len, pci_dev->msi_cap > > + PCI_MSI_DATA_32) to start with? But how does this handle the enable > > bit? > > The problem with the current implementation is that it only changes > the routing if the msi entry goes from masked to unmasked state. We don't expose a maskable MSI capability to the guest, so I think you mean enable/disable. > Linux does not mask the entries on affinity changes and never did, > neither for MSI nor for MSI-X. > > I know it's probably not according to the spec, but we can't fix that > retroactively. We need to do both then, enable MSI based on the enable bit and update routing based on address updates. It seems like this code is counting on data being written after the enable bit is set, which is not guaranteed to happen. Thanks, Alex -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html