On Wed, Jan 14, 2026 at 11:55:21AM +0100, David Hildenbrand (Red Hat) wrote: > On 1/14/26 09:51, Gregory Price wrote: > > The dax kmem driver currently onlines memory automatically during > > probe using the system's default online policy but provides no way > > to control or query the memory state at runtime. Users cannot change > > the online type after probe, and there's no atomic way to offline and > > remove memory blocks together. > > > > Add a new 'hotplug' sysfs attribute that allows userspace to control > > and query the memory state. The interface supports the following states: > > > > - "offline": memory is added but not online > > - "online": memory is online as normal system RAM > > - "online_movable": memory is online in ZONE_MOVABLE > > - "unplug": memory is offlined and removed > > > > The initial state after probe uses MMOP_SYSTEM_DEFAULT to preserve > > backwards compatibility - existing systems with auto-online policies > > will continue to work as before. > > > > The state machine enforces valid transitions: > > - From offline: can transition to online, online_movable, or unplug > > - From online/online_movable: can transition to offline or unplug > > - Cannot switch directly between online and online_movable > > Do we have to support these transitions right from the start? > > What are the use cases for adding memory as offline and then onlining it, > and why do we have to support that through this interface? >
the default build config does this, so anyone using the SYSTEM_DEFAULT will have to at least support this unless we want to change peoples existing systems. They'll expect to use the existing pattern. That is: add_memory_driver_managed(, SYSTEM_DEFAULT) -> offline echo online[_*] -> memory*/state If we disallow "offline", then we essentially leave it "unplugged" and the second line (existing user policy) breaks. I thought this would be considered "breaking userland". I could see disallow "offline" if the memory is "online", and just force "unplug". > It would be a lot simpler if we would only allow > > > - "offline": memory is added but not online > > - "online": memory is online as normal system RAM > > - "online_movable": memory is online in ZONE_MOVABLE > > - "unplug": memory is offlined and removed > > That is, transitioning from offline to online or vice versa fails with > -ENOSUPP. User space can do that itself through sysfs and if there is ever a > good use case we can extend this interface here to allow it. > > Or is there a good use case that really requires this? > There's no good use case, just existing users and expected behavior. ~Gregory

