mirror-linux/Documentation
Gregory Price 9e80e66dda mm, hugetlb: implement movable_gigantic_pages sysctl
This reintroduces a concept removed by: commit d6cb41cc44 ("mm, hugetlb:
remove hugepages_treat_as_movable sysctl")

This sysctl provides flexibility between ZONE_MOVABLE use cases:
1) onlining memory in ZONE_MOVABLE to maintain hotplug compatibility
2) onlining memory in ZONE_MOVABLE to make hugepage allocate reliable

When ZONE_MOVABLE is used to make huge page allocation more reliable,
disallowing gigantic pages memory in this region is pointless.  If hotplug
is not a requirement, we can loosen the restrictions to allow 1GB gigantic
pages in ZONE_MOVABLE.

Since 1GB can be difficult to migrate / has impacts on compaction /
defragmentation, we don't enable this by default.  Notably, 1GB pages can
only be migrated if another 1GB page is available - so hot-unplug will
fail if such a page cannot be found.

However, since there are scenarios where gigantic pages are migratable, we
should allow use of these on movable regions.

When not valid 1GB is available for migration, hot-unplug will retry
indefinitely (or until interrupted).  For example:

  echo 0 > node0/hugepages/..-1GB/nr_hugepages  # clear node0 1GB pages
  echo 1 > node1/hugepages/..-1GB/nr_hugepages  # reserve node1 1GB page
  ./alloc_huge_node1 &    # Allocate a 1GB page on node1
  ./node1_offline  &      # attempt to offline all node1 memory
  echo 1 > node0/hugepages/..-1GB/nr_hugepages  # reserve node0 1GB page

In this example, node1_offline will block indefinitely until the final
step, when a node0 1GB page is made available.

Note: Boot-time CMA is not possible for driver-managed hotplug memory, as
CMA requires the memory to be registered as SystemRAM at boot time. 
Additionally, 1GB huge pages are not supported by THP.

Link: https://lkml.kernel.org/r/20251221125603.2364174-1-gourry@gourry.net
Signed-off-by: Gregory Price <gourry@gourry.net>
Suggested-by: David Rientjes <rientjes@google.com>
Link: https://lore.kernel.org/all/20180201193132.Hk7vI_xaU%25akpm@linux-foundation.org/
Acked-by: David Hildenbrand (Red Hat) <david@kernel.org>
Acked-by: David Rientjes <rientjes@google.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Michal Hocko <mhocko@suse.com>
Cc: "David Hildenbrand (Red Hat)" <david@kernel.org>
Cc: Gregory Price <gourry@gourry.net>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Liam Howlett <liam.howlett@oracle.com>
Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2026-01-20 19:24:50 -08:00
..
ABI Docs/ABI/damon: update for max_nr_snapshots 2026-01-20 19:24:46 -08:00
PCI Documentation: PCI: Amend error recovery doc with pci_save_state() rules 2025-11-24 16:59:10 -06:00
RCU
accel
accounting
admin-guide mm, hugetlb: implement movable_gigantic_pages sysctl 2026-01-20 19:24:50 -08:00
arch treewide: Update email address 2026-01-11 06:09:11 -10:00
block
bpf docs: bpf: map_array: Specify BPF_MAP_TYPE_PERCPU_ARRAY value size limit 2025-11-25 14:32:00 -08:00
cdrom
core-api treewide: Update email address 2026-01-11 06:09:11 -10:00
cpu-freq
crypto This update includes the following changes: 2025-12-03 11:28:38 -08:00
dev-tools There are no significant series in this small merge. Please see the 2025-12-13 20:55:12 +12:00
devicetree phy fixes for 6.19 2026-01-18 13:18:40 -08:00
doc-guide docs: parse-headers.rst: Fix a typo 2025-11-18 09:13:40 -07:00
driver-api treewide: Update email address 2026-01-11 06:09:11 -10:00
edac
fault-injection
fb
features Apart from the usual small churn, we have 2025-12-05 16:30:56 -08:00
filesystems filelock: allow lease_managers to dictate what qualifies as a conflict 2025-12-15 15:20:33 +01:00
firmware-guide
firmware_class
fpga
gpu Extra drm-misc-next for v6.19-rc1: 2025-12-02 18:09:08 +10:00
hid Documentation: hid-alps: Format DataByte* subsection headings 2025-11-18 17:53:10 +01:00
hwmon hwmon: (DS620) Update broken Datasheet URL in driver documentation 2025-12-18 09:50:27 -08:00
i2c i2c: i801: Add support for Intel Nova Lake-S 2025-12-17 00:28:51 +01:00
iio
images
infiniband
input Input: add ABS_SND_PROFILE 2025-12-18 21:34:42 -08:00
isdn
kbuild
kernel-hacking
leds
litmus-tests
livepatch
locking
maintainer
mhi
misc-devices
mm Docs/mm/damon/design: update for max_nr_snapshots 2026-01-20 19:24:45 -08:00
netlabel
netlink Merge branch 'pm-em' 2026-01-16 16:16:24 +01:00
networking Documentation: net: dsa: mention simple HSR offload helpers 2025-12-01 16:51:55 -08:00
nvdimm
nvme
pcmcia
peci
power More power management updates for 6.19-rc1 2025-12-10 06:29:40 +09:00
process Documentation/process: maintainer-soc: Mark 'make' as commands 2026-01-07 17:47:43 +01:00
rust
scheduler
scsi
security Landlock update for v6.19-rc1 2025-12-06 09:52:41 -08:00
sound
sphinx Documentation/sphinx/kernel_feat.py: use class directly 2025-11-21 10:32:30 -07:00
sphinx-static
spi
staging
sunrpc/xdr
target
tee
timers
tools rtla updaets for v6.19: 2025-12-05 09:34:01 -08:00
trace tracing updates for v6.19: 2025-12-05 09:51:37 -08:00
translations treewide: Update email address 2026-01-11 06:09:11 -10:00
usb
userspace-api media: Documentation: mali-c55: Use v4l2-isp version identifier 2026-01-06 10:14:13 +01:00
virt hyperv-next for v6.19 2025-12-09 06:10:17 +09:00
w1
watchdog
wmi Merge branch 'fixes' of into for-next 2025-12-01 11:53:59 +02:00
.gitignore
.renames.txt
Changes
CodingStyle
Kconfig
Makefile docs: makefile: move rustdoc check to the build wrapper 2025-11-29 08:42:53 -07:00
SubmittingPatches
atomic_bitops.txt
atomic_t.txt
conf.py
docutils.conf
index.rst
memory-barriers.txt
subsystem-apis.rst