All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Boyd <sboyd@quicinc.com>
To: Tejun Heo <tj@kernel.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Yinghai Lu <yinghai@kernel.org>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>
Subject: memblock_is_region_memory() vs. memblock_is_region_reserved()
Date: Mon, 14 May 2012 18:11:20 -0700	[thread overview]
Message-ID: <4FB1AD38.7000503@quicinc.com> (raw)

I was looking at memblock and noticed that memblock_is_region_memory()
is implemented differently than memblock_is_region_reserved().

memblock_is_region_memory() returns true only if the region you are
testing is fully contained within the bounds of a memory block. If the
region is half in and half out of a memory region (i.e. overlaps memory
and a hole) it is not memory and returns false.

memblock_is_region_reserved() is the opposite. If the region are you are
testing is half in and half out of a reserved region (i.e. overlaps
reserved memory) it returns true, otherwise it returns false.

These functions sound like they do the same thing by testing to see if
what you specify is either memory or reserved memory, but the semantics
are a bit different in that the former doesn't allow overlap, and the
latter accepts overlap. Should we rename memblock_is_region_reserved()
to memblock_overlaps_reserved() to make it clearer what the intention
is? Or perhaps rename memblock_is_region_memory() to
memblock_is_region_within_memory()?

If anything, perhaps this patch will help clarify things?

diff --git a/mm/memblock.c b/mm/memblock.c
index a44eab3..f097e79 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -855,6 +855,16 @@ int __init_memblock memblock_is_memory(phys_addr_t addr)
 	return memblock_search(&memblock.memory, addr) != -1;
 }
 
+/**
+ * memblock_is_region_memory - check if a region is a subset of memory
+ * @base: base of region to check
+ * @size: size of region to check
+ *
+ * Check if the region [@base, @base+@size) is a subset of a memory block.
+ *
+ * RETURNS:
+ * 0 if false, non-zero if true
+ */
 int __init_memblock memblock_is_region_memory(phys_addr_t base, phys_addr_t size)
 {
 	int idx = memblock_search(&memblock.memory, base);
@@ -867,6 +877,16 @@ int __init_memblock memblock_is_region_memory(phys_addr_t base, phys_addr_t size
 		 memblock.memory.regions[idx].size) >= end;
 }
 
+/**
+ * memblock_is_region_reserved - check if a region intersects reserved memory
+ * @base: base of region to check
+ * @size: size of region to check
+ *
+ * Check if the region [@base, @base+@size) intersects a reserved memory block.
+ *
+ * RETURNS:
+ * 0 if false, non-zero if true
+ */
 int __init_memblock memblock_is_region_reserved(phys_addr_t base, phys_addr_t size)
 {
 	memblock_cap_size(base, &size);


             reply	other threads:[~2012-05-15  1:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-15  1:11 Stephen Boyd [this message]
2012-05-15 15:15 ` memblock_is_region_memory() vs. memblock_is_region_reserved() Tejun Heo
2012-05-24  7:45   ` [PATCH] memblock: Document memblock_is_region_{memory,reserved}() Stephen Boyd
2012-06-07 17:23     ` Stephen Boyd
2012-06-08 14:54     ` [tip:core/urgent] memblock: Document memblock_is_region_{memory, reserved}() tip-bot for Stephen Boyd

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=4FB1AD38.7000503@quicinc.com \
    --to=sboyd@quicinc.com \
    --cc=benh@kernel.crashing.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tj@kernel.org \
    --cc=yinghai@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.