mirror of
https://github.com/torvalds/linux.git
synced 2026-07-29 10:41:49 +02:00
Merge branch 'for-next/cpufeature' into for-next/core
* for-next/cpufeature: arm64: cputype: Add cputype definition for HIP12 arm64: Expose AIDR_EL1 via sysfs arm64/cpufeature: Add missing id_aa64mmfr4 feature reg update
This commit is contained in:
commit
328d35b755
|
|
@ -485,6 +485,7 @@ What: /sys/devices/system/cpu/cpuX/regs/
|
|||
/sys/devices/system/cpu/cpuX/regs/identification/
|
||||
/sys/devices/system/cpu/cpuX/regs/identification/midr_el1
|
||||
/sys/devices/system/cpu/cpuX/regs/identification/revidr_el1
|
||||
/sys/devices/system/cpu/cpuX/regs/identification/aidr_el1
|
||||
/sys/devices/system/cpu/cpuX/regs/identification/smidr_el1
|
||||
Date: June 2016
|
||||
Contact: Linux ARM Kernel Mailing list <linux-arm-kernel@lists.infradead.org>
|
||||
|
|
|
|||
|
|
@ -72,14 +72,15 @@ there are some issues with their usage.
|
|||
process could be migrated to another CPU by the time it uses the
|
||||
register value, unless the CPU affinity is set. Hence, there is no
|
||||
guarantee that the value reflects the processor that it is
|
||||
currently executing on. The REVIDR is not exposed due to this
|
||||
constraint, as REVIDR makes sense only in conjunction with the
|
||||
MIDR. Alternately, MIDR_EL1 and REVIDR_EL1 are exposed via sysfs
|
||||
at::
|
||||
currently executing on. REVIDR and AIDR are not exposed due to this
|
||||
constraint, as these registers only make sense in conjunction with
|
||||
the MIDR. Alternately, MIDR_EL1, REVIDR_EL1, and AIDR_EL1 are exposed
|
||||
via sysfs at::
|
||||
|
||||
/sys/devices/system/cpu/cpu$ID/regs/identification/
|
||||
\- midr
|
||||
\- revidr
|
||||
\- midr_el1
|
||||
\- revidr_el1
|
||||
\- aidr_el1
|
||||
|
||||
3. Implementation
|
||||
--------------------
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ struct cpuinfo_arm64 {
|
|||
u64 reg_dczid;
|
||||
u64 reg_midr;
|
||||
u64 reg_revidr;
|
||||
u64 reg_aidr;
|
||||
u64 reg_gmid;
|
||||
u64 reg_smidr;
|
||||
u64 reg_mpamidr;
|
||||
|
|
|
|||
|
|
@ -133,6 +133,7 @@
|
|||
|
||||
#define HISI_CPU_PART_TSV110 0xD01
|
||||
#define HISI_CPU_PART_HIP09 0xD02
|
||||
#define HISI_CPU_PART_HIP12 0xD06
|
||||
|
||||
#define APPLE_CPU_PART_M1_ICESTORM 0x022
|
||||
#define APPLE_CPU_PART_M1_FIRESTORM 0x023
|
||||
|
|
@ -220,6 +221,7 @@
|
|||
#define MIDR_FUJITSU_A64FX MIDR_CPU_MODEL(ARM_CPU_IMP_FUJITSU, FUJITSU_CPU_PART_A64FX)
|
||||
#define MIDR_HISI_TSV110 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_TSV110)
|
||||
#define MIDR_HISI_HIP09 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_HIP09)
|
||||
#define MIDR_HISI_HIP12 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_HIP12)
|
||||
#define MIDR_APPLE_M1_ICESTORM MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_ICESTORM)
|
||||
#define MIDR_APPLE_M1_FIRESTORM MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_FIRESTORM)
|
||||
#define MIDR_APPLE_M1_ICESTORM_PRO MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_ICESTORM_PRO)
|
||||
|
|
|
|||
|
|
@ -1403,6 +1403,8 @@ void update_cpu_features(int cpu,
|
|||
info->reg_id_aa64mmfr2, boot->reg_id_aa64mmfr2);
|
||||
taint |= check_update_ftr_reg(SYS_ID_AA64MMFR3_EL1, cpu,
|
||||
info->reg_id_aa64mmfr3, boot->reg_id_aa64mmfr3);
|
||||
taint |= check_update_ftr_reg(SYS_ID_AA64MMFR4_EL1, cpu,
|
||||
info->reg_id_aa64mmfr4, boot->reg_id_aa64mmfr4);
|
||||
|
||||
taint |= check_update_ftr_reg(SYS_ID_AA64PFR0_EL1, cpu,
|
||||
info->reg_id_aa64pfr0, boot->reg_id_aa64pfr0);
|
||||
|
|
|
|||
|
|
@ -328,11 +328,13 @@ static const struct kobj_type cpuregs_kobj_type = {
|
|||
|
||||
CPUREGS_ATTR_RO(midr_el1, midr);
|
||||
CPUREGS_ATTR_RO(revidr_el1, revidr);
|
||||
CPUREGS_ATTR_RO(aidr_el1, aidr);
|
||||
CPUREGS_ATTR_RO(smidr_el1, smidr);
|
||||
|
||||
static struct attribute *cpuregs_id_attrs[] = {
|
||||
&cpuregs_attr_midr_el1.attr,
|
||||
&cpuregs_attr_revidr_el1.attr,
|
||||
&cpuregs_attr_aidr_el1.attr,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
@ -469,6 +471,7 @@ static void __cpuinfo_store_cpu(struct cpuinfo_arm64 *info)
|
|||
info->reg_dczid = read_cpuid(DCZID_EL0);
|
||||
info->reg_midr = read_cpuid_id();
|
||||
info->reg_revidr = read_cpuid(REVIDR_EL1);
|
||||
info->reg_aidr = read_cpuid(AIDR_EL1);
|
||||
|
||||
info->reg_id_aa64dfr0 = read_cpuid(ID_AA64DFR0_EL1);
|
||||
info->reg_id_aa64dfr1 = read_cpuid(ID_AA64DFR1_EL1);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user