Boot hangs after “Loading initial ramdisk” on kernels 7.0.14-24/25-pve with 2M hugepages on the cmdline (Dell, ~1 TB RAM). Kernel 6.17.13-21-pve boots

jeffblima

Member
Sep 12, 2022
1
0
15
After updating a non-production Proxmox VE node, the host hangs at boot right after:


initial-ramdisk.png


Bash:
Loading Linux 7.0.14-24-pve ...
Loading initial ramdisk ...


There is no further output, even after waiting several minutes [confirm wait time: ___ min].


Environment

  • Hardware: Dell [model], BIOS [version], Intel CPU [model], [1 or 2] sockets
  • RAM: 1,031,426 MiB total (~1007 GiB)
  • Proxmox VE: pve-manager 9.2.21
  • Failing kernels: 7.0.14-24-pve and 7.0.14-25-pve
  • Working kernel: 6.17.13-21-pve
  • Root on LVM (/dev/mapper/pve-root), booting with GRUB
  • All VMs on this host use hugepages (no non-hugepage VMs)

Cmdline that hangs on the 7.0 kernels

Bash:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on default_hugepagesz=2M hugepagesz=2M hugepages=499712"

hugepages=499712 × 2 MiB = 999,424 MiB (~976 GiB), which leaves about 32 GiB for the host.


What I tested

  • Kernel 6.17.13-21-pve with the same cmdline (IOMMU + hugepages=499712): boots normally [confirm HugePages_Total = 499712].
  • Kernels 7.0.14-24-pve and 7.0.14-25-pve with the same cmdline: both hang after “Loading initial ramdisk”.
  • Kernel 7.0.14-25-pve without intel_iommu=on and without the hugepages parameters: boots.
  • Kernel 7.0.14-25-pve with intel_iommu=on only: boots. dmesg shows DMAR: IOMMU enabled and 287 entries under /sys/kernel/iommu_groups/, so IOMMU itself looks fine.
  • Pending: [result with hugetlb_free_vmemmap=on] / [result with hugepages=450000] / [result with loglevel=7 earlyprintk=vga,keep or Serial Over LAN].

My suspicion
Since 6.17.13-21 boots with the same cmdline and RAM, I suspect a regression or behavior change in boot-time hugepage allocation in the 7.0 series. It could also be extreme slowness allocating ~500k 2M pages that early in boot, but I haven’t been able to confirm that yet.


Questions

  1. Is there any known change in the 7.0 series (hugetlb, vmemmap, struct page init) affecting cmdline hugepage reservation on hosts with ~1 TB of RAM?
  2. Is allocating via vm.nr_hugepages in /etc/sysctl.d/ (after boot) the recommended approach in this scenario?
  3. Is there a recommended cmdline parameter for the 7.0 series in this case?

I can provide dmesg, journalctl -b, numactl -H, /proc/meminfo and the /boot/config-* settings if needed.
 
could you try with a smaller number of hugepages? e.g. 10000? removing `quiet` might also show more progress..