From patchwork Tue Feb 25 00:08:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johannes Weiner X-Patchwork-Id: 13989137 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 77B11C021A4 for ; Tue, 25 Feb 2025 00:10:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8A171280008; Mon, 24 Feb 2025 19:10:38 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8303D280002; Mon, 24 Feb 2025 19:10:38 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 655B4280008; Mon, 24 Feb 2025 19:10:38 -0500 (EST) 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 44D59280002 for ; Mon, 24 Feb 2025 19:10:38 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id EC7D3160348 for ; Tue, 25 Feb 2025 00:10:37 +0000 (UTC) X-FDA: 83156535714.21.EC1ABC2 Received: from mail-qk1-f181.google.com (mail-qk1-f181.google.com [209.85.222.181]) by imf16.hostedemail.com (Postfix) with ESMTP id 0C0BB180002 for ; Tue, 25 Feb 2025 00:10:35 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=I5Jxnxy3; spf=pass (imf16.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.222.181 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (policy=none) header.from=cmpxchg.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740442236; 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=m4nVpOQMfdjSDVLItpR5dEn5Uy7LgPPGmplcVb1mIdw=; b=7GMVvPWI65u8/HizcYcPanyDKZ+zcY/YJ8B0eE16rBY66DwwFsjjnHJcb2LlJZxjyj7ue8 JQrcFSv19bYY1v6IXUOLVawIsDAGGuUWLre7Zob3ONXxkqyQCi9mTxi0jG/4TJFzdNccnI tQS6PhHXX1QesdJUOrNngqL1qA3PXmM= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=I5Jxnxy3; spf=pass (imf16.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.222.181 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (policy=none) header.from=cmpxchg.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740442236; a=rsa-sha256; cv=none; b=q9ernRsTpoJLKaazZK83JnB3P+X8M9vHW+sHb1RN1dFKiNYqjEfs1dc3nOKh+F2nExcY+L GxHx5KuzZCye5YNMPudTnzs7nqVSq9SuzVSHF8y7sJAM4yYEmbdc8ilRjCAxnhpBXoljar o08CtUHSDuG5pVsAzX/zHcPYGf3uZ8s= Received: by mail-qk1-f181.google.com with SMTP id af79cd13be357-7c0a5aa0f84so438015285a.1 for ; Mon, 24 Feb 2025 16:10:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20230601.gappssmtp.com; s=20230601; t=1740442235; x=1741047035; 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=m4nVpOQMfdjSDVLItpR5dEn5Uy7LgPPGmplcVb1mIdw=; b=I5Jxnxy3AHrKsE3fqH60O0xFpLUN4xPoPKICVk+o1em9TMov3WHQevI4cGk7v9VKU9 8QEUkoaILoz2+Cg2OdVGViTjoXkevf1iA4qWXnutwLfrvXaeIcB+Ml2nVpcd5CHjsk+a tYo8in9rnyxaO3mTlG7SJXJft50g8NvnrahuMtiORM45kWz34cJg44tCD6hl1evxlueQ yi3KQO/Pug6RYtB/v+j82sHTH0Wd4fG2uOFvKV4KHk/XWV57RHV1qnCjISWQ22lw9DDv FT+ODO2CT0aL2fu3pMaAA5ruv643a6P5tzQITMsAhrvBu8gxavHIwwROfyFJ7M851Q+a 2djw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740442235; x=1741047035; 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=m4nVpOQMfdjSDVLItpR5dEn5Uy7LgPPGmplcVb1mIdw=; b=Cmg5IFA1wlyFcfTVe3kbWufk4pzxtqyL1/NJTv800tuZBwqOia0+KcmU4GWmB0hZCd 6PYfLAWlGD70FGfC9k8RYjDftvzWKulxBzb04utLmBaxRslnG4O63eGvbB1mA72MdKYz g3gMNYaElej+Aq/rQrYA5cgG49McYFHti4tHdDNtUaFXEtJF2ZLPrhMmWrn42meutpEZ aQNHiQ10Fc2dtKaMsQiayw9k7FyP0OYAOtm49PmcfHFK2ykTbqed3ZR93C9GLlgxQcBH HNr14TP3BxNy0Ty7aqJ6zc8uElLOL01Kvm0f/GuXxc8e7SNNlgAR8BVcKurtnumE7kjH P1pA== X-Forwarded-Encrypted: i=1; AJvYcCXrmuI27Tnivjvzi57XD+VXpZoTNXVJfBc9p8PnqK7qsqAQSTJ7IsRe/Mxgcxk+RdJausrVLZ/iDQ==@kvack.org X-Gm-Message-State: AOJu0YxF2bdqDAe2+r29AHq+pV0RmScqYn15o//VaItJEwoRiw2iVxle THamPFtCbbEH0kZb+/z8v8dLgoN4YazzWWYimiNHjZlRv1QtuCJ44jMxubc0Q0M= X-Gm-Gg: ASbGncvJU6S3qqxqvCNnULuBXs2SCcFek77QpTbGh9qLB3Q4w3YFeanKP0EKhuTgJHG NA6AIb68PH7lwaEZ3urGPz8eQoYed80hniqmxykgQkLep8BeX8d8E+akCtjebucOOdDyeYtJFNz i4OWvU9Q8qvruMUsjNAYvYcIiahX0UkGRNW6jeQh0a7ET7lDtb/+EORBLPmhDhCOJLw1NU9Q+zE ASPj2333wmZOGPcwjpDMfvv2Z2cIW/gIXgASWONEsJi0zvrGFHw3b6oAEgbkBs5yZsAb3Z6fHFn y2qDRCp4pPWEHhPYULeu88Hu X-Google-Smtp-Source: AGHT+IGoJS6Omh/ikKjODCsa7sYHe0e2NcEJ5qqBqC2I0BPARGB9vb4PzMba6XBAw4fGsuwISK59Ag== X-Received: by 2002:a05:620a:4621:b0:7be:73f6:9e86 with SMTP id af79cd13be357-7c0c227c72dmr2463429485a.20.1740442235091; Mon, 24 Feb 2025 16:10:35 -0800 (PST) Received: from localhost ([2603:7000:c01:2716:da5e:d3ff:fee7:26e7]) by smtp.gmail.com with UTF8SMTPSA id 6a1803df08f44-6e87b06dd05sm3185086d6.8.2025.02.24.16.10.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Feb 2025 16:10:34 -0800 (PST) From: Johannes Weiner To: Andrew Morton Cc: Vlastimil Babka , Brendan Jackman , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/3] mm: page_alloc: remove remnants of unlocked migratetype updates Date: Mon, 24 Feb 2025 19:08:25 -0500 Message-ID: <20250225001023.1494422-3-hannes@cmpxchg.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225001023.1494422-1-hannes@cmpxchg.org> References: <20250225001023.1494422-1-hannes@cmpxchg.org> MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: r5aszfdubjguf4kfr35y46diuyphe8w3 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 0C0BB180002 X-HE-Tag: 1740442235-314924 X-HE-Meta: U2FsdGVkX19rEUaIa28/NpgYJVJkPVsrVBHf5+hEShCbXwuRgARwg42csqWI9korIa02p21BXNuO+QCsJYN4XB0VWY7hEc732rRYqcoOTTEOe6D+6WZTrk70r199baWt46N7W1PWznCEd4TbnCKTBnfsilX4Y/fYnL/MAPYcNi1l3WWRNHYLnnxNqmhjLpby38qfxhLUHbun+QqtXjmG2/2YNlhrLVXssVuTnPm9oL54kOU4+EaWRqrdACfy7Qqga9Oe1WoJV13747h8dwNhPI89aVzODxCbTX7LMCbCvHE7g07NO7yhEMUnxeBQNLdFP2LLYrBM1sYEBISoerCubsXsxmHF4LqJMRATJSWAMmq/8LN0wmqvB7UWSkKN2YXTX0W+PVN96rrdYcroBfDrkVgMJsBMf+i5uy9TYCtkqdcm5+scENxaJmvKJwGkUU/UC9jaHfW3tHg0bTCC8c/Bk4aIiMLV7JQwQEFj/itRQiS/7Tu0v+daCzwlsVucxqMBXWBZbK+3/x7FBRNbuJRLDuLGu27Au93w+KixU4i4yBpxk3gi6beT2uogVcezAJ4Q5Yj7xBb094l+fRFqjrmNbre31noy82oie6H/WSKEk//xNmGuB/L8uEY2fMiAAuzxecxK4HnrFe0YfjyzQ1teZE2q/TQ79SlXDQDlZfvZF36vmlv0/HLMZqx2xSWM/YeqJUse30is5N67Z+i2TIXkQj4cjKZZt6YruN6wVDh4T7ITlaYpUWVVtV9tzoTZxTi0fEr+LYL28GfmJlRXOpyPoPDQCqvGBTCGnwqp7ccyEgw+Br345tyiWj+iOjZj3zFyLqEVuQPwXCCR9Bnxfg0KriOzAiIVD6G3tcXUGtioG26lRDiEAzmOwkFFOriifD7Lpj6f6vGttVVZBbsbunAvKl4doEFYT7s7eG437vaVRQeQs63shgG91oOFlsGcTfBE1FCn1mg+VmoP20jG7iI /Gm0kM4S vbTZNY+uxCkEQK6Fxo9wudStHzmyGMen3AE/vYhrGXRLnX+jAgW8G+NHLnyhtvvZ5dq/l8hFvIaM7T32BJrg2h+Em5W1zCbUoFQUtJv/KIlNONnThXdS2PGk9/1J5zYdsXrQkiZ96eyZAE+D19eXxyAYP1bVh+cOrd85E2Xqj3UYMaqCcSRG0G5wJheSKIGWiBVMvD7uK6z3Op4080xPPRwq0B77HjAviCvGUvbdeJbDnO2Y6dTQ+Ts/4AoZh8ueHm+Ryb9WZY0nK8OH//QVCEJwM2b+gShnDrsNjnkOcxtBztAzAPgcYtX0SmnqR263P7147bwGWE6GY64VLdTN8nMfbdnXA/EM93PkS7k9QXCqdaJZ7+EpOnNsu0FtYf10EG5bkbwH4UNCQIpHk6IEDbgDjg1XcnuZ3Hnr2ieItGnaN6ljbNgKQWa7JxSyO+l5w0d20p2YCgGruH0qAhraSSeAtQ7EME+2qdScSKceLJAjGhso= 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: The freelist hygiene patches made migratetype accesses fully protected under the zone->lock. Remove remnants of handling the race conditions that existed before from the MIGRATE_HIGHATOMIC code. Signed-off-by: Johannes Weiner --- mm/page_alloc.c | 50 ++++++++++++++++--------------------------------- 1 file changed, 16 insertions(+), 34 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 9ea14ec52449..53d315aa69c4 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1991,20 +1991,10 @@ static inline bool boost_watermark(struct zone *zone) static struct page * try_to_steal_block(struct zone *zone, struct page *page, int current_order, int order, int start_type, - unsigned int alloc_flags) + int block_type, unsigned int alloc_flags) { int free_pages, movable_pages, alike_pages; unsigned long start_pfn; - int block_type; - - block_type = get_pageblock_migratetype(page); - - /* - * This can happen due to races and we want to prevent broken - * highatomic accounting. - */ - if (is_migrate_highatomic(block_type)) - return NULL; /* Take ownership for orders >= pageblock_order */ if (current_order >= pageblock_order) { @@ -2179,33 +2169,22 @@ static bool unreserve_highatomic_pageblock(const struct alloc_context *ac, spin_lock_irqsave(&zone->lock, flags); for (order = 0; order < NR_PAGE_ORDERS; order++) { struct free_area *area = &(zone->free_area[order]); - int mt; + unsigned long size; page = get_page_from_free_area(area, MIGRATE_HIGHATOMIC); if (!page) continue; - mt = get_pageblock_migratetype(page); /* - * In page freeing path, migratetype change is racy so - * we can counter several free pages in a pageblock - * in this loop although we changed the pageblock type - * from highatomic to ac->migratetype. So we should - * adjust the count once. + * It should never happen but changes to + * locking could inadvertently allow a per-cpu + * drain to add pages to MIGRATE_HIGHATOMIC + * while unreserving so be safe and watch for + * underflows. */ - if (is_migrate_highatomic(mt)) { - unsigned long size; - /* - * It should never happen but changes to - * locking could inadvertently allow a per-cpu - * drain to add pages to MIGRATE_HIGHATOMIC - * while unreserving so be safe and watch for - * underflows. - */ - size = max(pageblock_nr_pages, 1UL << order); - size = min(size, zone->nr_reserved_highatomic); - zone->nr_reserved_highatomic -= size; - } + size = max(pageblock_nr_pages, 1UL << order); + size = min(size, zone->nr_reserved_highatomic); + zone->nr_reserved_highatomic -= size; /* * Convert to ac->migratetype and avoid the normal @@ -2217,10 +2196,12 @@ static bool unreserve_highatomic_pageblock(const struct alloc_context *ac, * may increase. */ if (order < pageblock_order) - ret = move_freepages_block(zone, page, mt, + ret = move_freepages_block(zone, page, + MIGRATE_HIGHATOMIC, ac->migratetype); else { - move_to_free_list(page, zone, order, mt, + move_to_free_list(page, zone, order, + MIGRATE_HIGHATOMIC, ac->migratetype); change_pageblock_range(page, order, ac->migratetype); @@ -2294,7 +2275,8 @@ __rmqueue_fallback(struct zone *zone, int order, int start_migratetype, page = get_page_from_free_area(area, fallback_mt); page = try_to_steal_block(zone, page, current_order, order, - start_migratetype, alloc_flags); + start_migratetype, fallback_mt, + alloc_flags); if (page) goto got_one; }