Hit a hard regression on 7.0.12-1-pve on a Ryzen 9 5950X box - after a routine reboot, no VM or container would start. `qm start` returned without error but guests stayed `stopped`, and load sat at ~8 with nothing actually running.
Root cause is a WARNING storm in the execmem cache during module loading. The first hit is on the NFS/sunrpc modules at boot, then it repeats on the firewall modules (nf_tables/ip_set/iptable_filter), leaving each modprobe stuck in uninterruptible D-state. That cascades into:
- pve-firewall: can't lock file '/run/lock/pvefw.lck' - got timeout
- ha-manager status: lrm <node> (old timestamp - dead?), all HA services in `freeze`
- net result: nothing will start
The WARNING fired 85,535 times on that single boot. The kernel was already tainted D (DIE) / W (WARN).
Code:
CPA: called for zero pte. vaddr = ffffffffc1e4c000 cpa->vaddr = ffffffffc1e4c000
WARNING: arch/x86/mm/pat/set_memory.c:1821 at __cpa_process_fault+0x6a4/0x6f0, CPU#16: modprobe/1249
CPU: 16 PID: 1249 Comm: modprobe Tainted: P D O 7.0.12-1-pve #1
Hardware name: ASUS ROG CROSSHAIR VIII FORMULA, BIOS 5002 01/13/2025
RIP: 0010:__cpa_process_fault+0x6ae/0x6f0
Call Trace:
__change_page_attr_set_clr+0xaca/0x1000
change_page_attr_set_clr+0x106/0x1b0
set_memory_nx+0x4e/0x70
execmem_alloc_rw+0x31/0x70
load_module+0x7a1/0x2150
init_module_from_file+0xfd/0x160
idempotent_init_module+0x110/0x300
__x64_sys_finit_module+0x73/0xf0
do_syscall_64+0x10b/0x14e0
Environment
- proxmox-ve: 9.2.0, pve-manager: 9.2.3, kernel 7.0.12-1-pve
- pve-firewall: 6.0.4, pve-ha-manager: 5.2.4, qemu-server: 9.1.17, zfs 2.4.2-pve1
- AMD Ryzen 9 5950X, ASUS ROG Crosshair VIII Formula, BIOS 5002
- Repo: pve-no-subscription
Workaround
Pinned a 6.17 kernel and rebooted. A clean `systemctl reboot` hangs on the D-state tasks, so I used SysRq (s, u, b) - all guests were already down, so it was safe:
Code:
proxmox-boot-tool kernel pin 6.17.13-13-pve
6.17.13-13-pve boots clean and every guest starts normally.
The trace lines up with the known upstream execmem cache rework in x86/module (WARNINGs in arch/x86/mm/pat/set_memory.c). Is 7.0.12-1-pve expected to carry an execmem fix, or should it be held back for now? Happy to file on Bugzilla and attach the full `journalctl -b` if useful.