Issues with Power and ACPI features

Hello, I’m facing issues with Hard reboot, ACPI Hard power down and ACPI Standby features on my machine.

Hardware setup 1:

  • Core i3-9100 CPU
  • 16GB of RAM
  • Asus Prime H310M-A motherboard.
  • 1 NvME SSD (in PCIe mode via BIOS).
  • 3 Toshiba N300 SATA HDDs. Suspecting there’s something to do with SATA ports initialization I tried both - with SATA disks attached and without. No difference, so this alteration is irrelevant.

Hardware setup 2:

  • Core i5-5257U
  • 16GB of RAM
  • Macbook Pro 13" 2015
  • 1 SSD
  • Network is not working, so I didn’t try to install ACPI

Builds variants tested:

  1. HW kernel build from @nfeske
  2. NOVA kernel official 25.10 build
  3. Own build with HW kernel build from master with no changes
  4. Own build with HW kernel build from master with own SATA fix
  5. Own build with HW kernel build from master with this SATA fix from @ssumpf
  6. Own build with HW kernel build from master with this SATA fix from @ssumpf
  7. Own build with HW kernel build from 25.10.1 tag with own SATA fix
  8. Own build with HW kernel build from 25.10.1 tag with this SATA fix from @ssumpf
  9. Own build with HW kernel build from 25.10.1 tag with this SATA fix from @ssumpf
  10. Own build with NOVA kernel build from 25.10.1 tag with this SATA fix from @ssumpf

Testing results (ordered by build)

Here is the full picture I got for each build. Was actually testing SATA fixes, but just used an opportunity to test these features also.

Hard reboot on Hardware setup 1 (per build):

  1. Works every time, no issues :white_check_mark:
  2. Works every time, no issues :white_check_mark:
  3. Doesn’t work, system just hangs, HDDs don’t stop, CPU fan is spinning, screen freezes, stops responding to the network pings. No reaction on power button :cross_mark:
    Sometimes works on 1st try, but then fails in the same way on the second try after reboot :cross_mark:
  4. Same as on the 3rd build variant :cross_mark:
  5. Same as on the 3rd build variant :cross_mark:
  6. Same as on the 3rd build variant :cross_mark:
  7. Same as on the 3rd build variant :cross_mark:
  8. Same as on the 3rd build variant :cross_mark:
  9. Same as on the 3rd build variant :cross_mark:
  10. Same as on the 3rd build variant :cross_mark:

Hard reboot on Hardware setup 2 (per build):

  1. Works every time, no issues :white_check_mark:
  2. Works every time, no issues :white_check_mark:
  3. Works every time, no issues :white_check_mark:
  4. Works every time, no issues :white_check_mark:
  5. Works every time, no issues :white_check_mark:
  6. Works every time, no issues :white_check_mark:
  7. Works every time, no issues :white_check_mark:
  8. Works every time, no issues :white_check_mark:
  9. Works every time, no issues :white_check_mark:
  10. Works every time, no issues :white_check_mark:

ACPI Hard power down on Hardware setup 1 (per build):

  1. Works every time, no issues :white_check_mark:
  2. Works every time, no issues :white_check_mark:
  3. Doesn’t work, system just hangs, HDDs don’t stop, CPU fan is spinning, screen turns off, stops responding to the network pings. No reaction on power button :cross_mark:
  4. Same as on the 3rd build variant :cross_mark:
  5. Same as on the 3rd build variant :cross_mark:
  6. Same as on the 3rd build variant :cross_mark:
  7. Works every time, no issues :white_check_mark:
  8. Works every time, no issues :white_check_mark:
  9. Works every time, no issues :white_check_mark:
  10. Works every time, no issues :white_check_mark:

ACPI Standby on Hardware setup 1 (per build):

  1. Not accessible (there’s no such option) :dotted_line_face:
  2. Works, HDDs stop, CPU fan stops, resumes on power button click.
    But Leitzentrale is not responsive on resume (check the video) :warning:.
  3. Doesn’t work, system just hangs, HDDs don’t stop, CPU fan is spinning, screen turns off, stops responding to the network pings. No reaction on power button :cross_mark:
  4. Same as on the 3rd build variant :cross_mark:
  5. Same as on the 3rd build variant :cross_mark:
  6. Same as on the 3rd build variant :cross_mark:
  7. Same as on the 3rd build variant :cross_mark:
  8. Same as on the 3rd build variant :cross_mark:
  9. Same as on the 3rd build variant :cross_mark:
  10. Same as on the 2nd build variant :warning:.

And because system hangs I don’t see any logs about what went wrong…
Also looks like present of SATA fixes has no effect on the behavior :ok_hand:

I don’t remember were is to coming from, but I think Standby simply doesn’t work on HW kernel and that’s why it’s absent in the build from @nfeske

The other 2 are interesting.

What am I missing in my builds to make Hard reboot work consistently on my Hardware Setup 1?
It looks like I’m missing something in my builds comparing to the official 25.10 and @nfeske’s builds :thinking:

Also what could be the reason for the Leitzentrale not responding on resume after Standby?
On the video I also unplug and plug back the mouse, and UI shows that, but it doesn’t respond on mouse clicks :thinking:

It looks like build variants 8 and 9 are incorrectly reported as being the same.

1 Like

You are right, a typo it is.
Fixed :+1:

Btw, here’s my build config

GENODE_DIR  := /home/goretz/genode
BASE_DIR    := $(GENODE_DIR)/repos/base
CONTRIB_DIR := $(GENODE_DIR)/contrib

# enable parallel build
MAKE += -j4

# enable use of compiler cache
CCACHE := yes


##
## Run-tool configuration
##

# create depot archives and update recipe versions automatically
RUN_OPT += --depot-auto-update

# kernel to use (nova, hw, sel4, linux, or foc)
KERNEL ?= hw

# board to use (pc or linux)
BOARD ?= pc

# local variable for run-tool arguments that depend on the used board
BOARD_RUN_OPT(linux)  = --include power_on/linux --include log/linux
BOARD_RUN_OPT(pc)     = $(QEMU_RUN_OPT)

# local variable for run-tool arguments used for running scenarios in Qemu
QEMU_RUN_OPT := --include power_on/qemu  --include log/qemu --include image/disk


##
## Qemu arguments, effective when using the run tool's 'power_on/qemu' back end
##

# enable GDB stub
#QEMU_OPT += -s

# enable KVM full virtualization support in Qemu
#QEMU_OPT += -accel kvm

# use time-tested graphics backend
QEMU_OPT += -display sdl

# add kernel-specific Qemu arguments
QEMU_OPT += $(QEMU_OPT(${KERNEL}))

ifdef BOARD
RUN_OPT += ${BOARD_RUN_OPT(${BOARD})}
endif

ifdef KERNEL
RUN_OPT += --include boot_dir/$(KERNEL)
endif


#
# Drivers for x86 PC
#
REPOSITORIES += $(GENODE_DIR)/repos/pc

#
# Drivers ported from the OpenBSD
#
REPOSITORIES += $(GENODE_DIR)/repos/dde_bsd

#
# Drivers ported from iPXE
#
#REPOSITORIES += $(GENODE_DIR)/repos/dde_ipxe


##
## Kernel-specific repository
##

ifdef KERNEL
REPOSITORIES += $(GENODE_DIR)/repos/base-$(KERNEL)
endif


##
## Repositories needed for the default demo scenario
##

REPOSITORIES += $(GENODE_DIR)/repos/base
REPOSITORIES += $(GENODE_DIR)/repos/os
REPOSITORIES += $(GENODE_DIR)/repos/demo


##
## Optional repositories
##

#
# Ports of popular open-source libraries and the C library.
#
# Make sure to execute 'make prepare' in 'libports' prior building.
#
REPOSITORIES += $(GENODE_DIR)/repos/libports

#
# Ports of popular 3rd-party applications
#
# The 'ports' repository depends on 'libc' and 'libports'.
# Make sure to execute 'make prepare' in 'ports' prior building.
#
REPOSITORIES += $(GENODE_DIR)/repos/ports

#
# Ports of the Linux TCP/IP stack and Linux drivers (USB) from the Linux kernel
#
REPOSITORIES += $(GENODE_DIR)/repos/dde_linux

#
# NetBSD file-system support
#
REPOSITORIES += $(GENODE_DIR)/repos/dde_rump

#
# High-level Genode-specific services and applications
#
# The 'gems' repository depends on 'libc' and 'libports'.
#
REPOSITORIES += $(GENODE_DIR)/repos/gems

#
# Collection of community-maintained components
#
# Please follow the instructions provided at:
#
#   https://github.com/genodelabs/genode-world
#
#REPOSITORIES += $(GENODE_DIR)/repos/world

REPOSITORIES += $(GENODE_DIR)/repos/lab

And here’s my build routines

Prepare:

./tool/create_builddir x86_64
./tool/ports/prepare_port grub2
/tool/ports/prepare_port \
      acpica bash coreutils curl dde_bsd dde_rump e2fsprogs-lib \
      expat freetype gdb gmp gnupg grub2 jitterentropy jpeg \
      libarchive libc libdrm libgcrypt libiconv libnl libpng \
      libssh libusb libuvc libyuv linux linux-firmware lwip mesa \
      ncurses nova openssl pcre qemu-usb qoost stb stdcxx tcl \
      ttf-bitstream-vera vim virtualbox6 wpa_supplicant x86emu \
      xz zlib

Build hw:

make -C build/x86_64 run/sculpt_image KERNEL=hw BOARD=pc DEPOT=omit

Build nova:

make -C build/x86_64 run/sculpt_image KERNEL=nova BOARD=pc DEPOT=omit

I could imagine that the reboot issue stems from our approach to press every button simultaneously to reset the system. One option is trying to perform system reset via PS/2 port 0x64 which may have side effects on systems without PS/2 (emulation). Note, PS/2 is not disovered currently but just expected to be there on PC. But, this is just a guess.

For testing, you may set <config ps2="false"> repos/gems/sculpt/manager/default and rebuild the image.

1 Like

Thanks for suggestion! Just tested that on my Hardware setup 1 including the current master branch with the latest commit ffb059da4d8c1c1600ca6a66758302d3cb3c844e

Nova kernel used is 2025-11-20

The ps2 changes were done in repos/gems/sculpt/manager/default

Builds variants tested:

  1. Own build with HW kernel build from current master
  2. Own build with NOVA kernel build from current master
  3. Own build with HW kernel build from current master with config | ps2: no
  4. Own build with NOVA kernel build from current master with config | ps2: no
  5. Own build with HW kernel build from 25.10.1 tag with <config ps2="false" />
  6. Own build with NOVA kernel build from 25.10.1 tag with <config ps2="false" />
  7. Own build with HW kernel build from 25.10.1 tag with <config ps2="false" /> and SATA fix from @ssumpf
  8. Own build with NOVA kernel build from 25.10.1 tag with <config ps2="false" /> and SATA fix from @ssumpf

Here are the results

Hard reboot (per build):

  1. Doesn’t work, system just hangs, HDDs don’t stop, CPU fan is spinning, screen freezes, stops responding to the network pings. No reaction on power button :cross_mark:
  2. Works every time, no issues :white_check_mark:
  3. Same as on the 1st build variant :cross_mark:
  4. Works every time, no issues :white_check_mark:
  5. Works every time, no issues :white_check_mark:
  6. Works every time, no issues :white_check_mark:
  7. Works every time, no issues :white_check_mark:
  8. Works every time, no issues :white_check_mark:

ACPI (2025-11-20) Hard power down (per build):

  1. Confirm button doesn’t work (animates press but no effect) :cross_mark:
  2. Same as on the 1st build variant :cross_mark:
  3. Same as on the 1st build variant :cross_mark:
  4. Same as on the 1st build variant :cross_mark:
  5. Works every time, no issues :white_check_mark:
  6. Works every time, no issues :white_check_mark:
  7. Works every time, no issues :white_check_mark:
  8. Works every time, no issues :white_check_mark:

ACPI (2025-11-20) Standby (per build):

  1. Doesn’t work, system just hangs, HDDs don’t stop, CPU fan is spinning, screen turns off, but network responds to pings. No reaction on power button :cross_mark:
  2. Same as on the 1st build variant :cross_mark:
  3. Same as on the 1st build variant :cross_mark:
  4. Same as on the 1st build variant :cross_mark:
  5. Seemingly works, system goes down: HDDs stop, CPU fan stops, screen turns off, stops responding to the network pings. But fails to recover on power button: HDDs start, CPU fan starts, but no image on the screen, doesn’t respond network pings :cross_mark:
  6. Works on first try and recovers with UI being off. On a second try (after the recover) just hangs like on the 5th build variant (check the video). :warning:
  7. Doesn’t work, system just hangs, HDDs don’t stop, CPU fan is spinning, screen turns off, stops responding to the network pings. No reaction on power button :cross_mark:
  8. Same as 6th build variant. :warning:

Looks like the option has small positive effect on 25.10.1 tag on nova - the Leitzentrale becomes responsive after recover. But it looks like it has no effect on the current master at all.

What else can I try to tweak? :thinking:

P.S.: I got lost a bit in the new runtime structure of the current master :sweat_smile: But I like that many things that were implicit and hidden now are explicit and visible :+1: