Messages in this thread | | | Date | Thu, 12 Jun 2008 11:03:36 -0700 | From | Andrew Morton <> | Subject | Re: [patch 00/11] GRU Driver |
| |
On Thu, 12 Jun 2008 09:05:09 -0500 Jack Steiner <steiner@sgi.com> wrote:
> On Thu, Jun 12, 2008 at 03:27:00PM +0200, Ingo Molnar wrote: > > > > * steiner@sgi.com <steiner@sgi.com> wrote: > > > > > This series of patches adds a driver for the SGI UV GRU. The driver is > > > still in development but it currently compiles for both x86_64 & IA64. > > > All simple regression tests pass on IA64. Although features remain to > > > be added, I'd like to start the process of getting the driver into the > > > kernel. Additional kernel drivers will depend on services provide by > > > the GRU driver. > > > > > > The GRU is a hardware resource located in the system chipset. The GRU > > > contains memory that is mmaped into the user address space. This > > > memory is used to communicate with the GRU to perform functions such > > > as load/store, scatter/gather, bcopy, AMOs, etc. The GRU is directly > > > accessed by user instructions using user virtual addresses. GRU > > > instructions (ex., bcopy) use user virtual addresses for operands. > > > > did i get it right that it's basically a fast, hardware based message > > passing interface that allows two tasks to communicate via DMA and > > interrupts, without holding up the CPU? > > Yes > > > > If that is the case, wouldnt the > > proper support model be a network driver, instead of these special > > ioctls. (a network driver with no checksumming, with scatter-gather, > > zero-copy and TSO support, etc.) > > > > or a filesystem. Anything but special-purpose ioctls ... > > The ioctls are not used directly by users. > > Users function the GRU by directly writing to the memory that is mmaped into > GRU space, ie; load/store directly to GRU space. The ioctls are used > infrequently by libgru.so to configure the driver during user initialization > and to handle errors that may occur. > > For example, here is the code that is required to issue a GRU > instruction & wait for completion: >
But could/should it be implemented as (say) a net driver?
| |