On Friday, July 25, 2008 9:56 am Matthew Wilcox wrote: > On Fri, Jul 25, 2008 at 05:37:49PM +0100, David Vrabel wrote: > > The spec says that system software should enable MSI before setting > > message address and data (PCI 3.0 section 6.8.3.1 MSI configuration). > > The kernel doesn't do this. > > I think you meant "disable"? I can't find anything in 6.8.3.1 of 3.0 > that refers to this. > > > I really don't think we should be enabling/disabling MSI while > > interrupts might be being generated. There are cases where interrupts > > will be lost. Consider PCIe where we might end up with a situation > > where MSI is disabled and then enabled sufficiently quickly that no > > periodic line interrupt message is sent by the device. > > I don't think there's a difference here between PCIe and conventional > PCI. A device raising a line based interrupt is perfectly equivalent to > a device sending an INTx message. > > > The message address and data should only be modified while the vector is > > masked (to avoid the aforementioned 'tearing'). This means that setting > > IRQ affinity cannot be done on devices without per-vector mask bits. I > > don't think this is a problem. > > I agree. I think it's fine to have this limitation. > > > In vague psuedo-code, set_affinity() should be something like this: > > > > int did_mask = msi_mask_vector(); > > if (!did_mask) { > > return -ENOTSUPP; > > } > > /* fiddle with address and mask now */ > > msi_unmask_vector(); > > Yes, something like that. Yeah, that reflects what we actually support... David, can you resend your "don't mask MSIs using the MSI enable bit" patch against the latest bits so I can apply it? Did you also want to hack up the above for the affinity code? Thanks, Jesse -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html