diff mbox series

arm64/cpuinfo: Show right CPU architecture information

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

Commit Message

luanshi Jan. 19, 2021, 10:55 a.m. UTC
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(-)

Comments

Will Deacon Jan. 19, 2021, 11:01 a.m. UTC | #1
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
luanshi Jan. 19, 2021, 11:26 a.m. UTC | #2
在 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
Catalin Marinas Jan. 19, 2021, 12:32 p.m. UTC | #3
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 mbox series

Patch

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));