John Baldwin jhb at
Tue May 19 18:59:01 UTC 2009

So one of the things I worked on while hacking away at unmapped disk I/O 
requests was a little API to manage scatter/gather lists of phyiscal 
addresses.  The basic premise is that a sglist describes a logical object 
that is backed by one or more physical address ranges.  To minimize locking, 
the sglist objects themselves are immutable once they are shared.  The 
unmapped disk I/O project is still very much a WIP (and I'm not even working 
on any of the really hard bits myself).  However, I actually found this 
object to be useful for something else I have been working on: the mmap() 
extensions for the Nvidia amd64 driver.  For the Nvidia patches I have 
created a new type of VM object that is very similar to OBJT_DEVICE objects 
except that it uses a sglist to determine the physical pages backing the 
object instead of calling the d_mmap() method for each page.  Anyway, adding 
this little API is just the first in a series of patches needed for the 
Nvidia driver work.  I plan to MFC them to 7.x relatively soon in the hopes 
that we can soon have a supported Nvidia driver on amd64 on 7.x.

The current patches for all the Nvidia stuff is at

This particular patch to just add the sglist(9) API is at and is slightly more 
polished in that it includes a manpage. :)

John Baldwin

More information about the freebsd-arch mailing list