Re: [PATCH 3/3] memory: introduce an option to force onlining of hotplug memory

From: David Hildenbrand
Date: Thu Jul 23 2020 - 07:52:15 EST


On 23.07.20 13:37, David Hildenbrand wrote:
> On 23.07.20 10:45, Roger Pau Monne wrote:
>> Add an extra option to add_memory_resource that overrides the memory
>> hotplug online behavior in order to force onlining of memory from
>> add_memory_resource unconditionally.
>>
>> This is required for the Xen balloon driver, that must run the
>> online page callback in order to correctly process the newly added
>> memory region, note this is an unpopulated region that is used by Linux
>> to either hotplug RAM or to map foreign pages from other domains, and
>> hence memory hotplug when running on Xen can be used even without the
>> user explicitly requesting it, as part of the normal operations of the
>> OS when attempting to map memory from a different domain.
>>
>> Setting a different default value of memhp_default_online_type when
>> attaching the balloon driver is not a robust solution, as the user (or
>> distro init scripts) could still change it and thus break the Xen
>> balloon driver.
>
> I think we discussed this a couple of times before (even triggered by my
> request), and this is responsibility of user space to configure. Usually
> distros have udev rules to online memory automatically. Especially, user
> space should eb able to configure *how* to online memory.
>
> It's the admin/distro responsibility to configure this properly. In case
> this doesn't happen (or as you say, users change it), bad luck.
>
> E.g., virtio-mem takes care to not add more memory in case it is not
> getting onlined. I remember hyper-v has similar code to at least wait a
> bit for memory to get onlined.
>
> Nacked-by: David Hildenbrand <david@xxxxxxxxxx>
>

Oh, BTW, I removed that "online" parameter in

commit f29d8e9c0191a2a02500945db505e5c89159c3f4
Author: David Hildenbrand <david@xxxxxxxxxx>
Date: Fri Dec 28 00:35:36 2018 -0800

mm/memory_hotplug: drop "online" parameter from add_memory_resource()

Userspace should always be in charge of how to online memory and if memory
should be onlined automatically in the kernel. Let's drop the parameter
to overwrite this - XEN passes memhp_auto_online, just like add_memory(),
so we can directly use that instead internally.


Xen was passing "memhp_auto_online" since

commit 703fc13a3f6615e29ce3eb862275d7b58a5d03ba
Author: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx>
Date: Tue Mar 15 14:56:52 2016 -0700

xen_balloon: support memory auto onlining policy

Add support for the newly added kernel memory auto onlining policy to
Xen ballon driver.


And before that I assume XEN was completely relying on udev rules to handle it. Parameter was introduced in

commit 31bc3858ea3ebcc3157b3f5f0e624c5962f5a7a6
Author: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx>
Date: Tue Mar 15 14:56:48 2016 -0700

memory-hotplug: add automatic onlining policy for the newly added memory

Currently, all newly added memory blocks remain in 'offline' state
unless someone onlines them, some linux distributions carry special udev
rules like:

SUBSYSTEM=="memory", ACTION=="add", ATTR{state}=="offline", ATTR{state}="online"


--
Thanks,

David / dhildenb