diff options
Diffstat (limited to 'include')
36 files changed, 498 insertions, 82 deletions
diff --git a/include/asm-arm/arch-ixp4xx/debug-macro.S b/include/asm-arm/arch-ixp4xx/debug-macro.S index 45a6c6cc29d5..2e23651e217f 100644 --- a/include/asm-arm/arch-ixp4xx/debug-macro.S +++ b/include/asm-arm/arch-ixp4xx/debug-macro.S | |||
| @@ -14,8 +14,8 @@ | |||
| 14 | mrc p15, 0, \rx, c1, c0 | 14 | mrc p15, 0, \rx, c1, c0 |
| 15 | tst \rx, #1 @ MMU enabled? | 15 | tst \rx, #1 @ MMU enabled? |
| 16 | moveq \rx, #0xc8000000 | 16 | moveq \rx, #0xc8000000 |
| 17 | orrne \rx, \rx, #0x00b00000 | ||
| 18 | movne \rx, #0xff000000 | 17 | movne \rx, #0xff000000 |
| 18 | orrne \rx, \rx, #0x00b00000 | ||
| 19 | add \rx,\rx,#3 @ Uart regs are at off set of 3 if | 19 | add \rx,\rx,#3 @ Uart regs are at off set of 3 if |
| 20 | @ byte writes used - Big Endian. | 20 | @ byte writes used - Big Endian. |
| 21 | .endm | 21 | .endm |
diff --git a/include/asm-arm/arch-omap/usb.h b/include/asm-arm/arch-omap/usb.h index 1438c6cef0ca..054fb9a8e0c6 100644 --- a/include/asm-arm/arch-omap/usb.h +++ b/include/asm-arm/arch-omap/usb.h | |||
| @@ -47,6 +47,15 @@ | |||
| 47 | # define HMC_TLLATTACH (1 << 6) | 47 | # define HMC_TLLATTACH (1 << 6) |
| 48 | # define OTG_HMC(w) (((w)>>0)&0x3f) | 48 | # define OTG_HMC(w) (((w)>>0)&0x3f) |
| 49 | #define OTG_CTRL_REG OTG_REG32(0x0c) | 49 | #define OTG_CTRL_REG OTG_REG32(0x0c) |
| 50 | # define OTG_USB2_EN (1 << 29) | ||
| 51 | # define OTG_USB2_DP (1 << 28) | ||
| 52 | # define OTG_USB2_DM (1 << 27) | ||
| 53 | # define OTG_USB1_EN (1 << 26) | ||
| 54 | # define OTG_USB1_DP (1 << 25) | ||
| 55 | # define OTG_USB1_DM (1 << 24) | ||
| 56 | # define OTG_USB0_EN (1 << 23) | ||
| 57 | # define OTG_USB0_DP (1 << 22) | ||
| 58 | # define OTG_USB0_DM (1 << 21) | ||
| 50 | # define OTG_ASESSVLD (1 << 20) | 59 | # define OTG_ASESSVLD (1 << 20) |
| 51 | # define OTG_BSESSEND (1 << 19) | 60 | # define OTG_BSESSEND (1 << 19) |
| 52 | # define OTG_BSESSVLD (1 << 18) | 61 | # define OTG_BSESSVLD (1 << 18) |
diff --git a/include/asm-arm/ide.h b/include/asm-arm/ide.h index 2114acb3d237..4f68c8a5a199 100644 --- a/include/asm-arm/ide.h +++ b/include/asm-arm/ide.h | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | /* | 7 | /* |
| 8 | * This file contains the i386 architecture specific IDE code. | 8 | * This file contains the ARM architecture specific IDE code. |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | #ifndef __ASMARM_IDE_H | 11 | #ifndef __ASMARM_IDE_H |
diff --git a/include/asm-arm/io.h b/include/asm-arm/io.h index cc4b5f5dbfcf..cfa71a0dffb6 100644 --- a/include/asm-arm/io.h +++ b/include/asm-arm/io.h | |||
| @@ -82,7 +82,7 @@ extern void __readwrite_bug(const char *fn); | |||
| 82 | * only. Their primary purpose is to access PCI and ISA peripherals. | 82 | * only. Their primary purpose is to access PCI and ISA peripherals. |
| 83 | * | 83 | * |
| 84 | * Note that for a big endian machine, this implies that the following | 84 | * Note that for a big endian machine, this implies that the following |
| 85 | * big endian mode connectivity is in place, as described by numerious | 85 | * big endian mode connectivity is in place, as described by numerous |
| 86 | * ARM documents: | 86 | * ARM documents: |
| 87 | * | 87 | * |
| 88 | * PCI: D0-D7 D8-D15 D16-D23 D24-D31 | 88 | * PCI: D0-D7 D8-D15 D16-D23 D24-D31 |
diff --git a/include/asm-arm/mach/time.h b/include/asm-arm/mach/time.h index 047980ad18d1..2cf279a44017 100644 --- a/include/asm-arm/mach/time.h +++ b/include/asm-arm/mach/time.h | |||
| @@ -60,6 +60,8 @@ struct dyn_tick_timer { | |||
| 60 | }; | 60 | }; |
| 61 | 61 | ||
| 62 | void timer_dyn_reprogram(void); | 62 | void timer_dyn_reprogram(void); |
| 63 | #else | ||
| 64 | #define timer_dyn_reprogram() do { } while (0) | ||
| 63 | #endif | 65 | #endif |
| 64 | 66 | ||
| 65 | extern struct sys_timer *system_timer; | 67 | extern struct sys_timer *system_timer; |
diff --git a/include/asm-i386/tlbflush.h b/include/asm-i386/tlbflush.h index f22fab0cea26..ab216e1370ef 100644 --- a/include/asm-i386/tlbflush.h +++ b/include/asm-i386/tlbflush.h | |||
| @@ -22,16 +22,18 @@ | |||
| 22 | */ | 22 | */ |
| 23 | #define __flush_tlb_global() \ | 23 | #define __flush_tlb_global() \ |
| 24 | do { \ | 24 | do { \ |
| 25 | unsigned int tmpreg; \ | 25 | unsigned int tmpreg, cr4, cr4_orig; \ |
| 26 | \ | 26 | \ |
| 27 | __asm__ __volatile__( \ | 27 | __asm__ __volatile__( \ |
| 28 | "movl %1, %%cr4; # turn off PGE \n" \ | 28 | "movl %%cr4, %2; # turn off PGE \n" \ |
| 29 | "movl %2, %1; \n" \ | ||
| 30 | "andl %3, %1; \n" \ | ||
| 31 | "movl %1, %%cr4; \n" \ | ||
| 29 | "movl %%cr3, %0; \n" \ | 32 | "movl %%cr3, %0; \n" \ |
| 30 | "movl %0, %%cr3; # flush TLB \n" \ | 33 | "movl %0, %%cr3; # flush TLB \n" \ |
| 31 | "movl %2, %%cr4; # turn PGE back on \n" \ | 34 | "movl %2, %%cr4; # turn PGE back on \n" \ |
| 32 | : "=&r" (tmpreg) \ | 35 | : "=&r" (tmpreg), "=&r" (cr4), "=&r" (cr4_orig) \ |
| 33 | : "r" (mmu_cr4_features & ~X86_CR4_PGE), \ | 36 | : "i" (~X86_CR4_PGE) \ |
| 34 | "r" (mmu_cr4_features) \ | ||
| 35 | : "memory"); \ | 37 | : "memory"); \ |
| 36 | } while (0) | 38 | } while (0) |
| 37 | 39 | ||
diff --git a/include/asm-i386/unistd.h b/include/asm-i386/unistd.h index 176413fb9ae3..e25e4c71a879 100644 --- a/include/asm-i386/unistd.h +++ b/include/asm-i386/unistd.h | |||
| @@ -294,8 +294,10 @@ | |||
| 294 | #define __NR_add_key 286 | 294 | #define __NR_add_key 286 |
| 295 | #define __NR_request_key 287 | 295 | #define __NR_request_key 287 |
| 296 | #define __NR_keyctl 288 | 296 | #define __NR_keyctl 288 |
| 297 | #define __NR_ioprio_set 289 | ||
| 298 | #define __NR_ioprio_get 290 | ||
| 297 | 299 | ||
| 298 | #define NR_syscalls 289 | 300 | #define NR_syscalls 291 |
| 299 | 301 | ||
| 300 | /* | 302 | /* |
| 301 | * user-visible error numbers are in the range -1 - -128: see | 303 | * user-visible error numbers are in the range -1 - -128: see |
diff --git a/include/asm-ia64/kprobes.h b/include/asm-ia64/kprobes.h index 7b700035e36d..bf36a32e37e4 100644 --- a/include/asm-ia64/kprobes.h +++ b/include/asm-ia64/kprobes.h | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | #include <linux/ptrace.h> | 28 | #include <linux/ptrace.h> |
| 29 | #include <asm/break.h> | 29 | #include <asm/break.h> |
| 30 | 30 | ||
| 31 | #define MAX_INSN_SIZE 16 | ||
| 31 | #define BREAK_INST (long)(__IA64_BREAK_KPROBE << 6) | 32 | #define BREAK_INST (long)(__IA64_BREAK_KPROBE << 6) |
| 32 | 33 | ||
| 33 | typedef union cmp_inst { | 34 | typedef union cmp_inst { |
| @@ -63,6 +64,8 @@ typedef struct _bundle { | |||
| 63 | 64 | ||
| 64 | #define JPROBE_ENTRY(pentry) (kprobe_opcode_t *)pentry | 65 | #define JPROBE_ENTRY(pentry) (kprobe_opcode_t *)pentry |
| 65 | 66 | ||
| 67 | #define ARCH_SUPPORTS_KRETPROBES | ||
| 68 | |||
| 66 | #define SLOT0_OPCODE_SHIFT (37) | 69 | #define SLOT0_OPCODE_SHIFT (37) |
| 67 | #define SLOT1_p1_OPCODE_SHIFT (37 - (64-46)) | 70 | #define SLOT1_p1_OPCODE_SHIFT (37 - (64-46)) |
| 68 | #define SLOT2_OPCODE_SHIFT (37) | 71 | #define SLOT2_OPCODE_SHIFT (37) |
| @@ -94,11 +97,6 @@ struct arch_specific_insn { | |||
| 94 | }; | 97 | }; |
| 95 | 98 | ||
| 96 | /* ia64 does not need this */ | 99 | /* ia64 does not need this */ |
| 97 | static inline void jprobe_return(void) | ||
| 98 | { | ||
| 99 | } | ||
| 100 | |||
| 101 | /* ia64 does not need this */ | ||
| 102 | static inline void arch_copy_kprobe(struct kprobe *p) | 100 | static inline void arch_copy_kprobe(struct kprobe *p) |
| 103 | { | 101 | { |
| 104 | } | 102 | } |
| @@ -106,6 +104,12 @@ static inline void arch_copy_kprobe(struct kprobe *p) | |||
| 106 | #ifdef CONFIG_KPROBES | 104 | #ifdef CONFIG_KPROBES |
| 107 | extern int kprobe_exceptions_notify(struct notifier_block *self, | 105 | extern int kprobe_exceptions_notify(struct notifier_block *self, |
| 108 | unsigned long val, void *data); | 106 | unsigned long val, void *data); |
| 107 | |||
| 108 | /* ia64 does not need this */ | ||
| 109 | static inline void jprobe_return(void) | ||
| 110 | { | ||
| 111 | } | ||
| 112 | |||
| 109 | #else /* !CONFIG_KPROBES */ | 113 | #else /* !CONFIG_KPROBES */ |
| 110 | static inline int kprobe_exceptions_notify(struct notifier_block *self, | 114 | static inline int kprobe_exceptions_notify(struct notifier_block *self, |
| 111 | unsigned long val, void *data) | 115 | unsigned long val, void *data) |
diff --git a/include/asm-ia64/sections.h b/include/asm-ia64/sections.h index 8e3dbde1b429..e9eb7f62d32b 100644 --- a/include/asm-ia64/sections.h +++ b/include/asm-ia64/sections.h | |||
| @@ -17,6 +17,7 @@ extern char __start_gate_vtop_patchlist[], __end_gate_vtop_patchlist[]; | |||
| 17 | extern char __start_gate_fsyscall_patchlist[], __end_gate_fsyscall_patchlist[]; | 17 | extern char __start_gate_fsyscall_patchlist[], __end_gate_fsyscall_patchlist[]; |
| 18 | extern char __start_gate_brl_fsys_bubble_down_patchlist[], __end_gate_brl_fsys_bubble_down_patchlist[]; | 18 | extern char __start_gate_brl_fsys_bubble_down_patchlist[], __end_gate_brl_fsys_bubble_down_patchlist[]; |
| 19 | extern char __start_unwind[], __end_unwind[]; | 19 | extern char __start_unwind[], __end_unwind[]; |
| 20 | extern char __start_ivt_text[], __end_ivt_text[]; | ||
| 20 | 21 | ||
| 21 | #endif /* _ASM_IA64_SECTIONS_H */ | 22 | #endif /* _ASM_IA64_SECTIONS_H */ |
| 22 | 23 | ||
diff --git a/include/asm-ia64/unistd.h b/include/asm-ia64/unistd.h index f7f43ec2483a..517f1649ee64 100644 --- a/include/asm-ia64/unistd.h +++ b/include/asm-ia64/unistd.h | |||
| @@ -263,6 +263,8 @@ | |||
| 263 | #define __NR_add_key 1271 | 263 | #define __NR_add_key 1271 |
| 264 | #define __NR_request_key 1272 | 264 | #define __NR_request_key 1272 |
| 265 | #define __NR_keyctl 1273 | 265 | #define __NR_keyctl 1273 |
| 266 | #define __NR_ioprio_set 1274 | ||
| 267 | #define __NR_ioprio_get 1275 | ||
| 266 | #define __NR_set_zone_reclaim 1276 | 268 | #define __NR_set_zone_reclaim 1276 |
| 267 | 269 | ||
| 268 | #ifdef __KERNEL__ | 270 | #ifdef __KERNEL__ |
diff --git a/include/asm-ppc/open_pic.h b/include/asm-ppc/open_pic.h index dbe853319741..7848aa610c05 100644 --- a/include/asm-ppc/open_pic.h +++ b/include/asm-ppc/open_pic.h | |||
| @@ -25,6 +25,11 @@ | |||
| 25 | #define OPENPIC_VEC_IPI 118 /* and up */ | 25 | #define OPENPIC_VEC_IPI 118 /* and up */ |
| 26 | #define OPENPIC_VEC_SPURIOUS 255 | 26 | #define OPENPIC_VEC_SPURIOUS 255 |
| 27 | 27 | ||
| 28 | /* Priorities */ | ||
| 29 | #define OPENPIC_PRIORITY_IPI_BASE 10 | ||
| 30 | #define OPENPIC_PRIORITY_DEFAULT 4 | ||
| 31 | #define OPENPIC_PRIORITY_NMI 9 | ||
| 32 | |||
| 28 | /* OpenPIC IRQ controller structure */ | 33 | /* OpenPIC IRQ controller structure */ |
| 29 | extern struct hw_interrupt_type open_pic; | 34 | extern struct hw_interrupt_type open_pic; |
| 30 | 35 | ||
| @@ -42,6 +47,7 @@ extern int epic_serial_mode; | |||
| 42 | extern void openpic_set_sources(int first_irq, int num_irqs, void __iomem *isr); | 47 | extern void openpic_set_sources(int first_irq, int num_irqs, void __iomem *isr); |
| 43 | extern void openpic_init(int linux_irq_offset); | 48 | extern void openpic_init(int linux_irq_offset); |
| 44 | extern void openpic_init_nmi_irq(u_int irq); | 49 | extern void openpic_init_nmi_irq(u_int irq); |
| 50 | extern void openpic_set_irq_priority(u_int irq, u_int pri); | ||
| 45 | extern void openpic_hookup_cascade(u_int irq, char *name, | 51 | extern void openpic_hookup_cascade(u_int irq, char *name, |
| 46 | int (*cascade_fn)(struct pt_regs *)); | 52 | int (*cascade_fn)(struct pt_regs *)); |
| 47 | extern u_int openpic_irq(void); | 53 | extern u_int openpic_irq(void); |
diff --git a/include/asm-ppc/unistd.h b/include/asm-ppc/unistd.h index cc51e5c9acc2..e8b79220b29c 100644 --- a/include/asm-ppc/unistd.h +++ b/include/asm-ppc/unistd.h | |||
| @@ -277,8 +277,10 @@ | |||
| 277 | #define __NR_request_key 270 | 277 | #define __NR_request_key 270 |
| 278 | #define __NR_keyctl 271 | 278 | #define __NR_keyctl 271 |
| 279 | #define __NR_waitid 272 | 279 | #define __NR_waitid 272 |
| 280 | #define __NR_ioprio_set 273 | ||
| 281 | #define __NR_ioprio_get 274 | ||
| 280 | 282 | ||
| 281 | #define __NR_syscalls 273 | 283 | #define __NR_syscalls 275 |
| 282 | 284 | ||
| 283 | #define __NR(n) #n | 285 | #define __NR(n) #n |
| 284 | 286 | ||
diff --git a/include/asm-ppc64/kprobes.h b/include/asm-ppc64/kprobes.h index 19b468bed059..0802919c3235 100644 --- a/include/asm-ppc64/kprobes.h +++ b/include/asm-ppc64/kprobes.h | |||
| @@ -42,10 +42,13 @@ typedef unsigned int kprobe_opcode_t; | |||
| 42 | 42 | ||
| 43 | #define JPROBE_ENTRY(pentry) (kprobe_opcode_t *)((func_descr_t *)pentry) | 43 | #define JPROBE_ENTRY(pentry) (kprobe_opcode_t *)((func_descr_t *)pentry) |
| 44 | 44 | ||
| 45 | #define ARCH_SUPPORTS_KRETPROBES | ||
| 46 | void kretprobe_trampoline(void); | ||
| 47 | |||
| 45 | /* Architecture specific copy of original instruction */ | 48 | /* Architecture specific copy of original instruction */ |
| 46 | struct arch_specific_insn { | 49 | struct arch_specific_insn { |
| 47 | /* copy of original instruction */ | 50 | /* copy of original instruction */ |
| 48 | kprobe_opcode_t insn[MAX_INSN_SIZE]; | 51 | kprobe_opcode_t *insn; |
| 49 | }; | 52 | }; |
| 50 | 53 | ||
| 51 | #ifdef CONFIG_KPROBES | 54 | #ifdef CONFIG_KPROBES |
diff --git a/include/asm-x86_64/tlbflush.h b/include/asm-x86_64/tlbflush.h index 2e811ac262af..061742382520 100644 --- a/include/asm-x86_64/tlbflush.h +++ b/include/asm-x86_64/tlbflush.h | |||
| @@ -22,16 +22,18 @@ | |||
| 22 | */ | 22 | */ |
| 23 | #define __flush_tlb_global() \ | 23 | #define __flush_tlb_global() \ |
| 24 | do { \ | 24 | do { \ |
| 25 | unsigned long tmpreg; \ | 25 | unsigned long tmpreg, cr4, cr4_orig; \ |
| 26 | \ | 26 | \ |
| 27 | __asm__ __volatile__( \ | 27 | __asm__ __volatile__( \ |
| 28 | "movq %1, %%cr4; # turn off PGE \n" \ | 28 | "movq %%cr4, %2; # turn off PGE \n" \ |
| 29 | "movq %2, %1; \n" \ | ||
| 30 | "andq %3, %1; \n" \ | ||
| 31 | "movq %1, %%cr4; \n" \ | ||
| 29 | "movq %%cr3, %0; # flush TLB \n" \ | 32 | "movq %%cr3, %0; # flush TLB \n" \ |
| 30 | "movq %0, %%cr3; \n" \ | 33 | "movq %0, %%cr3; \n" \ |
| 31 | "movq %2, %%cr4; # turn PGE back on \n" \ | 34 | "movq %2, %%cr4; # turn PGE back on \n" \ |
| 32 | : "=&r" (tmpreg) \ | 35 | : "=&r" (tmpreg), "=&r" (cr4), "=&r" (cr4_orig) \ |
| 33 | : "r" (mmu_cr4_features & ~X86_CR4_PGE), \ | 36 | : "i" (~X86_CR4_PGE) \ |
| 34 | "r" (mmu_cr4_features) \ | ||
| 35 | : "memory"); \ | 37 | : "memory"); \ |
| 36 | } while (0) | 38 | } while (0) |
| 37 | 39 | ||
diff --git a/include/asm-x86_64/unistd.h b/include/asm-x86_64/unistd.h index d767adcbf0ff..6560439a83e4 100644 --- a/include/asm-x86_64/unistd.h +++ b/include/asm-x86_64/unistd.h | |||
| @@ -561,8 +561,12 @@ __SYSCALL(__NR_add_key, sys_add_key) | |||
| 561 | __SYSCALL(__NR_request_key, sys_request_key) | 561 | __SYSCALL(__NR_request_key, sys_request_key) |
| 562 | #define __NR_keyctl 250 | 562 | #define __NR_keyctl 250 |
| 563 | __SYSCALL(__NR_keyctl, sys_keyctl) | 563 | __SYSCALL(__NR_keyctl, sys_keyctl) |
| 564 | #define __NR_ioprio_set 251 | ||
| 565 | __SYSCALL(__NR_ioprio_set, sys_ioprio_set) | ||
| 566 | #define __NR_ioprio_get 252 | ||
| 567 | __SYSCALL(__NR_ioprio_get, sys_ioprio_get) | ||
| 564 | 568 | ||
| 565 | #define __NR_syscall_max __NR_keyctl | 569 | #define __NR_syscall_max __NR_ioprio_get |
| 566 | #ifndef __NO_STUBS | 570 | #ifndef __NO_STUBS |
| 567 | 571 | ||
| 568 | /* user-visible error numbers are in the range -1 - -4095 */ | 572 | /* user-visible error numbers are in the range -1 - -4095 */ |
diff --git a/include/linux/bio.h b/include/linux/bio.h index 038022763f09..36ef29fa0d8b 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | 22 | ||
| 23 | #include <linux/highmem.h> | 23 | #include <linux/highmem.h> |
| 24 | #include <linux/mempool.h> | 24 | #include <linux/mempool.h> |
| 25 | #include <linux/ioprio.h> | ||
| 25 | 26 | ||
| 26 | /* Platforms may set this to teach the BIO layer about IOMMU hardware. */ | 27 | /* Platforms may set this to teach the BIO layer about IOMMU hardware. */ |
| 27 | #include <asm/io.h> | 28 | #include <asm/io.h> |
| @@ -150,6 +151,19 @@ struct bio { | |||
| 150 | #define BIO_RW_SYNC 4 | 151 | #define BIO_RW_SYNC 4 |
| 151 | 152 | ||
| 152 | /* | 153 | /* |
| 154 | * upper 16 bits of bi_rw define the io priority of this bio | ||
| 155 | */ | ||
| 156 | #define BIO_PRIO_SHIFT (8 * sizeof(unsigned long) - IOPRIO_BITS) | ||
| 157 | #define bio_prio(bio) ((bio)->bi_rw >> BIO_PRIO_SHIFT) | ||
| 158 | #define bio_prio_valid(bio) ioprio_valid(bio_prio(bio)) | ||
| 159 | |||
| 160 | #define bio_set_prio(bio, prio) do { \ | ||
| 161 | WARN_ON(prio >= (1 << IOPRIO_BITS)); \ | ||
| 162 | (bio)->bi_rw &= ((1UL << BIO_PRIO_SHIFT) - 1); \ | ||
| 163 | (bio)->bi_rw |= ((unsigned long) (prio) << BIO_PRIO_SHIFT); \ | ||
| 164 | } while (0) | ||
| 165 | |||
| 166 | /* | ||
| 153 | * various member access, note that bio_data should of course not be used | 167 | * various member access, note that bio_data should of course not be used |
| 154 | * on highmem page vectors | 168 | * on highmem page vectors |
| 155 | */ | 169 | */ |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index b54a0348a890..21a8674cd149 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
| @@ -54,16 +54,23 @@ struct as_io_context { | |||
| 54 | 54 | ||
| 55 | struct cfq_queue; | 55 | struct cfq_queue; |
| 56 | struct cfq_io_context { | 56 | struct cfq_io_context { |
| 57 | void (*dtor)(struct cfq_io_context *); | ||
| 58 | void (*exit)(struct cfq_io_context *); | ||
| 59 | |||
| 60 | struct io_context *ioc; | ||
| 61 | |||
| 62 | /* | 57 | /* |
| 63 | * circular list of cfq_io_contexts belonging to a process io context | 58 | * circular list of cfq_io_contexts belonging to a process io context |
| 64 | */ | 59 | */ |
| 65 | struct list_head list; | 60 | struct list_head list; |
| 66 | struct cfq_queue *cfqq; | 61 | struct cfq_queue *cfqq; |
| 62 | void *key; | ||
| 63 | |||
| 64 | struct io_context *ioc; | ||
| 65 | |||
| 66 | unsigned long last_end_request; | ||
| 67 | unsigned long last_queue; | ||
| 68 | unsigned long ttime_total; | ||
| 69 | unsigned long ttime_samples; | ||
| 70 | unsigned long ttime_mean; | ||
| 71 | |||
| 72 | void (*dtor)(struct cfq_io_context *); | ||
| 73 | void (*exit)(struct cfq_io_context *); | ||
| 67 | }; | 74 | }; |
| 68 | 75 | ||
| 69 | /* | 76 | /* |
| @@ -73,7 +80,9 @@ struct cfq_io_context { | |||
| 73 | */ | 80 | */ |
| 74 | struct io_context { | 81 | struct io_context { |
| 75 | atomic_t refcount; | 82 | atomic_t refcount; |
| 76 | pid_t pid; | 83 | struct task_struct *task; |
| 84 | |||
| 85 | int (*set_ioprio)(struct io_context *, unsigned int); | ||
| 77 | 86 | ||
| 78 | /* | 87 | /* |
| 79 | * For request batching | 88 | * For request batching |
| @@ -81,8 +90,6 @@ struct io_context { | |||
| 81 | unsigned long last_waited; /* Time last woken after wait for request */ | 90 | unsigned long last_waited; /* Time last woken after wait for request */ |
| 82 | int nr_batch_requests; /* Number of requests left in the batch */ | 91 | int nr_batch_requests; /* Number of requests left in the batch */ |
| 83 | 92 | ||
| 84 | spinlock_t lock; | ||
| 85 | |||
| 86 | struct as_io_context *aic; | 93 | struct as_io_context *aic; |
| 87 | struct cfq_io_context *cic; | 94 | struct cfq_io_context *cic; |
| 88 | }; | 95 | }; |
| @@ -134,6 +141,8 @@ struct request { | |||
| 134 | 141 | ||
| 135 | void *elevator_private; | 142 | void *elevator_private; |
| 136 | 143 | ||
| 144 | unsigned short ioprio; | ||
| 145 | |||
| 137 | int rq_status; /* should split this into a few status bits */ | 146 | int rq_status; /* should split this into a few status bits */ |
| 138 | struct gendisk *rq_disk; | 147 | struct gendisk *rq_disk; |
| 139 | int errors; | 148 | int errors; |
diff --git a/include/linux/cciss_ioctl.h b/include/linux/cciss_ioctl.h index ee0c6e8995da..424d5e622b43 100644 --- a/include/linux/cciss_ioctl.h +++ b/include/linux/cciss_ioctl.h | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | typedef struct _cciss_pci_info_struct | 10 | typedef struct _cciss_pci_info_struct |
| 11 | { | 11 | { |
| 12 | unsigned char bus; | 12 | unsigned char bus; |
| 13 | unsigned short domain; | ||
| 13 | unsigned char dev_fn; | 14 | unsigned char dev_fn; |
| 14 | __u32 board_id; | 15 | __u32 board_id; |
| 15 | } cciss_pci_info_struct; | 16 | } cciss_pci_info_struct; |
diff --git a/include/linux/elevator.h b/include/linux/elevator.h index ee54f81faad5..ea6bbc2d7407 100644 --- a/include/linux/elevator.h +++ b/include/linux/elevator.h | |||
| @@ -16,9 +16,9 @@ typedef void (elevator_remove_req_fn) (request_queue_t *, struct request *); | |||
| 16 | typedef void (elevator_requeue_req_fn) (request_queue_t *, struct request *); | 16 | typedef void (elevator_requeue_req_fn) (request_queue_t *, struct request *); |
| 17 | typedef struct request *(elevator_request_list_fn) (request_queue_t *, struct request *); | 17 | typedef struct request *(elevator_request_list_fn) (request_queue_t *, struct request *); |
| 18 | typedef void (elevator_completed_req_fn) (request_queue_t *, struct request *); | 18 | typedef void (elevator_completed_req_fn) (request_queue_t *, struct request *); |
| 19 | typedef int (elevator_may_queue_fn) (request_queue_t *, int); | 19 | typedef int (elevator_may_queue_fn) (request_queue_t *, int, struct bio *); |
| 20 | 20 | ||
| 21 | typedef int (elevator_set_req_fn) (request_queue_t *, struct request *, int); | 21 | typedef int (elevator_set_req_fn) (request_queue_t *, struct request *, struct bio *, int); |
| 22 | typedef void (elevator_put_req_fn) (request_queue_t *, struct request *); | 22 | typedef void (elevator_put_req_fn) (request_queue_t *, struct request *); |
| 23 | typedef void (elevator_deactivate_req_fn) (request_queue_t *, struct request *); | 23 | typedef void (elevator_deactivate_req_fn) (request_queue_t *, struct request *); |
| 24 | 24 | ||
| @@ -96,9 +96,9 @@ extern struct request *elv_former_request(request_queue_t *, struct request *); | |||
| 96 | extern struct request *elv_latter_request(request_queue_t *, struct request *); | 96 | extern struct request *elv_latter_request(request_queue_t *, struct request *); |
| 97 | extern int elv_register_queue(request_queue_t *q); | 97 | extern int elv_register_queue(request_queue_t *q); |
| 98 | extern void elv_unregister_queue(request_queue_t *q); | 98 | extern void elv_unregister_queue(request_queue_t *q); |
| 99 | extern int elv_may_queue(request_queue_t *, int); | 99 | extern int elv_may_queue(request_queue_t *, int, struct bio *); |
| 100 | extern void elv_completed_request(request_queue_t *, struct request *); | 100 | extern void elv_completed_request(request_queue_t *, struct request *); |
| 101 | extern int elv_set_request(request_queue_t *, struct request *, int); | 101 | extern int elv_set_request(request_queue_t *, struct request *, struct bio *, int); |
| 102 | extern void elv_put_request(request_queue_t *, struct request *); | 102 | extern void elv_put_request(request_queue_t *, struct request *); |
| 103 | 103 | ||
| 104 | /* | 104 | /* |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 3ae8e37bdfc8..047bde30836a 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -213,6 +213,7 @@ extern int dir_notify_enable; | |||
| 213 | #include <linux/radix-tree.h> | 213 | #include <linux/radix-tree.h> |
| 214 | #include <linux/prio_tree.h> | 214 | #include <linux/prio_tree.h> |
| 215 | #include <linux/init.h> | 215 | #include <linux/init.h> |
| 216 | #include <linux/sched.h> | ||
| 216 | 217 | ||
| 217 | #include <asm/atomic.h> | 218 | #include <asm/atomic.h> |
| 218 | #include <asm/semaphore.h> | 219 | #include <asm/semaphore.h> |
| @@ -822,16 +823,34 @@ enum { | |||
| 822 | #define vfs_check_frozen(sb, level) \ | 823 | #define vfs_check_frozen(sb, level) \ |
| 823 | wait_event((sb)->s_wait_unfrozen, ((sb)->s_frozen < (level))) | 824 | wait_event((sb)->s_wait_unfrozen, ((sb)->s_frozen < (level))) |
| 824 | 825 | ||
| 826 | static inline void get_fs_excl(void) | ||
| 827 | { | ||
| 828 | atomic_inc(¤t->fs_excl); | ||
| 829 | } | ||
| 830 | |||
| 831 | static inline void put_fs_excl(void) | ||
| 832 | { | ||
| 833 | atomic_dec(¤t->fs_excl); | ||
| 834 | } | ||
| 835 | |||
| 836 | static inline int has_fs_excl(void) | ||
| 837 | { | ||
| 838 | return atomic_read(¤t->fs_excl); | ||
| 839 | } | ||
| 840 | |||
| 841 | |||
| 825 | /* | 842 | /* |
| 826 | * Superblock locking. | 843 | * Superblock locking. |
| 827 | */ | 844 | */ |
| 828 | static inline void lock_super(struct super_block * sb) | 845 | static inline void lock_super(struct super_block * sb) |
| 829 | { | 846 | { |
| 847 | get_fs_excl(); | ||
| 830 | down(&sb->s_lock); | 848 | down(&sb->s_lock); |
| 831 | } | 849 | } |
| 832 | 850 | ||
| 833 | static inline void unlock_super(struct super_block * sb) | 851 | static inline void unlock_super(struct super_block * sb) |
| 834 | { | 852 | { |
| 853 | put_fs_excl(); | ||
| 835 | up(&sb->s_lock); | 854 | up(&sb->s_lock); |
| 836 | } | 855 | } |
| 837 | 856 | ||
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 03206a425d7a..c727c195a91a 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
| @@ -81,6 +81,7 @@ extern struct group_info init_groups; | |||
| 81 | .mm = NULL, \ | 81 | .mm = NULL, \ |
| 82 | .active_mm = &init_mm, \ | 82 | .active_mm = &init_mm, \ |
| 83 | .run_list = LIST_HEAD_INIT(tsk.run_list), \ | 83 | .run_list = LIST_HEAD_INIT(tsk.run_list), \ |
| 84 | .ioprio = 0, \ | ||
| 84 | .time_slice = HZ, \ | 85 | .time_slice = HZ, \ |
| 85 | .tasks = LIST_HEAD_INIT(tsk.tasks), \ | 86 | .tasks = LIST_HEAD_INIT(tsk.tasks), \ |
| 86 | .ptrace_children= LIST_HEAD_INIT(tsk.ptrace_children), \ | 87 | .ptrace_children= LIST_HEAD_INIT(tsk.ptrace_children), \ |
| @@ -110,6 +111,7 @@ extern struct group_info init_groups; | |||
| 110 | .proc_lock = SPIN_LOCK_UNLOCKED, \ | 111 | .proc_lock = SPIN_LOCK_UNLOCKED, \ |
| 111 | .journal_info = NULL, \ | 112 | .journal_info = NULL, \ |
| 112 | .cpu_timers = INIT_CPU_TIMERS(tsk.cpu_timers), \ | 113 | .cpu_timers = INIT_CPU_TIMERS(tsk.cpu_timers), \ |
| 114 | .fs_excl = ATOMIC_INIT(0), \ | ||
| 113 | } | 115 | } |
| 114 | 116 | ||
| 115 | 117 | ||
diff --git a/include/linux/input.h b/include/linux/input.h index 9d9598ed760d..b9cc0ac71f44 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
| @@ -859,6 +859,10 @@ struct input_dev { | |||
| 859 | int (*erase_effect)(struct input_dev *dev, int effect_id); | 859 | int (*erase_effect)(struct input_dev *dev, int effect_id); |
| 860 | 860 | ||
| 861 | struct input_handle *grab; | 861 | struct input_handle *grab; |
| 862 | |||
| 863 | struct semaphore sem; /* serializes open and close operations */ | ||
| 864 | unsigned int users; | ||
| 865 | |||
| 862 | struct device *dev; | 866 | struct device *dev; |
| 863 | 867 | ||
| 864 | struct list_head h_list; | 868 | struct list_head h_list; |
diff --git a/include/linux/ioprio.h b/include/linux/ioprio.h new file mode 100644 index 000000000000..8a453a0b5e4b --- /dev/null +++ b/include/linux/ioprio.h | |||
| @@ -0,0 +1,88 @@ | |||
| 1 | #ifndef IOPRIO_H | ||
| 2 | #define IOPRIO_H | ||
| 3 | |||
| 4 | #include <linux/sched.h> | ||
| 5 | |||
| 6 | /* | ||
| 7 | * Gives us 8 prio classes with 13-bits of data for each class | ||
| 8 | */ | ||
| 9 | #define IOPRIO_BITS (16) | ||
| 10 | #define IOPRIO_CLASS_SHIFT (13) | ||
| 11 | #define IOPRIO_PRIO_MASK ((1UL << IOPRIO_CLASS_SHIFT) - 1) | ||
| 12 | |||
| 13 | #define IOPRIO_PRIO_CLASS(mask) ((mask) >> IOPRIO_CLASS_SHIFT) | ||
| 14 | #define IOPRIO_PRIO_DATA(mask) ((mask) & IOPRIO_PRIO_MASK) | ||
| 15 | #define IOPRIO_PRIO_VALUE(class, data) (((class) << IOPRIO_CLASS_SHIFT) | data) | ||
| 16 | |||
| 17 | #define ioprio_valid(mask) (IOPRIO_PRIO_CLASS((mask)) != IOPRIO_CLASS_NONE) | ||
| 18 | |||
| 19 | /* | ||
| 20 | * These are the io priority groups as implemented by CFQ. RT is the realtime | ||
| 21 | * class, it always gets premium service. BE is the best-effort scheduling | ||
| 22 | * class, the default for any process. IDLE is the idle scheduling class, it | ||
| 23 | * is only served when no one else is using the disk. | ||
| 24 | */ | ||
| 25 | enum { | ||
| 26 | IOPRIO_CLASS_NONE, | ||
| 27 | IOPRIO_CLASS_RT, | ||
| 28 | IOPRIO_CLASS_BE, | ||
| 29 | IOPRIO_CLASS_IDLE, | ||
| 30 | }; | ||
| 31 | |||
| 32 | /* | ||
| 33 | * 8 best effort priority levels are supported | ||
| 34 | */ | ||
| 35 | #define IOPRIO_BE_NR (8) | ||
| 36 | |||
| 37 | asmlinkage int sys_ioprio_set(int, int, int); | ||
| 38 | asmlinkage int sys_ioprio_get(int, int); | ||
| 39 | |||
| 40 | enum { | ||
| 41 | IOPRIO_WHO_PROCESS = 1, | ||
| 42 | IOPRIO_WHO_PGRP, | ||
| 43 | IOPRIO_WHO_USER, | ||
| 44 | }; | ||
| 45 | |||
| 46 | /* | ||
| 47 | * if process has set io priority explicitly, use that. if not, convert | ||
| 48 | * the cpu scheduler nice value to an io priority | ||
| 49 | */ | ||
| 50 | #define IOPRIO_NORM (4) | ||
| 51 | static inline int task_ioprio(struct task_struct *task) | ||
| 52 | { | ||
| 53 | WARN_ON(!ioprio_valid(task->ioprio)); | ||
| 54 | return IOPRIO_PRIO_DATA(task->ioprio); | ||
| 55 | } | ||
| 56 | |||
| 57 | static inline int task_nice_ioprio(struct task_struct *task) | ||
| 58 | { | ||
| 59 | return (task_nice(task) + 20) / 5; | ||
| 60 | } | ||
| 61 | |||
| 62 | /* | ||
| 63 | * For inheritance, return the highest of the two given priorities | ||
| 64 | */ | ||
| 65 | static inline int ioprio_best(unsigned short aprio, unsigned short bprio) | ||
| 66 | { | ||
| 67 | unsigned short aclass = IOPRIO_PRIO_CLASS(aprio); | ||
| 68 | unsigned short bclass = IOPRIO_PRIO_CLASS(bprio); | ||
| 69 | |||
| 70 | if (!ioprio_valid(aprio)) | ||
| 71 | return bprio; | ||
| 72 | if (!ioprio_valid(bprio)) | ||
| 73 | return aprio; | ||
| 74 | |||
| 75 | if (aclass == IOPRIO_CLASS_NONE) | ||
| 76 | aclass = IOPRIO_CLASS_BE; | ||
| 77 | if (bclass == IOPRIO_CLASS_NONE) | ||
| 78 | bclass = IOPRIO_CLASS_BE; | ||
| 79 | |||
| 80 | if (aclass == bclass) | ||
| 81 | return min(aprio, bprio); | ||
| 82 | if (aclass > bclass) | ||
| 83 | return bprio; | ||
| 84 | else | ||
| 85 | return aprio; | ||
| 86 | } | ||
| 87 | |||
| 88 | #endif | ||
diff --git a/include/linux/joystick.h b/include/linux/joystick.h index b7e0ab622cd7..06b9af77eb7f 100644 --- a/include/linux/joystick.h +++ b/include/linux/joystick.h | |||
| @@ -111,18 +111,35 @@ struct js_corr { | |||
| 111 | #define JS_SET_ALL 8 | 111 | #define JS_SET_ALL 8 |
| 112 | 112 | ||
| 113 | struct JS_DATA_TYPE { | 113 | struct JS_DATA_TYPE { |
| 114 | int buttons; | 114 | __s32 buttons; |
| 115 | int x; | 115 | __s32 x; |
| 116 | int y; | 116 | __s32 y; |
| 117 | }; | 117 | }; |
| 118 | 118 | ||
| 119 | struct JS_DATA_SAVE_TYPE { | 119 | struct JS_DATA_SAVE_TYPE_32 { |
| 120 | int JS_TIMEOUT; | 120 | __s32 JS_TIMEOUT; |
| 121 | int BUSY; | 121 | __s32 BUSY; |
| 122 | long JS_EXPIRETIME; | 122 | __s32 JS_EXPIRETIME; |
| 123 | long JS_TIMELIMIT; | 123 | __s32 JS_TIMELIMIT; |
| 124 | struct JS_DATA_TYPE JS_SAVE; | 124 | struct JS_DATA_TYPE JS_SAVE; |
| 125 | struct JS_DATA_TYPE JS_CORR; | 125 | struct JS_DATA_TYPE JS_CORR; |
| 126 | }; | 126 | }; |
| 127 | 127 | ||
| 128 | struct JS_DATA_SAVE_TYPE_64 { | ||
| 129 | __s32 JS_TIMEOUT; | ||
| 130 | __s32 BUSY; | ||
| 131 | __s64 JS_EXPIRETIME; | ||
| 132 | __s64 JS_TIMELIMIT; | ||
| 133 | struct JS_DATA_TYPE JS_SAVE; | ||
| 134 | struct JS_DATA_TYPE JS_CORR; | ||
| 135 | }; | ||
| 136 | |||
| 137 | #if BITS_PER_LONG == 64 | ||
| 138 | #define JS_DATA_SAVE_TYPE JS_DATA_SAVE_TYPE_64 | ||
| 139 | #elif BITS_PER_LONG == 32 | ||
| 140 | #define JS_DATA_SAVE_TYPE JS_DATA_SAVE_TYPE_32 | ||
| 141 | #else | ||
| 142 | #error Unexpected BITS_PER_LONG | ||
| 143 | #endif | ||
| 144 | |||
| 128 | #endif /* _LINUX_JOYSTICK_H */ | 145 | #endif /* _LINUX_JOYSTICK_H */ |
diff --git a/include/linux/kprobes.h b/include/linux/kprobes.h index 5e1a7b0d7b3f..b7a194c4362a 100644 --- a/include/linux/kprobes.h +++ b/include/linux/kprobes.h | |||
| @@ -104,33 +104,12 @@ struct jprobe { | |||
| 104 | }; | 104 | }; |
| 105 | 105 | ||
| 106 | #ifdef ARCH_SUPPORTS_KRETPROBES | 106 | #ifdef ARCH_SUPPORTS_KRETPROBES |
| 107 | extern int trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs); | ||
| 108 | extern void trampoline_post_handler(struct kprobe *p, struct pt_regs *regs, | ||
| 109 | unsigned long flags); | ||
| 110 | extern struct task_struct *arch_get_kprobe_task(void *ptr); | ||
| 111 | extern void arch_prepare_kretprobe(struct kretprobe *rp, struct pt_regs *regs); | 107 | extern void arch_prepare_kretprobe(struct kretprobe *rp, struct pt_regs *regs); |
| 112 | extern void arch_kprobe_flush_task(struct task_struct *tk); | ||
| 113 | #else /* ARCH_SUPPORTS_KRETPROBES */ | 108 | #else /* ARCH_SUPPORTS_KRETPROBES */ |
| 114 | static inline void kretprobe_trampoline(void) | ||
| 115 | { | ||
| 116 | } | ||
| 117 | static inline int trampoline_probe_handler(struct kprobe *p, | ||
| 118 | struct pt_regs *regs) | ||
| 119 | { | ||
| 120 | return 0; | ||
| 121 | } | ||
| 122 | static inline void trampoline_post_handler(struct kprobe *p, | ||
| 123 | struct pt_regs *regs, unsigned long flags) | ||
| 124 | { | ||
| 125 | } | ||
| 126 | static inline void arch_prepare_kretprobe(struct kretprobe *rp, | 109 | static inline void arch_prepare_kretprobe(struct kretprobe *rp, |
| 127 | struct pt_regs *regs) | 110 | struct pt_regs *regs) |
| 128 | { | 111 | { |
| 129 | } | 112 | } |
| 130 | static inline void arch_kprobe_flush_task(struct task_struct *tk) | ||
| 131 | { | ||
| 132 | } | ||
| 133 | #define arch_get_kprobe_task(ptr) ((struct task_struct *)NULL) | ||
| 134 | #endif /* ARCH_SUPPORTS_KRETPROBES */ | 113 | #endif /* ARCH_SUPPORTS_KRETPROBES */ |
| 135 | /* | 114 | /* |
| 136 | * Function-return probe - | 115 | * Function-return probe - |
| @@ -155,8 +134,8 @@ struct kretprobe_instance { | |||
| 155 | struct hlist_node uflist; /* either on free list or used list */ | 134 | struct hlist_node uflist; /* either on free list or used list */ |
| 156 | struct hlist_node hlist; | 135 | struct hlist_node hlist; |
| 157 | struct kretprobe *rp; | 136 | struct kretprobe *rp; |
| 158 | void *ret_addr; | 137 | kprobe_opcode_t *ret_addr; |
| 159 | void *stack_addr; | 138 | struct task_struct *task; |
| 160 | }; | 139 | }; |
| 161 | 140 | ||
| 162 | #ifdef CONFIG_KPROBES | 141 | #ifdef CONFIG_KPROBES |
| @@ -176,7 +155,10 @@ extern void arch_copy_kprobe(struct kprobe *p); | |||
| 176 | extern void arch_arm_kprobe(struct kprobe *p); | 155 | extern void arch_arm_kprobe(struct kprobe *p); |
| 177 | extern void arch_disarm_kprobe(struct kprobe *p); | 156 | extern void arch_disarm_kprobe(struct kprobe *p); |
| 178 | extern void arch_remove_kprobe(struct kprobe *p); | 157 | extern void arch_remove_kprobe(struct kprobe *p); |
| 158 | extern int arch_init(void); | ||
| 179 | extern void show_registers(struct pt_regs *regs); | 159 | extern void show_registers(struct pt_regs *regs); |
| 160 | extern kprobe_opcode_t *get_insn_slot(void); | ||
| 161 | extern void free_insn_slot(kprobe_opcode_t *slot); | ||
| 180 | 162 | ||
| 181 | /* Get the kprobe at this addr (if any). Must have called lock_kprobes */ | 163 | /* Get the kprobe at this addr (if any). Must have called lock_kprobes */ |
| 182 | struct kprobe *get_kprobe(void *addr); | 164 | struct kprobe *get_kprobe(void *addr); |
| @@ -194,8 +176,6 @@ int register_kretprobe(struct kretprobe *rp); | |||
| 194 | void unregister_kretprobe(struct kretprobe *rp); | 176 | void unregister_kretprobe(struct kretprobe *rp); |
| 195 | 177 | ||
| 196 | struct kretprobe_instance *get_free_rp_inst(struct kretprobe *rp); | 178 | struct kretprobe_instance *get_free_rp_inst(struct kretprobe *rp); |
| 197 | struct kretprobe_instance *get_rp_inst(void *sara); | ||
| 198 | struct kretprobe_instance *get_rp_inst_tsk(struct task_struct *tk); | ||
| 199 | void add_rp_inst(struct kretprobe_instance *ri); | 179 | void add_rp_inst(struct kretprobe_instance *ri); |
| 200 | void kprobe_flush_task(struct task_struct *tk); | 180 | void kprobe_flush_task(struct task_struct *tk); |
| 201 | void recycle_rp_inst(struct kretprobe_instance *ri); | 181 | void recycle_rp_inst(struct kretprobe_instance *ri); |
diff --git a/include/linux/libps2.h b/include/linux/libps2.h index 923bdbc6d9e4..a710bddda4eb 100644 --- a/include/linux/libps2.h +++ b/include/linux/libps2.h | |||
| @@ -41,6 +41,7 @@ struct ps2dev { | |||
| 41 | 41 | ||
| 42 | void ps2_init(struct ps2dev *ps2dev, struct serio *serio); | 42 | void ps2_init(struct ps2dev *ps2dev, struct serio *serio); |
| 43 | int ps2_sendbyte(struct ps2dev *ps2dev, unsigned char byte, int timeout); | 43 | int ps2_sendbyte(struct ps2dev *ps2dev, unsigned char byte, int timeout); |
| 44 | void ps2_drain(struct ps2dev *ps2dev, int maxbytes, int timeout); | ||
| 44 | int ps2_command(struct ps2dev *ps2dev, unsigned char *param, int command); | 45 | int ps2_command(struct ps2dev *ps2dev, unsigned char *param, int command); |
| 45 | int ps2_schedule_command(struct ps2dev *ps2dev, unsigned char *param, int command); | 46 | int ps2_schedule_command(struct ps2dev *ps2dev, unsigned char *param, int command); |
| 46 | int ps2_handle_ack(struct ps2dev *ps2dev, unsigned char data); | 47 | int ps2_handle_ack(struct ps2dev *ps2dev, unsigned char data); |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index bf608808a60c..a3961e1d5183 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
| @@ -712,8 +712,9 @@ | |||
| 712 | #define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290 | 712 | #define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290 |
| 713 | #define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301 | 713 | #define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301 |
| 714 | #define PCI_DEVICE_ID_HP_CISSA 0x3220 | 714 | #define PCI_DEVICE_ID_HP_CISSA 0x3220 |
| 715 | #define PCI_DEVICE_ID_HP_CISSB 0x3230 | 715 | #define PCI_DEVICE_ID_HP_CISSB 0x3222 |
| 716 | #define PCI_DEVICE_ID_HP_ZX2_IOC 0x4031 | 716 | #define PCI_DEVICE_ID_HP_ZX2_IOC 0x4031 |
| 717 | #define PCI_DEVICE_ID_HP_CISSC 0x3230 | ||
| 717 | 718 | ||
| 718 | #define PCI_VENDOR_ID_PCTECH 0x1042 | 719 | #define PCI_VENDOR_ID_PCTECH 0x1042 |
| 719 | #define PCI_DEVICE_ID_PCTECH_RZ1000 0x1000 | 720 | #define PCI_DEVICE_ID_PCTECH_RZ1000 0x1000 |
| @@ -1284,6 +1285,8 @@ | |||
| 1284 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5700_2 0x0348 | 1285 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5700_2 0x0348 |
| 1285 | #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO1000 0x034C | 1286 | #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO1000 0x034C |
| 1286 | #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1100 0x034E | 1287 | #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1100 0x034E |
| 1288 | #define PCI_DEVICE_ID_NVIDIA_NVENET_14 0x0372 | ||
| 1289 | #define PCI_DEVICE_ID_NVIDIA_NVENET_15 0x0373 | ||
| 1287 | 1290 | ||
| 1288 | #define PCI_VENDOR_ID_IMS 0x10e0 | 1291 | #define PCI_VENDOR_ID_IMS 0x10e0 |
| 1289 | #define PCI_DEVICE_ID_IMS_8849 0x8849 | 1292 | #define PCI_DEVICE_ID_IMS_8849 0x8849 |
diff --git a/include/linux/pmu.h b/include/linux/pmu.h index 6d73eada277e..373bd3b9b330 100644 --- a/include/linux/pmu.h +++ b/include/linux/pmu.h | |||
| @@ -166,7 +166,7 @@ extern int pmu_i2c_simple_read(int bus, int addr, u8* data, int len); | |||
| 166 | extern int pmu_i2c_simple_write(int bus, int addr, u8* data, int len); | 166 | extern int pmu_i2c_simple_write(int bus, int addr, u8* data, int len); |
| 167 | 167 | ||
| 168 | 168 | ||
| 169 | #ifdef CONFIG_PMAC_PBOOK | 169 | #ifdef CONFIG_PM |
| 170 | /* | 170 | /* |
| 171 | * Stuff for putting the powerbook to sleep and waking it again. | 171 | * Stuff for putting the powerbook to sleep and waking it again. |
| 172 | * | 172 | * |
| @@ -208,6 +208,8 @@ struct pmu_sleep_notifier | |||
| 208 | int pmu_register_sleep_notifier(struct pmu_sleep_notifier* notifier); | 208 | int pmu_register_sleep_notifier(struct pmu_sleep_notifier* notifier); |
| 209 | int pmu_unregister_sleep_notifier(struct pmu_sleep_notifier* notifier); | 209 | int pmu_unregister_sleep_notifier(struct pmu_sleep_notifier* notifier); |
| 210 | 210 | ||
| 211 | #endif /* CONFIG_PM */ | ||
| 212 | |||
| 211 | #define PMU_MAX_BATTERIES 2 | 213 | #define PMU_MAX_BATTERIES 2 |
| 212 | 214 | ||
| 213 | /* values for pmu_power_flags */ | 215 | /* values for pmu_power_flags */ |
| @@ -235,6 +237,4 @@ extern int pmu_battery_count; | |||
| 235 | extern struct pmu_battery_info pmu_batteries[PMU_MAX_BATTERIES]; | 237 | extern struct pmu_battery_info pmu_batteries[PMU_MAX_BATTERIES]; |
| 236 | extern unsigned int pmu_power_flags; | 238 | extern unsigned int pmu_power_flags; |
| 237 | 239 | ||
| 238 | #endif /* CONFIG_PMAC_PBOOK */ | ||
| 239 | |||
| 240 | #endif /* __KERNEL__ */ | 240 | #endif /* __KERNEL__ */ |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 9530b1903160..ff48815bd3a2 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -608,6 +608,8 @@ struct task_struct { | |||
| 608 | struct list_head run_list; | 608 | struct list_head run_list; |
| 609 | prio_array_t *array; | 609 | prio_array_t *array; |
| 610 | 610 | ||
| 611 | unsigned short ioprio; | ||
| 612 | |||
| 611 | unsigned long sleep_avg; | 613 | unsigned long sleep_avg; |
| 612 | unsigned long long timestamp, last_ran; | 614 | unsigned long long timestamp, last_ran; |
| 613 | unsigned long long sched_time; /* sched_clock time spent running */ | 615 | unsigned long long sched_time; /* sched_clock time spent running */ |
| @@ -763,6 +765,7 @@ struct task_struct { | |||
| 763 | nodemask_t mems_allowed; | 765 | nodemask_t mems_allowed; |
| 764 | int cpuset_mems_generation; | 766 | int cpuset_mems_generation; |
| 765 | #endif | 767 | #endif |
| 768 | atomic_t fs_excl; /* holding fs exclusive resources */ | ||
| 766 | }; | 769 | }; |
| 767 | 770 | ||
| 768 | static inline pid_t process_group(struct task_struct *tsk) | 771 | static inline pid_t process_group(struct task_struct *tsk) |
| @@ -1112,7 +1115,8 @@ extern void unhash_process(struct task_struct *p); | |||
| 1112 | 1115 | ||
| 1113 | /* | 1116 | /* |
| 1114 | * Protects ->fs, ->files, ->mm, ->ptrace, ->group_info, ->comm, keyring | 1117 | * Protects ->fs, ->files, ->mm, ->ptrace, ->group_info, ->comm, keyring |
| 1115 | * subscriptions and synchronises with wait4(). Also used in procfs. | 1118 | * subscriptions and synchronises with wait4(). Also used in procfs. Also |
| 1119 | * pins the final release of task.io_context. | ||
| 1116 | * | 1120 | * |
| 1117 | * Nests both inside and outside of read_lock(&tasklist_lock). | 1121 | * Nests both inside and outside of read_lock(&tasklist_lock). |
| 1118 | * It must not be nested with write_lock_irq(&tasklist_lock), | 1122 | * It must not be nested with write_lock_irq(&tasklist_lock), |
diff --git a/include/linux/seccomp.h b/include/linux/seccomp.h index 3a2702bbb1d6..dc89116bb1ca 100644 --- a/include/linux/seccomp.h +++ b/include/linux/seccomp.h | |||
| @@ -19,6 +19,11 @@ static inline void secure_computing(int this_syscall) | |||
| 19 | __secure_computing(this_syscall); | 19 | __secure_computing(this_syscall); |
| 20 | } | 20 | } |
| 21 | 21 | ||
| 22 | static inline int has_secure_computing(struct thread_info *ti) | ||
| 23 | { | ||
| 24 | return unlikely(test_ti_thread_flag(ti, TIF_SECCOMP)); | ||
| 25 | } | ||
| 26 | |||
| 22 | #else /* CONFIG_SECCOMP */ | 27 | #else /* CONFIG_SECCOMP */ |
| 23 | 28 | ||
| 24 | #if (__GNUC__ > 2) | 29 | #if (__GNUC__ > 2) |
| @@ -28,6 +33,11 @@ static inline void secure_computing(int this_syscall) | |||
| 28 | #endif | 33 | #endif |
| 29 | 34 | ||
| 30 | #define secure_computing(x) do { } while (0) | 35 | #define secure_computing(x) do { } while (0) |
| 36 | /* static inline to preserve typechecking */ | ||
| 37 | static inline int has_secure_computing(struct thread_info *ti) | ||
| 38 | { | ||
| 39 | return 0; | ||
| 40 | } | ||
| 31 | 41 | ||
| 32 | #endif /* CONFIG_SECCOMP */ | 42 | #endif /* CONFIG_SECCOMP */ |
| 33 | 43 | ||
diff --git a/include/linux/serial_8250.h b/include/linux/serial_8250.h index 823181af6ddf..3e3c1fa35b06 100644 --- a/include/linux/serial_8250.h +++ b/include/linux/serial_8250.h | |||
| @@ -22,6 +22,7 @@ struct plat_serial8250_port { | |||
| 22 | unsigned int uartclk; /* UART clock rate */ | 22 | unsigned int uartclk; /* UART clock rate */ |
| 23 | unsigned char regshift; /* register shift */ | 23 | unsigned char regshift; /* register shift */ |
| 24 | unsigned char iotype; /* UPIO_* */ | 24 | unsigned char iotype; /* UPIO_* */ |
| 25 | unsigned char hub6; | ||
| 25 | unsigned int flags; /* UPF_* flags */ | 26 | unsigned int flags; /* UPF_* flags */ |
| 26 | }; | 27 | }; |
| 27 | 28 | ||
diff --git a/include/linux/serio.h b/include/linux/serio.h index a2d3b9ae06f4..aa4d6493a034 100644 --- a/include/linux/serio.h +++ b/include/linux/serio.h | |||
| @@ -83,6 +83,7 @@ static inline void serio_register_port(struct serio *serio) | |||
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | void serio_unregister_port(struct serio *serio); | 85 | void serio_unregister_port(struct serio *serio); |
| 86 | void serio_unregister_child_port(struct serio *serio); | ||
| 86 | void __serio_unregister_port_delayed(struct serio *serio, struct module *owner); | 87 | void __serio_unregister_port_delayed(struct serio *serio, struct module *owner); |
| 87 | static inline void serio_unregister_port_delayed(struct serio *serio) | 88 | static inline void serio_unregister_port_delayed(struct serio *serio) |
| 88 | { | 89 | { |
| @@ -153,6 +154,11 @@ static inline int serio_pin_driver(struct serio *serio) | |||
| 153 | return down_interruptible(&serio->drv_sem); | 154 | return down_interruptible(&serio->drv_sem); |
| 154 | } | 155 | } |
| 155 | 156 | ||
| 157 | static inline void serio_pin_driver_uninterruptible(struct serio *serio) | ||
| 158 | { | ||
| 159 | down(&serio->drv_sem); | ||
| 160 | } | ||
| 161 | |||
| 156 | static inline void serio_unpin_driver(struct serio *serio) | 162 | static inline void serio_unpin_driver(struct serio *serio) |
| 157 | { | 163 | { |
| 158 | up(&serio->drv_sem); | 164 | up(&serio->drv_sem); |
diff --git a/include/linux/usb_ch9.h b/include/linux/usb_ch9.h index f5fe94e09a03..39e7ff4ffd28 100644 --- a/include/linux/usb_ch9.h +++ b/include/linux/usb_ch9.h | |||
| @@ -6,11 +6,14 @@ | |||
| 6 | * | 6 | * |
| 7 | * - the master/host side Linux-USB kernel driver API; | 7 | * - the master/host side Linux-USB kernel driver API; |
| 8 | * - the "usbfs" user space API; and | 8 | * - the "usbfs" user space API; and |
| 9 | * - (eventually) a Linux "gadget" slave/device side driver API. | 9 | * - the Linux "gadget" slave/device/peripheral side driver API. |
| 10 | * | 10 | * |
| 11 | * USB 2.0 adds an additional "On The Go" (OTG) mode, which lets systems | 11 | * USB 2.0 adds an additional "On The Go" (OTG) mode, which lets systems |
| 12 | * act either as a USB master/host or as a USB slave/device. That means | 12 | * act either as a USB master/host or as a USB slave/device. That means |
| 13 | * the master and slave side APIs will benefit from working well together. | 13 | * the master and slave side APIs benefit from working well together. |
| 14 | * | ||
| 15 | * There's also "Wireless USB", using low power short range radios for | ||
| 16 | * peripheral interconnection but otherwise building on the USB framework. | ||
| 14 | */ | 17 | */ |
| 15 | 18 | ||
| 16 | #ifndef __LINUX_USB_CH9_H | 19 | #ifndef __LINUX_USB_CH9_H |
| @@ -68,6 +71,18 @@ | |||
| 68 | #define USB_REQ_SET_INTERFACE 0x0B | 71 | #define USB_REQ_SET_INTERFACE 0x0B |
| 69 | #define USB_REQ_SYNCH_FRAME 0x0C | 72 | #define USB_REQ_SYNCH_FRAME 0x0C |
| 70 | 73 | ||
| 74 | #define USB_REQ_SET_ENCRYPTION 0x0D /* Wireless USB */ | ||
| 75 | #define USB_REQ_GET_ENCRYPTION 0x0E | ||
| 76 | #define USB_REQ_SET_HANDSHAKE 0x0F | ||
| 77 | #define USB_REQ_GET_HANDSHAKE 0x10 | ||
| 78 | #define USB_REQ_SET_CONNECTION 0x11 | ||
| 79 | #define USB_REQ_SET_SECURITY_DATA 0x12 | ||
| 80 | #define USB_REQ_GET_SECURITY_DATA 0x13 | ||
| 81 | #define USB_REQ_SET_WUSB_DATA 0x14 | ||
| 82 | #define USB_REQ_LOOPBACK_DATA_WRITE 0x15 | ||
| 83 | #define USB_REQ_LOOPBACK_DATA_READ 0x16 | ||
| 84 | #define USB_REQ_SET_INTERFACE_DS 0x17 | ||
| 85 | |||
| 71 | /* | 86 | /* |
| 72 | * USB feature flags are written using USB_REQ_{CLEAR,SET}_FEATURE, and | 87 | * USB feature flags are written using USB_REQ_{CLEAR,SET}_FEATURE, and |
| 73 | * are read as a bit array returned by USB_REQ_GET_STATUS. (So there | 88 | * are read as a bit array returned by USB_REQ_GET_STATUS. (So there |
| @@ -75,10 +90,12 @@ | |||
| 75 | */ | 90 | */ |
| 76 | #define USB_DEVICE_SELF_POWERED 0 /* (read only) */ | 91 | #define USB_DEVICE_SELF_POWERED 0 /* (read only) */ |
| 77 | #define USB_DEVICE_REMOTE_WAKEUP 1 /* dev may initiate wakeup */ | 92 | #define USB_DEVICE_REMOTE_WAKEUP 1 /* dev may initiate wakeup */ |
| 78 | #define USB_DEVICE_TEST_MODE 2 /* (high speed only) */ | 93 | #define USB_DEVICE_TEST_MODE 2 /* (wired high speed only) */ |
| 79 | #define USB_DEVICE_B_HNP_ENABLE 3 /* dev may initiate HNP */ | 94 | #define USB_DEVICE_BATTERY 2 /* (wireless) */ |
| 80 | #define USB_DEVICE_A_HNP_SUPPORT 4 /* RH port supports HNP */ | 95 | #define USB_DEVICE_B_HNP_ENABLE 3 /* (otg) dev may initiate HNP */ |
| 81 | #define USB_DEVICE_A_ALT_HNP_SUPPORT 5 /* other RH port does */ | 96 | #define USB_DEVICE_WUSB_DEVICE 3 /* (wireless)*/ |
| 97 | #define USB_DEVICE_A_HNP_SUPPORT 4 /* (otg) RH port supports HNP */ | ||
| 98 | #define USB_DEVICE_A_ALT_HNP_SUPPORT 5 /* (otg) other RH port does */ | ||
| 82 | #define USB_DEVICE_DEBUG_MODE 6 /* (special devices only) */ | 99 | #define USB_DEVICE_DEBUG_MODE 6 /* (special devices only) */ |
| 83 | 100 | ||
| 84 | #define USB_ENDPOINT_HALT 0 /* IN/OUT will STALL */ | 101 | #define USB_ENDPOINT_HALT 0 /* IN/OUT will STALL */ |
| @@ -135,6 +152,13 @@ struct usb_ctrlrequest { | |||
| 135 | #define USB_DT_OTG 0x09 | 152 | #define USB_DT_OTG 0x09 |
| 136 | #define USB_DT_DEBUG 0x0a | 153 | #define USB_DT_DEBUG 0x0a |
| 137 | #define USB_DT_INTERFACE_ASSOCIATION 0x0b | 154 | #define USB_DT_INTERFACE_ASSOCIATION 0x0b |
| 155 | /* these are from the Wireless USB spec */ | ||
| 156 | #define USB_DT_SECURITY 0x0c | ||
| 157 | #define USB_DT_KEY 0x0d | ||
| 158 | #define USB_DT_ENCRYPTION_TYPE 0x0e | ||
| 159 | #define USB_DT_BOS 0x0f | ||
| 160 | #define USB_DT_DEVICE_CAPABILITY 0x10 | ||
| 161 | #define USB_DT_WIRELESS_ENDPOINT_COMP 0x11 | ||
| 138 | 162 | ||
| 139 | /* conventional codes for class-specific descriptors */ | 163 | /* conventional codes for class-specific descriptors */ |
| 140 | #define USB_DT_CS_DEVICE 0x21 | 164 | #define USB_DT_CS_DEVICE 0x21 |
| @@ -192,6 +216,7 @@ struct usb_device_descriptor { | |||
| 192 | #define USB_CLASS_CSCID 0x0b /* chip+ smart card */ | 216 | #define USB_CLASS_CSCID 0x0b /* chip+ smart card */ |
| 193 | #define USB_CLASS_CONTENT_SEC 0x0d /* content security */ | 217 | #define USB_CLASS_CONTENT_SEC 0x0d /* content security */ |
| 194 | #define USB_CLASS_VIDEO 0x0e | 218 | #define USB_CLASS_VIDEO 0x0e |
| 219 | #define USB_CLASS_WIRELESS_CONTROLLER 0xe0 | ||
| 195 | #define USB_CLASS_APP_SPEC 0xfe | 220 | #define USB_CLASS_APP_SPEC 0xfe |
| 196 | #define USB_CLASS_VENDOR_SPEC 0xff | 221 | #define USB_CLASS_VENDOR_SPEC 0xff |
| 197 | 222 | ||
| @@ -223,6 +248,7 @@ struct usb_config_descriptor { | |||
| 223 | #define USB_CONFIG_ATT_ONE (1 << 7) /* must be set */ | 248 | #define USB_CONFIG_ATT_ONE (1 << 7) /* must be set */ |
| 224 | #define USB_CONFIG_ATT_SELFPOWER (1 << 6) /* self powered */ | 249 | #define USB_CONFIG_ATT_SELFPOWER (1 << 6) /* self powered */ |
| 225 | #define USB_CONFIG_ATT_WAKEUP (1 << 5) /* can wakeup */ | 250 | #define USB_CONFIG_ATT_WAKEUP (1 << 5) /* can wakeup */ |
| 251 | #define USB_CONFIG_ATT_BATTERY (1 << 4) /* battery powered */ | ||
| 226 | 252 | ||
| 227 | /*-------------------------------------------------------------------------*/ | 253 | /*-------------------------------------------------------------------------*/ |
| 228 | 254 | ||
| @@ -289,6 +315,7 @@ struct usb_endpoint_descriptor { | |||
| 289 | #define USB_ENDPOINT_XFER_ISOC 1 | 315 | #define USB_ENDPOINT_XFER_ISOC 1 |
| 290 | #define USB_ENDPOINT_XFER_BULK 2 | 316 | #define USB_ENDPOINT_XFER_BULK 2 |
| 291 | #define USB_ENDPOINT_XFER_INT 3 | 317 | #define USB_ENDPOINT_XFER_INT 3 |
| 318 | #define USB_ENDPOINT_MAX_ADJUSTABLE 0x80 | ||
| 292 | 319 | ||
| 293 | 320 | ||
| 294 | /*-------------------------------------------------------------------------*/ | 321 | /*-------------------------------------------------------------------------*/ |
| @@ -352,12 +379,154 @@ struct usb_interface_assoc_descriptor { | |||
| 352 | 379 | ||
| 353 | /*-------------------------------------------------------------------------*/ | 380 | /*-------------------------------------------------------------------------*/ |
| 354 | 381 | ||
| 382 | /* USB_DT_SECURITY: group of wireless security descriptors, including | ||
| 383 | * encryption types available for setting up a CC/association. | ||
| 384 | */ | ||
| 385 | struct usb_security_descriptor { | ||
| 386 | __u8 bLength; | ||
| 387 | __u8 bDescriptorType; | ||
| 388 | |||
| 389 | __le16 wTotalLength; | ||
| 390 | __u8 bNumEncryptionTypes; | ||
| 391 | }; | ||
| 392 | |||
| 393 | /*-------------------------------------------------------------------------*/ | ||
| 394 | |||
| 395 | /* USB_DT_KEY: used with {GET,SET}_SECURITY_DATA; only public keys | ||
| 396 | * may be retrieved. | ||
| 397 | */ | ||
| 398 | struct usb_key_descriptor { | ||
| 399 | __u8 bLength; | ||
| 400 | __u8 bDescriptorType; | ||
| 401 | |||
| 402 | __u8 tTKID[3]; | ||
| 403 | __u8 bReserved; | ||
| 404 | __u8 bKeyData[0]; | ||
| 405 | }; | ||
| 406 | |||
| 407 | /*-------------------------------------------------------------------------*/ | ||
| 408 | |||
| 409 | /* USB_DT_ENCRYPTION_TYPE: bundled in DT_SECURITY groups */ | ||
| 410 | struct usb_encryption_descriptor { | ||
| 411 | __u8 bLength; | ||
| 412 | __u8 bDescriptorType; | ||
| 413 | |||
| 414 | __u8 bEncryptionType; | ||
| 415 | #define USB_ENC_TYPE_UNSECURE 0 | ||
| 416 | #define USB_ENC_TYPE_WIRED 1 /* non-wireless mode */ | ||
| 417 | #define USB_ENC_TYPE_CCM_1 2 /* aes128/cbc session */ | ||
| 418 | #define USB_ENC_TYPE_RSA_1 3 /* rsa3072/sha1 auth */ | ||
| 419 | __u8 bEncryptionValue; /* use in SET_ENCRYPTION */ | ||
| 420 | __u8 bAuthKeyIndex; | ||
| 421 | }; | ||
| 422 | |||
| 423 | |||
| 424 | /*-------------------------------------------------------------------------*/ | ||
| 425 | |||
| 426 | /* USB_DT_BOS: group of wireless capabilities */ | ||
| 427 | struct usb_bos_descriptor { | ||
| 428 | __u8 bLength; | ||
| 429 | __u8 bDescriptorType; | ||
| 430 | |||
| 431 | __le16 wTotalLength; | ||
| 432 | __u8 bNumDeviceCaps; | ||
| 433 | }; | ||
| 434 | |||
| 435 | /*-------------------------------------------------------------------------*/ | ||
| 436 | |||
| 437 | /* USB_DT_DEVICE_CAPABILITY: grouped with BOS */ | ||
| 438 | struct usb_dev_cap_header { | ||
| 439 | __u8 bLength; | ||
| 440 | __u8 bDescriptorType; | ||
| 441 | __u8 bDevCapabilityType; | ||
| 442 | }; | ||
| 443 | |||
| 444 | #define USB_CAP_TYPE_WIRELESS_USB 1 | ||
| 445 | |||
| 446 | struct usb_wireless_cap_descriptor { /* Ultra Wide Band */ | ||
| 447 | __u8 bLength; | ||
| 448 | __u8 bDescriptorType; | ||
| 449 | __u8 bDevCapabilityType; | ||
| 450 | |||
| 451 | __u8 bmAttributes; | ||
| 452 | #define USB_WIRELESS_P2P_DRD (1 << 1) | ||
| 453 | #define USB_WIRELESS_BEACON_MASK (3 << 2) | ||
| 454 | #define USB_WIRELESS_BEACON_SELF (1 << 2) | ||
| 455 | #define USB_WIRELESS_BEACON_DIRECTED (2 << 2) | ||
| 456 | #define USB_WIRELESS_BEACON_NONE (3 << 2) | ||
| 457 | __le16 wPHYRates; /* bit rates, Mbps */ | ||
| 458 | #define USB_WIRELESS_PHY_53 (1 << 0) /* always set */ | ||
| 459 | #define USB_WIRELESS_PHY_80 (1 << 1) | ||
| 460 | #define USB_WIRELESS_PHY_107 (1 << 2) /* always set */ | ||
| 461 | #define USB_WIRELESS_PHY_160 (1 << 3) | ||
| 462 | #define USB_WIRELESS_PHY_200 (1 << 4) /* always set */ | ||
| 463 | #define USB_WIRELESS_PHY_320 (1 << 5) | ||
| 464 | #define USB_WIRELESS_PHY_400 (1 << 6) | ||
| 465 | #define USB_WIRELESS_PHY_480 (1 << 7) | ||
| 466 | __u8 bmTFITXPowerInfo; /* TFI power levels */ | ||
| 467 | __u8 bmFFITXPowerInfo; /* FFI power levels */ | ||
| 468 | __le16 bmBandGroup; | ||
| 469 | __u8 bReserved; | ||
| 470 | }; | ||
| 471 | |||
| 472 | /*-------------------------------------------------------------------------*/ | ||
| 473 | |||
| 474 | /* USB_DT_WIRELESS_ENDPOINT_COMP: companion descriptor associated with | ||
| 475 | * each endpoint descriptor for a wireless device | ||
| 476 | */ | ||
| 477 | struct usb_wireless_ep_comp_descriptor { | ||
| 478 | __u8 bLength; | ||
| 479 | __u8 bDescriptorType; | ||
| 480 | |||
| 481 | __u8 bMaxBurst; | ||
| 482 | __u8 bMaxSequence; | ||
| 483 | __le16 wMaxStreamDelay; | ||
| 484 | __le16 wOverTheAirPacketSize; | ||
| 485 | __u8 bOverTheAirInterval; | ||
| 486 | __u8 bmCompAttributes; | ||
| 487 | #define USB_ENDPOINT_SWITCH_MASK 0x03 /* in bmCompAttributes */ | ||
| 488 | #define USB_ENDPOINT_SWITCH_NO 0 | ||
| 489 | #define USB_ENDPOINT_SWITCH_SWITCH 1 | ||
| 490 | #define USB_ENDPOINT_SWITCH_SCALE 2 | ||
| 491 | }; | ||
| 492 | |||
| 493 | /*-------------------------------------------------------------------------*/ | ||
| 494 | |||
| 495 | /* USB_REQ_SET_HANDSHAKE is a four-way handshake used between a wireless | ||
| 496 | * host and a device for connection set up, mutual authentication, and | ||
| 497 | * exchanging short lived session keys. The handshake depends on a CC. | ||
| 498 | */ | ||
| 499 | struct usb_handshake { | ||
| 500 | __u8 bMessageNumber; | ||
| 501 | __u8 bStatus; | ||
| 502 | __u8 tTKID[3]; | ||
| 503 | __u8 bReserved; | ||
| 504 | __u8 CDID[16]; | ||
| 505 | __u8 nonce[16]; | ||
| 506 | __u8 MIC[8]; | ||
| 507 | }; | ||
| 508 | |||
| 509 | /*-------------------------------------------------------------------------*/ | ||
| 510 | |||
| 511 | /* USB_REQ_SET_CONNECTION modifies or revokes a connection context (CC). | ||
| 512 | * A CC may also be set up using non-wireless secure channels (including | ||
| 513 | * wired USB!), and some devices may support CCs with multiple hosts. | ||
| 514 | */ | ||
| 515 | struct usb_connection_context { | ||
| 516 | __u8 CHID[16]; /* persistent host id */ | ||
| 517 | __u8 CDID[16]; /* device id (unique w/in host context) */ | ||
| 518 | __u8 CK[16]; /* connection key */ | ||
| 519 | }; | ||
| 520 | |||
| 521 | /*-------------------------------------------------------------------------*/ | ||
| 522 | |||
| 355 | /* USB 2.0 defines three speeds, here's how Linux identifies them */ | 523 | /* USB 2.0 defines three speeds, here's how Linux identifies them */ |
| 356 | 524 | ||
| 357 | enum usb_device_speed { | 525 | enum usb_device_speed { |
| 358 | USB_SPEED_UNKNOWN = 0, /* enumerating */ | 526 | USB_SPEED_UNKNOWN = 0, /* enumerating */ |
| 359 | USB_SPEED_LOW, USB_SPEED_FULL, /* usb 1.1 */ | 527 | USB_SPEED_LOW, USB_SPEED_FULL, /* usb 1.1 */ |
| 360 | USB_SPEED_HIGH /* usb 2.0 */ | 528 | USB_SPEED_HIGH, /* usb 2.0 */ |
| 529 | USB_SPEED_VARIABLE, /* wireless (usb 2.5) */ | ||
| 361 | }; | 530 | }; |
| 362 | 531 | ||
| 363 | enum usb_device_state { | 532 | enum usb_device_state { |
diff --git a/include/linux/usb_gadget.h b/include/linux/usb_gadget.h index 9bba9997947b..b00f127cb447 100644 --- a/include/linux/usb_gadget.h +++ b/include/linux/usb_gadget.h | |||
| @@ -711,7 +711,7 @@ usb_gadget_disconnect (struct usb_gadget *gadget) | |||
| 711 | * the hardware level driver. Most calls must be handled by | 711 | * the hardware level driver. Most calls must be handled by |
| 712 | * the gadget driver, including descriptor and configuration | 712 | * the gadget driver, including descriptor and configuration |
| 713 | * management. The 16 bit members of the setup data are in | 713 | * management. The 16 bit members of the setup data are in |
| 714 | * cpu order. Called in_interrupt; this may not sleep. Driver | 714 | * USB byte order. Called in_interrupt; this may not sleep. Driver |
| 715 | * queues a response to ep0, or returns negative to stall. | 715 | * queues a response to ep0, or returns negative to stall. |
| 716 | * @disconnect: Invoked after all transfers have been stopped, | 716 | * @disconnect: Invoked after all transfers have been stopped, |
| 717 | * when the host is disconnected. May be called in_interrupt; this | 717 | * when the host is disconnected. May be called in_interrupt; this |
diff --git a/include/linux/usb_isp116x.h b/include/linux/usb_isp116x.h new file mode 100644 index 000000000000..5f5a9d9bd6c2 --- /dev/null +++ b/include/linux/usb_isp116x.h | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | |||
| 2 | /* | ||
| 3 | * Board initialization code should put one of these into dev->platform_data | ||
| 4 | * and place the isp116x onto platform_bus. | ||
| 5 | */ | ||
| 6 | |||
| 7 | struct isp116x_platform_data { | ||
| 8 | /* Enable internal resistors on downstream ports */ | ||
| 9 | unsigned sel15Kres:1; | ||
| 10 | /* Chip's internal clock won't be stopped in suspended state. | ||
| 11 | Setting/unsetting this bit takes effect only if | ||
| 12 | 'remote_wakeup_enable' below is not set. */ | ||
| 13 | unsigned clknotstop:1; | ||
| 14 | /* On-chip overcurrent protection */ | ||
| 15 | unsigned oc_enable:1; | ||
| 16 | /* INT output polarity */ | ||
| 17 | unsigned int_act_high:1; | ||
| 18 | /* INT edge or level triggered */ | ||
| 19 | unsigned int_edge_triggered:1; | ||
| 20 | /* WAKEUP pin connected - NOT SUPPORTED */ | ||
| 21 | /* unsigned remote_wakeup_connected:1; */ | ||
| 22 | /* Wakeup by devices on usb bus enabled */ | ||
| 23 | unsigned remote_wakeup_enable:1; | ||
| 24 | /* Switch or not to switch (keep always powered) */ | ||
| 25 | unsigned no_power_switching:1; | ||
| 26 | /* Ganged port power switching (0) or individual port | ||
| 27 | power switching (1) */ | ||
| 28 | unsigned power_switching_mode:1; | ||
| 29 | /* Given port_power, msec/2 after power on till power good */ | ||
| 30 | u8 potpg; | ||
| 31 | /* Hardware reset set/clear. If implemented, this function must: | ||
| 32 | if set == 0, deassert chip's HW reset pin | ||
| 33 | otherwise, assert chip's HW reset pin */ | ||
| 34 | void (*reset) (struct device * dev, int set); | ||
| 35 | /* Hardware clock start/stop. If implemented, this function must: | ||
| 36 | if start == 0, stop the external clock | ||
| 37 | otherwise, start the external clock | ||
| 38 | */ | ||
| 39 | void (*clock) (struct device * dev, int start); | ||
| 40 | /* Inter-io delay (ns). The chip is picky about access timings; it | ||
| 41 | expects at least: | ||
| 42 | 150ns delay between consecutive accesses to DATA_REG, | ||
| 43 | 300ns delay between access to ADDR_REG and DATA_REG | ||
| 44 | OE, WE MUST NOT be changed during these intervals | ||
| 45 | */ | ||
| 46 | void (*delay) (struct device * dev, int delay); | ||
| 47 | }; | ||
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 1262cb43c3ab..d5c3fe1bf33d 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h | |||
| @@ -14,11 +14,13 @@ extern struct list_head inode_unused; | |||
| 14 | * Yes, writeback.h requires sched.h | 14 | * Yes, writeback.h requires sched.h |
| 15 | * No, sched.h is not included from here. | 15 | * No, sched.h is not included from here. |
| 16 | */ | 16 | */ |
| 17 | static inline int current_is_pdflush(void) | 17 | static inline int task_is_pdflush(struct task_struct *task) |
| 18 | { | 18 | { |
| 19 | return current->flags & PF_FLUSHER; | 19 | return task->flags & PF_FLUSHER; |
| 20 | } | 20 | } |
| 21 | 21 | ||
| 22 | #define current_is_pdflush() task_is_pdflush(current) | ||
| 23 | |||
| 22 | /* | 24 | /* |
| 23 | * fs/fs-writeback.c | 25 | * fs/fs-writeback.c |
| 24 | */ | 26 | */ |
