For OPL, the NorthBridge is a Fire varient. The fire has a hardware limitation of the maximum IOMMU as 4G per RootComplex. Some of the 4G are used for other purpose such as MSI/MSI-X address, so only 2G can be used for dvma on sun4v platform with a Fire NorthBridge. On OPL, only 1G can be used for dvma.

You can check by this:
# prtconf -vp|grep virtual-dma
       virtual-dma:  80000000.7ff80000
       virtual-dma:  80000000.7ff80000
where, the 80000000 is the start address, the 7ff80000(about 2G) is the length.

This space is not configurable.

On newer platforms where there are new NorthBridge, the IOMMU space is quite large. But I still don“t think it is configurable. The space can be used maybe staticly set in firmware.

--Brian
On 08/04/10 01:10, tom60 wrote:
Garrett,

Is the IOMMU space configurable? I wish there are some commands or a file in /etc/ to modify to expand IOMMU space.

Tom

--------------------------------------------------
From: "Garrett D'Amore" <[email protected]>
Sent: Sunday, July 25, 2010 11:02 AM
To: "Winson Wang" <[email protected]>
Cc: <[email protected]>
Subject: Re: [driver-discuss] dma memory allocation failure

On Sun, 2010-07-25 at 20:12 +0800, Winson Wang wrote:
On 2010-7-25 20:00, [email protected] wrote:
> Re: dma memory allocation failure

> Then I added several Gig of DDR memory module, however, the failure > remains. I suspect your driver used all IOMMU space, on OPL, one root complex is 1GB.
The page size as I know is 8K.
Please check the ddi_dma_bind called times, if your requested buf size
every time
is lower than 8k, then every bind will casue IOMMU space 8k.
You checked it in your driver, how much IOMMU space has been consumed in
your driver.

If its 9K, it will be 16K of IOMMU address space consumed.

There may *also* be a limit on the number of IOMMU entries.  I know some
platforms had such limitations.  Perhaps you can try reducing from 1000
frames prealloc'd to something smaller -- say 512?  Is this a 10GbE
driver?  If its only 1GbE, then 512 ought to be enough.

-- Garrett

Thanks,
Winson

> Each driver instance is allocating some miscellaneous buffers + 1k * > 9000s > bytes buffers. The 4th instance boot up issue seems only happen on > m3000 > Sparc server(8G memory). I guess m3000 dma region is somewhat limited. > I am
> wondering how I can know its dma region range.
>
> Tom

_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss


_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to