[ofw] Patch: Replace memory allocator with a memory allocator that works natively with 0 bytes allocations

Tzachi Dar tzachid at mellanox.co.il
Tue Sep 28 10:26:49 PDT 2010


Applied on 2949.

Thanks
Tzachi

> -----Original Message-----
> From: Smith, Stan [mailto:stan.smith at intel.com]
> Sent: Tuesday, September 21, 2010 7:48 PM
> To: Uri Habusha; Fab Tillier; Tzachi Dar; Hefty, Sean;
> ofw at lists.openfabrics.org
> Subject: RE: [ofw] Patch: Replace memory allocator with a memory
> allocator that works natively with 0 bytes allocations
> 
> Uri Habusha wrote:
> > Fab I agree with you that in optimal life we should write more tests,
> > run more scenarios on different machine architectures and
> > configurations; however we all know that life is not optimal and many
> > times you have to make tradeoffs.
> 
> At this point I think we can disagree and commit, given the Mellanox
> commitment to continue to investigate the failure cases.
> If this is not acceptable, then we need to embrace a Mellanox specific
> patch, perhaps an #ifdef MELLANOX ?
> 
> Forward progress is the end-goal.
> 
> stan.
> 
> >
> > In this case we added an assert and if it happens on our test
> > environment I promise you to look and investigate it.  But we don't
> > want the customer system crashing when that happens; We prefer the
> > application will fail silently.
> >
> >
> >
> > -----Original Message-----
> > From: ofw-bounces at lists.openfabrics.org
> > [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Fab Tillier
> > Sent: Monday, September 20, 2010 6:14 PM
> > To: Tzachi Dar; Hefty, Sean; ofw at lists.openfabrics.org
> > Subject: Re: [ofw] Patch: Replace memory allocator with a memory
> > allocator that works natively with 0 bytes allocations
> >
> > Hi Tzachi,
> >
> > This still doesn't solve the issue people (myself included) had with
> > the original patch: you are masking bugs in calling code by delaying
> > the check for zero size and hiding it here.  The assert is fine, but
> > I'd skip the code that returns NULL.  If the assert fires, fix the
> > caller.  If the assert doesn't fire but you have runtime crashes at
> > customer sites, you likely need more thorough test coverage.  In any
> > case, runtime crashes will generate a minidump (potentially reported
> > through Windows Error Reporting, assuming you registered for those
> > drivers in your WinQual account) and will show you the call stack and
> > you can fix the caller.
> >
> > I'd actually like to see the code move away from all these
> > abstractions (especially since the core code is Windows specific, and
> > the HCA drivers have their own abstraction layer for things that are
> > shared with Linux.)  Replace all calls to cl_malloc/cl_zalloc with
> > the appropriate call to ExAllocatePoolWithTag.
> >
> > -Fab
> >
> > -----Original Message-----
> > From: ofw-bounces at lists.openfabrics.org
> > [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Tzachi Dar
> > Sent: Monday, September 20, 2010 4:25 AM
> > To: Hefty, Sean; ofw at lists.openfabrics.org
> > Subject: Re: [ofw] Patch: Replace memory allocator with a memory
> > allocator that works natively with 0 bytes allocations
> >
> > Here is a new and much smaller version of the patch that does not
> > introduce new functions or new abstractions. It also only touches a
> > very small number of places.
> >
> > I hope this time it is OK.
> >
> > Index: core/complib/kernel/cl_memory_osd.c
> > ===================================================================
> > --- core/complib/kernel/cl_memory_osd.c       (revision 2933)
> > +++ core/complib/kernel/cl_memory_osd.c       (working copy)
> > @@ -38,6 +38,10 @@
> >       IN      const size_t    size,
> >       IN      const boolean_t pageable )
> >  {
> > +     CL_ASSERT(size != 0);
> > +     if (size ==0) {
> > +             return NULL;
> > +     }
> >       if( pageable )
> >       {
> >               CL_ASSERT( KeGetCurrentIrql() < DISPATCH_LEVEL );
> > Index: hw/mthca/kernel/mt_memory.h
> > ===================================================================
> > --- hw/mthca/kernel/mt_memory.h       (revision 2933)
> > +++ hw/mthca/kernel/mt_memory.h       (working copy)
> > @@ -50,6 +50,10 @@
> >  {
> >       void *ptr;
> >       MT_ASSERT( KeGetCurrentIrql() <= DISPATCH_LEVEL );
> > +     MT_ASSERT(bsize);
> > +     if(bsize == 0) {
> > +             return NULL;
> > +     }
> >       switch (gfp_mask) {
> >               case GFP_ATOMIC:
> >                       ptr = ExAllocatePoolWithTag( NonPagedPool,
> bsize, MT_TAG_ATOMIC );
> >
> >
> > Thanks
> > Tzachi
> >
> >> -----Original Message-----
> >> From: Hefty, Sean [mailto:sean.hefty at intel.com]
> >> Sent: Tuesday, August 31, 2010 7:31 PM
> >> To: Tzachi Dar; ofw at lists.openfabrics.org
> >> Subject: RE: [ofw] Patch: Replace memory allocator with a memory
> >> allocator that works natively with 0 bytes allocations
> >>
> >> There are several unrelated changes in this patch, and I personally
> >> still don't like the idea.  First, it adds overhead that's not
> needed
> >> in most cases.  Second, it uses a function name that looks like a
> >> Windows call, but isn't.  Someone reading the code has to discover
> >> that the call is some macro.  And in order to make this change, you
> >> already have to look at and touch everywhere that the size could be
> >> 0.  Why not just fix those places already?
> >>
> >> There is already WAY too much abstraction in the code base.  Adding
> >> more does not fix things, it only makes it worse.  This can end up
> >> hiding bugs.  Upper level code should not work around problems in
> >> other code, especially drivers.
> >
> > _______________________________________________
> > ofw mailing list
> > ofw at lists.openfabrics.org
> > http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw
> >
> > _______________________________________________
> > ofw mailing list
> > ofw at lists.openfabrics.org
> > http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw
> > _______________________________________________
> > ofw mailing list
> > ofw at lists.openfabrics.org
> > http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw




More information about the ofw mailing list