All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tang Chen <tangchen@cn.fujitsu.com>
To: Minchan Kim <minchan@kernel.org>
Cc: linux-mm@kvack.org, Tang Chen <tangchen@cn.fujitsu.com>
Subject: Re: Build error of mmotm-2013-01-18-15-48
Date: Wed, 23 Jan 2013 13:32:01 +0800	[thread overview]
Message-ID: <50FF75D1.6070303@cn.fujitsu.com> (raw)
In-Reply-To: <20130123041101.GC2723@blaptop>

On 01/23/2013 12:11 PM, Minchan Kim wrote:
> Hi Tang Chen,
>
> I encountered build error from mmotm-2013-01-18-15-48 when I try to
> build ARM config. I know you sent a bunch of patches but not sure
> it was fixed via them.
>
> Thanks.
>
>    CHK     include/generated/uapi/linux/version.h
>    CHK     include/generated/utsrelease.h
> make[1]: `include/generated/mach-types.h' is up to date.
>    CALL    scripts/checksyscalls.sh
>    CC      mm/memblock.o
> mm/memblock.c: In function 'memblock_find_in_range_node':
> mm/memblock.c:104: error: invalid use of undefined type 'struct movablecore_map'
> mm/memblock.c:123: error: invalid use of undefined type 'struct movablecore_map'
> mm/memblock.c:130: error: invalid use of undefined type 'struct movablecore_map'
> mm/memblock.c:131: error: invalid use of undefined type 'struct movablecore_map'
>

Hi Minchan,

Thank you for reporting this. :)

I think this problem has been fixed by the following patch I sent yesterday.
But it is weird, I cannot access to the LKML site of 2013/1/22. So I didn't
get an url for you. :)

This patch was merged into -mm tree this morning.

And since I don't have an ARM platform, so I didn't test it on ARM.
Please tell me if your problem is not solved after applying this patch.

Thanks. :)



[PATCH Bug fix 1/4] Bug fix: Use CONFIG_HAVE_MEMBLOCK_NODE_MAP to 
protect movablecore_map in memblock_overlaps_region().

The definition of struct movablecore_map is protected by
CONFIG_HAVE_MEMBLOCK_NODE_MAP but its use in memblock_overlaps_region()
is not. So add CONFIG_HAVE_MEMBLOCK_NODE_MAP to protect the use of
movablecore_map in memblock_overlaps_region().

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Tang Chen <tangchen@cn.fujitsu.com>
---
  include/linux/memblock.h |    3 ++-
  mm/memblock.c            |   34 ++++++++++++++++++++++++++++++++++
  2 files changed, 36 insertions(+), 1 deletions(-)

diff --git a/include/linux/memblock.h b/include/linux/memblock.h
index 6e25597..ac52bbc 100644
--- a/include/linux/memblock.h
+++ b/include/linux/memblock.h
@@ -42,7 +42,6 @@ struct memblock {

  extern struct memblock memblock;
  extern int memblock_debug;
-extern struct movablecore_map movablecore_map;

  #define memblock_dbg(fmt, ...) \
  	if (memblock_debug) printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
@@ -61,6 +60,8 @@ int memblock_reserve(phys_addr_t base, phys_addr_t size);
  void memblock_trim_memory(phys_addr_t align);

  #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
+extern struct movablecore_map movablecore_map;
+
  void __next_mem_pfn_range(int *idx, int nid, unsigned long *out_start_pfn,
  			  unsigned long *out_end_pfn, int *out_nid);

diff --git a/mm/memblock.c b/mm/memblock.c
index 1e48774..0218231 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -92,9 +92,13 @@ static long __init_memblock 
memblock_overlaps_region(struct memblock_type *type,
   *
   * Find @size free area aligned to @align in the specified range and node.
   *
+ * If we have CONFIG_HAVE_MEMBLOCK_NODE_MAP defined, we need to check 
if the
+ * memory we found if not in hotpluggable ranges.
+ *
   * RETURNS:
   * Found address on success, %0 on failure.
   */
+#ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
  phys_addr_t __init_memblock memblock_find_in_range_node(phys_addr_t start,
  					phys_addr_t end, phys_addr_t size,
  					phys_addr_t align, int nid)
@@ -139,6 +143,36 @@ restart:

  	return 0;
  }
+#else /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
+phys_addr_t __init_memblock memblock_find_in_range_node(phys_addr_t start,
+					phys_addr_t end, phys_addr_t size,
+					phys_addr_t align, int nid)
+{
+	phys_addr_t this_start, this_end, cand;
+	u64 i;
+
+	/* pump up @end */
+	if (end == MEMBLOCK_ALLOC_ACCESSIBLE)
+		end = memblock.current_limit;
+
+	/* avoid allocating the first page */
+	start = max_t(phys_addr_t, start, PAGE_SIZE);
+	end = max(start, end);
+
+	for_each_free_mem_range_reverse(i, nid, &this_start, &this_end, NULL) {
+		this_start = clamp(this_start, start, end);
+		this_end = clamp(this_end, start, end);
+
+		if (this_end < size)
+			continue;
+
+		cand = round_down(this_end - size, align);
+		if (cand >= this_start)
+			return cand;
+	}
+	return 0;
+}
+#endif /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */

  /**
   * memblock_find_in_range - find free area in given range
-- 1.7.1

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2013-01-23  5:42 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-23  4:11 Build error of mmotm-2013-01-18-15-48 Minchan Kim
2013-01-23  5:32 ` Tang Chen [this message]
2013-01-23  6:19   ` Minchan Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50FF75D1.6070303@cn.fujitsu.com \
    --to=tangchen@cn.fujitsu.com \
    --cc=linux-mm@kvack.org \
    --cc=minchan@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.