Message ID | 20210119105510.27836-1-zhangliguang@linux.alibaba.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64/cpuinfo: Show right CPU architecture information | expand |
On Tue, Jan 19, 2021 at 06:55:10PM +0800, Liguang Zhang wrote: > CPU architecture is assigned to be a fixed value, it should be obtained > from midr register. > > Signed-off-by: Liguang Zhang <zhangliguang@linux.alibaba.com> > --- > arch/arm64/kernel/cpuinfo.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c > index 77605aec25fe..0bd11e0fe9f2 100644 > --- a/arch/arm64/kernel/cpuinfo.c > +++ b/arch/arm64/kernel/cpuinfo.c > @@ -191,7 +191,7 @@ static int c_show(struct seq_file *m, void *v) > > seq_printf(m, "CPU implementer\t: 0x%02x\n", > MIDR_IMPLEMENTOR(midr)); > - seq_printf(m, "CPU architecture: 8\n"); > + seq_printf(m, "CPU architecture: %d\n", MIDR_ARCHITECTURE(midr)); Huh? Won't this always return 0xf? Will
在 2021/1/19 19:01, Will Deacon 写道: > On Tue, Jan 19, 2021 at 06:55:10PM +0800, Liguang Zhang wrote: >> CPU architecture is assigned to be a fixed value, it should be obtained >> from midr register. >> >> Signed-off-by: Liguang Zhang <zhangliguang@linux.alibaba.com> >> --- >> arch/arm64/kernel/cpuinfo.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c >> index 77605aec25fe..0bd11e0fe9f2 100644 >> --- a/arch/arm64/kernel/cpuinfo.c >> +++ b/arch/arm64/kernel/cpuinfo.c >> @@ -191,7 +191,7 @@ static int c_show(struct seq_file *m, void *v) >> >> seq_printf(m, "CPU implementer\t: 0x%02x\n", >> MIDR_IMPLEMENTOR(midr)); >> - seq_printf(m, "CPU architecture: 8\n"); >> + seq_printf(m, "CPU architecture: %d\n", MIDR_ARCHITECTURE(midr)); > Huh? Won't this always return 0xf? Hi Will, I'm not sure. My platform return 0xf, but /proc/cpuinfo show 8. Why we assign a fixed value to cpu architecture? Regards Liguang Zhang > > Will
On Tue, Jan 19, 2021 at 07:26:31PM +0800, 乱石 wrote: > 锟斤拷 2021/1/19 19:01, Will Deacon 写锟斤拷: > > On Tue, Jan 19, 2021 at 06:55:10PM +0800, Liguang Zhang wrote: > > > CPU architecture is assigned to be a fixed value, it should be obtained > > > from midr register. > > > > > > Signed-off-by: Liguang Zhang <zhangliguang@linux.alibaba.com> > > > --- > > > arch/arm64/kernel/cpuinfo.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c > > > index 77605aec25fe..0bd11e0fe9f2 100644 > > > --- a/arch/arm64/kernel/cpuinfo.c > > > +++ b/arch/arm64/kernel/cpuinfo.c > > > @@ -191,7 +191,7 @@ static int c_show(struct seq_file *m, void *v) > > > seq_printf(m, "CPU implementer\t: 0x%02x\n", > > > MIDR_IMPLEMENTOR(midr)); > > > - seq_printf(m, "CPU architecture: 8\n"); > > > + seq_printf(m, "CPU architecture: %d\n", MIDR_ARCHITECTURE(midr)); > > Huh? Won't this always return 0xf? > > Hi Will, > > I'm not sure. My platform return 0xf, but /proc/cpuinfo show 8. Why we > assign a fixed > > value to cpu architecture? Because 0xf first appeared on some ARMv6 CPUs (1176, 11MPcore and some newer revisions of 1136). A field value of 0xf means don't bother with architecture version but rather check the CPUID information for the features you need. We decided to call it 8 here with 64-bit as that was announced as ARMv8. A 32-bit kernel running on ARMv8 hardware would report 7 (as it would on some ARMv6 hardware like 1176 etc.)
diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c index 77605aec25fe..0bd11e0fe9f2 100644 --- a/arch/arm64/kernel/cpuinfo.c +++ b/arch/arm64/kernel/cpuinfo.c @@ -191,7 +191,7 @@ static int c_show(struct seq_file *m, void *v) seq_printf(m, "CPU implementer\t: 0x%02x\n", MIDR_IMPLEMENTOR(midr)); - seq_printf(m, "CPU architecture: 8\n"); + seq_printf(m, "CPU architecture: %d\n", MIDR_ARCHITECTURE(midr)); seq_printf(m, "CPU variant\t: 0x%x\n", MIDR_VARIANT(midr)); seq_printf(m, "CPU part\t: 0x%03x\n", MIDR_PARTNUM(midr)); seq_printf(m, "CPU revision\t: %d\n\n", MIDR_REVISION(midr));
CPU architecture is assigned to be a fixed value, it should be obtained from midr register. Signed-off-by: Liguang Zhang <zhangliguang@linux.alibaba.com> --- arch/arm64/kernel/cpuinfo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)