Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6

* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
[SPARC64]: Warn user if cpu is ignored.
[SPARC64]: Fix lockdep, particularly on SMP.
[SPARC64]: Update defconfig.

+73 -43
+5 -11
arch/sparc64/defconfig
··· 1 # 2 # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.23-rc1 4 - # Sun Jul 22 19:24:37 2007 5 # 6 CONFIG_SPARC=y 7 CONFIG_SPARC64=y ··· 32 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 33 34 # 35 - # Code maturity level options 36 # 37 CONFIG_EXPERIMENTAL=y 38 CONFIG_BROKEN_ON_SMP=y 39 CONFIG_INIT_ENV_ARG_LIMIT=32 40 - 41 - # 42 - # General setup 43 - # 44 CONFIG_LOCALVERSION="" 45 # CONFIG_LOCALVERSION_AUTO is not set 46 CONFIG_SWAP=y ··· 551 # CONFIG_SIS190 is not set 552 # CONFIG_SKGE is not set 553 # CONFIG_SKY2 is not set 554 # CONFIG_VIA_VELOCITY is not set 555 CONFIG_TIGON3=m 556 CONFIG_BNX2=m ··· 806 # CONFIG_SENSORS_SMSC47M1 is not set 807 # CONFIG_SENSORS_SMSC47M192 is not set 808 # CONFIG_SENSORS_SMSC47B397 is not set 809 # CONFIG_SENSORS_VIA686A is not set 810 # CONFIG_SENSORS_VT1211 is not set 811 # CONFIG_SENSORS_VT8231 is not set ··· 1160 # CONFIG_MMC is not set 1161 # CONFIG_NEW_LEDS is not set 1162 # CONFIG_INFINIBAND is not set 1163 - 1164 - # 1165 - # Real Time Clock 1166 - # 1167 # CONFIG_RTC_CLASS is not set 1168 1169 #
··· 1 # 2 # Automatically generated make config: don't edit 3 + # Linux kernel version: 2.6.23-rc6 4 + # Sun Sep 16 09:52:11 2007 5 # 6 CONFIG_SPARC=y 7 CONFIG_SPARC64=y ··· 32 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 33 34 # 35 + # General setup 36 # 37 CONFIG_EXPERIMENTAL=y 38 CONFIG_BROKEN_ON_SMP=y 39 CONFIG_INIT_ENV_ARG_LIMIT=32 40 CONFIG_LOCALVERSION="" 41 # CONFIG_LOCALVERSION_AUTO is not set 42 CONFIG_SWAP=y ··· 555 # CONFIG_SIS190 is not set 556 # CONFIG_SKGE is not set 557 # CONFIG_SKY2 is not set 558 + # CONFIG_SK98LIN is not set 559 # CONFIG_VIA_VELOCITY is not set 560 CONFIG_TIGON3=m 561 CONFIG_BNX2=m ··· 809 # CONFIG_SENSORS_SMSC47M1 is not set 810 # CONFIG_SENSORS_SMSC47M192 is not set 811 # CONFIG_SENSORS_SMSC47B397 is not set 812 + # CONFIG_SENSORS_THMC50 is not set 813 # CONFIG_SENSORS_VIA686A is not set 814 # CONFIG_SENSORS_VT1211 is not set 815 # CONFIG_SENSORS_VT8231 is not set ··· 1162 # CONFIG_MMC is not set 1163 # CONFIG_NEW_LEDS is not set 1164 # CONFIG_INFINIBAND is not set 1165 # CONFIG_RTC_CLASS is not set 1166 1167 #
+30 -5
arch/sparc64/kernel/head.S
··· 98 .globl prom_boot_mapped_pc, prom_boot_mapping_mode 99 .globl prom_boot_mapping_phys_high, prom_boot_mapping_phys_low 100 .globl prom_compatible_name, prom_cpu_path, prom_cpu_compatible 101 - .globl is_sun4v, sun4v_chip_type 102 prom_peer_name: 103 .asciz "peer" 104 prom_compatible_name: ··· 121 .asciz "map" 122 prom_unmap_name: 123 .asciz "unmap" 124 prom_sun4v_name: 125 .asciz "sun4v" 126 prom_niagara_prefix: ··· 693 sethi %hi(kern_base), %g3 694 ldx [%g3 + %lo(kern_base)], %g3 695 add %g2, %g3, %o1 696 697 - call prom_set_trap_table_sun4v 698 - sethi %hi(sparc64_ttable_tl0), %o0 699 700 ba,pt %xcc, 2f 701 nop 702 703 - 1: call prom_set_trap_table 704 - sethi %hi(sparc64_ttable_tl0), %o0 705 706 /* Start using proper page size encodings in ctx register. */ 707 2: sethi %hi(sparc64_kern_pri_context), %g3
··· 98 .globl prom_boot_mapped_pc, prom_boot_mapping_mode 99 .globl prom_boot_mapping_phys_high, prom_boot_mapping_phys_low 100 .globl prom_compatible_name, prom_cpu_path, prom_cpu_compatible 101 + .globl is_sun4v, sun4v_chip_type, prom_set_trap_table_name 102 prom_peer_name: 103 .asciz "peer" 104 prom_compatible_name: ··· 121 .asciz "map" 122 prom_unmap_name: 123 .asciz "unmap" 124 + prom_set_trap_table_name: 125 + .asciz "SUNW,set-trap-table" 126 prom_sun4v_name: 127 .asciz "sun4v" 128 prom_niagara_prefix: ··· 691 sethi %hi(kern_base), %g3 692 ldx [%g3 + %lo(kern_base)], %g3 693 add %g2, %g3, %o1 694 + sethi %hi(sparc64_ttable_tl0), %o0 695 696 + set prom_set_trap_table_name, %g2 697 + stx %g2, [%sp + 2047 + 128 + 0x00] 698 + mov 2, %g2 699 + stx %g2, [%sp + 2047 + 128 + 0x08] 700 + mov 0, %g2 701 + stx %g2, [%sp + 2047 + 128 + 0x10] 702 + stx %o0, [%sp + 2047 + 128 + 0x18] 703 + stx %o1, [%sp + 2047 + 128 + 0x20] 704 + sethi %hi(p1275buf), %g2 705 + or %g2, %lo(p1275buf), %g2 706 + ldx [%g2 + 0x08], %o1 707 + call %o1 708 + add %sp, (2047 + 128), %o0 709 710 ba,pt %xcc, 2f 711 nop 712 713 + 1: sethi %hi(sparc64_ttable_tl0), %o0 714 + set prom_set_trap_table_name, %g2 715 + stx %g2, [%sp + 2047 + 128 + 0x00] 716 + mov 1, %g2 717 + stx %g2, [%sp + 2047 + 128 + 0x08] 718 + mov 0, %g2 719 + stx %g2, [%sp + 2047 + 128 + 0x10] 720 + stx %o0, [%sp + 2047 + 128 + 0x18] 721 + sethi %hi(p1275buf), %g2 722 + or %g2, %lo(p1275buf), %g2 723 + ldx [%g2 + 0x08], %o1 724 + call %o1 725 + add %sp, (2047 + 128), %o0 726 727 /* Start using proper page size encodings in ctx register. */ 728 2: sethi %hi(sparc64_kern_pri_context), %g3
+5 -1
arch/sparc64/kernel/mdesc.c
··· 777 cpuid = *id; 778 779 #ifdef CONFIG_SMP 780 - if (cpuid >= NR_CPUS) 781 continue; 782 if (!cpu_isset(cpuid, mask)) 783 continue; 784 #else
··· 777 cpuid = *id; 778 779 #ifdef CONFIG_SMP 780 + if (cpuid >= NR_CPUS) { 781 + printk(KERN_WARNING "Ignoring CPU %d which is " 782 + ">= NR_CPUS (%d)\n", 783 + cpuid, NR_CPUS); 784 continue; 785 + } 786 if (!cpu_isset(cpuid, mask)) 787 continue; 788 #else
+5 -1
arch/sparc64/kernel/prom.c
··· 1583 ncpus_probed++; 1584 1585 #ifdef CONFIG_SMP 1586 - if (cpuid >= NR_CPUS) 1587 continue; 1588 #else 1589 /* On uniprocessor we only want the values for the 1590 * real physical cpu the kernel booted onto, however
··· 1583 ncpus_probed++; 1584 1585 #ifdef CONFIG_SMP 1586 + if (cpuid >= NR_CPUS) { 1587 + printk(KERN_WARNING "Ignoring CPU %d which is " 1588 + ">= NR_CPUS (%d)\n", 1589 + cpuid, NR_CPUS); 1590 continue; 1591 + } 1592 #else 1593 /* On uniprocessor we only want the values for the 1594 * real physical cpu the kernel booted onto, however
+28 -5
arch/sparc64/kernel/trampoline.S
··· 345 sethi %hi(tramp_stack), %g1 346 or %g1, %lo(tramp_stack), %g1 347 add %g1, TRAMP_STACK_SIZE, %g1 348 - sub %g1, STACKFRAME_SZ + STACK_BIAS, %sp 349 mov 0, %fp 350 351 /* Put garbage in these registers to trap any access to them. */ ··· 411 sethi %hi(kern_base), %g3 412 ldx [%g3 + %lo(kern_base)], %g3 413 add %g2, %g3, %o1 414 415 - call prom_set_trap_table_sun4v 416 - sethi %hi(sparc64_ttable_tl0), %o0 417 418 ba,pt %xcc, 2f 419 nop 420 421 - 1: call prom_set_trap_table 422 - sethi %hi(sparc64_ttable_tl0), %o0 423 424 2: ldx [%l0], %g6 425 ldx [%g6 + TI_TASK], %g4
··· 345 sethi %hi(tramp_stack), %g1 346 or %g1, %lo(tramp_stack), %g1 347 add %g1, TRAMP_STACK_SIZE, %g1 348 + sub %g1, STACKFRAME_SZ + STACK_BIAS + 256, %sp 349 mov 0, %fp 350 351 /* Put garbage in these registers to trap any access to them. */ ··· 411 sethi %hi(kern_base), %g3 412 ldx [%g3 + %lo(kern_base)], %g3 413 add %g2, %g3, %o1 414 + sethi %hi(sparc64_ttable_tl0), %o0 415 416 + set prom_set_trap_table_name, %g2 417 + stx %g2, [%sp + 2047 + 128 + 0x00] 418 + mov 2, %g2 419 + stx %g2, [%sp + 2047 + 128 + 0x08] 420 + mov 0, %g2 421 + stx %g2, [%sp + 2047 + 128 + 0x10] 422 + stx %o0, [%sp + 2047 + 128 + 0x18] 423 + stx %o1, [%sp + 2047 + 128 + 0x20] 424 + sethi %hi(p1275buf), %g2 425 + or %g2, %lo(p1275buf), %g2 426 + ldx [%g2 + 0x08], %o1 427 + call %o1 428 + add %sp, (2047 + 128), %o0 429 430 ba,pt %xcc, 2f 431 nop 432 433 + 1: sethi %hi(sparc64_ttable_tl0), %o0 434 + set prom_set_trap_table_name, %g2 435 + stx %g2, [%sp + 2047 + 128 + 0x00] 436 + mov 1, %g2 437 + stx %g2, [%sp + 2047 + 128 + 0x08] 438 + mov 0, %g2 439 + stx %g2, [%sp + 2047 + 128 + 0x10] 440 + stx %o0, [%sp + 2047 + 128 + 0x18] 441 + sethi %hi(p1275buf), %g2 442 + or %g2, %lo(p1275buf), %g2 443 + ldx [%g2 + 0x08], %o1 444 + call %o1 445 + add %sp, (2047 + 128), %o0 446 447 2: ldx [%l0], %g6 448 ldx [%g6 + TI_TASK], %g4
-16
arch/sparc64/prom/misc.c
··· 143 return 0xff; 144 } 145 146 - /* Install Linux trap table so PROM uses that instead of its own. */ 147 - void prom_set_trap_table(unsigned long tba) 148 - { 149 - p1275_cmd("SUNW,set-trap-table", 150 - (P1275_ARG(0, P1275_ARG_IN_64B) | 151 - P1275_INOUT(1, 0)), tba); 152 - } 153 - 154 - void prom_set_trap_table_sun4v(unsigned long tba, unsigned long mmfsa) 155 - { 156 - p1275_cmd("SUNW,set-trap-table", 157 - (P1275_ARG(0, P1275_ARG_IN_64B) | 158 - P1275_ARG(1, P1275_ARG_IN_64B) | 159 - P1275_INOUT(2, 0)), tba, mmfsa); 160 - } 161 - 162 int prom_get_mmu_ihandle(void) 163 { 164 int node, ret;
··· 143 return 0xff; 144 } 145 146 int prom_get_mmu_ihandle(void) 147 { 148 int node, ret;
-4
include/asm-sparc64/oplib.h
··· 297 extern int prom_ihandle2path(int handle, char *buffer, int bufsize); 298 299 /* Client interface level routines. */ 300 - extern void prom_set_trap_table(unsigned long tba); 301 - extern void prom_set_trap_table_sun4v(unsigned long tba, unsigned long mmfsa); 302 - 303 extern long p1275_cmd(const char *, long, ...); 304 - 305 306 #if 0 307 #define P1275_SIZE(x) ((((long)((x) / 32)) << 32) | (x))
··· 297 extern int prom_ihandle2path(int handle, char *buffer, int bufsize); 298 299 /* Client interface level routines. */ 300 extern long p1275_cmd(const char *, long, ...); 301 302 #if 0 303 #define P1275_SIZE(x) ((((long)((x) / 32)) << 32) | (x))