Commit 19147d0e authored by Linus Torvalds's avatar Linus Torvalds

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 atomic64_t routine return values.
  sparc64: Fix rwsem constant bug leading to hangs.
  sparc: Hook up new fanotify and prlimit64 syscalls.
  sparc: Really fix "console=" for serial consoles.
parents 2a6a432a 86fa04b8
...@@ -25,9 +25,9 @@ extern void atomic_sub(int, atomic_t *); ...@@ -25,9 +25,9 @@ extern void atomic_sub(int, atomic_t *);
extern void atomic64_sub(int, atomic64_t *); extern void atomic64_sub(int, atomic64_t *);
extern int atomic_add_ret(int, atomic_t *); extern int atomic_add_ret(int, atomic_t *);
extern int atomic64_add_ret(int, atomic64_t *); extern long atomic64_add_ret(int, atomic64_t *);
extern int atomic_sub_ret(int, atomic_t *); extern int atomic_sub_ret(int, atomic_t *);
extern int atomic64_sub_ret(int, atomic64_t *); extern long atomic64_sub_ret(int, atomic64_t *);
#define atomic_dec_return(v) atomic_sub_ret(1, v) #define atomic_dec_return(v) atomic_sub_ret(1, v)
#define atomic64_dec_return(v) atomic64_sub_ret(1, v) #define atomic64_dec_return(v) atomic64_sub_ret(1, v)
...@@ -91,7 +91,7 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u) ...@@ -91,7 +91,7 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n))) ((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n)))
#define atomic64_xchg(v, new) (xchg(&((v)->counter), new)) #define atomic64_xchg(v, new) (xchg(&((v)->counter), new))
static inline int atomic64_add_unless(atomic64_t *v, long a, long u) static inline long atomic64_add_unless(atomic64_t *v, long a, long u)
{ {
long c, old; long c, old;
c = atomic64_read(v); c = atomic64_read(v);
......
#ifndef _SPARC_FB_H_ #ifndef _SPARC_FB_H_
#define _SPARC_FB_H_ #define _SPARC_FB_H_
#include <linux/console.h>
#include <linux/fb.h> #include <linux/fb.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <asm/page.h> #include <asm/page.h>
...@@ -18,6 +19,9 @@ static inline int fb_is_primary_device(struct fb_info *info) ...@@ -18,6 +19,9 @@ static inline int fb_is_primary_device(struct fb_info *info)
struct device *dev = info->device; struct device *dev = info->device;
struct device_node *node; struct device_node *node;
if (console_set_on_cmdline)
return 0;
node = dev->of_node; node = dev->of_node;
if (node && if (node &&
node == of_console_device) node == of_console_device)
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#define RWSEM_UNLOCKED_VALUE 0x00000000 #define RWSEM_UNLOCKED_VALUE 0x00000000
#define RWSEM_ACTIVE_BIAS 0x00000001 #define RWSEM_ACTIVE_BIAS 0x00000001
#define RWSEM_ACTIVE_MASK 0x0000ffff #define RWSEM_ACTIVE_MASK 0x0000ffff
#define RWSEM_WAITING_BIAS 0xffff0000 #define RWSEM_WAITING_BIAS (-0x00010000)
#define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS
#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) #define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS)
......
...@@ -397,8 +397,11 @@ ...@@ -397,8 +397,11 @@
#define __NR_rt_tgsigqueueinfo 326 #define __NR_rt_tgsigqueueinfo 326
#define __NR_perf_event_open 327 #define __NR_perf_event_open 327
#define __NR_recvmmsg 328 #define __NR_recvmmsg 328
#define __NR_fanotify_init 329
#define __NR_fanotify_mark 330
#define __NR_prlimit64 331
#define NR_syscalls 329 #define NR_syscalls 332
#ifdef __32bit_syscall_numbers__ #ifdef __32bit_syscall_numbers__
/* Sparc 32-bit only has the "setresuid32", "getresuid32" variants, /* Sparc 32-bit only has the "setresuid32", "getresuid32" variants,
......
...@@ -330,6 +330,15 @@ do_sys_accept4: /* sys_accept4(int, struct sockaddr *, int *, int) */ ...@@ -330,6 +330,15 @@ do_sys_accept4: /* sys_accept4(int, struct sockaddr *, int *, int) */
nop nop
nop nop
.globl sys32_fanotify_mark
sys32_fanotify_mark:
sethi %hi(sys_fanotify_mark), %g1
sllx %o2, 32, %o2
or %o2, %o3, %o2
mov %o4, %o3
jmpl %g1 + %lo(sys_fanotify_mark), %g0
mov %o5, %o4
.section __ex_table,"a" .section __ex_table,"a"
.align 4 .align 4
.word 1b, __retl_efault, 2b, __retl_efault .word 1b, __retl_efault, 2b, __retl_efault
......
...@@ -82,5 +82,6 @@ sys_call_table: ...@@ -82,5 +82,6 @@ sys_call_table:
/*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate /*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate
/*315*/ .long sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1 /*315*/ .long sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1
/*320*/ .long sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv /*320*/ .long sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv
/*325*/ .long sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg /*325*/ .long sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init
/*330*/ .long sys_fanotify_mark, sys_prlimit64
...@@ -83,7 +83,8 @@ sys_call_table32: ...@@ -83,7 +83,8 @@ sys_call_table32:
/*310*/ .word compat_sys_utimensat, compat_sys_signalfd, sys_timerfd_create, sys_eventfd, compat_sys_fallocate /*310*/ .word compat_sys_utimensat, compat_sys_signalfd, sys_timerfd_create, sys_eventfd, compat_sys_fallocate
.word compat_sys_timerfd_settime, compat_sys_timerfd_gettime, compat_sys_signalfd4, sys_eventfd2, sys_epoll_create1 .word compat_sys_timerfd_settime, compat_sys_timerfd_gettime, compat_sys_signalfd4, sys_eventfd2, sys_epoll_create1
/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, compat_sys_preadv /*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, compat_sys_preadv
.word compat_sys_pwritev, compat_sys_rt_tgsigqueueinfo, sys_perf_event_open, compat_sys_recvmmsg .word compat_sys_pwritev, compat_sys_rt_tgsigqueueinfo, sys_perf_event_open, compat_sys_recvmmsg, sys_fanotify_init
/*330*/ .word sys32_fanotify_mark, sys_prlimit64
#endif /* CONFIG_COMPAT */ #endif /* CONFIG_COMPAT */
...@@ -158,4 +159,5 @@ sys_call_table: ...@@ -158,4 +159,5 @@ sys_call_table:
/*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate /*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate
.word sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1 .word sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1
/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv /*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv
.word sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg .word sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init
/*330*/ .word sys_fanotify_mark, sys_prlimit64
...@@ -55,7 +55,12 @@ EXPORT_SYMBOL(sunserial_unregister_minors); ...@@ -55,7 +55,12 @@ EXPORT_SYMBOL(sunserial_unregister_minors);
int sunserial_console_match(struct console *con, struct device_node *dp, int sunserial_console_match(struct console *con, struct device_node *dp,
struct uart_driver *drv, int line, bool ignore_line) struct uart_driver *drv, int line, bool ignore_line)
{ {
if (!con || of_console_device != dp) if (!con)
return 0;
drv->cons = con;
if (of_console_device != dp)
return 0; return 0;
if (!ignore_line) { if (!ignore_line) {
...@@ -69,12 +74,10 @@ int sunserial_console_match(struct console *con, struct device_node *dp, ...@@ -69,12 +74,10 @@ int sunserial_console_match(struct console *con, struct device_node *dp,
return 0; return 0;
} }
con->index = line; if (!console_set_on_cmdline) {
drv->cons = con; con->index = line;
if (!console_set_on_cmdline)
add_preferred_console(con->name, line, NULL); add_preferred_console(con->name, line, NULL);
}
return 1; return 1;
} }
EXPORT_SYMBOL(sunserial_console_match); EXPORT_SYMBOL(sunserial_console_match);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment