Re: [PATCH V7 1/3] genalloc:support memory-allocation with bytes-alignment to genalloc
From: Scott Wood <hidden>
Date: 2015-09-02 02:18:32
Also in:
lkml
On Tue, 2015-09-01 at 21:10 -0500, Zhao Qiang-B45475 wrote:
On Wed, 2015-09-02 at 08:38AM +0800, Wood Scott-B07421 wrote:quoted
-----Original Message----- From: Wood Scott-B07421 Sent: Wednesday, September 02, 2015 8:30 AM To: Zhao Qiang-B45475 Cc: linux-kernel@vger.kernel.org; linuxppc-dev@lists.ozlabs.org; lauraa@codeaurora.org; Xie Xiaobo-R63061; benh@kernel.crashing.org; Li Yang-Leo-R58472; paulus@samba.org Subject: Re: [PATCH V7 1/3] genalloc:support memory-allocation with bytes-alignment to genalloc On Mon, 2015-08-31 at 16:58 +0800, Zhao Qiang wrote:quoted
Bytes alignment is required to manage some special RAM, so add gen_pool_first_fit_align to genalloc, meanwhile add gen_pool_alloc_data to pass data to gen_pool_first_fit_align(modify gen_pool_alloc as a wrapper) Signed-off-by: Zhao Qiang <redacted> --- Changes for v6: - patches set v6 include a new patch because of using - genalloc to manage QE MURAM, patch 0001 is the new - patch, adding bytes alignment for allocation for use. Changes for v7: - cpm muram also need to use genalloc to manage, it has a function to reserve a specific region of muram, add offset to genpool_data for start addr to be allocated.This seems to be describing more than just the changes in this patch. What does also handling cpm have to do with this patch? Are you adding support for reserving a specific region in this patch? I don't see it, and in any case it should go in a different patch.Yes, I added. The code below can support the function. offset_bit = (alignment->offset + (1UL << order) - 1) >> order; return bitmap_find_next_zero_area(map, size, start + offset_bit, nr, align_mask); CPM has an function cpm_muram_alloc_fixed, needing to allocate muram from a Specific offset. So I add the code and add offset to struct data.
I thought the offset was related to the previous discussion of checking for allocation failure. Are you using it to implement alloc_fixed()? If so, please don't. Besides the awkward implementation (what does it logically have to do with gen_pool_first_fit_align?), it does not appear to be correct - - what happens with multiple chunks? What happens if part of the region the caller is trying to reserve is already taken? Implement a proper function to reserve a fixed genalloc region.
This patch is the first patch of this patch set, so I explain what changes about Set v7 and why I add support for reserving a specific region in this patch.
If you want to provide commentary that covers the entire patchset, use a cover letter.
quoted
quoted
+/* + * gen_pool data descriptor for gen_pool_first_fit_align. + */ +struct genpool_data_align { + int align; /* alignment by bytes for startingaddress */quoted
+ unsigned long offset; /* the offset of allocation start addr*/ +};The offset belongs on the caller side, not here.So, how do I pass offset to gen_pool_alloc_data or pool->algo?
You don't. -Scott