This series adds sysfs ABI to control memmap_on_memory behavior for DAX devices. Patch 1 replaces incorrect device_lock() usage with a local rwsem - this was identified during review. Patch 2 is also a preparatory patch that replaces sprintf() for sysfs operations with sysfs_emit() Patch 3 adds the missing documentation for the sysfs ABI for DAX regions and Dax devices. Patch 4 exports mhp_supports_memmap_on_memory(). Patch 5 adds the new ABI for toggling memmap_on_memory semantics for dax devices. --- Changes in v7: - Rebase to v6.8-rc1 - Remove an unnecessary 'size' variable. (Matthew) - Replace device lock (ab)use in dax/bus.c with local rwsems (Greg) - Replace sprintf() usage with sysfs_emit() (Greg) - Link to v6: https://lore.kernel.org/r/20231214-vv-dax_abi-v6-0-ad900d698438@xxxxxxxxx Changes in v6: - Use sysfs_emit() in memmap_on_memory_show() (Greg) - Change the ABI documentation date for memmap_on_memory to January 2024 as that's likely when the 6.8 merge window will fall (Greg) - Fix dev->driver check (Ying) - Link to v5: https://lore.kernel.org/r/20231214-vv-dax_abi-v5-0-3f7b006960b4@xxxxxxxxx Changes in v5: - Export and check mhp_supports_memmap_on_memory() in the DAX sysfs ABI (David) - Obtain dax_drv under the device lock (Ying) - Check dax_drv for NULL before dereferencing it (Ying) - Clean up some repetition in sysfs-bus-dax documentation entries (Jonathan) - A few additional cleanups enabled by guard(device) (Jonathan) - Drop the DEFINE_GUARD() part of patch 2, add dependency on Dan's patch above so it can be backported / applied separately (Jonathan, Dan) - Link to v4: https://lore.kernel.org/r/20231212-vv-dax_abi-v4-0-1351758f0c92@xxxxxxxxx Changes in v4: - Hold the device lock when checking if the dax_dev is bound to kmem (Ying, Dan) - Remove dax region checks (and locks) as they were unnecessary. - Introduce guard(device) for device lock/unlock (Dan) - Convert the rest of drivers/dax/bus.c to guard(device) - Link to v3: https://lore.kernel.org/r/20231211-vv-dax_abi-v3-0-acf6cc1bde9f@xxxxxxxxx Changes in v3: - Fix typo in ABI docs (Zhijian Li) - Add kernel config and module parameter dependencies to the ABI docs entry (David Hildenbrand) - Ensure kmem isn't active when setting the sysfs attribute (Ying Huang) - Simplify returning from memmap_on_memory_store() - Link to v2: https://lore.kernel.org/r/20231206-vv-dax_abi-v2-0-f4f4f2336d08@xxxxxxxxx Changes in v2: - Fix CC lists, patch 1/2 didn't get sent correctly in v1 - Link to v1: https://lore.kernel.org/r/20231206-vv-dax_abi-v1-0-474eb88e201c@xxxxxxxxx Cc: <linux-kernel@xxxxxxxxxxxxxxx> Cc: <nvdimm@xxxxxxxxxxxxxxx> Cc: <linux-cxl@xxxxxxxxxxxxxxx> Cc: David Hildenbrand <david@xxxxxxxxxx> Cc: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx> Cc: Huang Ying <ying.huang@xxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx> Cc: <linux-mm@xxxxxxxxx> To: Dan Williams <dan.j.williams@xxxxxxxxx> To: Vishal Verma <vishal.l.verma@xxxxxxxxx> To: Dave Jiang <dave.jiang@xxxxxxxxx> To: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> To: Oscar Salvador <osalvador@xxxxxxx> --- Vishal Verma (5): dax/bus.c: replace driver-core lock usage by a local rwsem dax/bus.c: replace several sprintf() with sysfs_emit() Documentatiion/ABI: Add ABI documentation for sys-bus-dax mm/memory_hotplug: export mhp_supports_memmap_on_memory() dax: add a sysfs knob to control memmap_on_memory behavior include/linux/memory_hotplug.h | 6 + drivers/dax/bus.c | 295 +++++++++++++++++++++++--------- mm/memory_hotplug.c | 17 +- Documentation/ABI/testing/sysfs-bus-dax | 153 +++++++++++++++++ 4 files changed, 381 insertions(+), 90 deletions(-) --- base-commit: 6613476e225e090cc9aad49be7fa504e290dd33d change-id: 20231025-vv-dax_abi-17a219c46076 Best regards, -- Vishal Verma <vishal.l.verma@xxxxxxxxx>