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 017D0C27C53 for ; Wed, 5 Jun 2024 09:07:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 81CE96B0083; Wed, 5 Jun 2024 05:07:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7A5F76B0085; Wed, 5 Jun 2024 05:07:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 61E516B0089; Wed, 5 Jun 2024 05:07:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 41C5E6B0083 for ; Wed, 5 Jun 2024 05:07:12 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id E6523A03DA for ; Wed, 5 Jun 2024 09:07:11 +0000 (UTC) X-FDA: 82196255862.29.3CBFB6D Received: from mail-vs1-f46.google.com (mail-vs1-f46.google.com [209.85.217.46]) by imf21.hostedemail.com (Postfix) with ESMTP id 313921C0025 for ; Wed, 5 Jun 2024 09:07:10 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=f8AY2wSi; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf21.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.217.46 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717578430; 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=XDPYpEdNguVrOTbA9wDGrH7gHwuEPOPL6eF7OUK/zMY=; b=2N+Bo8b5mSwyeX7Z2ZYIuXY7J9BNq9dd6qrUpIQ4loc2/Vrxm9RfYaQvumoP7F5qMuQ41J AK5gZs853X4ebBcG3K79Z37qhfg+WrXoAk1Of2/OS5THA1Os1Z6AxhlHH88rJa7GTmMrDe EAz8DyFl2o+f8nSaXLl0EzN3N58w1gg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1717578430; a=rsa-sha256; cv=none; b=18tztIEYa75MwJWh+oWnaJQ92SXKYu/EumLmaXX8XaAognYnnfGzu9Rv+md4EU604VJZzh uv57ys49UQb1lgj/KxHNaLU5Ho6hTH8LIjq76MEuFuBFsvICwlMLcNLQFCESNvrzYtdRBS D/q0ypdAn1GSHx0YQtw/+wVkw1gCLTI= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=f8AY2wSi; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf21.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.217.46 as permitted sender) smtp.mailfrom=21cnbao@gmail.com Received: by mail-vs1-f46.google.com with SMTP id ada2fe7eead31-48bdcecf6efso1007328137.3 for ; Wed, 05 Jun 2024 02:07:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717578429; x=1718183229; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=XDPYpEdNguVrOTbA9wDGrH7gHwuEPOPL6eF7OUK/zMY=; b=f8AY2wSiPHTMBVi4MDrFFrbYjReN5wqnQzs4EQJnq5Jk8vRm/2bRFc0mD0875sAgJo LCwnz3Mu6ApYBtS7FYUHAC9w9NHTv79PVO01rirvXWvyuLUzkIyKhhAb8dphE9hPcfQI Q1siWpQfnMx1u9W+Q82b7aFQpYdYha1CzNFcvI1o2xn3fem7srOdyLVleQ9s0JFBfmJh v92eFzzxd9eoT/jW3+4ZAx9yXRkWOmt23lQAOVFNhCMFYZUXOVWBCepvXHosXA7wBzn7 Wi53LQqTB7l0S5fxQWV/nLCd+YrF2aOYh+qTcrL7akIzI36aR9O6tMgALq7sprE34f7Y ooEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717578429; x=1718183229; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XDPYpEdNguVrOTbA9wDGrH7gHwuEPOPL6eF7OUK/zMY=; b=SfqGWFnTLMIBKjurCfJZcelX6Qz/SZIKI+wMTKL/hZEls276FBzqchv8KCofFOqJkH vHyXsofRp4uud+VBLRI1GF46ugjIaJT2v9I9k1oYhbjB7fD26bnlDKwvBByRQARndu0o +zciXZhtgzfv5+IpW+9ctKC8V/jdMqjigkq73mdnkuOyY5ShpqtVhOuMOgm+sACK14Rf Ra/fVKXM+u+7fTcG4DvjMO9viSgGuH9R0a6eoUxr5xqPTpn+0bH340RxI0nCa8ABeMy/ nNMwhqZ7PtN1kvZ1WQYYSquofFyDWuIExV7LR1RcYlhzFGGCSm7PNA823vdr2SkXsi6X bQQA== X-Forwarded-Encrypted: i=1; AJvYcCVGd+fT3fK60mtH0Ronnw0VBxFVhDuhucrqemL+Qhalzg/BjMnWZDXswKAp/oM7EauFRRrrAgVIY7yZZLTgr0X41A8= X-Gm-Message-State: AOJu0YxHyW46RHUSFMN/P6qRApaZCVPs2qf/bi8kqBFFaIuMWAx2qRUw h9tkQIkhYd6Ir9ba96uG4D+a5P7dJD/2IYPAeuFbo48PaznnAooU24I1sS86GwMb75nG1XwIsXa DO0ZTgWols657ZrnJA4/JXeTYuG8= X-Google-Smtp-Source: AGHT+IE+LMSeo6vABeCvVWma4Tfcx9dAAW5DmbgpKCBYyKnzm9w8vFpOcrisjMpQoiCdLvLA/8KdEv+TCRxmUSL+NJ0= X-Received: by 2002:a05:6102:3a12:b0:485:9a12:ca5 with SMTP id ada2fe7eead31-48c0488debdmr2947926137.17.1717578429100; Wed, 05 Jun 2024 02:07:09 -0700 (PDT) MIME-Version: 1.0 References: <20240604134738264WKaKYb3q_YTE32hNAy2lz@zte.com.cn> In-Reply-To: <20240604134738264WKaKYb3q_YTE32hNAy2lz@zte.com.cn> From: Barry Song <21cnbao@gmail.com> Date: Wed, 5 Jun 2024 21:06:57 +1200 Message-ID: Subject: Re: [PATCH linux-next] mm: huge_memory: fix misused mapping_large_folio_support() for anon folios To: xu.xin16@zte.com.cn Cc: akpm@linux-foundation.org, ziy@nvidia.com, v-songbaohua@oppo.com, mhocko@kernel.org, david@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, yang.yang29@zte.com.cn Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: jtdrjupuitj1tkkjjx197eay97rtu35e X-Rspamd-Queue-Id: 313921C0025 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1717578430-420481 X-HE-Meta: U2FsdGVkX1+qrpA7OwV0/FEOYrQ0glXaLeSDeKj1EbKtRu8DRwgq1PWI9CxMrI7Qj9pvJyhUZjDAkLoUy45LeMOgtGYlucCRbYG27QFrPt0sOHZfN3NVBNBojjzsHRIgazJ9ZgxWPaVoVahAb4zKSU9DtmUNs6Rn/sgcae6SZJ/bv4SO16ztRzUGDuGF8rBRpR/TzCUNkDIB//u6T/vcORm3GNArMoKIXk54q2Pbyg/Pb2q3AjoK/lrWuN/N1m9bet1eokiJk/QK/iSD7izAgDJky+qI8Z1WiHw/OkZiNO3OC5d5DvsN6p4G7Z6gGp90H6oy1X1bPxkPrxRdHp8LToB4mTdJa46CWMWgQbJXXH8IuVwbudUmIJMRdUDwR5TrvyHyqUtjVdBca9bFlLt0aiTbOohGcTLU3U0Qrh5g6wcEBmuvXpEVecvgw5mMPaC2aqvNr/IfGimcca0Xjon2wVdgaGMMqhdII2+QRbf7vl1peePOuWQnWdafSiLC7wvUvu1gCm/gdn8/Encnaid7/1QS0SA6AoQ6MdzKnUFQwbHN1SZxAZdcpivIVT3aQECW2BnTTfOXuTN5mYQDkIuOBpUZj3e6vyI+mVx5GOYguKWaFBf3S0YjIr+v2b6OSjhRbeX1OOyCatnoZuORVCR3siq/dnEEyIhvnmmHCWxamMgyInBXuZSk7rFMvr98feqeueNmDeUvyDOjw0XCdT38e9cmuVzU16T7JmP0IgfL78kPRnJPQkMw50KfVWI2mZUyfcCU48sUHWbqAncos7F96k59gSMTNmmuu2qsCgyHShA32rRhqAQp8ckTYQ5Ps9Hxh0IrShJ+y7Od9cTftyVPG5a5kGmrdzVcZhJNDJpJPuUp+gIk40ycb09YzNZTeP/3bIfRYqs1/XBH02H72W9Dh/yO5Nx13hPhl0u45HEAGEXwITX+F/g0UZoYcw4cIMOdU5C5cm1+po5oMEJm0sN 96h1eeiX 7umWpcH2br78Il8U2H60hm8FiemKsSjHnIZKmJDSYeYIgLdwouGF1+08BPZcOgMPiIZHnIJPdZ2gyHAvYEzXYIG49sqnI7gpiGqb+n8EsMgQ4Jokzg9YIgDQLfklD01bDUrS6Kmj81KZZw1fik702P6tGUCCKvXijZbLj5lRq5kfklBLSUFccZOb6XT8cwLZihYUCJn5mTlptXzzbCum66+GiziieHvyeqmfjuZouip/QoiR2NmjFpcfj3YvABxAbGBlFz5ECC4/+K67YabSt5a/TErSPT7V3yT0DSXjmhWi7NecSnX8W+XziO/xpgB92GVgvyASeBPlyRpqPtkzEJzf1rISHRyh1q6gG2Vsoix8s75BIDTEYG4ZA4epRg6ADe+2nsGRH2pRNKJu8zRyPc0kvWUYx4UsNYBVdnkWqLkDQfhZzvW1VtJtvJkVfZ843E+ntSmhkCvaBSds= X-Bogosity: Ham, tests=bogofilter, spamicity=0.004983, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, Jun 4, 2024 at 5:47=E2=80=AFPM wrote: > > From: Ran Xiaokai > > When I did a large folios split test, a WARNING > "[ 5059.122759][ T166] Cannot split file folio to non-0 order" > was triggered. But my test cases are only for anonmous folios. > while mapping_large_folio_support() is only reasonable for page > cache folios. > > In split_huge_page_to_list_to_order(), the folio passed to > mapping_large_folio_support() maybe anonmous folio. The > folio_test_anon() check is missing. So the split of the anonmous THP > is failed. This is also the same for shmem_mapping(). We'd better add > a check for both. But the shmem_mapping() in __split_huge_page() is > not involved, as for anonmous folios, the end parameter is set to -1, so > (head[i].index >=3D end) is always false. shmem_mapping() is not called. > > Using /sys/kernel/debug/split_huge_pages to verify this, with this > patch, large anon THP is successfully split and the warning is ceased. > > Signed-off-by: Ran Xiaokai > Cc: xu xin > Cc: Yang Yang > --- > mm/huge_memory.c | 38 ++++++++++++++++++++------------------ > 1 file changed, 20 insertions(+), 18 deletions(-) > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index 317de2afd371..4c9c7e5ea20c 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -3009,31 +3009,33 @@ int split_huge_page_to_list_to_order(struct page = *page, struct list_head *list, > if (new_order >=3D folio_order(folio)) > return -EINVAL; > > - /* Cannot split anonymous THP to order-1 */ > - if (new_order =3D=3D 1 && folio_test_anon(folio)) { > - VM_WARN_ONCE(1, "Cannot split to order-1 folio"); > - return -EINVAL; > - } > - > if (new_order) { > /* Only swapping a whole PMD-mapped folio is supported */ > if (folio_test_swapcache(folio)) > return -EINVAL; > - /* Split shmem folio to non-zero order not supported */ > - if (shmem_mapping(folio->mapping)) { > - VM_WARN_ONCE(1, > - "Cannot split shmem folio to non-0 order"= ); > - return -EINVAL; > - } > - /* No split if the file system does not support large fol= io */ > - if (!mapping_large_folio_support(folio->mapping)) { > - VM_WARN_ONCE(1, > - "Cannot split file folio to non-0 order")= ; > - return -EINVAL; > + > + if (folio_test_anon(folio)) { > + /* Cannot split anonymous THP to order-1 */ > + if (new_order =3D=3D 1) { > + VM_WARN_ONCE(1, "Cannot split to order-1 = folio"); > + return -EINVAL; > + } > + } else { > + /* Split shmem folio to non-zero order not suppor= ted */ > + if (shmem_mapping(folio->mapping)) { > + VM_WARN_ONCE(1, > + "Cannot split shmem folio to non-= 0 order"); > + return -EINVAL; > + } > + /* No split if the file system does not support l= arge folio */ > + if (!mapping_large_folio_support(folio->mapping))= { > + VM_WARN_ONCE(1, > + "Cannot split file folio to non-0= order"); > + return -EINVAL; > + } Am I missing something? if file system doesn't support large folio, how could the large folio start to exist from the first place while its mapping points to a file which doesn't support large folio? > } > } > > - > is_hzp =3D is_huge_zero_folio(folio); > if (is_hzp) { > pr_warn_ratelimited("Called split_huge_page for huge zero= page\n"); > -- > 2.15.2 > Thanks Barry