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