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 4959b7a3e1e..11f996f24fd 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 2ad4aa2a153..55076a75e5b 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 d9fb819bf7c..2a8d27e18fa 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 f7f18307523..e2b42997ad3 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 6055e1427ba..055bf5d2889 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 f74b9af112d..852ea72d8c8 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 8498b5ac395..247fde76aae 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 ead6122dd06..5461d4d5ea1 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 08a08490121..4bb4d4b0f73 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 e1924cc9687..ff8bb3770c9 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 a4da715a360..e9904c74d2b 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 5b7e736f3b4..028a2b95936 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 c6d40446c2c..b631cf86ed4 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 30d8564e960..73af6267d2e 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 5d54f5f4e92..471bbaa65d1 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 5d534091262..79fdb91d725 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 46b646a6d34..27aa1842dac 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 4b433411b9e..b657f7e4476 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 e7c23e3902b..3c22ccb1851 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 5d0866707a7..751a622fb7a 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 92e42613ef0..07b6d3d2336 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 b5ba3bbd96f..509399eab6f 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 b589b196eb3..a50ce0fa924 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 2d22bf03484..bce33a38399 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 f72ced11212..91b93d917b6 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 a33583f3b0e..a606504678b 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 72ac18067ec..0377decc071 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 d8991b88dc9..5e8cc5ec6ab 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 f15e64285f9..05ccd598dd4 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 3cfb8be3ff6..56c34e7fd4e 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 1754192c69d..5c3529ceb5d 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 2a3afca453c..313d1620ae8 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 cccfc12802e..42002b742de 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 81c894acd0d..d07ae02101a 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 24814d58f9e..7dadcdb4ca4 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 38938d2e63a..346c19a949f 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 1d560390e28..731f19603ca 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 3fded69b192..c4b7ad70cd7 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 43fe382da07..cad10c5b83d 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 d0592ed54ea..bfa4aa68312 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 2af0cf0a864..467d13a0d5c 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 302efbcba70..3ab4677395f 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 563301fe5df..1eb21de9d1b 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 4f118d5cc2e..38df311e75d 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 6ba8cbbe0d3..b492b12b4a1 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 c41689c13dc..92e989f8176 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 cb37ce9124a..47b812b3bca 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 37517d49c4a..29a9e3f4376 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 56d3f870926..8da6ab31152 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 b3fbf125709..2e41cabd3d9 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 150059dbee1..f5fd5b0156d 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 00b2025427d..a351091fbd9 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 286f6a624c3..c016dfe8478 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 0d260e4492f..ae207064201 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 bb34e5ef916..a8f75a2a0f6 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 9c4f907e301..f16c0d57c55 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) |