Re: Potential source of interrupt aliasing

From: Scott Long <scottl_at_samsco.org>
Date: Mon, 11 Apr 2005 09:56:32 -0600
Andrew Gallatin wrote:
> Scott Long writes:
>  > 
>  > See also: sbus(4), msi(4).
>  > 
>  > MSI is something that I'd like to work on, but simply had the time.
>  > It's not a panacea since it will only work for MSI-enabled PCI devices,
>  > but many peripherals found on these Intel systems fall into that
>  > category.
> 
> Bear in mind that MSI is another can of worms.  
> 
> I spent some time last month getting MSI interrupts working for our
> linux driver.  I had the misfortune to start with a system
> (ServerWorks GC-SL based) which did not even support MSIs, but where
> linux let my driver enable MSI operation and allocate MSI interrupts.
> Any DMA to the address given by the linux MSI code resulted in a PCI
> master abort.  That was not fun..
> 
> If/when we do MSI support, I really hope we do a better job of determining
> if MSIs actually work before enabling them ;)
> 
> Drew
> 
> 
> 

I'm a little confused by this.  Between the Intel architecture manuals
and the PCI specs, it seems like MSI is a function of the PCI device
mastering a 32 or 64-bit word into a specific location in host memory.
On the intel architecture, that location is in an area that the L-APICs
will sniff and treat as a kind of virtual IOAPIC.  Maybe you're not
actually hitting real RAM and instead there is Host Bridge magic going
on, but the Intel manuals don't really talk at all about that.  The
Linux MSI support was written by Intel so I'm sure they tailored it for
Intel chipsets and didn't care much about ServerWorks chipsets.  Maybe
this is yet another reason why we need to start seriously thinking about
chipset drivers in FreeBSD.

Scott
Received on Mon Apr 11 2005 - 13:59:49 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:31 UTC