Index | Thread | Search

From:
Gert-Jan Vons <uhssknjm@posteo.net>
Subject:
Re: Fix for OpenBSD reboot failure on Fujitsu Futro S940
To:
Jonathan Gray <jsg@jsg.id.au>
Cc:
tech@openbsd.org
Date:
Tue, 13 Oct 2026 07:16:37 +0000

Download raw body.

Thread
Hi Jonathan,

On 13/10/2026 04:59, Jonathan Gray wrote:
> On Wed, Oct 07, 2026 at 08:03:28AM +0000, Gert-Jan Vons wrote:
>> 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).
> This is normally encoded in the ACPI FADT.
>
> What values does this system have for fadt->reset_reg.address and
> fadt->reset_value in sys/dev/acpi/acpi.c acpi_reset() ?
>
> Can also be seen by installing the acpica package and using
> iasl -d on files in /var/db/acpi/

Output from iasl:

                 Reset Register Supported (V2) : 1

  [074h 0116 00Ch]              Reset Register : [Generic Address Structure]

  [074h 0116 001h]                    Space ID : 01 [SystemIO]
  [075h 0117 001h]                   Bit Width : 08
  [076h 0118 001h]                  Bit Offset : 00
  [077h 0119 001h]        Encoded Access Width : 00 [Undefined/Legacy]
  [078h 0120 008h]                     Address : 00000000000000B2

  [080h 0128 001h]        Value to cause reset : 15

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
>
>