Index | Thread | Search

From:
Gert-Jan Vons <uhssknjm@posteo.net>
Subject:
Fix for OpenBSD reboot failure on Fujitsu Futro S940
To:
tech@openbsd.org
Date:
Wed, 07 Oct 2026 08:03:28 +0000

Download raw body.

Thread
Hello @tech,

On my Fujitsu Futro S940 (dmesg below), OpenBSD hangs on reboot. The console 
shows "rebooting..." but nothing happens and a power-cycle is needed to get 
things running again. Debugging showed that neither the cpuresetfn() nor the 
pulsing of the reset pin by the keyboard controller have any effect, and that 
the system hangs at the triple fault.

The patch below adds an attempt to reset using the Reset Control register, which 
solves the problem for me. I took this from FreeBSD/NetBSD and placed it at the 
same location in the code (after the reset pin pulsing).

The patch uses the same #define names for the io port number and bits as used in 
https://marc.info/?l=openbsd-tech&m=178787884327664 .

With kind regards,

Gert-Jan


Index: sys/arch/amd64/amd64/machdep.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/machdep.c,v
retrieving revision 1.314
diff -u -p -r1.314 machdep.c
--- sys/arch/amd64/amd64/machdep.c    28 Sep 2026 14:14:03 -0000    1.314
+++ sys/arch/amd64/amd64/machdep.c    5 Oct 2026 05:57:21 -0000
@@ -150,6 +150,10 @@ extern int db_console;
  #include <dev/ic/pckbcvar.h>
  #endif

+#define RST_CNT      0xcf9  /* Reset Control Register */
+#define RST_CNT_SYS_RST    0x02   /* System reset */
+#define RST_CNT_RST_CPU    0x04   /* Reset CPU */
+
  /* #define MACHDEP_DEBUG */

  #ifdef MACHDEP_DEBUG
@@ -1916,6 +1920,18 @@ cpu_reset(void)
      delay(100000);
      outb(IO_KBD + KBCMDP, KBC_PULSE0);
      delay(100000);
+
+    /*
+     * Try to force a reset via the Reset Control register.
+     * Reset is triggered by the 0->1 transition of the RST_CPU bit,
+     * and a hard reset will be done when the SYS_RST bit is set at
+     * the moment of the transition.
+     * First write selects the hard reset and clears RST_CPU, second
+     * write forces the 0->1 transition on RST_CPU.
+     */
+    outb(RST_CNT, RST_CNT_SYS_RST);
+    outb(RST_CNT, RST_CNT_SYS_RST | RST_CNT_RST_CPU);
+    delay(500000);

      /*
       * Try to cause a triple fault and watchdog reset by making the IDT
---8<---
OpenBSD 8.0 (GENERIC.MP) #83: Mon Oct  5 12:02:17 MDT 2026
deraadt@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 8034861056 (7662MB)
avail mem = 7768813568 (7408MB)
random: good seed from bootblocks
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.8 @ 0x6920b000 (72 entries)
bios0: vendor FUJITSU // American Megatrends Inc. version "V5.0.0.13 
R1.11.0.SR.4 for D3543-A1x" date 01/22/2020
bios0: FUJITSU FUTRO S940
efi0 at bios0: UEFI 2.6
efi0: American Megatrends rev 0x5000d
acpi0 at bios0: ACPI 6.1
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP FPDT FIDT MCFG DBG2 DBGP HPET LPIT APIC NPKT SSDT SSDT 
SSDT SSDT SSDT SSDT SSDT SSDT SSDT UEFI TPM2 BERT DMAR WDAT WSMT
acpi0: wakeup devices SIO1(S3) PS2K(S3) HDAS(S3) XHC_(S4) XDCI(S4) RP01(S4) 
PXSX(S4) RP02(S4) PXSX(S4) RP03(S4) PXSX(S4) RP04(S4) PXSX(S4) RP05(S4) PXSX(S4) 
RP06(S4) [...]
acpitimer0 at acpi0: 3579545 Hz, 32 bits
acpimcfg0 at acpi0
acpimcfg0: addr 0xe0000000, bus 0-255
acpihpet0 at acpi0: 19200000 Hz
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Pentium(R) Silver J5005 CPU @ 1.50GHz, 1495.86 MHz, 06-7a-01, 
patch 00000042
cpu0: cpuid 1 
edx=bfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE> 
ecx=47f8ebbf<SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,EST,TM2,SSSE3,SDBG,CX16,xTPR,PDCM,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,DEADLINE,AES,XSAVE,RDRAND>
cpu0: cpuid 6 eax=57<SENSOR,ARAT,PTS> ecx=1<EFFFREQ>
cpu0: cpuid 7.0 
ebx=2294e287<FSGSBASE,TSC_ADJUST,SGX,SMEP,ERMS,MPX,RDSEED,SMAP,CLFLUSHOPT,PT,SHA> 
ecx=40400004<UMIP> edx=ac000400<MD_CLEAR,IBRS,IBPB,STIBP,SSBD>
cpu0: cpuid a vers=4, gp=4, gpwidth=48, ff=3, ffwidth=48
cpu0: cpuid d.1 eax=f<XSAVEOPT,XSAVEC,XGETBV1,XSAVES>
cpu0: cpuid 80000001 edx=2c100800<NXE,PAGE1GB,RDTSCP,LONG> ecx=101<LAHF,3DNOWP>
cpu0: cpuid 80000007 edx=100<ITSC>
cpu0: msr 
10a=14000c6a<IBRS_ALL,SKIP_L1DFL,MDS_NO,IF_PSCHANGE,MISC_PKG_CT,ENERGY_FILT,GDS_NO,RFDS_CLEAR>
cpu0: MELTDOWN
cpu0: 24KB 64b/line 6-way D-cache, 32KB 64b/line 8-way I-cache, 4MB 64b/line 
16-way L2 cache
cpu0: smt 0, core 0, package 0, type P
mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges
cpu0: apic clock running at 19MHz
cpu0: mwait min=64, max=64, C-substates=0.2.0.2.4.2.1.1, IBE
cpu1 at mainbus0: apid 2 (application processor)
cpu1: Intel(R) Pentium(R) Silver J5005 CPU @ 1.50GHz, 1495.86 MHz, 06-7a-01, 
patch 00000042
cpu1: smt 0, core 1, package 0, type P
cpu2 at mainbus0: apid 4 (application processor)
cpu2: Intel(R) Pentium(R) Silver J5005 CPU @ 1.50GHz, 1495.86 MHz, 06-7a-01, 
patch 00000042
cpu2: smt 0, core 2, package 0, type P
cpu3 at mainbus0: apid 6 (application processor)
cpu3: Intel(R) Pentium(R) Silver J5005 CPU @ 1.50GHz, 1495.86 MHz, 06-7a-01, 
patch 00000042
cpu3: smt 0, core 3, package 0, type P
ioapic0 at mainbus0: apid 1 pa 0xfec00000, version 20, 120 pins
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus 1 (RP03)
acpiprt2 at acpi0: bus -1 (RP04)
acpiprt3 at acpi0: bus 2 (RP05)
acpiprt4 at acpi0: bus 3 (RP06)
acpiec0 at acpi0: not present
acpipci0 at acpi0 PCI0: 0x00000004 0x00000011 0x00000001
com0 at acpi0 UAR1 addr 0x3f8/0x8 irq 4: ns16550a, 16 byte fifo
com1 at acpi0 UAR2 addr 0x2f8/0x8 irq 3: ns16550a, 16 byte fifo
"PNP0303" at acpi0 not configured
"FUJ02E3" at acpi0 not configured
acpicmos0 at acpi0
acpibtn0 at acpi0: PWRB
glkgpio0 at acpi0 GPO1 uid 1 addr 0xd0c40000/0xcef irq 14, 80 pins
glkgpio1 at acpi0 GPO0 uid 2 addr 0xd0c50000/0xaff irq 14, 80 pins
glkgpio2 at acpi0 GPO2 uid 3 addr 0xd0c90000/0x7bf irq 15, 20 pins
glkgpio3 at acpi0 GPO3 uid 4 addr 0xd0c80000/0x82f irq 14, 35 pins
"INT0E0C" at acpi0 not configured
intelpmc0 at acpi0: PEPD
state 0: 0x7f:1:2:0x00:0x0000000000000060
counter: 0x7f:64:0:0x00:0x0000000000000632
frequency: 0
tpm0 at acpi0 TPM_ 2.0 (CRB) addr 0xfed40000/0x5000, device 0x00000000 rev 0x0
"FUJ0420" at acpi0 not configured
"INT3400" at acpi0 not configured
"INT3406" at acpi0 not configured
"INT3404" at acpi0 not configured
"INT3403" at acpi0 not configured
"INT3403" at acpi0 not configured
"INT3403" at acpi0 not configured
"INT3403" at acpi0 not configured
"INT3403" at acpi0 not configured
"PNP0C0B" at acpi0 not configured
acpipwrres0 at acpi0: DRST
acpipwrres1 at acpi0: DRST
acpipwrres2 at acpi0: DRST
acpipwrres3 at acpi0: DRST
acpipwrres4 at acpi0: DRST
acpipwrres5 at acpi0: DRST
acpipwrres6 at acpi0: WRST
acpicpu0 at acpi0: C3(10@150 mwait.1@0x60), C2(10@50 mwait.1@0x21), C1(1000@1 
mwait.1@0x1), PSS
acpicpu1 at acpi0: C3(10@150 mwait.1@0x60), C2(10@50 mwait.1@0x21), C1(1000@1 
mwait.1@0x1), PSS
acpicpu2 at acpi0: C3(10@150 mwait.1@0x60), C2(10@50 mwait.1@0x21), C1(1000@1 
mwait.1@0x1), PSS
acpicpu3 at acpi0: C3(10@150 mwait.1@0x60), C2(10@50 mwait.1@0x21), C1(1000@1 
mwait.1@0x1), PSS
acpipwrres7 at acpi0: FN00, resource for FAN0
acpitz0 at acpi0
acpitz0: critical temperature is 95 degC
acpivideo0 at acpi0: GFX0
acpivout0 at acpivideo0: DD1F
cpu0: using VERW MDS workaround
cpu0: Enhanced SpeedStep 1495 MHz: speeds: 1501, 1500, 1400, 1300, 1200, 1100, 
1000, 900, 800 MHz
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 "Intel Gemini Lake Host" rev 0x03
"Intel Gemini Lake DPTF" rev 0x03 at pci0 dev 0 function 1 not configured
"Intel Gemini Lake GNA" rev 0x03 at pci0 dev 0 function 3 not configured
"Intel UHD Graphics 605" rev 0x03 at pci0 dev 2 function 0 not configured
azalia0 at pci0 dev 14 function 0 "Intel Gemini Lake HD Audio" rev 0x03: msi
azalia0: codecs: Realtek ALC671, Intel/0x280d, using Realtek ALC671
audio0 at azalia0
"Intel Gemini Lake MEI" rev 0x03 at pci0 dev 15 function 0 not configured
ahci0 at pci0 dev 18 function 0 "Intel Gemini Lake AHCI" rev 0x03: msi, AHCI 1.3.1
ahci0: PHY offline on port 0
ahci0: port 1: 6.0Gb/s
scsibus1 at ahci0: 32 targets
sd0 at scsibus1 targ 1 lun 0: <ATA, DEM24-32GM41BC1D, L196> naa.502b2a201d1c1b1a
sd0: 30533MB, 512 bytes/sector, 62533296 sectors, thin
ppb0 at pci0 dev 19 function 0 "Intel Gemini Lake PCIE" rev 0xf3: msi
pci1 at ppb0 bus 1
em0 at pci1 dev 0 function 0 "Intel 82576" rev 0x01: msi, address a0:10:a2:b8:76:e5
em1 at pci1 dev 0 function 1 "Intel 82576" rev 0x01: msi, address a0:10:a2:b8:76:e4
ppb1 at pci0 dev 19 function 2 "Intel Gemini Lake PCIE" rev 0xf3: msi
pci2 at ppb1 bus 2
re0 at pci2 dev 0 function 0 "Realtek 8168" rev 0x0c: RTL8168G/8111G (0x4c00), 
msi, address 4c:52:62:30:a5:32
rgephy0 at re0 phy 7: RTL8251, rev. 0
ppb2 at pci0 dev 19 function 3 "Intel Gemini Lake PCIE" rev 0xf3: msi
pci3 at ppb2 bus 3
ppb3 at pci0 dev 20 function 0 "Intel Gemini Lake PCIE" rev 0xf3
pci4 at ppb3 bus 4
ppb4 at pci0 dev 20 function 1 "Intel Gemini Lake PCIE" rev 0xf3
pci5 at ppb4 bus 5
xhci0 at pci0 dev 21 function 0 "Intel Gemini Lake xHCI" rev 0x03: msi, xHCI 1.0
usb0 at xhci0: USB revision 3.0
uhub0 at usb0 configuration 1 interface 0 "Intel xHCI root hub" rev 3.00/1.00 addr 1
dwiic0 at pci0 dev 22 function 0 "Intel Gemini Lake I2C" rev 0x03: apic 1 int 27
iic0 at dwiic0
dwiic1 at pci0 dev 22 function 1 "Intel Gemini Lake I2C" rev 0x03: apic 1 int 28
iic1 at dwiic1
dwiic2 at pci0 dev 22 function 2 "Intel Gemini Lake I2C" rev 0x03: apic 1 int 29
iic2 at dwiic2
dwiic3 at pci0 dev 22 function 3 "Intel Gemini Lake I2C" rev 0x03: apic 1 int 30
iic3 at dwiic3
dwiic4 at pci0 dev 23 function 0 "Intel Gemini Lake I2C" rev 0x03: apic 1 int 31
iic4 at dwiic4
dwiic5 at pci0 dev 23 function 1 "Intel Gemini Lake I2C" rev 0x03: apic 1 int 32
iic5 at dwiic5
dwiic6 at pci0 dev 23 function 2 "Intel Gemini Lake I2C" rev 0x03: apic 1 int 33
iic6 at dwiic6
dwiic7 at pci0 dev 23 function 3 "Intel Gemini Lake I2C" rev 0x03: apic 1 int 34
iic7 at dwiic7
"Intel Gemini Lake SPI" rev 0x03 at pci0 dev 25 function 0 not configured
"Intel Gemini Lake SPI" rev 0x03 at pci0 dev 25 function 1 not configured
"Intel Gemini Lake SPI" rev 0x03 at pci0 dev 25 function 2 not configured
pcib0 at pci0 dev 31 function 0 "Intel Gemini Lake LPC" rev 0x03
ichiic0 at pci0 dev 31 function 1 "Intel Gemini Lake SMBus" rev 0x03: apic 1 int 20
iic8 at ichiic0
spdmem0 at iic8 addr 0x50: 4GB DDR4 SDRAM PC4-19200 SO-DIMM
spdmem1 at iic8 addr 0x52: 4GB DDR4 SDRAM PC4-21300 SO-DIMM
isa0 at pcib0
isadma0 at isa0
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0: console keyboard
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
vmm0 at mainbus0: VMX/EPT (using slow L1TF mitigation)
efifb0 at mainbus0: 2560x1440, 32bpp
wsdisplay0 at efifb0 mux 1: console (std, vt100 emulation), using wskbd0
wsdisplay0: screen 1-5 added (std, vt100 emulation)
enable mbufs in high memory
uhub1 at uhub0 port 8 configuration 1 interface 0 "Standard Microsystems product 
0x2514" rev 2.00/b.b3 addr 2
vscsi0 at root
scsibus2 at vscsi0: 256 targets
softraid0 at root
scsibus3 at softraid0: 256 targets
root on sd0a (8e8ada2c6288f224.a) swap on sd0b dump on sd0b