Messages in this thread | | | Date | Fri, 6 Dec 2013 16:52:50 +0200 | From | Grygorii Strashko <> | Subject | Re: [PATCH v2 08/23] mm/memblock: Add memblock memory allocation apis |
| |
On 12/05/2013 10:34 PM, Santosh Shilimkar wrote: > Grygorii, > > On Thursday 05 December 2013 01:48 PM, Strashko, Grygorii wrote: >> Hi Tejun, >> >>> On Thu, Dec 05, 2013 at 06:35:00PM +0200, Grygorii Strashko wrote: >>>>>> +#define memblock_virt_alloc_align(x, align) \ >>>>>> + memblock_virt_alloc_try_nid(x, align, BOOTMEM_LOW_LIMIT, \ >>>>>> + BOOTMEM_ALLOC_ACCESSIBLE, MAX_NUMNODES) >>>>> >>>>> Also, do we really need this align variant separate when the caller >>>>> can simply specify 0 for the default? >>>> >>>> Unfortunately Yes. >>>> We need it to keep compatibility with bootmem/nobootmem >>>> which don't handle 0 as default align value. >>> >>> Hmm... why wouldn't just interpreting 0 to SMP_CACHE_BYTES in the >>> memblock_virt*() function work? >>> >> >> Problem is not with memblock_virt*(). The issue will happen in case if >> memblock or nobootmem are disabled in below code (memblock_virt*() is disabled). >> >> +/* Fall back to all the existing bootmem APIs */ >> +#define memblock_virt_alloc(x) \ >> + __alloc_bootmem(x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT) >> >> which will be transformed to >> +/* Fall back to all the existing bootmem APIs */ >> +#define memblock_virt_alloc(x, align) \ >> + __alloc_bootmem(x, align, BOOTMEM_LOW_LIMIT) >> >> and used as >> >> memblock_virt_alloc(size, 0); >> >> so, by default bootmem code will use 0 as default alignment and not SMP_CACHE_BYTES >> and that is wrong. >> > Looks like you didn't understood the suggestion completely. > The fall back inline will look like below ..... > > static inline memblock_virt_alloc(x, align) > { > if (align == 0) > align = SMP_CACHE_BYTES > __alloc_bootmem(x, align, BOOTMEM_LOW_LIMIT); > } >
I understand. thanks.
Regards, -grygorii
| |