On Thu 10-09-20 13:35:32, Laurent Dufour wrote:
Le 10/09/2020 à 13:12, Michal Hocko a écrit :
On Thu 10-09-20 09:51:39, Laurent Dufour wrote:
Le 10/09/2020 à 09:23, Michal Hocko a écrit :
On Wed 09-09-20 18:07:15, Laurent Dufour wrote:
Le 09/09/2020 à 12:59, Michal Hocko a écrit :
On Wed 09-09-20 11:21:58, Laurent Dufour wrote:
[...]
> For the point a, using the enum allows to know in > register_mem_sect_under_node() if the link operation is due to a hotplug > operation or done at boot time.
Yes, but let me repeat. We have a mess here and different paths check for the very same condition by different ways. We need to unify those.
What are you suggesting to unify these checks (using a MP_* enum as suggested by David, something else)?
We do have system_state check spread at different places. I would use this one and wrap it behind a helper. Or have I missed any reason why that wouldn't work for this case?
That would not work in that case because memory can be hot-added at the SYSTEM_SCHEDULING system state and the regular memory is also registered at that system state too. So system state is not enough to discriminate between the both.
If that is really the case all other places need a fix as well. Btw. could you be more specific about memory hotplug during early boot? How that happens? I am only aware of https://lkml.kernel.org/r/20200818110046.6664-1-osalvador@suse.de and that doesn't happen as early as SYSTEM_SCHEDULING.
That points has been raised by David, quoting him here:
IIRC, ACPI can hotadd memory while SCHEDULING, this patch would break that.
Ccing Oscar, I think he mentioned recently that this is the case with ACPI.
: Please, note that upstream has fixed that differently (and unintentionally) by : adding another boot state (SYSTEM_SCHEDULING), which is set before smp_init(). : That should happen before memory hotplug events even with memhp_default_state=online. : Backporting that would be too intrusive.
Either I am confused or the above says that no hotplug should happen during SYSTEM_SCHEDULING even in the above case. I really have hard time to imagine how an early boot hotplug should even work. We start with a memory layout provided by a BIOS/FW and intiailize it statically. How would a hotplug even actually trigger that early?