diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-06 21:18:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-06 21:18:43 -0400 |
commit | bd1d23a81083f03ac63afbb7656b87eed04d8953 (patch) | |
tree | 61845e5e70f971e0eafc7881db8cc9fb1e85dc73 | |
parent | c0a18111e571138747a98af18b3a2124df56a0d1 (diff) | |
parent | d45100f7b69e3d9cd0cd5e956b6ac2c78d460d07 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
sparc64: Fix initrd regression.
usb: Sparc build fix, make USB_ISP1760_OF depend on PPC_OF
sparc64: remove online_page()
sparc64: use compat_sys_utimes instead of home-grown local copy.
sbus: Fix bpp driver build.
sparc video: make blank use proper constant
Revert "[SPARC64]: Wrap SMP IPIs with irq_enter()/irq_exit()."
sparc: tcx.c remove unnecessary function
-rw-r--r-- | arch/sparc64/kernel/smp.c | 27 | ||||
-rw-r--r-- | arch/sparc64/kernel/sys_sparc32.c | 31 | ||||
-rw-r--r-- | arch/sparc64/kernel/systbls.S | 2 | ||||
-rw-r--r-- | arch/sparc64/mm/init.c | 16 | ||||
-rw-r--r-- | drivers/sbus/char/bpp.c | 2 | ||||
-rw-r--r-- | drivers/usb/host/Kconfig | 2 | ||||
-rw-r--r-- | drivers/video/bw2.c | 2 | ||||
-rw-r--r-- | drivers/video/cg3.c | 2 | ||||
-rw-r--r-- | drivers/video/cg6.c | 2 | ||||
-rw-r--r-- | drivers/video/ffb.c | 2 | ||||
-rw-r--r-- | drivers/video/leo.c | 2 | ||||
-rw-r--r-- | drivers/video/p9100.c | 2 | ||||
-rw-r--r-- | drivers/video/tcx.c | 20 |
13 files changed, 24 insertions, 88 deletions
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index 3aba47624df4..0d6403a630ac 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
@@ -865,21 +865,14 @@ void smp_call_function_client(int irq, struct pt_regs *regs) | |||
865 | void *info = call_data->info; | 865 | void *info = call_data->info; |
866 | 866 | ||
867 | clear_softint(1 << irq); | 867 | clear_softint(1 << irq); |
868 | |||
869 | irq_enter(); | ||
870 | |||
871 | if (!call_data->wait) { | ||
872 | /* let initiator proceed after getting data */ | ||
873 | atomic_inc(&call_data->finished); | ||
874 | } | ||
875 | |||
876 | func(info); | ||
877 | |||
878 | irq_exit(); | ||
879 | |||
880 | if (call_data->wait) { | 868 | if (call_data->wait) { |
881 | /* let initiator proceed only after completion */ | 869 | /* let initiator proceed only after completion */ |
870 | func(info); | ||
882 | atomic_inc(&call_data->finished); | 871 | atomic_inc(&call_data->finished); |
872 | } else { | ||
873 | /* let initiator proceed after getting data */ | ||
874 | atomic_inc(&call_data->finished); | ||
875 | func(info); | ||
883 | } | 876 | } |
884 | } | 877 | } |
885 | 878 | ||
@@ -1041,9 +1034,7 @@ void smp_receive_signal(int cpu) | |||
1041 | 1034 | ||
1042 | void smp_receive_signal_client(int irq, struct pt_regs *regs) | 1035 | void smp_receive_signal_client(int irq, struct pt_regs *regs) |
1043 | { | 1036 | { |
1044 | irq_enter(); | ||
1045 | clear_softint(1 << irq); | 1037 | clear_softint(1 << irq); |
1046 | irq_exit(); | ||
1047 | } | 1038 | } |
1048 | 1039 | ||
1049 | void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) | 1040 | void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) |
@@ -1051,8 +1042,6 @@ void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) | |||
1051 | struct mm_struct *mm; | 1042 | struct mm_struct *mm; |
1052 | unsigned long flags; | 1043 | unsigned long flags; |
1053 | 1044 | ||
1054 | irq_enter(); | ||
1055 | |||
1056 | clear_softint(1 << irq); | 1045 | clear_softint(1 << irq); |
1057 | 1046 | ||
1058 | /* See if we need to allocate a new TLB context because | 1047 | /* See if we need to allocate a new TLB context because |
@@ -1072,8 +1061,6 @@ void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) | |||
1072 | load_secondary_context(mm); | 1061 | load_secondary_context(mm); |
1073 | __flush_tlb_mm(CTX_HWBITS(mm->context), | 1062 | __flush_tlb_mm(CTX_HWBITS(mm->context), |
1074 | SECONDARY_CONTEXT); | 1063 | SECONDARY_CONTEXT); |
1075 | |||
1076 | irq_exit(); | ||
1077 | } | 1064 | } |
1078 | 1065 | ||
1079 | void smp_new_mmu_context_version(void) | 1066 | void smp_new_mmu_context_version(void) |
@@ -1239,8 +1226,6 @@ void smp_penguin_jailcell(int irq, struct pt_regs *regs) | |||
1239 | { | 1226 | { |
1240 | clear_softint(1 << irq); | 1227 | clear_softint(1 << irq); |
1241 | 1228 | ||
1242 | irq_enter(); | ||
1243 | |||
1244 | preempt_disable(); | 1229 | preempt_disable(); |
1245 | 1230 | ||
1246 | __asm__ __volatile__("flushw"); | 1231 | __asm__ __volatile__("flushw"); |
@@ -1253,8 +1238,6 @@ void smp_penguin_jailcell(int irq, struct pt_regs *regs) | |||
1253 | prom_world(0); | 1238 | prom_world(0); |
1254 | 1239 | ||
1255 | preempt_enable(); | 1240 | preempt_enable(); |
1256 | |||
1257 | irq_exit(); | ||
1258 | } | 1241 | } |
1259 | 1242 | ||
1260 | /* /proc/profile writes can call this, don't __init it please. */ | 1243 | /* /proc/profile writes can call this, don't __init it please. */ |
diff --git a/arch/sparc64/kernel/sys_sparc32.c b/arch/sparc64/kernel/sys_sparc32.c index 161ce4710fe7..1aa4288125f2 100644 --- a/arch/sparc64/kernel/sys_sparc32.c +++ b/arch/sparc64/kernel/sys_sparc32.c | |||
@@ -236,13 +236,6 @@ asmlinkage long sys32_getegid16(void) | |||
236 | 236 | ||
237 | /* 32-bit timeval and related flotsam. */ | 237 | /* 32-bit timeval and related flotsam. */ |
238 | 238 | ||
239 | static long get_tv32(struct timeval *o, struct compat_timeval __user *i) | ||
240 | { | ||
241 | return (!access_ok(VERIFY_READ, i, sizeof(*i)) || | ||
242 | (__get_user(o->tv_sec, &i->tv_sec) | | ||
243 | __get_user(o->tv_usec, &i->tv_usec))); | ||
244 | } | ||
245 | |||
246 | static inline long put_tv32(struct compat_timeval __user *o, struct timeval *i) | 239 | static inline long put_tv32(struct compat_timeval __user *o, struct timeval *i) |
247 | { | 240 | { |
248 | return (!access_ok(VERIFY_WRITE, o, sizeof(*o)) || | 241 | return (!access_ok(VERIFY_WRITE, o, sizeof(*o)) || |
@@ -757,30 +750,6 @@ asmlinkage long sys32_settimeofday(struct compat_timeval __user *tv, | |||
757 | return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL); | 750 | return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL); |
758 | } | 751 | } |
759 | 752 | ||
760 | asmlinkage long sys32_utimes(char __user *filename, | ||
761 | struct compat_timeval __user *tvs) | ||
762 | { | ||
763 | struct timespec tv[2]; | ||
764 | |||
765 | if (tvs) { | ||
766 | struct timeval ktvs[2]; | ||
767 | if (get_tv32(&ktvs[0], tvs) || | ||
768 | get_tv32(&ktvs[1], 1+tvs)) | ||
769 | return -EFAULT; | ||
770 | |||
771 | if (ktvs[0].tv_usec < 0 || ktvs[0].tv_usec >= 1000000 || | ||
772 | ktvs[1].tv_usec < 0 || ktvs[1].tv_usec >= 1000000) | ||
773 | return -EINVAL; | ||
774 | |||
775 | tv[0].tv_sec = ktvs[0].tv_sec; | ||
776 | tv[0].tv_nsec = 1000 * ktvs[0].tv_usec; | ||
777 | tv[1].tv_sec = ktvs[1].tv_sec; | ||
778 | tv[1].tv_nsec = 1000 * ktvs[1].tv_usec; | ||
779 | } | ||
780 | |||
781 | return do_utimes(AT_FDCWD, filename, tvs ? tv : NULL, 0); | ||
782 | } | ||
783 | |||
784 | /* These are here just in case some old sparc32 binary calls it. */ | 753 | /* These are here just in case some old sparc32 binary calls it. */ |
785 | asmlinkage long sys32_pause(void) | 754 | asmlinkage long sys32_pause(void) |
786 | { | 755 | { |
diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S index a4fef2ba1ae1..8b5282d433c4 100644 --- a/arch/sparc64/kernel/systbls.S +++ b/arch/sparc64/kernel/systbls.S | |||
@@ -45,7 +45,7 @@ sys_call_table32: | |||
45 | /*120*/ .word compat_sys_readv, compat_sys_writev, sys32_settimeofday, sys32_fchown16, sys_fchmod | 45 | /*120*/ .word compat_sys_readv, compat_sys_writev, sys32_settimeofday, sys32_fchown16, sys_fchmod |
46 | .word sys_nis_syscall, sys32_setreuid16, sys32_setregid16, sys_rename, sys_truncate | 46 | .word sys_nis_syscall, sys32_setreuid16, sys32_setregid16, sys_rename, sys_truncate |
47 | /*130*/ .word sys_ftruncate, sys_flock, compat_sys_lstat64, sys_nis_syscall, sys_nis_syscall | 47 | /*130*/ .word sys_ftruncate, sys_flock, compat_sys_lstat64, sys_nis_syscall, sys_nis_syscall |
48 | .word sys_nis_syscall, sys32_mkdir, sys_rmdir, sys32_utimes, compat_sys_stat64 | 48 | .word sys_nis_syscall, sys32_mkdir, sys_rmdir, compat_sys_utimes, compat_sys_stat64 |
49 | /*140*/ .word sys32_sendfile64, sys_nis_syscall, sys32_futex, sys_gettid, compat_sys_getrlimit | 49 | /*140*/ .word sys32_sendfile64, sys_nis_syscall, sys32_futex, sys_gettid, compat_sys_getrlimit |
50 | .word compat_sys_setrlimit, sys_pivot_root, sys32_prctl, sys_pciconfig_read, sys_pciconfig_write | 50 | .word compat_sys_setrlimit, sys_pivot_root, sys32_prctl, sys_pciconfig_read, sys_pciconfig_write |
51 | /*150*/ .word sys_nis_syscall, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64 | 51 | /*150*/ .word sys_nis_syscall, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64 |
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c index 4cad0b32b0af..ec3e2c72302a 100644 --- a/arch/sparc64/mm/init.c +++ b/arch/sparc64/mm/init.c | |||
@@ -771,6 +771,9 @@ static void __init find_ramdisk(unsigned long phys_base) | |||
771 | initrd_end = ramdisk_image + sparc_ramdisk_size; | 771 | initrd_end = ramdisk_image + sparc_ramdisk_size; |
772 | 772 | ||
773 | lmb_reserve(initrd_start, initrd_end); | 773 | lmb_reserve(initrd_start, initrd_end); |
774 | |||
775 | initrd_start += PAGE_OFFSET; | ||
776 | initrd_end += PAGE_OFFSET; | ||
774 | } | 777 | } |
775 | #endif | 778 | #endif |
776 | } | 779 | } |
@@ -2362,16 +2365,3 @@ void __flush_tlb_all(void) | |||
2362 | __asm__ __volatile__("wrpr %0, 0, %%pstate" | 2365 | __asm__ __volatile__("wrpr %0, 0, %%pstate" |
2363 | : : "r" (pstate)); | 2366 | : : "r" (pstate)); |
2364 | } | 2367 | } |
2365 | |||
2366 | #ifdef CONFIG_MEMORY_HOTPLUG | ||
2367 | |||
2368 | void online_page(struct page *page) | ||
2369 | { | ||
2370 | ClearPageReserved(page); | ||
2371 | init_page_count(page); | ||
2372 | __free_page(page); | ||
2373 | totalram_pages++; | ||
2374 | num_physpages++; | ||
2375 | } | ||
2376 | |||
2377 | #endif /* CONFIG_MEMORY_HOTPLUG */ | ||
diff --git a/drivers/sbus/char/bpp.c b/drivers/sbus/char/bpp.c index 4fab0c23814c..b87037ec9805 100644 --- a/drivers/sbus/char/bpp.c +++ b/drivers/sbus/char/bpp.c | |||
@@ -41,7 +41,7 @@ | |||
41 | #define BPP_DELAY 100 | 41 | #define BPP_DELAY 100 |
42 | 42 | ||
43 | static const unsigned BPP_MAJOR = LP_MAJOR; | 43 | static const unsigned BPP_MAJOR = LP_MAJOR; |
44 | static const char* dev_name = "bpp"; | 44 | static const char *bpp_dev_name = "bpp"; |
45 | 45 | ||
46 | /* When switching from compatibility to a mode where I can read, try | 46 | /* When switching from compatibility to a mode where I can read, try |
47 | the following mode first. */ | 47 | the following mode first. */ |
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig index 33b467a8352d..1ef6df395e0c 100644 --- a/drivers/usb/host/Kconfig +++ b/drivers/usb/host/Kconfig | |||
@@ -129,7 +129,7 @@ config USB_ISP1760_PCI | |||
129 | 129 | ||
130 | config USB_ISP1760_OF | 130 | config USB_ISP1760_OF |
131 | bool "Support for the OF platform bus" | 131 | bool "Support for the OF platform bus" |
132 | depends on USB_ISP1760_HCD && OF | 132 | depends on USB_ISP1760_HCD && PPC_OF |
133 | ---help--- | 133 | ---help--- |
134 | Enables support for the device present on the PowerPC | 134 | Enables support for the device present on the PowerPC |
135 | OpenFirmware platform bus. | 135 | OpenFirmware platform bus. |
diff --git a/drivers/video/bw2.c b/drivers/video/bw2.c index 275d9dab0c61..79f85dc402d6 100644 --- a/drivers/video/bw2.c +++ b/drivers/video/bw2.c | |||
@@ -329,7 +329,7 @@ static int __devinit bw2_probe(struct of_device *op, const struct of_device_id * | |||
329 | if (!info->screen_base) | 329 | if (!info->screen_base) |
330 | goto out_unmap_regs; | 330 | goto out_unmap_regs; |
331 | 331 | ||
332 | bw2_blank(0, info); | 332 | bw2_blank(FB_BLANK_UNBLANK, info); |
333 | 333 | ||
334 | bw2_init_fix(info, linebytes); | 334 | bw2_init_fix(info, linebytes); |
335 | 335 | ||
diff --git a/drivers/video/cg3.c b/drivers/video/cg3.c index 010ea53978f8..e31e26a6bb79 100644 --- a/drivers/video/cg3.c +++ b/drivers/video/cg3.c | |||
@@ -398,7 +398,7 @@ static int __devinit cg3_probe(struct of_device *op, | |||
398 | if (!info->screen_base) | 398 | if (!info->screen_base) |
399 | goto out_unmap_regs; | 399 | goto out_unmap_regs; |
400 | 400 | ||
401 | cg3_blank(0, info); | 401 | cg3_blank(FB_BLANK_UNBLANK, info); |
402 | 402 | ||
403 | if (!of_find_property(dp, "width", NULL)) { | 403 | if (!of_find_property(dp, "width", NULL)) { |
404 | err = cg3_do_default_mode(par); | 404 | err = cg3_do_default_mode(par); |
diff --git a/drivers/video/cg6.c b/drivers/video/cg6.c index fc90db6da65a..8000bccecdc6 100644 --- a/drivers/video/cg6.c +++ b/drivers/video/cg6.c | |||
@@ -767,7 +767,7 @@ static int __devinit cg6_probe(struct of_device *op, | |||
767 | 767 | ||
768 | cg6_bt_init(par); | 768 | cg6_bt_init(par); |
769 | cg6_chip_init(info); | 769 | cg6_chip_init(info); |
770 | cg6_blank(0, info); | 770 | cg6_blank(FB_BLANK_UNBLANK, info); |
771 | 771 | ||
772 | if (fb_alloc_cmap(&info->cmap, 256, 0)) | 772 | if (fb_alloc_cmap(&info->cmap, 256, 0)) |
773 | goto out_unmap_regs; | 773 | goto out_unmap_regs; |
diff --git a/drivers/video/ffb.c b/drivers/video/ffb.c index 93dca3e2aa50..0f42a696d176 100644 --- a/drivers/video/ffb.c +++ b/drivers/video/ffb.c | |||
@@ -987,7 +987,7 @@ static int __devinit ffb_probe(struct of_device *op, | |||
987 | * chosen console, it will have video outputs off in | 987 | * chosen console, it will have video outputs off in |
988 | * the DAC. | 988 | * the DAC. |
989 | */ | 989 | */ |
990 | ffb_blank(0, info); | 990 | ffb_blank(FB_BLANK_UNBLANK, info); |
991 | 991 | ||
992 | if (fb_alloc_cmap(&info->cmap, 256, 0)) | 992 | if (fb_alloc_cmap(&info->cmap, 256, 0)) |
993 | goto out_unmap_dac; | 993 | goto out_unmap_dac; |
diff --git a/drivers/video/leo.c b/drivers/video/leo.c index f3160fc29795..fb129928d5d5 100644 --- a/drivers/video/leo.c +++ b/drivers/video/leo.c | |||
@@ -601,7 +601,7 @@ static int __devinit leo_probe(struct of_device *op, const struct of_device_id * | |||
601 | leo_init_wids(info); | 601 | leo_init_wids(info); |
602 | leo_init_hw(info); | 602 | leo_init_hw(info); |
603 | 603 | ||
604 | leo_blank(0, info); | 604 | leo_blank(FB_BLANK_UNBLANK, info); |
605 | 605 | ||
606 | if (fb_alloc_cmap(&info->cmap, 256, 0)) | 606 | if (fb_alloc_cmap(&info->cmap, 256, 0)) |
607 | goto out_unmap_regs; | 607 | goto out_unmap_regs; |
diff --git a/drivers/video/p9100.c b/drivers/video/p9100.c index c95874fe9076..676ffb06d1c7 100644 --- a/drivers/video/p9100.c +++ b/drivers/video/p9100.c | |||
@@ -295,7 +295,7 @@ static int __devinit p9100_probe(struct of_device *op, const struct of_device_id | |||
295 | if (!info->screen_base) | 295 | if (!info->screen_base) |
296 | goto out_unmap_regs; | 296 | goto out_unmap_regs; |
297 | 297 | ||
298 | p9100_blank(0, info); | 298 | p9100_blank(FB_BLANK_UNBLANK, info); |
299 | 299 | ||
300 | if (fb_alloc_cmap(&info->cmap, 256, 0)) | 300 | if (fb_alloc_cmap(&info->cmap, 256, 0)) |
301 | goto out_unmap_screen; | 301 | goto out_unmap_screen; |
diff --git a/drivers/video/tcx.c b/drivers/video/tcx.c index a71774305772..44e8c27ed0fc 100644 --- a/drivers/video/tcx.c +++ b/drivers/video/tcx.c | |||
@@ -84,7 +84,7 @@ struct tcx_tec { | |||
84 | 84 | ||
85 | struct tcx_thc { | 85 | struct tcx_thc { |
86 | u32 thc_rev; | 86 | u32 thc_rev; |
87 | u32 thc_pad0[511]; | 87 | u32 thc_pad0[511]; |
88 | u32 thc_hs; /* hsync timing */ | 88 | u32 thc_hs; /* hsync timing */ |
89 | u32 thc_hsdvs; | 89 | u32 thc_hsdvs; |
90 | u32 thc_hd; | 90 | u32 thc_hd; |
@@ -126,10 +126,10 @@ struct tcx_par { | |||
126 | }; | 126 | }; |
127 | 127 | ||
128 | /* Reset control plane so that WID is 8-bit plane. */ | 128 | /* Reset control plane so that WID is 8-bit plane. */ |
129 | static void __tcx_set_control_plane (struct tcx_par *par) | 129 | static void __tcx_set_control_plane(struct tcx_par *par) |
130 | { | 130 | { |
131 | u32 __iomem *p, *pend; | 131 | u32 __iomem *p, *pend; |
132 | 132 | ||
133 | if (par->lowdepth) | 133 | if (par->lowdepth) |
134 | return; | 134 | return; |
135 | 135 | ||
@@ -143,8 +143,8 @@ static void __tcx_set_control_plane (struct tcx_par *par) | |||
143 | sbus_writel(tmp, p); | 143 | sbus_writel(tmp, p); |
144 | } | 144 | } |
145 | } | 145 | } |
146 | 146 | ||
147 | static void tcx_reset (struct fb_info *info) | 147 | static void tcx_reset(struct fb_info *info) |
148 | { | 148 | { |
149 | struct tcx_par *par = (struct tcx_par *) info->par; | 149 | struct tcx_par *par = (struct tcx_par *) info->par; |
150 | unsigned long flags; | 150 | unsigned long flags; |
@@ -365,7 +365,8 @@ static void tcx_unmap_regs(struct of_device *op, struct fb_info *info, | |||
365 | info->screen_base, par->fbsize); | 365 | info->screen_base, par->fbsize); |
366 | } | 366 | } |
367 | 367 | ||
368 | static int __devinit tcx_init_one(struct of_device *op) | 368 | static int __devinit tcx_probe(struct of_device *op, |
369 | const struct of_device_id *match) | ||
369 | { | 370 | { |
370 | struct device_node *dp = op->node; | 371 | struct device_node *dp = op->node; |
371 | struct fb_info *info; | 372 | struct fb_info *info; |
@@ -488,13 +489,6 @@ out_err: | |||
488 | return err; | 489 | return err; |
489 | } | 490 | } |
490 | 491 | ||
491 | static int __devinit tcx_probe(struct of_device *dev, const struct of_device_id *match) | ||
492 | { | ||
493 | struct of_device *op = to_of_device(&dev->dev); | ||
494 | |||
495 | return tcx_init_one(op); | ||
496 | } | ||
497 | |||
498 | static int __devexit tcx_remove(struct of_device *op) | 492 | static int __devexit tcx_remove(struct of_device *op) |
499 | { | 493 | { |
500 | struct fb_info *info = dev_get_drvdata(&op->dev); | 494 | struct fb_info *info = dev_get_drvdata(&op->dev); |