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 51E50C2BA18 for ; Tue, 18 Jun 2024 12:55:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B266A6B02BF; Tue, 18 Jun 2024 08:55:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AD5646B02C0; Tue, 18 Jun 2024 08:55:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 94F046B02C1; Tue, 18 Jun 2024 08:55:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 72F156B02BF for ; Tue, 18 Jun 2024 08:55:43 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id EEEC2A0258 for ; Tue, 18 Jun 2024 12:55:42 +0000 (UTC) X-FDA: 82244006124.23.906A079 Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by imf09.hostedemail.com (Postfix) with ESMTP id AE8FE140007 for ; Tue, 18 Jun 2024 12:55:39 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=vLiWQFSi; spf=pass (imf09.hostedemail.com: domain of m.szyprowski@samsung.com designates 210.118.77.11 as permitted sender) smtp.mailfrom=m.szyprowski@samsung.com; dmarc=pass (policy=none) header.from=samsung.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1718715336; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=RJ/uY03go8jO2TLMM2WkjWIetxt/XXqFix9/JSmlnk0=; b=UwHZMsalRRvWdquOR1evyK5uELyZQaZhLLDddVCYLS/uUr8zs9jmBRpIDl1xmYvl2KR4UB 4P8P4iuZLPe5BhhUHGtzV+RjpJQrgzpvvvgtUjdnxNifBQQqlVq29z0jRTuK1C4mFZBnrV s2hkhkHFqLnEsDWAYyqjZbS1Z2PNXoM= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=vLiWQFSi; spf=pass (imf09.hostedemail.com: domain of m.szyprowski@samsung.com designates 210.118.77.11 as permitted sender) smtp.mailfrom=m.szyprowski@samsung.com; dmarc=pass (policy=none) header.from=samsung.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718715336; a=rsa-sha256; cv=none; b=R8W8ML6ghLHiZw0opm+btxm0rsdPpIxcTzUZL9il7rhcsTNYTRGuKH7aUUoKG4cF6S7C7Z i/7yn3Pqbxjj2/LZ8myNPIbUTjr6GFYeAIBZYlxrqgfmYVyJhLTaX7mYwLVgeZo9ECJvzx cDgLZ6iLFpC7Qny22kO8rp3kWf3Ul/k= Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20240618125537euoutp01bfbda60aa3c2116dcac6326f2fdfef43~aGn4xIC-z0365703657euoutp01c for ; Tue, 18 Jun 2024 12:55:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20240618125537euoutp01bfbda60aa3c2116dcac6326f2fdfef43~aGn4xIC-z0365703657euoutp01c DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1718715337; bh=RJ/uY03go8jO2TLMM2WkjWIetxt/XXqFix9/JSmlnk0=; h=Date:Subject:To:Cc:From:In-Reply-To:References:From; b=vLiWQFSiSAcH8i+xIYUmRzckzAIQT5lobTPkbWJDRcmlWlEjFflzM3UyHQ7SvBiu1 YHHDtzNtqFJExtskllTQiixrONUwgQJTaDJFKd5UklpNVnQBGU9CmdaN8qjt/sLLqE yJMpgxMlzqhxGIaTyxyjzs7tcIJWIJR6a/UOmc7E= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20240618125536eucas1p210eb1c096caeb8c52d53aa4f1178c56e~aGn4nhqOG2727127271eucas1p20; Tue, 18 Jun 2024 12:55:36 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 69.FA.09620.8C381766; Tue, 18 Jun 2024 13:55:36 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20240618125536eucas1p1c62068f858a59d23fca29bf98efb9323~aGn4PtK1b1401514015eucas1p1P; Tue, 18 Jun 2024 12:55:36 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20240618125536eusmtrp20213627ea12c29f1316d8c849de4d25b~aGn4PEXAr1286412864eusmtrp2X; Tue, 18 Jun 2024 12:55:36 +0000 (GMT) X-AuditID: cbfec7f5-d1bff70000002594-e3-667183c8a9ec Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id CA.4E.08810.8C381766; Tue, 18 Jun 2024 13:55:36 +0100 (BST) Received: from [106.210.134.192] (unknown [106.210.134.192]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20240618125536eusmtip2bdb65a9018405db44d47ad2ca63af558~aGn32L2ld2400724007eusmtip25; Tue, 18 Jun 2024 12:55:36 +0000 (GMT) Message-ID: <602186b3-5ce3-41b3-90a3-134792cc2a48@samsung.com> Date: Tue, 18 Jun 2024 14:55:35 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 -next 3/3] mm/hugetlb_cgroup: switch to the new cftypes To: Xiu Jianfeng , akpm@linux-foundation.org, muchun.song@linux.dev Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, osalvador@suse.de Content-Language: en-US From: Marek Szyprowski In-Reply-To: <20240612092409.2027592-4-xiujianfeng@huawei.com> Content-Transfer-Encoding: 8bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprJKsWRmVeSWpSXmKPExsWy7djPc7onmgvTDNr3GFnMWb+GzeLyrjls FvfW/Ge1WLbzIYvFmWlFFttn7WB0YPNoOfKW1WPTp0nsHidm/GbxWNgwldlj8+lqj8+b5ALY orhsUlJzMstSi/TtErgyHrVeZCzoiqy4f+8sUwPjfq8uRk4OCQETiavz3zN2MXJxCAmsYJTY eOcLC0hCSOALo8S+Tl+IxGdGiUsPfrLCdOzbvIMdIrGcUWLJl5OMEB0fGSXevQCzeQXsJK4c PcMEYrMIqEq8mtULFReUODnzCdgGUQF5ifu3ZrCD2MICARK/Lx1j62Lk4BARiJVomcoDYjIL uEtM/pUDUsEsIC5x68l8sIlsAoYSXW+72EBsTqBNO5bcYoaokZdo3jqbGeQ0CYEbHBILru1g hrjZRWLvmoVsELawxKvjW9ghbBmJ/ztBhoI0tDNKLPh9H8qZwCjR8PwWI0SVtcSdc7/YIC7S lFi/Sx8i7Chxes0xFpCwhACfxI23ghBH8ElM2jadGSLMK9HRJgRRrSYx6/g6uLUHL1xinsCo NAspUGYheXMWkndmIexdwMiyilE8tbQ4Nz212DgvtVyvODG3uDQvXS85P3cTIzD1nP53/OsO xhWvPuodYmTiYDzEKMHBrCTC6zQtL02INyWxsiq1KD++qDQntfgQozQHi5I4r2qKfKqQQHpi SWp2ampBahFMlomDU6qBKSG6ySwnc0mZcEvvnRvlMivF7vUk9ZsYW+2zeXR7Vst16wfX5u2a bnTn6Dlm09tnpqfdvXGyOOv4f64J0dn/C32Ye27u6XnTuKWmgj+28Fjb68ubD9b19FQ1Vap7 BE7e6drS1VTUYbhWq/h0j/N0o2J538r5e/jm3/36Z/1h49P1NUs3VE65f3L3QlfXK/YV/9Tc hE3PBp1Y9bicbVFm4J8nqc8qddo/tBnrP6xQich1ZXpubZCpKOsQLmRz5Lxj4VVfrp8HPBm+ lZbatNxLWRo/d1vg0t/+Os2rpnxIVX+TnKe5LTH65Zldm86kNZ9K1Fz1f/UV0+OciRy19ULb e0qWPrI6u6X54/TdFRs8lViKMxINtZiLihMBPztnvqwDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrLIsWRmVeSWpSXmKPExsVy+t/xe7onmgvTDC5skLaYs34Nm8XlXXPY LO6t+c9qsWznQxaLM9OKLLbP2sHowObRcuQtq8emT5PYPU7M+M3isbBhKrPH5tPVHp83yQWw RenZFOWXlqQqZOQXl9gqRRtaGOkZWlroGZlY6hkam8daGZkq6dvZpKTmZJalFunbJehlPGq9 yFjQFVlx/95ZpgbG/V5djJwcEgImEvs272DvYuTiEBJYyijxsGURK0RCRuLktAYoW1jiz7Uu Noii94wS3V9+M4IkeAXsJK4cPcMEYrMIqEq8mtULFReUODnzCQuILSogL3H/1gx2EFtYwE9i 56IHYPUiArESM97uArI5OJgF3CUm/8oBCQsJFEoc3HcXrJVZQFzi1pP5YOVsAoYSXW9BbuDk 4ARau2PJLWaIGjOJrq1djBC2vETz1tnMExiFZiG5YhaSUbOQtMxC0rKAkWUVo0hqaXFuem6x oV5xYm5xaV66XnJ+7iZGYLxtO/Zz8w7Gea8+6h1iZOJgPMQowcGsJMLrNC0vTYg3JbGyKrUo P76oNCe1+BCjKTAoJjJLiSbnAyM+ryTe0MzA1NDEzNLA1NLMWEmc17OgI1FIID2xJDU7NbUg tQimj4mDU6qBia33V4jw3ZmqD26/tzNOTAhzMa4yOVPK6iKcKPH81qUcTrmrU940bmFtevde 7exE47oGCbGj7wqEdyqa39eZ1yusbsyadeNowOlvbd71H0zeaMVErNeZ5f1Y+sKNqQrNdhmS eacTw5bym9+ZZpC+/lPzUjWJNx7MXlEcW9yZKzPuTmdncW1ePJX1gn3G3ScHcpZW5IjMXbNa oWkz85k4RaPlXBdck/NnvLm/fRHDxit2VWfOLhU96dynG8DaPUk0ZJdywQOFDY+WuXsaKuSL aqs4NfTumqWrUljIcEGFy+GT7i8fg6OvzqpHXvsTMm3yju/+ZXf6PnpEbw5/fOMWUwp/0jrn lk/TkmMPe1xSYinOSDTUYi4qTgQAK06MokADAAA= X-CMS-MailID: 20240618125536eucas1p1c62068f858a59d23fca29bf98efb9323 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20240618125536eucas1p1c62068f858a59d23fca29bf98efb9323 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20240618125536eucas1p1c62068f858a59d23fca29bf98efb9323 References: <20240612092409.2027592-1-xiujianfeng@huawei.com> <20240612092409.2027592-4-xiujianfeng@huawei.com> X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: AE8FE140007 X-Stat-Signature: wx6n1mjdshr1fq1xhp31d8h9uwoy16jx X-Rspam-User: X-HE-Tag: 1718715339-33633 X-HE-Meta: U2FsdGVkX1/1poQCyfufHWPAbu7TKLJ5J43kdNVN3JMGwX8OiX4WLob4B75rbWpxRqkr28Bt4UDrRDZqiHi204KWbOv0BlMIIxpQ9khKiBmP7nfLJNeaoHlXFZRpVjdBDb+CUTqEQg7KKt64CNZf9XAKBbtG4vWW03j5SY4r+iQ7aC1yvK+7HxFtB3gJMtsZCGFrFgEH/ag+lbt8NqYluum5bVA2zP9BrHebjv6nbBlNgabD7YgKGem1Xi2X57lISwMG577uJY2H9cS9Pdk3NvvwuknpshP0OR47uOx4QVkRuTu+M2pV7W9pFukAAlBJZwdAUEffKHo+Ev5mZZDEFzKVwlcni5c9tMZAQq+p63o1Sarq7UYLjY4taJCpRZNVsWTrh26ib/RRnbcjdGGIBiIdbD9KIa5rlk9xEAOeZjt0Qf7lyA+O1UhCmGCVf+yWW1oHGnr+PRRbdS+PjF1BmbWBFdcCddtRonI42s1VcG3jiM5PhCv6MogPHZRnATUMYV+Jea9ws7Hxu7A8Wo2uEZBtym+OJupnMz2mjS4TvEFmYFVA3Z6QTfSNuE53NY6SdoNviypDmj3Ww1I7UyReZHNt4ZKh23p/EZ/oCg2cQI1IkHnR/7QkPf0L+O1OzzWGyfvc9K7wGCZk3UKcrOgWuxJ8NkahTC9iWVa2D/PfU9d+yBm1arFmK1w5wygI0r5Qt2TwjnusT2tbR/6Js1UXYzD0dA3yKt1DAF8TIy8quNI8Cnyw1O1i9KoBnyS8tf6Svgeh4vdDhUiEiCiSv7RJhZY5+Fd72cRwldsrFwhGHlvwGU2kpaU7nE9JHyLk/zGBG+2iHe9GwB4TpjNYNl8uozaIcDx1C88jDnOu5Z64QyDTGux/5fsser/YKxicJnnTzlDFvsEjUovBH7K7CZrvQmNOscZoJS32uVucWAob3sQzl0VCh994hZeKJgp4yukW3jGS5rBVgHoLmq/F8k2 k5HBxwsL Qt/nnF+DTKUawpRZb57+uMxJJB06vJEDq+skA2kQhWUFfZtidLYuKmqTSabcPYqwzbGdZLyzv3zw378JYRjS3Pa0mtqgbh9VawuPepTjAsm5V2rRGvRmtJl50c5t3hdAgY03EqzP/OZF/a69w5q6MtxMLNyfRT3lTUQhNa05M/ArI21k= 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: Dear All, On 12.06.2024 11:24, Xiu Jianfeng wrote: > The previous patch has already reconstructed the cftype attributes > based on the templates and saved them in dfl_cftypes and legacy_cftypes. > then remove the old procedure and switch to the new cftypes. > > Signed-off-by: Xiu Jianfeng This patch landed in yesterday's linux-next (next-20240617) as commit 11308a02a56cc ("mm/hugetlb_cgroup: switch to the new cftypes"). In my daily tests I found that it triggers the following lock dependency checker warning on most of my ARM64 test machines: BUG: key ffff000005c080d8 has not been registered! ------------[ cut here ]------------ DEBUG_LOCKS_WARN_ON(1) WARNING: CPU: 1 PID: 1080 at kernel/locking/lockdep.c:4895 lockdep_init_map_type+0x1cc/0x284 Modules linked in: ipv6 CPU: 1 PID: 1080 Comm: cgmanager Not tainted 6.10.0-rc3+ #1011 Hardware name: linux,dummy-virt (DT) pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : lockdep_init_map_type+0x1cc/0x284 lr : lockdep_init_map_type+0x1cc/0x284 ... Call trace:  lockdep_init_map_type+0x1cc/0x284  __kernfs_create_file+0x7c/0x138  cgroup_addrm_files+0x170/0x360  css_populate_dir+0x70/0x174  cgroup_apply_control_enable+0x128/0x378  rebind_subsystems+0x384/0x504  cgroup_setup_root+0x224/0x420  cgroup1_get_tree+0x248/0x36c  vfs_get_tree+0x28/0xe8  path_mount+0x3e8/0xb78  __arm64_sys_mount+0x1f0/0x2dc  invoke_syscall+0x48/0x118  el0_svc_common.constprop.0+0x40/0xe8  do_el0_svc_compat+0x20/0x3c  el0_svc_compat+0x44/0xe0  el0t_32_sync_handler+0x98/0x148  el0t_32_sync+0x194/0x198 irq event stamp: 8225 hardirqs last  enabled at (8225): [] console_unlock+0x164/0x190 hardirqs last disabled at (8224): [] console_unlock+0x150/0x190 softirqs last  enabled at (8214): [] handle_softirqs+0x4dc/0x4f4 softirqs last disabled at (8207): [] __do_softirq+0x14/0x20 ---[ end trace 0000000000000000 ]--- It looks that something is not properly intialized. Reverting $subject on top of linux-next fixes this issue. I've used defconfig with some debug options enabled and some drivers compiled-in (if this matters): make ARCH=arm64 defconfig ./scripts/config -e BLK_DEV_RAM --set-val BLK_DEV_RAM_COUNT 4 --set-val BLK_DEV_RAM_SIZE 81920 --set-val CMA_SIZE_MBYTES 96 -e PROVE_LOCKING -e DEBUG_ATOMIC_SLEEP -e STAGING -e I2C_GPIO -e PM_DEBUG -e PM_ADVANCED_DEBUG -e USB_GADGET -e USB_ETH -e CONFIG_DEVFREQ_THERMAL -e CONFIG_BRCMFMAC_PCIE -e CONFIG_NFC -d ARCH_SUNXI -d ARCH_ALPINE -d DRM_NOUVEAU -d ARCH_BCM_IPROC -d ARCH_BERLIN -d ARCH_BRCMSTB -d ARCH_LAYERSCAPE -d ARCH_LG1K -d ARCH_HISI -d ARCH_MEDIATEK -d ARCH_MVEBU -d ARCH_SEATTLE -d ARCH_SYNQUACER -d ARCH_RENESAS -d ARCH_STRATIX10 -d ARCH_TEGRA -d ARCH_SPRD -d ARCH_THUNDER -d ARCH_THUNDER2 -d ARCH_UNIPHIER -d ARCH_XGENE -d ARCH_ZX -d ARCH_ZYNQMP -d HIBERNATION -d CLK_SUNXI -d CONFIG_EFI -d CONFIG_TEE -e FW_CFG_SYSFS > --- > include/linux/hugetlb.h | 5 -- > mm/hugetlb_cgroup.c | 163 +++++----------------------------------- > 2 files changed, 17 insertions(+), 151 deletions(-) > > diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h > index 279aca379b95..a951c0d06061 100644 > --- a/include/linux/hugetlb.h > +++ b/include/linux/hugetlb.h > @@ -686,11 +686,6 @@ struct hstate { > unsigned int nr_huge_pages_node[MAX_NUMNODES]; > unsigned int free_huge_pages_node[MAX_NUMNODES]; > unsigned int surplus_huge_pages_node[MAX_NUMNODES]; > -#ifdef CONFIG_CGROUP_HUGETLB > - /* cgroup control files */ > - struct cftype cgroup_files_dfl[8]; > - struct cftype cgroup_files_legacy[10]; > -#endif > char name[HSTATE_NAME_LEN]; > }; > > diff --git a/mm/hugetlb_cgroup.c b/mm/hugetlb_cgroup.c > index 43aae8f88d5f..2b899c4ae968 100644 > --- a/mm/hugetlb_cgroup.c > +++ b/mm/hugetlb_cgroup.c > @@ -839,164 +839,26 @@ hugetlb_cgroup_cfttypes_init(struct hstate *h, struct cftype *cft, > } > } > > -static void __init __hugetlb_cgroup_file_dfl_init(int idx) > +static void __init __hugetlb_cgroup_file_dfl_init(struct hstate *h) > { > - char buf[32]; > - struct cftype *cft; > - struct hstate *h = &hstates[idx]; > + int idx = hstate_index(h); > > hugetlb_cgroup_cfttypes_init(h, dfl_files + idx * DFL_TMPL_SIZE, > hugetlb_dfl_tmpl, DFL_TMPL_SIZE); > - > - /* format the size */ > - mem_fmt(buf, sizeof(buf), huge_page_size(h)); > - > - /* Add the limit file */ > - cft = &h->cgroup_files_dfl[0]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.max", buf); > - cft->private = MEMFILE_PRIVATE(idx, RES_LIMIT); > - cft->seq_show = hugetlb_cgroup_read_u64_max; > - cft->write = hugetlb_cgroup_write_dfl; > - cft->flags = CFTYPE_NOT_ON_ROOT; > - > - /* Add the reservation limit file */ > - cft = &h->cgroup_files_dfl[1]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.rsvd.max", buf); > - cft->private = MEMFILE_PRIVATE(idx, RES_RSVD_LIMIT); > - cft->seq_show = hugetlb_cgroup_read_u64_max; > - cft->write = hugetlb_cgroup_write_dfl; > - cft->flags = CFTYPE_NOT_ON_ROOT; > - > - /* Add the current usage file */ > - cft = &h->cgroup_files_dfl[2]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.current", buf); > - cft->private = MEMFILE_PRIVATE(idx, RES_USAGE); > - cft->seq_show = hugetlb_cgroup_read_u64_max; > - cft->flags = CFTYPE_NOT_ON_ROOT; > - > - /* Add the current reservation usage file */ > - cft = &h->cgroup_files_dfl[3]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.rsvd.current", buf); > - cft->private = MEMFILE_PRIVATE(idx, RES_RSVD_USAGE); > - cft->seq_show = hugetlb_cgroup_read_u64_max; > - cft->flags = CFTYPE_NOT_ON_ROOT; > - > - /* Add the events file */ > - cft = &h->cgroup_files_dfl[4]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.events", buf); > - cft->private = MEMFILE_PRIVATE(idx, 0); > - cft->seq_show = hugetlb_events_show; > - cft->file_offset = offsetof(struct hugetlb_cgroup, events_file[idx]); > - cft->flags = CFTYPE_NOT_ON_ROOT; > - > - /* Add the events.local file */ > - cft = &h->cgroup_files_dfl[5]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.events.local", buf); > - cft->private = MEMFILE_PRIVATE(idx, 0); > - cft->seq_show = hugetlb_events_local_show; > - cft->file_offset = offsetof(struct hugetlb_cgroup, > - events_local_file[idx]); > - cft->flags = CFTYPE_NOT_ON_ROOT; > - > - /* Add the numa stat file */ > - cft = &h->cgroup_files_dfl[6]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.numa_stat", buf); > - cft->private = MEMFILE_PRIVATE(idx, 0); > - cft->seq_show = hugetlb_cgroup_read_numa_stat; > - cft->flags = CFTYPE_NOT_ON_ROOT; > - > - /* NULL terminate the last cft */ > - cft = &h->cgroup_files_dfl[7]; > - memset(cft, 0, sizeof(*cft)); > - > - WARN_ON(cgroup_add_dfl_cftypes(&hugetlb_cgrp_subsys, > - h->cgroup_files_dfl)); > } > > -static void __init __hugetlb_cgroup_file_legacy_init(int idx) > +static void __init __hugetlb_cgroup_file_legacy_init(struct hstate *h) > { > - char buf[32]; > - struct cftype *cft; > - struct hstate *h = &hstates[idx]; > + int idx = hstate_index(h); > > hugetlb_cgroup_cfttypes_init(h, legacy_files + idx * LEGACY_TMPL_SIZE, > hugetlb_legacy_tmpl, LEGACY_TMPL_SIZE); > - > - /* format the size */ > - mem_fmt(buf, sizeof(buf), huge_page_size(h)); > - > - /* Add the limit file */ > - cft = &h->cgroup_files_legacy[0]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.limit_in_bytes", buf); > - cft->private = MEMFILE_PRIVATE(idx, RES_LIMIT); > - cft->read_u64 = hugetlb_cgroup_read_u64; > - cft->write = hugetlb_cgroup_write_legacy; > - > - /* Add the reservation limit file */ > - cft = &h->cgroup_files_legacy[1]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.rsvd.limit_in_bytes", buf); > - cft->private = MEMFILE_PRIVATE(idx, RES_RSVD_LIMIT); > - cft->read_u64 = hugetlb_cgroup_read_u64; > - cft->write = hugetlb_cgroup_write_legacy; > - > - /* Add the usage file */ > - cft = &h->cgroup_files_legacy[2]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.usage_in_bytes", buf); > - cft->private = MEMFILE_PRIVATE(idx, RES_USAGE); > - cft->read_u64 = hugetlb_cgroup_read_u64; > - > - /* Add the reservation usage file */ > - cft = &h->cgroup_files_legacy[3]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.rsvd.usage_in_bytes", buf); > - cft->private = MEMFILE_PRIVATE(idx, RES_RSVD_USAGE); > - cft->read_u64 = hugetlb_cgroup_read_u64; > - > - /* Add the MAX usage file */ > - cft = &h->cgroup_files_legacy[4]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.max_usage_in_bytes", buf); > - cft->private = MEMFILE_PRIVATE(idx, RES_MAX_USAGE); > - cft->write = hugetlb_cgroup_reset; > - cft->read_u64 = hugetlb_cgroup_read_u64; > - > - /* Add the MAX reservation usage file */ > - cft = &h->cgroup_files_legacy[5]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.rsvd.max_usage_in_bytes", buf); > - cft->private = MEMFILE_PRIVATE(idx, RES_RSVD_MAX_USAGE); > - cft->write = hugetlb_cgroup_reset; > - cft->read_u64 = hugetlb_cgroup_read_u64; > - > - /* Add the failcntfile */ > - cft = &h->cgroup_files_legacy[6]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.failcnt", buf); > - cft->private = MEMFILE_PRIVATE(idx, RES_FAILCNT); > - cft->write = hugetlb_cgroup_reset; > - cft->read_u64 = hugetlb_cgroup_read_u64; > - > - /* Add the reservation failcntfile */ > - cft = &h->cgroup_files_legacy[7]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.rsvd.failcnt", buf); > - cft->private = MEMFILE_PRIVATE(idx, RES_RSVD_FAILCNT); > - cft->write = hugetlb_cgroup_reset; > - cft->read_u64 = hugetlb_cgroup_read_u64; > - > - /* Add the numa stat file */ > - cft = &h->cgroup_files_legacy[8]; > - snprintf(cft->name, MAX_CFTYPE_NAME, "%s.numa_stat", buf); > - cft->private = MEMFILE_PRIVATE(idx, 0); > - cft->seq_show = hugetlb_cgroup_read_numa_stat; > - > - /* NULL terminate the last cft */ > - cft = &h->cgroup_files_legacy[9]; > - memset(cft, 0, sizeof(*cft)); > - > - WARN_ON(cgroup_add_legacy_cftypes(&hugetlb_cgrp_subsys, > - h->cgroup_files_legacy)); > } > > -static void __init __hugetlb_cgroup_file_init(int idx) > +static void __init __hugetlb_cgroup_file_init(struct hstate *h) > { > - __hugetlb_cgroup_file_dfl_init(idx); > - __hugetlb_cgroup_file_legacy_init(idx); > + __hugetlb_cgroup_file_dfl_init(h); > + __hugetlb_cgroup_file_legacy_init(h); > } > > static void __init __hugetlb_cgroup_file_pre_init(void) > @@ -1011,13 +873,22 @@ static void __init __hugetlb_cgroup_file_pre_init(void) > BUG_ON(!legacy_files); > } > > +static void __init __hugetlb_cgroup_file_post_init(void) > +{ > + WARN_ON(cgroup_add_dfl_cftypes(&hugetlb_cgrp_subsys, > + dfl_files)); > + WARN_ON(cgroup_add_legacy_cftypes(&hugetlb_cgrp_subsys, > + legacy_files)); > +} > + > void __init hugetlb_cgroup_file_init(void) > { > struct hstate *h; > > __hugetlb_cgroup_file_pre_init(); > for_each_hstate(h) > - __hugetlb_cgroup_file_init(hstate_index(h)); > + __hugetlb_cgroup_file_init(h); > + __hugetlb_cgroup_file_post_init(); > } > > /* Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland