Sway high CPU utilization and screen corruption

While you’ve already gotten near the core issue (etnaviv driver is not working, software rendering causes high CPU), I just wanted to say that Xorg config is completely irrelevant (cc @josch) because this is about a Wayland compositor, Sway. The Xorg config is used only by the standalone legacy Xorg server, which AFAIK doesn’t work on i.MX8M/Plus platforms/with etnaviv anyway.

Some more data. Not sure why this drm service fails to start. Scratching my head here …

root@reform:/dev/dri# systemctl status modprobe@drm.service○ modprobe@drm.service - Load Kernel Module drmLoaded: loaded (/usr/lib/systemd/system/modprobe@.service; static)Active: inactive (dead)Condition: start condition unmet at Tue 2025-09-02 17:04:17 EDT; 27s ago└─ ConditionKernelModuleLoaded=!drm was not metDocs: man:modprobe(8)
Sep 02 17:04:17 reform systemd[1]: modprobe@drm.service - Load Kernel Module drm was skipped because of an unmet condition check (ConditionKernelModuleLoaded=!drm).

Just checking to see if there are any other suggestions to address this. I was up late trying various things - reinstalling packages, etc to no avail. I’m reluctant to reimage the system as I’m weary I’ll hit the same issue if I update to the latest kernel, etc. I also note that the kernel module for the battery (reform2_lpc) keeps throwing errors:

[ 1030.564497] power_supply_format_property: 1 callbacks suppressed[ 1030.564558] power_supply BAT0: driver failed to report voltage_now' property: -16 [ 1030.900542] power_supply BAT0: driver failed to report voltage_now’ property: -16[ 1031.412566] power_supply BAT0: driver failed to report voltage_now' property: -16 [ 1031.928538] power_supply BAT0: driver failed to report voltage_now’ property: -16[ 1032.100536] power_supply BAT0: driver failed to report voltage_now' property: -16 [ 1032.440551] power_supply BAT0: driver failed to report voltage_now’ property: -16[ 1032.944527] power_supply BAT0: driver failed to report voltage_now' property: -16 [ 1033.452521] power_supply BAT0: driver failed to report voltage_now’ property: -16[ 1033.960627] power_supply BAT0: driver failed to report voltage_now' property: -16 [ 1034.476567] power_supply BAT0: driver failed to report voltage_now’ property: -16

And it’s not clear if somehow these items are related (as reform2_lps and etnaviv both kernel moduies) - although I’d expect other things to fail.

Hello @josch Just checking to see if you have any suggestions on this before I reimage my Reform. Could this be related to said patch? I guess I’d like to understand before I reimage and potentially hit the same issue. Thanks!

I don’t think you need to “reimage” it. Just flash the image on a spare SD-card and boot from it. This will not touch your system which is probably on your eMMC and NVMe?

It might also be interesting to see the sudo reform-check output on your broken system. I do not have theories why your kernel modules are not getting loaded.

Hi there,

I don’t think I’m using the eMMC for boot. Rather I think it’s the SD card. And I setup the encrypted NVMe … So I’m not sure of the non-destructive way to do this. I prefer to not have to reformat the encrypted NVMe …

You could back up the content of your sd-card before flashing an image to it using dd. Or maybe you have access to a second sd-card?

@josch The reform-check output is here:

root@reform:~# reform-check
I: Contents of /proc/device-tree/model: MNT Reform 2
I: uname -a output: Linux reform 6.16.3-mnt-reform-arm64 #1 SMP PREEMPT Debian 6.16.3-1+reform20250830T222127Z (2025-08-3 aarch64 GNU/Linux
I: Version of linux-image-mnt-reform-arm64: 6.16.3-1+reform20250830T222127Z
I: Version of reform-tools: 1.78-1+reform20250901T183925Z+1
I: Version of system image: System Image v4: 2023-12-25
I: probably booting via /boot/boot.scr (/boot/extlinux/extlinux.conf does not exist)
I: Mount source of /: /dev/reformvg/root (LVM vg ‘reformvg’ on LUKS device ‘reform_crypt’ on SSD)
I: Mount source of /boot: /dev/mmcblk1p1 (SD-card)
I: Recommends of reform-desktop-minimal is not installed: reform-qcacld2
I: Suggests of reform-desktop-minimal is not installed: firmware-atheros
I: Suggests of reform-desktop-minimal is not installed: firmware-iwlwifi
I: Suggests of reform-desktop-minimal is not installed: firmware-mediatek
I: Suggests of reform-desktop-minimal is not installed: firmware-misc-nonfree
I: Suggests of reform-desktop-minimal is not installed: firmware-realtek
W: /dev/mmcblk0p2 doesn’t exist.
W: To update your eMMC to sysimage-v5 you can run reform-flash-rescue
W: Only run reform-flash-rescue if you intend a factory-reset of your eMMC
W: Do not use reform-flash-rescue if you boot from eMMC because this will overwrite your /boot partition
W: unexpected content in /etc/default/flash-kernel:
— - 2025-09-05 09:08:48.851145777 -0400
+++ /etc/default/flash-kernel 2022-08-15 11:03:59.000000000 -0400
@@ -1,2 +1,2 @@
-LINUX_KERNEL_CMDLINE=“”
-LINUX_KERNEL_CMDLINE_DEFAULTS=“”
+LINUX_KERNEL_CMDLINE=“console=ttymxc0,115200 console=tty1”
+LINUX_KERNEL_CMDLINE_DEFAULTS=“ro no_console_suspend cma=512M pci=nomsi”
E: root account has no password (maybe run passwd -l root)
E: unexpected last line in /etc/skel/.profile, should be:
if [ “$(whoami)” = “root” ]; then reform-help --root; elif [ -z “$WAYLAND_DISPLAY” ]; then reform-help; fi
I: the following files differ from how they are shipped by reform-tools (ignore /var/lib/alsa/asound.state):
??5??? /var/lib/alsa/asound.state
missing c /etc/flash-kernel/preboot.d/00reform2_preboot
E: reform2_lpc is not loaded (battery status information will be missing)
I: eMMC contains the latest u-boot version 2024-07-19
I: SD-card contains the latest u-boot version 2024-07-19

If nothing else you should definitely fix this. Right now, anybody can log into your machine as the superuser without a password.

Indeed your /boot is on your sd-card. So if you want to try out a different system image, don’t use this one. :slight_smile:

It would be maybe worth an experiment to switch to the HDMI dtb and see what happens when you do. To do so, run:

sudo reform-display-config dual

After you reboot, you should have MNT Reform 2 HDMI in your /proc/device-tree/model.

@josch root password set! Yes I was lazy and my machine is secured in my lab, but nevertheless.

I have a second SD card that I’m writing the latest image too now.

I’ll first try the dual display setup with the current SD card and let you know.

If you are writing to another sd-card now anyways, you can also perform all experiments there and leave your current system untouched.

It’s also possible to move your /boot from sd-card to emmc if you prefer that.

@josch I managed to get the system booted up even though adding the UUID of the encrypted NVMe using the UIUID=<…> option in extlinux.conf didn’t seem to work.

The bottom line is that running sway, I’m still seeing the same issues. I see the same drm error in the dmesg output, etc.

So it’s not clear if this is an issue in the latest image/update? Is there anybody else that could test? I have the original module NXP i.MX8MQ in my Reform.

You had problems with booting? I searched in this thread but didn’t see that. Did I miss something? Also, according to your reform-check output you didn’t have a extlinux.conf. Or is this on the new sd-card? But then it does not make sense that you talk about your encrypted nvme…

I can try this out but only after September 13. I’m currently traveling with family and while I managed to sneak 2 classic and one pocket reform into our luggage, the imx8mq didn’t make it.

@josch Is there any way to access an older image version which would be based on an older kernel version etc? Or can I downgrade the reform specific kernel (and modules) on my existing system? I don’t need latest and greatest kernel, I can do with older as long as the graphics are working as they should.

@josch After having run reform-display-config dual, I’m now seeing etnaviv being correctly initialized in the bootup. and I no longer see sway thrashing the CPU.

Yes, I recently added an overview as a table to the readme:

Yes, you can build yourself an old kernel and install and boot that one but doing that is a bit involved. I can build one for you but before I invest the time to do that I’d like to verify the issue you see on my own imx8mq.

Maybe the system images on reform.debian.net are of interest to you. The kernel in debian stable is generally older (6.12 instead of 6.16).

This is a useful datapoint for @minute and @austriancoder I think.

@josch For now, I won’t need an older kernel etc. The reform-display-config dual command has restored the normal graphics operation with etnaviv. That being said, the reform2_lpc module doesn’t report back the battery capacity correctly and throws errors in the syslog (as I showed in my earlier posts here). So I think there may be some investigation still that’s required with this newer image and the processor board I have.

Also, and it’s not important, when I booted from the newly created SDcard, I wasn’t certain how to point it to $HOME on my encrypted NVMe device via extlinux.conf (if that’s the right place). It seems in the newer image the configuratin of sway is very much different from what I’m seeing with my existing install, which is odd(?). I would have expected it to be equivalent when I do an update of my existing install.

-Gabor

1 Like

Try to do one full charge/discharge cycle and open another thread if the problem persists.

I’m unsure what you expect to happen here. Of course the system you boot from the newly flashed sd-card will not use your existing $HOME. The goal is that you can use the system on the sd-card without risking your existing system. If you want to mount your encrypted filesystem somewhere you can always do so manually after you have booted using cryptsetup.

Yes, the default sway config is changing over time. You can have a look at how it changed in git: etc/skel/.config/sway/config · main · Reform / reform-system-image · GitLab

1 Like

The reform2-lpc module works better if your system controller (LPC) firmware is up to date.

1 Like

Indeed, just did the update and it works properly from what I can see.

1 Like