diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-08 18:15:27 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-08 18:15:27 -0400 |
commit | 3d15b798eafd3b6b3cc25f20747008ab9401a57f (patch) | |
tree | 9cc140b174197048ae3f4282e09b50d0a43d3ae6 /arch/arm64/mm | |
parent | 942d33da999b86821c9aee9615fcb81207ee04c7 (diff) | |
parent | 420c158dcf96ee3a5758c9bf1586b163584c75c7 (diff) |
Merge tag 'arm64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64
Pull arm64 update from Catalin Marinas:
- Since drivers/irqchip/irq-gic.c no longer has dependencies on arm32
specifics (the 'gic' branch merged), it can be enabled on arm64.
- Enable arm64 support for poweroff/restart (for code under
drivers/power/reset/).
- Fixes (dts file, exception handling, bitops)
* tag 'arm64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64:
arm64: Treat the bitops index argument as an 'int'
arm64: Ignore the 'write' ESR flag on cache maintenance faults
arm64: dts: fix #address-cells for foundation-v8
arm64: vexpress: Add support for poweroff/restart
arm64: Enable support for the ARM GIC interrupt controller
Diffstat (limited to 'arch/arm64/mm')
-rw-r--r-- | arch/arm64/mm/fault.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c index 52638171d6fd..98af6e760cce 100644 --- a/arch/arm64/mm/fault.c +++ b/arch/arm64/mm/fault.c | |||
@@ -148,6 +148,7 @@ void do_bad_area(unsigned long addr, unsigned int esr, struct pt_regs *regs) | |||
148 | #define VM_FAULT_BADACCESS 0x020000 | 148 | #define VM_FAULT_BADACCESS 0x020000 |
149 | 149 | ||
150 | #define ESR_WRITE (1 << 6) | 150 | #define ESR_WRITE (1 << 6) |
151 | #define ESR_CM (1 << 8) | ||
151 | #define ESR_LNX_EXEC (1 << 24) | 152 | #define ESR_LNX_EXEC (1 << 24) |
152 | 153 | ||
153 | /* | 154 | /* |
@@ -206,7 +207,7 @@ static int __kprobes do_page_fault(unsigned long addr, unsigned int esr, | |||
206 | struct task_struct *tsk; | 207 | struct task_struct *tsk; |
207 | struct mm_struct *mm; | 208 | struct mm_struct *mm; |
208 | int fault, sig, code; | 209 | int fault, sig, code; |
209 | int write = esr & ESR_WRITE; | 210 | bool write = (esr & ESR_WRITE) && !(esr & ESR_CM); |
210 | unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE | | 211 | unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE | |
211 | (write ? FAULT_FLAG_WRITE : 0); | 212 | (write ? FAULT_FLAG_WRITE : 0); |
212 | 213 | ||