Linux: /proc/cpuinfo fehlt Hardware/Revision/Serial auf arm64

Erstellt am 11. Juli 2017  ·  4Kommentare  ·  Quelle: raspberrypi/linux

Die in /proc/cpuinfo enthaltenen Informationen bei der Verwendung eines arm64-Kernels enthalten weniger Informationen als die 32-Bit-Arm-Version, was dazu führt, dass das System nicht als Raspberry Pi erkannt wird, z. B. von der RPi.GPIO-Bibliothek.

Vor allem die fehlenden Hardware-/Revisionszeilen unterhalb der einzelnen CPUs scheinen Ärger zu machen, da sie zur Identifikation des jeweiligen Modells dienen.

Nach dem, was ich im Quellcode sehen kann, kommt die cpuinfo für arm64 von hier: https://github.com/raspberrypi/linux/blob/rpi-4.12.y/arch/arm64/kernel/cpuinfo.c , während für arm wird es in setup.c generiert (wäre https://github.com/raspberrypi/linux/blob/rpi-4.12.y/arch/arm64/kernel/setup.c für arm64).

Inhalt von /proc/cpuinfo mit dem arm64-Kernel:

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

... ... ...

Was ich erwartet habe (läuft auf einem 32-Bit-Arm-Kernel, seriell entfernt):

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

... ... ...

Hardware        : BCM2709
Revision        : a22082
Serial          : 00000000XXXXXXXX

Zusätzliche Systeminformationen:

$ cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
HYPRIOT_OS="HypriotOS/arm64"
HYPRIOT_OS_VERSION="v1.1.1"
HYPRIOT_DEVICE="Raspberry Pi 3 64bit"
HYPRIOT_IMAGE_VERSION="v20170303-185520"
$ uname -a
Linux black-pearl 4.9.13-bee42-v8 #1 SMP PREEMPT Fri Mar 3 16:42:37 UTC 2017 aarch64 GNU/Linux

Hilfreichster Kommentar

Ein einfacher, wenn auch nicht sehr eleganter Workaround dafür (ohne Patchen der Userspace-Bibliotheken oder des Kernels) besteht darin, bei Bedarf eine Faux-Version von /proc/cpuinfo einzubinden; siehe zum Beispiel meinen Beitrag hier .

Beim rpi-4.19.y Kernel reicht dies aus, um zB die picamera Lib zum Laufen zu bringen (siehe zB hier (64-Bit-Kernel, 32-Bit-Raspbian-Userspace in diesem Fall)) und wird iirc erlauben ein 64-Bit-Build von wiringpi zum Ausführen OK (64-Bit-Kernel, 64-Bit-Benutzerbereich). YMMV.

Sie können zB einen Mount-Namespace für Ihre Ziel-App verwenden, um zu verhindern, dass sich dieser Workaround auf den Rest Ihres Systems auswirkt (obwohl die meisten gut erzogenen 64-Bit-Userland-Sachen ohnehin den Gerätebaum überprüfen, anstatt /proc/cpuinfo , und so scheint egal zu sein ^-^).

hth,
sakaki

Alle 4 Kommentare

Dieses Problem macht alle Rasberry Pi GPIO usw.-Skripte auf dieser Architektur unbrauchbar.

  1. Wir unterstützen keine 64-Bit-Builds, aber wenn es einfache Dinge gibt, die wir tun können (wie das Hosten von defconfigs für arm64), werden wir dies tun.
  2. Wenn wir arm64 unterstützen, geschieht dies mit der absolut minimalen Anzahl von Änderungen am Upstream-Kernel (idealerweise keine), und der Inhalt von /proc/cpuinfo würde nicht ganz oben auf der Prioritätenliste stehen. Board-Revisionsnummer und Seriennummer sind Konzepte, die in der arm64-Architektur anscheinend nicht existieren, aber wir werden diese Informationen weiterhin über /proc/device-tree/system/linux,revision und /proc/device-tree/system/linux,serial verfügbar machen, mit menschenlesbaren Versionen in /proc/device-tree/model und /proc/device-tree/serial-number .

Dies wird nicht behoben.

Ein einfacher, wenn auch nicht sehr eleganter Workaround dafür (ohne Patchen der Userspace-Bibliotheken oder des Kernels) besteht darin, bei Bedarf eine Faux-Version von /proc/cpuinfo einzubinden; siehe zum Beispiel meinen Beitrag hier .

Beim rpi-4.19.y Kernel reicht dies aus, um zB die picamera Lib zum Laufen zu bringen (siehe zB hier (64-Bit-Kernel, 32-Bit-Raspbian-Userspace in diesem Fall)) und wird iirc erlauben ein 64-Bit-Build von wiringpi zum Ausführen OK (64-Bit-Kernel, 64-Bit-Benutzerbereich). YMMV.

Sie können zB einen Mount-Namespace für Ihre Ziel-App verwenden, um zu verhindern, dass sich dieser Workaround auf den Rest Ihres Systems auswirkt (obwohl die meisten gut erzogenen 64-Bit-Userland-Sachen ohnehin den Gerätebaum überprüfen, anstatt /proc/cpuinfo , und so scheint egal zu sein ^-^).

hth,
sakaki

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen