Re: [PATCH v5 1/9] mm/demotion: Add support for explicit memory tiers

From: Aneesh Kumar K V
Date: Wed Jun 08 2022 - 04:50:28 EST


On 6/8/22 11:40 AM, Ying Huang wrote:
On Wed, 2022-06-08 at 10:07 +0530, Aneesh Kumar K V wrote:
On 6/8/22 12:13 AM, Tim Chen wrote:
...


+
+static void memory_tier_device_release(struct device *dev)
+{
+ struct memory_tier *tier = to_memory_tier(dev);
+

Do we need some ref counts on memory_tier?
If there is another device still using the same memtier,
free below could cause problem.

+ kfree(tier);
+}
+

...

The lifecycle of the memory_tier struct is tied to the sysfs device life
time. ie, memory_tier_device_relese get called only after the last
reference on that sysfs dev object is released. Hence we can be sure
there is no userspace that is keeping one of the memtier related sysfs
file open.

W.r.t other memory device sharing the same memtier, we unregister the
sysfs device only when the memory tier nodelist is empty. That is no
memory device is present in this memory tier.

memory_tier isn't only used by user space. It is used inside kernel
too. If some kernel code get a pointer to struct memory_tier, we need
to guarantee the pointer will not be freed under us.

As mentioned above current patchset avoid doing that.

And as Tim pointed
out, we need to use it in hot path (for statistics), so some kind of rcu
lock may be good.


Sure when those statistics code get added, we can add the relevant kref and locking details.

-aneesh