Skip to contentSkip to conversation

NUMA-Q relocate early ioremap

PATCH New Martin J. Bligh 1 participant 2 messages Aug 5, 2002 – Aug 13, 2002

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 NUMA-Q relocate early ioremap

This moves the early ioremap call to after cpu_online_map is initialized. Note everything is wrapped in clustered_apic_mode, so should be safe. Tested on NUMA-Q and std 2-way SMP through LTP.

Please apply,

Martin.

arch/i386/kernel/smpboot.c +10 -10
diff -Nur linux-2.5.25-vanilla/arch/i386/kernel/smpboot.c linux-2.5.25-patched/arch/i386/kernel/smpboot.c
@@ -968,16 +968,6 @@
 {
 	int apicid, cpu, bit;
 
-        if (clustered_apic_mode && (numnodes > 1)) {
-                printk("Remapping cross-quad port I/O for %d quads\n",
-			numnodes);
-                printk("xquad_portio vaddr 0x%08lx, len %08lx\n",
-                        (u_long) xquad_portio, 
-			(u_long) numnodes * XQUAD_PORTIO_LEN);
-                xquad_portio = ioremap (XQUAD_PORTIO_BASE, 
-			numnodes * XQUAD_PORTIO_LEN);
-        }
-
 #ifdef CONFIG_MTRR
 	/*  Must be done before other processors booted  */
 	mtrr_init_boot_cpu ();
@@ -1075,6 +1065,16 @@
 
 	if (GET_APIC_ID(apic_read(APIC_ID)) != boot_cpu_physical_apicid)
 		BUG();
+
+        if (clustered_apic_mode && (numnodes > 1)) {
+                printk("Remapping cross-quad port I/O for %d quads\n",
+			numnodes);
+                printk("xquad_portio vaddr 0x%08lx, len %08lx\n",
+                        (u_long) xquad_portio, 
+			(u_long) numnodes * XQUAD_PORTIO_LEN);
+                xquad_portio = ioremap (XQUAD_PORTIO_BASE, 
+			numnodes * XQUAD_PORTIO_LEN);
+        }
 
 	/*
 	 * Scan the CPU present map and fire up the other CPUs via do_boot_cpu
#1 lore raw

PATCH 1/1 NUMA-Q relocate early ioremap

This moves the early ioremap call to after cpu_online_map is initialized. Note everything is wrapped in clustered_apic_mode, so should be safe. Tested on NUMA-Q and std 2-way SMP through LTP. Says it's against 2.5.25, but applies to and works on 2.5.31.

Please apply,

Martin.

arch/i386/kernel/smpboot.c +10 -10
diff -Nur linux-2.5.25-vanilla/arch/i386/kernel/smpboot.c linux-2.5.25-patched/arch/i386/kernel/smpboot.c
@@ -968,16 +968,6 @@
 {
 	int apicid, cpu, bit;
 
-        if (clustered_apic_mode && (numnodes > 1)) {
-                printk("Remapping cross-quad port I/O for %d quads\n",
-			numnodes);
-                printk("xquad_portio vaddr 0x%08lx, len %08lx\n",
-                        (u_long) xquad_portio, 
-			(u_long) numnodes * XQUAD_PORTIO_LEN);
-                xquad_portio = ioremap (XQUAD_PORTIO_BASE, 
-			numnodes * XQUAD_PORTIO_LEN);
-        }
-
 #ifdef CONFIG_MTRR
 	/*  Must be done before other processors booted  */
 	mtrr_init_boot_cpu ();
@@ -1075,6 +1065,16 @@
 
 	if (GET_APIC_ID(apic_read(APIC_ID)) != boot_cpu_physical_apicid)
 		BUG();
+
+        if (clustered_apic_mode && (numnodes > 1)) {
+                printk("Remapping cross-quad port I/O for %d quads\n",
+			numnodes);
+                printk("xquad_portio vaddr 0x%08lx, len %08lx\n",
+                        (u_long) xquad_portio, 
+			(u_long) numnodes * XQUAD_PORTIO_LEN);
+                xquad_portio = ioremap (XQUAD_PORTIO_BASE, 
+			numnodes * XQUAD_PORTIO_LEN);
+        }
 
 	/*
 	 * Scan the CPU present map and fire up the other CPUs via do_boot_cpu