1

I have a Raspberry Pi 4 Model B Rev 1.1 board. When I gave the command cat /proc/cpuinfo, I got below logs.

processor       : 0
model name      : ARMv7 Processor rev 3 (v7l)
BogoMIPS        : 270.00
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xd08
CPU revision    : 3

Similar data was obtained for processor 1, 2 and 3.

But product specification https://www.raspberrypi.com/products/raspberry-pi-4-model-b/specifications/ informs that the board uses Cortex-A72 (ARM v8).

So from the board logs I am getting the model as ARMv7 Processor rev 3 (v7l) but from board specification it is Cortex-A72 (ARM v8). I was confused at why this difference in v7 architecture (board logs) and v8 architecture (product specs) is happening. Can anyone please help me to clear this confusion?

rohit
  • 198
  • 1
  • 1
  • 7
  • 1
    Are you running a 32-bit or 64-bit kernel? What is the output of `uname -a`? – Nate Eldredge Jul 12 '23 at 16:24
  • 2
    I can't verify just now, but I suspect that you are running a 32-bit kernel and OS that only uses the ARMv7 features of the chip (they are backward compatible), and so treats it as just ARMv7. I expect that if you booted a 64-bit OS, you'd see ARMv8 reported. – Nate Eldredge Jul 12 '23 at 16:49
  • most likely it is in armv7-m compatibility mode. – old_timer Jul 12 '23 at 17:11

1 Answers1

1

The level of precision in the information available in /proc/cpuinfo does vary according to my experience, the important one would be the CPU part.

In your case, it is 0xd08, which means you are using a Cortex-A72 according to the Arm documentation here:

Table 4-16 MIDR_EL1 bit assignments
Bits    Name    Function
[31:24] Implementer 

Indicates the implementer code. This value is:
0x41    ARM Limited.
[23:20] Variant 

Indicates the variant number of the processor. This is the major revision number in the r part of the rp description of the product revision status. This value is:nnnn
0   Major revision number.
[19:16] Architecture    

Indicates the architecture code. This value is:
0xF Defined by CPUID scheme.
[15:4]  Primary part number 

Indicates the primary part number. This value is:
0xD08   Cortex-A72 processor.
[3:0]   Revision    

Indicates the minor revision number of the processor. This is the minor revision number in the p part of the rp description of the product revision status. This value is:nnnn
1   Minor revision number.

On a Raspberry PI 3, I am getting 0x0d03, which is consistent with the BCM2835 having a Cortex-A53 core:

[15:4]  PartNum 

Indicates the primary part number. This value is:

0xD03

    Cortex-A53 processor.

Please note that you may be running a 32 bit version of Linux as well. You can check you are running an aarch64 version by using the following commands (tested on a Cortex-A53 running a 64 bit version of Armbian):

uname -a
Linux espressobin 5.15.93-mvebu64 #23.02.2 SMP PREEMPT Fri Feb 17 23:51:39 UTC 2023 aarch64 GNU/Linux
file $(which bash)
/usr/bin/bash: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=96c22dfc3c74ccf4ba77d9cce6fc2c5e635456c1, for GNU/Linux 3.7.0, stripped

If you don't see aarch64 in the outputs for those two commands, this would mean you are running a 32 bit version of linux, and you want to install, say, Raspberry Pi OS (64-bit), from here.

As pointed-out in the comments above, this would explain why /proc/cpuinfo reports an ARMv7 Processor rev 3 (v7l). This is why you should rather rely on the Primary part number for the purpose of identifying the exact processors you are using (your question seemed more related to the processors you were using than the operating system you were running IMHO).


Using 2023-05-03-raspios-bullseye-arm64-lite.img, we can see that architecture is set to 8, but the model name is not populated:

uname -a
Linux raspberrypi3 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64 GNU/Linux

cat /proc/cpuinfo
processor       : 0
BogoMIPS        : 38.40
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

processor       : 1
BogoMIPS        : 38.40
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

processor       : 2
BogoMIPS        : 38.40
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

processor       : 3
BogoMIPS        : 38.40
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

Hardware        : BCM2835
Revision        : a22082
Serial          : 0000000028b5385b
Model           : Raspberry Pi 3 Model B Rev 1.2

Using 2023-05-03-raspios-bullseye-armhf-lite.img, we can see that architecture is set to 7, and that the model name is populated

uname -a
Linux raspberrypi3 6.1.21-v7+ #1642 SMP Mon Apr  3 17:20:52 BST 2023 armv7l GNU/Linux
user@raspberrypi3:~$ cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 4 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

processor       : 1
model name      : ARMv7 Processor rev 4 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

processor       : 2
model name      : ARMv7 Processor rev 4 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

processor       : 3
model name      : ARMv7 Processor rev 4 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

Hardware        : BCM2835
Revision        : a22082
Serial          : 0000000028b5385b
Model           : Raspberry Pi 3 Model B Rev 1.2
Frant
  • 5,382
  • 1
  • 16
  • 22
  • Thank you Frant for the detailed comment. But as per my understanding Cortex-A72 belongs to ARMv8 architecture (https://en.wikipedia.org/wiki/ARM_Cortex-A72). But the console logs are showing it as ARMv7 architecture. So why is a hardware of v8 showing v7 in console logs? I am still confused. – rohit Jul 12 '23 at 14:48
  • 1
    I augmented the answer upon reading your comment. Feel free to accept the answer if you think it did answer your question/it was useful. – Frant Jul 12 '23 at 22:41
  • By the way, this would be interesting to know if you were running a 32 bit of a 64 bit version of Linux - thanks in advance. – Frant Jul 13 '23 at 12:41
  • 1
    Bottom-line, the information you would be looking for would be be, for a 32 bit OS: The vendor (0x41 == ARM), The architecture (7 == Armv7-a/aarch32 execution mode), and the CPU part (0x0d08 == Cortex-A72), or, for a 64 bit OS: The vendor (0x41 == ARM), The architecture (8 == Armv8-a/aarch64 execution mode), and the CPU part (0x0d08 == Cortex-A72) – Frant Jul 13 '23 at 18:53
  • Hello Frant .. I am running a 32-bit OS. As you have suggested, this could be reason why I am getting ARMv7 architecture on Raspberry Pi 4 Model B Rev 1.1 board. – rohit Jul 14 '23 at 03:56