Browse Source

Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux

Pull arm64 fixes from Catalin Marinas:
 - compat renameat2 syscall wiring and __NR_compat_syscalls fix
 - TLB fix for transparent huge pages following switch to generic
   mmu_gather
 - spinlock initialisation for init_mm's context
 - move of_clk_init() earlier
 - Kconfig duplicate entry fix

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
  arm64: init: Move of_clk_init to time_init
  arm64: initialize spinlock for init_mm's context
  arm64: debug: remove noisy, pointless warning
  arm64: mm: Add THP TLB entries to general mmu_gather
  arm64: add renameat2 compat syscall
  ARM64: Remove duplicated Kconfig entry for "kernel/power/Kconfig"
  arm64: __NR_compat_syscalls fix
Linus Torvalds 11 years ago
parent
commit
afa3cad746

+ 0 - 2
arch/arm64/Kconfig

@@ -323,8 +323,6 @@ menu "CPU Power Management"
 
 
 source "drivers/cpuidle/Kconfig"
 source "drivers/cpuidle/Kconfig"
 
 
-source "kernel/power/Kconfig"
-
 source "drivers/cpufreq/Kconfig"
 source "drivers/cpufreq/Kconfig"
 
 
 endmenu
 endmenu

+ 3 - 0
arch/arm64/include/asm/mmu.h

@@ -22,6 +22,9 @@ typedef struct {
 	void *vdso;
 	void *vdso;
 } mm_context_t;
 } mm_context_t;
 
 
+#define INIT_MM_CONTEXT(name) \
+	.context.id_lock = __RAW_SPIN_LOCK_UNLOCKED(name.context.id_lock),
+
 #define ASID(mm)	((mm)->context.id & 0xffff)
 #define ASID(mm)	((mm)->context.id & 0xffff)
 
 
 extern void paging_init(void);
 extern void paging_init(void);

+ 6 - 0
arch/arm64/include/asm/tlb.h

@@ -19,6 +19,7 @@
 #ifndef __ASM_TLB_H
 #ifndef __ASM_TLB_H
 #define __ASM_TLB_H
 #define __ASM_TLB_H
 
 
+#define  __tlb_remove_pmd_tlb_entry __tlb_remove_pmd_tlb_entry
 
 
 #include <asm-generic/tlb.h>
 #include <asm-generic/tlb.h>
 
 
@@ -99,5 +100,10 @@ static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp,
 }
 }
 #endif
 #endif
 
 
+static inline void __tlb_remove_pmd_tlb_entry(struct mmu_gather *tlb, pmd_t *pmdp,
+						unsigned long address)
+{
+	tlb_add_flush(tlb, address);
+}
 
 
 #endif
 #endif

+ 2 - 1
arch/arm64/include/asm/unistd32.h

@@ -403,8 +403,9 @@ __SYSCALL(378, sys_kcmp)
 __SYSCALL(379, sys_finit_module)
 __SYSCALL(379, sys_finit_module)
 __SYSCALL(380, sys_sched_setattr)
 __SYSCALL(380, sys_sched_setattr)
 __SYSCALL(381, sys_sched_getattr)
 __SYSCALL(381, sys_sched_getattr)
+__SYSCALL(382, sys_renameat2)
 
 
-#define __NR_compat_syscalls		379
+#define __NR_compat_syscalls		383
 
 
 /*
 /*
  * Compat syscall numbers used by the AArch64 kernel.
  * Compat syscall numbers used by the AArch64 kernel.

+ 0 - 3
arch/arm64/kernel/debug-monitors.c

@@ -318,9 +318,6 @@ static int brk_handler(unsigned long addr, unsigned int esr,
 	if (call_break_hook(regs, esr) == DBG_HOOK_HANDLED)
 	if (call_break_hook(regs, esr) == DBG_HOOK_HANDLED)
 		return 0;
 		return 0;
 
 
-	pr_warn("unexpected brk exception at %lx, esr=0x%x\n",
-			(long)instruction_pointer(regs), esr);
-
 	if (!user_mode(regs))
 	if (!user_mode(regs))
 		return -EFAULT;
 		return -EFAULT;
 
 

+ 0 - 1
arch/arm64/kernel/setup.c

@@ -393,7 +393,6 @@ void __init setup_arch(char **cmdline_p)
 
 
 static int __init arm64_device_init(void)
 static int __init arm64_device_init(void)
 {
 {
-	of_clk_init(NULL);
 	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
 	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
 	return 0;
 	return 0;
 }
 }

+ 2 - 0
arch/arm64/kernel/time.c

@@ -33,6 +33,7 @@
 #include <linux/irq.h>
 #include <linux/irq.h>
 #include <linux/delay.h>
 #include <linux/delay.h>
 #include <linux/clocksource.h>
 #include <linux/clocksource.h>
+#include <linux/clk-provider.h>
 
 
 #include <clocksource/arm_arch_timer.h>
 #include <clocksource/arm_arch_timer.h>
 
 
@@ -65,6 +66,7 @@ void __init time_init(void)
 {
 {
 	u32 arch_timer_rate;
 	u32 arch_timer_rate;
 
 
+	of_clk_init(NULL);
 	clocksource_of_init();
 	clocksource_of_init();
 
 
 	arch_timer_rate = arch_timer_get_rate();
 	arch_timer_rate = arch_timer_get_rate();