From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3166BC369A4 for ; Tue, 8 Apr 2025 13:49:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4DD746B0006; Tue, 8 Apr 2025 09:49:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 48C596B0008; Tue, 8 Apr 2025 09:49:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 32D186B000A; Tue, 8 Apr 2025 09:49:36 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 157376B0006 for ; Tue, 8 Apr 2025 09:49:36 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id CB5FAB86F4 for ; Tue, 8 Apr 2025 13:49:36 +0000 (UTC) X-FDA: 83311009152.12.33AA646 Received: from mail-yb1-f173.google.com (mail-yb1-f173.google.com [209.85.219.173]) by imf27.hostedemail.com (Postfix) with ESMTP id E22674000E for ; Tue, 8 Apr 2025 13:49:34 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Htneyb2Y; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf27.hostedemail.com: domain of joshua.hahnjy@gmail.com designates 209.85.219.173 as permitted sender) smtp.mailfrom=joshua.hahnjy@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744120174; a=rsa-sha256; cv=none; b=nRQ7rmmLCXSuzPztrKldUDy2FFAUJRtw+3iy4im8B5HM+6MFsfBF+N/SL/a5fk9X5SCgOq bIJ5RlJznjPcbLFRwMnUaYVXMy9CeLonQbP57oawGDt3WoQqAfhHPXzYyuOLEbMK+LINnD lc3kXfyNhb4KOpR1XpFEpeoorM76S30= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Htneyb2Y; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf27.hostedemail.com: domain of joshua.hahnjy@gmail.com designates 209.85.219.173 as permitted sender) smtp.mailfrom=joshua.hahnjy@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744120174; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=6roUkAtO7CHIJtMo8g3NkkIj2dqhMEED9ifNn9GTILs=; b=VmtKtxOatTVz9xPxUwBLyKIPjrHLHATewCpvlmeJeEpnidjqHyYcuKdZZo6TUb2Wbd7V8S 3M1KmUXSerx1G37MJNRLGefnJVdCTiuLZo9HF8EhsuB3wx90StfV5fj50L6Y0hXuScYCXx +wAd4z6c8R4IvuZpxfmHVaPCPuhZm+Y= Received: by mail-yb1-f173.google.com with SMTP id 3f1490d57ef6-e643f0933afso5466736276.1 for ; Tue, 08 Apr 2025 06:49:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744120174; x=1744724974; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6roUkAtO7CHIJtMo8g3NkkIj2dqhMEED9ifNn9GTILs=; b=Htneyb2Yf2YPb26YSWMXHFiFQODyY1jx+Hb5CrbrFvP9yoeAa+Wn/NwDrb5R6mnwvj XchQ0i6mI+bLH7ZlLiFZCJVEJEND8ldZItGQgAdFE5tmB8mSAJYLlyqzE5Z/VHOWp+eY 6+yBEokHdWZQ12SmySM6wdRWrK/8QgPciHCpe4gjH0oDPhYPPac6AzR2EzJV9RPtumj6 y9ChaKnG7Jo2JAPj80ZPuj5760Uv0/go/dUvxi1l2unZ1sUDelNezByt/BiJPVlsHK87 Axiys5F2sVLI9nO4YUb18zfsEDKyEvQ1R2Mp6yAKWzMXWO3XqHbjSASKimV+toXLo4Yb 9hyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744120174; x=1744724974; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6roUkAtO7CHIJtMo8g3NkkIj2dqhMEED9ifNn9GTILs=; b=umtptjz0iKBGzHLfWlCnZSM7uJEjzmRkdm3noBUFIXdcEIhOfegBNs/mKiPaO+JZqK cG7ohOVWSENFY1X98BsjJGCX1Sp8aB0pTquha7IQ4T7Qc3zmNgJMVYAT9Oul+EjlTowh NqhJxLL481nbNvO3B2upbr2eaii7XOUIhGyg3r3rnxs1L/xbz0O474ladmWyNEIKC36q /r+QZX0jLtJ+otKR+bJ+0sBv80MlIMK2FIGEqjg6eRaa1ghmLak9+wELkuNX0Q1qo7VI d5tbe+BFrBHafSMrE+iSuhZS3aqIjotTA18MS6hEfH5H7PgRFVI242OOY/Oc3Hh5mN7k aWcA== X-Forwarded-Encrypted: i=1; AJvYcCV/7S75LWeOxl1LroprUJL94yOqzTdsQpAWqMTA8eMzvE5g7WG9AO5mLxgJkpMdL2I1a6zpzLmr9A==@kvack.org X-Gm-Message-State: AOJu0YxGe8bQ7gqBmjnqzfr54nvMk22rHSgbb43zVcc8tFCmCFZqZ3pL hf1d4F95t9cVe1gJjNEQAiSD46rDKlSdbdk6RO9ziBrVUxwmzn2V X-Gm-Gg: ASbGncud+UsmZzFij0kQk+wa7BZlD/pyBLgGMsw6NF0z6J+9DdkKubinCP0r72sYpH6 XKH9A01IVixGwx2BZPsDh73YXTWh25oTGA0h8SYzpL7gE1oY8mafmWGnt3gG0mPRNQYRv/MqAO2 ZGKSwJpVQnHw7OGkCj8GP+U+53IINwvAOw3We+xP/FO2IDSo0BOiwrfpuRuDXy0ljDWYiwanlwA YTCd64Msor/r592A6+TFj6GaB7kCbXccnfCzWuemjrPI8t3jheWfoRdF5SWwnfOmbNs/Ju8YpZL SgxGKWErFWtEXXP7CToBtgCEP9Og9P9rQDAdOtfOcNyF X-Google-Smtp-Source: AGHT+IH8QJ49ySf1MDM3STQQAFouuIhVkERvHQyB9mCSnm4/qtjQlXpAGs8+hfQWwIM74A4i6u9mCg== X-Received: by 2002:a05:690c:6111:b0:703:b47a:7312 with SMTP id 00721157ae682-7042d51dad4mr60029507b3.15.1744120173954; Tue, 08 Apr 2025 06:49:33 -0700 (PDT) Received: from localhost ([2a03:2880:25ff:71::]) by smtp.gmail.com with ESMTPSA id 00721157ae682-703d1e4d90bsm31055437b3.32.2025.04.08.06.49.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 06:49:33 -0700 (PDT) From: Joshua Hahn To: Rakie Kim Cc: akpm@linux-foundation.org, gourry@gourry.net, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-cxl@vger.kernel.org, joshua.hahnjy@gmail.com, dan.j.williams@intel.com, ying.huang@linux.alibaba.com, david@redhat.com, Jonathan.Cameron@huawei.com, osalvador@suse.de, kernel_team@skhynix.com, honggyu.kim@sk.com, yunjeong.mun@sk.com Subject: Re: [PATCH v7 2/3] mm/mempolicy: Prepare weighted interleave sysfs for memory hotplug Date: Tue, 8 Apr 2025 06:49:30 -0700 Message-ID: <20250408134932.2986280-1-joshua.hahnjy@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250408073243.488-3-rakie.kim@sk.com> References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: E22674000E X-Stat-Signature: xmgrtupeexgxmbbhn389xejry5ccwgw4 X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1744120174-959087 X-HE-Meta: U2FsdGVkX18RiPrLw9P88yc6MTa2E5z2pTOV/GWVCulFgQFmdqUbkO4Q3QUfmX6G5xwTLxa+CfFHjdfEmsrVv/c9qIKY3APKMwRfc402NHoZktsGlhTllDngk2ylEP+44Qhw9jjTOn2OszhEQuvVTWcQz4fo3RZTnsdbAuJakfn+RDprTZpV8C/74l45X5qCcI5RrUX7ZXIzQxheL5QkT9ubxjh2ilIb65uYB51QkYcTFszXhZ5RixuhBPFX9vYKoX5idlTw4YkOFA7dsFtwdwgwY7mdggYdmpCHU188QSuG2yhRz8xuCzmuSUI7Sx9neCbOJz00F272fjB2BPAnDDbuLUi1h3fAE5gZh9Z3Way6T/LbyFTm3SoZ1SWMNS38QZ9zFmizkUpAkx47TkTVBg/afJJ6YH69yJAW/nxF49QlCdMTQpQ3rEuJHJyvYofONOdecboiwGiW5e50oyVbqqDufnzi7Z+dT3mVgEwhurvRiwNPQYI5BU+Tk5W1+xo/Zq44vU3HLwjePf7UBGTyL3nQi0i1JKACbTINIhwLhMVHLEmiFrZive457R857ywCN9M1kdJHtdEfXuw205obGNIS/7RYxNOKzwzm5WUVxy5cTFsDGVRU7SCJ/vvL9uLWicbwPeCkwr2RHSvJ7EWjdZhre0AJdXEfYHKM2EiPMUsa2jFV2cMimeYw+DyT84TT6Wl9/dQEccU+9BQo/BR/Clczmvjx3SCV0mcSxqblXveIIgSu7mEm8ZXp1zhFWiO9OotIRkEaXOuQtOZAitrRrJm1DYtIksOhMzZEFvv8WycQiWE47rMSLAaq8gZ/SnfjI9XNatRUy1uB0x3W5ZPj+/+IqQAxVF4J8ZnMQjEfgiuUusWJ6FMVgM4fiPWghtN+iRkbYbkt9EmEqak5L2/xT8fbXppp1uDktxh5mOv70cFVmTUtd5xPj8AiLWJOe03TDoiyH2tlEW4a7ssIuQy XcYQtq14 XJIi4BiH/wDbh4/SbVF7tVpQSRxNxbrJrk7+IIM3EFAUEpGwW7cktA4ipT7vZvFD7EaeiTclvK4KBBwo1Ai4FJO0dx6Fa5py0S+S7kVxzTWSgomvKoh6IdjnuwSGi//5Dz3v5mop71BQeXrNq66gLawFJssLwO6qogMt9+LWpLBjBWFyvCSPREjrv6N4mVJQrD31iD7WBx4VCjh6mdLmT2b/FBVAN5KUS3N33Vl811dq6H5UY0I3UvKHbwc6eXdiLqVU+aA2SCTsnt/qkfhNERTAUofNrpguKceShs959i3BvhQg4hS1Ngd9xtFf8hfuRTAtqU8HXI7yOa+gqP8xPIA0NCqZvTg/NgZu17FtjCuzgY4LAF7i1ieNjPJjdT3q83gIQleobJKC/ziYh4WUcRgYc8bB8vKUDUa83JErvjTutQ0eaDg5SrbxRRGYPnK8ZgW/C4xSxpT01Ue84UGQJQ9iLvmzxEKnC3vO/3ZIJ0nA3HinwVZuWL6uzqxdh8Ei/ozxD8clQoto2wT23td9NdlB5ezVg7YvRx71+jw/Hd8VqKtf4iefE/J1XbyF+bG4XTJ1iKnEK0px59GzOx2XCnXlbje0IZVUd3R7M5zh8XuCbOoDrKurYzXzVBnREJN/LzesFIAljjLmFEhEhW0LbDQuRfaqz+mSMPfYG2MWoUAMn950= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, 8 Apr 2025 16:32:41 +0900 Rakie Kim wrote: Hi Rakie, This also looks good to me! Reviewed-by: Joshua Hahn > Previously, the weighted interleave sysfs structure was statically > managed during initialization. This prevented new nodes from being > recognized when memory hotplug events occurred, limiting the ability > to update or extend sysfs entries dynamically at runtime. > > To address this, this patch refactors the sysfs infrastructure and > encapsulates it within a new structure, `sysfs_wi_group`, which holds > both the kobject and an array of node attribute pointers. > > By allocating this group structure globally, the per-node sysfs > attributes can be managed beyond initialization time, enabling > external modules to insert or remove node entries in response to > events such as memory hotplug or node online/offline transitions. > > Instead of allocating all per-node sysfs attributes at once, the > initialization path now uses the existing sysfs_wi_node_add() and > sysfs_wi_node_delete() helpers. This refactoring makes it possible > to modularly manage per-node sysfs entries and ensures the > infrastructure is ready for runtime extension. > > Signed-off-by: Rakie Kim > Signed-off-by: Honggyu Kim > Signed-off-by: Yunjeong Mun > Reviewed-by: Gregory Price > --- > mm/mempolicy.c | 61 ++++++++++++++++++++++++-------------------------- > 1 file changed, 29 insertions(+), 32 deletions(-) > > diff --git a/mm/mempolicy.c b/mm/mempolicy.c > index 0da102aa1cfc..988575f29c53 100644 > --- a/mm/mempolicy.c > +++ b/mm/mempolicy.c > @@ -3419,6 +3419,13 @@ struct iw_node_attr { > int nid; > }; > > +struct sysfs_wi_group { > + struct kobject wi_kobj; > + struct iw_node_attr *nattrs[]; > +}; > + > +static struct sysfs_wi_group *wi_group; > + > static ssize_t node_show(struct kobject *kobj, struct kobj_attribute *attr, > char *buf) > { > @@ -3461,27 +3468,24 @@ static ssize_t node_store(struct kobject *kobj, struct kobj_attribute *attr, > return count; > } > > -static struct iw_node_attr **node_attrs; > - > -static void sysfs_wi_node_release(struct iw_node_attr *node_attr, > - struct kobject *parent) > +static void sysfs_wi_node_delete(int nid) > { > - if (!node_attr) > + if (!wi_group->nattrs[nid]) > return; > - sysfs_remove_file(parent, &node_attr->kobj_attr.attr); > - kfree(node_attr->kobj_attr.attr.name); > - kfree(node_attr); > + > + sysfs_remove_file(&wi_group->wi_kobj, > + &wi_group->nattrs[nid]->kobj_attr.attr); > + kfree(wi_group->nattrs[nid]->kobj_attr.attr.name); > + kfree(wi_group->nattrs[nid]); > } > > static void sysfs_wi_release(struct kobject *wi_kobj) > { > - int i; > - > - for (i = 0; i < nr_node_ids; i++) > - sysfs_wi_node_release(node_attrs[i], wi_kobj); > + int nid; > > - kfree(node_attrs); > - kfree(wi_kobj); > + for (nid = 0; nid < nr_node_ids; nid++) > + sysfs_wi_node_delete(nid); > + kfree(wi_group); > } > > static const struct kobj_type wi_ktype = { > @@ -3489,7 +3493,7 @@ static const struct kobj_type wi_ktype = { > .release = sysfs_wi_release, > }; > > -static int add_weight_node(int nid, struct kobject *wi_kobj) > +static int sysfs_wi_node_add(int nid) > { > struct iw_node_attr *node_attr; > char *name; > @@ -3511,40 +3515,33 @@ static int add_weight_node(int nid, struct kobject *wi_kobj) > node_attr->kobj_attr.store = node_store; > node_attr->nid = nid; > > - if (sysfs_create_file(wi_kobj, &node_attr->kobj_attr.attr)) { > + if (sysfs_create_file(&wi_group->wi_kobj, &node_attr->kobj_attr.attr)) { > kfree(node_attr->kobj_attr.attr.name); > kfree(node_attr); > pr_err("failed to add attribute to weighted_interleave\n"); > return -ENOMEM; > } > > - node_attrs[nid] = node_attr; > + wi_group->nattrs[nid] = node_attr; > return 0; > } > > -static int add_weighted_interleave_group(struct kobject *root_kobj) > +static int __init add_weighted_interleave_group(struct kobject *mempolicy_kobj) > { > - struct kobject *wi_kobj; > int nid, err; > > - node_attrs = kcalloc(nr_node_ids, sizeof(struct iw_node_attr *), > - GFP_KERNEL); > - if (!node_attrs) > + wi_group = kzalloc(struct_size(wi_group, nattrs, nr_node_ids), > + GFP_KERNEL); > + if (!wi_group) > return -ENOMEM; > > - wi_kobj = kzalloc(sizeof(struct kobject), GFP_KERNEL); > - if (!wi_kobj) { > - kfree(node_attrs); > - return -ENOMEM; > - } > - > - err = kobject_init_and_add(wi_kobj, &wi_ktype, root_kobj, > + err = kobject_init_and_add(&wi_group->wi_kobj, &wi_ktype, mempolicy_kobj, > "weighted_interleave"); > if (err) > goto err_put_kobj; > > for_each_node_state(nid, N_POSSIBLE) { > - err = add_weight_node(nid, wi_kobj); > + err = sysfs_wi_node_add(nid); > if (err) { > pr_err("failed to add sysfs [node%d]\n", nid); > goto err_del_kobj; > @@ -3554,9 +3551,9 @@ static int add_weighted_interleave_group(struct kobject *root_kobj) > return 0; > > err_del_kobj: > - kobject_del(wi_kobj); > + kobject_del(&wi_group->wi_kobj); > err_put_kobj: > - kobject_put(wi_kobj); > + kobject_put(&wi_group->wi_kobj); > return err; > } > > -- > 2.34.1 Sent using hkml (https://github.com/sjp38/hackermail)