Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6

* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
[IA64] fsys_getcpu for IA64
[IA64] remove duplicate declaration of efi_initialize_iomem_resources
[IA64] Pick highest possible saved_max_pfn for crash_dump
[IA64] fix NULL pointer in ia64/irq_chip-mask/unmask function

+130 -10
+1
arch/ia64/kernel/asm-offsets.c
··· 35 35 BLANK(); 36 36 37 37 DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); 38 + DEFINE(TI_CPU, offsetof(struct thread_info, cpu)); 38 39 DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count)); 39 40 40 41 BLANK();
+5 -5
arch/ia64/kernel/efi.c
··· 971 971 if (!is_memory_available(md)) 972 972 continue; 973 973 974 + #ifdef CONFIG_CRASH_DUMP 975 + /* saved_max_pfn should ignore max_addr= command line arg */ 976 + if (saved_max_pfn < (efi_md_end(md) >> PAGE_SHIFT)) 977 + saved_max_pfn = (efi_md_end(md) >> PAGE_SHIFT); 978 + #endif 974 979 /* 975 980 * Round ends inward to granule boundaries 976 981 * Give trimmings to uncached allocator ··· 1015 1010 } else 1016 1011 ae = efi_md_end(md); 1017 1012 1018 - #ifdef CONFIG_CRASH_DUMP 1019 - /* saved_max_pfn should ignore max_addr= command line arg */ 1020 - if (saved_max_pfn < (ae >> PAGE_SHIFT)) 1021 - saved_max_pfn = (ae >> PAGE_SHIFT); 1022 - #endif 1023 1013 /* keep within max_addr= and min_addr= command line arg */ 1024 1014 as = max(as, min_addr); 1025 1015 ae = min(ae, max_addr);
+105
arch/ia64/kernel/fsys.S
··· 10 10 * probably broke it along the way... ;-) 11 11 * 13-Jul-04 clameter Implement fsys_clock_gettime and revise fsys_gettimeofday to make 12 12 * it capable of using memory based clocks without falling back to C code. 13 + * 08-Feb-07 Fenghua Yu Implement fsys_getcpu. 14 + * 13 15 */ 14 16 15 17 #include <asm/asmmacro.h> ··· 507 505 #endif 508 506 END(fsys_rt_sigprocmask) 509 507 508 + /* 509 + * fsys_getcpu doesn't use the third parameter in this implementation. It reads 510 + * current_thread_info()->cpu and corresponding node in cpu_to_node_map. 511 + */ 512 + ENTRY(fsys_getcpu) 513 + .prologue 514 + .altrp b6 515 + .body 516 + ;; 517 + add r2=TI_FLAGS+IA64_TASK_SIZE,r16 518 + tnat.nz p6,p0 = r32 // guard against NaT argument 519 + add r3=TI_CPU+IA64_TASK_SIZE,r16 520 + ;; 521 + ld4 r3=[r3] // M r3 = thread_info->cpu 522 + ld4 r2=[r2] // M r2 = thread_info->flags 523 + (p6) br.cond.spnt.few .fail_einval // B 524 + ;; 525 + tnat.nz p7,p0 = r33 // I guard against NaT argument 526 + (p7) br.cond.spnt.few .fail_einval // B 527 + #ifdef CONFIG_NUMA 528 + movl r17=cpu_to_node_map 529 + ;; 530 + EX(.fail_efault, probe.w.fault r32, 3) // M This takes 5 cycles 531 + EX(.fail_efault, probe.w.fault r33, 3) // M This takes 5 cycles 532 + shladd r18=r3,1,r17 533 + ;; 534 + ld2 r20=[r18] // r20 = cpu_to_node_map[cpu] 535 + and r2 = TIF_ALLWORK_MASK,r2 536 + ;; 537 + cmp.ne p8,p0=0,r2 538 + (p8) br.spnt.many fsys_fallback_syscall 539 + ;; 540 + ;; 541 + EX(.fail_efault, st4 [r32] = r3) 542 + EX(.fail_efault, st2 [r33] = r20) 543 + mov r8=0 544 + ;; 545 + #else 546 + EX(.fail_efault, probe.w.fault r32, 3) // M This takes 5 cycles 547 + EX(.fail_efault, probe.w.fault r33, 3) // M This takes 5 cycles 548 + and r2 = TIF_ALLWORK_MASK,r2 549 + ;; 550 + cmp.ne p8,p0=0,r2 551 + (p8) br.spnt.many fsys_fallback_syscall 552 + ;; 553 + EX(.fail_efault, st4 [r32] = r3) 554 + EX(.fail_efault, st2 [r33] = r0) 555 + mov r8=0 556 + ;; 557 + #endif 558 + FSYS_RETURN 559 + END(fsys_getcpu) 560 + 510 561 ENTRY(fsys_fallback_syscall) 511 562 .prologue 512 563 .altrp b6 ··· 933 878 data8 0 // timer_delete 934 879 data8 0 // clock_settime 935 880 data8 fsys_clock_gettime // clock_gettime 881 + data8 0 // clock_getres // 1255 882 + data8 0 // clock_nanosleep 883 + data8 0 // fstatfs64 884 + data8 0 // statfs64 885 + data8 0 // mbind 886 + data8 0 // get_mempolicy // 1260 887 + data8 0 // set_mempolicy 888 + data8 0 // mq_open 889 + data8 0 // mq_unlink 890 + data8 0 // mq_timedsend 891 + data8 0 // mq_timedreceive // 1265 892 + data8 0 // mq_notify 893 + data8 0 // mq_getsetattr 894 + data8 0 // kexec_load 895 + data8 0 // vserver 896 + data8 0 // waitid // 1270 897 + data8 0 // add_key 898 + data8 0 // request_key 899 + data8 0 // keyctl 900 + data8 0 // ioprio_set 901 + data8 0 // ioprio_get // 1275 902 + data8 0 // move_pages 903 + data8 0 // inotify_init 904 + data8 0 // inotify_add_watch 905 + data8 0 // inotify_rm_watch 906 + data8 0 // migrate_pages // 1280 907 + data8 0 // openat 908 + data8 0 // mkdirat 909 + data8 0 // mknodat 910 + data8 0 // fchownat 911 + data8 0 // futimesat // 1285 912 + data8 0 // newfstatat 913 + data8 0 // unlinkat 914 + data8 0 // renameat 915 + data8 0 // linkat 916 + data8 0 // symlinkat // 1290 917 + data8 0 // readlinkat 918 + data8 0 // fchmodat 919 + data8 0 // faccessat 920 + data8 0 921 + data8 0 // 1295 922 + data8 0 // unshare 923 + data8 0 // splice 924 + data8 0 // set_robust_list 925 + data8 0 // get_robust_list 926 + data8 0 // sync_file_range // 1300 927 + data8 0 // tee 928 + data8 0 // vmsplice 929 + data8 0 930 + data8 fsys_getcpu // getcpu // 1304 936 931 937 932 // fill in zeros for the remaining entries 938 933 .zero:
+6 -2
arch/ia64/kernel/iosapic.c
··· 446 446 #define iosapic_disable_level_irq mask_irq 447 447 #define iosapic_ack_level_irq nop 448 448 449 - struct hw_interrupt_type irq_type_iosapic_level = { 449 + struct irq_chip irq_type_iosapic_level = { 450 450 .name = "IO-SAPIC-level", 451 451 .startup = iosapic_startup_level_irq, 452 452 .shutdown = iosapic_shutdown_level_irq, ··· 454 454 .disable = iosapic_disable_level_irq, 455 455 .ack = iosapic_ack_level_irq, 456 456 .end = iosapic_end_level_irq, 457 + .mask = mask_irq, 458 + .unmask = unmask_irq, 457 459 .set_affinity = iosapic_set_affinity 458 460 }; 459 461 ··· 495 493 #define iosapic_disable_edge_irq nop 496 494 #define iosapic_end_edge_irq nop 497 495 498 - struct hw_interrupt_type irq_type_iosapic_edge = { 496 + struct irq_chip irq_type_iosapic_edge = { 499 497 .name = "IO-SAPIC-edge", 500 498 .startup = iosapic_startup_edge_irq, 501 499 .shutdown = iosapic_disable_edge_irq, ··· 503 501 .disable = iosapic_disable_edge_irq, 504 502 .ack = iosapic_ack_edge_irq, 505 503 .end = iosapic_end_edge_irq, 504 + .mask = mask_irq, 505 + .unmask = unmask_irq, 506 506 .set_affinity = iosapic_set_affinity 507 507 }; 508 508
-2
arch/ia64/kernel/setup.c
··· 91 91 .name = "Kernel code", 92 92 .flags = IORESOURCE_BUSY | IORESOURCE_MEM 93 93 }; 94 - extern void efi_initialize_iomem_resources(struct resource *, 95 - struct resource *); 96 94 extern char _text[], _end[], _etext[]; 97 95 98 96 unsigned long ia64_max_cacheline_size;
+13 -1
arch/ia64/sn/kernel/irq.c
··· 205 205 (void)sn_retarget_vector(sn_irq_info, nasid, slice); 206 206 } 207 207 208 - struct hw_interrupt_type irq_type_sn = { 208 + static void 209 + sn_mask_irq(unsigned int irq) 210 + { 211 + } 212 + 213 + static void 214 + sn_unmask_irq(unsigned int irq) 215 + { 216 + } 217 + 218 + struct irq_chip irq_type_sn = { 209 219 .name = "SN hub", 210 220 .startup = sn_startup_irq, 211 221 .shutdown = sn_shutdown_irq, ··· 223 213 .disable = sn_disable_irq, 224 214 .ack = sn_ack_irq, 225 215 .end = sn_end_irq, 216 + .mask = sn_mask_irq, 217 + .unmask = sn_unmask_irq, 226 218 .set_affinity = sn_set_affinity_irq 227 219 }; 228 220