Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6

* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6:
[PARISC] make ptr_to_pide() static
[PARISC] head.S: section mismatch fixes
[PARISC] add back Crestone Peak cpu
[PARISC] futex: special case cmpxchg NULL in kernel space
[PARISC] clean up show_stack
[PARISC] add pa8900 CPUs to hardware inventory
[PARISC] clean up include/asm-parisc/elf.h
[PARISC] move defconfig to arch/parisc/configs/
[PARISC] add back AD1889 MAINTAINERS entry
[PARISC] pdc_console: fix bizarre panic on boot
[PARISC] dump_stack in show_regs
[PARISC] pdc_stable: fix compile errors
[PARISC] remove unused pdc_iodc_printf function
[PARISC] bump __NR_syscalls
[PARISC] unbreak pgalloc.h
[PARISC] move VMALLOC_* definitions to fixmap.h
[PARISC] wire up timerfd syscalls
[PARISC] remove old timerfd syscall

+125 -65
+9
MAINTAINERS
··· 266 266 W: http://www.lesswatts.org/projects/acpi/ 267 267 S: Maintained 268 268 269 + AD1889 ALSA SOUND DRIVER 270 + P: Kyle McMartin 271 + M: kyle@parisc-linux.org 272 + P: Thibaut Varene 273 + M: T-Bone@parisc-linux.org 274 + W: http://wiki.parisc-linux.org/AD1889 275 + L: linux-parisc@vger.kernel.org 276 + S: Maintained 277 + 269 278 ADM1025 HARDWARE MONITOR DRIVER 270 279 P: Jean Delvare 271 280 M: khali@linux-fr.org
+3
arch/parisc/Makefile
··· 16 16 # Modified for PA-RISC Linux by Paul Lahaie, Alex deVries, 17 17 # Mike Shaver, Helge Deller and Martin K. Petersen 18 18 # 19 + 20 + KBUILD_DEFCONFIG := default_defconfig 21 + 19 22 NM = sh $(srctree)/arch/parisc/nm 20 23 CHECKFLAGS += -D__hppa__=1 21 24
arch/parisc/defconfig arch/parisc/configs/default_defconfig
+17 -10
arch/parisc/kernel/firmware.c
··· 1080 1080 spin_unlock_irqrestore(&pdc_lock, flags); 1081 1081 } 1082 1082 1083 + /* locked by pdc_console_lock */ 1084 + static int __attribute__((aligned(8))) iodc_retbuf[32]; 1085 + static char __attribute__((aligned(64))) iodc_dbuf[4096]; 1083 1086 1084 1087 /** 1085 1088 * pdc_iodc_print - Console print using IODC. ··· 1094 1091 * Since the HP console requires CR+LF to perform a 'newline', we translate 1095 1092 * "\n" to "\r\n". 1096 1093 */ 1097 - int pdc_iodc_print(unsigned char *str, unsigned count) 1094 + int pdc_iodc_print(const unsigned char *str, unsigned count) 1098 1095 { 1099 - /* XXX Should we spinlock posx usage */ 1100 1096 static int posx; /* for simple TAB-Simulation... */ 1101 - int __attribute__((aligned(8))) iodc_retbuf[32]; 1102 - char __attribute__((aligned(64))) iodc_dbuf[4096]; 1103 1097 unsigned int i; 1104 1098 unsigned long flags; 1105 1099 1106 - memset(iodc_dbuf, 0, 4096); 1107 - for (i = 0; i < count && i < 2048;) { 1100 + for (i = 0; i < count && i < 79;) { 1108 1101 switch(str[i]) { 1109 1102 case '\n': 1110 1103 iodc_dbuf[i+0] = '\r'; 1111 1104 iodc_dbuf[i+1] = '\n'; 1112 1105 i += 2; 1113 1106 posx = 0; 1114 - break; 1107 + goto print; 1115 1108 case '\t': 1116 1109 while (posx & 7) { 1117 1110 iodc_dbuf[i] = ' '; ··· 1123 1124 } 1124 1125 } 1125 1126 1127 + /* if we're at the end of line, and not already inserting a newline, 1128 + * insert one anyway. iodc console doesn't claim to support >79 char 1129 + * lines. don't account for this in the return value. 1130 + */ 1131 + if (i == 79 && iodc_dbuf[i-1] != '\n') { 1132 + iodc_dbuf[i+0] = '\r'; 1133 + iodc_dbuf[i+1] = '\n'; 1134 + } 1135 + 1136 + print: 1126 1137 spin_lock_irqsave(&pdc_lock, flags); 1127 1138 real32_call(PAGE0->mem_cons.iodc_io, 1128 1139 (unsigned long)PAGE0->mem_cons.hpa, ENTRY_IO_COUT, ··· 1151 1142 */ 1152 1143 int pdc_iodc_getc(void) 1153 1144 { 1154 - unsigned long flags; 1155 - static int __attribute__((aligned(8))) iodc_retbuf[32]; 1156 - static char __attribute__((aligned(64))) iodc_dbuf[4096]; 1157 1145 int ch; 1158 1146 int status; 1147 + unsigned long flags; 1159 1148 1160 1149 /* Bail if no console input device. */ 1161 1150 if (!PAGE0->mem_kbd.iodc_io)
+12 -1
arch/parisc/kernel/hardware.c
··· 274 274 {HPHW_NPROC,0x887,0x4,0x91,"Storm Peak Slow"}, 275 275 {HPHW_NPROC,0x888,0x4,0x91,"Storm Peak Fast DC-"}, 276 276 {HPHW_NPROC,0x889,0x4,0x91,"Storm Peak Fast"}, 277 - {HPHW_NPROC,0x88A,0x4,0x91,"Crestone Peak"}, 277 + {HPHW_NPROC,0x88A,0x4,0x91,"Crestone Peak Slow"}, 278 + {HPHW_NPROC,0x88C,0x4,0x91,"Orca Mako+"}, 279 + {HPHW_NPROC,0x88D,0x4,0x91,"Rainier/Medel Mako+ Slow"}, 280 + {HPHW_NPROC,0x88E,0x4,0x91,"Rainier/Medel Mako+ Fast"}, 281 + {HPHW_NPROC,0x894,0x4,0x91,"Mt. Hamilton Fast Mako+"}, 282 + {HPHW_NPROC,0x895,0x4,0x91,"Storm Peak Slow Mako+"}, 283 + {HPHW_NPROC,0x896,0x4,0x91,"Storm Peak Fast Mako+"}, 284 + {HPHW_NPROC,0x897,0x4,0x91,"Storm Peak DC- Slow Mako+"}, 285 + {HPHW_NPROC,0x898,0x4,0x91,"Storm Peak DC- Fast Mako+"}, 286 + {HPHW_NPROC,0x899,0x4,0x91,"Mt. Hamilton Slow Mako+"}, 287 + {HPHW_NPROC,0x89B,0x4,0x91,"Crestone Peak Mako+ Slow"}, 288 + {HPHW_NPROC,0x89C,0x4,0x91,"Crestone Peak Mako+ Fast"}, 278 289 {HPHW_A_DIRECT, 0x004, 0x0000D, 0x00, "Arrakis MUX"}, 279 290 {HPHW_A_DIRECT, 0x005, 0x0000D, 0x00, "Dyun Kiuh MUX"}, 280 291 {HPHW_A_DIRECT, 0x006, 0x0000D, 0x00, "Baat Kiuh AP/MUX (40299B)"},
+4 -3
arch/parisc/kernel/head.S
··· 20 20 #include <asm/pgtable.h> 21 21 22 22 #include <linux/linkage.h> 23 + #include <linux/init.h> 23 24 24 25 .level LEVEL 25 26 26 - .data 27 + __INITDATA 27 28 ENTRY(boot_args) 28 29 .word 0 /* arg0 */ 29 30 .word 0 /* arg1 */ ··· 32 31 .word 0 /* arg3 */ 33 32 END(boot_args) 34 33 35 - .text 34 + .section .text.head 36 35 .align 4 37 36 .import init_thread_union,data 38 37 .import fault_vector_20,code /* IVA parisc 2.0 32 bit */ ··· 344 343 ENDPROC(stext) 345 344 346 345 #ifndef CONFIG_64BIT 347 - .data 346 + .section .data.read_mostly 348 347 349 348 .align 4 350 349 .export $global$,data
+16 -14
arch/parisc/kernel/pdc_cons.c
··· 52 52 #include <linux/tty.h> 53 53 #include <asm/pdc.h> /* for iodc_call() proto and friends */ 54 54 55 + static spinlock_t pdc_console_lock = SPIN_LOCK_UNLOCKED; 55 56 56 57 static void pdc_console_write(struct console *co, const char *s, unsigned count) 57 58 { 58 - pdc_iodc_print(s, count); 59 - } 59 + int i = 0; 60 + unsigned long flags; 60 61 61 - void pdc_printf(const char *fmt, ...) 62 - { 63 - va_list args; 64 - char buf[1024]; 65 - int i, len; 66 - 67 - va_start(args, fmt); 68 - len = vscnprintf(buf, sizeof(buf), fmt, args); 69 - va_end(args); 70 - 71 - pdc_iodc_print(buf, len); 62 + spin_lock_irqsave(&pdc_console_lock, flags); 63 + do { 64 + i += pdc_iodc_print(s + i, count - i); 65 + } while (i < count); 66 + spin_unlock_irqrestore(&pdc_console_lock, flags); 72 67 } 73 68 74 69 int pdc_console_poll_key(struct console *co) 75 70 { 76 - return pdc_iodc_getc(); 71 + int c; 72 + unsigned long flags; 73 + 74 + spin_lock_irqsave(&pdc_console_lock, flags); 75 + c = pdc_iodc_getc(); 76 + spin_unlock_irqrestore(&pdc_console_lock, flags); 77 + 78 + return c; 77 79 } 78 80 79 81 static int pdc_console_setup(struct console *co, char *options)
+4 -1
arch/parisc/kernel/syscall_table.S
··· 401 401 ENTRY_COMP(kexec_load) /* 300 */ 402 402 ENTRY_COMP(utimensat) 403 403 ENTRY_COMP(signalfd) 404 - ENTRY_COMP(timerfd) 404 + ENTRY_SAME(ni_syscall) /* was timerfd */ 405 405 ENTRY_SAME(eventfd) 406 406 ENTRY_COMP(fallocate) /* 305 */ 407 + ENTRY_SAME(timerfd_create) 408 + ENTRY_COMP(timerfd_settime) 409 + ENTRY_COMP(timerfd_gettime) 407 410 408 411 /* Nothing yet */ 409 412
+22 -3
arch/parisc/kernel/traps.c
··· 51 51 DEFINE_SPINLOCK(pa_dbit_lock); 52 52 #endif 53 53 54 + void parisc_show_stack(struct task_struct *t, unsigned long *sp, 55 + struct pt_regs *regs); 56 + 54 57 static int printbinary(char *buf, unsigned long x, int nbits) 55 58 { 56 59 unsigned long mask = 1UL << (nbits - 1); ··· 151 148 print_symbol(" IAOQ[1]: %s\n", regs->iaoq[1]); 152 149 printk(level); 153 150 print_symbol(" RP(r2): %s\n", regs->gr[2]); 151 + 152 + parisc_show_stack(current, NULL, regs); 154 153 } 155 154 156 155 ··· 186 181 printk("\n"); 187 182 } 188 183 189 - void show_stack(struct task_struct *task, unsigned long *s) 184 + void parisc_show_stack(struct task_struct *task, unsigned long *sp, 185 + struct pt_regs *regs) 190 186 { 191 187 struct unwind_frame_info info; 188 + struct task_struct *t; 192 189 193 - if (!task) { 190 + t = task ? task : current; 191 + if (regs) { 192 + unwind_frame_init(&info, t, regs); 193 + goto show_stack; 194 + } 195 + 196 + if (t == current) { 194 197 unsigned long sp; 195 198 196 199 HERE: ··· 214 201 unwind_frame_init(&info, current, &r); 215 202 } 216 203 } else { 217 - unwind_frame_init_from_blocked_task(&info, task); 204 + unwind_frame_init_from_blocked_task(&info, t); 218 205 } 219 206 207 + show_stack: 220 208 do_show_stack(&info); 209 + } 210 + 211 + void show_stack(struct task_struct *t, unsigned long *sp) 212 + { 213 + return parisc_show_stack(t, sp, NULL); 221 214 } 222 215 223 216 int is_valid_bugaddr(unsigned long iaoq)
+3 -3
drivers/parisc/pdc_stable.c
··· 829 829 struct kobj_attribute *attr, 830 830 const char *buf, size_t count) 831 831 { 832 - return pdcs_auto_write(kset, attr, buf, count, PF_AUTOBOOT); 832 + return pdcs_auto_write(kobj, attr, buf, count, PF_AUTOBOOT); 833 833 } 834 834 835 835 /** ··· 845 845 struct kobj_attribute *attr, 846 846 const char *buf, size_t count) 847 847 { 848 - return pdcs_auto_write(kset, attr, buf, count, PF_AUTOSEARCH); 848 + return pdcs_auto_write(kobj, attr, buf, count, PF_AUTOSEARCH); 849 849 } 850 850 851 851 /** ··· 1066 1066 } 1067 1067 1068 1068 /* Don't forget the root entries */ 1069 - error = sysfs_create_group(stable_kobj, pdcs_attr_group); 1069 + error = sysfs_create_group(stable_kobj, &pdcs_attr_group); 1070 1070 1071 1071 /* register the paths kset as a child of the stable kset */ 1072 1072 paths_kset = kset_create_and_add("paths", NULL, stable_kobj);
+2 -2
drivers/parisc/sba_iommu.c
··· 314 314 #define RESMAP_MASK(n) (~0UL << (BITS_PER_LONG - (n))) 315 315 #define RESMAP_IDX_MASK (sizeof(unsigned long) - 1) 316 316 317 - unsigned long ptr_to_pide(struct ioc *ioc, unsigned long *res_ptr, 318 - unsigned int bitshiftcnt) 317 + static unsigned long ptr_to_pide(struct ioc *ioc, unsigned long *res_ptr, 318 + unsigned int bitshiftcnt) 319 319 { 320 320 return (((unsigned long)res_ptr - (unsigned long)ioc->res_map) << 3) 321 321 + bitshiftcnt;
+10 -12
include/asm-parisc/elf.h
··· 204 204 /* 205 205 * The following definitions are those for 32-bit ELF binaries on a 32-bit 206 206 * kernel and for 64-bit binaries on a 64-bit kernel. To run 32-bit binaries 207 - * on a 64-bit kernel, arch/parisc64/kernel/binfmt_elf32.c defines these 207 + * on a 64-bit kernel, arch/parisc/kernel/binfmt_elf32.c defines these 208 208 * macros appropriately and then #includes binfmt_elf.c, which then includes 209 209 * this file. 210 210 */ ··· 216 216 * Note that this header file is used by default in fs/binfmt_elf.c. So 217 217 * the following macros are for the default case. However, for the 64 218 218 * bit kernel we also support 32 bit parisc binaries. To do that 219 - * arch/parisc64/kernel/binfmt_elf32.c defines its own set of these 219 + * arch/parisc/kernel/binfmt_elf32.c defines its own set of these 220 220 * macros, and then it includes fs/binfmt_elf.c to provide an alternate 221 221 * elf binary handler for 32 bit binaries (on the 64 bit kernel). 222 222 */ 223 223 #ifdef CONFIG_64BIT 224 - #define ELF_CLASS ELFCLASS64 224 + #define ELF_CLASS ELFCLASS64 225 225 #else 226 226 #define ELF_CLASS ELFCLASS32 227 227 #endif 228 228 229 229 typedef unsigned long elf_greg_t; 230 230 231 - /* This yields a string that ld.so will use to load implementation 232 - specific libraries for optimization. This is more specific in 233 - intent than poking at uname or /proc/cpuinfo. 231 + /* 232 + * This yields a string that ld.so will use to load implementation 233 + * specific libraries for optimization. This is more specific in 234 + * intent than poking at uname or /proc/cpuinfo. 235 + */ 234 236 235 - For the moment, we have only optimizations for the Intel generations, 236 - but that could change... */ 237 - 238 - #define ELF_PLATFORM ("PARISC\0" /*+((boot_cpu_data.x86-3)*5) */) 237 + #define ELF_PLATFORM ("PARISC\0") 239 238 240 239 #define SET_PERSONALITY(ex, ibcs2) \ 241 240 current->personality = PER_LINUX; \ ··· 309 310 #define ELF_OSABI ELFOSABI_LINUX 310 311 311 312 /* %r23 is set by ld.so to a pointer to a function which might be 312 - registered using atexit. This provides a mean for the dynamic 313 + registered using atexit. This provides a means for the dynamic 313 314 linker to call DT_FINI functions for shared libraries that have 314 315 been loaded before the code runs. 315 316 ··· 338 339 but it's not easy, and we've already done it here. */ 339 340 340 341 #define ELF_HWCAP 0 341 - /* (boot_cpu_data.x86_capability) */ 342 342 343 343 #endif
+8 -1
include/asm-parisc/fixmap.h
··· 20 20 #define KERNEL_MAP_START (GATEWAY_PAGE_SIZE) 21 21 #define KERNEL_MAP_END (TMPALIAS_MAP_START) 22 22 23 - #endif 23 + #ifndef __ASSEMBLY__ 24 + extern void *vmalloc_start; 25 + #define PCXL_DMA_MAP_SIZE (8*1024*1024) 26 + #define VMALLOC_START ((unsigned long)vmalloc_start) 27 + #define VMALLOC_END (KERNEL_MAP_END) 28 + #endif /*__ASSEMBLY__*/ 29 + 30 + #endif /*_ASM_FIXMAP_H*/
+8 -2
include/asm-parisc/futex.h
··· 56 56 int err = 0; 57 57 int uval; 58 58 59 + /* futex.c wants to do a cmpxchg_inatomic on kernel NULL, which is 60 + * our gateway page, and causes no end of trouble... 61 + */ 62 + if (segment_eq(KERNEL_DS, get_fs()) && !uaddr) 63 + return -EFAULT; 64 + 59 65 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) 60 66 return -EFAULT; 61 67 ··· 73 67 return uval; 74 68 } 75 69 76 - #endif 77 - #endif 70 + #endif /*__KERNEL__*/ 71 + #endif /*_ASM_PARISC_FUTEX_H*/
+1 -2
include/asm-parisc/pdc.h
··· 645 645 void pdc_io_reset(void); 646 646 void pdc_io_reset_devices(void); 647 647 int pdc_iodc_getc(void); 648 - int pdc_iodc_print(unsigned char *str, unsigned count); 649 - void pdc_printf(const char *fmt, ...); 648 + int pdc_iodc_print(const unsigned char *str, unsigned count); 650 649 651 650 void pdc_emergency_unlock(void); 652 651 int pdc_sti_call(unsigned long func, unsigned long flags,
+2 -2
include/asm-parisc/pgalloc.h
··· 138 138 free_page((unsigned long)pte); 139 139 } 140 140 141 - static inline void pte_free_kernel(struct mm_struct *mm, struct page *pte) 141 + static inline void pte_free(struct mm_struct *mm, struct page *pte) 142 142 { 143 143 pgtable_page_dtor(pte); 144 - pte_free_kernel(page_address((pte)); 144 + pte_free_kernel(mm, page_address(pte)); 145 145 } 146 146 147 147 #define check_pgt_cache() do { } while (0)
-8
include/asm-parisc/pgtable.h
··· 116 116 117 117 #define FIRST_USER_ADDRESS 0 118 118 119 - #ifndef __ASSEMBLY__ 120 - extern void *vmalloc_start; 121 - #define PCXL_DMA_MAP_SIZE (8*1024*1024) 122 - #define VMALLOC_START ((unsigned long)vmalloc_start) 123 - /* this is a fixmap remnant, see fixmap.h */ 124 - #define VMALLOC_END (KERNEL_MAP_END) 125 - #endif 126 - 127 119 /* NB: The tlb miss handlers make certain assumptions about the order */ 128 120 /* of the following bits, so be careful (One example, bits 25-31 */ 129 121 /* are moved together in one instruction). */
+4 -1
include/asm-parisc/unistd.h
··· 798 798 #define __NR_timerfd (__NR_Linux + 303) 799 799 #define __NR_eventfd (__NR_Linux + 304) 800 800 #define __NR_fallocate (__NR_Linux + 305) 801 + #define __NR_timerfd_create (__NR_Linux + 306) 802 + #define __NR_timerfd_settime (__NR_Linux + 307) 803 + #define __NR_timerfd_gettime (__NR_Linux + 308) 801 804 802 - #define __NR_Linux_syscalls (__NR_fallocate + 1) 805 + #define __NR_Linux_syscalls (__NR_timerfd_gettime + 1) 803 806 804 807 805 808 #define __IGNORE_select /* newselect */