diff options
author | Alexander Aring <alex.aring@gmail.com> | 2014-04-10 14:04:05 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-04-23 12:20:03 +0200 |
commit | 276a3741b96df5cb0686513cad83c70c402e57b8 (patch) | |
tree | cbc01ea320d80df35b8851ddb6ea3014b3cb83a0 | |
parent | 9880cd69f41ad4bd3665acee3517a769a4c1924f (diff) | |
download | barebox-276a3741b96df5cb0686513cad83c70c402e57b8.tar.gz barebox-276a3741b96df5cb0686513cad83c70c402e57b8.tar.xz |
memtest: cleanup requests of regions
This patch removes the first and last entry check inside the loop.
There should be no functional changes there.
Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | commands/memtest.c | 66 |
1 files changed, 28 insertions, 38 deletions
diff --git a/commands/memtest.c b/commands/memtest.c index dc05e9ed27..585437596a 100644 --- a/commands/memtest.c +++ b/commands/memtest.c @@ -74,34 +74,25 @@ static int request_memtest_regions(struct list_head *list) continue; } + r = list_first_entry(&bank->res->children, + struct resource, sibling); + start = PAGE_ALIGN(bank->res->start); + end = PAGE_ALIGN_DOWN(r->start); + r_prev = r; + if (start != end) { + size = end - start; + ret = alloc_memtest_region(list, start, size); + if (ret < 0) + return ret; + } /* * We assume that the regions are sorted in this list * So the first element has start boundary on bank->res->start - * and the last element hast end boundary on bank->res->end + * and the last element hast end boundary on bank->res->end. + * + * Between used regions. Start from second entry. */ - list_for_each_entry(r, &bank->res->children, sibling) { - /* - * Do on head element for bank boundary - */ - if (r->sibling.prev == &bank->res->children) { - /* - * remember last used element - */ - start = PAGE_ALIGN(bank->res->start); - end = PAGE_ALIGN_DOWN(r->start); - r_prev = r; - if (start == end) - continue; - size = end - start; - - ret = alloc_memtest_region(list, start, size); - if (ret < 0) - return ret; - continue; - } - /* - * Between used regions - */ + list_for_each_entry_from(r, &bank->res->children, sibling) { start = PAGE_ALIGN(r_prev->end); end = PAGE_ALIGN_DOWN(r->start); r_prev = r; @@ -112,21 +103,20 @@ static int request_memtest_regions(struct list_head *list) ret = alloc_memtest_region(list, start, size); if (ret < 0) return ret; + } - if (list_is_last(&r->sibling, &bank->res->children)) { - /* - * Do on head element for bank boundary - */ - start = PAGE_ALIGN(r->end); - end = PAGE_ALIGN_DOWN(bank->res->end) - 1; - size = end - start + 1; - if (start >= end) - continue; - - ret = alloc_memtest_region(list, start, size); - if (ret < 0) - return ret; - } + /* + * Do on head element for bank boundary. + */ + r = list_last_entry(&bank->res->children, + struct resource, sibling); + start = PAGE_ALIGN(r->end); + end = PAGE_ALIGN_DOWN(bank->res->end) - 1; + size = end - start + 1; + if (start < end) { + ret = alloc_memtest_region(list, start, size); + if (ret < 0) + return ret; } } |