[Openib-windows] [PATCH] MT23108: Fix large buffer memoryregistration

Leonid Keller leonid at mellanox.co.il
Thu May 11 07:19:28 PDT 2006


I think, seg_size is worth to round also (for little buffers):
	rdc += ...
	seg_size = rdc;

> -----Original Message-----
> From: ftillier.sst at gmail.com [mailto:ftillier.sst at gmail.com] 
> On Behalf Of Fabian Tillier
> Sent: Thursday, May 11, 2006 4:48 PM
> To: Guy Corem
> Cc: Leonid Keller; openib-windows at openib.org
> Subject: Re: [Openib-windows] [PATCH] MT23108: Fix large 
> buffer memoryregistration
> 
> Hi Guy,
> 
> On 5/11/06, Guy Corem <guyc at voltaire.com> wrote:
> > Hi Fab & Leonid,
> >
> > Fab's patch is broking something else:
> 
> You're quite right.  Looking at it, while the patch rounds 
> down the seg_va to start on a page boundary (which makes 
> seg_size an integral number of pages), I forgot to increment 
> the remaining data count to account for the change in 
> starting address.
> 
> Here's a new patch that hopefully solves the issue.
> 
> - Fab
> 
> Index: hw/mt23108/vapi/mlxsys/mosal/os_dep/win/mosal_iobuf.c
> ===================================================================
> --- hw/mt23108/vapi/mlxsys/mosal/os_dep/win/mosal_iobuf.c	
> (revision 337)
> +++ hw/mt23108/vapi/mlxsys/mosal/os_dep/win/mosal_iobuf.c	
> (working copy)
> @@ -297,6 +297,12 @@
>    MOSAL_dlist_init_head( &new_iobuf->seg_que );
>    new_iobuf->seg_num = 0;
> 
> +  // Round the seg_va down to a page boundary so that we 
> always get a 
> + seg_size  // that is an integral number of pages.
> +  seg_va &= (~0Ui64 << PAGE_SHIFT);
> +  // Since we rounded down the seg_va, we need to round up the rdc.
> +  rdc += (seg_va & (PAGE_SIZE - 1));
> +
>    // allocate segments
>    while (rdc > 0) {
>    	// map a segment
> 



More information about the ofw mailing list