diff options
| -rw-r--r-- | arch/arm/common/it8152.c | 7 | ||||
| -rw-r--r-- | arch/arm/common/pl330.c | 3 | ||||
| -rw-r--r-- | arch/arm/include/asm/assembler.h | 5 | ||||
| -rw-r--r-- | arch/arm/include/asm/hardware/pl330.h | 2 | ||||
| -rw-r--r-- | arch/arm/include/asm/processor.h | 1 | ||||
| -rw-r--r-- | arch/arm/kernel/ptrace.c | 9 | ||||
| -rw-r--r-- | arch/arm/kernel/smp_twd.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/voltagedomains3xxx_data.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/voltagedomains44xx_data.c | 2 | ||||
| -rw-r--r-- | arch/arm/mm/Kconfig | 3 | ||||
| -rw-r--r-- | arch/arm/mm/cache-v7.S | 2 | ||||
| -rw-r--r-- | scripts/mod/modpost.c | 9 |
12 files changed, 34 insertions, 13 deletions
diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c index d1bcd7b13ebc..fb1f1cfce60c 100644 --- a/arch/arm/common/it8152.c +++ b/arch/arm/common/it8152.c | |||
| @@ -320,13 +320,6 @@ err0: | |||
| 320 | return -EBUSY; | 320 | return -EBUSY; |
| 321 | } | 321 | } |
| 322 | 322 | ||
| 323 | /* | ||
| 324 | * If we set up a device for bus mastering, we need to check the latency | ||
| 325 | * timer as we don't have even crappy BIOSes to set it properly. | ||
| 326 | * The implementation is from arch/i386/pci/i386.c | ||
| 327 | */ | ||
| 328 | unsigned int pcibios_max_latency = 255; | ||
| 329 | |||
| 330 | /* ITE bridge requires setting latency timer to avoid early bus access | 323 | /* ITE bridge requires setting latency timer to avoid early bus access |
| 331 | termination by PCI bus master devices | 324 | termination by PCI bus master devices |
| 332 | */ | 325 | */ |
diff --git a/arch/arm/common/pl330.c b/arch/arm/common/pl330.c index d8e44a43047c..ff3ad2244824 100644 --- a/arch/arm/common/pl330.c +++ b/arch/arm/common/pl330.c | |||
| @@ -1502,12 +1502,13 @@ int pl330_chan_ctrl(void *ch_id, enum pl330_chan_op op) | |||
| 1502 | struct pl330_thread *thrd = ch_id; | 1502 | struct pl330_thread *thrd = ch_id; |
| 1503 | struct pl330_dmac *pl330; | 1503 | struct pl330_dmac *pl330; |
| 1504 | unsigned long flags; | 1504 | unsigned long flags; |
| 1505 | int ret = 0, active = thrd->req_running; | 1505 | int ret = 0, active; |
| 1506 | 1506 | ||
| 1507 | if (!thrd || thrd->free || thrd->dmac->state == DYING) | 1507 | if (!thrd || thrd->free || thrd->dmac->state == DYING) |
| 1508 | return -EINVAL; | 1508 | return -EINVAL; |
| 1509 | 1509 | ||
| 1510 | pl330 = thrd->dmac; | 1510 | pl330 = thrd->dmac; |
| 1511 | active = thrd->req_running; | ||
| 1511 | 1512 | ||
| 1512 | spin_lock_irqsave(&pl330->lock, flags); | 1513 | spin_lock_irqsave(&pl330->lock, flags); |
| 1513 | 1514 | ||
diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index 62f8095d46de..23371b17b23e 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h | |||
| @@ -137,6 +137,11 @@ | |||
| 137 | disable_irq | 137 | disable_irq |
| 138 | .endm | 138 | .endm |
| 139 | 139 | ||
| 140 | .macro save_and_disable_irqs_notrace, oldcpsr | ||
| 141 | mrs \oldcpsr, cpsr | ||
| 142 | disable_irq_notrace | ||
| 143 | .endm | ||
| 144 | |||
| 140 | /* | 145 | /* |
| 141 | * Restore interrupt state previously stored in a register. We don't | 146 | * Restore interrupt state previously stored in a register. We don't |
| 142 | * guarantee that this will preserve the flags. | 147 | * guarantee that this will preserve the flags. |
diff --git a/arch/arm/include/asm/hardware/pl330.h b/arch/arm/include/asm/hardware/pl330.h index 575fa8186ca0..c1821385abfa 100644 --- a/arch/arm/include/asm/hardware/pl330.h +++ b/arch/arm/include/asm/hardware/pl330.h | |||
| @@ -41,7 +41,7 @@ enum pl330_dstcachectrl { | |||
| 41 | DCCTRL1, /* Bufferable only */ | 41 | DCCTRL1, /* Bufferable only */ |
| 42 | DCCTRL2, /* Cacheable, but do not allocate */ | 42 | DCCTRL2, /* Cacheable, but do not allocate */ |
| 43 | DCCTRL3, /* Cacheable and bufferable, but do not allocate */ | 43 | DCCTRL3, /* Cacheable and bufferable, but do not allocate */ |
| 44 | DINVALID1 = 8, | 44 | DINVALID1, /* AWCACHE = 0x1000 */ |
| 45 | DINVALID2, | 45 | DINVALID2, |
| 46 | DCCTRL6, /* Cacheable write-through, allocate on writes only */ | 46 | DCCTRL6, /* Cacheable write-through, allocate on writes only */ |
| 47 | DCCTRL7, /* Cacheable write-back, allocate on writes only */ | 47 | DCCTRL7, /* Cacheable write-back, allocate on writes only */ |
diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h index ce280b8d613c..cb8d638924fd 100644 --- a/arch/arm/include/asm/processor.h +++ b/arch/arm/include/asm/processor.h | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #include <asm/hw_breakpoint.h> | 22 | #include <asm/hw_breakpoint.h> |
| 23 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
| 24 | #include <asm/types.h> | 24 | #include <asm/types.h> |
| 25 | #include <asm/system.h> | ||
| 25 | 26 | ||
| 26 | #ifdef __KERNEL__ | 27 | #ifdef __KERNEL__ |
| 27 | #define STACK_TOP ((current->personality & ADDR_LIMIT_32BIT) ? \ | 28 | #define STACK_TOP ((current->personality & ADDR_LIMIT_32BIT) ? \ |
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index e33870ff0ac0..ede6443c34d9 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c | |||
| @@ -23,6 +23,7 @@ | |||
| 23 | #include <linux/perf_event.h> | 23 | #include <linux/perf_event.h> |
| 24 | #include <linux/hw_breakpoint.h> | 24 | #include <linux/hw_breakpoint.h> |
| 25 | #include <linux/regset.h> | 25 | #include <linux/regset.h> |
| 26 | #include <linux/audit.h> | ||
| 26 | 27 | ||
| 27 | #include <asm/pgtable.h> | 28 | #include <asm/pgtable.h> |
| 28 | #include <asm/system.h> | 29 | #include <asm/system.h> |
| @@ -904,6 +905,12 @@ long arch_ptrace(struct task_struct *child, long request, | |||
| 904 | return ret; | 905 | return ret; |
| 905 | } | 906 | } |
| 906 | 907 | ||
| 908 | #ifdef __ARMEB__ | ||
| 909 | #define AUDIT_ARCH_NR AUDIT_ARCH_ARMEB | ||
| 910 | #else | ||
| 911 | #define AUDIT_ARCH_NR AUDIT_ARCH_ARM | ||
| 912 | #endif | ||
| 913 | |||
| 907 | asmlinkage int syscall_trace(int why, struct pt_regs *regs, int scno) | 914 | asmlinkage int syscall_trace(int why, struct pt_regs *regs, int scno) |
| 908 | { | 915 | { |
| 909 | unsigned long ip; | 916 | unsigned long ip; |
| @@ -918,7 +925,7 @@ asmlinkage int syscall_trace(int why, struct pt_regs *regs, int scno) | |||
| 918 | if (!ip) | 925 | if (!ip) |
| 919 | audit_syscall_exit(regs); | 926 | audit_syscall_exit(regs); |
| 920 | else | 927 | else |
| 921 | audit_syscall_entry(AUDIT_ARCH_ARMEB, scno, regs->ARM_r0, | 928 | audit_syscall_entry(AUDIT_ARCH_NR, scno, regs->ARM_r0, |
| 922 | regs->ARM_r1, regs->ARM_r2, regs->ARM_r3); | 929 | regs->ARM_r1, regs->ARM_r2, regs->ARM_r3); |
| 923 | 930 | ||
| 924 | if (!test_thread_flag(TIF_SYSCALL_TRACE)) | 931 | if (!test_thread_flag(TIF_SYSCALL_TRACE)) |
diff --git a/arch/arm/kernel/smp_twd.c b/arch/arm/kernel/smp_twd.c index 4285daa077b0..7a79b24597b2 100644 --- a/arch/arm/kernel/smp_twd.c +++ b/arch/arm/kernel/smp_twd.c | |||
| @@ -129,7 +129,7 @@ static struct notifier_block twd_cpufreq_nb = { | |||
| 129 | 129 | ||
| 130 | static int twd_cpufreq_init(void) | 130 | static int twd_cpufreq_init(void) |
| 131 | { | 131 | { |
| 132 | if (!IS_ERR(twd_clk)) | 132 | if (twd_evt && *__this_cpu_ptr(twd_evt) && !IS_ERR(twd_clk)) |
| 133 | return cpufreq_register_notifier(&twd_cpufreq_nb, | 133 | return cpufreq_register_notifier(&twd_cpufreq_nb, |
| 134 | CPUFREQ_TRANSITION_NOTIFIER); | 134 | CPUFREQ_TRANSITION_NOTIFIER); |
| 135 | 135 | ||
diff --git a/arch/arm/mach-omap2/voltagedomains3xxx_data.c b/arch/arm/mach-omap2/voltagedomains3xxx_data.c index c005e2f5e383..57db2038b23c 100644 --- a/arch/arm/mach-omap2/voltagedomains3xxx_data.c +++ b/arch/arm/mach-omap2/voltagedomains3xxx_data.c | |||
| @@ -108,6 +108,7 @@ void __init omap3xxx_voltagedomains_init(void) | |||
| 108 | * XXX Will depend on the process, validation, and binning | 108 | * XXX Will depend on the process, validation, and binning |
| 109 | * for the currently-running IC | 109 | * for the currently-running IC |
| 110 | */ | 110 | */ |
| 111 | #ifdef CONFIG_PM_OPP | ||
| 111 | if (cpu_is_omap3630()) { | 112 | if (cpu_is_omap3630()) { |
| 112 | omap3_voltdm_mpu.volt_data = omap36xx_vddmpu_volt_data; | 113 | omap3_voltdm_mpu.volt_data = omap36xx_vddmpu_volt_data; |
| 113 | omap3_voltdm_core.volt_data = omap36xx_vddcore_volt_data; | 114 | omap3_voltdm_core.volt_data = omap36xx_vddcore_volt_data; |
| @@ -115,6 +116,7 @@ void __init omap3xxx_voltagedomains_init(void) | |||
| 115 | omap3_voltdm_mpu.volt_data = omap34xx_vddmpu_volt_data; | 116 | omap3_voltdm_mpu.volt_data = omap34xx_vddmpu_volt_data; |
| 116 | omap3_voltdm_core.volt_data = omap34xx_vddcore_volt_data; | 117 | omap3_voltdm_core.volt_data = omap34xx_vddcore_volt_data; |
| 117 | } | 118 | } |
| 119 | #endif | ||
| 118 | 120 | ||
| 119 | if (cpu_is_omap3517() || cpu_is_omap3505()) | 121 | if (cpu_is_omap3517() || cpu_is_omap3505()) |
| 120 | voltdms = voltagedomains_am35xx; | 122 | voltdms = voltagedomains_am35xx; |
diff --git a/arch/arm/mach-omap2/voltagedomains44xx_data.c b/arch/arm/mach-omap2/voltagedomains44xx_data.c index 4e11d022595d..c3115f6853d4 100644 --- a/arch/arm/mach-omap2/voltagedomains44xx_data.c +++ b/arch/arm/mach-omap2/voltagedomains44xx_data.c | |||
| @@ -100,9 +100,11 @@ void __init omap44xx_voltagedomains_init(void) | |||
| 100 | * XXX Will depend on the process, validation, and binning | 100 | * XXX Will depend on the process, validation, and binning |
| 101 | * for the currently-running IC | 101 | * for the currently-running IC |
| 102 | */ | 102 | */ |
| 103 | #ifdef CONFIG_PM_OPP | ||
| 103 | omap4_voltdm_mpu.volt_data = omap44xx_vdd_mpu_volt_data; | 104 | omap4_voltdm_mpu.volt_data = omap44xx_vdd_mpu_volt_data; |
| 104 | omap4_voltdm_iva.volt_data = omap44xx_vdd_iva_volt_data; | 105 | omap4_voltdm_iva.volt_data = omap44xx_vdd_iva_volt_data; |
| 105 | omap4_voltdm_core.volt_data = omap44xx_vdd_core_volt_data; | 106 | omap4_voltdm_core.volt_data = omap44xx_vdd_core_volt_data; |
| 107 | #endif | ||
| 106 | 108 | ||
| 107 | for (i = 0; voltdm = voltagedomains_omap4[i], voltdm; i++) | 109 | for (i = 0; voltdm = voltagedomains_omap4[i], voltdm; i++) |
| 108 | voltdm->sys_clk.name = sys_clk_name; | 110 | voltdm->sys_clk.name = sys_clk_name; |
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index 1a3ca2488164..7edef9121632 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
| @@ -631,7 +631,8 @@ comment "Processor Features" | |||
| 631 | 631 | ||
| 632 | config ARM_LPAE | 632 | config ARM_LPAE |
| 633 | bool "Support for the Large Physical Address Extension" | 633 | bool "Support for the Large Physical Address Extension" |
| 634 | depends on MMU && CPU_V7 | 634 | depends on MMU && CPU_32v7 && !CPU_32v6 && !CPU_32v5 && \ |
| 635 | !CPU_32v4 && !CPU_32v3 | ||
| 635 | help | 636 | help |
| 636 | Say Y if you have an ARMv7 processor supporting the LPAE page | 637 | Say Y if you have an ARMv7 processor supporting the LPAE page |
| 637 | table format and you would like to access memory beyond the | 638 | table format and you would like to access memory beyond the |
diff --git a/arch/arm/mm/cache-v7.S b/arch/arm/mm/cache-v7.S index 7a24d39661f0..a655d3da386d 100644 --- a/arch/arm/mm/cache-v7.S +++ b/arch/arm/mm/cache-v7.S | |||
| @@ -55,7 +55,7 @@ loop1: | |||
| 55 | cmp r1, #2 @ see what cache we have at this level | 55 | cmp r1, #2 @ see what cache we have at this level |
| 56 | blt skip @ skip if no cache, or just i-cache | 56 | blt skip @ skip if no cache, or just i-cache |
| 57 | #ifdef CONFIG_PREEMPT | 57 | #ifdef CONFIG_PREEMPT |
| 58 | save_and_disable_irqs r9 @ make cssr&csidr read atomic | 58 | save_and_disable_irqs_notrace r9 @ make cssr&csidr read atomic |
| 59 | #endif | 59 | #endif |
| 60 | mcr p15, 2, r10, c0, c0, 0 @ select current cache level in cssr | 60 | mcr p15, 2, r10, c0, c0, 0 @ select current cache level in cssr |
| 61 | isb @ isb to sych the new cssr&csidr | 61 | isb @ isb to sych the new cssr&csidr |
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 2bd594e6d1b4..9adb667dd31a 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c | |||
| @@ -1494,6 +1494,13 @@ static int addend_386_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r) | |||
| 1494 | return 0; | 1494 | return 0; |
| 1495 | } | 1495 | } |
| 1496 | 1496 | ||
| 1497 | #ifndef R_ARM_CALL | ||
| 1498 | #define R_ARM_CALL 28 | ||
| 1499 | #endif | ||
| 1500 | #ifndef R_ARM_JUMP24 | ||
| 1501 | #define R_ARM_JUMP24 29 | ||
| 1502 | #endif | ||
| 1503 | |||
| 1497 | static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r) | 1504 | static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r) |
| 1498 | { | 1505 | { |
| 1499 | unsigned int r_typ = ELF_R_TYPE(r->r_info); | 1506 | unsigned int r_typ = ELF_R_TYPE(r->r_info); |
| @@ -1505,6 +1512,8 @@ static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r) | |||
| 1505 | (elf->symtab_start + ELF_R_SYM(r->r_info)); | 1512 | (elf->symtab_start + ELF_R_SYM(r->r_info)); |
| 1506 | break; | 1513 | break; |
| 1507 | case R_ARM_PC24: | 1514 | case R_ARM_PC24: |
| 1515 | case R_ARM_CALL: | ||
| 1516 | case R_ARM_JUMP24: | ||
| 1508 | /* From ARM ABI: ((S + A) | T) - P */ | 1517 | /* From ARM ABI: ((S + A) | T) - P */ |
| 1509 | r->r_addend = (int)(long)(elf->hdr + | 1518 | r->r_addend = (int)(long)(elf->hdr + |
| 1510 | sechdr->sh_offset + | 1519 | sechdr->sh_offset + |
