linux/arch/arm64/kernel
Mark Rutland d7a49086f2 arm64: cpuinfo: print info for all CPUs
Currently reading /proc/cpuinfo will result in information being read
out of the MIDR_EL1 of the current CPU, and the information is not
associated with any particular logical CPU number.

This is problematic for systems with heterogeneous CPUs (i.e.
big.LITTLE) where MIDR fields will vary across CPUs, and the output will
differ depending on the executing CPU.

This patch reorganises the code responsible for /proc/cpuinfo to print
information per-cpu. In the process, we perform several cleanups:

* Property names are coerced to lower-case (to match "processor" as per
  glibc's expectations).
* Property names are simplified and made to match the MIDR field names.
* Revision is changed to hex as with every other field.
* The meaningless Architecture property is removed.
* The ripe-for-abuse Machine field is removed.

The features field (a human-readable representation of the hwcaps)
remains printed once, as this is expected to remain in use as the
globally support CPU features. To enable the possibility of the addition
of per-cpu HW feature information later, this is printed before any
CPU-specific information.

Comments are added to guide userspace developers in the right direction
(using the hwcaps provided in auxval). Hopefully where userspace
applications parse /proc/cpuinfo rather than using the readily available
hwcaps, they limit themselves to reading said first line.

If CPU features differ from each other, the previously installed sanity
checks will give us some advance notice with warnings and
TAINT_CPU_OUT_OF_SPEC. If we are lucky, we will never see such systems.
Rework will be required in many places to support such systems anyway.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Marcus Shawcroft <marcus.shawcroft@arm.com>
Cc: Peter Maydell <peter.maydell@linaro.org>
Acked-by: Will Deacon <will.deacon@arm.com>
[catalin.marinas@arm.com: remove machine_name as it is no longer reported]
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2014-07-18 18:33:23 +01:00
..
vdso arm64: Align the kbuild output for VDSOL and VDSOA 2014-07-17 16:19:29 +01:00
.gitignore arm64: Build infrastructure 2012-09-17 13:42:21 +01:00
arm64ksyms.c arm64: Add ftrace support 2014-05-29 09:08:08 +01:00
asm-offsets.c arm64: kernel: cpu_{suspend/resume} implementation 2013-12-16 17:17:31 +00:00
cpu_ops.c arm64: kernel: enable PSCI cpu operations on UP systems 2014-07-18 15:23:25 +01:00
cpuinfo.c arm64: add runtime system sanity checks 2014-07-18 15:24:11 +01:00
cputable.c arm64: add CPU_HOTPLUG infrastructure 2013-10-25 11:33:21 +01:00
debug-monitors.c arm64: debug: remove noisy, pointless warning 2014-04-25 16:46:50 +01:00
efi-entry.S arm64: fix el2_setup check of CurrentEL 2014-07-04 16:16:52 +01:00
efi-stub.c arm64: efi: add EFI stub 2014-04-30 19:57:04 +01:00
efi.c arm64: efi: only attempt efi map setup if booting via EFI 2014-05-23 15:29:43 +01:00
entry-fpsimd.S arm64: add support for kernel mode NEON in interrupt context 2014-05-08 11:31:57 +02:00
entry-ftrace.S arm64: ftrace: Fix comment typo 'CONFIG_FUNCTION_GRAPH_FP_TEST' 2014-06-18 12:40:52 +01:00
entry.S arm64: Add __NR_* definitions for compat syscalls 2014-07-10 11:02:40 +01:00
fpsimd.c arm64: add support for kernel mode NEON in interrupt context 2014-05-08 11:31:57 +02:00
ftrace.c arm64: ftrace: Add dynamic ftrace support 2014-05-29 09:08:33 +01:00
head.S arm64: Enable TEXT_OFFSET fuzzing 2014-07-10 12:36:58 +01:00
hw_breakpoint.c arm64: is_compat_task is defined both in asm/compat.h and linux/compat.h 2014-05-12 16:43:29 +01:00
hyp-stub.S arm64: add hypervisor stub 2012-12-05 11:26:49 +00:00
image.h arm64: Update the Image header 2014-07-10 12:36:40 +01:00
insn.c arm64: introduce aarch64_insn_gen_{nop|branch_imm}() helper functions 2014-01-08 15:21:29 +00:00
io.c arm64: Device specific operations 2012-09-17 13:42:04 +01:00
irq.c arm64: use cpu_online_mask when using forced irq_set_affinity 2014-05-12 16:25:07 +01:00
jump_label.c arm64, jump label: optimize jump label implementation 2014-01-08 15:23:53 +00:00
kgdb.c arm64: KGDB: Add step debugging support 2014-02-26 11:16:25 +00:00
kuser32.S arm64: Add __NR_* definitions for compat syscalls 2014-07-10 11:02:40 +01:00
Makefile arm64: cpuinfo: record cpu system register values 2014-07-18 15:24:09 +01:00
module.c arm64: move encode_insn_immediate() from module.c to insn.c 2014-01-08 15:21:29 +00:00
perf_event.c arm64: fix !CONFIG_COMPAT build failures 2014-04-06 23:25:04 +01:00
perf_regs.c arm64: fix !CONFIG_COMPAT build failures 2014-04-06 23:25:04 +01:00
process.c arm64: Add CONFIG_CC_STACKPROTECTOR 2014-07-09 12:23:48 +01:00
psci.c arm64: kernel: add __init marker to PSCI init functions 2014-07-18 15:23:45 +01:00
ptrace.c arm64: audit: Add audit hook in syscall_trace_enter/exit() 2014-07-10 11:06:00 +01:00
return_address.c arm64: ftrace: Add CALLER_ADDRx macros 2014-05-29 09:08:33 +01:00
setup.c arm64: cpuinfo: print info for all CPUs 2014-07-18 18:33:23 +01:00
signal.c 2014-05-15 for-3.16 pull request 2014-05-16 10:05:11 +01:00
signal32.c arm64: Add __NR_* definitions for compat syscalls 2014-07-10 11:02:40 +01:00
sleep.S arm64: kernel: cpu_{suspend/resume} implementation 2013-12-16 17:17:31 +00:00
smp_spin_table.c arm64: Remove boot thread synchronisation for spin-table release method 2014-05-09 15:47:46 +01:00
smp.c arm64: cpuinfo: record cpu system register values 2014-07-18 15:24:09 +01:00
stacktrace.c arm64: Add 'notrace' attribute to unwind_frame() for ftrace 2014-05-29 09:04:31 +01:00
suspend.c arm64: kernel: add missing __init section marker to cpu_suspend_init 2014-07-18 15:23:59 +01:00
sys_compat.c arm64: Add __NR_* definitions for compat syscalls 2014-07-10 11:02:40 +01:00
sys.c arm64: switch to generic sigaltstack 2013-02-14 09:17:29 -05:00
sys32.S arm64: compat: correct register concatenation for syscall wrappers 2013-10-25 15:59:36 +01:00
time.c arm64: kernel: initialize broadcast hrtimer based clock event device 2014-05-30 17:48:13 +01:00
topology.c arm64: topology: add MPIDR-based detection 2014-07-09 12:22:40 +01:00
traps.c arm64: Use pr_* instead of printk 2014-07-17 16:02:32 +01:00
vdso.c arm64: vdso: move data page before code pages 2014-07-17 16:18:57 +01:00
vmlinux.lds.S arm64: Enable TEXT_OFFSET fuzzing 2014-07-10 12:36:58 +01:00