android_kernel_xiaomi_sm8450/drivers/dax
Dan Williams 557e528255 dax: Introduce alloc_dev_dax_id()
[ Upstream commit 70aab281e18c68a1284bc387de127c2fc0bed3f8 ]

The reference counting of dax_region objects is needlessly complicated,
has lead to confusion [1], and has hidden a bug [2]. Towards cleaning up
that mess introduce alloc_dev_dax_id() to minimize the holding of a
dax_region reference to only what dev_dax_release() needs, the
dax_region->ida.

Part of the reason for the mess was the design to dereference a
dax_region in all cases in free_dev_dax_id() even if the id was
statically assigned by the upper level dax_region driver. Remove the
need to call "is_static(dax_region)" by tracking whether the id is
dynamic directly in the dev_dax instance itself.

With that flag the dax_region pinning and release per dev_dax instance
can move to alloc_dev_dax_id() and free_dev_dax_id() respectively.

A follow-on cleanup address the unnecessary references in the dax_region
setup and drivers.

Fixes: 0f3da14a4f ("device-dax: introduce 'seed' devices")
Link: http://lore.kernel.org/r/20221203095858.612027-1-liuyongqiang13@huawei.com [1]
Link: http://lore.kernel.org/r/3cf0890b-4eb0-e70e-cd9c-2ecc3d496263@hpe.com [2]
Reported-by: Yongqiang Liu <liuyongqiang13@huawei.com>
Reported-by: Paul Cassella <cassella@hpe.com>
Reported-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Link: https://lore.kernel.org/r/168577284563.1672036.13493034988900989554.stgit@dwillia2-xfh.jf.intel.com
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-07-27 08:44:00 +02:00
..
hmem devdax: Fix soft-reservation memory description 2022-09-28 11:10:41 +02:00
pmem mm/memremap_pages: convert to 'struct range' 2020-10-13 18:38:28 -07:00
bus.c dax: Introduce alloc_dev_dax_id() 2023-07-27 08:44:00 +02:00
bus.h mm/memremap_pages: convert to 'struct range' 2020-10-13 18:38:28 -07:00
dax-private.h dax: Introduce alloc_dev_dax_id() 2023-07-27 08:44:00 +02:00
device.c device-dax: make align a per-device property 2020-10-13 18:38:28 -07:00
Kconfig mm: fix phys_to_target_node() and memory_add_physaddr_to_nid() exports 2020-11-22 10:48:22 -08:00
kmem.c dax/kmem: Fix leak of memory-hotplug resources 2023-03-11 16:40:04 +01:00
Makefile ACPI: HMAT: refactor hmat_register_target_device to hmem_register_device 2020-10-13 18:38:27 -07:00
super.c dax: make sure inodes are flushed before destroy cache 2022-04-08 14:40:16 +02:00