Re: [PATCH 0/4] Support dynamic (de)configuration of memory
From: David Hildenbrand
Date: Tue Oct 07 2025 - 15:35:37 EST
On 07.10.25 19:56, Sumanth Korikkar wrote:
With the new interface, s390 will not add all possible hotplug memory in
advance, like before, to make it visible in sysfs for online/offline
actions. Instead, before memory block can be set online, it has to be
configured via a new interface in /sys/firmware/memory/memoryX/config,
which makes s390 similar to others. i.e. Adding of hotpluggable memory is
controlled by the user instead of adding it at boottime.
Before I dig into the details, will onlining/offling still trigger
hypervisor action, or does that now really happen when memory is
added/removed?
That would be really nice, because it would remove the whole need for
"standby" memory, and having to treat hotplugged memory differently under
LPAR/z/VM than anywhere else (-> keep it offline).
With this approach, hypervisor actions are triggered only when memory is
actually added or removed.
Online and offline operations are common code memory hotplug actions and
the s390 memory notifier actions are none/minimal.
Very nice.
s390 kernel sysfs interface to configure/deconfigure memory with
memmap_on_memory (with upcoming lsmem changes):
* Initial memory layout:
lsmem -o RANGE,SIZE,STATE,BLOCK,CONFIGURED,MEMMAP_ON_MEMORY
RANGE SIZE STATE BLOCK CONFIGURED MEMMAP_ON_MEMORY
0x00000000-0x7fffffff 2G online 0-15 yes no
0x80000000-0xffffffff 2G offline 16-31 no yes
Could we instead modify "STATE" to reflect that it is "not added" / "not
configured" / "disabled" etc?
Like
lsmem -o RANGE,SIZE,STATE,BLOCK,MEMMAP_ON_MEMORY
RANGE SIZE STATE BLOCK
0x00000000-0x7fffffff 2G online 0-15
0x80000000-0xffffffff 2G disabled 16-31
Or is that an attempt to maintain backwards compatibility?
Mostly. Also, similar to lscpu output, where CPU status shows
CONFIGURED/STATE column.
Care to share an example output? I only have a s390x VM with 2 CPUs and no way to configure/deconfigure.
Also, older scripts to get list of offline memory typically use:
lsmem | grep offline
and
chmem -e <SIZE> would work as usual, where <SIZE> specifies amount of
memory to set online.
chmem changes would look like:
chmem -c 128M -m 1 : configure memory with memmap-on-memory enabled
chmem -g 128M : deconfigure memory
I wonder if the above two are really required. I would expect most/all users to simply keep using -e / -d.
Sure, there might be some corner cases, but I would assume most people to not want to care about memmap-on-memory with the new model.
chmem -e 128M : optionally configure (if supported by architecture) and
always online memory
chmem -d 128M : offline and optionally deconfigure memory (if supported
by architecture)
--
Cheers
David / dhildenb