Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.
Hibernate resume fails (nv_pmops_freeze → -EIO) on single-NVIDIA-GPU desktops — initramfs nvidia load blocks the resume hook
Reported by unconnect · filed Sep 3, 2026 · open at source
At a glance
- 1 · What is claimed?
- Only the report text below — no validator has restated it as checkable claims yet.
- 2 · What does it affect?
- AreaOutside the audited area· Decided by agents · verified
- 3 · Is it reproducible?
- No validation has been run yet.
- 4 · What remains unclear?
- Not validated yet: no claims, no reproducer.
- 5 · What happens next?
- Decided by agents and verified by a second, independent agent — see the decision.
Original report
System details
AMD Ryzen 9 5900X · NVIDIA RTX 4070 (AD104), nvidia-open-dkms 610.57.04 · single discrete GPU, no iGPU · MSI MPG X570 GAMING EDGE WIFI · 64 GB RAM · Omarchy 4.0.2-1 (stable channel) · kernel 7.1.9-arch1-2 · Limine + UKI · LUKS-encrypted btrfs root, /swap/swapfile (btrfs) with resume=/dev/mapper/root resume_offset=… on the cmdline.
What's wrong?
Hibernation never resumes on a single-NVIDIA-GPU desktop. Selecting Hibernate writes the image and powers off correctly, but on the next boot the image restore is aborted and the machine does a normal cold boot instead — all programs/windows lost.
Failure sequence (from journalctl -b, every attempt is identical)
PM: Image signature found, resuming
PM: hibernation: Read 21213392 kbytes in 10.99 seconds (1930.24 MB/s)
PM: Image successfully loaded
NVRM: GPU 0000:2d:00.0: PreserveVideoMemoryAllocations module parameter is set.
System Power Management attempted without driver procfs suspend interface.
Please refer to the 'Configuring Power Management Support' section in the driver README.
nvidia 0000:2d:00.0: PM: pci_pm_freeze(): nv_pmops_freeze [nvidia] returns -5
nvidia 0000:2d:00.0: PM: dpm_run_callback(): pci_pm_freeze returns -5
nvidia 0000:2d:00.0: PM: failed to quiesce async: error -5
PM: hibernation: Failed to load image, recovering.
PM: hibernation: resume failed (-5)Root cause
Omarchy early-loads the NVIDIA modules in the initramfs (/etc/mkinitcpio.conf.d/nvidia.conf → MODULES+=(nvidia nvidia_modeset nvidia_uvm nvidia_drm), for the Plymouth LUKS screen). The resume hook (/etc/mkinitcpio.conf.d/omarchy_resume.conf) runs in that same initramfs, after nvidia has already bound to the card and taken the framebuffer console.
NVreg_PreserveVideoMemoryAllocations=1 is set (by /usr/lib/modprobe.d/gsr-nvidia.conf). With that parameter, the NVIDIA driver requires every PM transition — including the device quiesce done during image restore — to go through its /proc/driver/nvidia/suspend handshake, and returns -EIO if it didn't. That handshake was performed by nvidia-hibernate.service in the pre-hibernate userspace on the old kernel; it does not, and structurally cannot, carry over to the fresh initramfs nvidia instance that comes up at resume time. So nv_pmops_freeze fails, and the whole restore is discarded.
Relationship to #9696
#9696 is the same -EIO freeze failure but is explicitly scoped to hybrid ASUS laptops, where the fix is supergfxctl + the force-igpu sleep hook (Vfio-detach the dGPU before hibernate). That workaround is inapplicable here: this is a desktop with a single NVIDIA GPU and no iGPU — there is nothing to switch to, supergfxctl isn't installed, and force-igpu isn't (and can't be) active. omarchy-hibernation-setup offers and configures hibernation on this machine but the default initramfs makes resume impossible.
Steps to reproduce
- Single discrete NVIDIA GPU desktop (no iGPU),
nvidia-open-dkms, LUKS + btrfs. - Run hibernation setup (swap file +
resumehook +resume=cmdline) — asomarchy-hibernation-setupdoes. systemctl enable nvidia-suspend.service nvidia-hibernate.service nvidia-resume.service(does not help).systemctl hibernate, then power the machine back on.- Machine cold-boots; session not restored.
journalctl -bshows thenv_pmops_freeze … returns -5/Failed to load image, recoveringsequence above.
Workaround that does work
Remove NVIDIA from the initramfs so the resume hook quiesces devices before any GPU driver is bound:
sudo rm /etc/mkinitcpio.conf.d/nvidia.conf # drop MODULES+=(nvidia …)
sudo limine-mkinitcpioAfter this, resume completes and the session is restored; NVIDIA loads normally in userspace. Cost: the LUKS passphrase prompt is text-mode instead of graphical Plymouth (no other KMS driver on a single-NVIDIA box).
Suggested fix
On single-NVIDIA-GPU systems, either (a) don't early-load nvidia in the initramfs when hibernation is configured, or (b) don't offer/enable hibernation via omarchy-hibernation-setup unless the initramfs is compatible — mirroring #9860's "fail hibernation setup when the host can't hibernate".
View raw text
## System details
AMD Ryzen 9 5900X · NVIDIA RTX 4070 (AD104), `nvidia-open-dkms` 610.57.04 · single discrete GPU, **no iGPU** · MSI MPG X570 GAMING EDGE WIFI · 64 GB RAM · Omarchy 4.0.2-1 (stable channel) · kernel 7.1.9-arch1-2 · Limine + UKI · LUKS-encrypted btrfs root, `/swap/swapfile` (btrfs) with `resume=/dev/mapper/root resume_offset=…` on the cmdline.
## What's wrong?
**Hibernation never resumes on a single-NVIDIA-GPU desktop.** Selecting Hibernate writes the image and powers off correctly, but on the next boot the image restore is aborted and the machine does a normal cold boot instead — all programs/windows lost.
### Failure sequence (from `journalctl -b`, every attempt is identical)
```
PM: Image signature found, resuming
PM: hibernation: Read 21213392 kbytes in 10.99 seconds (1930.24 MB/s)
PM: Image successfully loaded
NVRM: GPU 0000:2d:00.0: PreserveVideoMemoryAllocations module parameter is set.
System Power Management attempted without driver procfs suspend interface.
Please refer to the 'Configuring Power Management Support' section in the driver README.
nvidia 0000:2d:00.0: PM: pci_pm_freeze(): nv_pmops_freeze [nvidia] returns -5
nvidia 0000:2d:00.0: PM: dpm_run_callback(): pci_pm_freeze returns -5
nvidia 0000:2d:00.0: PM: failed to quiesce async: error -5
PM: hibernation: Failed to load image, recovering.
PM: hibernation: resume failed (-5)
```
### Root cause
Omarchy early-loads the NVIDIA modules in the initramfs (`/etc/mkinitcpio.conf.d/nvidia.conf` → `MODULES+=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)`, for the Plymouth LUKS screen). The `resume` hook (`/etc/mkinitcpio.conf.d/omarchy_resume.conf`) runs in that **same initramfs**, after `nvidia` has already bound to the card and taken the framebuffer console.
`NVreg_PreserveVideoMemoryAllocations=1` is set (by `/usr/lib/modprobe.d/gsr-nvidia.conf`). With that parameter, the NVIDIA driver requires every PM transition — including the device quiesce done during image restore — to go through its `/proc/driver/nvidia/suspend` handshake, and returns `-EIO` if it didn't. That handshake was performed by `nvidia-hibernate.service` in the *pre-hibernate* userspace on the *old* kernel; it does not, and structurally cannot, carry over to the fresh initramfs `nvidia` instance that comes up at resume time. So `nv_pmops_freeze` fails, and the whole restore is discarded.
### Relationship to #9696
#9696 is the same `-EIO` freeze failure but is explicitly scoped to **hybrid ASUS laptops**, where the fix is `supergfxctl` + the `force-igpu` sleep hook (Vfio-detach the dGPU before hibernate). That workaround is inapplicable here: this is a **desktop with a single NVIDIA GPU and no iGPU** — there is nothing to switch to, `supergfxctl` isn't installed, and `force-igpu` isn't (and can't be) active. `omarchy-hibernation-setup` offers and configures hibernation on this machine but the default initramfs makes resume impossible.
### Steps to reproduce
1. Single discrete NVIDIA GPU desktop (no iGPU), `nvidia-open-dkms`, LUKS + btrfs.
2. Run hibernation setup (swap file + `resume` hook + `resume=` cmdline) — as `omarchy-hibernation-setup` does.
3. `systemctl enable nvidia-suspend.service nvidia-hibernate.service nvidia-resume.service` (does not help).
4. `systemctl hibernate`, then power the machine back on.
5. Machine cold-boots; session not restored. `journalctl -b` shows the `nv_pmops_freeze … returns -5` / `Failed to load image, recovering` sequence above.
### Workaround that does work
Remove NVIDIA from the initramfs so the `resume` hook quiesces devices before any GPU driver is bound:
```
sudo rm /etc/mkinitcpio.conf.d/nvidia.conf # drop MODULES+=(nvidia …)
sudo limine-mkinitcpio
```
After this, resume completes and the session is restored; NVIDIA loads normally in userspace. Cost: the LUKS passphrase prompt is text-mode instead of graphical Plymouth (no other KMS driver on a single-NVIDIA box).
### Suggested fix
On single-NVIDIA-GPU systems, either (a) don't early-load `nvidia` in the initramfs when hibernation is configured, or (b) don't offer/enable hibernation via `omarchy-hibernation-setup` unless the initramfs is compatible — mirroring #9860's "fail hibernation setup when the host can't hibernate".
Validation
Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.
Linked
Not linked to any known issue, other report or change yet.
Decision
Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.
- Out of scopeDecided by agents · verified · 2026-10-09 10:41 UTC