FW16 hibernation fails to resume, firmware presenting different memory map every boot?

I have never been able to get hibernation working on this laptop the many, many times ive tried in the 6 months of owning this, spent way too many days on it lol. Today i got it to successfully resume from hibernation once, but that was it, it has never resumed since. If anyone thinks they could help feel free to, i just want this to work.

Laptop: Framework 16, Ryzen AI 9 HX 370 (Radeon 890M, no dGPU module)
BIOS: 3.06
Distro: Arch Linux
Kernels tested: 7.0.11-arch1-1 and 6.18.35-1-lts — identical failure on both
Swap: 35.8G partition (32G RAM)

It successfully starts hibernation and shuts down, the isuse is resuming. it consistently fails with:

Hibernate inconsistent memory map detected!
PM: hibernation: Image mismatch: architecture specific data
PM: Error -1 resuming
PM: hibernation: Failed to load image, recovering.

when comparing registered nosave memory lines across consecutive boots, the firmware reserved regions shift every single boot. these are the same regions across 3 boots, with 0 changes between them.

boot 1: [mem 0x6645c000-0x6645dfff]
boot 2: [mem 0x66539000-0x6653afff]
boot 3: [mem 0x66545000-0x66546fff]

since the kernel checksums the memory map into the hibernation image and compares on resume, a shifting map guarantees the mismatch. It occasionally succeeds (presumably when the map happens to land the same), which while my luck has been much worse, it roughly matches the ~1-in-5 success rate reported in this thread on the same chip. unlike that thread though, downgrading to 6.18 LTS changed nothing for me, so for my unit this doesn’t look like the kernel regression, it looks like firmware/memory-training behavior reserving different regions each boot.

I also have the mt7921e unload before hibernate workaround as others have so it cant be that. Im happy to provive any useful information needed, I just want to get hibernation working. I’ve spent way too much time on this lol.

heres a command claude told me migt be useful to you guys (ik sue me for using ai, im not tallented enough to fix this myself lmao)

╰─❯ journalctl -b 0 | grep -E "PM:|nosave"
Jun 12 15:06:19 archlinux kernel: PM: hibernation: Registered nosave memory: [mem 0x00000000-0x00000fff]
Jun 12 15:06:19 archlinux kernel: PM: hibernation: Registered nosave memory: [mem 0x0009f000-0x000fffff]
Jun 12 15:06:19 archlinux kernel: PM: hibernation: Registered nosave memory: [mem 0x09b00000-0x09dfffff]
Jun 12 15:06:19 archlinux kernel: PM: hibernation: Registered nosave memory: [mem 0x09f00000-0x09f3bfff]
Jun 12 15:06:19 archlinux kernel: PM: hibernation: Registered nosave memory: [mem 0x66535000-0x66536fff]
Jun 12 15:06:19 archlinux kernel: PM: hibernation: Registered nosave memory: [mem 0x68533000-0x68581fff]
Jun 12 15:06:19 archlinux kernel: PM: hibernation: Registered nosave memory: [mem 0x7094f000-0x72b4efff]
Jun 12 15:06:19 archlinux kernel: PM: hibernation: Registered nosave memory: [mem 0x72b68000-0x72b6cfff]
Jun 12 15:06:19 archlinux kernel: PM: hibernation: Registered nosave memory: [mem 0x7334f000-0x7334ffff]
Jun 12 15:06:19 archlinux kernel: PM: hibernation: Registered nosave memory: [mem 0x76d7f000-0x79ffefff]
Jun 12 15:06:19 archlinux kernel: PM: hibernation: Registered nosave memory: [mem 0x7a000000-0xffffffff]
Jun 12 15:06:19 archlinux kernel: ACPI: PM: Registering ACPI NVS region [mem 0x09f00000-0x09f3bfff] (245760 bytes)
Jun 12 15:06:19 archlinux kernel: ACPI: PM: Registering ACPI NVS region [mem 0x7977f000-0x79f7efff] (8388608 bytes)
Jun 12 15:06:19 archlinux kernel: PM: RTC time: 19:06:16, date: 2026-06-12
Jun 12 15:06:19 archlinux kernel: ACPI: PM: (supports S0 S4 S5)
Jun 12 15:06:19 archlinux kernel: PM:   Magic number: 14:980:141
Jun 12 15:06:19 archlinux kernel: PM: genpd: Disabling unused power domains
Jun 12 15:06:19 archlinux kernel: PM: Image not found (code -22)

For the resume side, I would capture the exact kernel line and resume target first: cat /proc/cmdline, swapon --show, and lsblk -f. On Arch with a swap partition, the kernel needs the right resume=UUID=... and, depending on setup, the initramfs resume hook has to be present and rebuilt. The inconsistent memory map message may still be firmware-related, but it is worth ruling out a stale resume UUID/offset before chasing BIOS behavior.

thanks for replying, generally i ruled that out as a answer as I don’t get a image not found error, but rather it finds it, starts resuming it, and rejects it at the memory map.

as for the commands you sent, heres the result from all of them. i removed a huge line of numbers from the cmdline as thats just for a tty theme im using, it doesnt effect the hibernation.

╰─❯ cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-linux root=UUID=d8206e4d-7808-4782-9348-2594471cd7f0 rw quiet splash amd_pstate=active amdgpu.sg_display=0 zswap.enabled=0 resume=UUID=5622e822-17ed-4e04-b13f-46b3a0735809
╰─❯ swapon --show
NAME           TYPE       SIZE USED PRIO
/dev/nvme0n1p2 partition 35.8G   0B   -1
╰─❯ lsblk -f
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1                                                                            
├─nvme0n1p1 vfat   FAT32       F90C-1B21                             876.7M    14% /boot
├─nvme0n1p2 swap   1           5622e822-17ed-4e04-b13f-46b3a0735809                [SWAP]
└─nvme0n1p3 ext4   1.0         d8206e4d-7808-4782-9348-2594471cd7f0  497.7G    38% /
nvme1n1                                                                            
├─nvme1n1p1 vfat   FAT32       5633-8F2E                                           
├─nvme1n1p2                                                                        
├─nvme1n1p3 ntfs               5CB033F9B033D7EA                      206.3G    44% /mnt/windows
├─nvme1n1p4 ntfs               42EAB9B0EAB9A099                                    
└─nvme1n1p5 ext4   1.0         482fd680-f16f-481a-83ee-461267c0b800  435.1G    65% /mnt/secondaryDrive

I obviously could be wrong and it is a much simpler solution, but I’ve spent easily a week spread over the span of 6 months trying to get this to work so I’ve ruled out alot of the more simple answers.

I’m also just very curious from other people who have gotten hibernation working on the ai 300 series is if there registered nosave memory list stays identical across reboots (journalctl -b 0 | grep nosave vs -b -1.) as mine aren’t, and I’d imagine that would cause the issues im getting.

Just in case, do you have eGPU, TB dock or other non-trivial peripherial device that was attached during the hibernation?

No I don’t, that was one thing i tried after making this post. I disconnected all input devices and expansion cards besides 1 usb-c to usb-a for a keyboard and it still didnt work. after that someone on reddit suggested to run a memory test so i ran memtest86, it passed. I thought maybe it could still be faulty butit just didnt detect anything, so I tested it with each stick on their own and the memory map still changes every boot.

I think this might be a behavior in the firmware that we can’t control, because I am experiencing the exact same thing as you. I just have the nvidia gpu and am on a newer kernel.

yeah that’s what I thought when making this post, I was kinda hoping people would either be able to fix it (as I hadn’t seen my exact issue with the memory map happen to anyone else till now), or come to the conclusion its a firmware issue and framework would fix it. I’ll probably reach out to framework support in hopes they could pass it on and get the issue fixed but I guess until then we’re just out of luck. It mostly just confuses me that it seems like it’s working for most people, which is the only reason I was doubtful it was firmware related. idk not sure, I’ll update here if there’s any important new info.

I have not actually seen anyone with the framework 16 ryzen AI successfully hibernate. All the post I have seen are older CPU’s or framework 13’s, of which I see one trouble shooting thread for the AI models, but that’s still not the same firmware.

Just to chime in to share that for my machine with AMD dGPU and Ryzen AI chip (AMD Ryzen AI 9 HX 370 w/ Radeon 890M, more details in Ubuntu 26.04 AMD GPU compute ) I am facing a similar issue when trying to get hibernation to work on the Framework 16 laptop.

FYI,

uname -r && cat /etc/os-release |grep PRETTY && dmidecode -s bios-version

returns

7.0.0-22-generic
PRETTY_NAME="Ubuntu 26.04 LTS"
03.06

Running

systemctl hibernate

successfully hibernates, but on waking from hibernate the same memory mapping issue reported pops:

journalctl -b --no-pager | grep -Ei 'hibernate|hibernation|resume'

returns

Jun 23 05:45:16 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x73383000-0x73383fff]
Jun 23 05:45:16 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x76d7f000-0x79ffefff]
Jun 23 05:45:16 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x7a000000-0xffffffff]
Jun 23 05:45:16 framework kernel: PM: hibernation: Basic memory bitmaps created
Jun 23 05:45:16 framework kernel: Hibernate inconsistent memory map detected!
Jun 23 05:45:16 framework kernel: PM: hibernation: Image mismatch: architecture specific data
Jun 23 05:45:16 framework kernel: PM: hibernation: Read 9386828 kbytes in 0.01 seconds (938682.80 MB/s)
Jun 23 05:45:16 framework kernel: PM: hibernation: Failed to load image, recovering.
Jun 23 05:45:16 framework kernel: PM: hibernation: Basic memory bitmaps freed
Jun 23 05:45:16 framework systemd-hibernate-resume[1157]: Unable to resume from device '/dev/mapper/ubuntu--vg-swaplv' (252:2) offset 0, continuing boot process.
Jun 23 05:45:16 framework kernel: PM: hibernation: resume failed (-1)
Jun 23 05:45:16 framework systemd[1]: systemd-hibernate-resume.service: Deactivated successfully.
Jun 23 05:45:16 framework systemd[1]: Finished systemd-hibernate-resume.service - Resume from hibernation.

and on “re-hibernating” and rebooting the machine I get jittering memory addresses as reported here by @Hello_human (and other posts such as Hibernate image mismatch: arch specific data ):

Log Time Primary Hardware Memory Range Shift Direction
04:45:19 0x689b4000 - 0x689c3fff N/A
05:00:09 0x689da000 - 0x689e9fff +152 KB
05:11:20 0x689d8000 - 0x68a67fff -8 KB
05:28:56 0x67120000 - 0x6712ffff -24 MB
05:39:03 0x68bef000 - 0x68bfefff +26 MB
05:45:16 0x68c18000 - 0x68c27fff +168 KB

Earlier, I also had some lucky shots where I successfully (randomly) recovered a hibernated GNOME session.

Besides moving from GRUB to systemd-boot failed attempts not fixing the issue include:

  • in /etc/default/grub (running update-grub && dracut --force --regenerate-all after):
    • Standardized double-dash LVM mapper naming alignment
    • Disabled AMD Secure Memory Encryption (mem_encrypt=off)
    • Kernel memory layout validation override parameter (hibernate=relaxed_regions)
      through:
      GRUB_CMDLINE_LINUX_DEFAULT="rd.luks.uuid=luks-17396226-aaaa-bbbb-cccc-aa41fd6ffe11 rd.lvm.lv=ubuntu-vg/swaplv rd.lvm.lv=ubuntu-vg/ubuntu-lv resume=/dev/mapper/ubuntu--vg-swaplv mem_encrypt=off hibernate=relaxed_regions"
      
  • in BIOS configuration:
    • Set integrated graphics (iGPU) hardware memory configuration to Custom Fixed size (512MB)
    • Disabled advanced motherboard firmware subsystem features (USB4 and hardware TPM configurations).
  • Removed external hardware components (HDMI and SD card expansion modules)

Note: [SOLVED] Hibernate “inconsistent memory map” on Framework 13 12th Gen Intel suggests that GRUB may be the culprit. I switched to systemd-boot by running

sudo apt install systemd-boot
sudo bootctl install
echo 'root=/dev/mapper/ubuntu--vg-ubuntu--lv ro resume=/dev/mapper/ubuntu--vg-swaplv' \
| sudo tee /etc/kernel/cmdline
sudo tee /etc/dracut.conf.d/bootloader.conf << 'EOF'
bootloader="systemd-boot"
uefi="yes"
EOF
sudo dracut --force --regenerate-all
sudo reboot
systemctl hibernate

such that hibernating the system works, but on wake it boots without loading the hibernated state, and

journalctl -b --no-pager | grep -Ei 'hibernate|hibernation|resume' 

returns

Jun 23 08:22:15 framework kernel: PM: hibernation: Registered nosave memory: [mem 0x00000000-0x00000fff]
Jun 23 08:22:15 framework kernel: PM: hibernation: Registered nosave memory: [mem 0x0009f000-0x000fffff]
Jun 23 08:22:15 framework kernel: PM: hibernation: Registered nosave memory: [mem 0x09b00000-0x09dfffff]
Jun 23 08:22:15 framework kernel: PM: hibernation: Registered nosave memory: [mem 0x09f00000-0x09f3bfff]
Jun 23 08:22:15 framework kernel: PM: hibernation: Registered nosave memory: [mem 0x68bd2000-0x68bddfff]
Jun 23 08:22:15 framework kernel: PM: hibernation: Registered nosave memory: [mem 0x68c2d000-0x68c7bfff]
Jun 23 08:22:15 framework kernel: PM: hibernation: Registered nosave memory: [mem 0x7094e000-0x72b4dfff]
Jun 23 08:22:15 framework kernel: PM: hibernation: Registered nosave memory: [mem 0x72b67000-0x72b6cfff]
Jun 23 08:22:15 framework kernel: PM: hibernation: Registered nosave memory: [mem 0x72b6f000-0x72b6ffff]
Jun 23 08:22:15 framework kernel: PM: hibernation: Registered nosave memory: [mem 0x73383000-0x73383fff]
Jun 23 08:22:15 framework kernel: PM: hibernation: Registered nosave memory: [mem 0x76d7f000-0x79ffefff]
Jun 23 08:22:15 framework kernel: PM: hibernation: Registered nosave memory: [mem 0x7a000000-0xffffffff]
Jun 23 08:22:15 framework kernel: Kernel command line: initrd=\8a88bfdd345678912647442a5b4634f7\7.0.0-1005-oem\initrd root=/dev/mapper/ubuntu--vg-ubuntu--lv ro rd.luks.uuid=luks-12345678-aaaa-bbbb-cccc-123456789011 rd.lvm.lv=ubuntu-vg/swaplv rd.lvm.lv=ubuntu-vg/ubuntu-lv resume=/dev/mapper/ubuntu--vg-swaplv mem_encrypt=off hibernate=relaxed_regions systemd.machine_id=8a88bfdd345678912647442a5b4634f7
Jun 23 08:22:15 framework systemd-hibernate-resume-generator[263]: Reported hibernation image: ID=ubuntu VERSION_ID=26.04 kernel=7.0.0-1005-oem UUID=12345678-aaaa-bbbb-eeee-123456789011 offset=0
Jun 23 08:22:27 framework systemd[1]: Starting systemd-hibernate-resume.service - Resume from hibernation...
Jun 23 08:22:27 framework systemd-hibernate-resume[1247]: Reported hibernation image: ID=ubuntu VERSION_ID=26.04 kernel=7.0.0-1005-oem UUID=12345678-aaaa-bbbb-eeee-123456789011 offset=0
Jun 23 08:22:27 framework kernel: PM: hibernation: resume from hibernation
Jun 23 08:22:27 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x00000000-0x00000fff]
Jun 23 08:22:27 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x0009f000-0x000fffff]
Jun 23 08:22:27 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x09b00000-0x09dfffff]
Jun 23 08:22:27 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x09f00000-0x09f3bfff]
Jun 23 08:22:27 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x68bd2000-0x68bddfff]
Jun 23 08:22:27 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x68c2d000-0x68c7bfff]
Jun 23 08:22:27 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x7094e000-0x72b4dfff]
Jun 23 08:22:27 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x72b67000-0x72b6cfff]
Jun 23 08:22:27 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x72b6f000-0x72b6ffff]
Jun 23 08:22:27 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x73383000-0x73383fff]
Jun 23 08:22:27 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x76d7f000-0x79ffefff]
Jun 23 08:22:27 framework kernel: PM: hibernation: Marking nosave pages: [mem 0x7a000000-0xffffffff]
Jun 23 08:22:27 framework kernel: PM: hibernation: Basic memory bitmaps created
Jun 23 08:22:27 framework kernel: Hibernate inconsistent memory map detected!
Jun 23 08:22:27 framework kernel: PM: hibernation: Image mismatch: architecture specific data
Jun 23 08:22:27 framework kernel: PM: hibernation: Read 10513700 kbytes in 0.01 seconds (1051370.00 MB/s)
Jun 23 08:22:27 framework kernel: PM: hibernation: Failed to load image, recovering.
Jun 23 08:22:27 framework kernel: PM: hibernation: Basic memory bitmaps freed
Jun 23 08:22:27 framework systemd-hibernate-resume[1247]: Unable to resume from device '/dev/mapper/ubuntu--vg-swaplv' (252:1) offset 0, continuing boot process.
Jun 23 08:22:27 framework kernel: PM: hibernation: resume failed (-1)
Jun 23 08:22:27 framework systemd[1]: systemd-hibernate-resume.service: Deactivated successfully.

i.e., the memory map is static now, but the kernel still rejects the image. Wild guess: amdgpu driver initialization, potentially: Hibernate resume failures on Framework 13 AMD (Ryzen AI 300 / Krackan): A/B-tested workaround — `pm_async=0` , update: and indeed, adding the pm_async=0 option increases the chances of a successful hibernation and resume, but still a cold start in more than 80% of the attempts.