From patchwork Thu Feb 27 16:15:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brendan Jackman X-Patchwork-Id: 13994885 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 F13A6C19F32 for ; Thu, 27 Feb 2025 16:16:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6A32F6B0088; Thu, 27 Feb 2025 11:16:06 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6538D6B0089; Thu, 27 Feb 2025 11:16:06 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 51B0D6B008A; Thu, 27 Feb 2025 11:16:06 -0500 (EST) 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 327DD6B0088 for ; Thu, 27 Feb 2025 11:16:06 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 8CA1C14194B for ; Thu, 27 Feb 2025 16:16:05 +0000 (UTC) X-FDA: 83166226290.11.8672263 Received: from mail-wm1-f74.google.com (mail-wm1-f74.google.com [209.85.128.74]) by imf26.hostedemail.com (Postfix) with ESMTP id 11091140007 for ; Thu, 27 Feb 2025 16:15:59 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=imGZEEnp; spf=pass (imf26.hostedemail.com: domain of 3vo_AZwgKCCUKBDLNBOCHPPHMF.DPNMJOVY-NNLWBDL.PSH@flex--jackmanb.bounces.google.com designates 209.85.128.74 as permitted sender) smtp.mailfrom=3vo_AZwgKCCUKBDLNBOCHPPHMF.DPNMJOVY-NNLWBDL.PSH@flex--jackmanb.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740672960; 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:in-reply-to: references:dkim-signature; bh=MaiQolnIhzIdYGrP+r2nY0DLMqxJH+cxRavbC/YLHu4=; b=gMhybVRYnnKM+3nZEBMczjvB6cvYoJaJiauHxO6N+nYG2+rmQEXbwzY9ZC2fd74SqZwBpO BGq8ElJWJxaXqN0FKjjcNp41d2bs+KwGJTVDSDXnaRAadWl7YA5y1WmtzoO6tPH404+qui 9QBy79OFCgFMJMB0zj7hLSPsYHlHNjs= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=imGZEEnp; spf=pass (imf26.hostedemail.com: domain of 3vo_AZwgKCCUKBDLNBOCHPPHMF.DPNMJOVY-NNLWBDL.PSH@flex--jackmanb.bounces.google.com designates 209.85.128.74 as permitted sender) smtp.mailfrom=3vo_AZwgKCCUKBDLNBOCHPPHMF.DPNMJOVY-NNLWBDL.PSH@flex--jackmanb.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740672960; a=rsa-sha256; cv=none; b=Q05c5Cw8UZajlnkXWKV33NtMbjOlNiGI38iPrttAGpZs2Hgp5T1SwLP7s1VrwR64Yy2W8E 9ZJjp10gM/gKFYGxiLY2xov7THR/MxbIibHODBqKqWXGVxAw81mWFHtu5EGd4vBlKfsCeD siZTAK6X4nvf/RwRYW7lZZIvCRvNsVc= Received: by mail-wm1-f74.google.com with SMTP id 5b1f17b1804b1-43935e09897so8812285e9.1 for ; Thu, 27 Feb 2025 08:15:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1740672958; x=1741277758; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=MaiQolnIhzIdYGrP+r2nY0DLMqxJH+cxRavbC/YLHu4=; b=imGZEEnpsRVB3x3w0GIptScx+dtEsqQ7bRBl8zgPHP0CZhhM10FgJD++gQcBBenh28 uIX/jCXcyYgZKR2Lgq11k6Zi5147XAS10B7yPSHLy+XgahQB64Rwf/DRsMxyf2xheJg0 r1dH3PoZ7GrosY4G6r/I00TLXz+iX6i0cwOX2aVIN1PS2dcrsACE+8jvdRYNT8ERIq+Q PyLzf/rS5cW2N+KE8RdJyJUZUkCTqnGBkE2kX9zu2J5wlNrqlM7DwcAWB82nSWjzx6dz l4TESCSuZ2O2FRrR/H4Ibc1qpMeVEKUdsDSSMQifyd3mwX+wFoFMealQrR+7NnY3e0Wj KPSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740672958; x=1741277758; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=MaiQolnIhzIdYGrP+r2nY0DLMqxJH+cxRavbC/YLHu4=; b=Nv5RwCjz1prif5FJhDvoNn23QwQtq6E83IJ6OQp9Qp3wxYgtu99cfrGqbnI0mE/xVE BSBZYYo6aA24uJT82t927CJ74044Oq9bZJpauHNteVtkq1pjdj5X7fdGcFtiyLw+BwA/ 9ejnxRwTzNtTdsy5hiTpQwUu2Maeiv1ECFS2A1IphD+Lo68e7JqYTKbx9M/ix57BoXFF 7U+fEUM9A0NL+XOX1Gyh6Cb2nCxTU1WAEC+edb5KBQYAC366/+8boTmf1aT5c6NDizKu xW9lOXIZG8WYj07ZAnu2Egx3Ze9C0cVV8eiOhlYyPCb67N4GftjVUzwlg0dHLI9Xtov3 tqNQ== X-Forwarded-Encrypted: i=1; AJvYcCU54PZ4j7qNAsakI6KzsE4yTtarcSnf4U4i3ra4UBlR4NQ0BWfLbb8QLKilgORfLfkwWngKI1YU/g==@kvack.org X-Gm-Message-State: AOJu0YwJP/xeNhf52Ww3rdf0eCmWtXyd8BaedgQypS0EoqMSYzMUTU1v RHuQlbHQJAFcuCd/ZDcm4tV0CvKx6mi0qpSss30IYqvXaqJ+vpspVRkFX0bkuDlC44TXtKIB/2a SoBkRh3FdXg== X-Google-Smtp-Source: AGHT+IFfqfTnU98nxmYvYAv8ZtoyJ/ggUHxiokwzYXTkxVRD8aU17EmvAGe7M91QxKO1FwnnMg2UK0rzwFjxMA== X-Received: from wmbg21.prod.google.com ([2002:a05:600c:a415:b0:439:95b9:9200]) (user=jackmanb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:1d0e:b0:439:8e3d:fb58 with SMTP id 5b1f17b1804b1-43ab8fd8f1amr77195005e9.11.1740672958027; Thu, 27 Feb 2025 08:15:58 -0800 (PST) Date: Thu, 27 Feb 2025 16:15:47 +0000 Mime-Version: 1.0 X-B4-Tracking: v=1; b=H4sIALKPwGcC/x2MQQqAIBAAvxJ7TrCl0vpKdDDdbClKFCKI/p51G ZjDzA2JIlOCvrgh0smJjz1LVRZgF7N7EuyyA0psJKISwXiatsOu4oOjILoWta21UyQ15C5Emvn 6n8P4PC/SS7IaYwAAAA== X-Change-Id: 20250227-pageblock-lockdep-9628c48d7e08 X-Mailer: b4 0.15-dev Message-ID: <20250227-pageblock-lockdep-v1-1-3701efb331bb@google.com> Subject: [PATCH] mm/page_alloc: Add lockdep assertion for pageblock type change From: Brendan Jackman To: Andrew Morton , David Hildenbrand , Oscar Salvador Cc: Johannes Weiner , Vlastimil Babka , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Brendan Jackman X-Stat-Signature: q6p9x7hy8xs6ufbcuf11yzmhkci8pjnm X-Rspamd-Queue-Id: 11091140007 X-Rspamd-Server: rspam06 X-Rspam-User: X-HE-Tag: 1740672959-761452 X-HE-Meta: U2FsdGVkX1/HtRgAE8JgprYZu7cNx82ICQWafOBs1jHpLyfyu0kij5ZUcxpl07sasyYL8rmIng6g8WZwIdD74YDLfuz3BFhgws4S7RWt104Xjn3qy7cEWdrGuo9KfnVXJjCM2BFRewdjRkwUPDn5p4e2uhTh0iHkaa/x3ch2caimlHwFqQbQkih9svpR02xcFQrcIQ0TZ0Htpaug/L6uizpBYR6fOWlknSgxxxILXnOzBfSQ5kYaFed9Ty+iPa8fI3E05221lmYA5WGdPP6pTMvJe/JlEjybbG+rPsyC4NhJRPbFJ60EdmMxMgojo2bwc+ty4SdgdDN1Txtk4JD9Vo4cuukveK8UbTzcmg7yrpQgtWxIlJhzduIgL9hvqXuATyToduGeCx6+lSHIRZPtCdNbAgi0MHi1H4nOlxOSaFq7ZAClDN5atYmdHnHNiTGUec0uilUh7ijtmGprNJyRFbixNrZnCmnfo+EQAg37W7IJjfBb47nePo1s4YOusZwFoaEndrJUPebvSWm+ebCZ8+qJTwkTPWPjrq/6cfDeUYrQhUgWRXDkvPedA7ukG8Y40J9cxsJZYtXUarQ0mgIjjKyqsoh6ZfMxdIL5kiz6eijT7TmQNEiiusy5p6JgyXtLFiWkt6+et+pBKJiETz3zhyFyDD0da/yM7vTZxYJSJhaDerqtsdfRC77QoYREtF/ipoC2DojYDS6FxwzYlNTYLzqpeEaN/kZ6nzWedqwC8PqUOBLPXzHFt88UnVAdYlTXTacEEjI15jCboyMxcHvYPDOJLQfzDJSkFHPTjo4V0i59wEkw4AWEI+AvSQTufbQPhJusQSUjyXwT3LmruenF7ixWoF3Otx6gra/9lkXX788s3LGyu8AUw5Z2wQ+UQulRvK1AiBRR0SPPcpnd58E22Ghrxnv6AIjpjHMiq5ZYseRLKBzSk/JWxOd+viSJXoy2Qk4GOD2qv155IiG/9pl DPudBUut N4cRxm8BpQC7um1Grjrw12Pfs+nbXe282wdnk/mUj3z6jZMzvPTm4xCHMnHqA7OeG0V1YmcJP+hyQHZKv0GiyCYJRhrBQtdb9rAdN5mkK2O3PhHixN1Vjl+cNF14ViRPsqV/85inW5jHsJboqfyluTWpvCjNaa1m3+wSD94LehW2VXAx7uaEQ1Pxltmy2uF0aYot9mLQXCkzLbV7gfl7lFSJR47qBblsZ8zNk3CVnMOGEEhY6HTsgnbfdGtUAkfAJ1qgdwjZkII17DtiwQcFyLhVihDi8vBlvxzGmuA5X4SfJsLPDmhHEG1qR7nyIjDKENK+XB91zj/1Wm48Rj8z+7sU4h+nU7a9Sv8whizWikfmGdrVlBWzPf6Om2MLnu0gMrDH4NIND7SAciIXapzZb1FW/lKyGwvLChs1UaSqq9CU0YY7gkc5DqmcdTKZxuBuAVFbuRTKuh74WJgV1qndfItqoez+mfRNXIJGrbfbNpXnHPuJjSLJZyfJLjbo5c8C52lrqE/gQANqkbEmRx1yjAuf8+YUFkg4TpsF9UJP9bXgjnCX3VvcHNAfGEk5jjZPrRtKUlrwS3Q2ELqggZ9DSvvl9Aqc1qg0LzVwVqHGh+OQhVkrOgwkGCowL0TPjjWK4Iate6Npc55RZgD8ClzIjwoPPxCDoPFCc3/TzPsaQgP7VZ1+R8eG0f+S2XA== 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: Since the migratetype hygiene patches [0], the locking here is a bit more formalised, so write it down with an assert. [0] https://lore.kernel.org/lkml/20240320180429.678181-3-hannes@cmpxchg.org/T/ Signed-off-by: Brendan Jackman Acked-by: Vlastimil Babka --- include/linux/memory_hotplug.h | 1 + mm/memory_hotplug.c | 5 +++++ mm/page_alloc.c | 4 ++++ 3 files changed, 10 insertions(+) --- base-commit: d58172d128acbafa2295aa17cc96e28260da9a86 change-id: 20250227-pageblock-lockdep-9628c48d7e08 Best regards, diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h index eaac5ae8c05c8ee2f2868d5bc1b04d1f68235b3f..ff9511d9b9e6f775feeb4f897754878ac4c8cdb0 100644 --- a/include/linux/memory_hotplug.h +++ b/include/linux/memory_hotplug.h @@ -175,6 +175,7 @@ void put_online_mems(void); void mem_hotplug_begin(void); void mem_hotplug_done(void); +bool in_mem_hotplug(void); /* See kswapd_is_running() */ static inline void pgdat_kswapd_lock(pg_data_t *pgdat) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 16cf9e17077e359b98a69dc4bca48f4575b9a28c..2b9d1a6267c0872c433fafe8684dd4e2aa821f5f 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -267,6 +267,11 @@ void mem_hotplug_done(void) cpus_read_unlock(); } +bool in_mem_hotplug(void) +{ + return percpu_is_write_locked(&mem_hotplug_lock); +} + u64 max_mem_size = U64_MAX; /* add this memory to iomem resource */ diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 299c9f10bbcd2aa1d35ac6eb5131a2471da825d5..e0516d70835e20e54ff8e43f3aa884c7e36d929a 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -417,6 +417,10 @@ void set_pfnblock_flags_mask(struct page *page, unsigned long flags, void set_pageblock_migratetype(struct page *page, int migratetype) { + lockdep_assert_once(system_state == SYSTEM_BOOTING || + in_mem_hotplug() || + lockdep_is_held(&page_zone(page)->lock)); + if (unlikely(page_group_by_mobility_disabled && migratetype < MIGRATE_PCPTYPES)) migratetype = MIGRATE_UNMOVABLE;