Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Mar 2011 13:04:37 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Marcel Moolenaar <marcel@freebsd.org>
Cc:        svn-src-projects@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r219964 - projects/altix/sys/ia64/sgisn
Message-ID:  <201103241304.37386.jhb@freebsd.org>
In-Reply-To: <201103241656.p2OGuY6k051706@svn.freebsd.org>
References:  <201103241656.p2OGuY6k051706@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday, March 24, 2011 12:56:34 pm Marcel Moolenaar wrote:
> Author: marcel
> Date: Thu Mar 24 16:56:33 2011
> New Revision: 219964
> URL: http://svn.freebsd.org/changeset/base/219964
> 
> Log:
>   Add necessary address space mapping. The Altix architecture has distinct
>   address spaces for PCI devices and CPUs. That is, the S-Hub translates
>   addresses on the FSB and coming from CPUs to addresses valid on the PCI bus.
>   This is abstracted and implemented in FreeBSD by having the handle contain the
>   CPU address, while the resource itself describes the PCI bus address. Since
>   devices are mapped when resources are activated and the bus handle is derived
>   from that, have the SGI PCI bus driver handle the activation of resources
>   instead of passing it up to the nexus.
>   
>   Note that the Altix architecture allows for IRQ values larger than 255 even
>   though the intline register in the PCI configuration space does not. FreeBSD
>   also doesn't support it by virtue of having an IRQ resource space that's
>   limited. On my machines the IRQ values are within bounds so I'm not going to
>   worry about this detail. It may very well be theoretical.

FreeBSD certainly supports any arbitrary range of unsigned long values as IRQ
resources.  MSI on x86 uses IRQs > 255 for example.  The PCI bus code does
assume that IRQ 255 is a cookie value that can be used for an invalid INTx
IRQ, but that's the only assumption it makes.

The limit on the IRQ rman in the nexus is put in place by each platform.  If
you want a larger range, just fix the initialization of your rman.

-- 
John Baldwin



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