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 tag 'arm64-stable' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64

Pull arm64 fixes from Catalin Marinas:
- Stack size increased to 16K (similar to other 64-bit architectures)
- Additional cache flushing for secondary CPUs boot mode

* tag 'arm64-stable' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64:
arm64: Change kernel stack size to 16K
arm64: Fix definition of arm_pm_restart to match the declaration
arm64: virt: ensure visibility of __boot_cpu_mode

+17 -4
+2 -2
arch/arm64/include/asm/thread_info.h
··· 24 24 #include <linux/compiler.h> 25 25 26 26 #ifndef CONFIG_ARM64_64K_PAGES 27 - #define THREAD_SIZE_ORDER 1 27 + #define THREAD_SIZE_ORDER 2 28 28 #endif 29 29 30 - #define THREAD_SIZE 8192 30 + #define THREAD_SIZE 16384 31 31 #define THREAD_START_SP (THREAD_SIZE - 16) 32 32 33 33 #ifndef __ASSEMBLY__
+13
arch/arm64/include/asm/virt.h
··· 21 21 #define BOOT_CPU_MODE_EL2 (0x0e12b007) 22 22 23 23 #ifndef __ASSEMBLY__ 24 + #include <asm/cacheflush.h> 24 25 25 26 /* 26 27 * __boot_cpu_mode records what mode CPUs were booted in. ··· 37 36 void __hyp_set_vectors(phys_addr_t phys_vector_base); 38 37 phys_addr_t __hyp_get_vectors(void); 39 38 39 + static inline void sync_boot_mode(void) 40 + { 41 + /* 42 + * As secondaries write to __boot_cpu_mode with caches disabled, we 43 + * must flush the corresponding cache entries to ensure the visibility 44 + * of their writes. 45 + */ 46 + __flush_dcache_area(__boot_cpu_mode, sizeof(__boot_cpu_mode)); 47 + } 48 + 40 49 /* Reports the availability of HYP mode */ 41 50 static inline bool is_hyp_mode_available(void) 42 51 { 52 + sync_boot_mode(); 43 53 return (__boot_cpu_mode[0] == BOOT_CPU_MODE_EL2 && 44 54 __boot_cpu_mode[1] == BOOT_CPU_MODE_EL2); 45 55 } ··· 58 46 /* Check if the bootloader has booted CPUs in different modes */ 59 47 static inline bool is_hyp_mode_mismatched(void) 60 48 { 49 + sync_boot_mode(); 61 50 return __boot_cpu_mode[0] != __boot_cpu_mode[1]; 62 51 } 63 52
+1 -1
arch/arm64/kernel/entry.S
··· 121 121 122 122 .macro get_thread_info, rd 123 123 mov \rd, sp 124 - and \rd, \rd, #~((1 << 13) - 1) // top of 8K stack 124 + and \rd, \rd, #~(THREAD_SIZE - 1) // top of stack 125 125 .endm 126 126 127 127 /*
+1 -1
arch/arm64/kernel/process.c
··· 81 81 void (*pm_power_off)(void); 82 82 EXPORT_SYMBOL_GPL(pm_power_off); 83 83 84 - void (*arm_pm_restart)(char str, const char *cmd); 84 + void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd); 85 85 EXPORT_SYMBOL_GPL(arm_pm_restart); 86 86 87 87 void arch_cpu_idle_prepare(void)