Download raw body.
Fix for OpenBSD reboot failure on Fujitsu Futro S940
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
Fix for OpenBSD reboot failure on Fujitsu Futro S940