Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6

+29 -18
+2 -2
arch/sparc/kernel/systbls.S
··· 48 48 /*135*/ .long sys_nis_syscall, sys_mkdir, sys_rmdir, sys_utimes, sys_stat64 49 49 /*140*/ .long sys_sendfile64, sys_nis_syscall, sys_futex, sys_gettid, sys_getrlimit 50 50 /*145*/ .long sys_setrlimit, sys_pivot_root, sys_prctl, sys_pciconfig_read, sys_pciconfig_write 51 - /*150*/ .long sys_nis_syscall, sys_nis_syscall, sys_nis_syscall, sys_poll, sys_getdents64 52 - /*155*/ .long sys_fcntl64, sys_ni_syscall, sys_statfs, sys_fstatfs, sys_oldumount 51 + /*150*/ .long sys_nis_syscall, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64 52 + /*155*/ .long sys_fcntl64, sys_inotify_rm_watch, sys_statfs, sys_fstatfs, sys_oldumount 53 53 /*160*/ .long sys_sched_setaffinity, sys_sched_getaffinity, sys_getdomainname, sys_setdomainname, sys_nis_syscall 54 54 /*165*/ .long sys_quotactl, sys_set_tid_address, sys_mount, sys_ustat, sys_setxattr 55 55 /*170*/ .long sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, sys_getdents
+4 -4
arch/sparc64/kernel/systbls.S
··· 50 50 .word sys_nis_syscall, sys32_mkdir, sys_rmdir, sys32_utimes, compat_sys_stat64 51 51 /*140*/ .word sys32_sendfile64, sys_nis_syscall, sys32_futex, sys_gettid, compat_sys_getrlimit 52 52 .word compat_sys_setrlimit, sys_pivot_root, sys32_prctl, sys_pciconfig_read, sys_pciconfig_write 53 - /*150*/ .word sys_nis_syscall, sys_nis_syscall, sys_nis_syscall, sys_poll, sys_getdents64 54 - .word compat_sys_fcntl64, sys_ni_syscall, compat_sys_statfs, compat_sys_fstatfs, sys_oldumount 53 + /*150*/ .word sys_nis_syscall, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64 54 + .word compat_sys_fcntl64, sys_inotify_rm_watch, compat_sys_statfs, compat_sys_fstatfs, sys_oldumount 55 55 /*160*/ .word compat_sys_sched_setaffinity, compat_sys_sched_getaffinity, sys32_getdomainname, sys32_setdomainname, sys_nis_syscall 56 56 .word sys_quotactl, sys_set_tid_address, compat_sys_mount, sys_ustat, sys32_setxattr 57 57 /*170*/ .word sys32_lsetxattr, sys32_fsetxattr, sys_getxattr, sys_lgetxattr, compat_sys_getdents ··· 116 116 .word sys_socketpair, sys_mkdir, sys_rmdir, sys_utimes, sys_stat64 117 117 /*140*/ .word sys_sendfile64, sys_getpeername, sys_futex, sys_gettid, sys_getrlimit 118 118 .word sys_setrlimit, sys_pivot_root, sys_prctl, sys_pciconfig_read, sys_pciconfig_write 119 - /*150*/ .word sys_getsockname, sys_nis_syscall, sys_nis_syscall, sys_poll, sys_getdents64 120 - .word sys_nis_syscall, sys_ni_syscall, sys_statfs, sys_fstatfs, sys_oldumount 119 + /*150*/ .word sys_getsockname, sys_inotify_init, sys_inotify_add_watch, sys_poll, sys_getdents64 120 + .word sys_nis_syscall, sys_inotify_rm_watch, sys_statfs, sys_fstatfs, sys_oldumount 121 121 /*160*/ .word sys_sched_setaffinity, sys_sched_getaffinity, sys_getdomainname, sys_setdomainname, sys_utrap_install 122 122 .word sys_quotactl, sys_set_tid_address, sys_mount, sys_ustat, sys_setxattr 123 123 /*170*/ .word sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr, sys_getdents
+17 -6
arch/sparc64/mm/init.c
··· 121 121 } 122 122 123 123 #define PG_dcache_dirty PG_arch_1 124 + #define PG_dcache_cpu_shift 24 125 + #define PG_dcache_cpu_mask (256 - 1) 126 + 127 + #if NR_CPUS > 256 128 + #error D-cache dirty tracking and thread_info->cpu need fixing for > 256 cpus 129 + #endif 124 130 125 131 #define dcache_dirty_cpu(page) \ 126 - (((page)->flags >> 24) & (NR_CPUS - 1UL)) 132 + (((page)->flags >> PG_dcache_cpu_shift) & PG_dcache_cpu_mask) 127 133 128 134 static __inline__ void set_dcache_dirty(struct page *page, int this_cpu) 129 135 { 130 136 unsigned long mask = this_cpu; 131 - unsigned long non_cpu_bits = ~((NR_CPUS - 1UL) << 24UL); 132 - mask = (mask << 24) | (1UL << PG_dcache_dirty); 137 + unsigned long non_cpu_bits; 138 + 139 + non_cpu_bits = ~(PG_dcache_cpu_mask << PG_dcache_cpu_shift); 140 + mask = (mask << PG_dcache_cpu_shift) | (1UL << PG_dcache_dirty); 141 + 133 142 __asm__ __volatile__("1:\n\t" 134 143 "ldx [%2], %%g7\n\t" 135 144 "and %%g7, %1, %%g1\n\t" ··· 160 151 __asm__ __volatile__("! test_and_clear_dcache_dirty\n" 161 152 "1:\n\t" 162 153 "ldx [%2], %%g7\n\t" 163 - "srlx %%g7, 24, %%g1\n\t" 154 + "srlx %%g7, %4, %%g1\n\t" 164 155 "and %%g1, %3, %%g1\n\t" 165 156 "cmp %%g1, %0\n\t" 166 157 "bne,pn %%icc, 2f\n\t" ··· 173 164 "2:" 174 165 : /* no outputs */ 175 166 : "r" (cpu), "r" (mask), "r" (&page->flags), 176 - "i" (NR_CPUS - 1UL) 167 + "i" (PG_dcache_cpu_mask), 168 + "i" (PG_dcache_cpu_shift) 177 169 : "g1", "g7"); 178 170 } 179 171 ··· 190 180 if (pfn_valid(pfn) && 191 181 (page = pfn_to_page(pfn), page_mapping(page)) && 192 182 ((pg_flags = page->flags) & (1UL << PG_dcache_dirty))) { 193 - int cpu = ((pg_flags >> 24) & (NR_CPUS - 1UL)); 183 + int cpu = ((pg_flags >> PG_dcache_cpu_shift) & 184 + PG_dcache_cpu_mask); 194 185 int this_cpu = get_cpu(); 195 186 196 187 /* This is just to optimize away some function calls
+3 -3
include/asm-sparc/unistd.h
··· 167 167 #define __NR_pciconfig_read 148 /* ENOSYS under SunOS */ 168 168 #define __NR_pciconfig_write 149 /* ENOSYS under SunOS */ 169 169 #define __NR_getsockname 150 /* Common */ 170 - /* #define __NR_getmsg 151 SunOS Specific */ 171 - /* #define __NR_putmsg 152 SunOS Specific */ 170 + #define __NR_inotify_init 151 /* Linux specific */ 171 + #define __NR_inotify_add_watch 152 /* Linux specific */ 172 172 #define __NR_poll 153 /* Common */ 173 173 #define __NR_getdents64 154 /* Linux specific */ 174 174 #define __NR_fcntl64 155 /* Linux sparc32 Specific */ 175 - /* #define __NR_getdirentires 156 SunOS Specific */ 175 + #define __NR_inotify_rm_watch 156 /* Linux specific */ 176 176 #define __NR_statfs 157 /* Common */ 177 177 #define __NR_fstatfs 158 /* Common */ 178 178 #define __NR_umount 159 /* Common */
+3 -3
include/asm-sparc64/unistd.h
··· 167 167 #define __NR_pciconfig_read 148 /* ENOSYS under SunOS */ 168 168 #define __NR_pciconfig_write 149 /* ENOSYS under SunOS */ 169 169 #define __NR_getsockname 150 /* Common */ 170 - /* #define __NR_getmsg 151 SunOS Specific */ 171 - /* #define __NR_putmsg 152 SunOS Specific */ 170 + #define __NR_inotify_init 151 /* Linux specific */ 171 + #define __NR_inotify_add_watch 152 /* Linux specific */ 172 172 #define __NR_poll 153 /* Common */ 173 173 #define __NR_getdents64 154 /* Linux specific */ 174 174 /* #define __NR_fcntl64 155 Linux sparc32 Specific */ 175 - /* #define __NR_getdirentries 156 SunOS Specific */ 175 + #define __NR_inotify_rm_watch 156 /* Linux specific */ 176 176 #define __NR_statfs 157 /* Common */ 177 177 #define __NR_fstatfs 158 /* Common */ 178 178 #define __NR_umount 159 /* Common */