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 D1769C83F3E for ; Tue, 5 Sep 2023 09:23:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0A06A940009; Tue, 5 Sep 2023 05:23:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 04F648E001A; Tue, 5 Sep 2023 05:23:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E5A50940009; Tue, 5 Sep 2023 05:23:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id D3CA38E001A for ; Tue, 5 Sep 2023 05:23:15 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 9ED3D40B9F for ; Tue, 5 Sep 2023 09:23:15 +0000 (UTC) X-FDA: 81202005150.02.85B3DB5 Received: from mailgw02.mediatek.com (mailgw02.mediatek.com [216.200.240.185]) by imf21.hostedemail.com (Postfix) with ESMTP id 622891C0004 for ; Tue, 5 Sep 2023 09:23:12 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=mediatek.com header.s=dk header.b="mMW6Ef/Z"; spf=pass (imf21.hostedemail.com: domain of lecopzer.chen@mediatek.com designates 216.200.240.185 as permitted sender) smtp.mailfrom=lecopzer.chen@mediatek.com; dmarc=pass (policy=quarantine) header.from=mediatek.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1693905793; a=rsa-sha256; cv=none; b=nUEy7e9p6nXkLmxoeyZcp1esYwtptJnq5HzQV/K0Btm9FItpSnX4FfqGzzm0V1k0BW5FHY XujXUlu8Eaxi8NxI8WUSAWdRW4kE0cd6uNBb8h/YXP898C3cDRA75jX2ya4utcIBTTOM3l w7bmHqRrSlDfvsQX69JwZiD4CvfiIqk= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=mediatek.com header.s=dk header.b="mMW6Ef/Z"; spf=pass (imf21.hostedemail.com: domain of lecopzer.chen@mediatek.com designates 216.200.240.185 as permitted sender) smtp.mailfrom=lecopzer.chen@mediatek.com; dmarc=pass (policy=quarantine) header.from=mediatek.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1693905793; 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:in-reply-to:references:references:dkim-signature; bh=FkwHJ0Fq/ICSSUGGzXWyo4WE1Zcc8h+AuqS/BMVuwzY=; b=l1EhxQ6mdXN3xhbabm2VMkoaZWlyVwSq3HdAA8/Qw/N/xQXZEbZLoZHrVWp1xmrGUFvWfh YPa4yHyLXEl/+WANLF71gzirMZWlcN/NyDJUFJAwqTjeqdSSe6a5rM4QRVzRXmH/95b952 q3eJHYFgMvfD8QNDin378acYuqLBBBE= X-UUID: d1b54be24bcd11ee86758d4a7c00f3a0-20230905 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=FkwHJ0Fq/ICSSUGGzXWyo4WE1Zcc8h+AuqS/BMVuwzY=; b=mMW6Ef/Z/DiQ2kFLsvoJ/FwtRg/sg1qEaRF64bwfObOxGkCOleC2RSZHTHmClu2ffxgD6tHBB21WMhSppYGpdMFkYpsY8ZGNdNwyJFWmAk50yjh7dhl0VVzx/ncTOmDcTn2s5q9lGf5Vv+6rBQRD13uVAZGMkRFEcJTwWI/HzTE=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.31,REQID:d34fcfb4-1b7d-450c-8ad0-49f7295f1582,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:0 X-CID-META: VersionHash:0ad78a4,CLOUDID:68afa9c2-1e57-4345-9d31-31ad9818b39f,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:102,TC:nil,Content:0,EDM:-3,IP:nil,U RL:0,File:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO, DKR:0,DKP:0,BRR:0,BRE:0 X-CID-BVR: 0 X-CID-BAS: 0,_,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-UUID: d1b54be24bcd11ee86758d4a7c00f3a0-20230905 Received: from mtkmbs11n1.mediatek.inc [(172.21.101.185)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 75807179; Tue, 05 Sep 2023 02:23:05 -0700 Received: from mtkmbs13n1.mediatek.inc (172.21.101.193) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Tue, 5 Sep 2023 17:22:40 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkmbs13n1.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Tue, 5 Sep 2023 17:22:40 +0800 From: Lecopzer Chen To: CC: , , , , , , , , Subject: Re: [PATCH] mm: page_alloc: fix cma pageblock was stolen in rmqueue fallback Date: Tue, 5 Sep 2023 17:22:40 +0800 Message-ID: <20230905092240.19132-1-lecopzer.chen@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20230905090922.zy7srh33rg5c3zao@techsingularity.net> References: <20230905090922.zy7srh33rg5c3zao@techsingularity.net> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 622891C0004 X-Stat-Signature: nibbu69c145iwo99didfwkynia3kgrer X-Rspam-User: X-HE-Tag: 1693905792-864197 X-HE-Meta: U2FsdGVkX1/n9zZLnLkzkn1ZW8po4JIhY4NuJCywXrnpovcT0oQTErfzVJ29dMxzfRzbiiBW3KiHrIg8QLT7/cJoUG+edobtR7yacF618Fp6lO80jJalksVuG+NhCVt34ybUV54OftbxPodGqCWQqUM0A+wCJ5t1mewbscFKPoRGuhdSln4SKQvnsTks8E57v5UTPzyPjYkgFbQXegQ6J5cA8xArV6qnOoUdSyAn0C0Jwyx/sVlQTs28I7PvMnYeIBNIdCwX7yzMizndqE+s/aBVgweeldxhRru6xJnKA/6S8WKvGyOQ7Hu1lbUYOXPT8IXFI0m9Mho6lkOwyP57/Vc+xoAdOYTMpReu4/AsfiaFhAYEPbOpMcsxU+mPO6whZt/R+g3z8Pnur7NGpUBNmm6Gj1WMssoGNG3xH9Tl+tFMlnouEVJpjN6nqqMbtb4ljIxpp3l31qpNmpSHbPXmbNpHIDX3wfCeMhnFi23rGjnDaP7MTTUxa3SpaXiIei2o6+9P1Qs9oWKfXoONjl3kLvWhClJyCIx/clmHByHYP0ZBl7ieEdujizxHR7svkkpsTfOmF0e0KhIdxw7lT/hkaOjiEDwT7KgUxFFRtqnHKmowIfo9/1l80EtJM00cE9qxRi4RcPSCnQF+hNuZhEDB4kwaReXjdzNG7+K5qv9JBOxplF7KUrHYTRsTBsawqW4lcRa6JLlvDYy1CyHMPB69j137gjoZ7bbSW0kzH5SAX8NAqeoCF2Hn3rJVsLoZUnksBf2x4hBN9MfS2Cfdq6OKCsGX9Gya/c747T+1W8fsNr3iLAuMhZ2432q4+s9YkTrNlp0arAC9qtY70wNgncXMXSyNRsSEAmgLkQDwNDfee/UZxrGqV4ceKzIzrE1jtWC3RbvXbpnPYdsdNOCes8qHfOHtZgQp3k3K3U0YCO+PuxkL4P8xiaBtPAb4IdIlhRsbnY+YLs64Jji+Aezmkn8 q8IomBu7 +e1GOblS3d5Yopa49/snEDIuCKfQ16omM0IemgP+O8HiOWqKscfrLKVQ+yNPw0rs0A69EhdtINm0owmvY66bgFS18eI19E4Uazm3FdcjQGrWOgFdSXhyXsvl+JMbiPy45707z2sTLyMAQc9z4G8jp1ZJm15oBb9O9JIfbkg2E0zEAnII4GgUWkbncA+dw9Vu6sYdUDz/y5s3kNjN++7J6enUYaplSOR/rWojSg+PRGIkQbTeZQ5OYswHbi+ObZW5YIn8gp985W3OAD417xJ6KWLLOWw== 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: Hi Mel, Of course, because we only test for CMA and only make sure that CMA part is wrong. You patch is definitly better. Please go ahead with your patch, thank you. > On Wed, Aug 30, 2023 at 07:13:33PM +0800, Lecopzer Chen wrote: > > commit 4b23a68f9536 ("mm/page_alloc: protect PCP lists with a > > spinlock") fallback freeing page to free_one_page() if pcp trylock > > failed. This make MIGRATE_CMA be able to fallback and be stolen > > whole pageblock by MIGRATE_UNMOVABLE in the page allocation. > > > > PCP free is fine because free_pcppages_bulk() will always get > > migratetype again before freeing the page, thus this only happen when > > someone tried to put CMA page in to other MIGRATE_TYPE's freelist. > > > > Fixes: 4b23a68f9536 ("mm/page_alloc: protect PCP lists with a spinlock") > > Reported-by: Joe Liu > > Signed-off-by: Lecopzer Chen > > Cc: Mark-pk Tsai > > Cc: Joe Liu > > Sorry for the long delay and thanks Lecopzer for the patch. > > This changelog is difficult to parse but the fix may also me too specific > and could be more robust against types other than CMA. It is true that > a failed PCP acquire may return a !is_migrate_isolate page to the wrong > list but it's more straight-forward to unconditionally lookup the PCP > migratetype of the spinlock is not acquired. > > How about this? It unconditionally looks up the PCP migratetype after > spinlock contention. It's build tested only > > --8<-- > mm: page_alloc: Free pages to correct buddy list after PCP lock contention > > Commit 4b23a68f9536 ("mm/page_alloc: protect PCP lists with a spinlock") > returns pages to the buddy list on PCP lock contention. However, for > migratetypes that are not MIGRATE_PCPTYPES, the migratetype may have > been clobbered already for pages that are not being isolated. In > practice, this means that CMA pages may be returned to the wrong > buddy list. While this might be harmless in some cases as it is > MIGRATE_MOVABLE, the pageblock could be reassigned in rmqueue_fallback > and prevent a future CMA allocation. Lookup the PCP migratetype > against unconditionally if the PCP lock is contended. > > [lecopzer.chen@mediatek.com: CMA-specific fix] > Fixes: 4b23a68f9536 ("mm/page_alloc: protect PCP lists with a spinlock") > Reported-by: Joe Liu > Signed-off-by: Mel Gorman > --- > mm/page_alloc.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 452459836b71..4053c377fee8 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -2428,7 +2428,13 @@ void free_unref_page(struct page *page, unsigned int order) > free_unref_page_commit(zone, pcp, page, migratetype, order); > pcp_spin_unlock(pcp); > } else { > - free_one_page(zone, page, pfn, order, migratetype, FPI_NONE); > + /* > + * The page migratetype may have been clobbered for types > + * (type >= MIGRATE_PCPTYPES && !is_migrate_isolate) so > + * must be rechecked. > + */ > + free_one_page(zone, page, pfn, order, > + get_pcppage_migratetype(page), FPI_NONE); > } > pcp_trylock_finish(UP_flags); > }