diff options
41 files changed, 673 insertions, 337 deletions
diff --git a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt b/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt index 6e37be1eeb2d..4f8930263dd9 100644 --- a/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt +++ b/Documentation/powerpc/dts-bindings/fsl/cpm_qe/qe.txt | |||
| @@ -21,6 +21,15 @@ Required properties: | |||
| 21 | - fsl,qe-num-snums: define how many serial number(SNUM) the QE can use for the | 21 | - fsl,qe-num-snums: define how many serial number(SNUM) the QE can use for the |
| 22 | threads. | 22 | threads. |
| 23 | 23 | ||
| 24 | Optional properties: | ||
| 25 | - fsl,firmware-phandle: | ||
| 26 | Usage: required only if there is no fsl,qe-firmware child node | ||
| 27 | Value type: <phandle> | ||
| 28 | Definition: Points to a firmware node (see "QE Firmware Node" below) | ||
| 29 | that contains the firmware that should be uploaded for this QE. | ||
| 30 | The compatible property for the firmware node should say, | ||
| 31 | "fsl,qe-firmware". | ||
| 32 | |||
| 24 | Recommended properties | 33 | Recommended properties |
| 25 | - brg-frequency : the internal clock source frequency for baud-rate | 34 | - brg-frequency : the internal clock source frequency for baud-rate |
| 26 | generators in Hz. | 35 | generators in Hz. |
| @@ -59,3 +68,48 @@ Example: | |||
| 59 | reg = <0 c000>; | 68 | reg = <0 c000>; |
| 60 | }; | 69 | }; |
| 61 | }; | 70 | }; |
| 71 | |||
| 72 | * QE Firmware Node | ||
| 73 | |||
| 74 | This node defines a firmware binary that is embedded in the device tree, for | ||
| 75 | the purpose of passing the firmware from bootloader to the kernel, or from | ||
| 76 | the hypervisor to the guest. | ||
| 77 | |||
| 78 | The firmware node itself contains the firmware binary contents, a compatible | ||
| 79 | property, and any firmware-specific properties. The node should be placed | ||
| 80 | inside a QE node that needs it. Doing so eliminates the need for a | ||
| 81 | fsl,firmware-phandle property. Other QE nodes that need the same firmware | ||
| 82 | should define an fsl,firmware-phandle property that points to the firmware node | ||
| 83 | in the first QE node. | ||
| 84 | |||
| 85 | The fsl,firmware property can be specified in the DTS (possibly using incbin) | ||
| 86 | or can be inserted by the boot loader at boot time. | ||
| 87 | |||
| 88 | Required properties: | ||
| 89 | - compatible | ||
| 90 | Usage: required | ||
| 91 | Value type: <string> | ||
| 92 | Definition: A standard property. Specify a string that indicates what | ||
| 93 | kind of firmware it is. For QE, this should be "fsl,qe-firmware". | ||
| 94 | |||
| 95 | - fsl,firmware | ||
| 96 | Usage: required | ||
| 97 | Value type: <prop-encoded-array>, encoded as an array of bytes | ||
| 98 | Definition: A standard property. This property contains the firmware | ||
| 99 | binary "blob". | ||
| 100 | |||
| 101 | Example: | ||
| 102 | qe1@e0080000 { | ||
| 103 | compatible = "fsl,qe"; | ||
| 104 | qe_firmware:qe-firmware { | ||
| 105 | compatible = "fsl,qe-firmware"; | ||
| 106 | fsl,firmware = [0x70 0xcd 0x00 0x00 0x01 0x46 0x45 ...]; | ||
| 107 | }; | ||
| 108 | ... | ||
| 109 | }; | ||
| 110 | |||
| 111 | qe2@e0090000 { | ||
| 112 | compatible = "fsl,qe"; | ||
| 113 | fsl,firmware-phandle = <&qe_firmware>; | ||
| 114 | ... | ||
| 115 | }; | ||
diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h index 72da7e045c6b..0d08d4170b64 100644 --- a/arch/arm/include/asm/cacheflush.h +++ b/arch/arm/include/asm/cacheflush.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #include <asm/glue.h> | 15 | #include <asm/glue.h> |
| 16 | #include <asm/shmparam.h> | 16 | #include <asm/shmparam.h> |
| 17 | #include <asm/cachetype.h> | 17 | #include <asm/cachetype.h> |
| 18 | #include <asm/outercache.h> | ||
| 18 | 19 | ||
| 19 | #define CACHE_COLOUR(vaddr) ((vaddr & (SHMLBA - 1)) >> PAGE_SHIFT) | 20 | #define CACHE_COLOUR(vaddr) ((vaddr & (SHMLBA - 1)) >> PAGE_SHIFT) |
| 20 | 21 | ||
| @@ -219,12 +220,6 @@ struct cpu_cache_fns { | |||
| 219 | void (*dma_flush_range)(const void *, const void *); | 220 | void (*dma_flush_range)(const void *, const void *); |
| 220 | }; | 221 | }; |
| 221 | 222 | ||
| 222 | struct outer_cache_fns { | ||
| 223 | void (*inv_range)(unsigned long, unsigned long); | ||
| 224 | void (*clean_range)(unsigned long, unsigned long); | ||
| 225 | void (*flush_range)(unsigned long, unsigned long); | ||
| 226 | }; | ||
| 227 | |||
| 228 | /* | 223 | /* |
| 229 | * Select the calling method | 224 | * Select the calling method |
| 230 | */ | 225 | */ |
| @@ -281,37 +276,6 @@ extern void dmac_flush_range(const void *, const void *); | |||
| 281 | 276 | ||
| 282 | #endif | 277 | #endif |
| 283 | 278 | ||
| 284 | #ifdef CONFIG_OUTER_CACHE | ||
| 285 | |||
| 286 | extern struct outer_cache_fns outer_cache; | ||
| 287 | |||
| 288 | static inline void outer_inv_range(unsigned long start, unsigned long end) | ||
| 289 | { | ||
| 290 | if (outer_cache.inv_range) | ||
| 291 | outer_cache.inv_range(start, end); | ||
| 292 | } | ||
| 293 | static inline void outer_clean_range(unsigned long start, unsigned long end) | ||
| 294 | { | ||
| 295 | if (outer_cache.clean_range) | ||
| 296 | outer_cache.clean_range(start, end); | ||
| 297 | } | ||
| 298 | static inline void outer_flush_range(unsigned long start, unsigned long end) | ||
| 299 | { | ||
| 300 | if (outer_cache.flush_range) | ||
| 301 | outer_cache.flush_range(start, end); | ||
| 302 | } | ||
| 303 | |||
| 304 | #else | ||
| 305 | |||
| 306 | static inline void outer_inv_range(unsigned long start, unsigned long end) | ||
| 307 | { } | ||
| 308 | static inline void outer_clean_range(unsigned long start, unsigned long end) | ||
| 309 | { } | ||
| 310 | static inline void outer_flush_range(unsigned long start, unsigned long end) | ||
| 311 | { } | ||
| 312 | |||
| 313 | #endif | ||
| 314 | |||
| 315 | /* | 279 | /* |
| 316 | * Copy user data from/to a page which is mapped into a different | 280 | * Copy user data from/to a page which is mapped into a different |
| 317 | * processes address space. Really, we want to allow our "user | 281 | * processes address space. Really, we want to allow our "user |
diff --git a/arch/arm/include/asm/clkdev.h b/arch/arm/include/asm/clkdev.h index 7a0690da5e63..b56c1389b6fa 100644 --- a/arch/arm/include/asm/clkdev.h +++ b/arch/arm/include/asm/clkdev.h | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | #define __ASM_CLKDEV_H | 13 | #define __ASM_CLKDEV_H |
| 14 | 14 | ||
| 15 | struct clk; | 15 | struct clk; |
| 16 | struct device; | ||
| 16 | 17 | ||
| 17 | struct clk_lookup { | 18 | struct clk_lookup { |
| 18 | struct list_head node; | 19 | struct list_head node; |
diff --git a/arch/arm/include/asm/irq.h b/arch/arm/include/asm/irq.h index 328f14a8b790..237282f7c762 100644 --- a/arch/arm/include/asm/irq.h +++ b/arch/arm/include/asm/irq.h | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | 17 | ||
| 18 | #ifndef __ASSEMBLY__ | 18 | #ifndef __ASSEMBLY__ |
| 19 | struct irqaction; | 19 | struct irqaction; |
| 20 | struct pt_regs; | ||
| 20 | extern void migrate_irqs(void); | 21 | extern void migrate_irqs(void); |
| 21 | 22 | ||
| 22 | extern void asm_do_IRQ(unsigned int, struct pt_regs *); | 23 | extern void asm_do_IRQ(unsigned int, struct pt_regs *); |
diff --git a/arch/arm/include/asm/outercache.h b/arch/arm/include/asm/outercache.h new file mode 100644 index 000000000000..25f76bae57ab --- /dev/null +++ b/arch/arm/include/asm/outercache.h | |||
| @@ -0,0 +1,75 @@ | |||
| 1 | /* | ||
| 2 | * arch/arm/include/asm/outercache.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2010 ARM Ltd. | ||
| 5 | * Written by Catalin Marinas <catalin.marinas@arm.com> | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License version 2 as | ||
| 9 | * published by the Free Software Foundation. | ||
| 10 | * | ||
| 11 | * This program is distributed in the hope that it will be useful, | ||
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | * GNU General Public License for more details. | ||
| 15 | * | ||
| 16 | * You should have received a copy of the GNU General Public License | ||
| 17 | * along with this program; if not, write to the Free Software | ||
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 19 | */ | ||
| 20 | |||
| 21 | #ifndef __ASM_OUTERCACHE_H | ||
| 22 | #define __ASM_OUTERCACHE_H | ||
| 23 | |||
| 24 | struct outer_cache_fns { | ||
| 25 | void (*inv_range)(unsigned long, unsigned long); | ||
| 26 | void (*clean_range)(unsigned long, unsigned long); | ||
| 27 | void (*flush_range)(unsigned long, unsigned long); | ||
| 28 | #ifdef CONFIG_OUTER_CACHE_SYNC | ||
| 29 | void (*sync)(void); | ||
| 30 | #endif | ||
| 31 | }; | ||
| 32 | |||
| 33 | #ifdef CONFIG_OUTER_CACHE | ||
| 34 | |||
| 35 | extern struct outer_cache_fns outer_cache; | ||
| 36 | |||
| 37 | static inline void outer_inv_range(unsigned long start, unsigned long end) | ||
| 38 | { | ||
| 39 | if (outer_cache.inv_range) | ||
| 40 | outer_cache.inv_range(start, end); | ||
| 41 | } | ||
| 42 | static inline void outer_clean_range(unsigned long start, unsigned long end) | ||
| 43 | { | ||
| 44 | if (outer_cache.clean_range) | ||
| 45 | outer_cache.clean_range(start, end); | ||
| 46 | } | ||
| 47 | static inline void outer_flush_range(unsigned long start, unsigned long end) | ||
| 48 | { | ||
| 49 | if (outer_cache.flush_range) | ||
| 50 | outer_cache.flush_range(start, end); | ||
| 51 | } | ||
| 52 | |||
| 53 | #else | ||
| 54 | |||
| 55 | static inline void outer_inv_range(unsigned long start, unsigned long end) | ||
| 56 | { } | ||
| 57 | static inline void outer_clean_range(unsigned long start, unsigned long end) | ||
| 58 | { } | ||
| 59 | static inline void outer_flush_range(unsigned long start, unsigned long end) | ||
| 60 | { } | ||
| 61 | |||
| 62 | #endif | ||
| 63 | |||
| 64 | #ifdef CONFIG_OUTER_CACHE_SYNC | ||
| 65 | static inline void outer_sync(void) | ||
| 66 | { | ||
| 67 | if (outer_cache.sync) | ||
| 68 | outer_cache.sync(); | ||
| 69 | } | ||
| 70 | #else | ||
| 71 | static inline void outer_sync(void) | ||
| 72 | { } | ||
| 73 | #endif | ||
| 74 | |||
| 75 | #endif /* __ASM_OUTERCACHE_H */ | ||
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h index ca88e6a84707..4ace45ec3ef8 100644 --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h | |||
| @@ -60,6 +60,8 @@ | |||
| 60 | #include <linux/linkage.h> | 60 | #include <linux/linkage.h> |
| 61 | #include <linux/irqflags.h> | 61 | #include <linux/irqflags.h> |
| 62 | 62 | ||
| 63 | #include <asm/outercache.h> | ||
| 64 | |||
| 63 | #define __exception __attribute__((section(".exception.text"))) | 65 | #define __exception __attribute__((section(".exception.text"))) |
| 64 | 66 | ||
| 65 | struct thread_info; | 67 | struct thread_info; |
| @@ -137,10 +139,12 @@ extern unsigned int user_debug; | |||
| 137 | #define dmb() __asm__ __volatile__ ("" : : : "memory") | 139 | #define dmb() __asm__ __volatile__ ("" : : : "memory") |
| 138 | #endif | 140 | #endif |
| 139 | 141 | ||
| 140 | #if __LINUX_ARM_ARCH__ >= 7 || defined(CONFIG_SMP) | 142 | #ifdef CONFIG_ARCH_HAS_BARRIERS |
| 141 | #define mb() dmb() | 143 | #include <mach/barriers.h> |
| 144 | #elif __LINUX_ARM_ARCH__ >= 7 || defined(CONFIG_SMP) | ||
| 145 | #define mb() do { dsb(); outer_sync(); } while (0) | ||
| 142 | #define rmb() dmb() | 146 | #define rmb() dmb() |
| 143 | #define wmb() dmb() | 147 | #define wmb() mb() |
| 144 | #else | 148 | #else |
| 145 | #define mb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) | 149 | #define mb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) |
| 146 | #define rmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) | 150 | #define rmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) |
| @@ -152,9 +156,9 @@ extern unsigned int user_debug; | |||
| 152 | #define smp_rmb() barrier() | 156 | #define smp_rmb() barrier() |
| 153 | #define smp_wmb() barrier() | 157 | #define smp_wmb() barrier() |
| 154 | #else | 158 | #else |
| 155 | #define smp_mb() mb() | 159 | #define smp_mb() dmb() |
| 156 | #define smp_rmb() rmb() | 160 | #define smp_rmb() dmb() |
| 157 | #define smp_wmb() wmb() | 161 | #define smp_wmb() dmb() |
| 158 | #endif | 162 | #endif |
| 159 | 163 | ||
| 160 | #define read_barrier_depends() do { } while(0) | 164 | #define read_barrier_depends() do { } while(0) |
diff --git a/arch/arm/kernel/kprobes.c b/arch/arm/kernel/kprobes.c index 60c62c377fa9..610e0f561c32 100644 --- a/arch/arm/kernel/kprobes.c +++ b/arch/arm/kernel/kprobes.c | |||
| @@ -393,6 +393,14 @@ void __kprobes jprobe_return(void) | |||
| 393 | /* | 393 | /* |
| 394 | * Setup an empty pt_regs. Fill SP and PC fields as | 394 | * Setup an empty pt_regs. Fill SP and PC fields as |
| 395 | * they're needed by longjmp_break_handler. | 395 | * they're needed by longjmp_break_handler. |
| 396 | * | ||
| 397 | * We allocate some slack between the original SP and start of | ||
| 398 | * our fabricated regs. To be precise we want to have worst case | ||
| 399 | * covered which is STMFD with all 16 regs so we allocate 2 * | ||
| 400 | * sizeof(struct_pt_regs)). | ||
| 401 | * | ||
| 402 | * This is to prevent any simulated instruction from writing | ||
| 403 | * over the regs when they are accessing the stack. | ||
| 396 | */ | 404 | */ |
| 397 | "sub sp, %0, %1 \n\t" | 405 | "sub sp, %0, %1 \n\t" |
| 398 | "ldr r0, ="__stringify(JPROBE_MAGIC_ADDR)"\n\t" | 406 | "ldr r0, ="__stringify(JPROBE_MAGIC_ADDR)"\n\t" |
| @@ -410,7 +418,7 @@ void __kprobes jprobe_return(void) | |||
| 410 | "ldmia sp, {r0 - pc} \n\t" | 418 | "ldmia sp, {r0 - pc} \n\t" |
| 411 | : | 419 | : |
| 412 | : "r" (kcb->jprobe_saved_regs.ARM_sp), | 420 | : "r" (kcb->jprobe_saved_regs.ARM_sp), |
| 413 | "I" (sizeof(struct pt_regs)), | 421 | "I" (sizeof(struct pt_regs) * 2), |
| 414 | "J" (offsetof(struct pt_regs, ARM_sp)), | 422 | "J" (offsetof(struct pt_regs, ARM_sp)), |
| 415 | "J" (offsetof(struct pt_regs, ARM_pc)), | 423 | "J" (offsetof(struct pt_regs, ARM_pc)), |
| 416 | "J" (offsetof(struct pt_regs, ARM_cpsr)) | 424 | "J" (offsetof(struct pt_regs, ARM_cpsr)) |
diff --git a/arch/arm/lib/memmove.S b/arch/arm/lib/memmove.S index 5025c863713d..938fc14f962d 100644 --- a/arch/arm/lib/memmove.S +++ b/arch/arm/lib/memmove.S | |||
| @@ -74,7 +74,7 @@ ENTRY(memmove) | |||
| 74 | rsb ip, ip, #32 | 74 | rsb ip, ip, #32 |
| 75 | addne pc, pc, ip @ C is always clear here | 75 | addne pc, pc, ip @ C is always clear here |
| 76 | b 7f | 76 | b 7f |
| 77 | 6: nop | 77 | 6: W(nop) |
| 78 | W(ldr) r3, [r1, #-4]! | 78 | W(ldr) r3, [r1, #-4]! |
| 79 | W(ldr) r4, [r1, #-4]! | 79 | W(ldr) r4, [r1, #-4]! |
| 80 | W(ldr) r5, [r1, #-4]! | 80 | W(ldr) r5, [r1, #-4]! |
| @@ -85,7 +85,7 @@ ENTRY(memmove) | |||
| 85 | 85 | ||
| 86 | add pc, pc, ip | 86 | add pc, pc, ip |
| 87 | nop | 87 | nop |
| 88 | nop | 88 | W(nop) |
| 89 | W(str) r3, [r0, #-4]! | 89 | W(str) r3, [r0, #-4]! |
| 90 | W(str) r4, [r0, #-4]! | 90 | W(str) r4, [r0, #-4]! |
| 91 | W(str) r5, [r0, #-4]! | 91 | W(str) r5, [r0, #-4]! |
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index c4ed9f93f646..5bd7c89a6045 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
| @@ -736,6 +736,12 @@ config NEEDS_SYSCALL_FOR_CMPXCHG | |||
| 736 | config OUTER_CACHE | 736 | config OUTER_CACHE |
| 737 | bool | 737 | bool |
| 738 | 738 | ||
| 739 | config OUTER_CACHE_SYNC | ||
| 740 | bool | ||
| 741 | help | ||
| 742 | The outer cache has a outer_cache_fns.sync function pointer | ||
| 743 | that can be used to drain the write buffer of the outer cache. | ||
| 744 | |||
| 739 | config CACHE_FEROCEON_L2 | 745 | config CACHE_FEROCEON_L2 |
| 740 | bool "Enable the Feroceon L2 cache controller" | 746 | bool "Enable the Feroceon L2 cache controller" |
| 741 | depends on ARCH_KIRKWOOD || ARCH_MV78XX0 | 747 | depends on ARCH_KIRKWOOD || ARCH_MV78XX0 |
| @@ -757,6 +763,7 @@ config CACHE_L2X0 | |||
| 757 | REALVIEW_EB_A9MP || ARCH_MX35 || ARCH_MX31 || MACH_REALVIEW_PBX || ARCH_NOMADIK || ARCH_OMAP4 | 763 | REALVIEW_EB_A9MP || ARCH_MX35 || ARCH_MX31 || MACH_REALVIEW_PBX || ARCH_NOMADIK || ARCH_OMAP4 |
| 758 | default y | 764 | default y |
| 759 | select OUTER_CACHE | 765 | select OUTER_CACHE |
| 766 | select OUTER_CACHE_SYNC | ||
| 760 | help | 767 | help |
| 761 | This option enables the L2x0 PrimeCell. | 768 | This option enables the L2x0 PrimeCell. |
| 762 | 769 | ||
| @@ -781,3 +788,9 @@ config ARM_L1_CACHE_SHIFT | |||
| 781 | int | 788 | int |
| 782 | default 6 if ARM_L1_CACHE_SHIFT_6 | 789 | default 6 if ARM_L1_CACHE_SHIFT_6 |
| 783 | default 5 | 790 | default 5 |
| 791 | |||
| 792 | config ARCH_HAS_BARRIERS | ||
| 793 | bool | ||
| 794 | help | ||
| 795 | This option allows the use of custom mandatory barriers | ||
| 796 | included via the mach/barriers.h file. | ||
diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c index 07334632d3e2..21ad68ba22ba 100644 --- a/arch/arm/mm/cache-l2x0.c +++ b/arch/arm/mm/cache-l2x0.c | |||
| @@ -93,6 +93,15 @@ static inline void l2x0_flush_line(unsigned long addr) | |||
| 93 | } | 93 | } |
| 94 | #endif | 94 | #endif |
| 95 | 95 | ||
| 96 | static void l2x0_cache_sync(void) | ||
| 97 | { | ||
| 98 | unsigned long flags; | ||
| 99 | |||
| 100 | spin_lock_irqsave(&l2x0_lock, flags); | ||
| 101 | cache_sync(); | ||
| 102 | spin_unlock_irqrestore(&l2x0_lock, flags); | ||
| 103 | } | ||
| 104 | |||
| 96 | static inline void l2x0_inv_all(void) | 105 | static inline void l2x0_inv_all(void) |
| 97 | { | 106 | { |
| 98 | unsigned long flags; | 107 | unsigned long flags; |
| @@ -225,6 +234,7 @@ void __init l2x0_init(void __iomem *base, __u32 aux_val, __u32 aux_mask) | |||
| 225 | outer_cache.inv_range = l2x0_inv_range; | 234 | outer_cache.inv_range = l2x0_inv_range; |
| 226 | outer_cache.clean_range = l2x0_clean_range; | 235 | outer_cache.clean_range = l2x0_clean_range; |
| 227 | outer_cache.flush_range = l2x0_flush_range; | 236 | outer_cache.flush_range = l2x0_flush_range; |
| 237 | outer_cache.sync = l2x0_cache_sync; | ||
| 228 | 238 | ||
| 229 | printk(KERN_INFO "L2X0 cache controller enabled\n"); | 239 | printk(KERN_INFO "L2X0 cache controller enabled\n"); |
| 230 | } | 240 | } |
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c index 7f3f59fcaa21..a420cb949328 100644 --- a/arch/arm/vfp/vfpmodule.c +++ b/arch/arm/vfp/vfpmodule.c | |||
| @@ -545,7 +545,7 @@ static int __init vfp_init(void) | |||
| 545 | */ | 545 | */ |
| 546 | elf_hwcap |= HWCAP_VFP; | 546 | elf_hwcap |= HWCAP_VFP; |
| 547 | #ifdef CONFIG_VFPv3 | 547 | #ifdef CONFIG_VFPv3 |
| 548 | if (VFP_arch >= 3) { | 548 | if (VFP_arch >= 2) { |
| 549 | elf_hwcap |= HWCAP_VFPv3; | 549 | elf_hwcap |= HWCAP_VFPv3; |
| 550 | 550 | ||
| 551 | /* | 551 | /* |
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c b/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c index 929d017535a3..d4f8be307cd5 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c | |||
| @@ -481,6 +481,8 @@ mpc52xx_lpbfifo_probe(struct of_device *op, const struct of_device_id *match) | |||
| 481 | if (rc) | 481 | if (rc) |
| 482 | goto err_bcom_rx_irq; | 482 | goto err_bcom_rx_irq; |
| 483 | 483 | ||
| 484 | lpbfifo.dma_irqs_enabled = 1; | ||
| 485 | |||
| 484 | /* Request the Bestcomm transmit (memory --> fifo) task and IRQ */ | 486 | /* Request the Bestcomm transmit (memory --> fifo) task and IRQ */ |
| 485 | lpbfifo.bcom_tx_task = | 487 | lpbfifo.bcom_tx_task = |
| 486 | bcom_gen_bd_tx_init(2, res.start + LPBFIFO_REG_FIFO_DATA, | 488 | bcom_gen_bd_tx_init(2, res.start + LPBFIFO_REG_FIFO_DATA, |
diff --git a/arch/sh/configs/ecovec24_defconfig b/arch/sh/configs/ecovec24_defconfig index 18e3356406f3..6041c66dd10e 100644 --- a/arch/sh/configs/ecovec24_defconfig +++ b/arch/sh/configs/ecovec24_defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.33-rc2 | 3 | # Linux kernel version: 2.6.34-rc2 |
| 4 | # Mon Jan 4 11:20:36 2010 | 4 | # Mon Mar 29 02:21:58 2010 |
| 5 | # | 5 | # |
| 6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
| 7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
| @@ -13,8 +13,8 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y | |||
| 13 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
| 14 | CONFIG_GENERIC_HARDIRQS=y | 14 | CONFIG_GENERIC_HARDIRQS=y |
| 15 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y | 15 | CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y |
| 16 | CONFIG_GENERIC_IRQ_PROBE=y | ||
| 17 | CONFIG_IRQ_PER_CPU=y | 16 | CONFIG_IRQ_PER_CPU=y |
| 17 | CONFIG_SPARSE_IRQ=y | ||
| 18 | CONFIG_GENERIC_GPIO=y | 18 | CONFIG_GENERIC_GPIO=y |
| 19 | CONFIG_GENERIC_TIME=y | 19 | CONFIG_GENERIC_TIME=y |
| 20 | CONFIG_GENERIC_CLOCKEVENTS=y | 20 | CONFIG_GENERIC_CLOCKEVENTS=y |
| @@ -32,6 +32,7 @@ CONFIG_ARCH_NO_VIRT_TO_BUS=y | |||
| 32 | CONFIG_ARCH_HAS_DEFAULT_IDLE=y | 32 | CONFIG_ARCH_HAS_DEFAULT_IDLE=y |
| 33 | CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y | 33 | CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y |
| 34 | CONFIG_DMA_NONCOHERENT=y | 34 | CONFIG_DMA_NONCOHERENT=y |
| 35 | CONFIG_NEED_DMA_MAP_STATE=y | ||
| 35 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 36 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
| 36 | CONFIG_CONSTRUCTORS=y | 37 | CONFIG_CONSTRUCTORS=y |
| 37 | 38 | ||
| @@ -47,9 +48,11 @@ CONFIG_LOCALVERSION="" | |||
| 47 | CONFIG_HAVE_KERNEL_GZIP=y | 48 | CONFIG_HAVE_KERNEL_GZIP=y |
| 48 | CONFIG_HAVE_KERNEL_BZIP2=y | 49 | CONFIG_HAVE_KERNEL_BZIP2=y |
| 49 | CONFIG_HAVE_KERNEL_LZMA=y | 50 | CONFIG_HAVE_KERNEL_LZMA=y |
| 51 | CONFIG_HAVE_KERNEL_LZO=y | ||
| 50 | CONFIG_KERNEL_GZIP=y | 52 | CONFIG_KERNEL_GZIP=y |
| 51 | # CONFIG_KERNEL_BZIP2 is not set | 53 | # CONFIG_KERNEL_BZIP2 is not set |
| 52 | # CONFIG_KERNEL_LZMA is not set | 54 | # CONFIG_KERNEL_LZMA is not set |
| 55 | # CONFIG_KERNEL_LZO is not set | ||
| 53 | CONFIG_SWAP=y | 56 | CONFIG_SWAP=y |
| 54 | CONFIG_SYSVIPC=y | 57 | CONFIG_SYSVIPC=y |
| 55 | CONFIG_SYSVIPC_SYSCTL=y | 58 | CONFIG_SYSVIPC_SYSCTL=y |
| @@ -71,14 +74,8 @@ CONFIG_RCU_FANOUT=32 | |||
| 71 | # CONFIG_TREE_RCU_TRACE is not set | 74 | # CONFIG_TREE_RCU_TRACE is not set |
| 72 | # CONFIG_IKCONFIG is not set | 75 | # CONFIG_IKCONFIG is not set |
| 73 | CONFIG_LOG_BUF_SHIFT=14 | 76 | CONFIG_LOG_BUF_SHIFT=14 |
| 74 | CONFIG_GROUP_SCHED=y | ||
| 75 | CONFIG_FAIR_GROUP_SCHED=y | ||
| 76 | # CONFIG_RT_GROUP_SCHED is not set | ||
| 77 | CONFIG_USER_SCHED=y | ||
| 78 | # CONFIG_CGROUP_SCHED is not set | ||
| 79 | # CONFIG_CGROUPS is not set | 77 | # CONFIG_CGROUPS is not set |
| 80 | CONFIG_SYSFS_DEPRECATED=y | 78 | # CONFIG_SYSFS_DEPRECATED_V2 is not set |
| 81 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
| 82 | # CONFIG_RELAY is not set | 79 | # CONFIG_RELAY is not set |
| 83 | # CONFIG_NAMESPACES is not set | 80 | # CONFIG_NAMESPACES is not set |
| 84 | # CONFIG_BLK_DEV_INITRD is not set | 81 | # CONFIG_BLK_DEV_INITRD is not set |
| @@ -107,7 +104,7 @@ CONFIG_PERF_USE_VMALLOC=y | |||
| 107 | # | 104 | # |
| 108 | # Kernel Performance Events And Counters | 105 | # Kernel Performance Events And Counters |
| 109 | # | 106 | # |
| 110 | # CONFIG_PERF_EVENTS is not set | 107 | CONFIG_PERF_EVENTS=y |
| 111 | # CONFIG_PERF_COUNTERS is not set | 108 | # CONFIG_PERF_COUNTERS is not set |
| 112 | CONFIG_VM_EVENT_COUNTERS=y | 109 | CONFIG_VM_EVENT_COUNTERS=y |
| 113 | CONFIG_COMPAT_BRK=y | 110 | CONFIG_COMPAT_BRK=y |
| @@ -116,13 +113,13 @@ CONFIG_SLAB=y | |||
| 116 | # CONFIG_SLOB is not set | 113 | # CONFIG_SLOB is not set |
| 117 | # CONFIG_PROFILING is not set | 114 | # CONFIG_PROFILING is not set |
| 118 | CONFIG_HAVE_OPROFILE=y | 115 | CONFIG_HAVE_OPROFILE=y |
| 119 | CONFIG_HAVE_IOREMAP_PROT=y | ||
| 120 | CONFIG_HAVE_KPROBES=y | 116 | CONFIG_HAVE_KPROBES=y |
| 121 | CONFIG_HAVE_KRETPROBES=y | 117 | CONFIG_HAVE_KRETPROBES=y |
| 122 | CONFIG_HAVE_ARCH_TRACEHOOK=y | 118 | CONFIG_HAVE_ARCH_TRACEHOOK=y |
| 123 | CONFIG_HAVE_DMA_ATTRS=y | 119 | CONFIG_HAVE_DMA_ATTRS=y |
| 124 | CONFIG_HAVE_CLK=y | 120 | CONFIG_HAVE_CLK=y |
| 125 | CONFIG_HAVE_DMA_API_DEBUG=y | 121 | CONFIG_HAVE_DMA_API_DEBUG=y |
| 122 | CONFIG_HAVE_HW_BREAKPOINT=y | ||
| 126 | 123 | ||
| 127 | # | 124 | # |
| 128 | # GCOV-based kernel profiling | 125 | # GCOV-based kernel profiling |
| @@ -234,12 +231,12 @@ CONFIG_CPU_SUBTYPE_SH7724=y | |||
| 234 | CONFIG_QUICKLIST=y | 231 | CONFIG_QUICKLIST=y |
| 235 | CONFIG_MMU=y | 232 | CONFIG_MMU=y |
| 236 | CONFIG_PAGE_OFFSET=0x80000000 | 233 | CONFIG_PAGE_OFFSET=0x80000000 |
| 237 | CONFIG_FORCE_MAX_ZONEORDER=11 | 234 | CONFIG_FORCE_MAX_ZONEORDER=12 |
| 238 | CONFIG_MEMORY_START=0x08000000 | 235 | CONFIG_MEMORY_START=0x08000000 |
| 239 | CONFIG_MEMORY_SIZE=0x10000000 | 236 | CONFIG_MEMORY_SIZE=0x10000000 |
| 240 | CONFIG_29BIT=y | 237 | CONFIG_29BIT=y |
| 241 | # CONFIG_PMB_ENABLE is not set | 238 | # CONFIG_PMB is not set |
| 242 | # CONFIG_X2TLB is not set | 239 | CONFIG_X2TLB=y |
| 243 | CONFIG_VSYSCALL=y | 240 | CONFIG_VSYSCALL=y |
| 244 | CONFIG_ARCH_FLATMEM_ENABLE=y | 241 | CONFIG_ARCH_FLATMEM_ENABLE=y |
| 245 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | 242 | CONFIG_ARCH_SPARSEMEM_ENABLE=y |
| @@ -247,6 +244,8 @@ CONFIG_ARCH_SPARSEMEM_DEFAULT=y | |||
| 247 | CONFIG_MAX_ACTIVE_REGIONS=1 | 244 | CONFIG_MAX_ACTIVE_REGIONS=1 |
| 248 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 245 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
| 249 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | 246 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y |
| 247 | CONFIG_IOREMAP_FIXED=y | ||
| 248 | CONFIG_UNCACHED_MAPPING=y | ||
| 250 | CONFIG_PAGE_SIZE_4KB=y | 249 | CONFIG_PAGE_SIZE_4KB=y |
| 251 | # CONFIG_PAGE_SIZE_8KB is not set | 250 | # CONFIG_PAGE_SIZE_8KB is not set |
| 252 | # CONFIG_PAGE_SIZE_16KB is not set | 251 | # CONFIG_PAGE_SIZE_16KB is not set |
| @@ -262,7 +261,7 @@ CONFIG_PAGEFLAGS_EXTENDED=y | |||
| 262 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 261 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
| 263 | # CONFIG_PHYS_ADDR_T_64BIT is not set | 262 | # CONFIG_PHYS_ADDR_T_64BIT is not set |
| 264 | CONFIG_ZONE_DMA_FLAG=0 | 263 | CONFIG_ZONE_DMA_FLAG=0 |
| 265 | CONFIG_NR_QUICK=2 | 264 | CONFIG_NR_QUICK=1 |
| 266 | # CONFIG_KSM is not set | 265 | # CONFIG_KSM is not set |
| 267 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 | 266 | CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 |
| 268 | 267 | ||
| @@ -337,7 +336,6 @@ CONFIG_SECCOMP=y | |||
| 337 | # CONFIG_PREEMPT_VOLUNTARY is not set | 336 | # CONFIG_PREEMPT_VOLUNTARY is not set |
| 338 | CONFIG_PREEMPT=y | 337 | CONFIG_PREEMPT=y |
| 339 | CONFIG_GUSA=y | 338 | CONFIG_GUSA=y |
| 340 | # CONFIG_SPARSE_IRQ is not set | ||
| 341 | 339 | ||
| 342 | # | 340 | # |
| 343 | # Boot options | 341 | # Boot options |
| @@ -347,7 +345,7 @@ CONFIG_BOOT_LINK_OFFSET=0x00800000 | |||
| 347 | CONFIG_ENTRY_OFFSET=0x00001000 | 345 | CONFIG_ENTRY_OFFSET=0x00001000 |
| 348 | CONFIG_CMDLINE_OVERWRITE=y | 346 | CONFIG_CMDLINE_OVERWRITE=y |
| 349 | # CONFIG_CMDLINE_EXTEND is not set | 347 | # CONFIG_CMDLINE_EXTEND is not set |
| 350 | CONFIG_CMDLINE="console=tty0, console=ttySC0,115200 root=/dev/nfs ip=dhcp mem=120M memchunk.vpu=4m" | 348 | CONFIG_CMDLINE="console=tty0, console=ttySC0,115200 root=/dev/nfs ip=dhcp mem=248M memchunk.vpu=8m memchunk.veu0=4m" |
| 351 | 349 | ||
| 352 | # | 350 | # |
| 353 | # Bus options | 351 | # Bus options |
| @@ -373,6 +371,7 @@ CONFIG_SUSPEND=y | |||
| 373 | CONFIG_SUSPEND_FREEZER=y | 371 | CONFIG_SUSPEND_FREEZER=y |
| 374 | # CONFIG_HIBERNATION is not set | 372 | # CONFIG_HIBERNATION is not set |
| 375 | CONFIG_PM_RUNTIME=y | 373 | CONFIG_PM_RUNTIME=y |
| 374 | CONFIG_PM_OPS=y | ||
| 376 | # CONFIG_CPU_IDLE is not set | 375 | # CONFIG_CPU_IDLE is not set |
| 377 | CONFIG_NET=y | 376 | CONFIG_NET=y |
| 378 | 377 | ||
| @@ -380,7 +379,6 @@ CONFIG_NET=y | |||
| 380 | # Networking options | 379 | # Networking options |
| 381 | # | 380 | # |
| 382 | CONFIG_PACKET=y | 381 | CONFIG_PACKET=y |
| 383 | # CONFIG_PACKET_MMAP is not set | ||
| 384 | CONFIG_UNIX=y | 382 | CONFIG_UNIX=y |
| 385 | # CONFIG_NET_KEY is not set | 383 | # CONFIG_NET_KEY is not set |
| 386 | CONFIG_INET=y | 384 | CONFIG_INET=y |
| @@ -445,7 +443,45 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
| 445 | # CONFIG_NET_PKTGEN is not set | 443 | # CONFIG_NET_PKTGEN is not set |
| 446 | # CONFIG_HAMRADIO is not set | 444 | # CONFIG_HAMRADIO is not set |
| 447 | # CONFIG_CAN is not set | 445 | # CONFIG_CAN is not set |
| 448 | # CONFIG_IRDA is not set | 446 | CONFIG_IRDA=y |
| 447 | |||
| 448 | # | ||
| 449 | # IrDA protocols | ||
| 450 | # | ||
| 451 | # CONFIG_IRLAN is not set | ||
| 452 | # CONFIG_IRCOMM is not set | ||
| 453 | # CONFIG_IRDA_ULTRA is not set | ||
| 454 | |||
| 455 | # | ||
| 456 | # IrDA options | ||
| 457 | # | ||
| 458 | # CONFIG_IRDA_CACHE_LAST_LSAP is not set | ||
| 459 | # CONFIG_IRDA_FAST_RR is not set | ||
| 460 | # CONFIG_IRDA_DEBUG is not set | ||
| 461 | |||
| 462 | # | ||
| 463 | # Infrared-port device drivers | ||
| 464 | # | ||
| 465 | |||
| 466 | # | ||
| 467 | # SIR device drivers | ||
| 468 | # | ||
| 469 | # CONFIG_IRTTY_SIR is not set | ||
| 470 | |||
| 471 | # | ||
| 472 | # Dongle support | ||
| 473 | # | ||
| 474 | CONFIG_SH_SIR=y | ||
| 475 | # CONFIG_KINGSUN_DONGLE is not set | ||
| 476 | # CONFIG_KSDAZZLE_DONGLE is not set | ||
| 477 | # CONFIG_KS959_DONGLE is not set | ||
| 478 | |||
| 479 | # | ||
| 480 | # FIR device drivers | ||
| 481 | # | ||
| 482 | # CONFIG_USB_IRDA is not set | ||
| 483 | # CONFIG_SIGMATEL_FIR is not set | ||
| 484 | # CONFIG_MCS_FIR is not set | ||
| 449 | # CONFIG_BT is not set | 485 | # CONFIG_BT is not set |
| 450 | # CONFIG_AF_RXRPC is not set | 486 | # CONFIG_AF_RXRPC is not set |
| 451 | CONFIG_WIRELESS=y | 487 | CONFIG_WIRELESS=y |
| @@ -556,6 +592,7 @@ CONFIG_MTD_NAND_IDS=y | |||
| 556 | # CONFIG_MTD_NAND_NANDSIM is not set | 592 | # CONFIG_MTD_NAND_NANDSIM is not set |
| 557 | # CONFIG_MTD_NAND_PLATFORM is not set | 593 | # CONFIG_MTD_NAND_PLATFORM is not set |
| 558 | # CONFIG_MTD_ALAUDA is not set | 594 | # CONFIG_MTD_ALAUDA is not set |
| 595 | # CONFIG_MTD_NAND_SH_FLCTL is not set | ||
| 559 | # CONFIG_MTD_ONENAND is not set | 596 | # CONFIG_MTD_ONENAND is not set |
| 560 | 597 | ||
| 561 | # | 598 | # |
| @@ -597,6 +634,7 @@ CONFIG_MISC_DEVICES=y | |||
| 597 | # CONFIG_ICS932S401 is not set | 634 | # CONFIG_ICS932S401 is not set |
| 598 | # CONFIG_ENCLOSURE_SERVICES is not set | 635 | # CONFIG_ENCLOSURE_SERVICES is not set |
| 599 | # CONFIG_ISL29003 is not set | 636 | # CONFIG_ISL29003 is not set |
| 637 | # CONFIG_SENSORS_TSL2550 is not set | ||
| 600 | # CONFIG_DS1682 is not set | 638 | # CONFIG_DS1682 is not set |
| 601 | # CONFIG_TI_DAC7512 is not set | 639 | # CONFIG_TI_DAC7512 is not set |
| 602 | # CONFIG_C2PORT is not set | 640 | # CONFIG_C2PORT is not set |
| @@ -616,6 +654,7 @@ CONFIG_HAVE_IDE=y | |||
| 616 | # | 654 | # |
| 617 | # SCSI device support | 655 | # SCSI device support |
| 618 | # | 656 | # |
| 657 | CONFIG_SCSI_MOD=y | ||
| 619 | # CONFIG_RAID_ATTRS is not set | 658 | # CONFIG_RAID_ATTRS is not set |
| 620 | CONFIG_SCSI=y | 659 | CONFIG_SCSI=y |
| 621 | CONFIG_SCSI_DMA=y | 660 | CONFIG_SCSI_DMA=y |
| @@ -768,7 +807,29 @@ CONFIG_KEYBOARD_SH_KEYSC=y | |||
| 768 | # CONFIG_INPUT_MOUSE is not set | 807 | # CONFIG_INPUT_MOUSE is not set |
| 769 | # CONFIG_INPUT_JOYSTICK is not set | 808 | # CONFIG_INPUT_JOYSTICK is not set |
| 770 | # CONFIG_INPUT_TABLET is not set | 809 | # CONFIG_INPUT_TABLET is not set |
| 771 | # CONFIG_INPUT_TOUCHSCREEN is not set | 810 | CONFIG_INPUT_TOUCHSCREEN=y |
| 811 | # CONFIG_TOUCHSCREEN_ADS7846 is not set | ||
| 812 | # CONFIG_TOUCHSCREEN_AD7877 is not set | ||
| 813 | # CONFIG_TOUCHSCREEN_AD7879_I2C is not set | ||
| 814 | # CONFIG_TOUCHSCREEN_AD7879_SPI is not set | ||
| 815 | # CONFIG_TOUCHSCREEN_AD7879 is not set | ||
| 816 | # CONFIG_TOUCHSCREEN_DYNAPRO is not set | ||
| 817 | # CONFIG_TOUCHSCREEN_EETI is not set | ||
| 818 | # CONFIG_TOUCHSCREEN_FUJITSU is not set | ||
| 819 | # CONFIG_TOUCHSCREEN_GUNZE is not set | ||
| 820 | # CONFIG_TOUCHSCREEN_ELO is not set | ||
| 821 | # CONFIG_TOUCHSCREEN_WACOM_W8001 is not set | ||
| 822 | # CONFIG_TOUCHSCREEN_MCS5000 is not set | ||
| 823 | # CONFIG_TOUCHSCREEN_MTOUCH is not set | ||
| 824 | # CONFIG_TOUCHSCREEN_INEXIO is not set | ||
| 825 | # CONFIG_TOUCHSCREEN_MK712 is not set | ||
| 826 | # CONFIG_TOUCHSCREEN_PENMOUNT is not set | ||
| 827 | # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set | ||
| 828 | # CONFIG_TOUCHSCREEN_TOUCHWIN is not set | ||
| 829 | # CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set | ||
| 830 | # CONFIG_TOUCHSCREEN_TOUCHIT213 is not set | ||
| 831 | CONFIG_TOUCHSCREEN_TSC2007=y | ||
| 832 | # CONFIG_TOUCHSCREEN_W90X900 is not set | ||
| 772 | # CONFIG_INPUT_MISC is not set | 833 | # CONFIG_INPUT_MISC is not set |
| 773 | 834 | ||
| 774 | # | 835 | # |
| @@ -802,10 +863,10 @@ CONFIG_SERIAL_SH_SCI_NR_UARTS=6 | |||
| 802 | CONFIG_SERIAL_SH_SCI_CONSOLE=y | 863 | CONFIG_SERIAL_SH_SCI_CONSOLE=y |
| 803 | CONFIG_SERIAL_CORE=y | 864 | CONFIG_SERIAL_CORE=y |
| 804 | CONFIG_SERIAL_CORE_CONSOLE=y | 865 | CONFIG_SERIAL_CORE_CONSOLE=y |
| 866 | # CONFIG_SERIAL_TIMBERDALE is not set | ||
| 805 | CONFIG_UNIX98_PTYS=y | 867 | CONFIG_UNIX98_PTYS=y |
| 806 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set | 868 | # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set |
| 807 | CONFIG_LEGACY_PTYS=y | 869 | # CONFIG_LEGACY_PTYS is not set |
| 808 | CONFIG_LEGACY_PTY_COUNT=256 | ||
| 809 | # CONFIG_IPMI_HANDLER is not set | 870 | # CONFIG_IPMI_HANDLER is not set |
| 810 | CONFIG_HW_RANDOM=y | 871 | CONFIG_HW_RANDOM=y |
| 811 | # CONFIG_HW_RANDOM_TIMERIOMEM is not set | 872 | # CONFIG_HW_RANDOM_TIMERIOMEM is not set |
| @@ -830,6 +891,7 @@ CONFIG_I2C_HELPER_AUTO=y | |||
| 830 | # CONFIG_I2C_OCORES is not set | 891 | # CONFIG_I2C_OCORES is not set |
| 831 | CONFIG_I2C_SH_MOBILE=y | 892 | CONFIG_I2C_SH_MOBILE=y |
| 832 | # CONFIG_I2C_SIMTEC is not set | 893 | # CONFIG_I2C_SIMTEC is not set |
| 894 | # CONFIG_I2C_XILINX is not set | ||
| 833 | 895 | ||
| 834 | # | 896 | # |
| 835 | # External I2C/SMBus adapter drivers | 897 | # External I2C/SMBus adapter drivers |
| @@ -843,15 +905,9 @@ CONFIG_I2C_SH_MOBILE=y | |||
| 843 | # | 905 | # |
| 844 | # CONFIG_I2C_PCA_PLATFORM is not set | 906 | # CONFIG_I2C_PCA_PLATFORM is not set |
| 845 | # CONFIG_I2C_STUB is not set | 907 | # CONFIG_I2C_STUB is not set |
| 846 | |||
| 847 | # | ||
| 848 | # Miscellaneous I2C Chip support | ||
| 849 | # | ||
| 850 | # CONFIG_SENSORS_TSL2550 is not set | ||
| 851 | # CONFIG_I2C_DEBUG_CORE is not set | 908 | # CONFIG_I2C_DEBUG_CORE is not set |
| 852 | # CONFIG_I2C_DEBUG_ALGO is not set | 909 | # CONFIG_I2C_DEBUG_ALGO is not set |
| 853 | # CONFIG_I2C_DEBUG_BUS is not set | 910 | # CONFIG_I2C_DEBUG_BUS is not set |
| 854 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
| 855 | CONFIG_SPI=y | 911 | CONFIG_SPI=y |
| 856 | CONFIG_SPI_MASTER=y | 912 | CONFIG_SPI_MASTER=y |
| 857 | 913 | ||
| @@ -882,13 +938,16 @@ CONFIG_GPIOLIB=y | |||
| 882 | # | 938 | # |
| 883 | # Memory mapped GPIO expanders: | 939 | # Memory mapped GPIO expanders: |
| 884 | # | 940 | # |
| 941 | # CONFIG_GPIO_IT8761E is not set | ||
| 885 | 942 | ||
| 886 | # | 943 | # |
| 887 | # I2C GPIO expanders: | 944 | # I2C GPIO expanders: |
| 888 | # | 945 | # |
| 946 | # CONFIG_GPIO_MAX7300 is not set | ||
| 889 | # CONFIG_GPIO_MAX732X is not set | 947 | # CONFIG_GPIO_MAX732X is not set |
| 890 | # CONFIG_GPIO_PCA953X is not set | 948 | # CONFIG_GPIO_PCA953X is not set |
| 891 | # CONFIG_GPIO_PCF857X is not set | 949 | # CONFIG_GPIO_PCF857X is not set |
| 950 | # CONFIG_GPIO_ADP5588 is not set | ||
| 892 | 951 | ||
| 893 | # | 952 | # |
| 894 | # PCI GPIO expanders: | 953 | # PCI GPIO expanders: |
| @@ -919,23 +978,26 @@ CONFIG_SSB_POSSIBLE=y | |||
| 919 | # | 978 | # |
| 920 | # Multifunction device drivers | 979 | # Multifunction device drivers |
| 921 | # | 980 | # |
| 922 | # CONFIG_MFD_CORE is not set | 981 | CONFIG_MFD_CORE=y |
| 982 | # CONFIG_MFD_88PM860X is not set | ||
| 923 | # CONFIG_MFD_SM501 is not set | 983 | # CONFIG_MFD_SM501 is not set |
| 924 | # CONFIG_MFD_SH_MOBILE_SDHI is not set | 984 | CONFIG_MFD_SH_MOBILE_SDHI=y |
| 925 | # CONFIG_HTC_PASIC3 is not set | 985 | # CONFIG_HTC_PASIC3 is not set |
| 986 | # CONFIG_HTC_I2CPLD is not set | ||
| 926 | # CONFIG_TPS65010 is not set | 987 | # CONFIG_TPS65010 is not set |
| 927 | # CONFIG_TWL4030_CORE is not set | 988 | # CONFIG_TWL4030_CORE is not set |
| 928 | # CONFIG_MFD_TMIO is not set | 989 | # CONFIG_MFD_TMIO is not set |
| 929 | # CONFIG_PMIC_DA903X is not set | 990 | # CONFIG_PMIC_DA903X is not set |
| 930 | # CONFIG_PMIC_ADP5520 is not set | 991 | # CONFIG_PMIC_ADP5520 is not set |
| 992 | # CONFIG_MFD_MAX8925 is not set | ||
| 931 | # CONFIG_MFD_WM8400 is not set | 993 | # CONFIG_MFD_WM8400 is not set |
| 932 | # CONFIG_MFD_WM831X is not set | 994 | # CONFIG_MFD_WM831X is not set |
| 933 | # CONFIG_MFD_WM8350_I2C is not set | 995 | # CONFIG_MFD_WM8350_I2C is not set |
| 996 | # CONFIG_MFD_WM8994 is not set | ||
| 934 | # CONFIG_MFD_PCF50633 is not set | 997 | # CONFIG_MFD_PCF50633 is not set |
| 935 | # CONFIG_MFD_MC13783 is not set | 998 | # CONFIG_MFD_MC13783 is not set |
| 936 | # CONFIG_AB3100_CORE is not set | 999 | # CONFIG_AB3100_CORE is not set |
| 937 | # CONFIG_EZX_PCAP is not set | 1000 | # CONFIG_EZX_PCAP is not set |
| 938 | # CONFIG_MFD_88PM8607 is not set | ||
| 939 | # CONFIG_AB4500_CORE is not set | 1001 | # CONFIG_AB4500_CORE is not set |
| 940 | # CONFIG_REGULATOR is not set | 1002 | # CONFIG_REGULATOR is not set |
| 941 | CONFIG_MEDIA_SUPPORT=y | 1003 | CONFIG_MEDIA_SUPPORT=y |
| @@ -985,10 +1047,10 @@ CONFIG_SOC_CAMERA=y | |||
| 985 | # CONFIG_SOC_CAMERA_MT9M001 is not set | 1047 | # CONFIG_SOC_CAMERA_MT9M001 is not set |
| 986 | # CONFIG_SOC_CAMERA_MT9M111 is not set | 1048 | # CONFIG_SOC_CAMERA_MT9M111 is not set |
| 987 | # CONFIG_SOC_CAMERA_MT9T031 is not set | 1049 | # CONFIG_SOC_CAMERA_MT9T031 is not set |
| 988 | # CONFIG_SOC_CAMERA_MT9T112 is not set | 1050 | CONFIG_SOC_CAMERA_MT9T112=y |
| 989 | # CONFIG_SOC_CAMERA_MT9V022 is not set | 1051 | # CONFIG_SOC_CAMERA_MT9V022 is not set |
| 990 | # CONFIG_SOC_CAMERA_RJ54N1 is not set | 1052 | # CONFIG_SOC_CAMERA_RJ54N1 is not set |
| 991 | # CONFIG_SOC_CAMERA_TW9910 is not set | 1053 | CONFIG_SOC_CAMERA_TW9910=y |
| 992 | # CONFIG_SOC_CAMERA_PLATFORM is not set | 1054 | # CONFIG_SOC_CAMERA_PLATFORM is not set |
| 993 | # CONFIG_SOC_CAMERA_OV772X is not set | 1055 | # CONFIG_SOC_CAMERA_OV772X is not set |
| 994 | # CONFIG_SOC_CAMERA_OV9640 is not set | 1056 | # CONFIG_SOC_CAMERA_OV9640 is not set |
| @@ -1001,6 +1063,7 @@ CONFIG_RADIO_ADAPTERS=y | |||
| 1001 | # CONFIG_RADIO_SI470X is not set | 1063 | # CONFIG_RADIO_SI470X is not set |
| 1002 | # CONFIG_USB_MR800 is not set | 1064 | # CONFIG_USB_MR800 is not set |
| 1003 | # CONFIG_RADIO_TEA5764 is not set | 1065 | # CONFIG_RADIO_TEA5764 is not set |
| 1066 | # CONFIG_RADIO_SAA7706H is not set | ||
| 1004 | # CONFIG_RADIO_TEF6862 is not set | 1067 | # CONFIG_RADIO_TEF6862 is not set |
| 1005 | # CONFIG_DAB is not set | 1068 | # CONFIG_DAB is not set |
| 1006 | 1069 | ||
| @@ -1034,6 +1097,7 @@ CONFIG_FB_DEFERRED_IO=y | |||
| 1034 | # | 1097 | # |
| 1035 | # CONFIG_FB_S1D13XXX is not set | 1098 | # CONFIG_FB_S1D13XXX is not set |
| 1036 | CONFIG_FB_SH_MOBILE_LCDC=y | 1099 | CONFIG_FB_SH_MOBILE_LCDC=y |
| 1100 | # CONFIG_FB_TMIO is not set | ||
| 1037 | # CONFIG_FB_VIRTUAL is not set | 1101 | # CONFIG_FB_VIRTUAL is not set |
| 1038 | # CONFIG_FB_METRONOME is not set | 1102 | # CONFIG_FB_METRONOME is not set |
| 1039 | # CONFIG_FB_MB862XX is not set | 1103 | # CONFIG_FB_MB862XX is not set |
| @@ -1062,7 +1126,46 @@ CONFIG_LOGO=y | |||
| 1062 | # CONFIG_LOGO_SUPERH_MONO is not set | 1126 | # CONFIG_LOGO_SUPERH_MONO is not set |
| 1063 | # CONFIG_LOGO_SUPERH_VGA16 is not set | 1127 | # CONFIG_LOGO_SUPERH_VGA16 is not set |
| 1064 | CONFIG_LOGO_SUPERH_CLUT224=y | 1128 | CONFIG_LOGO_SUPERH_CLUT224=y |
| 1065 | # CONFIG_SOUND is not set | 1129 | CONFIG_SOUND=y |
| 1130 | CONFIG_SOUND_OSS_CORE=y | ||
| 1131 | CONFIG_SOUND_OSS_CORE_PRECLAIM=y | ||
| 1132 | CONFIG_SND=y | ||
| 1133 | CONFIG_SND_TIMER=y | ||
| 1134 | CONFIG_SND_PCM=y | ||
| 1135 | CONFIG_SND_JACK=y | ||
| 1136 | CONFIG_SND_SEQUENCER=y | ||
| 1137 | CONFIG_SND_SEQ_DUMMY=y | ||
| 1138 | CONFIG_SND_OSSEMUL=y | ||
| 1139 | CONFIG_SND_MIXER_OSS=y | ||
| 1140 | CONFIG_SND_PCM_OSS=y | ||
| 1141 | CONFIG_SND_PCM_OSS_PLUGINS=y | ||
| 1142 | # CONFIG_SND_SEQUENCER_OSS is not set | ||
| 1143 | # CONFIG_SND_DYNAMIC_MINORS is not set | ||
| 1144 | CONFIG_SND_SUPPORT_OLD_API=y | ||
| 1145 | CONFIG_SND_VERBOSE_PROCFS=y | ||
| 1146 | # CONFIG_SND_VERBOSE_PRINTK is not set | ||
| 1147 | # CONFIG_SND_DEBUG is not set | ||
| 1148 | # CONFIG_SND_RAWMIDI_SEQ is not set | ||
| 1149 | # CONFIG_SND_OPL3_LIB_SEQ is not set | ||
| 1150 | # CONFIG_SND_OPL4_LIB_SEQ is not set | ||
| 1151 | # CONFIG_SND_SBAWE_SEQ is not set | ||
| 1152 | # CONFIG_SND_EMU10K1_SEQ is not set | ||
| 1153 | # CONFIG_SND_DRIVERS is not set | ||
| 1154 | # CONFIG_SND_SPI is not set | ||
| 1155 | CONFIG_SND_SUPERH=y | ||
| 1156 | # CONFIG_SND_USB is not set | ||
| 1157 | CONFIG_SND_SOC=y | ||
| 1158 | |||
| 1159 | # | ||
| 1160 | # SoC Audio support for SuperH | ||
| 1161 | # | ||
| 1162 | CONFIG_SND_SOC_SH4_FSI=y | ||
| 1163 | # CONFIG_SND_FSI_AK4642 is not set | ||
| 1164 | CONFIG_SND_FSI_DA7210=y | ||
| 1165 | CONFIG_SND_SOC_I2C_AND_SPI=y | ||
| 1166 | # CONFIG_SND_SOC_ALL_CODECS is not set | ||
| 1167 | CONFIG_SND_SOC_DA7210=y | ||
| 1168 | # CONFIG_SOUND_PRIME is not set | ||
| 1066 | CONFIG_HID_SUPPORT=y | 1169 | CONFIG_HID_SUPPORT=y |
| 1067 | CONFIG_HID=y | 1170 | CONFIG_HID=y |
| 1068 | # CONFIG_HIDRAW is not set | 1171 | # CONFIG_HIDRAW is not set |
| @@ -1077,6 +1180,7 @@ CONFIG_USB_HID=y | |||
| 1077 | # | 1180 | # |
| 1078 | # Special HID drivers | 1181 | # Special HID drivers |
| 1079 | # | 1182 | # |
| 1183 | # CONFIG_HID_3M_PCT is not set | ||
| 1080 | # CONFIG_HID_A4TECH is not set | 1184 | # CONFIG_HID_A4TECH is not set |
| 1081 | # CONFIG_HID_APPLE is not set | 1185 | # CONFIG_HID_APPLE is not set |
| 1082 | # CONFIG_HID_BELKIN is not set | 1186 | # CONFIG_HID_BELKIN is not set |
| @@ -1091,12 +1195,16 @@ CONFIG_USB_HID=y | |||
| 1091 | # CONFIG_HID_KENSINGTON is not set | 1195 | # CONFIG_HID_KENSINGTON is not set |
| 1092 | # CONFIG_HID_LOGITECH is not set | 1196 | # CONFIG_HID_LOGITECH is not set |
| 1093 | # CONFIG_HID_MICROSOFT is not set | 1197 | # CONFIG_HID_MICROSOFT is not set |
| 1198 | # CONFIG_HID_MOSART is not set | ||
| 1094 | # CONFIG_HID_MONTEREY is not set | 1199 | # CONFIG_HID_MONTEREY is not set |
| 1095 | # CONFIG_HID_NTRIG is not set | 1200 | # CONFIG_HID_NTRIG is not set |
| 1201 | # CONFIG_HID_ORTEK is not set | ||
| 1096 | # CONFIG_HID_PANTHERLORD is not set | 1202 | # CONFIG_HID_PANTHERLORD is not set |
| 1097 | # CONFIG_HID_PETALYNX is not set | 1203 | # CONFIG_HID_PETALYNX is not set |
| 1204 | # CONFIG_HID_QUANTA is not set | ||
| 1098 | # CONFIG_HID_SAMSUNG is not set | 1205 | # CONFIG_HID_SAMSUNG is not set |
| 1099 | # CONFIG_HID_SONY is not set | 1206 | # CONFIG_HID_SONY is not set |
| 1207 | # CONFIG_HID_STANTUM is not set | ||
| 1100 | # CONFIG_HID_SUNPLUS is not set | 1208 | # CONFIG_HID_SUNPLUS is not set |
| 1101 | # CONFIG_HID_GREENASIA is not set | 1209 | # CONFIG_HID_GREENASIA is not set |
| 1102 | # CONFIG_HID_SMARTJOYPLUS is not set | 1210 | # CONFIG_HID_SMARTJOYPLUS is not set |
| @@ -1136,6 +1244,7 @@ CONFIG_USB_MON=y | |||
| 1136 | # CONFIG_USB_SL811_HCD is not set | 1244 | # CONFIG_USB_SL811_HCD is not set |
| 1137 | CONFIG_USB_R8A66597_HCD=y | 1245 | CONFIG_USB_R8A66597_HCD=y |
| 1138 | # CONFIG_USB_HWA_HCD is not set | 1246 | # CONFIG_USB_HWA_HCD is not set |
| 1247 | # CONFIG_USB_GADGET_MUSB_HDRC is not set | ||
| 1139 | 1248 | ||
| 1140 | # | 1249 | # |
| 1141 | # USB Device Class drivers | 1250 | # USB Device Class drivers |
| @@ -1188,7 +1297,6 @@ CONFIG_USB_STORAGE=y | |||
| 1188 | # CONFIG_USB_RIO500 is not set | 1297 | # CONFIG_USB_RIO500 is not set |
| 1189 | # CONFIG_USB_LEGOTOWER is not set | 1298 | # CONFIG_USB_LEGOTOWER is not set |
| 1190 | # CONFIG_USB_LCD is not set | 1299 | # CONFIG_USB_LCD is not set |
| 1191 | # CONFIG_USB_BERRY_CHARGE is not set | ||
| 1192 | # CONFIG_USB_LED is not set | 1300 | # CONFIG_USB_LED is not set |
| 1193 | # CONFIG_USB_CYPRESS_CY7C63 is not set | 1301 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
| 1194 | # CONFIG_USB_CYTHERM is not set | 1302 | # CONFIG_USB_CYTHERM is not set |
| @@ -1200,8 +1308,45 @@ CONFIG_USB_STORAGE=y | |||
| 1200 | # CONFIG_USB_IOWARRIOR is not set | 1308 | # CONFIG_USB_IOWARRIOR is not set |
| 1201 | # CONFIG_USB_TEST is not set | 1309 | # CONFIG_USB_TEST is not set |
| 1202 | # CONFIG_USB_ISIGHTFW is not set | 1310 | # CONFIG_USB_ISIGHTFW is not set |
| 1203 | # CONFIG_USB_VST is not set | 1311 | CONFIG_USB_GADGET=y |
| 1204 | # CONFIG_USB_GADGET is not set | 1312 | # CONFIG_USB_GADGET_DEBUG_FILES is not set |
| 1313 | # CONFIG_USB_GADGET_DEBUG_FS is not set | ||
| 1314 | CONFIG_USB_GADGET_VBUS_DRAW=2 | ||
| 1315 | CONFIG_USB_GADGET_SELECTED=y | ||
| 1316 | # CONFIG_USB_GADGET_AT91 is not set | ||
| 1317 | # CONFIG_USB_GADGET_ATMEL_USBA is not set | ||
| 1318 | # CONFIG_USB_GADGET_FSL_USB2 is not set | ||
| 1319 | # CONFIG_USB_GADGET_LH7A40X is not set | ||
| 1320 | # CONFIG_USB_GADGET_OMAP is not set | ||
| 1321 | # CONFIG_USB_GADGET_PXA25X is not set | ||
| 1322 | CONFIG_USB_GADGET_R8A66597=y | ||
| 1323 | CONFIG_USB_R8A66597=y | ||
| 1324 | # CONFIG_USB_GADGET_PXA27X is not set | ||
| 1325 | # CONFIG_USB_GADGET_S3C_HSOTG is not set | ||
| 1326 | # CONFIG_USB_GADGET_IMX is not set | ||
| 1327 | # CONFIG_USB_GADGET_S3C2410 is not set | ||
| 1328 | # CONFIG_USB_GADGET_M66592 is not set | ||
| 1329 | # CONFIG_USB_GADGET_AMD5536UDC is not set | ||
| 1330 | # CONFIG_USB_GADGET_FSL_QE is not set | ||
| 1331 | # CONFIG_USB_GADGET_CI13XXX is not set | ||
| 1332 | # CONFIG_USB_GADGET_NET2280 is not set | ||
| 1333 | # CONFIG_USB_GADGET_GOKU is not set | ||
| 1334 | # CONFIG_USB_GADGET_LANGWELL is not set | ||
| 1335 | # CONFIG_USB_GADGET_DUMMY_HCD is not set | ||
| 1336 | CONFIG_USB_GADGET_DUALSPEED=y | ||
| 1337 | # CONFIG_USB_ZERO is not set | ||
| 1338 | # CONFIG_USB_AUDIO is not set | ||
| 1339 | # CONFIG_USB_ETH is not set | ||
| 1340 | # CONFIG_USB_GADGETFS is not set | ||
| 1341 | CONFIG_USB_FILE_STORAGE=m | ||
| 1342 | # CONFIG_USB_FILE_STORAGE_TEST is not set | ||
| 1343 | # CONFIG_USB_MASS_STORAGE is not set | ||
| 1344 | # CONFIG_USB_G_SERIAL is not set | ||
| 1345 | # CONFIG_USB_MIDI_GADGET is not set | ||
| 1346 | # CONFIG_USB_G_PRINTER is not set | ||
| 1347 | # CONFIG_USB_CDC_COMPOSITE is not set | ||
| 1348 | # CONFIG_USB_G_NOKIA is not set | ||
| 1349 | # CONFIG_USB_G_MULTI is not set | ||
| 1205 | 1350 | ||
| 1206 | # | 1351 | # |
| 1207 | # OTG and related infrastructure | 1352 | # OTG and related infrastructure |
| @@ -1224,10 +1369,8 @@ CONFIG_MMC_BLOCK_BOUNCE=y | |||
| 1224 | # MMC/SD/SDIO Host Controller Drivers | 1369 | # MMC/SD/SDIO Host Controller Drivers |
| 1225 | # | 1370 | # |
| 1226 | # CONFIG_MMC_SDHCI is not set | 1371 | # CONFIG_MMC_SDHCI is not set |
| 1227 | # CONFIG_MMC_AT91 is not set | ||
| 1228 | # CONFIG_MMC_ATMELMCI is not set | ||
| 1229 | CONFIG_MMC_SPI=y | 1372 | CONFIG_MMC_SPI=y |
| 1230 | # CONFIG_MMC_TMIO is not set | 1373 | CONFIG_MMC_TMIO=y |
| 1231 | # CONFIG_MEMSTICK is not set | 1374 | # CONFIG_MEMSTICK is not set |
| 1232 | # CONFIG_NEW_LEDS is not set | 1375 | # CONFIG_NEW_LEDS is not set |
| 1233 | # CONFIG_ACCESSIBILITY is not set | 1376 | # CONFIG_ACCESSIBILITY is not set |
| @@ -1253,10 +1396,10 @@ CONFIG_RTC_INTF_DEV=y | |||
| 1253 | # CONFIG_RTC_DRV_DS1374 is not set | 1396 | # CONFIG_RTC_DRV_DS1374 is not set |
| 1254 | # CONFIG_RTC_DRV_DS1672 is not set | 1397 | # CONFIG_RTC_DRV_DS1672 is not set |
| 1255 | # CONFIG_RTC_DRV_MAX6900 is not set | 1398 | # CONFIG_RTC_DRV_MAX6900 is not set |
| 1256 | # CONFIG_RTC_DRV_RS5C372 is not set | 1399 | CONFIG_RTC_DRV_RS5C372=y |
| 1257 | # CONFIG_RTC_DRV_ISL1208 is not set | 1400 | # CONFIG_RTC_DRV_ISL1208 is not set |
| 1258 | # CONFIG_RTC_DRV_X1205 is not set | 1401 | # CONFIG_RTC_DRV_X1205 is not set |
| 1259 | CONFIG_RTC_DRV_PCF8563=y | 1402 | # CONFIG_RTC_DRV_PCF8563 is not set |
| 1260 | # CONFIG_RTC_DRV_PCF8583 is not set | 1403 | # CONFIG_RTC_DRV_PCF8583 is not set |
| 1261 | # CONFIG_RTC_DRV_M41T80 is not set | 1404 | # CONFIG_RTC_DRV_M41T80 is not set |
| 1262 | # CONFIG_RTC_DRV_BQ32K is not set | 1405 | # CONFIG_RTC_DRV_BQ32K is not set |
| @@ -1303,8 +1446,6 @@ CONFIG_RTC_DRV_PCF8563=y | |||
| 1303 | CONFIG_UIO=y | 1446 | CONFIG_UIO=y |
| 1304 | # CONFIG_UIO_PDRV is not set | 1447 | # CONFIG_UIO_PDRV is not set |
| 1305 | CONFIG_UIO_PDRV_GENIRQ=y | 1448 | CONFIG_UIO_PDRV_GENIRQ=y |
| 1306 | # CONFIG_UIO_SMX is not set | ||
| 1307 | # CONFIG_UIO_SERCOS3 is not set | ||
| 1308 | 1449 | ||
| 1309 | # | 1450 | # |
| 1310 | # TI VLYNQ | 1451 | # TI VLYNQ |
| @@ -1390,6 +1531,7 @@ CONFIG_MISC_FILESYSTEMS=y | |||
| 1390 | # CONFIG_EFS_FS is not set | 1531 | # CONFIG_EFS_FS is not set |
| 1391 | # CONFIG_JFFS2_FS is not set | 1532 | # CONFIG_JFFS2_FS is not set |
| 1392 | # CONFIG_UBIFS_FS is not set | 1533 | # CONFIG_UBIFS_FS is not set |
| 1534 | # CONFIG_LOGFS is not set | ||
| 1393 | # CONFIG_CRAMFS is not set | 1535 | # CONFIG_CRAMFS is not set |
| 1394 | # CONFIG_SQUASHFS is not set | 1536 | # CONFIG_SQUASHFS is not set |
| 1395 | # CONFIG_VXFS_FS is not set | 1537 | # CONFIG_VXFS_FS is not set |
| @@ -1418,6 +1560,7 @@ CONFIG_SUNRPC=y | |||
| 1418 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 1560 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
| 1419 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1561 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
| 1420 | # CONFIG_SMB_FS is not set | 1562 | # CONFIG_SMB_FS is not set |
| 1563 | # CONFIG_CEPH_FS is not set | ||
| 1421 | # CONFIG_CIFS is not set | 1564 | # CONFIG_CIFS is not set |
| 1422 | # CONFIG_NCP_FS is not set | 1565 | # CONFIG_NCP_FS is not set |
| 1423 | # CONFIG_CODA_FS is not set | 1566 | # CONFIG_CODA_FS is not set |
| @@ -1487,6 +1630,7 @@ CONFIG_DEBUG_FS=y | |||
| 1487 | CONFIG_DEBUG_BUGVERBOSE=y | 1630 | CONFIG_DEBUG_BUGVERBOSE=y |
| 1488 | # CONFIG_DEBUG_MEMORY_INIT is not set | 1631 | # CONFIG_DEBUG_MEMORY_INIT is not set |
| 1489 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 1632 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
| 1633 | # CONFIG_LKDTM is not set | ||
| 1490 | # CONFIG_LATENCYTOP is not set | 1634 | # CONFIG_LATENCYTOP is not set |
| 1491 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 1635 | CONFIG_SYSCTL_SYSCALL_CHECK=y |
| 1492 | CONFIG_HAVE_FUNCTION_TRACER=y | 1636 | CONFIG_HAVE_FUNCTION_TRACER=y |
| @@ -1618,7 +1762,7 @@ CONFIG_CRYPTO_HW=y | |||
| 1618 | # | 1762 | # |
| 1619 | CONFIG_BITREVERSE=y | 1763 | CONFIG_BITREVERSE=y |
| 1620 | CONFIG_GENERIC_FIND_LAST_BIT=y | 1764 | CONFIG_GENERIC_FIND_LAST_BIT=y |
| 1621 | # CONFIG_CRC_CCITT is not set | 1765 | CONFIG_CRC_CCITT=y |
| 1622 | # CONFIG_CRC16 is not set | 1766 | # CONFIG_CRC16 is not set |
| 1623 | CONFIG_CRC_T10DIF=y | 1767 | CONFIG_CRC_T10DIF=y |
| 1624 | CONFIG_CRC_ITU_T=y | 1768 | CONFIG_CRC_ITU_T=y |
diff --git a/arch/sh/include/asm/elf.h b/arch/sh/include/asm/elf.h index ac04255022b6..ce830faeebbf 100644 --- a/arch/sh/include/asm/elf.h +++ b/arch/sh/include/asm/elf.h | |||
| @@ -211,7 +211,9 @@ extern void __kernel_vsyscall; | |||
| 211 | 211 | ||
| 212 | #define VSYSCALL_AUX_ENT \ | 212 | #define VSYSCALL_AUX_ENT \ |
| 213 | if (vdso_enabled) \ | 213 | if (vdso_enabled) \ |
| 214 | NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_BASE); | 214 | NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_BASE); \ |
| 215 | else \ | ||
| 216 | NEW_AUX_ENT(AT_IGNORE, 0); | ||
| 215 | #else | 217 | #else |
| 216 | #define VSYSCALL_AUX_ENT | 218 | #define VSYSCALL_AUX_ENT |
| 217 | #endif /* CONFIG_VSYSCALL */ | 219 | #endif /* CONFIG_VSYSCALL */ |
| @@ -219,7 +221,7 @@ extern void __kernel_vsyscall; | |||
| 219 | #ifdef CONFIG_SH_FPU | 221 | #ifdef CONFIG_SH_FPU |
| 220 | #define FPU_AUX_ENT NEW_AUX_ENT(AT_FPUCW, FPSCR_INIT) | 222 | #define FPU_AUX_ENT NEW_AUX_ENT(AT_FPUCW, FPSCR_INIT) |
| 221 | #else | 223 | #else |
| 222 | #define FPU_AUX_ENT | 224 | #define FPU_AUX_ENT NEW_AUX_ENT(AT_IGNORE, 0) |
| 223 | #endif | 225 | #endif |
| 224 | 226 | ||
| 225 | extern int l1i_cache_shape, l1d_cache_shape, l2_cache_shape; | 227 | extern int l1i_cache_shape, l1d_cache_shape, l2_cache_shape; |
diff --git a/arch/sh/include/cpu-sh4/cpu/mmu_context.h b/arch/sh/include/cpu-sh4/cpu/mmu_context.h index 310ec92f2759..5963124c1d4a 100644 --- a/arch/sh/include/cpu-sh4/cpu/mmu_context.h +++ b/arch/sh/include/cpu-sh4/cpu/mmu_context.h | |||
| @@ -30,6 +30,8 @@ | |||
| 30 | #define MMUCR_URB 0x00FC0000 | 30 | #define MMUCR_URB 0x00FC0000 |
| 31 | #define MMUCR_URB_SHIFT 18 | 31 | #define MMUCR_URB_SHIFT 18 |
| 32 | #define MMUCR_URB_NENTRIES 64 | 32 | #define MMUCR_URB_NENTRIES 64 |
| 33 | #define MMUCR_URC 0x0000FC00 | ||
| 34 | #define MMUCR_URC_SHIFT 10 | ||
| 33 | 35 | ||
| 34 | #if defined(CONFIG_32BIT) && defined(CONFIG_CPU_SUBTYPE_ST40) | 36 | #if defined(CONFIG_32BIT) && defined(CONFIG_CPU_SUBTYPE_ST40) |
| 35 | #define MMUCR_SE (1 << 4) | 37 | #define MMUCR_SE (1 << 4) |
diff --git a/arch/sh/kernel/cpufreq.c b/arch/sh/kernel/cpufreq.c index dce4f3ff0932..0fffacea6ed9 100644 --- a/arch/sh/kernel/cpufreq.c +++ b/arch/sh/kernel/cpufreq.c | |||
| @@ -48,7 +48,7 @@ static int sh_cpufreq_target(struct cpufreq_policy *policy, | |||
| 48 | return -ENODEV; | 48 | return -ENODEV; |
| 49 | 49 | ||
| 50 | cpus_allowed = current->cpus_allowed; | 50 | cpus_allowed = current->cpus_allowed; |
| 51 | set_cpus_allowed(current, cpumask_of_cpu(cpu)); | 51 | set_cpus_allowed_ptr(current, cpumask_of(cpu)); |
| 52 | 52 | ||
| 53 | BUG_ON(smp_processor_id() != cpu); | 53 | BUG_ON(smp_processor_id() != cpu); |
| 54 | 54 | ||
| @@ -66,7 +66,7 @@ static int sh_cpufreq_target(struct cpufreq_policy *policy, | |||
| 66 | freqs.flags = 0; | 66 | freqs.flags = 0; |
| 67 | 67 | ||
| 68 | cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); | 68 | cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); |
| 69 | set_cpus_allowed(current, cpus_allowed); | 69 | set_cpus_allowed_ptr(current, &cpus_allowed); |
| 70 | clk_set_rate(cpuclk, freq); | 70 | clk_set_rate(cpuclk, freq); |
| 71 | cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); | 71 | cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); |
| 72 | 72 | ||
diff --git a/arch/sh/kernel/return_address.c b/arch/sh/kernel/return_address.c index df3ab5811074..cbf1dd5372b2 100644 --- a/arch/sh/kernel/return_address.c +++ b/arch/sh/kernel/return_address.c | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | * for more details. | 9 | * for more details. |
| 10 | */ | 10 | */ |
| 11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
| 12 | #include <linux/module.h> | ||
| 12 | #include <asm/dwarf.h> | 13 | #include <asm/dwarf.h> |
| 13 | 14 | ||
| 14 | #ifdef CONFIG_DWARF_UNWINDER | 15 | #ifdef CONFIG_DWARF_UNWINDER |
| @@ -52,3 +53,5 @@ void *return_address(unsigned int depth) | |||
| 52 | } | 53 | } |
| 53 | 54 | ||
| 54 | #endif | 55 | #endif |
| 56 | |||
| 57 | EXPORT_SYMBOL_GPL(return_address); | ||
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index e124cf7008df..002cc612deef 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c | |||
| @@ -69,6 +69,7 @@ asmlinkage void __cpuinit start_secondary(void) | |||
| 69 | unsigned int cpu; | 69 | unsigned int cpu; |
| 70 | struct mm_struct *mm = &init_mm; | 70 | struct mm_struct *mm = &init_mm; |
| 71 | 71 | ||
| 72 | enable_mmu(); | ||
| 72 | atomic_inc(&mm->mm_count); | 73 | atomic_inc(&mm->mm_count); |
| 73 | atomic_inc(&mm->mm_users); | 74 | atomic_inc(&mm->mm_users); |
| 74 | current->active_mm = mm; | 75 | current->active_mm = mm; |
diff --git a/arch/sh/mm/tlb-pteaex.c b/arch/sh/mm/tlb-pteaex.c index bdd0982b56ee..b71db6af8060 100644 --- a/arch/sh/mm/tlb-pteaex.c +++ b/arch/sh/mm/tlb-pteaex.c | |||
| @@ -77,3 +77,31 @@ void local_flush_tlb_one(unsigned long asid, unsigned long page) | |||
| 77 | __raw_writel(asid, MMU_ITLB_ADDRESS_ARRAY2 | MMU_PAGE_ASSOC_BIT); | 77 | __raw_writel(asid, MMU_ITLB_ADDRESS_ARRAY2 | MMU_PAGE_ASSOC_BIT); |
| 78 | back_to_cached(); | 78 | back_to_cached(); |
| 79 | } | 79 | } |
| 80 | |||
| 81 | void local_flush_tlb_all(void) | ||
| 82 | { | ||
| 83 | unsigned long flags, status; | ||
| 84 | int i; | ||
| 85 | |||
| 86 | /* | ||
| 87 | * Flush all the TLB. | ||
| 88 | */ | ||
| 89 | local_irq_save(flags); | ||
| 90 | jump_to_uncached(); | ||
| 91 | |||
| 92 | status = __raw_readl(MMUCR); | ||
| 93 | status = ((status & MMUCR_URB) >> MMUCR_URB_SHIFT); | ||
| 94 | |||
| 95 | if (status == 0) | ||
| 96 | status = MMUCR_URB_NENTRIES; | ||
| 97 | |||
| 98 | for (i = 0; i < status; i++) | ||
| 99 | __raw_writel(0x0, MMU_UTLB_ADDRESS_ARRAY | (i << 8)); | ||
| 100 | |||
| 101 | for (i = 0; i < 4; i++) | ||
| 102 | __raw_writel(0x0, MMU_ITLB_ADDRESS_ARRAY | (i << 8)); | ||
| 103 | |||
| 104 | back_to_cached(); | ||
| 105 | ctrl_barrier(); | ||
| 106 | local_irq_restore(flags); | ||
| 107 | } | ||
diff --git a/arch/sh/mm/tlb-sh3.c b/arch/sh/mm/tlb-sh3.c index 4f5f7cbdd508..7a940dbfc2e9 100644 --- a/arch/sh/mm/tlb-sh3.c +++ b/arch/sh/mm/tlb-sh3.c | |||
| @@ -77,3 +77,22 @@ void local_flush_tlb_one(unsigned long asid, unsigned long page) | |||
| 77 | for (i = 0; i < ways; i++) | 77 | for (i = 0; i < ways; i++) |
| 78 | __raw_writel(data, addr + (i << 8)); | 78 | __raw_writel(data, addr + (i << 8)); |
| 79 | } | 79 | } |
| 80 | |||
| 81 | void local_flush_tlb_all(void) | ||
| 82 | { | ||
| 83 | unsigned long flags, status; | ||
| 84 | |||
| 85 | /* | ||
| 86 | * Flush all the TLB. | ||
| 87 | * | ||
| 88 | * Write to the MMU control register's bit: | ||
| 89 | * TF-bit for SH-3, TI-bit for SH-4. | ||
| 90 | * It's same position, bit #2. | ||
| 91 | */ | ||
| 92 | local_irq_save(flags); | ||
| 93 | status = __raw_readl(MMUCR); | ||
| 94 | status |= 0x04; | ||
| 95 | __raw_writel(status, MMUCR); | ||
| 96 | ctrl_barrier(); | ||
| 97 | local_irq_restore(flags); | ||
| 98 | } | ||
diff --git a/arch/sh/mm/tlb-sh4.c b/arch/sh/mm/tlb-sh4.c index ccac77f504a8..cfdf7930d294 100644 --- a/arch/sh/mm/tlb-sh4.c +++ b/arch/sh/mm/tlb-sh4.c | |||
| @@ -80,3 +80,31 @@ void local_flush_tlb_one(unsigned long asid, unsigned long page) | |||
| 80 | __raw_writel(data, addr); | 80 | __raw_writel(data, addr); |
| 81 | back_to_cached(); | 81 | back_to_cached(); |
| 82 | } | 82 | } |
| 83 | |||
| 84 | void local_flush_tlb_all(void) | ||
| 85 | { | ||
| 86 | unsigned long flags, status; | ||
| 87 | int i; | ||
| 88 | |||
| 89 | /* | ||
| 90 | * Flush all the TLB. | ||
| 91 | */ | ||
| 92 | local_irq_save(flags); | ||
| 93 | jump_to_uncached(); | ||
| 94 | |||
| 95 | status = __raw_readl(MMUCR); | ||
| 96 | status = ((status & MMUCR_URB) >> MMUCR_URB_SHIFT); | ||
| 97 | |||
| 98 | if (status == 0) | ||
| 99 | status = MMUCR_URB_NENTRIES; | ||
| 100 | |||
| 101 | for (i = 0; i < status; i++) | ||
| 102 | __raw_writel(0x0, MMU_UTLB_ADDRESS_ARRAY | (i << 8)); | ||
| 103 | |||
| 104 | for (i = 0; i < 4; i++) | ||
| 105 | __raw_writel(0x0, MMU_ITLB_ADDRESS_ARRAY | (i << 8)); | ||
| 106 | |||
| 107 | back_to_cached(); | ||
| 108 | ctrl_barrier(); | ||
| 109 | local_irq_restore(flags); | ||
| 110 | } | ||
diff --git a/arch/sh/mm/tlb-urb.c b/arch/sh/mm/tlb-urb.c index bb5b9098956d..c92ce20db39b 100644 --- a/arch/sh/mm/tlb-urb.c +++ b/arch/sh/mm/tlb-urb.c | |||
| @@ -24,13 +24,9 @@ void tlb_wire_entry(struct vm_area_struct *vma, unsigned long addr, pte_t pte) | |||
| 24 | 24 | ||
| 25 | local_irq_save(flags); | 25 | local_irq_save(flags); |
| 26 | 26 | ||
| 27 | /* Load the entry into the TLB */ | ||
| 28 | __update_tlb(vma, addr, pte); | ||
| 29 | |||
| 30 | /* ... and wire it up. */ | ||
| 31 | status = __raw_readl(MMUCR); | 27 | status = __raw_readl(MMUCR); |
| 32 | urb = (status & MMUCR_URB) >> MMUCR_URB_SHIFT; | 28 | urb = (status & MMUCR_URB) >> MMUCR_URB_SHIFT; |
| 33 | status &= ~MMUCR_URB; | 29 | status &= ~MMUCR_URC; |
| 34 | 30 | ||
| 35 | /* | 31 | /* |
| 36 | * Make sure we're not trying to wire the last TLB entry slot. | 32 | * Make sure we're not trying to wire the last TLB entry slot. |
| @@ -39,7 +35,23 @@ void tlb_wire_entry(struct vm_area_struct *vma, unsigned long addr, pte_t pte) | |||
| 39 | 35 | ||
| 40 | urb = urb % MMUCR_URB_NENTRIES; | 36 | urb = urb % MMUCR_URB_NENTRIES; |
| 41 | 37 | ||
| 38 | /* | ||
| 39 | * Insert this entry into the highest non-wired TLB slot (via | ||
| 40 | * the URC field). | ||
| 41 | */ | ||
| 42 | status |= (urb << MMUCR_URC_SHIFT); | ||
| 43 | __raw_writel(status, MMUCR); | ||
| 44 | ctrl_barrier(); | ||
| 45 | |||
| 46 | /* Load the entry into the TLB */ | ||
| 47 | __update_tlb(vma, addr, pte); | ||
| 48 | |||
| 49 | /* ... and wire it up. */ | ||
| 50 | status = __raw_readl(MMUCR); | ||
| 51 | |||
| 52 | status &= ~MMUCR_URB; | ||
| 42 | status |= (urb << MMUCR_URB_SHIFT); | 53 | status |= (urb << MMUCR_URB_SHIFT); |
| 54 | |||
| 43 | __raw_writel(status, MMUCR); | 55 | __raw_writel(status, MMUCR); |
| 44 | ctrl_barrier(); | 56 | ctrl_barrier(); |
| 45 | 57 | ||
diff --git a/arch/sh/mm/tlbflush_32.c b/arch/sh/mm/tlbflush_32.c index 77dc5efa7127..3fbe03ce8fe3 100644 --- a/arch/sh/mm/tlbflush_32.c +++ b/arch/sh/mm/tlbflush_32.c | |||
| @@ -119,31 +119,3 @@ void local_flush_tlb_mm(struct mm_struct *mm) | |||
| 119 | local_irq_restore(flags); | 119 | local_irq_restore(flags); |
| 120 | } | 120 | } |
| 121 | } | 121 | } |
| 122 | |||
| 123 | void local_flush_tlb_all(void) | ||
| 124 | { | ||
| 125 | unsigned long flags, status; | ||
| 126 | int i; | ||
| 127 | |||
| 128 | /* | ||
| 129 | * Flush all the TLB. | ||
| 130 | */ | ||
| 131 | local_irq_save(flags); | ||
| 132 | jump_to_uncached(); | ||
| 133 | |||
| 134 | status = __raw_readl(MMUCR); | ||
| 135 | status = ((status & MMUCR_URB) >> MMUCR_URB_SHIFT); | ||
| 136 | |||
| 137 | if (status == 0) | ||
| 138 | status = MMUCR_URB_NENTRIES; | ||
| 139 | |||
| 140 | for (i = 0; i < status; i++) | ||
| 141 | __raw_writel(0x0, MMU_UTLB_ADDRESS_ARRAY | (i << 8)); | ||
| 142 | |||
| 143 | for (i = 0; i < 4; i++) | ||
| 144 | __raw_writel(0x0, MMU_ITLB_ADDRESS_ARRAY | (i << 8)); | ||
| 145 | |||
| 146 | back_to_cached(); | ||
| 147 | ctrl_barrier(); | ||
| 148 | local_irq_restore(flags); | ||
| 149 | } | ||
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index a42c466f7092..6da962c9b21c 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c | |||
| @@ -1423,6 +1423,8 @@ static void release_one_tty(struct work_struct *work) | |||
| 1423 | list_del_init(&tty->tty_files); | 1423 | list_del_init(&tty->tty_files); |
| 1424 | file_list_unlock(); | 1424 | file_list_unlock(); |
| 1425 | 1425 | ||
| 1426 | put_pid(tty->pgrp); | ||
| 1427 | put_pid(tty->session); | ||
| 1426 | free_tty_struct(tty); | 1428 | free_tty_struct(tty); |
| 1427 | } | 1429 | } |
| 1428 | 1430 | ||
diff --git a/drivers/hid/hid-gyration.c b/drivers/hid/hid-gyration.c index cab13e8c7d29..62416e6baeca 100644 --- a/drivers/hid/hid-gyration.c +++ b/drivers/hid/hid-gyration.c | |||
| @@ -53,10 +53,13 @@ static int gyration_input_mapping(struct hid_device *hdev, struct hid_input *hi, | |||
| 53 | static int gyration_event(struct hid_device *hdev, struct hid_field *field, | 53 | static int gyration_event(struct hid_device *hdev, struct hid_field *field, |
| 54 | struct hid_usage *usage, __s32 value) | 54 | struct hid_usage *usage, __s32 value) |
| 55 | { | 55 | { |
| 56 | struct input_dev *input = field->hidinput->input; | 56 | |
| 57 | if (!(hdev->claimed & HID_CLAIMED_INPUT) || !field->hidinput) | ||
| 58 | return 0; | ||
| 57 | 59 | ||
| 58 | if ((usage->hid & HID_USAGE_PAGE) == HID_UP_GENDESK && | 60 | if ((usage->hid & HID_USAGE_PAGE) == HID_UP_GENDESK && |
| 59 | (usage->hid & 0xff) == 0x82) { | 61 | (usage->hid & 0xff) == 0x82) { |
| 62 | struct input_dev *input = field->hidinput->input; | ||
| 60 | input_event(input, usage->type, usage->code, 1); | 63 | input_event(input, usage->type, usage->code, 1); |
| 61 | input_sync(input); | 64 | input_sync(input); |
| 62 | input_event(input, usage->type, usage->code, 0); | 65 | input_event(input, usage->type, usage->code, 0); |
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c index 928943c7ce9a..e71e0057284e 100644 --- a/drivers/hid/usbhid/hid-quirks.c +++ b/drivers/hid/usbhid/hid-quirks.c | |||
| @@ -60,6 +60,7 @@ static const struct hid_blacklist { | |||
| 60 | { USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC, HID_QUIRK_NOGET }, | 60 | { USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC, HID_QUIRK_NOGET }, |
| 61 | { USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET }, | 61 | { USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET }, |
| 62 | { USB_VENDOR_ID_PRODIGE, USB_DEVICE_ID_PRODIGE_CORDLESS, HID_QUIRK_NOGET }, | 62 | { USB_VENDOR_ID_PRODIGE, USB_DEVICE_ID_PRODIGE_CORDLESS, HID_QUIRK_NOGET }, |
| 63 | { USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN, HID_QUIRK_NOGET }, | ||
| 63 | { USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET }, | 64 | { USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET }, |
| 64 | { USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD, HID_QUIRK_NOGET }, | 65 | { USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD, HID_QUIRK_NOGET }, |
| 65 | { USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_PF1209, HID_QUIRK_MULTI_INPUT }, | 66 | { USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_PF1209, HID_QUIRK_MULTI_INPUT }, |
diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c index fcb6ec1af173..72450237a0f4 100644 --- a/drivers/misc/kgdbts.c +++ b/drivers/misc/kgdbts.c | |||
| @@ -295,6 +295,10 @@ static int check_and_rewind_pc(char *put_str, char *arg) | |||
| 295 | /* On x86 a breakpoint stop requires it to be decremented */ | 295 | /* On x86 a breakpoint stop requires it to be decremented */ |
| 296 | if (addr + 1 == kgdbts_regs.ip) | 296 | if (addr + 1 == kgdbts_regs.ip) |
| 297 | offset = -1; | 297 | offset = -1; |
| 298 | #elif defined(CONFIG_SUPERH) | ||
| 299 | /* On SUPERH a breakpoint stop requires it to be decremented */ | ||
| 300 | if (addr + 2 == kgdbts_regs.pc) | ||
| 301 | offset = -2; | ||
| 298 | #endif | 302 | #endif |
| 299 | if (strcmp(arg, "silent") && | 303 | if (strcmp(arg, "silent") && |
| 300 | instruction_pointer(&kgdbts_regs) + offset != addr) { | 304 | instruction_pointer(&kgdbts_regs) + offset != addr) { |
| @@ -305,6 +309,8 @@ static int check_and_rewind_pc(char *put_str, char *arg) | |||
| 305 | #ifdef CONFIG_X86 | 309 | #ifdef CONFIG_X86 |
| 306 | /* On x86 adjust the instruction pointer if needed */ | 310 | /* On x86 adjust the instruction pointer if needed */ |
| 307 | kgdbts_regs.ip += offset; | 311 | kgdbts_regs.ip += offset; |
| 312 | #elif defined(CONFIG_SUPERH) | ||
| 313 | kgdbts_regs.pc += offset; | ||
| 308 | #endif | 314 | #endif |
| 309 | return 0; | 315 | return 0; |
| 310 | } | 316 | } |
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index 406757a9d7ea..dee4fb56b094 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c | |||
| @@ -376,8 +376,11 @@ unsigned long __init unflatten_dt_node(unsigned long mem, | |||
| 376 | if (!np->type) | 376 | if (!np->type) |
| 377 | np->type = "<NULL>"; | 377 | np->type = "<NULL>"; |
| 378 | } | 378 | } |
| 379 | while (tag == OF_DT_BEGIN_NODE) { | 379 | while (tag == OF_DT_BEGIN_NODE || tag == OF_DT_NOP) { |
| 380 | mem = unflatten_dt_node(mem, p, np, allnextpp, fpsize); | 380 | if (tag == OF_DT_NOP) |
| 381 | *p += 4; | ||
| 382 | else | ||
| 383 | mem = unflatten_dt_node(mem, p, np, allnextpp, fpsize); | ||
| 381 | tag = be32_to_cpup((__be32 *)(*p)); | 384 | tag = be32_to_cpup((__be32 *)(*p)); |
| 382 | } | 385 | } |
| 383 | if (tag != OF_DT_END_NODE) { | 386 | if (tag != OF_DT_END_NODE) { |
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 3ea0b29c0104..27c0e6eb7136 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
| @@ -2123,6 +2123,9 @@ static void __devinit quirk_disable_msi(struct pci_dev *dev) | |||
| 2123 | } | 2123 | } |
| 2124 | } | 2124 | } |
| 2125 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_disable_msi); | 2125 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_disable_msi); |
| 2126 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, 0x9602, quirk_disable_msi); | ||
| 2127 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ASUSTEK, 0x9602, quirk_disable_msi); | ||
| 2128 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AI, 0x9602, quirk_disable_msi); | ||
| 2126 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, 0xa238, quirk_disable_msi); | 2129 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, 0xa238, quirk_disable_msi); |
| 2127 | 2130 | ||
| 2128 | /* Go through the list of Hypertransport capabilities and | 2131 | /* Go through the list of Hypertransport capabilities and |
| @@ -2495,39 +2498,6 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4374, | |||
| 2495 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4375, | 2498 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4375, |
| 2496 | quirk_msi_intx_disable_bug); | 2499 | quirk_msi_intx_disable_bug); |
| 2497 | 2500 | ||
| 2498 | /* | ||
| 2499 | * MSI does not work with the AMD RS780/RS880 internal graphics and HDMI audio | ||
| 2500 | * devices unless the BIOS has initialized the nb_cntl.strap_msi_enable bit. | ||
| 2501 | */ | ||
| 2502 | static void __init rs780_int_gfx_disable_msi(struct pci_dev *int_gfx_bridge) | ||
| 2503 | { | ||
| 2504 | u32 nb_cntl; | ||
| 2505 | |||
| 2506 | if (!int_gfx_bridge->subordinate) | ||
| 2507 | return; | ||
| 2508 | |||
| 2509 | pci_bus_write_config_dword(int_gfx_bridge->bus, PCI_DEVFN(0, 0), | ||
| 2510 | 0x60, 0); | ||
| 2511 | pci_bus_read_config_dword(int_gfx_bridge->bus, PCI_DEVFN(0, 0), | ||
| 2512 | 0x64, &nb_cntl); | ||
| 2513 | |||
| 2514 | if (!(nb_cntl & BIT(10))) { | ||
| 2515 | dev_warn(&int_gfx_bridge->dev, | ||
| 2516 | FW_WARN "RS780: MSI for internal graphics disabled\n"); | ||
| 2517 | int_gfx_bridge->subordinate->bus_flags |= PCI_BUS_FLAGS_NO_MSI; | ||
| 2518 | } | ||
| 2519 | } | ||
| 2520 | |||
| 2521 | #define PCI_DEVICE_ID_AMD_RS780_P2P_INT_GFX 0x9602 | ||
| 2522 | |||
| 2523 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, | ||
| 2524 | PCI_DEVICE_ID_AMD_RS780_P2P_INT_GFX, | ||
| 2525 | rs780_int_gfx_disable_msi); | ||
| 2526 | /* wrong vendor ID on M4A785TD motherboard: */ | ||
| 2527 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ASUSTEK, | ||
| 2528 | PCI_DEVICE_ID_AMD_RS780_P2P_INT_GFX, | ||
| 2529 | rs780_int_gfx_disable_msi); | ||
| 2530 | |||
| 2531 | #endif /* CONFIG_PCI_MSI */ | 2501 | #endif /* CONFIG_PCI_MSI */ |
| 2532 | 2502 | ||
| 2533 | #ifdef CONFIG_PCI_IOV | 2503 | #ifdef CONFIG_PCI_IOV |
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c index 12ac9cd32a07..df1bae9b048e 100644 --- a/drivers/usb/gadget/at91_udc.c +++ b/drivers/usb/gadget/at91_udc.c | |||
| @@ -1370,6 +1370,12 @@ static irqreturn_t at91_udc_irq (int irq, void *_udc) | |||
| 1370 | { | 1370 | { |
| 1371 | struct at91_udc *udc = _udc; | 1371 | struct at91_udc *udc = _udc; |
| 1372 | u32 rescans = 5; | 1372 | u32 rescans = 5; |
| 1373 | int disable_clock = 0; | ||
| 1374 | |||
| 1375 | if (!udc->clocked) { | ||
| 1376 | clk_on(udc); | ||
| 1377 | disable_clock = 1; | ||
| 1378 | } | ||
| 1373 | 1379 | ||
| 1374 | while (rescans--) { | 1380 | while (rescans--) { |
| 1375 | u32 status; | 1381 | u32 status; |
| @@ -1458,6 +1464,9 @@ static irqreturn_t at91_udc_irq (int irq, void *_udc) | |||
| 1458 | } | 1464 | } |
| 1459 | } | 1465 | } |
| 1460 | 1466 | ||
| 1467 | if (disable_clock) | ||
| 1468 | clk_off(udc); | ||
| 1469 | |||
| 1461 | return IRQ_HANDLED; | 1470 | return IRQ_HANDLED; |
| 1462 | } | 1471 | } |
| 1463 | 1472 | ||
diff --git a/drivers/usb/gadget/r8a66597-udc.c b/drivers/usb/gadget/r8a66597-udc.c index 5e13d23b5f0c..8b45145b9136 100644 --- a/drivers/usb/gadget/r8a66597-udc.c +++ b/drivers/usb/gadget/r8a66597-udc.c | |||
| @@ -23,7 +23,6 @@ | |||
| 23 | #include <linux/module.h> | 23 | #include <linux/module.h> |
| 24 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
| 25 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
| 26 | #include <linux/err.h> | ||
| 27 | #include <linux/io.h> | 26 | #include <linux/io.h> |
| 28 | #include <linux/platform_device.h> | 27 | #include <linux/platform_device.h> |
| 29 | #include <linux/clk.h> | 28 | #include <linux/clk.h> |
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 183f8ff5f400..096273984c3b 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c | |||
| @@ -406,6 +406,7 @@ static int show_smap(struct seq_file *m, void *v) | |||
| 406 | 406 | ||
| 407 | memset(&mss, 0, sizeof mss); | 407 | memset(&mss, 0, sizeof mss); |
| 408 | mss.vma = vma; | 408 | mss.vma = vma; |
| 409 | /* mmap_sem is held in m_start */ | ||
| 409 | if (vma->vm_mm && !is_vm_hugetlb_page(vma)) | 410 | if (vma->vm_mm && !is_vm_hugetlb_page(vma)) |
| 410 | walk_page_range(vma->vm_start, vma->vm_end, &smaps_walk); | 411 | walk_page_range(vma->vm_start, vma->vm_end, &smaps_walk); |
| 411 | 412 | ||
| @@ -552,7 +553,8 @@ const struct file_operations proc_clear_refs_operations = { | |||
| 552 | }; | 553 | }; |
| 553 | 554 | ||
| 554 | struct pagemapread { | 555 | struct pagemapread { |
| 555 | u64 __user *out, *end; | 556 | int pos, len; |
| 557 | u64 *buffer; | ||
| 556 | }; | 558 | }; |
| 557 | 559 | ||
| 558 | #define PM_ENTRY_BYTES sizeof(u64) | 560 | #define PM_ENTRY_BYTES sizeof(u64) |
| @@ -575,10 +577,8 @@ struct pagemapread { | |||
| 575 | static int add_to_pagemap(unsigned long addr, u64 pfn, | 577 | static int add_to_pagemap(unsigned long addr, u64 pfn, |
| 576 | struct pagemapread *pm) | 578 | struct pagemapread *pm) |
| 577 | { | 579 | { |
| 578 | if (put_user(pfn, pm->out)) | 580 | pm->buffer[pm->pos++] = pfn; |
| 579 | return -EFAULT; | 581 | if (pm->pos >= pm->len) |
| 580 | pm->out++; | ||
| 581 | if (pm->out >= pm->end) | ||
| 582 | return PM_END_OF_BUFFER; | 582 | return PM_END_OF_BUFFER; |
| 583 | return 0; | 583 | return 0; |
| 584 | } | 584 | } |
| @@ -720,21 +720,20 @@ static int pagemap_hugetlb_range(pte_t *pte, unsigned long addr, | |||
| 720 | * determine which areas of memory are actually mapped and llseek to | 720 | * determine which areas of memory are actually mapped and llseek to |
| 721 | * skip over unmapped regions. | 721 | * skip over unmapped regions. |
| 722 | */ | 722 | */ |
| 723 | #define PAGEMAP_WALK_SIZE (PMD_SIZE) | ||
| 723 | static ssize_t pagemap_read(struct file *file, char __user *buf, | 724 | static ssize_t pagemap_read(struct file *file, char __user *buf, |
| 724 | size_t count, loff_t *ppos) | 725 | size_t count, loff_t *ppos) |
| 725 | { | 726 | { |
| 726 | struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode); | 727 | struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode); |
| 727 | struct page **pages, *page; | ||
| 728 | unsigned long uaddr, uend; | ||
| 729 | struct mm_struct *mm; | 728 | struct mm_struct *mm; |
| 730 | struct pagemapread pm; | 729 | struct pagemapread pm; |
| 731 | int pagecount; | ||
| 732 | int ret = -ESRCH; | 730 | int ret = -ESRCH; |
| 733 | struct mm_walk pagemap_walk = {}; | 731 | struct mm_walk pagemap_walk = {}; |
| 734 | unsigned long src; | 732 | unsigned long src; |
| 735 | unsigned long svpfn; | 733 | unsigned long svpfn; |
| 736 | unsigned long start_vaddr; | 734 | unsigned long start_vaddr; |
| 737 | unsigned long end_vaddr; | 735 | unsigned long end_vaddr; |
| 736 | int copied = 0; | ||
| 738 | 737 | ||
| 739 | if (!task) | 738 | if (!task) |
| 740 | goto out; | 739 | goto out; |
| @@ -757,35 +756,12 @@ static ssize_t pagemap_read(struct file *file, char __user *buf, | |||
| 757 | if (!mm) | 756 | if (!mm) |
| 758 | goto out_task; | 757 | goto out_task; |
| 759 | 758 | ||
| 760 | 759 | pm.len = PM_ENTRY_BYTES * (PAGEMAP_WALK_SIZE >> PAGE_SHIFT); | |
| 761 | uaddr = (unsigned long)buf & PAGE_MASK; | 760 | pm.buffer = kmalloc(pm.len, GFP_TEMPORARY); |
| 762 | uend = (unsigned long)(buf + count); | ||
| 763 | pagecount = (PAGE_ALIGN(uend) - uaddr) / PAGE_SIZE; | ||
| 764 | ret = 0; | ||
| 765 | if (pagecount == 0) | ||
| 766 | goto out_mm; | ||
| 767 | pages = kcalloc(pagecount, sizeof(struct page *), GFP_KERNEL); | ||
| 768 | ret = -ENOMEM; | 761 | ret = -ENOMEM; |
| 769 | if (!pages) | 762 | if (!pm.buffer) |
| 770 | goto out_mm; | 763 | goto out_mm; |
| 771 | 764 | ||
| 772 | down_read(¤t->mm->mmap_sem); | ||
| 773 | ret = get_user_pages(current, current->mm, uaddr, pagecount, | ||
| 774 | 1, 0, pages, NULL); | ||
| 775 | up_read(¤t->mm->mmap_sem); | ||
| 776 | |||
| 777 | if (ret < 0) | ||
| 778 | goto out_free; | ||
| 779 | |||
| 780 | if (ret != pagecount) { | ||
| 781 | pagecount = ret; | ||
| 782 | ret = -EFAULT; | ||
| 783 | goto out_pages; | ||
| 784 | } | ||
| 785 | |||
| 786 | pm.out = (u64 __user *)buf; | ||
| 787 | pm.end = (u64 __user *)(buf + count); | ||
| 788 | |||
| 789 | pagemap_walk.pmd_entry = pagemap_pte_range; | 765 | pagemap_walk.pmd_entry = pagemap_pte_range; |
| 790 | pagemap_walk.pte_hole = pagemap_pte_hole; | 766 | pagemap_walk.pte_hole = pagemap_pte_hole; |
| 791 | pagemap_walk.hugetlb_entry = pagemap_hugetlb_range; | 767 | pagemap_walk.hugetlb_entry = pagemap_hugetlb_range; |
| @@ -807,23 +783,36 @@ static ssize_t pagemap_read(struct file *file, char __user *buf, | |||
| 807 | * user buffer is tracked in "pm", and the walk | 783 | * user buffer is tracked in "pm", and the walk |
| 808 | * will stop when we hit the end of the buffer. | 784 | * will stop when we hit the end of the buffer. |
| 809 | */ | 785 | */ |
| 810 | ret = walk_page_range(start_vaddr, end_vaddr, &pagemap_walk); | 786 | ret = 0; |
| 811 | if (ret == PM_END_OF_BUFFER) | 787 | while (count && (start_vaddr < end_vaddr)) { |
| 812 | ret = 0; | 788 | int len; |
| 813 | /* don't need mmap_sem for these, but this looks cleaner */ | 789 | unsigned long end; |
| 814 | *ppos += (char __user *)pm.out - buf; | 790 | |
| 815 | if (!ret) | 791 | pm.pos = 0; |
| 816 | ret = (char __user *)pm.out - buf; | 792 | end = start_vaddr + PAGEMAP_WALK_SIZE; |
| 817 | 793 | /* overflow ? */ | |
| 818 | out_pages: | 794 | if (end < start_vaddr || end > end_vaddr) |
| 819 | for (; pagecount; pagecount--) { | 795 | end = end_vaddr; |
| 820 | page = pages[pagecount-1]; | 796 | down_read(&mm->mmap_sem); |
| 821 | if (!PageReserved(page)) | 797 | ret = walk_page_range(start_vaddr, end, &pagemap_walk); |
| 822 | SetPageDirty(page); | 798 | up_read(&mm->mmap_sem); |
| 823 | page_cache_release(page); | 799 | start_vaddr = end; |
| 800 | |||
| 801 | len = min(count, PM_ENTRY_BYTES * pm.pos); | ||
| 802 | if (copy_to_user(buf, pm.buffer, len) < 0) { | ||
| 803 | ret = -EFAULT; | ||
| 804 | goto out_free; | ||
| 805 | } | ||
| 806 | copied += len; | ||
| 807 | buf += len; | ||
| 808 | count -= len; | ||
| 824 | } | 809 | } |
| 810 | *ppos += copied; | ||
| 811 | if (!ret || ret == PM_END_OF_BUFFER) | ||
| 812 | ret = copied; | ||
| 813 | |||
| 825 | out_free: | 814 | out_free: |
| 826 | kfree(pages); | 815 | kfree(pm.buffer); |
| 827 | out_mm: | 816 | out_mm: |
| 828 | mmput(mm); | 817 | mmput(mm); |
| 829 | out_task: | 818 | out_task: |
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c index 04bf5d791bda..ab190511bc18 100644 --- a/fs/reiserfs/super.c +++ b/fs/reiserfs/super.c | |||
| @@ -1618,10 +1618,8 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent) | |||
| 1618 | save_mount_options(s, data); | 1618 | save_mount_options(s, data); |
| 1619 | 1619 | ||
| 1620 | sbi = kzalloc(sizeof(struct reiserfs_sb_info), GFP_KERNEL); | 1620 | sbi = kzalloc(sizeof(struct reiserfs_sb_info), GFP_KERNEL); |
| 1621 | if (!sbi) { | 1621 | if (!sbi) |
| 1622 | errval = -ENOMEM; | 1622 | return -ENOMEM; |
| 1623 | goto error_alloc; | ||
| 1624 | } | ||
| 1625 | s->s_fs_info = sbi; | 1623 | s->s_fs_info = sbi; |
| 1626 | /* Set default values for options: non-aggressive tails, RO on errors */ | 1624 | /* Set default values for options: non-aggressive tails, RO on errors */ |
| 1627 | REISERFS_SB(s)->s_mount_opt |= (1 << REISERFS_SMALLTAIL); | 1625 | REISERFS_SB(s)->s_mount_opt |= (1 << REISERFS_SMALLTAIL); |
| @@ -1878,12 +1876,12 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent) | |||
| 1878 | return (0); | 1876 | return (0); |
| 1879 | 1877 | ||
| 1880 | error: | 1878 | error: |
| 1881 | reiserfs_write_unlock(s); | ||
| 1882 | error_alloc: | ||
| 1883 | if (jinit_done) { /* kill the commit thread, free journal ram */ | 1879 | if (jinit_done) { /* kill the commit thread, free journal ram */ |
| 1884 | journal_release_error(NULL, s); | 1880 | journal_release_error(NULL, s); |
| 1885 | } | 1881 | } |
| 1886 | 1882 | ||
| 1883 | reiserfs_write_unlock(s); | ||
| 1884 | |||
| 1887 | reiserfs_free_bitmap_cache(s); | 1885 | reiserfs_free_bitmap_cache(s); |
| 1888 | if (SB_BUFFER_WITH_SB(s)) | 1886 | if (SB_BUFFER_WITH_SB(s)) |
| 1889 | brelse(SB_BUFFER_WITH_SB(s)); | 1887 | brelse(SB_BUFFER_WITH_SB(s)); |
diff --git a/include/linux/amba/bus.h b/include/linux/amba/bus.h index 6816be6c3f77..8b1038607831 100644 --- a/include/linux/amba/bus.h +++ b/include/linux/amba/bus.h | |||
| @@ -14,6 +14,9 @@ | |||
| 14 | #ifndef ASMARM_AMBA_H | 14 | #ifndef ASMARM_AMBA_H |
| 15 | #define ASMARM_AMBA_H | 15 | #define ASMARM_AMBA_H |
| 16 | 16 | ||
| 17 | #include <linux/device.h> | ||
| 18 | #include <linux/resource.h> | ||
| 19 | |||
| 17 | #define AMBA_NR_IRQS 2 | 20 | #define AMBA_NR_IRQS 2 |
| 18 | 21 | ||
| 19 | struct amba_device { | 22 | struct amba_device { |
diff --git a/include/linux/amba/pl061.h b/include/linux/amba/pl061.h index b4fbd9862606..5ddd9ad4b19c 100644 --- a/include/linux/amba/pl061.h +++ b/include/linux/amba/pl061.h | |||
| @@ -1,3 +1,5 @@ | |||
| 1 | #include <linux/types.h> | ||
| 2 | |||
| 1 | /* platform data for the PL061 GPIO driver */ | 3 | /* platform data for the PL061 GPIO driver */ |
| 2 | 4 | ||
| 3 | struct pl061_platform_data { | 5 | struct pl061_platform_data { |
diff --git a/include/linux/freezer.h b/include/linux/freezer.h index 5a361f85cfec..da7e52b099f3 100644 --- a/include/linux/freezer.h +++ b/include/linux/freezer.h | |||
| @@ -64,9 +64,12 @@ extern bool freeze_task(struct task_struct *p, bool sig_only); | |||
| 64 | extern void cancel_freezing(struct task_struct *p); | 64 | extern void cancel_freezing(struct task_struct *p); |
| 65 | 65 | ||
| 66 | #ifdef CONFIG_CGROUP_FREEZER | 66 | #ifdef CONFIG_CGROUP_FREEZER |
| 67 | extern int cgroup_frozen(struct task_struct *task); | 67 | extern int cgroup_freezing_or_frozen(struct task_struct *task); |
| 68 | #else /* !CONFIG_CGROUP_FREEZER */ | 68 | #else /* !CONFIG_CGROUP_FREEZER */ |
| 69 | static inline int cgroup_frozen(struct task_struct *task) { return 0; } | 69 | static inline int cgroup_freezing_or_frozen(struct task_struct *task) |
| 70 | { | ||
| 71 | return 0; | ||
| 72 | } | ||
| 70 | #endif /* !CONFIG_CGROUP_FREEZER */ | 73 | #endif /* !CONFIG_CGROUP_FREEZER */ |
| 71 | 74 | ||
| 72 | /* | 75 | /* |
diff --git a/kernel/cgroup_freezer.c b/kernel/cgroup_freezer.c index 59e9ef6aab40..eb3f34d57419 100644 --- a/kernel/cgroup_freezer.c +++ b/kernel/cgroup_freezer.c | |||
| @@ -47,17 +47,20 @@ static inline struct freezer *task_freezer(struct task_struct *task) | |||
| 47 | struct freezer, css); | 47 | struct freezer, css); |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | int cgroup_frozen(struct task_struct *task) | 50 | int cgroup_freezing_or_frozen(struct task_struct *task) |
| 51 | { | 51 | { |
| 52 | struct freezer *freezer; | 52 | struct freezer *freezer; |
| 53 | enum freezer_state state; | 53 | enum freezer_state state; |
| 54 | 54 | ||
| 55 | task_lock(task); | 55 | task_lock(task); |
| 56 | freezer = task_freezer(task); | 56 | freezer = task_freezer(task); |
| 57 | state = freezer->state; | 57 | if (!freezer->css.cgroup->parent) |
| 58 | state = CGROUP_THAWED; /* root cgroup can't be frozen */ | ||
| 59 | else | ||
| 60 | state = freezer->state; | ||
| 58 | task_unlock(task); | 61 | task_unlock(task); |
| 59 | 62 | ||
| 60 | return state == CGROUP_FROZEN; | 63 | return (state == CGROUP_FREEZING) || (state == CGROUP_FROZEN); |
| 61 | } | 64 | } |
| 62 | 65 | ||
| 63 | /* | 66 | /* |
diff --git a/kernel/kgdb.c b/kernel/kgdb.c index 761fdd2b3034..11f3515ca83f 100644 --- a/kernel/kgdb.c +++ b/kernel/kgdb.c | |||
| @@ -69,9 +69,16 @@ struct kgdb_state { | |||
| 69 | struct pt_regs *linux_regs; | 69 | struct pt_regs *linux_regs; |
| 70 | }; | 70 | }; |
| 71 | 71 | ||
| 72 | /* Exception state values */ | ||
| 73 | #define DCPU_WANT_MASTER 0x1 /* Waiting to become a master kgdb cpu */ | ||
| 74 | #define DCPU_NEXT_MASTER 0x2 /* Transition from one master cpu to another */ | ||
| 75 | #define DCPU_IS_SLAVE 0x4 /* Slave cpu enter exception */ | ||
| 76 | #define DCPU_SSTEP 0x8 /* CPU is single stepping */ | ||
| 77 | |||
| 72 | static struct debuggerinfo_struct { | 78 | static struct debuggerinfo_struct { |
| 73 | void *debuggerinfo; | 79 | void *debuggerinfo; |
| 74 | struct task_struct *task; | 80 | struct task_struct *task; |
| 81 | int exception_state; | ||
| 75 | } kgdb_info[NR_CPUS]; | 82 | } kgdb_info[NR_CPUS]; |
| 76 | 83 | ||
| 77 | /** | 84 | /** |
| @@ -391,27 +398,22 @@ int kgdb_mem2hex(char *mem, char *buf, int count) | |||
| 391 | 398 | ||
| 392 | /* | 399 | /* |
| 393 | * Copy the binary array pointed to by buf into mem. Fix $, #, and | 400 | * Copy the binary array pointed to by buf into mem. Fix $, #, and |
| 394 | * 0x7d escaped with 0x7d. Return a pointer to the character after | 401 | * 0x7d escaped with 0x7d. Return -EFAULT on failure or 0 on success. |
| 395 | * the last byte written. | 402 | * The input buf is overwitten with the result to write to mem. |
| 396 | */ | 403 | */ |
| 397 | static int kgdb_ebin2mem(char *buf, char *mem, int count) | 404 | static int kgdb_ebin2mem(char *buf, char *mem, int count) |
| 398 | { | 405 | { |
| 399 | int err = 0; | 406 | int size = 0; |
| 400 | char c; | 407 | char *c = buf; |
| 401 | 408 | ||
| 402 | while (count-- > 0) { | 409 | while (count-- > 0) { |
| 403 | c = *buf++; | 410 | c[size] = *buf++; |
| 404 | if (c == 0x7d) | 411 | if (c[size] == 0x7d) |
| 405 | c = *buf++ ^ 0x20; | 412 | c[size] = *buf++ ^ 0x20; |
| 406 | 413 | size++; | |
| 407 | err = probe_kernel_write(mem, &c, 1); | ||
| 408 | if (err) | ||
| 409 | break; | ||
| 410 | |||
| 411 | mem++; | ||
| 412 | } | 414 | } |
| 413 | 415 | ||
| 414 | return err; | 416 | return probe_kernel_write(mem, c, size); |
| 415 | } | 417 | } |
| 416 | 418 | ||
| 417 | /* | 419 | /* |
| @@ -563,49 +565,6 @@ static struct task_struct *getthread(struct pt_regs *regs, int tid) | |||
| 563 | } | 565 | } |
| 564 | 566 | ||
| 565 | /* | 567 | /* |
| 566 | * CPU debug state control: | ||
| 567 | */ | ||
| 568 | |||
| 569 | #ifdef CONFIG_SMP | ||
| 570 | static void kgdb_wait(struct pt_regs *regs) | ||
| 571 | { | ||
| 572 | unsigned long flags; | ||
| 573 | int cpu; | ||
| 574 | |||
| 575 | local_irq_save(flags); | ||
| 576 | cpu = raw_smp_processor_id(); | ||
| 577 | kgdb_info[cpu].debuggerinfo = regs; | ||
| 578 | kgdb_info[cpu].task = current; | ||
| 579 | /* | ||
| 580 | * Make sure the above info reaches the primary CPU before | ||
| 581 | * our cpu_in_kgdb[] flag setting does: | ||
| 582 | */ | ||
| 583 | smp_wmb(); | ||
| 584 | atomic_set(&cpu_in_kgdb[cpu], 1); | ||
| 585 | |||
| 586 | /* Disable any cpu specific hw breakpoints */ | ||
| 587 | kgdb_disable_hw_debug(regs); | ||
| 588 | |||
| 589 | /* Wait till primary CPU is done with debugging */ | ||
| 590 | while (atomic_read(&passive_cpu_wait[cpu])) | ||
| 591 | cpu_relax(); | ||
| 592 | |||
| 593 | kgdb_info[cpu].debuggerinfo = NULL; | ||
| 594 | kgdb_info[cpu].task = NULL; | ||
| 595 | |||
| 596 | /* fix up hardware debug registers on local cpu */ | ||
| 597 | if (arch_kgdb_ops.correct_hw_break) | ||
| 598 | arch_kgdb_ops.correct_hw_break(); | ||
| 599 | |||
| 600 | /* Signal the primary CPU that we are done: */ | ||
| 601 | atomic_set(&cpu_in_kgdb[cpu], 0); | ||
| 602 | touch_softlockup_watchdog_sync(); | ||
| 603 | clocksource_touch_watchdog(); | ||
| 604 | local_irq_restore(flags); | ||
| 605 | } | ||
| 606 | #endif | ||
| 607 | |||
| 608 | /* | ||
| 609 | * Some architectures need cache flushes when we set/clear a | 568 | * Some architectures need cache flushes when we set/clear a |
| 610 | * breakpoint: | 569 | * breakpoint: |
| 611 | */ | 570 | */ |
| @@ -1400,34 +1359,13 @@ static int kgdb_reenter_check(struct kgdb_state *ks) | |||
| 1400 | return 1; | 1359 | return 1; |
| 1401 | } | 1360 | } |
| 1402 | 1361 | ||
| 1403 | /* | 1362 | static int kgdb_cpu_enter(struct kgdb_state *ks, struct pt_regs *regs) |
| 1404 | * kgdb_handle_exception() - main entry point from a kernel exception | ||
| 1405 | * | ||
| 1406 | * Locking hierarchy: | ||
| 1407 | * interface locks, if any (begin_session) | ||
| 1408 | * kgdb lock (kgdb_active) | ||
| 1409 | */ | ||
| 1410 | int | ||
| 1411 | kgdb_handle_exception(int evector, int signo, int ecode, struct pt_regs *regs) | ||
| 1412 | { | 1363 | { |
| 1413 | struct kgdb_state kgdb_var; | ||
| 1414 | struct kgdb_state *ks = &kgdb_var; | ||
| 1415 | unsigned long flags; | 1364 | unsigned long flags; |
| 1416 | int sstep_tries = 100; | 1365 | int sstep_tries = 100; |
| 1417 | int error = 0; | 1366 | int error = 0; |
| 1418 | int i, cpu; | 1367 | int i, cpu; |
| 1419 | 1368 | int trace_on = 0; | |
| 1420 | ks->cpu = raw_smp_processor_id(); | ||
| 1421 | ks->ex_vector = evector; | ||
| 1422 | ks->signo = signo; | ||
| 1423 | ks->ex_vector = evector; | ||
| 1424 | ks->err_code = ecode; | ||
| 1425 | ks->kgdb_usethreadid = 0; | ||
| 1426 | ks->linux_regs = regs; | ||
| 1427 | |||
| 1428 | if (kgdb_reenter_check(ks)) | ||
| 1429 | return 0; /* Ouch, double exception ! */ | ||
| 1430 | |||
| 1431 | acquirelock: | 1369 | acquirelock: |
| 1432 | /* | 1370 | /* |
| 1433 | * Interrupts will be restored by the 'trap return' code, except when | 1371 | * Interrupts will be restored by the 'trap return' code, except when |
| @@ -1435,13 +1373,43 @@ acquirelock: | |||
| 1435 | */ | 1373 | */ |
| 1436 | local_irq_save(flags); | 1374 | local_irq_save(flags); |
| 1437 | 1375 | ||
| 1438 | cpu = raw_smp_processor_id(); | 1376 | cpu = ks->cpu; |
| 1377 | kgdb_info[cpu].debuggerinfo = regs; | ||
| 1378 | kgdb_info[cpu].task = current; | ||
| 1379 | /* | ||
| 1380 | * Make sure the above info reaches the primary CPU before | ||
| 1381 | * our cpu_in_kgdb[] flag setting does: | ||
| 1382 | */ | ||
| 1383 | atomic_inc(&cpu_in_kgdb[cpu]); | ||
| 1439 | 1384 | ||
| 1440 | /* | 1385 | /* |
| 1441 | * Acquire the kgdb_active lock: | 1386 | * CPU will loop if it is a slave or request to become a kgdb |
| 1387 | * master cpu and acquire the kgdb_active lock: | ||
| 1442 | */ | 1388 | */ |
| 1443 | while (atomic_cmpxchg(&kgdb_active, -1, cpu) != -1) | 1389 | while (1) { |
| 1390 | if (kgdb_info[cpu].exception_state & DCPU_WANT_MASTER) { | ||
| 1391 | if (atomic_cmpxchg(&kgdb_active, -1, cpu) == cpu) | ||
| 1392 | break; | ||
| 1393 | } else if (kgdb_info[cpu].exception_state & DCPU_IS_SLAVE) { | ||
| 1394 | if (!atomic_read(&passive_cpu_wait[cpu])) | ||
| 1395 | goto return_normal; | ||
| 1396 | } else { | ||
| 1397 | return_normal: | ||
| 1398 | /* Return to normal operation by executing any | ||
| 1399 | * hw breakpoint fixup. | ||
| 1400 | */ | ||
| 1401 | if (arch_kgdb_ops.correct_hw_break) | ||
| 1402 | arch_kgdb_ops.correct_hw_break(); | ||
| 1403 | if (trace_on) | ||
| 1404 | tracing_on(); | ||
| 1405 | atomic_dec(&cpu_in_kgdb[cpu]); | ||
| 1406 | touch_softlockup_watchdog_sync(); | ||
| 1407 | clocksource_touch_watchdog(); | ||
| 1408 | local_irq_restore(flags); | ||
| 1409 | return 0; | ||
| 1410 | } | ||
| 1444 | cpu_relax(); | 1411 | cpu_relax(); |
| 1412 | } | ||
| 1445 | 1413 | ||
| 1446 | /* | 1414 | /* |
| 1447 | * For single stepping, try to only enter on the processor | 1415 | * For single stepping, try to only enter on the processor |
| @@ -1475,9 +1443,6 @@ acquirelock: | |||
| 1475 | if (kgdb_io_ops->pre_exception) | 1443 | if (kgdb_io_ops->pre_exception) |
| 1476 | kgdb_io_ops->pre_exception(); | 1444 | kgdb_io_ops->pre_exception(); |
| 1477 | 1445 | ||
| 1478 | kgdb_info[ks->cpu].debuggerinfo = ks->linux_regs; | ||
| 1479 | kgdb_info[ks->cpu].task = current; | ||
| 1480 | |||
| 1481 | kgdb_disable_hw_debug(ks->linux_regs); | 1446 | kgdb_disable_hw_debug(ks->linux_regs); |
| 1482 | 1447 | ||
| 1483 | /* | 1448 | /* |
| @@ -1486,15 +1451,9 @@ acquirelock: | |||
| 1486 | */ | 1451 | */ |
| 1487 | if (!kgdb_single_step) { | 1452 | if (!kgdb_single_step) { |
| 1488 | for (i = 0; i < NR_CPUS; i++) | 1453 | for (i = 0; i < NR_CPUS; i++) |
| 1489 | atomic_set(&passive_cpu_wait[i], 1); | 1454 | atomic_inc(&passive_cpu_wait[i]); |
| 1490 | } | 1455 | } |
| 1491 | 1456 | ||
| 1492 | /* | ||
| 1493 | * spin_lock code is good enough as a barrier so we don't | ||
| 1494 | * need one here: | ||
| 1495 | */ | ||
| 1496 | atomic_set(&cpu_in_kgdb[ks->cpu], 1); | ||
| 1497 | |||
| 1498 | #ifdef CONFIG_SMP | 1457 | #ifdef CONFIG_SMP |
| 1499 | /* Signal the other CPUs to enter kgdb_wait() */ | 1458 | /* Signal the other CPUs to enter kgdb_wait() */ |
| 1500 | if ((!kgdb_single_step) && kgdb_do_roundup) | 1459 | if ((!kgdb_single_step) && kgdb_do_roundup) |
| @@ -1518,6 +1477,9 @@ acquirelock: | |||
| 1518 | kgdb_single_step = 0; | 1477 | kgdb_single_step = 0; |
| 1519 | kgdb_contthread = current; | 1478 | kgdb_contthread = current; |
| 1520 | exception_level = 0; | 1479 | exception_level = 0; |
| 1480 | trace_on = tracing_is_on(); | ||
| 1481 | if (trace_on) | ||
| 1482 | tracing_off(); | ||
| 1521 | 1483 | ||
| 1522 | /* Talk to debugger with gdbserial protocol */ | 1484 | /* Talk to debugger with gdbserial protocol */ |
| 1523 | error = gdb_serial_stub(ks); | 1485 | error = gdb_serial_stub(ks); |
| @@ -1526,13 +1488,11 @@ acquirelock: | |||
| 1526 | if (kgdb_io_ops->post_exception) | 1488 | if (kgdb_io_ops->post_exception) |
| 1527 | kgdb_io_ops->post_exception(); | 1489 | kgdb_io_ops->post_exception(); |
| 1528 | 1490 | ||
| 1529 | kgdb_info[ks->cpu].debuggerinfo = NULL; | 1491 | atomic_dec(&cpu_in_kgdb[ks->cpu]); |
| 1530 | kgdb_info[ks->cpu].task = NULL; | ||
| 1531 | atomic_set(&cpu_in_kgdb[ks->cpu], 0); | ||
| 1532 | 1492 | ||
| 1533 | if (!kgdb_single_step) { | 1493 | if (!kgdb_single_step) { |
| 1534 | for (i = NR_CPUS-1; i >= 0; i--) | 1494 | for (i = NR_CPUS-1; i >= 0; i--) |
| 1535 | atomic_set(&passive_cpu_wait[i], 0); | 1495 | atomic_dec(&passive_cpu_wait[i]); |
| 1536 | /* | 1496 | /* |
| 1537 | * Wait till all the CPUs have quit | 1497 | * Wait till all the CPUs have quit |
| 1538 | * from the debugger. | 1498 | * from the debugger. |
| @@ -1551,6 +1511,8 @@ kgdb_restore: | |||
| 1551 | else | 1511 | else |
| 1552 | kgdb_sstep_pid = 0; | 1512 | kgdb_sstep_pid = 0; |
| 1553 | } | 1513 | } |
| 1514 | if (trace_on) | ||
| 1515 | tracing_on(); | ||
| 1554 | /* Free kgdb_active */ | 1516 | /* Free kgdb_active */ |
| 1555 | atomic_set(&kgdb_active, -1); | 1517 | atomic_set(&kgdb_active, -1); |
| 1556 | touch_softlockup_watchdog_sync(); | 1518 | touch_softlockup_watchdog_sync(); |
| @@ -1560,13 +1522,52 @@ kgdb_restore: | |||
| 1560 | return error; | 1522 | return error; |
| 1561 | } | 1523 | } |
| 1562 | 1524 | ||
| 1525 | /* | ||
| 1526 | * kgdb_handle_exception() - main entry point from a kernel exception | ||
| 1527 | * | ||
| 1528 | * Locking hierarchy: | ||
| 1529 | * interface locks, if any (begin_session) | ||
| 1530 | * kgdb lock (kgdb_active) | ||
| 1531 | */ | ||
| 1532 | int | ||
| 1533 | kgdb_handle_exception(int evector, int signo, int ecode, struct pt_regs *regs) | ||
| 1534 | { | ||
| 1535 | struct kgdb_state kgdb_var; | ||
| 1536 | struct kgdb_state *ks = &kgdb_var; | ||
| 1537 | int ret; | ||
| 1538 | |||
| 1539 | ks->cpu = raw_smp_processor_id(); | ||
| 1540 | ks->ex_vector = evector; | ||
| 1541 | ks->signo = signo; | ||
| 1542 | ks->ex_vector = evector; | ||
| 1543 | ks->err_code = ecode; | ||
| 1544 | ks->kgdb_usethreadid = 0; | ||
| 1545 | ks->linux_regs = regs; | ||
| 1546 | |||
| 1547 | if (kgdb_reenter_check(ks)) | ||
| 1548 | return 0; /* Ouch, double exception ! */ | ||
| 1549 | kgdb_info[ks->cpu].exception_state |= DCPU_WANT_MASTER; | ||
| 1550 | ret = kgdb_cpu_enter(ks, regs); | ||
| 1551 | kgdb_info[ks->cpu].exception_state &= ~DCPU_WANT_MASTER; | ||
| 1552 | return ret; | ||
| 1553 | } | ||
| 1554 | |||
| 1563 | int kgdb_nmicallback(int cpu, void *regs) | 1555 | int kgdb_nmicallback(int cpu, void *regs) |
| 1564 | { | 1556 | { |
| 1565 | #ifdef CONFIG_SMP | 1557 | #ifdef CONFIG_SMP |
| 1558 | struct kgdb_state kgdb_var; | ||
| 1559 | struct kgdb_state *ks = &kgdb_var; | ||
| 1560 | |||
| 1561 | memset(ks, 0, sizeof(struct kgdb_state)); | ||
| 1562 | ks->cpu = cpu; | ||
| 1563 | ks->linux_regs = regs; | ||
| 1564 | |||
| 1566 | if (!atomic_read(&cpu_in_kgdb[cpu]) && | 1565 | if (!atomic_read(&cpu_in_kgdb[cpu]) && |
| 1567 | atomic_read(&kgdb_active) != cpu && | 1566 | atomic_read(&kgdb_active) != -1 && |
| 1568 | atomic_read(&cpu_in_kgdb[atomic_read(&kgdb_active)])) { | 1567 | atomic_read(&kgdb_active) != cpu) { |
| 1569 | kgdb_wait((struct pt_regs *)regs); | 1568 | kgdb_info[cpu].exception_state |= DCPU_IS_SLAVE; |
| 1569 | kgdb_cpu_enter(ks, regs); | ||
| 1570 | kgdb_info[cpu].exception_state &= ~DCPU_IS_SLAVE; | ||
| 1570 | return 0; | 1571 | return 0; |
| 1571 | } | 1572 | } |
| 1572 | #endif | 1573 | #endif |
| @@ -1742,11 +1743,11 @@ EXPORT_SYMBOL_GPL(kgdb_unregister_io_module); | |||
| 1742 | */ | 1743 | */ |
| 1743 | void kgdb_breakpoint(void) | 1744 | void kgdb_breakpoint(void) |
| 1744 | { | 1745 | { |
| 1745 | atomic_set(&kgdb_setting_breakpoint, 1); | 1746 | atomic_inc(&kgdb_setting_breakpoint); |
| 1746 | wmb(); /* Sync point before breakpoint */ | 1747 | wmb(); /* Sync point before breakpoint */ |
| 1747 | arch_kgdb_breakpoint(); | 1748 | arch_kgdb_breakpoint(); |
| 1748 | wmb(); /* Sync point after breakpoint */ | 1749 | wmb(); /* Sync point after breakpoint */ |
| 1749 | atomic_set(&kgdb_setting_breakpoint, 0); | 1750 | atomic_dec(&kgdb_setting_breakpoint); |
| 1750 | } | 1751 | } |
| 1751 | EXPORT_SYMBOL_GPL(kgdb_breakpoint); | 1752 | EXPORT_SYMBOL_GPL(kgdb_breakpoint); |
| 1752 | 1753 | ||
diff --git a/kernel/power/process.c b/kernel/power/process.c index 5ade1bdcf366..71ae29052ab6 100644 --- a/kernel/power/process.c +++ b/kernel/power/process.c | |||
| @@ -88,12 +88,11 @@ static int try_to_freeze_tasks(bool sig_only) | |||
| 88 | printk(KERN_ERR "Freezing of tasks failed after %d.%02d seconds " | 88 | printk(KERN_ERR "Freezing of tasks failed after %d.%02d seconds " |
| 89 | "(%d tasks refusing to freeze):\n", | 89 | "(%d tasks refusing to freeze):\n", |
| 90 | elapsed_csecs / 100, elapsed_csecs % 100, todo); | 90 | elapsed_csecs / 100, elapsed_csecs % 100, todo); |
| 91 | show_state(); | ||
| 92 | read_lock(&tasklist_lock); | 91 | read_lock(&tasklist_lock); |
| 93 | do_each_thread(g, p) { | 92 | do_each_thread(g, p) { |
| 94 | task_lock(p); | 93 | task_lock(p); |
| 95 | if (freezing(p) && !freezer_should_skip(p)) | 94 | if (freezing(p) && !freezer_should_skip(p)) |
| 96 | printk(KERN_ERR " %s\n", p->comm); | 95 | sched_show_task(p); |
| 97 | cancel_freezing(p); | 96 | cancel_freezing(p); |
| 98 | task_unlock(p); | 97 | task_unlock(p); |
| 99 | } while_each_thread(g, p); | 98 | } while_each_thread(g, p); |
| @@ -145,7 +144,7 @@ static void thaw_tasks(bool nosig_only) | |||
| 145 | if (nosig_only && should_send_signal(p)) | 144 | if (nosig_only && should_send_signal(p)) |
| 146 | continue; | 145 | continue; |
| 147 | 146 | ||
| 148 | if (cgroup_frozen(p)) | 147 | if (cgroup_freezing_or_frozen(p)) |
| 149 | continue; | 148 | continue; |
| 150 | 149 | ||
| 151 | thaw_process(p); | 150 | thaw_process(p); |
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index d1187ef20caf..9a0f9bf6a37b 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c | |||
| @@ -1209,18 +1209,19 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned nr_pages) | |||
| 1209 | 1209 | ||
| 1210 | for (i = 0; i < nr_pages; i++) { | 1210 | for (i = 0; i < nr_pages; i++) { |
| 1211 | if (RB_WARN_ON(cpu_buffer, list_empty(cpu_buffer->pages))) | 1211 | if (RB_WARN_ON(cpu_buffer, list_empty(cpu_buffer->pages))) |
| 1212 | return; | 1212 | goto out; |
| 1213 | p = cpu_buffer->pages->next; | 1213 | p = cpu_buffer->pages->next; |
| 1214 | bpage = list_entry(p, struct buffer_page, list); | 1214 | bpage = list_entry(p, struct buffer_page, list); |
| 1215 | list_del_init(&bpage->list); | 1215 | list_del_init(&bpage->list); |
| 1216 | free_buffer_page(bpage); | 1216 | free_buffer_page(bpage); |
| 1217 | } | 1217 | } |
| 1218 | if (RB_WARN_ON(cpu_buffer, list_empty(cpu_buffer->pages))) | 1218 | if (RB_WARN_ON(cpu_buffer, list_empty(cpu_buffer->pages))) |
| 1219 | return; | 1219 | goto out; |
| 1220 | 1220 | ||
| 1221 | rb_reset_cpu(cpu_buffer); | 1221 | rb_reset_cpu(cpu_buffer); |
| 1222 | rb_check_pages(cpu_buffer); | 1222 | rb_check_pages(cpu_buffer); |
| 1223 | 1223 | ||
| 1224 | out: | ||
| 1224 | spin_unlock_irq(&cpu_buffer->reader_lock); | 1225 | spin_unlock_irq(&cpu_buffer->reader_lock); |
| 1225 | } | 1226 | } |
| 1226 | 1227 | ||
| @@ -1237,7 +1238,7 @@ rb_insert_pages(struct ring_buffer_per_cpu *cpu_buffer, | |||
| 1237 | 1238 | ||
| 1238 | for (i = 0; i < nr_pages; i++) { | 1239 | for (i = 0; i < nr_pages; i++) { |
| 1239 | if (RB_WARN_ON(cpu_buffer, list_empty(pages))) | 1240 | if (RB_WARN_ON(cpu_buffer, list_empty(pages))) |
| 1240 | return; | 1241 | goto out; |
| 1241 | p = pages->next; | 1242 | p = pages->next; |
| 1242 | bpage = list_entry(p, struct buffer_page, list); | 1243 | bpage = list_entry(p, struct buffer_page, list); |
| 1243 | list_del_init(&bpage->list); | 1244 | list_del_init(&bpage->list); |
| @@ -1246,6 +1247,7 @@ rb_insert_pages(struct ring_buffer_per_cpu *cpu_buffer, | |||
| 1246 | rb_reset_cpu(cpu_buffer); | 1247 | rb_reset_cpu(cpu_buffer); |
| 1247 | rb_check_pages(cpu_buffer); | 1248 | rb_check_pages(cpu_buffer); |
| 1248 | 1249 | ||
| 1250 | out: | ||
| 1249 | spin_unlock_irq(&cpu_buffer->reader_lock); | 1251 | spin_unlock_irq(&cpu_buffer->reader_lock); |
| 1250 | } | 1252 | } |
| 1251 | 1253 | ||
diff --git a/kernel/trace/trace_clock.c b/kernel/trace/trace_clock.c index 6fbfb8f417b9..9d589d8dcd1a 100644 --- a/kernel/trace/trace_clock.c +++ b/kernel/trace/trace_clock.c | |||
| @@ -84,7 +84,7 @@ u64 notrace trace_clock_global(void) | |||
| 84 | int this_cpu; | 84 | int this_cpu; |
| 85 | u64 now; | 85 | u64 now; |
| 86 | 86 | ||
| 87 | raw_local_irq_save(flags); | 87 | local_irq_save(flags); |
| 88 | 88 | ||
| 89 | this_cpu = raw_smp_processor_id(); | 89 | this_cpu = raw_smp_processor_id(); |
| 90 | now = cpu_clock(this_cpu); | 90 | now = cpu_clock(this_cpu); |
| @@ -110,7 +110,7 @@ u64 notrace trace_clock_global(void) | |||
| 110 | arch_spin_unlock(&trace_clock_struct.lock); | 110 | arch_spin_unlock(&trace_clock_struct.lock); |
| 111 | 111 | ||
| 112 | out: | 112 | out: |
| 113 | raw_local_irq_restore(flags); | 113 | local_irq_restore(flags); |
| 114 | 114 | ||
| 115 | return now; | 115 | return now; |
| 116 | } | 116 | } |
