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 0E972C71153 for ; Mon, 11 Sep 2023 19:50:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id ECA196B02E0; Mon, 11 Sep 2023 15:50:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E792D6B02E1; Mon, 11 Sep 2023 15:50:39 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D1A9B6B02E2; Mon, 11 Sep 2023 15:50:39 -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 BBD766B02E0 for ; Mon, 11 Sep 2023 15:50:39 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 8EA74C0B3E for ; Mon, 11 Sep 2023 19:50:39 +0000 (UTC) X-FDA: 81225358998.11.683DD1D Received: from mail-qt1-f171.google.com (mail-qt1-f171.google.com [209.85.160.171]) by imf29.hostedemail.com (Postfix) with ESMTP id C4A39120002 for ; Mon, 11 Sep 2023 19:50:37 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=Ucg9oN8B; spf=pass (imf29.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.160.171 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=1694461837; 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=XbiqGXh0AoO6pfd7jMLvMSWe/voOxpwIaHwDz3nXxMQ=; b=ZIRlCadxpgpUZglU9arJxCGHcHmdGuzjWDGMJxEd10pv2pY3WmRw5UPOnUVqUd72tZtY+d Uvxt8XzlFt57xl9yOQg0fySiQEzyhAs3ZKQasleshKSJ7QxDgSU1/m1f/f3Nb/i1S0lOZh ZqGZPomVdXoboYRZRxrvOYFTg4Glirc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694461837; a=rsa-sha256; cv=none; b=POe6LItJjcqh0UoUtRC97soWc9TA+aveWfkka4+0jCYJdllmmFG2dgjtsFW/eL3/Sc3mbi LEtMTEDJQ9ISQ8sAjC0yvHzMwZ+wVw9+8/IBbhWdUwQQF0/w6UO2W/ZWsabwtRMweoOleP jLCzOMQDiGQu57vtbCAEXiAcVzcDBd8= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=Ucg9oN8B; spf=pass (imf29.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.160.171 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (policy=none) header.from=cmpxchg.org Received: by mail-qt1-f171.google.com with SMTP id d75a77b69052e-4121f006c30so30841941cf.2 for ; Mon, 11 Sep 2023 12:50:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20230601.gappssmtp.com; s=20230601; t=1694461837; x=1695066637; 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=XbiqGXh0AoO6pfd7jMLvMSWe/voOxpwIaHwDz3nXxMQ=; b=Ucg9oN8BsXJhpsSFsEjCJ2EajFDQIQYwyXxVSkvoqNtUzrKL8A0sapJtwih75imbTj AjOZjW4uuLrJlIx5r4bTyZdXs0i48rHSqlhp+GfUhrOEwaKUEqkeJH64jfGHsRPlEiU7 Q0WKn45V+CEeb+Ue0H2mf2Y830uyV771qR0K7mRRItKjhrVv5DUkBcB+85JiEUWJYe+h sWPkoCJT9MPNTr42ByNtNYsDqT180G9tvo4XY+NYeOBzM2AldOLBrvhSlNAd8YFa8uiH bVmrgQxFyKLIpQRPygQBqj+AMEvZ3WR5NUbVxj0/VTFtUd6YrFnan627qzOlYrU8SUA5 N6eQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694461837; x=1695066637; 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=XbiqGXh0AoO6pfd7jMLvMSWe/voOxpwIaHwDz3nXxMQ=; b=X6iNv/FBlqZqmOL3UJFL3H8LCLHMRsonu0uo/21nwLUTj1hqKaMOYfvrfG1ltBZs9p zBiACq1FDWg41sz51lIiOgaoW0NPGZdPkdedZaof/L5iTGgN0S5n75/nAjFP+qAZqXQm WCBV9LHV0SrS8fdS9/T0qrErTXXBSzKuzfNBxyLf9SGw7EKRxFBIvU7FS+UQxd+BW7Yu e/LV6Kwlz3ERRhPeQVEPKK0rx5b6MMvRIWb87pimvc3hEjnYS6izsge2iU6lXA84WMNP 1nWGbwwUBiLxpyYZPhm98+pESfT9hU0ESWk32rbLNYPJl9XvZRUB3G6sf0Nnx5SLb+71 eUJg== X-Gm-Message-State: AOJu0YyqxvZFUfs1fdKRKq5oCqjQ5vNNjpj9v7XoiOJ1uv9jMcsbLrBn LBS4jTwk0aIUi54U93rb3pkvCA== X-Google-Smtp-Source: AGHT+IGUAHLS2HPzXYDw7iJOOB1AIzY0p9GHTHFFHLSgWhRs7EOMIgK8ZOejhK0Em8gshplLrGFwBA== X-Received: by 2002:ac8:5986:0:b0:40d:4c6:bcdb with SMTP id e6-20020ac85986000000b0040d04c6bcdbmr13002837qte.5.1694461836984; Mon, 11 Sep 2023 12:50:36 -0700 (PDT) Received: from localhost (2603-7000-0c01-2716-3012-16a2-6bc2-2937.res6.spectrum.com. [2603:7000:c01:2716:3012:16a2:6bc2:2937]) by smtp.gmail.com with ESMTPSA id z17-20020ac84551000000b004108f6788a6sm2825736qtn.41.2023.09.11.12.50.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Sep 2023 12:50:36 -0700 (PDT) From: Johannes Weiner To: Andrew Morton Cc: Vlastimil Babka , Mel Gorman , Miaohe Lin , Kefeng Wang , Zi Yan , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/6] mm: page_alloc: fix move_freepages_block() range error Date: Mon, 11 Sep 2023 15:41:45 -0400 Message-ID: <20230911195023.247694-5-hannes@cmpxchg.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20230911195023.247694-1-hannes@cmpxchg.org> References: <20230911195023.247694-1-hannes@cmpxchg.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: kqkg1m3xoq5h878fna35oxty5gwtra8y X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: C4A39120002 X-Rspam-User: X-HE-Tag: 1694461837-214884 X-HE-Meta: U2FsdGVkX18MEn9mmKTElYeHQzjhnABPRPlw3R6XGZ5OUjuzRbqPsmAW4FddcOqvkSN75A80CcyYepp2NCT2zqHPlkE6iDEX/uzrgzMoxkcgohasd3EWTThcTvZX5XGczzZQtew39iBGzeX4wW03rspXLxfFHCrDxHhT74yXpn31lY1K8Qp9O6h27gqNNrqUdccw+vTrXLmvfVKy9rIXPHlG1Cp0Krhmqs5V3Htni4tDVo5D2+8nvxlq/2ndskupzfhi8/nYtQ+tGJTRTkT1Ak9P1mqmdKDE3p4e8Xd3TpQjjEGn0pCn1te9Oku5KrIkJqSCfZ0QxC51h7SftmZHlcCsa60sbpxQE7sqArhWOzJVUiuIDRsd12e+jBigqv3tWRIV5b6OiCLYJC/afNV3P8SJXh1B+EPpkdoXV2BDPI3A2iXFsdA7rgrjos8VYAC+faVYMhbb/LfyFhnzhMcdQohQCSvba6NkH5mtDTbcsQ7t7vobys3t6TDD8phVbfOD+QU0dTqGVheYTeShC21U4NtDqYtQPLTs/V33ryrwpIqmchBNDCOd6Bi6RaT/zBlkI27/EmYziIXoHT9sNHtkp+fFktYLAL6yOwMu9hSf6Ia18NblKMldc+J4DOJ/TVIEFCA0Wp4Qd8TJBOD4lBRs6AFsG2niAtjpm0062PFwVPJeO597duCIAfirTDWZGw+I/VFyLFbd8oGWS6biE9zERjDZqQssLkxw6VKGNL4K8b+S3cLbIFLsndjj0E3RUtGRrgE4HxAALdNTF4wpbFMHJ2HYk80BNOQpyy9bBA+Z9cCwP+nZep/WbbX1GSXLi9SYIABUZYXO9xWoVc4GeR2p6gURt70F/r4dJmm5wFi7A8W2NFZqpSkA7/dJxscocRwgKRTI5tExlivOrPFwM75VTbW/lXt3eqCAY7LZhmrri4H5buNhLss+7oubq12iJrxqDW6dUJXPEGF1uyJaIth Vk/Pmrtv xTDiQ49t8KNp98SjBsE9Bnvw8l8P09uCPwFiYBZAaPOzPyk4KFKqMQ231opCOIDJaHydGlpXathiBAo54fcMDxc9paUfhxTKRsDwBGsGqDG0TnTER+trID4LX/gcLRXVgY/Pu6qG4I3AnxJjZM5iUyoO4Kgb75dY98PX552aDJE60MUx9p9XaWA2x0mnV7qariP7QGg46pDP4CZ4XOHjUzVKXGizDB62DsCbJMqJqFp6QAliQ6BwjFaJJraHVMUBPOQWCtngUvuxUaniDvCkXbaewiA0UQshVV4winv/sSxaL8cfjnBfuQdAXGE5SOhElHRKtOYDA/JV+bWDUaga0BUrcN+dXRr4ai+CXfbGacsHKoIajPCw1OkwZHps3AY5UDq6ltLfFM2oHVPRMQCAA3Ts6KuicqmJtLKajXoBdS8en+CHiUPVKxuCET+FREOGSdGozq+mKGK0EqjUE8iJ4DH3pFtKWOpJKEZ0n9IytFOYfO8s= 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: When a block is partially outside the zone of the cursor page, the function cuts the range to the pivot page instead of the zone start. This can leave large parts of the block behind, which encourages incompatible page mixing down the line (ask for one type, get another), and thus long-term fragmentation. This triggers reliably on the first block in the DMA zone, whose start_pfn is 1. The block is stolen, but everything before the pivot page (which was often hundreds of pages) is left on the old list. Signed-off-by: Johannes Weiner --- mm/page_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index f6f658c3d394..5bbe5f3be5ad 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1652,7 +1652,7 @@ int move_freepages_block(struct zone *zone, struct page *page, /* Do not cross zone boundaries */ if (!zone_spans_pfn(zone, start_pfn)) - start_pfn = pfn; + start_pfn = zone->zone_start_pfn; if (!zone_spans_pfn(zone, end_pfn)) return 0; -- 2.42.0