Timecounter HPET frequency 19200000 Hz quality 950

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

Systeme mit Intel Apollo Lake Prozessoren mit F-1 (A) Stepping (CPUID 506CA) können beim Starten von FreeBSD 13 beim Punkt Timecounter "HPET" frequency 19200000 Hz quality 950 hängen bleiben. Ursache ist ein Fehler der MONITOR/MWAIT Funktionen im Prozessor. Um das Problem zu lösen, können Sie entweder über das BIOS die Bereitstellung der MONITOR/MWAIT Funktionen deaktieren oder alternativ über den FreeBSD Bootparameter set machdep.idle_mwait=0 die Nutzung dieser Funktionen unterbinden. Künftige FreeBSD Versionen deaktivieren diese Funktionen für diese Prozessoren generell - das Problem tritt damit dort nicht mehr auf.

Betroffene Systeme

Betroffen sind Systeme mit:

Problem

Der Startvorgang von FreeBSD 13 bleibt bei folgendem Punkt hängen:

  • Timecounter "HPET" frequency 19200000 Hz quality 950

Hier dazu ein Auszug eines betroffenen Systems (getestet mit OPNsense 23.1-rc1):

[...]
FreeBSD 13.1-RELEASE-p5 stable/23.1-n250368-9ba5919b1b1 SMP amd64
[...]
FreeBSD clang version 13.0.0 (git@github.com:llvm/llvm-project.git llvmorg-13.0.0-0-gd7b669b3a303)
VT(efifb): resolution 800x600
CPU: Intel(R) Celeron(R) CPU J3455 @ 1.50GHz (1497.60-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x506ca  Family=0x6  Model=0x5c  Stepping=10
[...]
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff irq 8 on acpi0
Timecounter "HPET" frequency 19200000 Hz quality 950

Ursache

APL30 - A Store Instruction May Not Wake up MWAIT.[1]

Ursache für das Problem ist das CPU Errata APL30 - A Store Instruction May Not Wake up MWAIT. Das Befehlspaars MONITOR/MWAIT ermöglicht normalerweise einem logischen Prozessor, in einem Ruhezustand zu warten, bis eine Speicherung in einem definierten Speicher-Adressbereich erfolgt. Aufgrund dieses Fehlers kann es vorkommen, dass Speicherungen im definierten Adressbereich MWAIT nicht zur Wiederaufnahme der Ausführung führen.[1] Daher bleibt FreeBSD beim Startvorgang auf betroffenen Systemen beim Punkt Timecounter "HPET" frequency 19200000 Hz quality 950 stehen.

Lösung

Zur Lösung des Bootproblems werden die Funktionen MONITOR/MWAIT deaktiviert. Dies kann entweder über das BIOS, über einen Bootparameter oder über einen Patch im Betriebssystem gelöst werden.

Option 1: BIOS

Sofern das BIOS eine Option zum Deaktivieren der MONITOR/MWAIT Funktionen bietet, können dort diese Funktionen deaktiviert werden. Das System startet daraufhin, ohne bei Timecounter "HPET" frequency 19200000 Hz quality 950 hängen zu bleiben.[2]

Option 2: Bootparameter set machdep.idle_mwait=0

Der Bootparameter set machdep.idle_mwait=0 unterbindet die Verwendung von MONITOR/MWAIT. Dadurch startet das System zuverlässig:

Type '?' for a list of commands, 'help' for more detailed help.
OK set machdep.idle_mwait=0
OK boot
[...]
FreeBSD 13.1-RELEASE-p5 stable/23.1-n250368-9ba5919b1b1 SMP amd64
FreeBSD clang version 13.0.0 (git@github.com:llvm/llvm-project.git llvmorg-13.0.0-0-gd7b669b3a303)
VT(efifb): resolution 800x600
CPU: Intel(R) Celeron(R) CPU J3455 @ 1.50GHz (1497.60-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x506ca  Family=0x6  Model=0x5c  Stepping=10
[...]
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff irq 8 on acpi0
Timecounter "HPET" frequency 19200000 Hz quality 950
Event timer "HPET" frequency 19200000 Hz quality 550
Event timer "HPET1" frequency 19200000 Hz quality 440
Event timer "HPET2" frequency 19200000 Hz quality 440
Event timer "HPET3" frequency 19200000 Hz quality 440
Event timer "HPET4" frequency 19200000 Hz quality 440
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <32-bit timer at 3.579545MHz> port 0x408-0x40b on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
[...]
igb1: link state changed to UP

Option 3: Bootparameter set machdep.disable_msix_migration=1

Alternativ führt auch der Bootparameter set machdep.disable_msix_migration=1 dazu, dass das System vollständig starten kann. Interrupts werden damit am selben Kern ausgeführt, die MWAIT Funktion wacht dann wieder auf. Wir empfehlen jedoch mit dem Bootparameter set machdep.idle_mwait=0 MONITOR/MWAIT auf diesen Prozessoren generell nicht zu nützen.

Persistenter Fix

Nachdem Sie temporär mit den 3 verschiedenen Optionen OPNsense 23.1 gestartet haben, können Sie OPNsense 23.1 installieren. Danach erfolgt ein obligatorischer Neustart und das System startet vom Zielmedium (SSD). Sie müssen dann noch einmal den Parameter (wenn Sie Option 2 oder Option 3 verwendet haben) angeben. Nachdem das System dann von der SSD gestartet ist, stoßen Sie die integrierte Updatefunktion in OPNsense an. Somit wird OPNsense vom ursprünglichen Stand 23.1 auf derzeit 23.1.6 aktualisiert (zum Zeitpunkt der Änderung dieses Artikels war OPNsense 23.1.6 die aktuelle Version). Sie erhalten dann auch den Fix zu dem Timecounter HPET Problem, dieser wurde bereits mit 23.1.1 integriert. Nachdem OPNsense auf den aktuellen Stand gebracht wurde, bootet OPNsense ohne Angabe der Parameter oder BIOS Parameter ohne Probleme.

Verwenden von neuerer FreeBSD Version

Neuere FreeBSD Versionen deaktivieren die Verwendung von MONITOR/MWAIT nicht nur für das ältere CPU Stepping 506C9, sondern auch für das neuere Stepping 506CA[3] bzw. 506C*.[4] Bei künftigen FreeBSD Versionen wird daher dieses Problem nicht mehr auftreten.

Bei OPNsense wurde dazu ein Issue erstellt, damit das Problem mit einem kommenden Update ebenso behoben werden kann.[5] Am 01. Februar 2023 wurde der Fix im Code integriert und mit dem Release von OPNsense 23.1.1 am 15. Februar 2023 veröffentlicht.[6]

Installation der OPNsense Business Edition

Wenn Sie bei Systemen mit der CPUID 506CA direkt die OPNsense Business Edition in der Version 23.4 installieren, gibt es bei der Installation keine Probleme. Der Fix für den HPET Timecounter ist bei den Installationsmedien zu OPNsense 23.4 bereits integriert. Unser Wiki zeigt wie Sie die direkte Installation der OPNsense Business Edition vornehmen.

Weitere Informationen

Einzelnachweise

  1. 1,0 1,1 Intel Pentium and Celeron Processor N- and J- Series (www.intel.com) Page 25: APL30 - A Store Instruction May Not Wake up MWAIT
  2. PfSense on Zotac Zbox CI327 (jselec.nl, 27.07.2018) Boot hangs showing the following line: Timecounter “HPET” frequency 19200000 Hz quality 950 - You can solve this by disabling in Bios: /Features/CPU Configuration/Monitor M-Wait -> disabled
  3. x86: Add another cpuid for Apollo Lake errata APL30 (freebsd-src, 09.08.2022)
  4. x86: ignore stepping for APL30 errata (freebsd-src, 12.01.2023)
  5. Apollo Lake J3455 CPUID 506CA hangs on boot - APL30 MWAIT issue (github.com/opnsense/src/issues, 25.01.2023)
  6. OPNsense 23.1.1 released (forum.opnsense.org, 15.02.2023)


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer arbeitet im Product Management Team von Thomas-Krenn. Er evaluiert dabei neueste Technologien und teilt sein Wissen in Fachartikeln, bei Konferenzen und im Thomas-Krenn Wiki. Bereits 2005 - ein Jahr nach seinem Abschluss des Studiums zu Computer- und Mediensicherheit an der FH Hagenberg - heuerte er beim bayerischen Server-Hersteller an. Als Öffi-Fan nutzt er gerne Bus & Bahn und genießt seinen morgendlichen Spaziergang ins Büro.


Das könnte Sie auch interessieren

Broadcom BCM574xx VLAN Treiberproblem unter FreeBSD 13.2 mit bnxt Treiber
Broadcom VLAN Verbindungsproblem unter FreeBSD mit bnxt Treiber
Intel Microcode unter FreeBSD aktualisieren