NUMA-Q relocate early ioremap
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
@@ -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
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
@@ -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