Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1192928

[RFC v2] genalloc:add an gen_pool_first_fit_align algo to genalloc

Path csiph.com!aioe.org!news.glorb.com!bofh.it!news.nic.it!robomod
From Zhao Qiang <qiang.zhao@freescale.com>
Newsgroups linux.kernel
Subject [RFC v2] genalloc:add an gen_pool_first_fit_align algo to genalloc
Date Mon, 27 Jul 2015 12:20:01 +0200
Message-ID <pQNFL-729-3@gated-at.bofh.it> (permalink)
X-Original-To <lauraa@codeaurora.org>
Authentication-Results spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none;
Received-Spf Fail (protection.outlook.com: domain of freescale.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net;
X-Mailer git-send-email 2.1.0.27.g96db324
X-Microsoft-Exchange-Diagnostics 1;BL2FFO11OLC005;1:vXtwG1pJGt2PNJCha7/k5y3nmvyDQLYVwywKhWmNFFkoR4YFdUvy9M8Ni6s0mdunrsISv18Oa+XK87DUurVEcOftYCGpQCLwY4/zjHogEMw+vB2eVlyztE6wM1xtjjHAH7LtmBsUqXcF4os/+59mirSCHikzX7yuO/hSsXxxk5PRg3813JmgJUZgFcoxxBo49BGdtAxmhq16tfDITZkx8C80fsuKcYROl6BrsHmaD/nA5hIii4RMV3twODhs/3JwxNoPN1B4+CjJog49wxhS0J+cIqYynjT0DKD6Hmr150kj+RrhypFQD6R6t/Hl4mfAHlXK2bm1/wAHeKjkibe/NA==
X-Forefront-Antispam-Report CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(339900001)(199003)(189002)(46102003)(36756003)(48376002)(575784001)(87936001)(50466002)(47776003)(92566002)(15975445007)(86362001)(85426001)(77096005)(19580395003)(6806004)(19580405001)(105606002)(77156002)(104016003)(33646002)(106466001)(50226001)(5003940100001)(5001960100002)(2351001)(62966003)(189998001)(229853001)(107886002)(110136002)(50986999)(4001430100001);DIR:OUT;SFP:1102;SCL:1;SRVR:BY2PR0301MB1542;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;MLV:sfv;A:1;MX:1;LANG:en;
MIME-Version 1.0
Content-Type text/plain
X-Microsoft-Exchange-Diagnostics 1;BY2PR0301MB1542;2:+Lr7snECz5lmeqE4QqJvLUnFN8e37gqDDv0277BNl5HDOud/J+QIvklXUtWqD18S;3:FcNvR9H5/cC4xM5YaaSoL3AjGhxqOKO9NAii7d+gdIZoKdnJsBSLlgqikgZek4m6My8ZadPCThZBlnl2SkIDYnili1bm8LX5zMnuKHhNDWz0ubYB2Hx5QtS2ZiqzHb5Rwvape67K/LKhT+Kgdj1lPNVma+IhpQ6Oo9aiRSFZqv0iD1zK1a33ZSdhVX7fJpMAvXGxH9MQHRy3jcWttubKywj1D2Mpp+C+R6sH2IigeDo=;25:TJHIWcIWpsKTI6zXLyBLHBuEDXd1f+jIU1yKFlH2PlYuOJ3rggW7jyzQZwhUQSZsP5aQW9GM23LH1LGOV1Ohso7AXaMTaiz48+BeePl5Gv0U4GtDZglcR+84xp5HuxO+7LszQpsFW6OxJa1XPJMHcubog17mzfOLtl+iNJQ96FnaKnU/mxDyszAuLoybCemWP0kaOdMt7LRFTHD80e+5ubo7OacuFEMyx5RVokewH76PQZzNq5IddF0qstBkxqWyKIShKlosZVHJ9fdiAsladA==;20:FMRil83gLhdJfS+fFi81G9wsEVFltAvsIoGd894wI/j1ihgbm3Uk2wOKChYz2twGrqbOXLPWIs63Ngdt27yzZNBF6ydJos93Oup7nGZIb3bbM+C11F0ptVGRLVR3pDIT6tap4KEKLVzKtz6p5X4AR3/RAvYbMWNJV5sapX82ZhvUxeWTKk97w/mMzVuWEABIiFk1QoyCjxG8S1tZPJVGhPeKJHbbrWBzgYWnJ6Dx5y9HDLGCrUaexdo0lF0WRAkb11sC16Q7eqcGJZbTJMM9KTMX3BvIzwfnrno6oZWLaKyfC2HaIGJFGYdFDJaYccftO3H+5kRbX3QEyUnLf13pC8iozKxrRo/B4H1jDJjvTho=
X-Microsoft-Antispam UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0301MB1542;
By2pr0301mb1542 X-MS-Exchange-Organization-RulesExecuted
X-Microsoft-Antispam-Prvs <BY2PR0301MB1542D1D5E06EC091E4647D0D9B8E0@BY2PR0301MB1542.namprd03.prod.outlook.com>
X-Exchange-Antispam-Report-Test UriScan:;
X-Exchange-Antispam-Report-Cfa-Test BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:BY2PR0301MB1542;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0301MB1542;
X-Microsoft-Exchange-Diagnostics 1;BY2PR0301MB1542;4:2G+2VM4seFa3OVJaRHZzj/5h/PG0/T0+uy4sFTxiXzJ5PrK+IQGlYwZjgEuQw78hGpyVFLssjM4fwzgLnkHSVttfD+Mu5L8p0wVz3rIqYAwfZdrSfKmh4l37RhBX29ocgPGDbQv9z/+3GbvIwmcZBENU6JtjpshqMTwDixe/hvYovvkhlp61H/SvyLihhTvNVIBz90wQKKuOeY63rRV8GLIwOwxI7wHxu2D1SZTsHHlZXNQ1Ws0aQqjBaI9fzMOl3OmAbXW6OPGrmgwp2BUkAwcUOVxmOGcT0+v/3mLqkqs=
X-Forefront-Prvs 0650714AAA
X-Microsoft-Exchange-Diagnostics 1;BY2PR0301MB1542;23:EzguCQuANrzva4oN1ELoM+dje4u2uyxYjpGF+6BWWw1TrIm/8DesUQM908Hx3u2Cp7Ed34zAkmUWsbaYw9T3JKurxszKrtfNQ0202xe7hYRcaLsljg+4Fi5t5m13N3tcuJjjBRPtc98iH6TbVqwaR3tXI4bzGM+UnX3RwEAyRlOiPJ2H6XGE0ywxOvvX88AvGWLLrd+AlO+EEo/pVGH1+Zlvj4lOBcMva/IhVmAKvYEAf0o0MKeKWVcZW8rVylkU2vENSqQc9ulcgXF4vmINGy0rI2O74g6YmjX5stOFx9MneD+b5hEbrEyMf+gFTVwJgEqpgx4ggPWhGXdGZesj+ETKNz/jCCZkfdR4VzJLnD3+GblJ9yar0zEpM+CXw/N/Ry/NpHp4vDfFBVgerWupALS3ogZN+ocDeZ93gDMp18JQ11acJArj3/eymGEOosjYUaeCoXJrjZ5E5kGGW3oT/aP56Cpem95XligOWV5+zT5FMOm5IkpJI6S30INP8rpc0epNbKmQ2sUXjY+edmw/4CqL6DXetz3oNrXTC2OmU3fxgT+3Ppf04rTtePH6XlxkS8mZoxeH4/kOKnC+qUFy6L42vybdssApbLnZIN7XqDp7VqRgKblFFroan7NlM2Em363GoQrcF5vl1zqpcTx/MIP0Xt5nqhwPq4q7sNH8C6Cz5hS+/FgM5lSFIMQWNS8vVEwGkIARSoK6u5O9/dnFq6fwCQrHxTCw3eIqyf1qMQugVjYOtoRChkvCSTPKd17tPpeJeq9bW07337znLhlhIUSKTvClD7hOuioJ6hQbLwG9xqaK2lxjO4KN6uwRjFWA0Zs+kVHCZypgvwZiBsSCaG6gwEdTRex0J5zPFzupdCKmKr4X7UZpPm3m9NZ4FV0+MAQeywYYeVeimurYgR9h38z4n1Dr1aouIdNOUwmL9yjY+QQdtl/MH/I1+HVEq1J/Cj/lf59yUAOF0tvzFv/SgQ==
X-Microsoft-Exchange-Diagnostics 1;BY2PR0301MB1542;5:E1H3cE+1c7+jZh7Let/N38vkXneKbv2QgfvNcOoMUFptVcU/o2UCjYN18u7tU/KNbfG9fhuP772p9JF/HEeXGrX7l7p+jmw+5plIrN6sdhnYI4tT8RJOY5MQrxNdqoNBZm3jX6HQDdLcm+BC6rNWqQ==;24:WCtOrkOhm9WvFxMB2vt1uZDtu7yhm546UI0zzzpF5jAF0kqOmOrvRhztTn46fZNgA8n6mMrittvkkdoj9LzznS2a+SPkmBbK56uyZRAxqgI=;20:u5hRNX7nHxBcEVF3MkXfyONoGFUbcEw3tt50+gvhYrWEfFdHWB5BSvDCGX66s0+Z2Sb7pZrE5VmOPDo0p9qFLQ==
X-Originatororg freescale.com
X-Ms-Exchange-Crosstenant-Originalarrivaltime 27 Jul 2015 10:02:57.0530 (UTC)
X-Ms-Exchange-Crosstenant-ID 710a03f5-10f6-4d38-9ff4-a80b81da590d
X-Ms-Exchange-Crosstenant-Originalattributedtenantconnectingip TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.168.50];Helo=[tx30smr01.am.freescale.net]
X-Ms-Exchange-Crosstenant-Fromentityheader HybridOnPrem
X-Ms-Exchange-Transport-Crosstenantheadersstamped BY2PR0301MB1542
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 96
Organization linux.* mail to news gateway
X-Original-Cc <linux-kernel@vger.kernel.org>, <linuxppc-dev@lists.ozlabs.org>, <akpm@linux-foundation.org>, <olof@lixom.net>, <catalin.marinas@arm.com>, <scottwood@freescale.com>, <X.xie@freescale.com>, Zhao Qiang <qiang.zhao@freescale.com>
X-Original-Date Mon, 27 Jul 2015 17:57:54 +0800
X-Original-Message-ID <1437991074-35377-1-git-send-email-qiang.zhao@freescale.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref aioe.org linux.kernel:1192928

Show key headers only | View raw


Bytes alignment is required to manage some special ram,
so add gen_pool_first_fit_align to genalloc.
User should define data structure
struct data {
	int align;
	struct gen_pool *pool;
}
align is the number of  bytes alignment,
pool points to gen_pool which include data.

Signed-off-by: Zhao Qiang <qiang.zhao@freescale.com>
---
*v2:
changes:
title has been modified, original patch link: 
http://patchwork.ozlabs.org/patch/493297/

original patch add a func gen_pool_alloc_align, 
then pass alignment to it as an parameter.
after discussing with lauraa and scott, they recommend 
to pass alignment as part of data based on 
commit message for ca279cf1065fb689abea1dc7d8c11787729bb185 which adds "data":

"As I can't predict all the possible requirements/needs for all allocation    
uses cases, I add a "free" field 'void *data' to pass any needed     
information to the allocation function.  For example 'data' could be used     
to handle a structure where you store the alignment, the expected memory     
bank, the requester device, or any information that could influence the     
allocation algorithm."




 include/linux/genalloc.h |  4 ++++
 lib/genalloc.c           | 25 +++++++++++++++++++++++++
 2 files changed, 29 insertions(+)

diff --git a/include/linux/genalloc.h b/include/linux/genalloc.h
index 1ccaab4..b85d0f8 100644
--- a/include/linux/genalloc.h
+++ b/include/linux/genalloc.h
@@ -110,6 +110,10 @@ extern void gen_pool_set_algo(struct gen_pool *pool, genpool_algo_t algo,
 extern unsigned long gen_pool_first_fit(unsigned long *map, unsigned long size,
 		unsigned long start, unsigned int nr, void *data);
 
+extern unsigned long gen_pool_first_fit_align(unsigned long *map,
+		unsigned long size, unsigned long start, unsigned int nr,
+		void *data);
+
 extern unsigned long gen_pool_first_fit_order_align(unsigned long *map,
 		unsigned long size, unsigned long start, unsigned int nr,
 		void *data);
diff --git a/lib/genalloc.c b/lib/genalloc.c
index d214866..e6608cd 100644
--- a/lib/genalloc.c
+++ b/lib/genalloc.c
@@ -509,6 +509,31 @@ unsigned long gen_pool_first_fit(unsigned long *map, unsigned long size,
 EXPORT_SYMBOL(gen_pool_first_fit);
 
 /**
+ * gen_pool_first_fit_align - find the first available region
+ * of memory matching the size requirement (no alignment constraint)
+ * @map: The address to base the search on
+ * @size: The bitmap size in bits
+ * @start: The bitnumber to start searching at
+ * @nr: The number of zeroed bits we're looking for
+ * @data: additional data - unused
+ */
+unsigned long gen_pool_first_fit_align(unsigned long *map, unsigned long size,
+		unsigned long start, unsigned int nr, void *data)
+{
+	unsigned long align_mask;
+	int order;
+
+	if (data && data->pool) {
+		order = data->pool->min_alloc_order;
+		align_mask = ((data->align + (1UL << order) - 1) >> order) - 1;
+	} else {
+		pr_err("no data or data->pool\n");
+	}
+	return bitmap_find_next_zero_area(map, size, start, nr, align_mask);
+}
+EXPORT_SYMBOL(gen_pool_first_fit_algin);
+
+/**
  * gen_pool_first_fit_order_align - find the first available region
  * of memory matching the size requirement. The region will be aligned
  * to the order of the size specified.
-- 
2.1.0.27.g96db324

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

[RFC v2] genalloc:add an gen_pool_first_fit_align algo to genalloc Zhao Qiang <qiang.zhao@freescale.com> - 2015-07-27 12:20 +0200
  Re: [RFC v2] genalloc:add an gen_pool_first_fit_align algo to  genalloc Scott Wood <scottwood@freescale.com> - 2015-07-27 23:30 +0200
    RE: [RFC v2] genalloc:add an gen_pool_first_fit_align algo to  genalloc Zhao Qiang <qiang.zhao@freescale.com> - 2015-07-28 07:40 +0200
      RE: [RFC v2] genalloc:add an gen_pool_first_fit_align algo to  genalloc Zhao Qiang <qiang.zhao@freescale.com> - 2015-07-30 04:10 +0200

csiph-web