From: Catalin Marinas Date: Tue, 31 May 2016 14:55:03 +0000 (+0100) Subject: arm64: Provide "model name" in /proc/cpuinfo for PER_LINUX32 tasks X-Git-Tag: v3.16.37~168 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6a80e575825df68f82520f99f047e08d3c1efa53;p=thirdparty%2Fkernel%2Fstable.git arm64: Provide "model name" in /proc/cpuinfo for PER_LINUX32 tasks commit e47b020a323d1b2a7b1e9aac86e99eae19463630 upstream. This patch brings the PER_LINUX32 /proc/cpuinfo format more in line with the 32-bit ARM one by providing an additional line: model name : ARMv8 Processor rev X (v8l) Acked-by: Will Deacon Signed-off-by: Catalin Marinas Signed-off-by: Will Deacon [bwh: Backported to 3.16: - Adjust filename, context - Open-code MIDR_REVISION()] Signed-off-by: Ben Hutchings --- diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h index 01d3aab64b79f..2009daf52bf11 100644 --- a/arch/arm64/include/asm/elf.h +++ b/arch/arm64/include/asm/elf.h @@ -161,14 +161,14 @@ struct mm_struct; extern unsigned long arch_randomize_brk(struct mm_struct *mm); #define arch_randomize_brk arch_randomize_brk -#ifdef CONFIG_COMPAT - #ifdef __AARCH64EB__ #define COMPAT_ELF_PLATFORM ("v8b") #else #define COMPAT_ELF_PLATFORM ("v8l") #endif +#ifdef CONFIG_COMPAT + #define COMPAT_ELF_ET_DYN_BASE (randomize_et_dyn(2 * TASK_SIZE_32 / 3)) /* AArch32 registers. */ diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index a54518f2b7cbf..528942d8db3aa 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -44,6 +44,8 @@ #include #include #include +#include +#include #include #include @@ -489,6 +491,7 @@ static const char *compat_hwcap_str[] = { static int c_show(struct seq_file *m, void *v) { int i, j; + bool compat = personality(current->personality) == PER_LINUX32; for_each_online_cpu(i) { struct cpuinfo_arm64 *cpuinfo = &per_cpu(cpu_data, i); @@ -500,6 +503,9 @@ static int c_show(struct seq_file *m, void *v) * "processor". Give glibc what it expects. */ #ifdef CONFIG_SMP + if (compat) + seq_printf(m, "model name\t: ARMv8 Processor rev %d (%s)\n", + midr & 0xf, COMPAT_ELF_PLATFORM); seq_printf(m, "processor\t: %d\n", i); #endif @@ -514,7 +520,7 @@ static int c_show(struct seq_file *m, void *v) * software which does already (at least for 32-bit). */ seq_puts(m, "Features\t:"); - if (personality(current->personality) == PER_LINUX32) { + if (compat) { #ifdef CONFIG_COMPAT for (j = 0; compat_hwcap_str[j]; j++) if (compat_elf_hwcap & (1 << j))