Re: [PATCH] Add vDSO for x86-64 with gettimeofday/clock_gettime/getcpu fix

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On (27/04/07 18:34), Andi Kleen didst pronounce:
> On Friday 27 April 2007 17:50:06 Mel Gorman wrote:
> > On (27/04/07 09:59), Mel Gorman didst pronounce:
> > > On (27/04/07 02:39), Andi Kleen didst pronounce:
> > > > 
> > > > 
> > > > > That's vdso.lds.S, not vdso.lds. The VDSO_TEXT_OFFSET is still 0x400.
> > > > > This is what I should have posted the last time
> > > > > 
> > > > > --- build/arch/x86_64/vdso/voffset.h.orig	2007-04-26 08:43:31.523739878 -0700
> > > > > +++ build/arch/x86_64/vdso/voffset.h	2007-04-26 08:43:38.839579356 -0700
> > > > > @@ -1 +1 @@
> > > > > -#define VDSO_TEXT_OFFSET 0x500
> > > > > +#define VDSO_TEXT_OFFSET 0x400
> > > > 
> > > > It's definitely 0x400 here. Is your patch reversed and you want 0x500? 
> > > > 
> > > 
> > > Sorry, that patch is reversed. It's 0x500 it needs to be to work here.
> > > 
> > 
> > What I should have done in the first place..... Sorry for the noise.
> 
> I had already fixed it up. 
> 

Cool

> But now can you test Suresh's latest patch too please?

I did earlier and it had merge problems. I had responded to the and I see
it in my sent-mail and Andy says he received it but it hasn't shown up on
lkml so somehow I screwed up. Here is the response again.

===== Rend earlier response =====
On (26/04/07 16:40), Siddha, Suresh B didst pronounce:
> On Thu, Apr 26, 2007 at 06:40:36PM +0100, Mel Gorman wrote:
> > NODE_DATA(0) was returning NULL because of
> > x86_64-set-node_possible_map-at-runtime.patch. This patch appears to
> > break acpi_scan_nodes() so that setup_node_bootmem() never gets called and
> > node_data[] remains full of zeros. Later on, reserve_bootmem_generic() is
> > called but with NODE_DATA(0) == NULL, it all goes pear shaped. Author of
> > patch cc'd.
> 
> oops. Appended patch should fix this. Can you please check this and Ack it?
> 

This patch does not apply cleanly to 2.6.21-rc7-mm2. Nor does
x86_64-set-node_possible_map-at-runtime.patch backout cleanly and when rejects
are fixed up, this patch still not apply cleanly . After fixing rejects
I ended up with the patch below that applies on top of 2.6.21-rc7-mm2. It
booted but it's not clear if the end result is what you intended.  Could you
send a patch that applies cleanly on top of 2.6.21-rc7-mm2 and I'll give it
a test please? Thanks

diff -rup -X /usr/src/patchset-0.6/bin//dontdiff linux-2.6.21-rc7-mm2-clean/arch/x86_64/mm/numa.c linux-2.6.21-rc7-mm2-scratch/arch/x86_64/mm/numa.c
--- linux-2.6.21-rc7-mm2-clean/arch/x86_64/mm/numa.c	2007-04-27 10:24:47.000000000 +0100
+++ linux-2.6.21-rc7-mm2-scratch/arch/x86_64/mm/numa.c	2007-04-27 11:00:40.000000000 +0100
@@ -298,7 +298,7 @@ static int __init setup_node_range(int n
 		ret = -1;
 	}
 	nodes[nid].end = *addr;
-	node_set(nid, node_possible_map);
+	node_set_online(nid);
 	printk(KERN_INFO "Faking node %d at %016Lx-%016Lx (%LuMB)\n", nid,
 	       nodes[nid].start, nodes[nid].end,
 	       (nodes[nid].end - nodes[nid].start) >> 20);
diff -rup -X /usr/src/patchset-0.6/bin//dontdiff linux-2.6.21-rc7-mm2-clean/arch/x86_64/mm/srat.c linux-2.6.21-rc7-mm2-scratch/arch/x86_64/mm/srat.c
--- linux-2.6.21-rc7-mm2-clean/arch/x86_64/mm/srat.c	2007-04-27 10:24:47.000000000 +0100
+++ linux-2.6.21-rc7-mm2-scratch/arch/x86_64/mm/srat.c	2007-04-27 10:58:33.000000000 +0100
@@ -25,6 +25,7 @@ int acpi_numa __initdata;
 
 static struct acpi_table_slit *acpi_slit;
 
+static nodemask_t nodes_parsed __initdata;
 static struct bootnode nodes[MAX_NUMNODES] __initdata;
 static struct bootnode nodes_add[MAX_NUMNODES];
 static int found_add_area __initdata;
@@ -42,7 +43,7 @@ static __init int setup_node(int pxm)
 static __init int conflicting_nodes(unsigned long start, unsigned long end)
 {
 	int i;
-	for_each_node_mask(i, node_possible_map) {
+	for_each_node_mask(i, nodes_parsed) {
 		struct bootnode *nd = &nodes[i];
 		if (nd->start == nd->end)
 			continue;
@@ -320,7 +321,7 @@ acpi_numa_memory_affinity_init(struct ac
 	}
 	nd = &nodes[node];
 	oldnode = *nd;
-	if (!node_test_and_set(node, node_possible_map)) {
+	if (!node_test_and_set(node, nodes_parsed)) {
 		nd->start = start;
 		nd->end = end;
 	} else {
@@ -343,7 +344,7 @@ acpi_numa_memory_affinity_init(struct ac
 		printk(KERN_NOTICE "SRAT: Hotplug region ignored\n");
 		*nd = oldnode;
 		if ((nd->start | nd->end) == 0)
-			node_clear(node, node_possible_map);
+			node_clear(node, nodes_parsed);
 	}
 }
 
@@ -355,7 +356,7 @@ static int nodes_cover_memory(void)
 	unsigned long pxmram, e820ram;
 
 	pxmram = 0;
-	for_each_node_mask(i, node_possible_map) {
+	for_each_node_mask(i, nodes_parsed) {
 		unsigned long s = nodes[i].start >> PAGE_SHIFT;
 		unsigned long e = nodes[i].end >> PAGE_SHIFT;
 		pxmram += e - s;
@@ -379,7 +380,7 @@ static int nodes_cover_memory(void)
 static void unparse_node(int node)
 {
 	int i;
-	node_clear(node, node_possible_map);
+	node_clear(node, nodes_parsed);
 	for (i = 0; i < MAX_LOCAL_APIC; i++) {
 		if (apicid_to_node[i] == node)
 			apicid_to_node[i] = NUMA_NO_NODE;
@@ -418,6 +419,8 @@ int __init acpi_scan_nodes(unsigned long
 		return -1;
 	}
 
+	node_possible_map = nodes_parsed;
+
 	/* Finally register nodes */
 	for_each_node_mask(i, node_possible_map)
 		setup_node_bootmem(i, nodes[i].start, nodes[i].end);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux