tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Musings on MSI



On Wed, Aug 17, 2011 at 02:01:53PM -0700, Matt Thomas wrote:
> 
> On Aug 17, 2011, at 12:11 PM, David Young wrote:
> 
> > On Wed, Aug 17, 2011 at 11:52:18AM -0700, Matt Thomas wrote:
> >> On Aug 17, 2011, at 9:35 AM, David Young wrote:
> >>>> int pci_msi_type(pci_chipset_tag_t pc, pci_msi_handle_t msih);
> >>>> 
> >>>> return the type of msi allocated (PCI_CAP_MSI or PCI_CAP_MSIX).  In the 
> >>>> latter case MSI vectors may not be contiguous.
> >>> 
> >>> Does it matter to the driver whether or not the vectors are contiguous?
> >>> Presumably there are no gaps in the available msirq?
> >> 
> >> MSIX doesn't matter, MSI it does.
> > 
> > Can you give an example where a user of this API has to care whether the
> > vectors are contiguous or not?
> 
> MSI requires contiguous vectors.  Period.  
> MSIX doesn't since each vector has a separate MSIX table entry.

Right, but the user of this API does not need to care, do they?

> >>>> void pci_msi_disestablish(pci_chipset_tag_t pc, void *ih);
> >>>> 
> >>>> Disestablishes but does not free the MSI.
> >>> 
> >>> You mean, pci_msi_disestablish() does not free to the MSI handle's pool?
> >>> Why not?
> >> 
> >> It does.  But not to the system pool.   pci_msi_free does that.
> > 
> > Does pci_msi_free() give back "excess" msirqs to the system pool?  Can
> > you give an example of how/why it is used?
> 
> It gives all back.  You can't release a portion, it's all or nothing.

I don't think I understand why pci_msi_free() is needed.  It seems like
it is redundant?

Dave

-- 
David Young             OJC Technologies
dyoung%ojctech.com@localhost      Urbana, IL * (217) 344-0444 x24


Home | Main Index | Thread Index | Old Index