Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Sep 2008 11:32:10 -0700
From:      Peter Grehan <grehan@freebsd.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-ppc@freebsd.org
Subject:   Re: Call for testers: Apple ATA DMA
Message-ID:  <48C9642A.5020801@freebsd.org>
In-Reply-To: <200809111304.48753.jhb@freebsd.org>
References:  <48C69864.3010208@freebsd.org>	<1C883A32-8D01-4775-B027-20DB1DF4B4D3@mac.com>	<48C8B400.7060604@freebsd.org> <200809111304.48753.jhb@freebsd.org>

index | next in thread | previous in thread | raw e-mail

Hi John,

> So when I did the MSI stuff I had assumed (apparently incorrectly), that PCI 
> functions would only every have 1 non-MSI interrupt (since there is only a 
> single INTLINE config register).  Is the extra interrupt coming from OF?  If 
> so, does OF support MSI at all?  You could always change the OF PCI bus 
> driver to not do MSI and use rid 1 IRQ for the OF indicated IRQ for a PCI 
> device by having custom alloc_resource/setup_intr/teardown_intr methods.

  Int lines on the Mac go directly into the OpenPIC, allowing as many 
int sources as desired. The intline config register isn't really used, 
though there is code that attempts to read the OFW interrupt properties 
and then program that register to avoid messing with the PCI common 
code. Unfortunately, some Mac devices ignore writes to that register :( 
The G5 does support MSI.

  I had sent a possible solution to Nathan (Nathan: check your junk :) 
that in pci_setup_intr did something like:

   if (dinfo->cfg.msi.msi_addr > 0) {
     ...
   } else if (dinfo->cfg.msi.msix_alloc > 0) {
     ...
   } else {
#ifndef __powerpc__
     KASSERT("No MSI or MSI-X interrupts allocated")
#endif
   }

  There's probably a bunch of other places that need fixing but this was 
an obvious one.

later,

Peter.



home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?48C9642A.5020801>