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

Configure Feed

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

Merge branch 'fixes' of master.kernel.org:/home/rmk/linux-2.6-arm

* 'fixes' of master.kernel.org:/home/rmk/linux-2.6-arm:
ARM: 6879/1: fix personality test wrt usage of domain handlers
ARM: 6878/1: fix personality flag propagation across an exec
ARM: 6877/1: the ADDR_NO_RANDOMIZE personality flag should be honored with mmap()
ARM: 6876/1: Kconfig.debug: Remove unused CONFIG_DEBUG_ERRORS
ARM: pxa: convert incorrect IRQ_TO_IRQ() to irq_to_gpio()
ARM: mmp: align NR_BUILTIN_GPIO with gpio interrupt number
ARM: pxa: align NR_BUILTIN_GPIO with GPIO interrupt number
ARM: pxa: always clear LPM bits for PXA168 MFPR
pcmcia: limit pxa2xx_trizeps4 subdriver to trizeps4 platform
pcmcia: limit pxa2xx_balloon3 subdriver to balloon3 platform
ARM: pxafb: Fix access to nonexistent member of pxafb_info
ARM: 6872/1: arch:common:Makefile Remove unused config in the Makefile.
ARM: 6868/1: Preserve the VFP state during fork
ARM: 6867/1: Introduce THREAD_NOTIFY_COPY for copy_thread() hooks
ARM: 6866/1: Do not restrict HIGHPTE to !OUTER_CACHE
ARM: 6865/1: perf: ensure pass through zero is counted on overflow
ARM: 6864/1: hw_breakpoint: clear DBGVCR out of reset
ARM: Only allow PM_SLEEP with CPUs which support suspend
ARM: Make consolidated PM sleep code depend on PM_SLEEP

+108 -52
+2 -1
arch/arm/Kconfig
··· 1540 1540 config HIGHPTE 1541 1541 bool "Allocate 2nd-level pagetables from highmem" 1542 1542 depends on HIGHMEM 1543 - depends on !OUTER_CACHE 1544 1543 1545 1544 config HW_PERF_EVENTS 1546 1545 bool "Enable hardware performance counter support for perf events" ··· 2011 2012 2012 2013 config ARCH_SUSPEND_POSSIBLE 2013 2014 depends on !ARCH_S5P64X0 && !ARCH_S5P6442 2015 + depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \ 2016 + CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE 2014 2017 def_bool y 2015 2018 2016 2019 endmenu
-11
arch/arm/Kconfig.debug
··· 63 63 8 - SIGSEGV faults 64 64 16 - SIGBUS faults 65 65 66 - config DEBUG_ERRORS 67 - bool "Verbose kernel error messages" 68 - depends on DEBUG_KERNEL 69 - help 70 - This option controls verbose debugging information which can be 71 - printed when the kernel detects an internal error. This debugging 72 - information is useful to kernel hackers when tracking down problems, 73 - but mostly meaningless to other people. It's safe to say Y unless 74 - you are concerned with the code size or don't want to see these 75 - messages. 76 - 77 66 config DEBUG_STACK_USAGE 78 67 bool "Enable stack utilization instrumentation" 79 68 depends on DEBUG_KERNEL
-1
arch/arm/common/Makefile
··· 16 16 obj-$(CONFIG_ARCH_IXP2000) += uengine.o 17 17 obj-$(CONFIG_ARCH_IXP23XX) += uengine.o 18 18 obj-$(CONFIG_PCI_HOST_ITE8152) += it8152.o 19 - obj-$(CONFIG_COMMON_CLKDEV) += clkdev.o 20 19 obj-$(CONFIG_ARM_TIMER_SP804) += timer-sp.o
+1
arch/arm/include/asm/thread_notify.h
··· 43 43 #define THREAD_NOTIFY_FLUSH 0 44 44 #define THREAD_NOTIFY_EXIT 1 45 45 #define THREAD_NOTIFY_SWITCH 2 46 + #define THREAD_NOTIFY_COPY 3 46 47 47 48 #endif 48 49 #endif
+1 -1
arch/arm/kernel/Makefile
··· 29 29 obj-$(CONFIG_ARTHUR) += arthur.o 30 30 obj-$(CONFIG_ISA_DMA) += dma-isa.o 31 31 obj-$(CONFIG_PCI) += bios32.o isa.o 32 - obj-$(CONFIG_PM) += sleep.o 32 + obj-$(CONFIG_PM_SLEEP) += sleep.o 33 33 obj-$(CONFIG_HAVE_SCHED_CLOCK) += sched_clock.o 34 34 obj-$(CONFIG_SMP) += smp.o smp_tlb.o 35 35 obj-$(CONFIG_HAVE_ARM_SCU) += smp_scu.o
+12 -5
arch/arm/kernel/elf.c
··· 40 40 void elf_set_personality(const struct elf32_hdr *x) 41 41 { 42 42 unsigned int eflags = x->e_flags; 43 - unsigned int personality = PER_LINUX_32BIT; 43 + unsigned int personality = current->personality & ~PER_MASK; 44 + 45 + /* 46 + * We only support Linux ELF executables, so always set the 47 + * personality to LINUX. 48 + */ 49 + personality |= PER_LINUX; 44 50 45 51 /* 46 52 * APCS-26 is only valid for OABI executables 47 53 */ 48 - if ((eflags & EF_ARM_EABI_MASK) == EF_ARM_EABI_UNKNOWN) { 49 - if (eflags & EF_ARM_APCS_26) 50 - personality = PER_LINUX; 51 - } 54 + if ((eflags & EF_ARM_EABI_MASK) == EF_ARM_EABI_UNKNOWN && 55 + (eflags & EF_ARM_APCS_26)) 56 + personality &= ~ADDR_LIMIT_32BIT; 57 + else 58 + personality |= ADDR_LIMIT_32BIT; 52 59 53 60 set_personality(personality); 54 61
+7
arch/arm/kernel/hw_breakpoint.c
··· 868 868 */ 869 869 asm volatile("mcr p14, 0, %0, c1, c0, 4" : : "r" (0)); 870 870 isb(); 871 + 872 + /* 873 + * Clear any configured vector-catch events before 874 + * enabling monitor mode. 875 + */ 876 + asm volatile("mcr p14, 0, %0, c0, c7, 0" : : "r" (0)); 877 + isb(); 871 878 } 872 879 873 880 if (enable_monitor_mode())
+1 -1
arch/arm/kernel/perf_event.c
··· 221 221 prev_raw_count &= armpmu->max_period; 222 222 223 223 if (overflow) 224 - delta = armpmu->max_period - prev_raw_count + new_raw_count; 224 + delta = armpmu->max_period - prev_raw_count + new_raw_count + 1; 225 225 else 226 226 delta = new_raw_count - prev_raw_count; 227 227
+2
arch/arm/kernel/process.c
··· 372 372 if (clone_flags & CLONE_SETTLS) 373 373 thread->tp_value = regs->ARM_r3; 374 374 375 + thread_notify(THREAD_NOTIFY_COPY, thread); 376 + 375 377 return 0; 376 378 } 377 379
+1 -2
arch/arm/kernel/traps.c
··· 410 410 struct thread_info *thread = current_thread_info(); 411 411 siginfo_t info; 412 412 413 - if (current->personality != PER_LINUX && 414 - current->personality != PER_LINUX_32BIT && 413 + if ((current->personality & PER_MASK) != PER_LINUX && 415 414 thread->exec_domain->handler) { 416 415 thread->exec_domain->handler(n, regs); 417 416 return regs->ARM_r0;
+1 -1
arch/arm/mach-mmp/include/mach/gpio.h
··· 10 10 #define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2)) 11 11 #define GPIO_REG(x) (*((volatile u32 *)(GPIO_REGS_VIRT + (x)))) 12 12 13 - #define NR_BUILTIN_GPIO (192) 13 + #define NR_BUILTIN_GPIO IRQ_GPIO_NUM 14 14 15 15 #define gpio_to_bank(gpio) ((gpio) >> 5) 16 16 #define gpio_to_irq(gpio) (IRQ_GPIO_START + (gpio))
+9
arch/arm/mach-mmp/include/mach/mfp-pxa168.h
··· 8 8 #define MFP_DRIVE_MEDIUM (0x2 << 13) 9 9 #define MFP_DRIVE_FAST (0x3 << 13) 10 10 11 + #undef MFP_CFG 12 + #undef MFP_CFG_DRV 13 + 14 + #define MFP_CFG(pin, af) \ 15 + (MFP_LPM_INPUT | MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_DRIVE_MEDIUM) 16 + 17 + #define MFP_CFG_DRV(pin, af, drv) \ 18 + (MFP_LPM_INPUT | MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_DRIVE_##drv) 19 + 11 20 /* GPIO */ 12 21 #define GPIO0_GPIO MFP_CFG(GPIO0, AF5) 13 22 #define GPIO1_GPIO MFP_CFG(GPIO1, AF5)
+15 -2
arch/arm/mach-pxa/include/mach/gpio.h
··· 99 99 #define GAFR(x) GPIO_REG(0x54 + (((x) & 0x70) >> 2)) 100 100 101 101 102 - #define NR_BUILTIN_GPIO 128 102 + #define NR_BUILTIN_GPIO PXA_GPIO_IRQ_NUM 103 103 104 104 #define gpio_to_bank(gpio) ((gpio) >> 5) 105 105 #define gpio_to_irq(gpio) IRQ_GPIO(gpio) 106 - #define irq_to_gpio(irq) IRQ_TO_GPIO(irq) 106 + 107 + static inline int irq_to_gpio(unsigned int irq) 108 + { 109 + int gpio; 110 + 111 + if (irq == IRQ_GPIO0 || irq == IRQ_GPIO1) 112 + return irq - IRQ_GPIO0; 113 + 114 + gpio = irq - PXA_GPIO_IRQ_BASE; 115 + if (gpio >= 2 && gpio < NR_BUILTIN_GPIO) 116 + return gpio; 117 + 118 + return -1; 119 + } 107 120 108 121 #ifdef CONFIG_CPU_PXA26x 109 122 /* GPIO86/87/88/89 on PXA26x have their direction bits in GPDR2 inverted,
-3
arch/arm/mach-pxa/include/mach/irqs.h
··· 93 93 #define GPIO_2_x_TO_IRQ(x) (PXA_GPIO_IRQ_BASE + (x)) 94 94 #define IRQ_GPIO(x) (((x) < 2) ? (IRQ_GPIO0 + (x)) : GPIO_2_x_TO_IRQ(x)) 95 95 96 - #define IRQ_TO_GPIO_2_x(i) ((i) - PXA_GPIO_IRQ_BASE) 97 - #define IRQ_TO_GPIO(i) (((i) < IRQ_GPIO(2)) ? ((i) - IRQ_GPIO0) : IRQ_TO_GPIO_2_x(i)) 98 - 99 96 /* 100 97 * The following interrupts are for board specific purposes. Since 101 98 * the kernel can only run on one machine at a time, we can re-use
+1 -1
arch/arm/mach-pxa/pxa25x.c
··· 285 285 286 286 static int pxa25x_set_wake(struct irq_data *d, unsigned int on) 287 287 { 288 - int gpio = IRQ_TO_GPIO(d->irq); 288 + int gpio = irq_to_gpio(d->irq); 289 289 uint32_t mask = 0; 290 290 291 291 if (gpio >= 0 && gpio < 85)
+1 -1
arch/arm/mach-pxa/pxa27x.c
··· 345 345 */ 346 346 static int pxa27x_set_wake(struct irq_data *d, unsigned int on) 347 347 { 348 - int gpio = IRQ_TO_GPIO(d->irq); 348 + int gpio = irq_to_gpio(d->irq); 349 349 uint32_t mask; 350 350 351 351 if (gpio >= 0 && gpio < 128)
+3 -1
arch/arm/mm/mmap.c
··· 7 7 #include <linux/shm.h> 8 8 #include <linux/sched.h> 9 9 #include <linux/io.h> 10 + #include <linux/personality.h> 10 11 #include <linux/random.h> 11 12 #include <asm/cputype.h> 12 13 #include <asm/system.h> ··· 83 82 mm->cached_hole_size = 0; 84 83 } 85 84 /* 8 bits of randomness in 20 address space bits */ 86 - if (current->flags & PF_RANDOMIZE) 85 + if ((current->flags & PF_RANDOMIZE) && 86 + !(current->personality & ADDR_NO_RANDOMIZE)) 87 87 addr += (get_random_int() % (1 << 8)) << PAGE_SHIFT; 88 88 89 89 full_search:
+1 -1
arch/arm/mm/proc-arm920.S
··· 390 390 /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ 391 391 .globl cpu_arm920_suspend_size 392 392 .equ cpu_arm920_suspend_size, 4 * 3 393 - #ifdef CONFIG_PM 393 + #ifdef CONFIG_PM_SLEEP 394 394 ENTRY(cpu_arm920_do_suspend) 395 395 stmfd sp!, {r4 - r7, lr} 396 396 mrc p15, 0, r4, c13, c0, 0 @ PID
+1 -1
arch/arm/mm/proc-arm926.S
··· 404 404 /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ 405 405 .globl cpu_arm926_suspend_size 406 406 .equ cpu_arm926_suspend_size, 4 * 3 407 - #ifdef CONFIG_PM 407 + #ifdef CONFIG_PM_SLEEP 408 408 ENTRY(cpu_arm926_do_suspend) 409 409 stmfd sp!, {r4 - r7, lr} 410 410 mrc p15, 0, r4, c13, c0, 0 @ PID
+1 -1
arch/arm/mm/proc-sa1100.S
··· 171 171 172 172 .globl cpu_sa1100_suspend_size 173 173 .equ cpu_sa1100_suspend_size, 4*4 174 - #ifdef CONFIG_PM 174 + #ifdef CONFIG_PM_SLEEP 175 175 ENTRY(cpu_sa1100_do_suspend) 176 176 stmfd sp!, {r4 - r7, lr} 177 177 mrc p15, 0, r4, c3, c0, 0 @ domain ID
+1 -1
arch/arm/mm/proc-v6.S
··· 124 124 /* Suspend/resume support: taken from arch/arm/mach-s3c64xx/sleep.S */ 125 125 .globl cpu_v6_suspend_size 126 126 .equ cpu_v6_suspend_size, 4 * 8 127 - #ifdef CONFIG_PM 127 + #ifdef CONFIG_PM_SLEEP 128 128 ENTRY(cpu_v6_do_suspend) 129 129 stmfd sp!, {r4 - r11, lr} 130 130 mrc p15, 0, r4, c13, c0, 0 @ FCSE/PID
+1 -1
arch/arm/mm/proc-v7.S
··· 211 211 /* Suspend/resume support: derived from arch/arm/mach-s5pv210/sleep.S */ 212 212 .globl cpu_v7_suspend_size 213 213 .equ cpu_v7_suspend_size, 4 * 8 214 - #ifdef CONFIG_PM 214 + #ifdef CONFIG_PM_SLEEP 215 215 ENTRY(cpu_v7_do_suspend) 216 216 stmfd sp!, {r4 - r11, lr} 217 217 mrc p15, 0, r4, c13, c0, 0 @ FCSE/PID
+1 -1
arch/arm/mm/proc-xsc3.S
··· 417 417 418 418 .globl cpu_xsc3_suspend_size 419 419 .equ cpu_xsc3_suspend_size, 4 * 8 420 - #ifdef CONFIG_PM 420 + #ifdef CONFIG_PM_SLEEP 421 421 ENTRY(cpu_xsc3_do_suspend) 422 422 stmfd sp!, {r4 - r10, lr} 423 423 mrc p14, 0, r4, c6, c0, 0 @ clock configuration, for turbo mode
+1 -1
arch/arm/mm/proc-xscale.S
··· 518 518 519 519 .globl cpu_xscale_suspend_size 520 520 .equ cpu_xscale_suspend_size, 4 * 7 521 - #ifdef CONFIG_PM 521 + #ifdef CONFIG_PM_SLEEP 522 522 ENTRY(cpu_xscale_do_suspend) 523 523 stmfd sp!, {r4 - r10, lr} 524 524 mrc p14, 0, r4, c6, c0, 0 @ clock configuration, for turbo mode
+27 -7
arch/arm/vfp/vfpmodule.c
··· 78 78 put_cpu(); 79 79 } 80 80 81 + static void vfp_thread_copy(struct thread_info *thread) 82 + { 83 + struct thread_info *parent = current_thread_info(); 84 + 85 + vfp_sync_hwstate(parent); 86 + thread->vfpstate = parent->vfpstate; 87 + } 88 + 81 89 /* 82 90 * When this function is called with the following 'cmd's, the following 83 91 * is true while this function is being run: ··· 112 104 static int vfp_notifier(struct notifier_block *self, unsigned long cmd, void *v) 113 105 { 114 106 struct thread_info *thread = v; 107 + u32 fpexc; 108 + #ifdef CONFIG_SMP 109 + unsigned int cpu; 110 + #endif 115 111 116 - if (likely(cmd == THREAD_NOTIFY_SWITCH)) { 117 - u32 fpexc = fmrx(FPEXC); 112 + switch (cmd) { 113 + case THREAD_NOTIFY_SWITCH: 114 + fpexc = fmrx(FPEXC); 118 115 119 116 #ifdef CONFIG_SMP 120 - unsigned int cpu = thread->cpu; 117 + cpu = thread->cpu; 121 118 122 119 /* 123 120 * On SMP, if VFP is enabled, save the old state in ··· 147 134 * old state. 148 135 */ 149 136 fmxr(FPEXC, fpexc & ~FPEXC_EN); 150 - return NOTIFY_DONE; 151 - } 137 + break; 152 138 153 - if (cmd == THREAD_NOTIFY_FLUSH) 139 + case THREAD_NOTIFY_FLUSH: 154 140 vfp_thread_flush(thread); 155 - else 141 + break; 142 + 143 + case THREAD_NOTIFY_EXIT: 156 144 vfp_thread_exit(thread); 145 + break; 146 + 147 + case THREAD_NOTIFY_COPY: 148 + vfp_thread_copy(thread); 149 + break; 150 + } 157 151 158 152 return NOTIFY_DONE; 159 153 }
+5
drivers/pcmcia/pxa2xx_balloon3.c
··· 25 25 26 26 #include <mach/balloon3.h> 27 27 28 + #include <asm/mach-types.h> 29 + 28 30 #include "soc_common.h" 29 31 30 32 /* ··· 128 126 static int __init balloon3_pcmcia_init(void) 129 127 { 130 128 int ret; 129 + 130 + if (!machine_is_balloon3()) 131 + return -ENODEV; 131 132 132 133 balloon3_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1); 133 134 if (!balloon3_pcmcia_device)
+9 -6
drivers/pcmcia/pxa2xx_trizeps4.c
··· 69 69 for (i = 0; i < ARRAY_SIZE(irqs); i++) { 70 70 if (irqs[i].sock != skt->nr) 71 71 continue; 72 - if (gpio_request(IRQ_TO_GPIO(irqs[i].irq), irqs[i].str) < 0) { 72 + if (gpio_request(irq_to_gpio(irqs[i].irq), irqs[i].str) < 0) { 73 73 pr_err("%s: sock %d unable to request gpio %d\n", 74 - __func__, skt->nr, IRQ_TO_GPIO(irqs[i].irq)); 74 + __func__, skt->nr, irq_to_gpio(irqs[i].irq)); 75 75 ret = -EBUSY; 76 76 goto error; 77 77 } 78 - if (gpio_direction_input(IRQ_TO_GPIO(irqs[i].irq)) < 0) { 78 + if (gpio_direction_input(irq_to_gpio(irqs[i].irq)) < 0) { 79 79 pr_err("%s: sock %d unable to set input gpio %d\n", 80 - __func__, skt->nr, IRQ_TO_GPIO(irqs[i].irq)); 80 + __func__, skt->nr, irq_to_gpio(irqs[i].irq)); 81 81 ret = -EINVAL; 82 82 goto error; 83 83 } ··· 86 86 87 87 error: 88 88 for (; i >= 0; i--) { 89 - gpio_free(IRQ_TO_GPIO(irqs[i].irq)); 89 + gpio_free(irq_to_gpio(irqs[i].irq)); 90 90 } 91 91 return (ret); 92 92 } ··· 97 97 /* free allocated gpio's */ 98 98 gpio_free(GPIO_PRDY); 99 99 for (i = 0; i < ARRAY_SIZE(irqs); i++) 100 - gpio_free(IRQ_TO_GPIO(irqs[i].irq)); 100 + gpio_free(irq_to_gpio(irqs[i].irq)); 101 101 } 102 102 103 103 static unsigned long trizeps_pcmcia_status[2]; ··· 225 225 static int __init trizeps_pcmcia_init(void) 226 226 { 227 227 int ret; 228 + 229 + if (!machine_is_trizeps4() && !machine_is_trizeps4wl()) 230 + return -ENODEV; 228 231 229 232 trizeps_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1); 230 233 if (!trizeps_pcmcia_device)
+3 -1
drivers/video/pxafb.c
··· 1648 1648 1649 1649 switch (val) { 1650 1650 case CPUFREQ_PRECHANGE: 1651 - if (!fbi->overlay[0].usage && !fbi->overlay[1].usage) 1651 + #ifdef CONFIG_FB_PXA_OVERLAY 1652 + if (!(fbi->overlay[0].usage || fbi->overlay[1].usage)) 1653 + #endif 1652 1654 set_ctrlr_state(fbi, C_DISABLE_CLKCHANGE); 1653 1655 break; 1654 1656