On Sun, 2008-07-06 at 20:45 -0600, Matthew Wilcox wrote: > On Mon, Jul 07, 2008 at 12:05:25PM +1000, Michael Ellerman wrote: > > On Sat, 2008-07-05 at 09:34 -0400, Matthew Wilcox wrote: > > > Add the new API pci_enable_msi_block() to allow drivers to > > > request multiple MSIs. Reimplement pci_enable_msi in terms > > > of pci_enable_msi_block. Add a default implementation of > > > arch_setup_msi_block() that only allows one MSI to be requested. > > > > I don't think you need arch_setup_msi_block() at all. > > > > We already have an arch hook that takes a number of irqs, it's > > arch_setup_msi_irqs(), plural. It also has the type passed to it (MSI or > > MSI-X), so it can decide if it needs to allocate the irq numbers > > contiguously. > > > > Or am I missing something? > > I suppose I should audit the current implementors of arch_setup_msi_irqs > (er, maybe that's just you?) to be sure that there's no assumption that > MSI -> asked for one. Yeah I think it's just us. But there's also the default implementation, which will happily use the singular arch hook to setup multiple MSIs without any constraint on the irq numbers - which will break. So I think you want to make the default arch_msi_check_device() return an error if you ask for MSI & nvec > 1. Then on powerpc we'll probably add the same check to our version (at least until we can test it), but on x86 you can let MSI & nvec > 1 pass. > I'll look into doing it your way tomorrow (my timezone ;-) Sure, although that'll be today in my timezone :D cheers -- Michael Ellerman OzLabs, IBM Australia Development Lab wwweb: http://michael.ellerman.id.au phone: +61 2 6212 1183 (tie line 70 21183) We do not inherit the earth from our ancestors, we borrow it from our children. - S.M.A.R.T Person
Attachment:
signature.asc
Description: This is a digitally signed message part