* [PATCH] 3/7 Move pfn_to_nid inline
@ 2003-02-28 21:33 Martin J. Bligh
0 siblings, 0 replies; only message in thread
From: Martin J. Bligh @ 2003-02-28 21:33 UTC (permalink / raw)
To: Linus Torvalds; +Cc: linux-kernel, Bill Irwin
Patch from William Lee Irwin
Inline and simplify pfn_to_nid - this is called heavily, it's a tiny
function, and makes a noticable difference in system time for kernel
compiles (sorry, lost the data). Is only used on NUMA machines.
Has been tested in my tree for over a month on UP, SMP, and NUMA and
compile tested against a variety of different configs.
diff -urpN -X /home/fletch/.diff.exclude 011-mpc_apic_id/arch/i386/kernel/i386_ksyms.c 012-pfn_to_nid/arch/i386/kernel/i386_ksyms.c
--- 011-mpc_apic_id/arch/i386/kernel/i386_ksyms.c Tue Feb 25 23:03:43 2003
+++ 012-pfn_to_nid/arch/i386/kernel/i386_ksyms.c Fri Feb 28 08:05:34 2003
@@ -68,7 +68,6 @@ EXPORT_SYMBOL(EISA_bus);
EXPORT_SYMBOL(MCA_bus);
#ifdef CONFIG_DISCONTIGMEM
EXPORT_SYMBOL(node_data);
-EXPORT_SYMBOL(pfn_to_nid);
#endif
#ifdef CONFIG_X86_NUMAQ
EXPORT_SYMBOL(xquad_portio);
diff -urpN -X /home/fletch/.diff.exclude 011-mpc_apic_id/arch/i386/kernel/numaq.c 012-pfn_to_nid/arch/i386/kernel/numaq.c
--- 011-mpc_apic_id/arch/i386/kernel/numaq.c Sun Nov 17 20:29:51 2002
+++ 012-pfn_to_nid/arch/i386/kernel/numaq.c Fri Feb 28 08:05:34 2003
@@ -27,6 +27,7 @@
#include <linux/mm.h>
#include <linux/bootmem.h>
#include <linux/mmzone.h>
+#include <linux/module.h>
#include <asm/numaq.h>
/* These are needed before the pgdat's are created */
@@ -82,19 +83,7 @@ static void __init smp_dump_qct(void)
* physnode_map[8- ] = -1;
*/
int physnode_map[MAX_ELEMENTS] = { [0 ... (MAX_ELEMENTS - 1)] = -1};
-
-#define PFN_TO_ELEMENT(pfn) (pfn / PAGES_PER_ELEMENT)
-#define PA_TO_ELEMENT(pa) (PFN_TO_ELEMENT(pa >> PAGE_SHIFT))
-
-int pfn_to_nid(unsigned long pfn)
-{
- int nid = physnode_map[PFN_TO_ELEMENT(pfn)];
-
- if (nid == -1)
- BUG(); /* address is not present */
-
- return nid;
-}
+EXPORT_SYMBOL(physnode_map);
/*
* for each node mark the regions
diff -urpN -X /home/fletch/.diff.exclude 011-mpc_apic_id/include/asm-i386/numaq.h 012-pfn_to_nid/include/asm-i386/numaq.h
--- 011-mpc_apic_id/include/asm-i386/numaq.h Thu Jan 9 19:16:11 2003
+++ 012-pfn_to_nid/include/asm-i386/numaq.h Fri Feb 28 08:05:34 2003
@@ -36,10 +36,11 @@
#define MAX_ELEMENTS 256
#define PAGES_PER_ELEMENT (16777216/256)
+extern int physnode_map[];
+#define pfn_to_nid(pfn) ({ physnode_map[(pfn) / PAGES_PER_ELEMENT]; })
#define pfn_to_pgdat(pfn) NODE_DATA(pfn_to_nid(pfn))
#define PHYSADDR_TO_NID(pa) pfn_to_nid(pa >> PAGE_SHIFT)
#define MAX_NUMNODES 8
-extern int pfn_to_nid(unsigned long);
extern void get_memcfg_numaq(void);
#define get_memcfg_numa() get_memcfg_numaq()
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2003-02-28 21:35 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-02-28 21:33 [PATCH] 3/7 Move pfn_to_nid inline Martin J. Bligh
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.