diff options
| author | Steve French <sfrench@us.ibm.com> | 2005-12-31 13:27:22 -0500 |
|---|---|---|
| committer | Steve French <sfrench@us.ibm.com> | 2005-12-31 13:27:22 -0500 |
| commit | eea60caef610c7a6c58c0de9c80ae1e438e01301 (patch) | |
| tree | 25e19289bba003fe085e589430d0d981fd6b73a7 /arch | |
| parent | da8543ef125afc7bba4da526b61a1ae07dc25109 (diff) | |
| parent | 82c9df820112c6286a8e8fbe482e94b65b49062c (diff) | |
Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'arch')
56 files changed, 294 insertions, 228 deletions
diff --git a/arch/alpha/kernel/machvec_impl.h b/arch/alpha/kernel/machvec_impl.h index 4959b7a3e1e6..11f996f24fde 100644 --- a/arch/alpha/kernel/machvec_impl.h +++ b/arch/alpha/kernel/machvec_impl.h | |||
| @@ -41,7 +41,7 @@ | |||
| 41 | #define CAT1(x,y) x##y | 41 | #define CAT1(x,y) x##y |
| 42 | #define CAT(x,y) CAT1(x,y) | 42 | #define CAT(x,y) CAT1(x,y) |
| 43 | 43 | ||
| 44 | #define DO_DEFAULT_RTC rtc_port: 0x70 | 44 | #define DO_DEFAULT_RTC .rtc_port = 0x70 |
| 45 | 45 | ||
| 46 | #define DO_EV4_MMU \ | 46 | #define DO_EV4_MMU \ |
| 47 | .max_asn = EV4_MAX_ASN, \ | 47 | .max_asn = EV4_MAX_ASN, \ |
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S index 2ad4aa2a1536..55076a75e5bf 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S | |||
| @@ -131,7 +131,7 @@ __syscall_start: | |||
| 131 | .long sys_wait4 | 131 | .long sys_wait4 |
| 132 | /* 115 */ .long sys_swapoff | 132 | /* 115 */ .long sys_swapoff |
| 133 | .long sys_sysinfo | 133 | .long sys_sysinfo |
| 134 | .long sys_ipc_wrapper | 134 | .long sys_ipc |
| 135 | .long sys_fsync | 135 | .long sys_fsync |
| 136 | .long sys_sigreturn_wrapper | 136 | .long sys_sigreturn_wrapper |
| 137 | /* 120 */ .long sys_clone_wrapper | 137 | /* 120 */ .long sys_clone_wrapper |
| @@ -254,7 +254,7 @@ __syscall_start: | |||
| 254 | .long sys_fremovexattr | 254 | .long sys_fremovexattr |
| 255 | .long sys_tkill | 255 | .long sys_tkill |
| 256 | .long sys_sendfile64 | 256 | .long sys_sendfile64 |
| 257 | /* 240 */ .long sys_futex_wrapper | 257 | /* 240 */ .long sys_futex |
| 258 | .long sys_sched_setaffinity | 258 | .long sys_sched_setaffinity |
| 259 | .long sys_sched_getaffinity | 259 | .long sys_sched_getaffinity |
| 260 | .long sys_io_setup | 260 | .long sys_io_setup |
| @@ -284,7 +284,7 @@ __syscall_start: | |||
| 284 | .long sys_fstatfs64 | 284 | .long sys_fstatfs64 |
| 285 | .long sys_tgkill | 285 | .long sys_tgkill |
| 286 | .long sys_utimes | 286 | .long sys_utimes |
| 287 | /* 270 */ .long sys_arm_fadvise64_64_wrapper | 287 | /* 270 */ .long sys_arm_fadvise64_64 |
| 288 | .long sys_pciconfig_iobase | 288 | .long sys_pciconfig_iobase |
| 289 | .long sys_pciconfig_read | 289 | .long sys_pciconfig_read |
| 290 | .long sys_pciconfig_write | 290 | .long sys_pciconfig_write |
| @@ -333,7 +333,7 @@ __syscall_start: | |||
| 333 | .long sys_inotify_init | 333 | .long sys_inotify_init |
| 334 | .long sys_inotify_add_watch | 334 | .long sys_inotify_add_watch |
| 335 | .long sys_inotify_rm_watch | 335 | .long sys_inotify_rm_watch |
| 336 | .long sys_mbind_wrapper | 336 | .long sys_mbind |
| 337 | /* 320 */ .long sys_get_mempolicy | 337 | /* 320 */ .long sys_get_mempolicy |
| 338 | .long sys_set_mempolicy | 338 | .long sys_set_mempolicy |
| 339 | __syscall_end: | 339 | __syscall_end: |
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index d9fb819bf7cc..2a8d27e18fa7 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
| @@ -614,6 +614,47 @@ __kuser_helper_start: | |||
| 614 | /* | 614 | /* |
| 615 | * Reference prototype: | 615 | * Reference prototype: |
| 616 | * | 616 | * |
| 617 | * void __kernel_memory_barrier(void) | ||
| 618 | * | ||
| 619 | * Input: | ||
| 620 | * | ||
| 621 | * lr = return address | ||
| 622 | * | ||
| 623 | * Output: | ||
| 624 | * | ||
| 625 | * none | ||
| 626 | * | ||
| 627 | * Clobbered: | ||
| 628 | * | ||
| 629 | * the Z flag might be lost | ||
| 630 | * | ||
| 631 | * Definition and user space usage example: | ||
| 632 | * | ||
| 633 | * typedef void (__kernel_dmb_t)(void); | ||
| 634 | * #define __kernel_dmb (*(__kernel_dmb_t *)0xffff0fa0) | ||
| 635 | * | ||
| 636 | * Apply any needed memory barrier to preserve consistency with data modified | ||
| 637 | * manually and __kuser_cmpxchg usage. | ||
| 638 | * | ||
| 639 | * This could be used as follows: | ||
| 640 | * | ||
| 641 | * #define __kernel_dmb() \ | ||
| 642 | * asm volatile ( "mov r0, #0xffff0fff; mov lr, pc; sub pc, r0, #95" \ | ||
| 643 | * : : : "lr","cc" ) | ||
| 644 | */ | ||
| 645 | |||
| 646 | __kuser_memory_barrier: @ 0xffff0fa0 | ||
| 647 | |||
| 648 | #if __LINUX_ARM_ARCH__ >= 6 && defined(CONFIG_SMP) | ||
| 649 | mcr p15, 0, r0, c7, c10, 5 @ dmb | ||
| 650 | #endif | ||
| 651 | mov pc, lr | ||
| 652 | |||
| 653 | .align 5 | ||
| 654 | |||
| 655 | /* | ||
| 656 | * Reference prototype: | ||
| 657 | * | ||
| 617 | * int __kernel_cmpxchg(int oldval, int newval, int *ptr) | 658 | * int __kernel_cmpxchg(int oldval, int newval, int *ptr) |
| 618 | * | 659 | * |
| 619 | * Input: | 660 | * Input: |
| @@ -642,6 +683,8 @@ __kuser_helper_start: | |||
| 642 | * The C flag is also set if *ptr was changed to allow for assembly | 683 | * The C flag is also set if *ptr was changed to allow for assembly |
| 643 | * optimization in the calling code. | 684 | * optimization in the calling code. |
| 644 | * | 685 | * |
| 686 | * Note: this routine already includes memory barriers as needed. | ||
| 687 | * | ||
| 645 | * For example, a user space atomic_add implementation could look like this: | 688 | * For example, a user space atomic_add implementation could look like this: |
| 646 | * | 689 | * |
| 647 | * #define atomic_add(ptr, val) \ | 690 | * #define atomic_add(ptr, val) \ |
| @@ -698,10 +741,16 @@ __kuser_cmpxchg: @ 0xffff0fc0 | |||
| 698 | 741 | ||
| 699 | #else | 742 | #else |
| 700 | 743 | ||
| 744 | #ifdef CONFIG_SMP | ||
| 745 | mcr p15, 0, r0, c7, c10, 5 @ dmb | ||
| 746 | #endif | ||
| 701 | ldrex r3, [r2] | 747 | ldrex r3, [r2] |
| 702 | subs r3, r3, r0 | 748 | subs r3, r3, r0 |
| 703 | strexeq r3, r1, [r2] | 749 | strexeq r3, r1, [r2] |
| 704 | rsbs r0, r3, #0 | 750 | rsbs r0, r3, #0 |
| 751 | #ifdef CONFIG_SMP | ||
| 752 | mcr p15, 0, r0, c7, c10, 5 @ dmb | ||
| 753 | #endif | ||
| 705 | mov pc, lr | 754 | mov pc, lr |
| 706 | 755 | ||
| 707 | #endif | 756 | #endif |
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index f7f183075237..e2b42997ad33 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S | |||
| @@ -145,7 +145,7 @@ ENTRY(vector_swi) | |||
| 145 | #endif | 145 | #endif |
| 146 | enable_irq | 146 | enable_irq |
| 147 | 147 | ||
| 148 | str r4, [sp, #-S_OFF]! @ push fifth arg | 148 | stmdb sp!, {r4, r5} @ push fifth and sixth args |
| 149 | 149 | ||
| 150 | get_thread_info tsk | 150 | get_thread_info tsk |
| 151 | ldr ip, [tsk, #TI_FLAGS] @ check for syscall tracing | 151 | ldr ip, [tsk, #TI_FLAGS] @ check for syscall tracing |
| @@ -204,7 +204,7 @@ ENTRY(sys_call_table) | |||
| 204 | * Special system call wrappers | 204 | * Special system call wrappers |
| 205 | */ | 205 | */ |
| 206 | @ r0 = syscall number | 206 | @ r0 = syscall number |
| 207 | @ r5 = syscall table | 207 | @ r8 = syscall table |
| 208 | .type sys_syscall, #function | 208 | .type sys_syscall, #function |
| 209 | sys_syscall: | 209 | sys_syscall: |
| 210 | eor scno, r0, #__NR_SYSCALL_BASE | 210 | eor scno, r0, #__NR_SYSCALL_BASE |
| @@ -255,22 +255,6 @@ sys_sigaltstack_wrapper: | |||
| 255 | ldr r2, [sp, #S_OFF + S_SP] | 255 | ldr r2, [sp, #S_OFF + S_SP] |
| 256 | b do_sigaltstack | 256 | b do_sigaltstack |
| 257 | 257 | ||
| 258 | sys_futex_wrapper: | ||
| 259 | str r5, [sp, #4] @ push sixth arg | ||
| 260 | b sys_futex | ||
| 261 | |||
| 262 | sys_arm_fadvise64_64_wrapper: | ||
| 263 | str r5, [sp, #4] @ push r5 to stack | ||
| 264 | b sys_arm_fadvise64_64 | ||
| 265 | |||
| 266 | sys_mbind_wrapper: | ||
| 267 | str r5, [sp, #4] | ||
| 268 | b sys_mbind | ||
| 269 | |||
| 270 | sys_ipc_wrapper: | ||
| 271 | str r5, [sp, #4] @ push sixth arg | ||
| 272 | b sys_ipc | ||
| 273 | |||
| 274 | /* | 258 | /* |
| 275 | * Note: off_4k (r5) is always units of 4K. If we can't do the requested | 259 | * Note: off_4k (r5) is always units of 4K. If we can't do the requested |
| 276 | * offset, we return EINVAL. | 260 | * offset, we return EINVAL. |
diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c index 6055e1427ba3..055bf5d28894 100644 --- a/arch/arm/kernel/module.c +++ b/arch/arm/kernel/module.c | |||
| @@ -101,6 +101,8 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex, | |||
| 101 | break; | 101 | break; |
| 102 | 102 | ||
| 103 | case R_ARM_PC24: | 103 | case R_ARM_PC24: |
| 104 | case R_ARM_CALL: | ||
| 105 | case R_ARM_JUMP24: | ||
| 104 | offset = (*(u32 *)loc & 0x00ffffff) << 2; | 106 | offset = (*(u32 *)loc & 0x00ffffff) << 2; |
| 105 | if (offset & 0x02000000) | 107 | if (offset & 0x02000000) |
| 106 | offset -= 0x04000000; | 108 | offset -= 0x04000000; |
diff --git a/arch/arm/mach-pxa/pm.c b/arch/arm/mach-pxa/pm.c index f74b9af112dc..852ea72d8c80 100644 --- a/arch/arm/mach-pxa/pm.c +++ b/arch/arm/mach-pxa/pm.c | |||
| @@ -155,19 +155,20 @@ int pxa_pm_enter(suspend_state_t state) | |||
| 155 | PSPR = 0; | 155 | PSPR = 0; |
| 156 | 156 | ||
| 157 | /* restore registers */ | 157 | /* restore registers */ |
| 158 | RESTORE_GPLEVEL(0); RESTORE_GPLEVEL(1); RESTORE_GPLEVEL(2); | ||
| 159 | RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2); | ||
| 158 | RESTORE(GAFR0_L); RESTORE(GAFR0_U); | 160 | RESTORE(GAFR0_L); RESTORE(GAFR0_U); |
| 159 | RESTORE(GAFR1_L); RESTORE(GAFR1_U); | 161 | RESTORE(GAFR1_L); RESTORE(GAFR1_U); |
| 160 | RESTORE(GAFR2_L); RESTORE(GAFR2_U); | 162 | RESTORE(GAFR2_L); RESTORE(GAFR2_U); |
| 161 | RESTORE_GPLEVEL(0); RESTORE_GPLEVEL(1); RESTORE_GPLEVEL(2); | ||
| 162 | RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2); | ||
| 163 | RESTORE(GRER0); RESTORE(GRER1); RESTORE(GRER2); | 163 | RESTORE(GRER0); RESTORE(GRER1); RESTORE(GRER2); |
| 164 | RESTORE(GFER0); RESTORE(GFER1); RESTORE(GFER2); | 164 | RESTORE(GFER0); RESTORE(GFER1); RESTORE(GFER2); |
| 165 | RESTORE(PGSR0); RESTORE(PGSR1); RESTORE(PGSR2); | 165 | RESTORE(PGSR0); RESTORE(PGSR1); RESTORE(PGSR2); |
| 166 | 166 | ||
| 167 | #ifdef CONFIG_PXA27x | 167 | #ifdef CONFIG_PXA27x |
| 168 | RESTORE(MDREFR); | 168 | RESTORE(MDREFR); |
| 169 | RESTORE(GAFR3_L); RESTORE(GAFR3_U); RESTORE_GPLEVEL(3); | 169 | RESTORE_GPLEVEL(3); RESTORE(GPDR3); |
| 170 | RESTORE(GPDR3); RESTORE(GRER3); RESTORE(GFER3); RESTORE(PGSR3); | 170 | RESTORE(GAFR3_L); RESTORE(GAFR3_U); |
| 171 | RESTORE(GRER3); RESTORE(GFER3); RESTORE(PGSR3); | ||
| 171 | RESTORE(PWER); RESTORE(PCFR); RESTORE(PRER); | 172 | RESTORE(PWER); RESTORE(PCFR); RESTORE(PRER); |
| 172 | RESTORE(PFER); RESTORE(PKWR); | 173 | RESTORE(PFER); RESTORE(PKWR); |
| 173 | #endif | 174 | #endif |
diff --git a/arch/i386/mm/ioremap.c b/arch/i386/mm/ioremap.c index 8498b5ac3955..247fde76aaed 100644 --- a/arch/i386/mm/ioremap.c +++ b/arch/i386/mm/ioremap.c | |||
| @@ -245,7 +245,7 @@ void iounmap(volatile void __iomem *addr) | |||
| 245 | addr < phys_to_virt(ISA_END_ADDRESS)) | 245 | addr < phys_to_virt(ISA_END_ADDRESS)) |
| 246 | return; | 246 | return; |
| 247 | 247 | ||
| 248 | addr = (volatile void *)(PAGE_MASK & (unsigned long __force)addr); | 248 | addr = (volatile void __iomem *)(PAGE_MASK & (unsigned long __force)addr); |
| 249 | 249 | ||
| 250 | /* Use the vm area unlocked, assuming the caller | 250 | /* Use the vm area unlocked, assuming the caller |
| 251 | ensures there isn't another iounmap for the same address | 251 | ensures there isn't another iounmap for the same address |
diff --git a/arch/i386/pci/Makefile b/arch/i386/pci/Makefile index ead6122dd06d..5461d4d5ea1e 100644 --- a/arch/i386/pci/Makefile +++ b/arch/i386/pci/Makefile | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | obj-y := i386.o | 1 | obj-y := i386.o |
| 2 | 2 | ||
| 3 | obj-$(CONFIG_PCI_BIOS) += pcbios.o | 3 | obj-$(CONFIG_PCI_BIOS) += pcbios.o |
| 4 | obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o | 4 | obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o direct.o |
| 5 | obj-$(CONFIG_PCI_DIRECT) += direct.o | 5 | obj-$(CONFIG_PCI_DIRECT) += direct.o |
| 6 | 6 | ||
| 7 | pci-y := fixup.o | 7 | pci-y := fixup.o |
diff --git a/arch/i386/pci/mmconfig.c b/arch/i386/pci/mmconfig.c index 08a084901212..4bb4d4b0f73a 100644 --- a/arch/i386/pci/mmconfig.c +++ b/arch/i386/pci/mmconfig.c | |||
| @@ -155,7 +155,7 @@ static __init void unreachable_devices(void) | |||
| 155 | addr = get_base_addr(0, 0, PCI_DEVFN(i, 0)); | 155 | addr = get_base_addr(0, 0, PCI_DEVFN(i, 0)); |
| 156 | if (addr != 0) | 156 | if (addr != 0) |
| 157 | pci_exp_set_dev_base(addr, 0, PCI_DEVFN(i, 0)); | 157 | pci_exp_set_dev_base(addr, 0, PCI_DEVFN(i, 0)); |
| 158 | if (addr == 0 || readl((u32 *)addr) != val1) | 158 | if (addr == 0 || readl((u32 __iomem *)mmcfg_virt_addr) != val1) |
| 159 | set_bit(i, fallback_slots); | 159 | set_bit(i, fallback_slots); |
| 160 | spin_unlock_irqrestore(&pci_config_lock, flags); | 160 | spin_unlock_irqrestore(&pci_config_lock, flags); |
| 161 | } | 161 | } |
diff --git a/arch/ia64/configs/sn2_defconfig b/arch/ia64/configs/sn2_defconfig index e1924cc9687b..ff8bb3770c9d 100644 --- a/arch/ia64/configs/sn2_defconfig +++ b/arch/ia64/configs/sn2_defconfig | |||
| @@ -113,7 +113,7 @@ CONFIG_IOSAPIC=y | |||
| 113 | CONFIG_IA64_SGI_SN_XP=m | 113 | CONFIG_IA64_SGI_SN_XP=m |
| 114 | CONFIG_FORCE_MAX_ZONEORDER=17 | 114 | CONFIG_FORCE_MAX_ZONEORDER=17 |
| 115 | CONFIG_SMP=y | 115 | CONFIG_SMP=y |
| 116 | CONFIG_NR_CPUS=512 | 116 | CONFIG_NR_CPUS=1024 |
| 117 | # CONFIG_HOTPLUG_CPU is not set | 117 | # CONFIG_HOTPLUG_CPU is not set |
| 118 | CONFIG_SCHED_SMT=y | 118 | CONFIG_SCHED_SMT=y |
| 119 | CONFIG_PREEMPT=y | 119 | CONFIG_PREEMPT=y |
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c index a4da715a360c..e9904c74d2ba 100644 --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c | |||
| @@ -721,11 +721,13 @@ flush_thread (void) | |||
| 721 | /* drop floating-point and debug-register state if it exists: */ | 721 | /* drop floating-point and debug-register state if it exists: */ |
| 722 | current->thread.flags &= ~(IA64_THREAD_FPH_VALID | IA64_THREAD_DBG_VALID); | 722 | current->thread.flags &= ~(IA64_THREAD_FPH_VALID | IA64_THREAD_DBG_VALID); |
| 723 | ia64_drop_fpu(current); | 723 | ia64_drop_fpu(current); |
| 724 | #ifdef CONFIG_IA32_SUPPORT | ||
| 724 | if (IS_IA32_PROCESS(ia64_task_regs(current))) { | 725 | if (IS_IA32_PROCESS(ia64_task_regs(current))) { |
| 725 | ia32_drop_partial_page_list(current); | 726 | ia32_drop_partial_page_list(current); |
| 726 | current->thread.task_size = IA32_PAGE_OFFSET; | 727 | current->thread.task_size = IA32_PAGE_OFFSET; |
| 727 | set_fs(USER_DS); | 728 | set_fs(USER_DS); |
| 728 | } | 729 | } |
| 730 | #endif | ||
| 729 | } | 731 | } |
| 730 | 732 | ||
| 731 | /* | 733 | /* |
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c index 5b7e736f3b49..028a2b95936c 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c | |||
| @@ -249,3 +249,32 @@ time_init (void) | |||
| 249 | */ | 249 | */ |
| 250 | set_normalized_timespec(&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec); | 250 | set_normalized_timespec(&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec); |
| 251 | } | 251 | } |
| 252 | |||
| 253 | #define SMALLUSECS 100 | ||
| 254 | |||
| 255 | void | ||
| 256 | udelay (unsigned long usecs) | ||
| 257 | { | ||
| 258 | unsigned long start; | ||
| 259 | unsigned long cycles; | ||
| 260 | unsigned long smallusecs; | ||
| 261 | |||
| 262 | /* | ||
| 263 | * Execute the non-preemptible delay loop (because the ITC might | ||
| 264 | * not be synchronized between CPUS) in relatively short time | ||
| 265 | * chunks, allowing preemption between the chunks. | ||
| 266 | */ | ||
| 267 | while (usecs > 0) { | ||
| 268 | smallusecs = (usecs > SMALLUSECS) ? SMALLUSECS : usecs; | ||
| 269 | preempt_disable(); | ||
| 270 | cycles = smallusecs*local_cpu_data->cyc_per_usec; | ||
| 271 | start = ia64_get_itc(); | ||
| 272 | |||
| 273 | while (ia64_get_itc() - start < cycles) | ||
| 274 | cpu_relax(); | ||
| 275 | |||
| 276 | preempt_enable(); | ||
| 277 | usecs -= smallusecs; | ||
| 278 | } | ||
| 279 | } | ||
| 280 | EXPORT_SYMBOL(udelay); | ||
diff --git a/arch/ia64/kernel/uncached.c b/arch/ia64/kernel/uncached.c index c6d40446c2c4..b631cf86ed44 100644 --- a/arch/ia64/kernel/uncached.c +++ b/arch/ia64/kernel/uncached.c | |||
| @@ -53,7 +53,7 @@ static void uncached_ipi_visibility(void *data) | |||
| 53 | if ((status != PAL_VISIBILITY_OK) && | 53 | if ((status != PAL_VISIBILITY_OK) && |
| 54 | (status != PAL_VISIBILITY_OK_REMOTE_NEEDED)) | 54 | (status != PAL_VISIBILITY_OK_REMOTE_NEEDED)) |
| 55 | printk(KERN_DEBUG "pal_prefetch_visibility() returns %i on " | 55 | printk(KERN_DEBUG "pal_prefetch_visibility() returns %i on " |
| 56 | "CPU %i\n", status, get_cpu()); | 56 | "CPU %i\n", status, raw_smp_processor_id()); |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | 59 | ||
| @@ -63,7 +63,7 @@ static void uncached_ipi_mc_drain(void *data) | |||
| 63 | status = ia64_pal_mc_drain(); | 63 | status = ia64_pal_mc_drain(); |
| 64 | if (status) | 64 | if (status) |
| 65 | printk(KERN_WARNING "ia64_pal_mc_drain() failed with %i on " | 65 | printk(KERN_WARNING "ia64_pal_mc_drain() failed with %i on " |
| 66 | "CPU %i\n", status, get_cpu()); | 66 | "CPU %i\n", status, raw_smp_processor_id()); |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | 69 | ||
| @@ -105,7 +105,7 @@ uncached_get_new_chunk(struct gen_pool *poolp) | |||
| 105 | status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL); | 105 | status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL); |
| 106 | 106 | ||
| 107 | dprintk(KERN_INFO "pal_prefetch_visibility() returns %i on cpu %i\n", | 107 | dprintk(KERN_INFO "pal_prefetch_visibility() returns %i on cpu %i\n", |
| 108 | status, get_cpu()); | 108 | status, raw_smp_processor_id()); |
| 109 | 109 | ||
| 110 | if (!status) { | 110 | if (!status) { |
| 111 | status = smp_call_function(uncached_ipi_visibility, NULL, 0, 1); | 111 | status = smp_call_function(uncached_ipi_visibility, NULL, 0, 1); |
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S index 30d8564e9603..73af6267d2ef 100644 --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S | |||
| @@ -177,6 +177,9 @@ SECTIONS | |||
| 177 | } | 177 | } |
| 178 | . = ALIGN(PAGE_SIZE); /* make sure the gate page doesn't expose kernel data */ | 178 | . = ALIGN(PAGE_SIZE); /* make sure the gate page doesn't expose kernel data */ |
| 179 | 179 | ||
| 180 | .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) | ||
| 181 | { *(.data.read_mostly) } | ||
| 182 | |||
| 180 | .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) | 183 | .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) |
| 181 | { *(.data.cacheline_aligned) } | 184 | { *(.data.cacheline_aligned) } |
| 182 | 185 | ||
diff --git a/arch/ia64/sn/kernel/sn2/sn2_smp.c b/arch/ia64/sn/kernel/sn2/sn2_smp.c index 5d54f5f4e926..471bbaa65d1b 100644 --- a/arch/ia64/sn/kernel/sn2/sn2_smp.c +++ b/arch/ia64/sn/kernel/sn2/sn2_smp.c | |||
| @@ -202,7 +202,7 @@ sn2_global_tlb_purge(struct mm_struct *mm, unsigned long start, | |||
| 202 | unsigned long end, unsigned long nbits) | 202 | unsigned long end, unsigned long nbits) |
| 203 | { | 203 | { |
| 204 | int i, opt, shub1, cnode, mynasid, cpu, lcpu = 0, nasid, flushed = 0; | 204 | int i, opt, shub1, cnode, mynasid, cpu, lcpu = 0, nasid, flushed = 0; |
| 205 | int mymm = (mm == current->active_mm); | 205 | int mymm = (mm == current->active_mm && current->mm); |
| 206 | volatile unsigned long *ptc0, *ptc1; | 206 | volatile unsigned long *ptc0, *ptc1; |
| 207 | unsigned long itc, itc2, flags, data0 = 0, data1 = 0, rr_value; | 207 | unsigned long itc, itc2, flags, data0 = 0, data1 = 0, rr_value; |
| 208 | short nasids[MAX_NUMNODES], nix; | 208 | short nasids[MAX_NUMNODES], nix; |
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_reg.c b/arch/ia64/sn/pci/pcibr/pcibr_reg.c index 5d534091262c..79fdb91d7259 100644 --- a/arch/ia64/sn/pci/pcibr/pcibr_reg.c +++ b/arch/ia64/sn/pci/pcibr/pcibr_reg.c | |||
| @@ -25,7 +25,7 @@ union br_ptr { | |||
| 25 | */ | 25 | */ |
| 26 | void pcireg_control_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits) | 26 | void pcireg_control_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits) |
| 27 | { | 27 | { |
| 28 | union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base; | 28 | union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base; |
| 29 | 29 | ||
| 30 | if (pcibus_info) { | 30 | if (pcibus_info) { |
| 31 | switch (pcibus_info->pbi_bridge_type) { | 31 | switch (pcibus_info->pbi_bridge_type) { |
| @@ -38,14 +38,14 @@ void pcireg_control_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits) | |||
| 38 | default: | 38 | default: |
| 39 | panic | 39 | panic |
| 40 | ("pcireg_control_bit_clr: unknown bridgetype bridge 0x%p", | 40 | ("pcireg_control_bit_clr: unknown bridgetype bridge 0x%p", |
| 41 | (void *)ptr); | 41 | ptr); |
| 42 | } | 42 | } |
| 43 | } | 43 | } |
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | void pcireg_control_bit_set(struct pcibus_info *pcibus_info, uint64_t bits) | 46 | void pcireg_control_bit_set(struct pcibus_info *pcibus_info, uint64_t bits) |
| 47 | { | 47 | { |
| 48 | union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base; | 48 | union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base; |
| 49 | 49 | ||
| 50 | if (pcibus_info) { | 50 | if (pcibus_info) { |
| 51 | switch (pcibus_info->pbi_bridge_type) { | 51 | switch (pcibus_info->pbi_bridge_type) { |
| @@ -58,7 +58,7 @@ void pcireg_control_bit_set(struct pcibus_info *pcibus_info, uint64_t bits) | |||
| 58 | default: | 58 | default: |
| 59 | panic | 59 | panic |
| 60 | ("pcireg_control_bit_set: unknown bridgetype bridge 0x%p", | 60 | ("pcireg_control_bit_set: unknown bridgetype bridge 0x%p", |
| 61 | (void *)ptr); | 61 | ptr); |
| 62 | } | 62 | } |
| 63 | } | 63 | } |
| 64 | } | 64 | } |
| @@ -68,7 +68,7 @@ void pcireg_control_bit_set(struct pcibus_info *pcibus_info, uint64_t bits) | |||
| 68 | */ | 68 | */ |
| 69 | uint64_t pcireg_tflush_get(struct pcibus_info *pcibus_info) | 69 | uint64_t pcireg_tflush_get(struct pcibus_info *pcibus_info) |
| 70 | { | 70 | { |
| 71 | union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base; | 71 | union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base; |
| 72 | uint64_t ret = 0; | 72 | uint64_t ret = 0; |
| 73 | 73 | ||
| 74 | if (pcibus_info) { | 74 | if (pcibus_info) { |
| @@ -82,7 +82,7 @@ uint64_t pcireg_tflush_get(struct pcibus_info *pcibus_info) | |||
| 82 | default: | 82 | default: |
| 83 | panic | 83 | panic |
| 84 | ("pcireg_tflush_get: unknown bridgetype bridge 0x%p", | 84 | ("pcireg_tflush_get: unknown bridgetype bridge 0x%p", |
| 85 | (void *)ptr); | 85 | ptr); |
| 86 | } | 86 | } |
| 87 | } | 87 | } |
| 88 | 88 | ||
| @@ -98,7 +98,7 @@ uint64_t pcireg_tflush_get(struct pcibus_info *pcibus_info) | |||
| 98 | */ | 98 | */ |
| 99 | uint64_t pcireg_intr_status_get(struct pcibus_info * pcibus_info) | 99 | uint64_t pcireg_intr_status_get(struct pcibus_info * pcibus_info) |
| 100 | { | 100 | { |
| 101 | union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base; | 101 | union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base; |
| 102 | uint64_t ret = 0; | 102 | uint64_t ret = 0; |
| 103 | 103 | ||
| 104 | if (pcibus_info) { | 104 | if (pcibus_info) { |
| @@ -112,7 +112,7 @@ uint64_t pcireg_intr_status_get(struct pcibus_info * pcibus_info) | |||
| 112 | default: | 112 | default: |
| 113 | panic | 113 | panic |
| 114 | ("pcireg_intr_status_get: unknown bridgetype bridge 0x%p", | 114 | ("pcireg_intr_status_get: unknown bridgetype bridge 0x%p", |
| 115 | (void *)ptr); | 115 | ptr); |
| 116 | } | 116 | } |
| 117 | } | 117 | } |
| 118 | return ret; | 118 | return ret; |
| @@ -123,7 +123,7 @@ uint64_t pcireg_intr_status_get(struct pcibus_info * pcibus_info) | |||
| 123 | */ | 123 | */ |
| 124 | void pcireg_intr_enable_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits) | 124 | void pcireg_intr_enable_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits) |
| 125 | { | 125 | { |
| 126 | union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base; | 126 | union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base; |
| 127 | 127 | ||
| 128 | if (pcibus_info) { | 128 | if (pcibus_info) { |
| 129 | switch (pcibus_info->pbi_bridge_type) { | 129 | switch (pcibus_info->pbi_bridge_type) { |
| @@ -136,14 +136,14 @@ void pcireg_intr_enable_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits) | |||
| 136 | default: | 136 | default: |
| 137 | panic | 137 | panic |
| 138 | ("pcireg_intr_enable_bit_clr: unknown bridgetype bridge 0x%p", | 138 | ("pcireg_intr_enable_bit_clr: unknown bridgetype bridge 0x%p", |
| 139 | (void *)ptr); | 139 | ptr); |
| 140 | } | 140 | } |
| 141 | } | 141 | } |
| 142 | } | 142 | } |
| 143 | 143 | ||
| 144 | void pcireg_intr_enable_bit_set(struct pcibus_info *pcibus_info, uint64_t bits) | 144 | void pcireg_intr_enable_bit_set(struct pcibus_info *pcibus_info, uint64_t bits) |
| 145 | { | 145 | { |
| 146 | union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base; | 146 | union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base; |
| 147 | 147 | ||
| 148 | if (pcibus_info) { | 148 | if (pcibus_info) { |
| 149 | switch (pcibus_info->pbi_bridge_type) { | 149 | switch (pcibus_info->pbi_bridge_type) { |
| @@ -156,7 +156,7 @@ void pcireg_intr_enable_bit_set(struct pcibus_info *pcibus_info, uint64_t bits) | |||
| 156 | default: | 156 | default: |
| 157 | panic | 157 | panic |
| 158 | ("pcireg_intr_enable_bit_set: unknown bridgetype bridge 0x%p", | 158 | ("pcireg_intr_enable_bit_set: unknown bridgetype bridge 0x%p", |
| 159 | (void *)ptr); | 159 | ptr); |
| 160 | } | 160 | } |
| 161 | } | 161 | } |
| 162 | } | 162 | } |
| @@ -167,7 +167,7 @@ void pcireg_intr_enable_bit_set(struct pcibus_info *pcibus_info, uint64_t bits) | |||
| 167 | void pcireg_intr_addr_addr_set(struct pcibus_info *pcibus_info, int int_n, | 167 | void pcireg_intr_addr_addr_set(struct pcibus_info *pcibus_info, int int_n, |
| 168 | uint64_t addr) | 168 | uint64_t addr) |
| 169 | { | 169 | { |
| 170 | union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base; | 170 | union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base; |
| 171 | 171 | ||
| 172 | if (pcibus_info) { | 172 | if (pcibus_info) { |
| 173 | switch (pcibus_info->pbi_bridge_type) { | 173 | switch (pcibus_info->pbi_bridge_type) { |
| @@ -186,7 +186,7 @@ void pcireg_intr_addr_addr_set(struct pcibus_info *pcibus_info, int int_n, | |||
| 186 | default: | 186 | default: |
| 187 | panic | 187 | panic |
| 188 | ("pcireg_intr_addr_addr_get: unknown bridgetype bridge 0x%p", | 188 | ("pcireg_intr_addr_addr_get: unknown bridgetype bridge 0x%p", |
| 189 | (void *)ptr); | 189 | ptr); |
| 190 | } | 190 | } |
| 191 | } | 191 | } |
| 192 | } | 192 | } |
| @@ -196,7 +196,7 @@ void pcireg_intr_addr_addr_set(struct pcibus_info *pcibus_info, int int_n, | |||
| 196 | */ | 196 | */ |
| 197 | void pcireg_force_intr_set(struct pcibus_info *pcibus_info, int int_n) | 197 | void pcireg_force_intr_set(struct pcibus_info *pcibus_info, int int_n) |
| 198 | { | 198 | { |
| 199 | union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base; | 199 | union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base; |
| 200 | 200 | ||
| 201 | if (pcibus_info) { | 201 | if (pcibus_info) { |
| 202 | switch (pcibus_info->pbi_bridge_type) { | 202 | switch (pcibus_info->pbi_bridge_type) { |
| @@ -209,7 +209,7 @@ void pcireg_force_intr_set(struct pcibus_info *pcibus_info, int int_n) | |||
| 209 | default: | 209 | default: |
| 210 | panic | 210 | panic |
| 211 | ("pcireg_force_intr_set: unknown bridgetype bridge 0x%p", | 211 | ("pcireg_force_intr_set: unknown bridgetype bridge 0x%p", |
| 212 | (void *)ptr); | 212 | ptr); |
| 213 | } | 213 | } |
| 214 | } | 214 | } |
| 215 | } | 215 | } |
| @@ -219,7 +219,7 @@ void pcireg_force_intr_set(struct pcibus_info *pcibus_info, int int_n) | |||
| 219 | */ | 219 | */ |
| 220 | uint64_t pcireg_wrb_flush_get(struct pcibus_info *pcibus_info, int device) | 220 | uint64_t pcireg_wrb_flush_get(struct pcibus_info *pcibus_info, int device) |
| 221 | { | 221 | { |
| 222 | union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base; | 222 | union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base; |
| 223 | uint64_t ret = 0; | 223 | uint64_t ret = 0; |
| 224 | 224 | ||
| 225 | if (pcibus_info) { | 225 | if (pcibus_info) { |
| @@ -233,7 +233,7 @@ uint64_t pcireg_wrb_flush_get(struct pcibus_info *pcibus_info, int device) | |||
| 233 | __sn_readq_relaxed(&ptr->pic.p_wr_req_buf[device]); | 233 | __sn_readq_relaxed(&ptr->pic.p_wr_req_buf[device]); |
| 234 | break; | 234 | break; |
| 235 | default: | 235 | default: |
| 236 | panic("pcireg_wrb_flush_get: unknown bridgetype bridge 0x%p", (void *)ptr); | 236 | panic("pcireg_wrb_flush_get: unknown bridgetype bridge 0x%p", ptr); |
| 237 | } | 237 | } |
| 238 | 238 | ||
| 239 | } | 239 | } |
| @@ -244,7 +244,7 @@ uint64_t pcireg_wrb_flush_get(struct pcibus_info *pcibus_info, int device) | |||
| 244 | void pcireg_int_ate_set(struct pcibus_info *pcibus_info, int ate_index, | 244 | void pcireg_int_ate_set(struct pcibus_info *pcibus_info, int ate_index, |
| 245 | uint64_t val) | 245 | uint64_t val) |
| 246 | { | 246 | { |
| 247 | union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base; | 247 | union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base; |
| 248 | 248 | ||
| 249 | if (pcibus_info) { | 249 | if (pcibus_info) { |
| 250 | switch (pcibus_info->pbi_bridge_type) { | 250 | switch (pcibus_info->pbi_bridge_type) { |
| @@ -257,15 +257,15 @@ void pcireg_int_ate_set(struct pcibus_info *pcibus_info, int ate_index, | |||
| 257 | default: | 257 | default: |
| 258 | panic | 258 | panic |
| 259 | ("pcireg_int_ate_set: unknown bridgetype bridge 0x%p", | 259 | ("pcireg_int_ate_set: unknown bridgetype bridge 0x%p", |
| 260 | (void *)ptr); | 260 | ptr); |
| 261 | } | 261 | } |
| 262 | } | 262 | } |
| 263 | } | 263 | } |
| 264 | 264 | ||
| 265 | uint64_t *pcireg_int_ate_addr(struct pcibus_info *pcibus_info, int ate_index) | 265 | uint64_t __iomem *pcireg_int_ate_addr(struct pcibus_info *pcibus_info, int ate_index) |
| 266 | { | 266 | { |
| 267 | union br_ptr *ptr = (union br_ptr *)pcibus_info->pbi_buscommon.bs_base; | 267 | union br_ptr __iomem *ptr = (union br_ptr __iomem *)pcibus_info->pbi_buscommon.bs_base; |
| 268 | uint64_t *ret = (uint64_t *) 0; | 268 | uint64_t __iomem *ret = NULL; |
| 269 | 269 | ||
| 270 | if (pcibus_info) { | 270 | if (pcibus_info) { |
| 271 | switch (pcibus_info->pbi_bridge_type) { | 271 | switch (pcibus_info->pbi_bridge_type) { |
| @@ -278,7 +278,7 @@ uint64_t *pcireg_int_ate_addr(struct pcibus_info *pcibus_info, int ate_index) | |||
| 278 | default: | 278 | default: |
| 279 | panic | 279 | panic |
| 280 | ("pcireg_int_ate_addr: unknown bridgetype bridge 0x%p", | 280 | ("pcireg_int_ate_addr: unknown bridgetype bridge 0x%p", |
| 281 | (void *)ptr); | 281 | ptr); |
| 282 | } | 282 | } |
| 283 | } | 283 | } |
| 284 | return ret; | 284 | return ret; |
diff --git a/arch/ia64/sn/pci/tioca_provider.c b/arch/ia64/sn/pci/tioca_provider.c index 46b646a6d345..27aa1842dacc 100644 --- a/arch/ia64/sn/pci/tioca_provider.c +++ b/arch/ia64/sn/pci/tioca_provider.c | |||
| @@ -38,10 +38,10 @@ tioca_gart_init(struct tioca_kernel *tioca_kern) | |||
| 38 | uint64_t offset; | 38 | uint64_t offset; |
| 39 | struct page *tmp; | 39 | struct page *tmp; |
| 40 | struct tioca_common *tioca_common; | 40 | struct tioca_common *tioca_common; |
| 41 | struct tioca *ca_base; | 41 | struct tioca __iomem *ca_base; |
| 42 | 42 | ||
| 43 | tioca_common = tioca_kern->ca_common; | 43 | tioca_common = tioca_kern->ca_common; |
| 44 | ca_base = (struct tioca *)tioca_common->ca_common.bs_base; | 44 | ca_base = (struct tioca __iomem *)tioca_common->ca_common.bs_base; |
| 45 | 45 | ||
| 46 | if (list_empty(tioca_kern->ca_devices)) | 46 | if (list_empty(tioca_kern->ca_devices)) |
| 47 | return 0; | 47 | return 0; |
| @@ -215,7 +215,7 @@ tioca_fastwrite_enable(struct tioca_kernel *tioca_kern) | |||
| 215 | { | 215 | { |
| 216 | int cap_ptr; | 216 | int cap_ptr; |
| 217 | uint32_t reg; | 217 | uint32_t reg; |
| 218 | struct tioca *tioca_base; | 218 | struct tioca __iomem *tioca_base; |
| 219 | struct pci_dev *pdev; | 219 | struct pci_dev *pdev; |
| 220 | struct tioca_common *common; | 220 | struct tioca_common *common; |
| 221 | 221 | ||
| @@ -257,7 +257,7 @@ tioca_fastwrite_enable(struct tioca_kernel *tioca_kern) | |||
| 257 | * Set ca's fw to match | 257 | * Set ca's fw to match |
| 258 | */ | 258 | */ |
| 259 | 259 | ||
| 260 | tioca_base = (struct tioca *)common->ca_common.bs_base; | 260 | tioca_base = (struct tioca __iomem*)common->ca_common.bs_base; |
| 261 | __sn_setq_relaxed(&tioca_base->ca_control1, CA_AGP_FW_ENABLE); | 261 | __sn_setq_relaxed(&tioca_base->ca_control1, CA_AGP_FW_ENABLE); |
| 262 | } | 262 | } |
| 263 | 263 | ||
| @@ -322,7 +322,7 @@ static uint64_t | |||
| 322 | tioca_dma_d48(struct pci_dev *pdev, uint64_t paddr) | 322 | tioca_dma_d48(struct pci_dev *pdev, uint64_t paddr) |
| 323 | { | 323 | { |
| 324 | struct tioca_common *tioca_common; | 324 | struct tioca_common *tioca_common; |
| 325 | struct tioca *ca_base; | 325 | struct tioca __iomem *ca_base; |
| 326 | uint64_t ct_addr; | 326 | uint64_t ct_addr; |
| 327 | dma_addr_t bus_addr; | 327 | dma_addr_t bus_addr; |
| 328 | uint32_t node_upper; | 328 | uint32_t node_upper; |
| @@ -330,7 +330,7 @@ tioca_dma_d48(struct pci_dev *pdev, uint64_t paddr) | |||
| 330 | struct pcidev_info *pcidev_info = SN_PCIDEV_INFO(pdev); | 330 | struct pcidev_info *pcidev_info = SN_PCIDEV_INFO(pdev); |
| 331 | 331 | ||
| 332 | tioca_common = (struct tioca_common *)pcidev_info->pdi_pcibus_info; | 332 | tioca_common = (struct tioca_common *)pcidev_info->pdi_pcibus_info; |
| 333 | ca_base = (struct tioca *)tioca_common->ca_common.bs_base; | 333 | ca_base = (struct tioca __iomem *)tioca_common->ca_common.bs_base; |
| 334 | 334 | ||
| 335 | ct_addr = PHYS_TO_TIODMA(paddr); | 335 | ct_addr = PHYS_TO_TIODMA(paddr); |
| 336 | if (!ct_addr) | 336 | if (!ct_addr) |
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig index 4b433411b9e3..b657f7e44762 100644 --- a/arch/powerpc/configs/cell_defconfig +++ b/arch/powerpc/configs/cell_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.15-rc1 | 3 | # Linux kernel version: 2.6.15-rc5 |
| 4 | # Tue Nov 15 14:36:20 2005 | 4 | # Tue Dec 20 15:59:26 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
| 7 | CONFIG_64BIT=y | 7 | CONFIG_64BIT=y |
| @@ -53,6 +53,7 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 53 | # CONFIG_IKCONFIG is not set | 53 | # CONFIG_IKCONFIG is not set |
| 54 | # CONFIG_CPUSETS is not set | 54 | # CONFIG_CPUSETS is not set |
| 55 | CONFIG_INITRAMFS_SOURCE="" | 55 | CONFIG_INITRAMFS_SOURCE="" |
| 56 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
| 56 | # CONFIG_EMBEDDED is not set | 57 | # CONFIG_EMBEDDED is not set |
| 57 | CONFIG_KALLSYMS=y | 58 | CONFIG_KALLSYMS=y |
| 58 | # CONFIG_KALLSYMS_ALL is not set | 59 | # CONFIG_KALLSYMS_ALL is not set |
| @@ -151,7 +152,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
| 151 | CONFIG_FLATMEM=y | 152 | CONFIG_FLATMEM=y |
| 152 | CONFIG_FLAT_NODE_MEM_MAP=y | 153 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 153 | # CONFIG_SPARSEMEM_STATIC is not set | 154 | # CONFIG_SPARSEMEM_STATIC is not set |
| 154 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | 155 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
| 155 | # CONFIG_PPC_64K_PAGES is not set | 156 | # CONFIG_PPC_64K_PAGES is not set |
| 156 | CONFIG_SCHED_SMT=y | 157 | CONFIG_SCHED_SMT=y |
| 157 | CONFIG_PROC_DEVICETREE=y | 158 | CONFIG_PROC_DEVICETREE=y |
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig index e7c23e3902b8..3c22ccb18519 100644 --- a/arch/powerpc/configs/g5_defconfig +++ b/arch/powerpc/configs/g5_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.15-rc1 | 3 | # Linux kernel version: 2.6.15-rc5 |
| 4 | # Tue Nov 15 14:39:20 2005 | 4 | # Tue Dec 20 15:59:30 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
| 7 | CONFIG_64BIT=y | 7 | CONFIG_64BIT=y |
| @@ -53,6 +53,7 @@ CONFIG_IKCONFIG=y | |||
| 53 | CONFIG_IKCONFIG_PROC=y | 53 | CONFIG_IKCONFIG_PROC=y |
| 54 | # CONFIG_CPUSETS is not set | 54 | # CONFIG_CPUSETS is not set |
| 55 | CONFIG_INITRAMFS_SOURCE="" | 55 | CONFIG_INITRAMFS_SOURCE="" |
| 56 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
| 56 | # CONFIG_EMBEDDED is not set | 57 | # CONFIG_EMBEDDED is not set |
| 57 | CONFIG_KALLSYMS=y | 58 | CONFIG_KALLSYMS=y |
| 58 | # CONFIG_KALLSYMS_ALL is not set | 59 | # CONFIG_KALLSYMS_ALL is not set |
| @@ -162,7 +163,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
| 162 | CONFIG_FLATMEM=y | 163 | CONFIG_FLATMEM=y |
| 163 | CONFIG_FLAT_NODE_MEM_MAP=y | 164 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 164 | # CONFIG_SPARSEMEM_STATIC is not set | 165 | # CONFIG_SPARSEMEM_STATIC is not set |
| 165 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | 166 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
| 166 | # CONFIG_PPC_64K_PAGES is not set | 167 | # CONFIG_PPC_64K_PAGES is not set |
| 167 | # CONFIG_SCHED_SMT is not set | 168 | # CONFIG_SCHED_SMT is not set |
| 168 | CONFIG_PROC_DEVICETREE=y | 169 | CONFIG_PROC_DEVICETREE=y |
| @@ -1203,6 +1204,7 @@ CONFIG_USB_MON=y | |||
| 1203 | CONFIG_USB_SERIAL=m | 1204 | CONFIG_USB_SERIAL=m |
| 1204 | CONFIG_USB_SERIAL_GENERIC=y | 1205 | CONFIG_USB_SERIAL_GENERIC=y |
| 1205 | # CONFIG_USB_SERIAL_AIRPRIME is not set | 1206 | # CONFIG_USB_SERIAL_AIRPRIME is not set |
| 1207 | # CONFIG_USB_SERIAL_ANYDATA is not set | ||
| 1206 | CONFIG_USB_SERIAL_BELKIN=m | 1208 | CONFIG_USB_SERIAL_BELKIN=m |
| 1207 | CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m | 1209 | CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m |
| 1208 | # CONFIG_USB_SERIAL_CP2101 is not set | 1210 | # CONFIG_USB_SERIAL_CP2101 is not set |
| @@ -1233,7 +1235,6 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y | |||
| 1233 | CONFIG_USB_SERIAL_KLSI=m | 1235 | CONFIG_USB_SERIAL_KLSI=m |
| 1234 | CONFIG_USB_SERIAL_KOBIL_SCT=m | 1236 | CONFIG_USB_SERIAL_KOBIL_SCT=m |
| 1235 | CONFIG_USB_SERIAL_MCT_U232=m | 1237 | CONFIG_USB_SERIAL_MCT_U232=m |
| 1236 | # CONFIG_USB_SERIAL_NOKIA_DKU2 is not set | ||
| 1237 | CONFIG_USB_SERIAL_PL2303=m | 1238 | CONFIG_USB_SERIAL_PL2303=m |
| 1238 | # CONFIG_USB_SERIAL_HP4X is not set | 1239 | # CONFIG_USB_SERIAL_HP4X is not set |
| 1239 | CONFIG_USB_SERIAL_SAFE=m | 1240 | CONFIG_USB_SERIAL_SAFE=m |
diff --git a/arch/powerpc/configs/iseries_defconfig b/arch/powerpc/configs/iseries_defconfig index 5d0866707a75..751a622fb7a7 100644 --- a/arch/powerpc/configs/iseries_defconfig +++ b/arch/powerpc/configs/iseries_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.15-rc1 | 3 | # Linux kernel version: 2.6.15-rc5 |
| 4 | # Tue Nov 15 14:38:09 2005 | 4 | # Tue Dec 20 15:59:32 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
| 7 | CONFIG_64BIT=y | 7 | CONFIG_64BIT=y |
| @@ -55,6 +55,7 @@ CONFIG_IKCONFIG=y | |||
| 55 | CONFIG_IKCONFIG_PROC=y | 55 | CONFIG_IKCONFIG_PROC=y |
| 56 | # CONFIG_CPUSETS is not set | 56 | # CONFIG_CPUSETS is not set |
| 57 | CONFIG_INITRAMFS_SOURCE="" | 57 | CONFIG_INITRAMFS_SOURCE="" |
| 58 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
| 58 | # CONFIG_EMBEDDED is not set | 59 | # CONFIG_EMBEDDED is not set |
| 59 | CONFIG_KALLSYMS=y | 60 | CONFIG_KALLSYMS=y |
| 60 | # CONFIG_KALLSYMS_ALL is not set | 61 | # CONFIG_KALLSYMS_ALL is not set |
| @@ -144,7 +145,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
| 144 | CONFIG_FLATMEM=y | 145 | CONFIG_FLATMEM=y |
| 145 | CONFIG_FLAT_NODE_MEM_MAP=y | 146 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 146 | # CONFIG_SPARSEMEM_STATIC is not set | 147 | # CONFIG_SPARSEMEM_STATIC is not set |
| 147 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | 148 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
| 148 | # CONFIG_PPC_64K_PAGES is not set | 149 | # CONFIG_PPC_64K_PAGES is not set |
| 149 | # CONFIG_SCHED_SMT is not set | 150 | # CONFIG_SCHED_SMT is not set |
| 150 | CONFIG_PROC_DEVICETREE=y | 151 | CONFIG_PROC_DEVICETREE=y |
diff --git a/arch/powerpc/configs/maple_defconfig b/arch/powerpc/configs/maple_defconfig index 92e42613ef06..07b6d3d23360 100644 --- a/arch/powerpc/configs/maple_defconfig +++ b/arch/powerpc/configs/maple_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.15-rc1 | 3 | # Linux kernel version: 2.6.15-rc5 |
| 4 | # Tue Nov 15 14:38:58 2005 | 4 | # Tue Dec 20 15:59:36 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
| 7 | CONFIG_64BIT=y | 7 | CONFIG_64BIT=y |
| @@ -53,6 +53,7 @@ CONFIG_IKCONFIG=y | |||
| 53 | CONFIG_IKCONFIG_PROC=y | 53 | CONFIG_IKCONFIG_PROC=y |
| 54 | # CONFIG_CPUSETS is not set | 54 | # CONFIG_CPUSETS is not set |
| 55 | CONFIG_INITRAMFS_SOURCE="" | 55 | CONFIG_INITRAMFS_SOURCE="" |
| 56 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
| 56 | # CONFIG_EMBEDDED is not set | 57 | # CONFIG_EMBEDDED is not set |
| 57 | CONFIG_KALLSYMS=y | 58 | CONFIG_KALLSYMS=y |
| 58 | CONFIG_KALLSYMS_ALL=y | 59 | CONFIG_KALLSYMS_ALL=y |
| @@ -149,7 +150,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
| 149 | CONFIG_FLATMEM=y | 150 | CONFIG_FLATMEM=y |
| 150 | CONFIG_FLAT_NODE_MEM_MAP=y | 151 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 151 | # CONFIG_SPARSEMEM_STATIC is not set | 152 | # CONFIG_SPARSEMEM_STATIC is not set |
| 152 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | 153 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
| 153 | # CONFIG_PPC_64K_PAGES is not set | 154 | # CONFIG_PPC_64K_PAGES is not set |
| 154 | # CONFIG_SCHED_SMT is not set | 155 | # CONFIG_SCHED_SMT is not set |
| 155 | CONFIG_PROC_DEVICETREE=y | 156 | CONFIG_PROC_DEVICETREE=y |
| @@ -242,7 +243,6 @@ CONFIG_TCP_CONG_BIC=y | |||
| 242 | # QoS and/or fair queueing | 243 | # QoS and/or fair queueing |
| 243 | # | 244 | # |
| 244 | # CONFIG_NET_SCHED is not set | 245 | # CONFIG_NET_SCHED is not set |
| 245 | # CONFIG_NET_CLS_ROUTE is not set | ||
| 246 | 246 | ||
| 247 | # | 247 | # |
| 248 | # Network testing | 248 | # Network testing |
| @@ -794,6 +794,7 @@ CONFIG_USB_SERIAL=y | |||
| 794 | # CONFIG_USB_SERIAL_CONSOLE is not set | 794 | # CONFIG_USB_SERIAL_CONSOLE is not set |
| 795 | CONFIG_USB_SERIAL_GENERIC=y | 795 | CONFIG_USB_SERIAL_GENERIC=y |
| 796 | # CONFIG_USB_SERIAL_AIRPRIME is not set | 796 | # CONFIG_USB_SERIAL_AIRPRIME is not set |
| 797 | # CONFIG_USB_SERIAL_ANYDATA is not set | ||
| 797 | # CONFIG_USB_SERIAL_BELKIN is not set | 798 | # CONFIG_USB_SERIAL_BELKIN is not set |
| 798 | # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set | 799 | # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set |
| 799 | # CONFIG_USB_SERIAL_CP2101 is not set | 800 | # CONFIG_USB_SERIAL_CP2101 is not set |
| @@ -824,7 +825,6 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y | |||
| 824 | # CONFIG_USB_SERIAL_KLSI is not set | 825 | # CONFIG_USB_SERIAL_KLSI is not set |
| 825 | # CONFIG_USB_SERIAL_KOBIL_SCT is not set | 826 | # CONFIG_USB_SERIAL_KOBIL_SCT is not set |
| 826 | # CONFIG_USB_SERIAL_MCT_U232 is not set | 827 | # CONFIG_USB_SERIAL_MCT_U232 is not set |
| 827 | # CONFIG_USB_SERIAL_NOKIA_DKU2 is not set | ||
| 828 | # CONFIG_USB_SERIAL_PL2303 is not set | 828 | # CONFIG_USB_SERIAL_PL2303 is not set |
| 829 | # CONFIG_USB_SERIAL_HP4X is not set | 829 | # CONFIG_USB_SERIAL_HP4X is not set |
| 830 | # CONFIG_USB_SERIAL_SAFE is not set | 830 | # CONFIG_USB_SERIAL_SAFE is not set |
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig index b5ba3bbd96fb..509399eab6f5 100644 --- a/arch/powerpc/configs/ppc64_defconfig +++ b/arch/powerpc/configs/ppc64_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.15-rc1 | 3 | # Linux kernel version: 2.6.15-rc5 |
| 4 | # Fri Nov 18 16:23:24 2005 | 4 | # Tue Dec 20 15:59:38 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
| 7 | CONFIG_64BIT=y | 7 | CONFIG_64BIT=y |
| @@ -54,6 +54,7 @@ CONFIG_IKCONFIG=y | |||
| 54 | CONFIG_IKCONFIG_PROC=y | 54 | CONFIG_IKCONFIG_PROC=y |
| 55 | CONFIG_CPUSETS=y | 55 | CONFIG_CPUSETS=y |
| 56 | CONFIG_INITRAMFS_SOURCE="" | 56 | CONFIG_INITRAMFS_SOURCE="" |
| 57 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
| 57 | # CONFIG_EMBEDDED is not set | 58 | # CONFIG_EMBEDDED is not set |
| 58 | CONFIG_KALLSYMS=y | 59 | CONFIG_KALLSYMS=y |
| 59 | CONFIG_KALLSYMS_ALL=y | 60 | CONFIG_KALLSYMS_ALL=y |
| @@ -176,7 +177,7 @@ CONFIG_HAVE_MEMORY_PRESENT=y | |||
| 176 | # CONFIG_SPARSEMEM_STATIC is not set | 177 | # CONFIG_SPARSEMEM_STATIC is not set |
| 177 | CONFIG_SPARSEMEM_EXTREME=y | 178 | CONFIG_SPARSEMEM_EXTREME=y |
| 178 | # CONFIG_MEMORY_HOTPLUG is not set | 179 | # CONFIG_MEMORY_HOTPLUG is not set |
| 179 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | 180 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
| 180 | # CONFIG_PPC_64K_PAGES is not set | 181 | # CONFIG_PPC_64K_PAGES is not set |
| 181 | # CONFIG_SCHED_SMT is not set | 182 | # CONFIG_SCHED_SMT is not set |
| 182 | CONFIG_PROC_DEVICETREE=y | 183 | CONFIG_PROC_DEVICETREE=y |
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig index b589b196eb3f..a50ce0fa9243 100644 --- a/arch/powerpc/configs/pseries_defconfig +++ b/arch/powerpc/configs/pseries_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.15-rc1 | 3 | # Linux kernel version: 2.6.15-rc5 |
| 4 | # Tue Nov 15 14:36:55 2005 | 4 | # Tue Dec 20 15:59:40 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
| 7 | CONFIG_64BIT=y | 7 | CONFIG_64BIT=y |
| @@ -55,6 +55,7 @@ CONFIG_IKCONFIG=y | |||
| 55 | CONFIG_IKCONFIG_PROC=y | 55 | CONFIG_IKCONFIG_PROC=y |
| 56 | CONFIG_CPUSETS=y | 56 | CONFIG_CPUSETS=y |
| 57 | CONFIG_INITRAMFS_SOURCE="" | 57 | CONFIG_INITRAMFS_SOURCE="" |
| 58 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
| 58 | # CONFIG_EMBEDDED is not set | 59 | # CONFIG_EMBEDDED is not set |
| 59 | CONFIG_KALLSYMS=y | 60 | CONFIG_KALLSYMS=y |
| 60 | CONFIG_KALLSYMS_ALL=y | 61 | CONFIG_KALLSYMS_ALL=y |
| @@ -163,7 +164,7 @@ CONFIG_HAVE_MEMORY_PRESENT=y | |||
| 163 | # CONFIG_SPARSEMEM_STATIC is not set | 164 | # CONFIG_SPARSEMEM_STATIC is not set |
| 164 | CONFIG_SPARSEMEM_EXTREME=y | 165 | CONFIG_SPARSEMEM_EXTREME=y |
| 165 | # CONFIG_MEMORY_HOTPLUG is not set | 166 | # CONFIG_MEMORY_HOTPLUG is not set |
| 166 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | 167 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
| 167 | CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y | 168 | CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y |
| 168 | # CONFIG_PPC_64K_PAGES is not set | 169 | # CONFIG_PPC_64K_PAGES is not set |
| 169 | CONFIG_SCHED_SMT=y | 170 | CONFIG_SCHED_SMT=y |
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 2d22bf03484e..bce33a38399f 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
| @@ -183,8 +183,8 @@ syscall_exit_trace_cont: | |||
| 183 | ld r13,GPR13(r1) /* returning to usermode */ | 183 | ld r13,GPR13(r1) /* returning to usermode */ |
| 184 | 1: ld r2,GPR2(r1) | 184 | 1: ld r2,GPR2(r1) |
| 185 | li r12,MSR_RI | 185 | li r12,MSR_RI |
| 186 | andc r10,r10,r12 | 186 | andc r11,r10,r12 |
| 187 | mtmsrd r10,1 /* clear MSR.RI */ | 187 | mtmsrd r11,1 /* clear MSR.RI */ |
| 188 | ld r1,GPR1(r1) | 188 | ld r1,GPR1(r1) |
| 189 | mtlr r4 | 189 | mtlr r4 |
| 190 | mtcr r5 | 190 | mtcr r5 |
diff --git a/arch/powerpc/kernel/syscalls.c b/arch/powerpc/kernel/syscalls.c index f72ced11212d..91b93d917b64 100644 --- a/arch/powerpc/kernel/syscalls.c +++ b/arch/powerpc/kernel/syscalls.c | |||
| @@ -247,7 +247,7 @@ long ppc64_personality(unsigned long personality) | |||
| 247 | #define OVERRIDE_MACHINE 0 | 247 | #define OVERRIDE_MACHINE 0 |
| 248 | #endif | 248 | #endif |
| 249 | 249 | ||
| 250 | static inline int override_machine(char *mach) | 250 | static inline int override_machine(char __user *mach) |
| 251 | { | 251 | { |
| 252 | if (OVERRIDE_MACHINE) { | 252 | if (OVERRIDE_MACHINE) { |
| 253 | /* change ppc64 to ppc */ | 253 | /* change ppc64 to ppc */ |
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index a33583f3b0e7..a606504678bd 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c | |||
| @@ -514,7 +514,7 @@ void __init htab_initialize(void) | |||
| 514 | #undef KB | 514 | #undef KB |
| 515 | #undef MB | 515 | #undef MB |
| 516 | 516 | ||
| 517 | void __init htab_initialize_secondary(void) | 517 | void htab_initialize_secondary(void) |
| 518 | { | 518 | { |
| 519 | if (!platform_is_lpar()) | 519 | if (!platform_is_lpar()) |
| 520 | mtspr(SPRN_SDR1, _SDR1); | 520 | mtspr(SPRN_SDR1, _SDR1); |
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c index 72ac18067ece..0377decc0719 100644 --- a/arch/powerpc/platforms/pseries/xics.c +++ b/arch/powerpc/platforms/pseries/xics.c | |||
| @@ -48,11 +48,6 @@ static struct hw_interrupt_type xics_pic = { | |||
| 48 | .set_affinity = xics_set_affinity | 48 | .set_affinity = xics_set_affinity |
| 49 | }; | 49 | }; |
| 50 | 50 | ||
| 51 | static struct hw_interrupt_type xics_8259_pic = { | ||
| 52 | .typename = " XICS/8259", | ||
| 53 | .ack = xics_mask_and_ack_irq, | ||
| 54 | }; | ||
| 55 | |||
| 56 | /* This is used to map real irq numbers to virtual */ | 51 | /* This is used to map real irq numbers to virtual */ |
| 57 | static struct radix_tree_root irq_map = RADIX_TREE_INIT(GFP_ATOMIC); | 52 | static struct radix_tree_root irq_map = RADIX_TREE_INIT(GFP_ATOMIC); |
| 58 | 53 | ||
| @@ -367,12 +362,7 @@ int xics_get_irq(struct pt_regs *regs) | |||
| 367 | /* for sanity, this had better be < NR_IRQS - 16 */ | 362 | /* for sanity, this had better be < NR_IRQS - 16 */ |
| 368 | if (vec == xics_irq_8259_cascade_real) { | 363 | if (vec == xics_irq_8259_cascade_real) { |
| 369 | irq = i8259_irq(regs); | 364 | irq = i8259_irq(regs); |
| 370 | if (irq == -1) { | 365 | xics_end_irq(irq_offset_up(xics_irq_8259_cascade)); |
| 371 | /* Spurious cascaded interrupt. Still must ack xics */ | ||
| 372 | xics_end_irq(irq_offset_up(xics_irq_8259_cascade)); | ||
| 373 | |||
| 374 | irq = -1; | ||
| 375 | } | ||
| 376 | } else if (vec == XICS_IRQ_SPURIOUS) { | 366 | } else if (vec == XICS_IRQ_SPURIOUS) { |
| 377 | irq = -1; | 367 | irq = -1; |
| 378 | } else { | 368 | } else { |
| @@ -542,6 +532,7 @@ nextnode: | |||
| 542 | xics_irq_8259_cascade_real = *ireg; | 532 | xics_irq_8259_cascade_real = *ireg; |
| 543 | xics_irq_8259_cascade | 533 | xics_irq_8259_cascade |
| 544 | = virt_irq_create_mapping(xics_irq_8259_cascade_real); | 534 | = virt_irq_create_mapping(xics_irq_8259_cascade_real); |
| 535 | i8259_init(0, 0); | ||
| 545 | of_node_put(np); | 536 | of_node_put(np); |
| 546 | } | 537 | } |
| 547 | 538 | ||
| @@ -565,12 +556,7 @@ nextnode: | |||
| 565 | #endif /* CONFIG_SMP */ | 556 | #endif /* CONFIG_SMP */ |
| 566 | } | 557 | } |
| 567 | 558 | ||
| 568 | xics_8259_pic.enable = i8259_pic.enable; | 559 | for (i = irq_offset_value(); i < NR_IRQS; ++i) |
| 569 | xics_8259_pic.disable = i8259_pic.disable; | ||
| 570 | xics_8259_pic.end = i8259_pic.end; | ||
| 571 | for (i = 0; i < 16; ++i) | ||
| 572 | get_irq_desc(i)->handler = &xics_8259_pic; | ||
| 573 | for (; i < NR_IRQS; ++i) | ||
| 574 | get_irq_desc(i)->handler = &xics_pic; | 560 | get_irq_desc(i)->handler = &xics_pic; |
| 575 | 561 | ||
| 576 | xics_setup_cpu(); | 562 | xics_setup_cpu(); |
| @@ -590,7 +576,6 @@ static int __init xics_setup_i8259(void) | |||
| 590 | no_action, 0, "8259 cascade", NULL)) | 576 | no_action, 0, "8259 cascade", NULL)) |
| 591 | printk(KERN_ERR "xics_setup_i8259: couldn't get 8259 " | 577 | printk(KERN_ERR "xics_setup_i8259: couldn't get 8259 " |
| 592 | "cascade\n"); | 578 | "cascade\n"); |
| 593 | i8259_init(0, 0); | ||
| 594 | } | 579 | } |
| 595 | return 0; | 580 | return 0; |
| 596 | } | 581 | } |
diff --git a/arch/ppc/platforms/85xx/mpc85xx_cds_common.c b/arch/ppc/platforms/85xx/mpc85xx_cds_common.c index d8991b88dc9c..5e8cc5ec6ab5 100644 --- a/arch/ppc/platforms/85xx/mpc85xx_cds_common.c +++ b/arch/ppc/platforms/85xx/mpc85xx_cds_common.c | |||
| @@ -130,10 +130,11 @@ mpc85xx_cds_show_cpuinfo(struct seq_file *m) | |||
| 130 | } | 130 | } |
| 131 | 131 | ||
| 132 | #ifdef CONFIG_CPM2 | 132 | #ifdef CONFIG_CPM2 |
| 133 | static void cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs) | 133 | static irqreturn_t cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs) |
| 134 | { | 134 | { |
| 135 | while((irq = cpm2_get_irq(regs)) >= 0) | 135 | while((irq = cpm2_get_irq(regs)) >= 0) |
| 136 | __do_IRQ(irq, regs); | 136 | __do_IRQ(irq, regs); |
| 137 | return IRQ_HANDLED; | ||
| 137 | } | 138 | } |
| 138 | 139 | ||
| 139 | static struct irqaction cpm2_irqaction = { | 140 | static struct irqaction cpm2_irqaction = { |
diff --git a/arch/ppc/syslib/ppc4xx_dma.c b/arch/ppc/syslib/ppc4xx_dma.c index f15e64285f96..05ccd598dd4e 100644 --- a/arch/ppc/syslib/ppc4xx_dma.c +++ b/arch/ppc/syslib/ppc4xx_dma.c | |||
| @@ -30,6 +30,7 @@ | |||
| 30 | 30 | ||
| 31 | #include <asm/system.h> | 31 | #include <asm/system.h> |
| 32 | #include <asm/io.h> | 32 | #include <asm/io.h> |
| 33 | #include <asm/dma.h> | ||
| 33 | #include <asm/ppc4xx_dma.h> | 34 | #include <asm/ppc4xx_dma.h> |
| 34 | 35 | ||
| 35 | ppc_dma_ch_t dma_channels[MAX_PPC4xx_DMA_CHANNELS]; | 36 | ppc_dma_ch_t dma_channels[MAX_PPC4xx_DMA_CHANNELS]; |
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index 3cfb8be3ff6d..56c34e7fd4ee 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig | |||
| @@ -55,6 +55,10 @@ config NR_CPUS | |||
| 55 | depends on SMP | 55 | depends on SMP |
| 56 | default "32" | 56 | default "32" |
| 57 | 57 | ||
| 58 | config SPARC | ||
| 59 | bool | ||
| 60 | default y | ||
| 61 | |||
| 58 | # Identify this as a Sparc32 build | 62 | # Identify this as a Sparc32 build |
| 59 | config SPARC32 | 63 | config SPARC32 |
| 60 | bool | 64 | bool |
diff --git a/arch/sparc/kernel/ebus.c b/arch/sparc/kernel/ebus.c index 1754192c69d0..5c3529ceb5d6 100644 --- a/arch/sparc/kernel/ebus.c +++ b/arch/sparc/kernel/ebus.c | |||
| @@ -22,7 +22,7 @@ | |||
| 22 | #include <asm/oplib.h> | 22 | #include <asm/oplib.h> |
| 23 | #include <asm/bpp.h> | 23 | #include <asm/bpp.h> |
| 24 | 24 | ||
| 25 | struct linux_ebus *ebus_chain = 0; | 25 | struct linux_ebus *ebus_chain = NULL; |
| 26 | 26 | ||
| 27 | /* We are together with pcic.c under CONFIG_PCI. */ | 27 | /* We are together with pcic.c under CONFIG_PCI. */ |
| 28 | extern unsigned int pcic_pin_to_irq(unsigned int, char *name); | 28 | extern unsigned int pcic_pin_to_irq(unsigned int, char *name); |
| @@ -46,7 +46,7 @@ static struct ebus_device_irq je1_1[] = { | |||
| 46 | { "SUNW,CS4231", 0 }, | 46 | { "SUNW,CS4231", 0 }, |
| 47 | { "parallel", 0 }, | 47 | { "parallel", 0 }, |
| 48 | { "se", 2 }, | 48 | { "se", 2 }, |
| 49 | { 0, 0 } | 49 | { NULL, 0 } |
| 50 | }; | 50 | }; |
| 51 | 51 | ||
| 52 | /* | 52 | /* |
| @@ -55,7 +55,7 @@ static struct ebus_device_irq je1_1[] = { | |||
| 55 | */ | 55 | */ |
| 56 | static struct ebus_system_entry ebus_blacklist[] = { | 56 | static struct ebus_system_entry ebus_blacklist[] = { |
| 57 | { "SUNW,JavaEngine1", je1_1 }, | 57 | { "SUNW,JavaEngine1", je1_1 }, |
| 58 | { 0, 0 } | 58 | { NULL, NULL } |
| 59 | }; | 59 | }; |
| 60 | 60 | ||
| 61 | static struct ebus_device_irq *ebus_blackp = NULL; | 61 | static struct ebus_device_irq *ebus_blackp = NULL; |
| @@ -233,7 +233,7 @@ void __init fill_ebus_device(int node, struct linux_ebus_device *dev) | |||
| 233 | ebus_alloc(sizeof(struct linux_ebus_child)); | 233 | ebus_alloc(sizeof(struct linux_ebus_child)); |
| 234 | 234 | ||
| 235 | child = dev->children; | 235 | child = dev->children; |
| 236 | child->next = 0; | 236 | child->next = NULL; |
| 237 | child->parent = dev; | 237 | child->parent = dev; |
| 238 | child->bus = dev->bus; | 238 | child->bus = dev->bus; |
| 239 | fill_ebus_child(node, ®s[0], child); | 239 | fill_ebus_child(node, ®s[0], child); |
| @@ -243,7 +243,7 @@ void __init fill_ebus_device(int node, struct linux_ebus_device *dev) | |||
| 243 | ebus_alloc(sizeof(struct linux_ebus_child)); | 243 | ebus_alloc(sizeof(struct linux_ebus_child)); |
| 244 | 244 | ||
| 245 | child = child->next; | 245 | child = child->next; |
| 246 | child->next = 0; | 246 | child->next = NULL; |
| 247 | child->parent = dev; | 247 | child->parent = dev; |
| 248 | child->bus = dev->bus; | 248 | child->bus = dev->bus; |
| 249 | fill_ebus_child(node, ®s[0], child); | 249 | fill_ebus_child(node, ®s[0], child); |
| @@ -275,7 +275,7 @@ void __init ebus_init(void) | |||
| 275 | } | 275 | } |
| 276 | } | 276 | } |
| 277 | 277 | ||
| 278 | pdev = pci_get_device(PCI_VENDOR_ID_SUN, PCI_DEVICE_ID_SUN_EBUS, 0); | 278 | pdev = pci_get_device(PCI_VENDOR_ID_SUN, PCI_DEVICE_ID_SUN_EBUS, NULL); |
| 279 | if (!pdev) { | 279 | if (!pdev) { |
| 280 | return; | 280 | return; |
| 281 | } | 281 | } |
| @@ -284,7 +284,7 @@ void __init ebus_init(void) | |||
| 284 | 284 | ||
| 285 | ebus_chain = ebus = (struct linux_ebus *) | 285 | ebus_chain = ebus = (struct linux_ebus *) |
| 286 | ebus_alloc(sizeof(struct linux_ebus)); | 286 | ebus_alloc(sizeof(struct linux_ebus)); |
| 287 | ebus->next = 0; | 287 | ebus->next = NULL; |
| 288 | 288 | ||
| 289 | while (ebusnd) { | 289 | while (ebusnd) { |
| 290 | 290 | ||
| @@ -325,8 +325,8 @@ void __init ebus_init(void) | |||
| 325 | ebus_alloc(sizeof(struct linux_ebus_device)); | 325 | ebus_alloc(sizeof(struct linux_ebus_device)); |
| 326 | 326 | ||
| 327 | dev = ebus->devices; | 327 | dev = ebus->devices; |
| 328 | dev->next = 0; | 328 | dev->next = NULL; |
| 329 | dev->children = 0; | 329 | dev->children = NULL; |
| 330 | dev->bus = ebus; | 330 | dev->bus = ebus; |
| 331 | fill_ebus_device(nd, dev); | 331 | fill_ebus_device(nd, dev); |
| 332 | 332 | ||
| @@ -335,8 +335,8 @@ void __init ebus_init(void) | |||
| 335 | ebus_alloc(sizeof(struct linux_ebus_device)); | 335 | ebus_alloc(sizeof(struct linux_ebus_device)); |
| 336 | 336 | ||
| 337 | dev = dev->next; | 337 | dev = dev->next; |
| 338 | dev->next = 0; | 338 | dev->next = NULL; |
| 339 | dev->children = 0; | 339 | dev->children = NULL; |
| 340 | dev->bus = ebus; | 340 | dev->bus = ebus; |
| 341 | fill_ebus_device(nd, dev); | 341 | fill_ebus_device(nd, dev); |
| 342 | } | 342 | } |
| @@ -353,7 +353,7 @@ void __init ebus_init(void) | |||
| 353 | ebus->next = (struct linux_ebus *) | 353 | ebus->next = (struct linux_ebus *) |
| 354 | ebus_alloc(sizeof(struct linux_ebus)); | 354 | ebus_alloc(sizeof(struct linux_ebus)); |
| 355 | ebus = ebus->next; | 355 | ebus = ebus->next; |
| 356 | ebus->next = 0; | 356 | ebus->next = NULL; |
| 357 | ++num_ebus; | 357 | ++num_ebus; |
| 358 | } | 358 | } |
| 359 | if (pdev) | 359 | if (pdev) |
diff --git a/arch/sparc/kernel/led.c b/arch/sparc/kernel/led.c index 2a3afca453c9..313d1620ae8e 100644 --- a/arch/sparc/kernel/led.c +++ b/arch/sparc/kernel/led.c | |||
| @@ -55,7 +55,7 @@ static int led_read_proc(char *buf, char **start, off_t offset, int count, | |||
| 55 | return len; | 55 | return len; |
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | static int led_write_proc(struct file *file, const char *buffer, | 58 | static int led_write_proc(struct file *file, const char __user *buffer, |
| 59 | unsigned long count, void *data) | 59 | unsigned long count, void *data) |
| 60 | { | 60 | { |
| 61 | char *buf = NULL; | 61 | char *buf = NULL; |
diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c index cccfc12802ed..42002b742deb 100644 --- a/arch/sparc/kernel/pcic.c +++ b/arch/sparc/kernel/pcic.c | |||
| @@ -161,7 +161,7 @@ static struct pcic_sn2list pcic_known_sysnames[] = { | |||
| 161 | static int pcic0_up; | 161 | static int pcic0_up; |
| 162 | static struct linux_pcic pcic0; | 162 | static struct linux_pcic pcic0; |
| 163 | 163 | ||
| 164 | void * __iomem pcic_regs; | 164 | void __iomem *pcic_regs; |
| 165 | volatile int pcic_speculative; | 165 | volatile int pcic_speculative; |
| 166 | volatile int pcic_trapped; | 166 | volatile int pcic_trapped; |
| 167 | 167 | ||
diff --git a/arch/sparc/kernel/sys_sunos.c b/arch/sparc/kernel/sys_sunos.c index 81c894acd0db..d07ae02101ad 100644 --- a/arch/sparc/kernel/sys_sunos.c +++ b/arch/sparc/kernel/sys_sunos.c | |||
| @@ -894,7 +894,7 @@ asmlinkage long sunos_sysconf (int name) | |||
| 894 | ret = ARG_MAX; | 894 | ret = ARG_MAX; |
| 895 | break; | 895 | break; |
| 896 | case _SC_CHILD_MAX: | 896 | case _SC_CHILD_MAX: |
| 897 | ret = CHILD_MAX; | 897 | ret = -1; /* no limit */ |
| 898 | break; | 898 | break; |
| 899 | case _SC_CLK_TCK: | 899 | case _SC_CLK_TCK: |
| 900 | ret = HZ; | 900 | ret = HZ; |
diff --git a/arch/sparc/kernel/time.c b/arch/sparc/kernel/time.c index 24814d58f9e1..7dadcdb4ca42 100644 --- a/arch/sparc/kernel/time.c +++ b/arch/sparc/kernel/time.c | |||
| @@ -49,7 +49,7 @@ DEFINE_SPINLOCK(rtc_lock); | |||
| 49 | enum sparc_clock_type sp_clock_typ; | 49 | enum sparc_clock_type sp_clock_typ; |
| 50 | DEFINE_SPINLOCK(mostek_lock); | 50 | DEFINE_SPINLOCK(mostek_lock); |
| 51 | void __iomem *mstk48t02_regs = NULL; | 51 | void __iomem *mstk48t02_regs = NULL; |
| 52 | static struct mostek48t08 *mstk48t08_regs = NULL; | 52 | static struct mostek48t08 __iomem *mstk48t08_regs = NULL; |
| 53 | static int set_rtc_mmss(unsigned long); | 53 | static int set_rtc_mmss(unsigned long); |
| 54 | static int sbus_do_settimeofday(struct timespec *tv); | 54 | static int sbus_do_settimeofday(struct timespec *tv); |
| 55 | 55 | ||
| @@ -342,7 +342,7 @@ static __inline__ void clock_probe(void) | |||
| 342 | /* XXX r/o attribute is somewhere in r.flags */ | 342 | /* XXX r/o attribute is somewhere in r.flags */ |
| 343 | r.flags = clk_reg[0].which_io; | 343 | r.flags = clk_reg[0].which_io; |
| 344 | r.start = clk_reg[0].phys_addr; | 344 | r.start = clk_reg[0].phys_addr; |
| 345 | mstk48t08_regs = (struct mostek48t08 *) sbus_ioremap(&r, 0, | 345 | mstk48t08_regs = sbus_ioremap(&r, 0, |
| 346 | sizeof(struct mostek48t08), "mk48t08"); | 346 | sizeof(struct mostek48t08), "mk48t08"); |
| 347 | 347 | ||
| 348 | mstk48t02_regs = &mstk48t08_regs->regs; | 348 | mstk48t02_regs = &mstk48t08_regs->regs; |
diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S index 38938d2e63aa..346c19a949fd 100644 --- a/arch/sparc/kernel/vmlinux.lds.S +++ b/arch/sparc/kernel/vmlinux.lds.S | |||
| @@ -85,19 +85,9 @@ SECTIONS | |||
| 85 | } | 85 | } |
| 86 | _end = . ; | 86 | _end = . ; |
| 87 | PROVIDE (end = .); | 87 | PROVIDE (end = .); |
| 88 | /* Stabs debugging sections. */ | ||
| 89 | .stab 0 : { *(.stab) } | ||
| 90 | .stabstr 0 : { *(.stabstr) } | ||
| 91 | .stab.excl 0 : { *(.stab.excl) } | ||
| 92 | .stab.exclstr 0 : { *(.stab.exclstr) } | ||
| 93 | .stab.index 0 : { *(.stab.index) } | ||
| 94 | .stab.indexstr 0 : { *(.stab.indexstr) } | ||
| 95 | .comment 0 : { *(.comment) } | ||
| 96 | .debug 0 : { *(.debug) } | ||
| 97 | .debug_srcinfo 0 : { *(.debug_srcinfo) } | ||
| 98 | .debug_aranges 0 : { *(.debug_aranges) } | ||
| 99 | .debug_pubnames 0 : { *(.debug_pubnames) } | ||
| 100 | .debug_sfnames 0 : { *(.debug_sfnames) } | ||
| 101 | .line 0 : { *(.line) } | ||
| 102 | /DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) } | 88 | /DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) } |
| 89 | |||
| 90 | STABS_DEBUG | ||
| 91 | |||
| 92 | DWARF_DEBUG | ||
| 103 | } | 93 | } |
diff --git a/arch/sparc/mm/sun4c.c b/arch/sparc/mm/sun4c.c index 1d560390e282..731f19603cad 100644 --- a/arch/sparc/mm/sun4c.c +++ b/arch/sparc/mm/sun4c.c | |||
| @@ -497,7 +497,7 @@ static void __init sun4c_probe_mmu(void) | |||
| 497 | patch_kernel_fault_handler(); | 497 | patch_kernel_fault_handler(); |
| 498 | } | 498 | } |
| 499 | 499 | ||
| 500 | volatile unsigned long *sun4c_memerr_reg = NULL; | 500 | volatile unsigned long __iomem *sun4c_memerr_reg = NULL; |
| 501 | 501 | ||
| 502 | void __init sun4c_probe_memerr_reg(void) | 502 | void __init sun4c_probe_memerr_reg(void) |
| 503 | { | 503 | { |
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index 3fded69b1922..c4b7ad70cd7c 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig | |||
| @@ -5,6 +5,10 @@ | |||
| 5 | 5 | ||
| 6 | mainmenu "Linux/UltraSPARC Kernel Configuration" | 6 | mainmenu "Linux/UltraSPARC Kernel Configuration" |
| 7 | 7 | ||
| 8 | config SPARC | ||
| 9 | bool | ||
| 10 | default y | ||
| 11 | |||
| 8 | config SPARC64 | 12 | config SPARC64 |
| 9 | bool | 13 | bool |
| 10 | default y | 14 | default y |
diff --git a/arch/sparc64/Makefile b/arch/sparc64/Makefile index 43fe382da078..cad10c5b83d3 100644 --- a/arch/sparc64/Makefile +++ b/arch/sparc64/Makefile | |||
| @@ -17,7 +17,6 @@ CC := $(shell if $(CC) -m64 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then | |||
| 17 | NEW_GCC := $(call cc-option-yn, -m64 -mcmodel=medlow) | 17 | NEW_GCC := $(call cc-option-yn, -m64 -mcmodel=medlow) |
| 18 | NEW_GAS := $(shell if $(LD) -V 2>&1 | grep 'elf64_sparc' > /dev/null; then echo y; else echo n; fi) | 18 | NEW_GAS := $(shell if $(LD) -V 2>&1 | grep 'elf64_sparc' > /dev/null; then echo y; else echo n; fi) |
| 19 | UNDECLARED_REGS := $(shell if $(CC) -c -x assembler /dev/null -Wa,--help | grep undeclared-regs > /dev/null; then echo y; else echo n; fi; ) | 19 | UNDECLARED_REGS := $(shell if $(CC) -c -x assembler /dev/null -Wa,--help | grep undeclared-regs > /dev/null; then echo y; else echo n; fi; ) |
| 20 | INLINE_LIMIT := $(call cc-option-yn, -m64 -finline-limit=100000) | ||
| 21 | 20 | ||
| 22 | export NEW_GCC | 21 | export NEW_GCC |
| 23 | 22 | ||
| @@ -49,10 +48,6 @@ else | |||
| 49 | AFLAGS += -m64 -mcpu=ultrasparc $(CC_UNDECL) | 48 | AFLAGS += -m64 -mcpu=ultrasparc $(CC_UNDECL) |
| 50 | endif | 49 | endif |
| 51 | 50 | ||
| 52 | ifeq ($(INLINE_LIMIT),y) | ||
| 53 | CFLAGS := $(CFLAGS) -finline-limit=100000 | ||
| 54 | endif | ||
| 55 | |||
| 56 | ifeq ($(CONFIG_MCOUNT),y) | 51 | ifeq ($(CONFIG_MCOUNT),y) |
| 57 | CFLAGS := $(CFLAGS) -pg | 52 | CFLAGS := $(CFLAGS) -pg |
| 58 | endif | 53 | endif |
diff --git a/arch/sparc64/kernel/sys_sunos32.c b/arch/sparc64/kernel/sys_sunos32.c index d0592ed54ea5..bfa4aa68312d 100644 --- a/arch/sparc64/kernel/sys_sunos32.c +++ b/arch/sparc64/kernel/sys_sunos32.c | |||
| @@ -854,7 +854,7 @@ asmlinkage s32 sunos_sysconf (int name) | |||
| 854 | ret = ARG_MAX; | 854 | ret = ARG_MAX; |
| 855 | break; | 855 | break; |
| 856 | case _SC_CHILD_MAX: | 856 | case _SC_CHILD_MAX: |
| 857 | ret = CHILD_MAX; | 857 | ret = -1; /* no limit */ |
| 858 | break; | 858 | break; |
| 859 | case _SC_CLK_TCK: | 859 | case _SC_CLK_TCK: |
| 860 | ret = HZ; | 860 | ret = HZ; |
diff --git a/arch/sparc64/kernel/vmlinux.lds.S b/arch/sparc64/kernel/vmlinux.lds.S index 2af0cf0a8640..467d13a0d5c1 100644 --- a/arch/sparc64/kernel/vmlinux.lds.S +++ b/arch/sparc64/kernel/vmlinux.lds.S | |||
| @@ -90,19 +90,9 @@ SECTIONS | |||
| 90 | } | 90 | } |
| 91 | _end = . ; | 91 | _end = . ; |
| 92 | PROVIDE (end = .); | 92 | PROVIDE (end = .); |
| 93 | /* Stabs debugging sections. */ | ||
| 94 | .stab 0 : { *(.stab) } | ||
| 95 | .stabstr 0 : { *(.stabstr) } | ||
| 96 | .stab.excl 0 : { *(.stab.excl) } | ||
| 97 | .stab.exclstr 0 : { *(.stab.exclstr) } | ||
| 98 | .stab.index 0 : { *(.stab.index) } | ||
| 99 | .stab.indexstr 0 : { *(.stab.indexstr) } | ||
| 100 | .comment 0 : { *(.comment) } | ||
| 101 | .debug 0 : { *(.debug) } | ||
| 102 | .debug_srcinfo 0 : { *(.debug_srcinfo) } | ||
| 103 | .debug_aranges 0 : { *(.debug_aranges) } | ||
| 104 | .debug_pubnames 0 : { *(.debug_pubnames) } | ||
| 105 | .debug_sfnames 0 : { *(.debug_sfnames) } | ||
| 106 | .line 0 : { *(.line) } | ||
| 107 | /DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) } | 93 | /DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) } |
| 94 | |||
| 95 | STABS_DEBUG | ||
| 96 | |||
| 97 | DWARF_DEBUG | ||
| 108 | } | 98 | } |
diff --git a/arch/sparc64/solaris/misc.c b/arch/sparc64/solaris/misc.c index 302efbcba70e..3ab4677395f2 100644 --- a/arch/sparc64/solaris/misc.c +++ b/arch/sparc64/solaris/misc.c | |||
| @@ -353,7 +353,7 @@ asmlinkage int solaris_sysconf(int id) | |||
| 353 | { | 353 | { |
| 354 | switch (id) { | 354 | switch (id) { |
| 355 | case SOLARIS_CONFIG_NGROUPS: return NGROUPS_MAX; | 355 | case SOLARIS_CONFIG_NGROUPS: return NGROUPS_MAX; |
| 356 | case SOLARIS_CONFIG_CHILD_MAX: return CHILD_MAX; | 356 | case SOLARIS_CONFIG_CHILD_MAX: return -1; /* no limit */ |
| 357 | case SOLARIS_CONFIG_OPEN_FILES: return OPEN_MAX; | 357 | case SOLARIS_CONFIG_OPEN_FILES: return OPEN_MAX; |
| 358 | case SOLARIS_CONFIG_POSIX_VER: return 199309; | 358 | case SOLARIS_CONFIG_POSIX_VER: return 199309; |
| 359 | case SOLARIS_CONFIG_PAGESIZE: return PAGE_SIZE; | 359 | case SOLARIS_CONFIG_PAGESIZE: return PAGE_SIZE; |
diff --git a/arch/um/Kconfig b/arch/um/Kconfig index 563301fe5df8..1eb21de9d1b5 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig | |||
| @@ -289,6 +289,8 @@ source "arch/um/Kconfig.net" | |||
| 289 | 289 | ||
| 290 | source "drivers/net/Kconfig" | 290 | source "drivers/net/Kconfig" |
| 291 | 291 | ||
| 292 | source "drivers/connector/Kconfig" | ||
| 293 | |||
| 292 | source "fs/Kconfig" | 294 | source "fs/Kconfig" |
| 293 | 295 | ||
| 294 | source "security/Kconfig" | 296 | source "security/Kconfig" |
diff --git a/arch/um/Makefile-x86_64 b/arch/um/Makefile-x86_64 index 4f118d5cc2ee..38df311e75dc 100644 --- a/arch/um/Makefile-x86_64 +++ b/arch/um/Makefile-x86_64 | |||
| @@ -12,3 +12,7 @@ CHECKFLAGS += -m64 | |||
| 12 | 12 | ||
| 13 | ELF_ARCH := i386:x86-64 | 13 | ELF_ARCH := i386:x86-64 |
| 14 | ELF_FORMAT := elf64-x86-64 | 14 | ELF_FORMAT := elf64-x86-64 |
| 15 | |||
| 16 | # Not on all 64-bit distros /lib is a symlink to /lib64. PLD is an example. | ||
| 17 | |||
| 18 | LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib64 | ||
diff --git a/arch/um/include/sysdep-i386/stub.h b/arch/um/include/sysdep-i386/stub.h index 6ba8cbbe0d36..b492b12b4a10 100644 --- a/arch/um/include/sysdep-i386/stub.h +++ b/arch/um/include/sysdep-i386/stub.h | |||
| @@ -6,8 +6,12 @@ | |||
| 6 | #ifndef __SYSDEP_STUB_H | 6 | #ifndef __SYSDEP_STUB_H |
| 7 | #define __SYSDEP_STUB_H | 7 | #define __SYSDEP_STUB_H |
| 8 | 8 | ||
| 9 | #include <sys/mman.h> | ||
| 9 | #include <asm/ptrace.h> | 10 | #include <asm/ptrace.h> |
| 10 | #include <asm/unistd.h> | 11 | #include <asm/unistd.h> |
| 12 | #include "stub-data.h" | ||
| 13 | #include "kern_constants.h" | ||
| 14 | #include "uml-config.h" | ||
| 11 | 15 | ||
| 12 | extern void stub_segv_handler(int sig); | 16 | extern void stub_segv_handler(int sig); |
| 13 | extern void stub_clone_handler(void); | 17 | extern void stub_clone_handler(void); |
| @@ -76,23 +80,22 @@ static inline long stub_syscall5(long syscall, long arg1, long arg2, long arg3, | |||
| 76 | return ret; | 80 | return ret; |
| 77 | } | 81 | } |
| 78 | 82 | ||
| 79 | static inline long stub_syscall6(long syscall, long arg1, long arg2, long arg3, | 83 | static inline void trap_myself(void) |
| 80 | long arg4, long arg5, long arg6) | ||
| 81 | { | 84 | { |
| 82 | long ret; | 85 | __asm("int3"); |
| 83 | |||
| 84 | __asm__ volatile ("push %%ebp ; movl %%eax,%%ebp ; movl %1,%%eax ; " | ||
| 85 | "int $0x80 ; pop %%ebp" | ||
| 86 | : "=a" (ret) | ||
| 87 | : "g" (syscall), "b" (arg1), "c" (arg2), "d" (arg3), | ||
| 88 | "S" (arg4), "D" (arg5), "0" (arg6)); | ||
| 89 | |||
| 90 | return ret; | ||
| 91 | } | 86 | } |
| 92 | 87 | ||
| 93 | static inline void trap_myself(void) | 88 | static inline void remap_stack(int fd, unsigned long offset) |
| 94 | { | 89 | { |
| 95 | __asm("int3"); | 90 | __asm__ volatile ("movl %%eax,%%ebp ; movl %0,%%eax ; int $0x80 ;" |
| 91 | "movl %7, %%ebx ; movl %%eax, (%%ebx)" | ||
| 92 | : : "g" (STUB_MMAP_NR), "b" (UML_CONFIG_STUB_DATA), | ||
| 93 | "c" (UM_KERN_PAGE_SIZE), | ||
| 94 | "d" (PROT_READ | PROT_WRITE), | ||
| 95 | "S" (MAP_FIXED | MAP_SHARED), "D" (fd), | ||
| 96 | "a" (offset), | ||
| 97 | "i" (&((struct stub_data *) UML_CONFIG_STUB_DATA)->err) | ||
| 98 | : "memory"); | ||
| 96 | } | 99 | } |
| 97 | 100 | ||
| 98 | #endif | 101 | #endif |
diff --git a/arch/um/include/sysdep-x86_64/stub.h b/arch/um/include/sysdep-x86_64/stub.h index c41689c13dc9..92e989f81761 100644 --- a/arch/um/include/sysdep-x86_64/stub.h +++ b/arch/um/include/sysdep-x86_64/stub.h | |||
| @@ -6,8 +6,12 @@ | |||
| 6 | #ifndef __SYSDEP_STUB_H | 6 | #ifndef __SYSDEP_STUB_H |
| 7 | #define __SYSDEP_STUB_H | 7 | #define __SYSDEP_STUB_H |
| 8 | 8 | ||
| 9 | #include <sys/mman.h> | ||
| 9 | #include <asm/unistd.h> | 10 | #include <asm/unistd.h> |
| 10 | #include <sysdep/ptrace_user.h> | 11 | #include <sysdep/ptrace_user.h> |
| 12 | #include "stub-data.h" | ||
| 13 | #include "kern_constants.h" | ||
| 14 | #include "uml-config.h" | ||
| 11 | 15 | ||
| 12 | extern void stub_segv_handler(int sig); | 16 | extern void stub_segv_handler(int sig); |
| 13 | extern void stub_clone_handler(void); | 17 | extern void stub_clone_handler(void); |
| @@ -81,23 +85,23 @@ static inline long stub_syscall5(long syscall, long arg1, long arg2, long arg3, | |||
| 81 | return ret; | 85 | return ret; |
| 82 | } | 86 | } |
| 83 | 87 | ||
| 84 | static inline long stub_syscall6(long syscall, long arg1, long arg2, long arg3, | 88 | static inline void trap_myself(void) |
| 85 | long arg4, long arg5, long arg6) | ||
| 86 | { | 89 | { |
| 87 | long ret; | 90 | __asm("int3"); |
| 88 | |||
| 89 | __asm__ volatile ("movq %5,%%r10 ; movq %6,%%r8 ; " | ||
| 90 | "movq %7, %%r9; " __syscall : "=a" (ret) | ||
| 91 | : "0" (syscall), "D" (arg1), "S" (arg2), "d" (arg3), | ||
| 92 | "g" (arg4), "g" (arg5), "g" (arg6) | ||
| 93 | : __syscall_clobber, "r10", "r8", "r9" ); | ||
| 94 | |||
| 95 | return ret; | ||
| 96 | } | 91 | } |
| 97 | 92 | ||
| 98 | static inline void trap_myself(void) | 93 | static inline void remap_stack(long fd, unsigned long offset) |
| 99 | { | 94 | { |
| 100 | __asm("int3"); | 95 | __asm__ volatile ("movq %4,%%r10 ; movq %5,%%r8 ; " |
| 96 | "movq %6, %%r9; " __syscall "; movq %7, %%rbx ; " | ||
| 97 | "movq %%rax, (%%rbx)": | ||
| 98 | : "a" (STUB_MMAP_NR), "D" (UML_CONFIG_STUB_DATA), | ||
| 99 | "S" (UM_KERN_PAGE_SIZE), | ||
| 100 | "d" (PROT_READ | PROT_WRITE), | ||
| 101 | "g" (MAP_FIXED | MAP_SHARED), "g" (fd), | ||
| 102 | "g" (offset), | ||
| 103 | "i" (&((struct stub_data *) UML_CONFIG_STUB_DATA)->err) | ||
| 104 | : __syscall_clobber, "r10", "r8", "r9" ); | ||
| 101 | } | 105 | } |
| 102 | 106 | ||
| 103 | #endif | 107 | #endif |
diff --git a/arch/um/kernel/skas/clone.c b/arch/um/kernel/skas/clone.c index cb37ce9124a6..47b812b3bca8 100644 --- a/arch/um/kernel/skas/clone.c +++ b/arch/um/kernel/skas/clone.c | |||
| @@ -18,11 +18,10 @@ | |||
| 18 | * on some systems. | 18 | * on some systems. |
| 19 | */ | 19 | */ |
| 20 | 20 | ||
| 21 | #define STUB_DATA(field) (((struct stub_data *) UML_CONFIG_STUB_DATA)->field) | ||
| 22 | |||
| 23 | void __attribute__ ((__section__ (".__syscall_stub"))) | 21 | void __attribute__ ((__section__ (".__syscall_stub"))) |
| 24 | stub_clone_handler(void) | 22 | stub_clone_handler(void) |
| 25 | { | 23 | { |
| 24 | struct stub_data *data = (struct stub_data *) UML_CONFIG_STUB_DATA; | ||
| 26 | long err; | 25 | long err; |
| 27 | 26 | ||
| 28 | err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD, | 27 | err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD, |
| @@ -35,17 +34,21 @@ stub_clone_handler(void) | |||
| 35 | if(err) | 34 | if(err) |
| 36 | goto out; | 35 | goto out; |
| 37 | 36 | ||
| 38 | err = stub_syscall3(__NR_setitimer, ITIMER_VIRTUAL, | 37 | err = stub_syscall3(__NR_setitimer, ITIMER_VIRTUAL, |
| 39 | (long) &STUB_DATA(timer), 0); | 38 | (long) &data->timer, 0); |
| 40 | if(err) | 39 | if(err) |
| 41 | goto out; | 40 | goto out; |
| 42 | 41 | ||
| 43 | err = stub_syscall6(STUB_MMAP_NR, UML_CONFIG_STUB_DATA, | 42 | remap_stack(data->fd, data->offset); |
| 44 | UM_KERN_PAGE_SIZE, PROT_READ | PROT_WRITE, | 43 | goto done; |
| 45 | MAP_FIXED | MAP_SHARED, STUB_DATA(fd), | 44 | |
| 46 | STUB_DATA(offset)); | ||
| 47 | out: | 45 | out: |
| 48 | /* save current result. Parent: pid; child: retcode of mmap */ | 46 | /* save current result. |
| 49 | STUB_DATA(err) = err; | 47 | * Parent: pid; |
| 48 | * child: retcode of mmap already saved and it jumps around this | ||
| 49 | * assignment | ||
| 50 | */ | ||
| 51 | data->err = err; | ||
| 52 | done: | ||
| 50 | trap_myself(); | 53 | trap_myself(); |
| 51 | } | 54 | } |
diff --git a/arch/um/os-Linux/start_up.c b/arch/um/os-Linux/start_up.c index 37517d49c4ae..29a9e3f43763 100644 --- a/arch/um/os-Linux/start_up.c +++ b/arch/um/os-Linux/start_up.c | |||
| @@ -116,16 +116,16 @@ static int stop_ptraced_child(int pid, void *stack, int exitcode, | |||
| 116 | if(!WIFEXITED(status) || (WEXITSTATUS(status) != exitcode)) { | 116 | if(!WIFEXITED(status) || (WEXITSTATUS(status) != exitcode)) { |
| 117 | int exit_with = WEXITSTATUS(status); | 117 | int exit_with = WEXITSTATUS(status); |
| 118 | if (exit_with == 2) | 118 | if (exit_with == 2) |
| 119 | printk("check_ptrace : child exited with status 2. " | 119 | printf("check_ptrace : child exited with status 2. " |
| 120 | "Serious trouble happening! Try updating your " | 120 | "Serious trouble happening! Try updating your " |
| 121 | "host skas patch!\nDisabling SYSEMU support."); | 121 | "host skas patch!\nDisabling SYSEMU support."); |
| 122 | printk("check_ptrace : child exited with exitcode %d, while " | 122 | printf("check_ptrace : child exited with exitcode %d, while " |
| 123 | "expecting %d; status 0x%x", exit_with, | 123 | "expecting %d; status 0x%x", exit_with, |
| 124 | exitcode, status); | 124 | exitcode, status); |
| 125 | if (mustpanic) | 125 | if (mustpanic) |
| 126 | panic("\n"); | 126 | panic("\n"); |
| 127 | else | 127 | else |
| 128 | printk("\n"); | 128 | printf("\n"); |
| 129 | ret = -1; | 129 | ret = -1; |
| 130 | } | 130 | } |
| 131 | 131 | ||
| @@ -183,7 +183,7 @@ static void __init check_sysemu(void) | |||
| 183 | void *stack; | 183 | void *stack; |
| 184 | int pid, n, status, count=0; | 184 | int pid, n, status, count=0; |
| 185 | 185 | ||
| 186 | printk("Checking syscall emulation patch for ptrace..."); | 186 | printf("Checking syscall emulation patch for ptrace..."); |
| 187 | sysemu_supported = 0; | 187 | sysemu_supported = 0; |
| 188 | pid = start_ptraced_child(&stack); | 188 | pid = start_ptraced_child(&stack); |
| 189 | 189 | ||
| @@ -207,10 +207,10 @@ static void __init check_sysemu(void) | |||
| 207 | goto fail_stopped; | 207 | goto fail_stopped; |
| 208 | 208 | ||
| 209 | sysemu_supported = 1; | 209 | sysemu_supported = 1; |
| 210 | printk("OK\n"); | 210 | printf("OK\n"); |
| 211 | set_using_sysemu(!force_sysemu_disabled); | 211 | set_using_sysemu(!force_sysemu_disabled); |
| 212 | 212 | ||
| 213 | printk("Checking advanced syscall emulation patch for ptrace..."); | 213 | printf("Checking advanced syscall emulation patch for ptrace..."); |
| 214 | pid = start_ptraced_child(&stack); | 214 | pid = start_ptraced_child(&stack); |
| 215 | 215 | ||
| 216 | if(ptrace(PTRACE_OLDSETOPTIONS, pid, 0, | 216 | if(ptrace(PTRACE_OLDSETOPTIONS, pid, 0, |
| @@ -246,7 +246,7 @@ static void __init check_sysemu(void) | |||
| 246 | goto fail_stopped; | 246 | goto fail_stopped; |
| 247 | 247 | ||
| 248 | sysemu_supported = 2; | 248 | sysemu_supported = 2; |
| 249 | printk("OK\n"); | 249 | printf("OK\n"); |
| 250 | 250 | ||
| 251 | if ( !force_sysemu_disabled ) | 251 | if ( !force_sysemu_disabled ) |
| 252 | set_using_sysemu(sysemu_supported); | 252 | set_using_sysemu(sysemu_supported); |
| @@ -255,7 +255,7 @@ static void __init check_sysemu(void) | |||
| 255 | fail: | 255 | fail: |
| 256 | stop_ptraced_child(pid, stack, 1, 0); | 256 | stop_ptraced_child(pid, stack, 1, 0); |
| 257 | fail_stopped: | 257 | fail_stopped: |
| 258 | printk("missing\n"); | 258 | printf("missing\n"); |
| 259 | } | 259 | } |
| 260 | 260 | ||
| 261 | static void __init check_ptrace(void) | 261 | static void __init check_ptrace(void) |
| @@ -263,7 +263,7 @@ static void __init check_ptrace(void) | |||
| 263 | void *stack; | 263 | void *stack; |
| 264 | int pid, syscall, n, status; | 264 | int pid, syscall, n, status; |
| 265 | 265 | ||
| 266 | printk("Checking that ptrace can change system call numbers..."); | 266 | printf("Checking that ptrace can change system call numbers..."); |
| 267 | pid = start_ptraced_child(&stack); | 267 | pid = start_ptraced_child(&stack); |
| 268 | 268 | ||
| 269 | if(ptrace(PTRACE_OLDSETOPTIONS, pid, 0, (void *)PTRACE_O_TRACESYSGOOD) < 0) | 269 | if(ptrace(PTRACE_OLDSETOPTIONS, pid, 0, (void *)PTRACE_O_TRACESYSGOOD) < 0) |
| @@ -292,7 +292,7 @@ static void __init check_ptrace(void) | |||
| 292 | } | 292 | } |
| 293 | } | 293 | } |
| 294 | stop_ptraced_child(pid, stack, 0, 1); | 294 | stop_ptraced_child(pid, stack, 0, 1); |
| 295 | printk("OK\n"); | 295 | printf("OK\n"); |
| 296 | check_sysemu(); | 296 | check_sysemu(); |
| 297 | } | 297 | } |
| 298 | 298 | ||
| @@ -472,6 +472,8 @@ int can_do_skas(void) | |||
| 472 | 472 | ||
| 473 | int have_devanon = 0; | 473 | int have_devanon = 0; |
| 474 | 474 | ||
| 475 | /* Runs on boot kernel stack - already safe to use printk. */ | ||
| 476 | |||
| 475 | void check_devanon(void) | 477 | void check_devanon(void) |
| 476 | { | 478 | { |
| 477 | int fd; | 479 | int fd; |
diff --git a/arch/um/os-Linux/user_syms.c b/arch/um/os-Linux/user_syms.c index 56d3f870926b..8da6ab31152a 100644 --- a/arch/um/os-Linux/user_syms.c +++ b/arch/um/os-Linux/user_syms.c | |||
| @@ -34,6 +34,11 @@ EXPORT_SYMBOL(strstr); | |||
| 34 | int sym(void); \ | 34 | int sym(void); \ |
| 35 | EXPORT_SYMBOL(sym); | 35 | EXPORT_SYMBOL(sym); |
| 36 | 36 | ||
| 37 | extern void readdir64(void) __attribute__((weak)); | ||
| 38 | EXPORT_SYMBOL(readdir64); | ||
| 39 | extern void truncate64(void) __attribute__((weak)); | ||
| 40 | EXPORT_SYMBOL(truncate64); | ||
| 41 | |||
| 37 | #ifdef SUBARCH_i386 | 42 | #ifdef SUBARCH_i386 |
| 38 | EXPORT_SYMBOL(vsyscall_ehdr); | 43 | EXPORT_SYMBOL(vsyscall_ehdr); |
| 39 | EXPORT_SYMBOL(vsyscall_end); | 44 | EXPORT_SYMBOL(vsyscall_end); |
diff --git a/arch/um/scripts/Makefile.rules b/arch/um/scripts/Makefile.rules index b3fbf125709b..2e41cabd3d93 100644 --- a/arch/um/scripts/Makefile.rules +++ b/arch/um/scripts/Makefile.rules | |||
| @@ -21,11 +21,6 @@ define unprofile | |||
| 21 | endef | 21 | endef |
| 22 | 22 | ||
| 23 | 23 | ||
| 24 | # The stubs and unmap.o can't try to call mcount or update basic block data | ||
| 25 | define unprofile | ||
| 26 | $(patsubst -pg,,$(patsubst -fprofile-arcs -ftest-coverage,,$(1))) | ||
| 27 | endef | ||
| 28 | |||
| 29 | # cmd_make_link checks to see if the $(foo-dir) variable starts with a /. If | 24 | # cmd_make_link checks to see if the $(foo-dir) variable starts with a /. If |
| 30 | # so, it's considered to be a path relative to $(srcdir) rather than | 25 | # so, it's considered to be a path relative to $(srcdir) rather than |
| 31 | # $(srcdir)/arch/$(SUBARCH). This is because x86_64 wants to get ldt.c from | 26 | # $(srcdir)/arch/$(SUBARCH). This is because x86_64 wants to get ldt.c from |
diff --git a/arch/um/sys-i386/Makefile b/arch/um/sys-i386/Makefile index 150059dbee12..f5fd5b0156d0 100644 --- a/arch/um/sys-i386/Makefile +++ b/arch/um/sys-i386/Makefile | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | obj-y = bitops.o bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \ | 1 | obj-y := bitops.o bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \ |
| 2 | ptrace_user.o semaphore.o signal.o sigcontext.o stub.o stub_segv.o \ | 2 | ptrace_user.o semaphore.o signal.o sigcontext.o syscalls.o sysrq.o \ |
| 3 | syscalls.o sysrq.o sys_call_table.o | 3 | sys_call_table.o |
| 4 | |||
| 5 | obj-$(CONFIG_MODE_SKAS) += stub.o stub_segv.o | ||
| 4 | 6 | ||
| 5 | obj-$(CONFIG_HIGHMEM) += highmem.o | 7 | obj-$(CONFIG_HIGHMEM) += highmem.o |
| 6 | obj-$(CONFIG_MODULES) += module.o | 8 | obj-$(CONFIG_MODULES) += module.o |
diff --git a/arch/um/sys-x86_64/Makefile b/arch/um/sys-x86_64/Makefile index 00b2025427df..a351091fbd99 100644 --- a/arch/um/sys-x86_64/Makefile +++ b/arch/um/sys-x86_64/Makefile | |||
| @@ -6,8 +6,9 @@ | |||
| 6 | 6 | ||
| 7 | #XXX: why into lib-y? | 7 | #XXX: why into lib-y? |
| 8 | lib-y = bitops.o bugs.o csum-partial.o delay.o fault.o ldt.o mem.o memcpy.o \ | 8 | lib-y = bitops.o bugs.o csum-partial.o delay.o fault.o ldt.o mem.o memcpy.o \ |
| 9 | ptrace.o ptrace_user.o sigcontext.o signal.o stub.o \ | 9 | ptrace.o ptrace_user.o sigcontext.o signal.o syscalls.o \ |
| 10 | stub_segv.o syscalls.o syscall_table.o sysrq.o thunk.o | 10 | syscall_table.o sysrq.o thunk.o |
| 11 | lib-$(CONFIG_MODE_SKAS) += stub.o stub_segv.o | ||
| 11 | 12 | ||
| 12 | obj-y := ksyms.o | 13 | obj-y := ksyms.o |
| 13 | obj-$(CONFIG_MODULES) += module.o um_module.o | 14 | obj-$(CONFIG_MODULES) += module.o um_module.o |
diff --git a/arch/x86_64/mm/init.c b/arch/x86_64/mm/init.c index 286f6a624c3a..c016dfe84784 100644 --- a/arch/x86_64/mm/init.c +++ b/arch/x86_64/mm/init.c | |||
| @@ -348,7 +348,7 @@ size_zones(unsigned long *z, unsigned long *h, | |||
| 348 | } | 348 | } |
| 349 | 349 | ||
| 350 | /* Compute holes */ | 350 | /* Compute holes */ |
| 351 | w = 0; | 351 | w = start_pfn; |
| 352 | for (i = 0; i < MAX_NR_ZONES; i++) { | 352 | for (i = 0; i < MAX_NR_ZONES; i++) { |
| 353 | unsigned long s = w; | 353 | unsigned long s = w; |
| 354 | w += z[i]; | 354 | w += z[i]; |
diff --git a/arch/x86_64/mm/ioremap.c b/arch/x86_64/mm/ioremap.c index 0d260e4492f7..ae207064201e 100644 --- a/arch/x86_64/mm/ioremap.c +++ b/arch/x86_64/mm/ioremap.c | |||
| @@ -263,7 +263,7 @@ void iounmap(volatile void __iomem *addr) | |||
| 263 | addr < phys_to_virt(ISA_END_ADDRESS)) | 263 | addr < phys_to_virt(ISA_END_ADDRESS)) |
| 264 | return; | 264 | return; |
| 265 | 265 | ||
| 266 | addr = (volatile void *)(PAGE_MASK & (unsigned long __force)addr); | 266 | addr = (volatile void __iomem *)(PAGE_MASK & (unsigned long __force)addr); |
| 267 | /* Use the vm area unlocked, assuming the caller | 267 | /* Use the vm area unlocked, assuming the caller |
| 268 | ensures there isn't another iounmap for the same address | 268 | ensures there isn't another iounmap for the same address |
| 269 | in parallel. Reuse of the virtual address is prevented by | 269 | in parallel. Reuse of the virtual address is prevented by |
diff --git a/arch/x86_64/pci/Makefile b/arch/x86_64/pci/Makefile index bb34e5ef916c..a8f75a2a0f6f 100644 --- a/arch/x86_64/pci/Makefile +++ b/arch/x86_64/pci/Makefile | |||
| @@ -11,7 +11,7 @@ obj-y += fixup.o | |||
| 11 | obj-$(CONFIG_ACPI) += acpi.o | 11 | obj-$(CONFIG_ACPI) += acpi.o |
| 12 | obj-y += legacy.o irq.o common.o | 12 | obj-y += legacy.o irq.o common.o |
| 13 | # mmconfig has a 64bit special | 13 | # mmconfig has a 64bit special |
| 14 | obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o | 14 | obj-$(CONFIG_PCI_MMCONFIG) += mmconfig.o direct.o |
| 15 | 15 | ||
| 16 | obj-$(CONFIG_NUMA) += k8-bus.o | 16 | obj-$(CONFIG_NUMA) += k8-bus.o |
| 17 | 17 | ||
diff --git a/arch/x86_64/pci/mmconfig.c b/arch/x86_64/pci/mmconfig.c index 9c4f907e301c..f16c0d57c552 100644 --- a/arch/x86_64/pci/mmconfig.c +++ b/arch/x86_64/pci/mmconfig.c | |||
| @@ -18,11 +18,11 @@ static DECLARE_BITMAP(fallback_slots, 32); | |||
| 18 | /* Static virtual mapping of the MMCONFIG aperture */ | 18 | /* Static virtual mapping of the MMCONFIG aperture */ |
| 19 | struct mmcfg_virt { | 19 | struct mmcfg_virt { |
| 20 | struct acpi_table_mcfg_config *cfg; | 20 | struct acpi_table_mcfg_config *cfg; |
| 21 | char *virt; | 21 | char __iomem *virt; |
| 22 | }; | 22 | }; |
| 23 | static struct mmcfg_virt *pci_mmcfg_virt; | 23 | static struct mmcfg_virt *pci_mmcfg_virt; |
| 24 | 24 | ||
| 25 | static char *get_virt(unsigned int seg, unsigned bus) | 25 | static char __iomem *get_virt(unsigned int seg, unsigned bus) |
| 26 | { | 26 | { |
| 27 | int cfg_num = -1; | 27 | int cfg_num = -1; |
| 28 | struct acpi_table_mcfg_config *cfg; | 28 | struct acpi_table_mcfg_config *cfg; |
| @@ -43,9 +43,9 @@ static char *get_virt(unsigned int seg, unsigned bus) | |||
| 43 | } | 43 | } |
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | static char *pci_dev_base(unsigned int seg, unsigned int bus, unsigned int devfn) | 46 | static char __iomem *pci_dev_base(unsigned int seg, unsigned int bus, unsigned int devfn) |
| 47 | { | 47 | { |
| 48 | char *addr; | 48 | char __iomem *addr; |
| 49 | if (seg == 0 && bus == 0 && test_bit(PCI_SLOT(devfn), &fallback_slots)) | 49 | if (seg == 0 && bus == 0 && test_bit(PCI_SLOT(devfn), &fallback_slots)) |
| 50 | return NULL; | 50 | return NULL; |
| 51 | addr = get_virt(seg, bus); | 51 | addr = get_virt(seg, bus); |
| @@ -57,7 +57,7 @@ static char *pci_dev_base(unsigned int seg, unsigned int bus, unsigned int devfn | |||
| 57 | static int pci_mmcfg_read(unsigned int seg, unsigned int bus, | 57 | static int pci_mmcfg_read(unsigned int seg, unsigned int bus, |
| 58 | unsigned int devfn, int reg, int len, u32 *value) | 58 | unsigned int devfn, int reg, int len, u32 *value) |
| 59 | { | 59 | { |
| 60 | char *addr; | 60 | char __iomem *addr; |
| 61 | 61 | ||
| 62 | /* Why do we have this when nobody checks it. How about a BUG()!? -AK */ | 62 | /* Why do we have this when nobody checks it. How about a BUG()!? -AK */ |
| 63 | if (unlikely(!value || (bus > 255) || (devfn > 255) || (reg > 4095))) | 63 | if (unlikely(!value || (bus > 255) || (devfn > 255) || (reg > 4095))) |
| @@ -85,7 +85,7 @@ static int pci_mmcfg_read(unsigned int seg, unsigned int bus, | |||
| 85 | static int pci_mmcfg_write(unsigned int seg, unsigned int bus, | 85 | static int pci_mmcfg_write(unsigned int seg, unsigned int bus, |
| 86 | unsigned int devfn, int reg, int len, u32 value) | 86 | unsigned int devfn, int reg, int len, u32 value) |
| 87 | { | 87 | { |
| 88 | char *addr; | 88 | char __iomem *addr; |
| 89 | 89 | ||
| 90 | /* Why do we have this when nobody checks it. How about a BUG()!? -AK */ | 90 | /* Why do we have this when nobody checks it. How about a BUG()!? -AK */ |
| 91 | if (unlikely((bus > 255) || (devfn > 255) || (reg > 4095))) | 91 | if (unlikely((bus > 255) || (devfn > 255) || (reg > 4095))) |
| @@ -127,7 +127,7 @@ static __init void unreachable_devices(void) | |||
| 127 | int i; | 127 | int i; |
| 128 | for (i = 0; i < 32; i++) { | 128 | for (i = 0; i < 32; i++) { |
| 129 | u32 val1; | 129 | u32 val1; |
| 130 | char *addr; | 130 | char __iomem *addr; |
| 131 | 131 | ||
| 132 | pci_conf1_read(0, 0, PCI_DEVFN(i,0), 0, 4, &val1); | 132 | pci_conf1_read(0, 0, PCI_DEVFN(i,0), 0, 4, &val1); |
| 133 | if (val1 == 0xffffffff) | 133 | if (val1 == 0xffffffff) |
