[Openib-windows] Windows DMA model
Leonid Keller
leonid at mellanox.co.il
Mon Jan 23 08:07:23 PST 2006
> -----Original Message-----
> From: Fab Tillier [mailto:ftillier at silverstorm.com]
> Sent: Tuesday, January 17, 2006 7:24 PM
> To: Leonid Keller; Jan Bottorff; openib-windows at openib.org
> Subject: RE: [Openib-windows] Windows DMA model
>
> > From: Leonid Keller [mailto:leonid at mellanox.co.il]
> > Sent: Tuesday, January 17, 2006 3:58 AM
> >
> > First, to inform: I've found the problem with my kernel DMA tesing.
> > It seems like a bug in Microsoft: when you ask map
> registers for a 2GB
> > transfer - which is the max for our cards - IoGetDmaAdapter
> returns 1
> > register. For *any* number X, less than that, they return an
> > appropriate number.
>
> Did you check to see what happens if you make a request
> larger than 2GB? Is 2GB the threshold?
>
They seem like doing (Size & ~0x80000000)
> In any case, I'm glad to hear this is working now.
>
> > It seems like gives us opportunity to solve all the problems for
> > kernel work.
>
> Yes, it should. However, kernel clients will need to do the
> DMA mappings before and unmap after each I/O so that things
> work properly. Clients doing only local operations (not
> exposing buffers for RDMA) can create a DMA MR (for all of
> physical memory), and then only need to perform the DMA
> mappings during I/O.
>
> Any ring buffers shared between the HCA driver and hardware
> will need to be allocated via AllocateCommonBuffer.
>
> > As for the userland, I also don't see a solution, but giving up
> > os-bypassing and performing memory registration during send/recv.
>
> For user-land, I'm thinking more and more that having the
> kernel allocate common buffers for the ring buffers (in CQs
> and QPs) is the way to go. I don't know how well this will
> scale, but it will guarantee that the ring buffers at least
> are working properly.
>
> For I/O, it would all depend on whether the platform performs
> double buffering or not. However, there's no way to tell
> what the platform is doing under the DMA APIs, so you're
> right - for guaranteed correct operation, the app would have
> to register/deregister for each send/recv. However, this
> goes against the design of WSD, so I think they have some
> explaining to do. I'll follow up with them and see if I can
> get any additional information.
>
> - Fab
>
>
More information about the ofw
mailing list