Hi All, The patch series implements "memmap on memory" feature on s390 and provides the necessary fixes for it. Patch 1 addresses the locking order in memory hotplug operations, ensuring that the mem_hotplug_lock is held during critical operations like mhp_init_memmap_on_memory() and mhp_deinit_memmap_on_memory() Patch 2 deals with error handling in add_memory_resource() and considers the possibility of altmap support. This ensures proper deallocation of struct pages, aligning with the allocation strategy. Patch 3 relocates the vmem_altmap code to sparse-vmemmap.c, enabling the utilization of vmem_altmap_free() and vmem_altmap_offset() without the dependency on CONFIG_ZONE_DEVICE. Note: These functions are also used in arm64 architecture. However, ZONE_DEVICE or ARCH_HAS_ZONE_DEVICE doesnt seems to be enabled in arm64. Patch 4 introduces MEM_PHYS_ONLINE/OFFLINE memory notifiers. It facilitates the emulation of dynamic ACPI event-triggered logic for memory hotplug on platforms lacking such events. This sets the stage for implementing the "memmap on memory" feature for s390 in subsequent patches. All architecture/codepaths have the default cases handled in memory notifiers. Hence, introducing new memory notifiers will have no functional impact. Patches 5 allocates vmemmap pages from self-contained memory range for s390. It allocates memory map (struct pages array) from the hotplugged memory range, rather than using system memory by passing altmap to vmemmap functions. Patch 6 implements MEM_PHYS_ONLINE and MEM_PHYS_OFFLINE memory notifiers on s390. It involves making the memory block physically accessible and then calling __add_pages()/__remove_pages() with altmap parameter. Patch 7 removes unhandled memory notifier types. This is currently handled in default case Patch 8 finally enables MHP_MEMMAP_ON_MEMORY on s390 Thank you Sumanth Korikkar (8): mm/memory_hotplug: fix memory hotplug locking order mm/memory_hotplug: fix error handling in add_memory_resource() mm: use vmem_altmap code without CONFIG_ZONE_DEVICE mm/memory_hotplug: introduce MEM_PHYS_ONLINE/OFFLINE memory notifiers s390/mm: allocate vmemmap pages from self-contained memory range s390/mm: implement MEM_PHYS_ONLINE MEM_PHYS_OFFLINE memory notifiers s390/sclp: remove unhandled memory notifier type s390: enable MHP_MEMMAP_ON_MEMORY arch/s390/Kconfig | 1 + arch/s390/mm/init.c | 19 ++++++++--- arch/s390/mm/vmem.c | 62 ++++++++++++++++++++---------------- drivers/base/memory.c | 28 ++++++++++++++-- drivers/s390/char/sclp_cmd.c | 37 +++++++++++++++------ include/linux/memory.h | 2 ++ include/linux/memremap.h | 12 ------- include/linux/mm.h | 2 ++ mm/memory_hotplug.c | 15 ++++----- mm/memremap.c | 14 +------- mm/sparse-vmemmap.c | 13 ++++++++ 11 files changed, 129 insertions(+), 76 deletions(-) -- 2.41.0