>>> Why make someone dig for the reasons this lock is sufficient? >> >> I think 5 LOC of comment are too much for something that is documented >> e.g., in Documentation/core-api/memory-hotplug.rst ("Locking >> Internals"). But whatever you prefer. > > Sure, lets beef up that doc to clarify this case and refer to it. Referring is a good idea. We should change the "is advised" for the device_online() to a "is required" or similar. Back then I wasn't sure how it all worked in detail... >>>> I properly documented the semantics of >>>> add_memory_block_devices()/remove_memory_block_devices() already (that >>>> they need the device hotplug lock). >>> >>> I see that, but I prefer lockdep_assert_held() in the code rather than >>> comments. I'll send a patch to fix that up. >> >> That won't work as early boot code from ACPI won't hold it while it adds >> memory. And we decided (especially Michal :) ) to keep it like that. > > So then the comment is actively misleading for that case. I would > expect an explicit _unlocked path for that case with a comment about > why it's special. Is there already a comment to that effect somewhere? > __add_memory() - the locked variant - is called from the same ACPI location either locked or unlocked. I added a comment back then after a longe discussion with Michal: drivers/acpi/scan.c: /* * Although we call __add_memory() that is documented to require the * device_hotplug_lock, it is not necessary here because this is an * early code when userspace or any other code path cannot trigger * hotplug/hotunplug operations. */ It really is a special case, though. -- Thanks, David / dhildenb