[patch][rfc] Memory Binding (0/1)

Matthew Dobson (colpatch@us.ibm.com)
Tue, 01 Apr 2003 14:31:55 -0800


This is a MIME-formatted message. If you see this text it means that your
E-mail software does not support MIME-formatted messages.

--=_courier-20687-1049236910-0001-2
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

So I've made a couple attempts at adding a Memory Binding facility to
the kernel. Obviously, I've had no success as yet, so I'm stubbornly
trying another approach! ;)

This patch is just a small pre-patch to the real memory binding. It
just adds get_zonelist() and get_node_zonelist() calls, to make some
code a little more readable. This patch is super straight-forward. The
real fun is in the next patch...

[mcd@arrakis membind]$ diffstat 00-pre_membind.patch
gfp.h | 2 +-
mmzone.h | 8 ++++++++
2 files changed, 9 insertions(+), 1 deletion(-)

-Matt

--=_courier-20687-1049236910-0001-2
Content-Type: text/plain; name="00-pre_membind.patch"; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="00-pre_membind.patch"

diff -Nur --exclude-from=/usr/src/.dontdiff linux-2.5.66-vanilla/include/linux/gfp.h linux-2.5.66-pre_membind/include/linux/gfp.h
--- linux-2.5.66-vanilla/include/linux/gfp.h Mon Mar 24 14:00:10 2003
+++ linux-2.5.66-pre_membind/include/linux/gfp.h Mon Mar 31 17:38:47 2003
@@ -52,7 +52,7 @@
if (unlikely(order >= MAX_ORDER))
return NULL;

- return __alloc_pages(gfp_mask, order, NODE_DATA(nid)->node_zonelists + (gfp_mask & GFP_ZONEMASK));
+ return __alloc_pages(gfp_mask, order, get_node_zonelist(nid, gfp_mask));
}

#define alloc_pages(gfp_mask, order) \
diff -Nur --exclude-from=/usr/src/.dontdiff linux-2.5.66-vanilla/include/linux/mmzone.h linux-2.5.66-pre_membind/include/linux/mmzone.h
--- linux-2.5.66-vanilla/include/linux/mmzone.h Mon Mar 24 14:00:45 2003
+++ linux-2.5.66-pre_membind/include/linux/mmzone.h Mon Mar 31 17:38:47 2003
@@ -326,6 +326,14 @@
#define num_online_memblks() 1

#endif /* CONFIG_DISCONTIGMEM || CONFIG_NUMA */
+
+static inline struct zonelist *get_node_zonelist(int nid, int gfp_mask)
+{
+ return NODE_DATA(nid)->node_zonelists + (gfp_mask & GFP_ZONEMASK);
+}
+
+#define get_zonelist(gfp_mask) get_node_zonelist(numa_node_id(), gfp_mask)
+
#endif /* !__ASSEMBLY__ */
#endif /* __KERNEL__ */
#endif /* _LINUX_MMZONE_H */

--=_courier-20687-1049236910-0001-2--