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 60614C2D0CD for ; Mon, 19 May 2025 11:57:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1227B6B00C4; Mon, 19 May 2025 07:57:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0A9AA6B00D1; Mon, 19 May 2025 07:57:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E66E26B00D2; Mon, 19 May 2025 07:57:17 -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 BF7F66B00C4 for ; Mon, 19 May 2025 07:57:17 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 4214C12020D for ; Mon, 19 May 2025 11:57:20 +0000 (UTC) X-FDA: 83459507040.24.0FD4403 Received: from mail-ua1-f44.google.com (mail-ua1-f44.google.com [209.85.222.44]) by imf03.hostedemail.com (Postfix) with ESMTP id 59AAB20010 for ; Mon, 19 May 2025 11:57:18 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=WX8JiEJY; spf=pass (imf03.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.44 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747655838; 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=iL8SSoPTf+h+2fWHyjND1bGGDDWafnZ04LXRcbQOsBY=; b=Gkwhash9JItd/QPr2vxeyveypxMwUTw1qJAGqjGDypcdfIolytXI6nuLcDYwWtzu6+WxtF MPr69/+G1hxR6vQPAs4vAzzL42UEx76uznVKQJ5FpW0NmvfNCccsFk35O+2lTmfNTfAvDs gjEBI3+PefnxjIH92Dg9ArLFBxj0+bg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747655838; a=rsa-sha256; cv=none; b=T/JsXPOs5F4SRBHl0WkVFN2PDUXVO1nP2zlP23aPRGIEftFXn9MNkwneXwNBM7h69bPRDt XIN2iTIyWu8y41OisKRz5KwvzVSwtU06SZzfX3IB3ZDt5l62MlUrBMAWWeNg7O3iCvvrYe 0WMY43BstUKb1RH5/XbE/1Y1Hvi/RFE= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=WX8JiEJY; spf=pass (imf03.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.44 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-ua1-f44.google.com with SMTP id a1e0cc1a2514c-87c03d93848so360957241.2 for ; Mon, 19 May 2025 04:57:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747655837; x=1748260637; 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=iL8SSoPTf+h+2fWHyjND1bGGDDWafnZ04LXRcbQOsBY=; b=WX8JiEJYupwSULiSenR0W9GGkTQ5xqmdLvUSE4XJ/Z+yEbYSt6UcgcwMBskbJrBAiD BovOaxO4X+k16aZA3MIrRXQ0Ulw02ivDkTD2tpxKMoKlduyGxDRV8whqDJmCfiu0zAkf huyBiSD2jNVZlGxJPnPhk9qUBRTg8yp6E4U2scNCbcALqpbS/NWgkxXoQZdv7bmGaexp uHlknrXJhpnUVYuwc91TL2bcKmJ3bIG0sKr4bMzO47qmOtHPqyY0q9nkhYiKBqrmV76p FppQlfqK0QPfC9UANzmY1rglC+i6VViea/eb/Vb3Wm9WedvU7u4Ag8PG5c8TxMI8RapF 7VEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747655837; x=1748260637; 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=iL8SSoPTf+h+2fWHyjND1bGGDDWafnZ04LXRcbQOsBY=; b=X2cL0VTGM0xcTQYUSXEcrX8TQokhDgUcBGWrOvcrM1ZvzpAIxU4n0bmq7gP653DvVr WqeLMdaMFi1I3ONnPvkYEz6aM1HQ5a3cyhwX6N63ibojEVt2xIoLGgtiQdIYFyzkLhGB C+Wc212LatXsIltzM+0G8pMUSOXIWk0S4ZKKEDmbGth6g/4A1fN2TKJoyXkR9oTDlOvO oQsZ36Dfo1ViAsg2WVzJVCFFWe1fvihXDbqwwE9WQ+XDgNGbg+JUSrqi+Ev/eArCKo6h N4mGNJYgYyncRSsjE4jE+au8knFrAP2gGrwHTO4mr6+x+ftfOXudGr8O2wls4nXdv8/i kUvw== X-Forwarded-Encrypted: i=1; AJvYcCVzuNY7vsfxgRQGBNyeFqBM6eT1GSA6p+L0cP4oNWIb3vy1KtvDIHKW3LfzpZAM41XYaXH1iO4B3w==@kvack.org X-Gm-Message-State: AOJu0YzmjXtmZ43jv0UjH7GAjdcqKLARFTixxN70inLTtH1eLuJnKzJs SGhW8PzHjrw6nLYEIZlJ4rfW/stEwyzpexP2hSn/TqkmrfiCt7sRcumvUO3Lp7o2q3faM+OKq0q 21SP+TY22gZI785MkuW7Mn8wFSbdrEt4= X-Gm-Gg: ASbGnctk8LcPiGR8mGSdhMSXy+g0nOyFy3W5apRtkrvKzbw++A1D6rQ2YrBiNoUE3Ql aJBX6R61zHhiHpAg0XfUP7+DP2Hc3rpoUlZnGhEUrXpGFysgKgbyqgAkwxmuBllW1GFc/snFTV1 6SKfV/yyn7ZAY/Q+ZqGtxdPtGP9dQs6/0iZg== X-Google-Smtp-Source: AGHT+IHS+YfZKWqmaKo9RToqcSHKUN3WXU6nex26fqkeRtKeG8caA3vTeQELrTJbfcJ+4R/a6LAjgwo50C0q69tWC/Y= X-Received: by 2002:a05:6102:15a2:b0:4c1:9780:3830 with SMTP id ada2fe7eead31-4e053c6d5cemr9518137137.23.1747655837341; Mon, 19 May 2025 04:57:17 -0700 (PDT) MIME-Version: 1.0 References: <20250514201729.48420-12-ryncsn@gmail.com> <20250519070801.2588-1-21cnbao@gmail.com> In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Mon, 19 May 2025 19:57:06 +0800 X-Gm-Features: AX0GCFu_mDgXvOG7bNTnWkzRUodvZ6RNM2XcP0E2b5OEfVYbHmdfT-JTt_liJZo Message-ID: Subject: Re: [PATCH 11/28] mm, swap: clean up and consolidate helper for mTHP swapin check To: Kairui Song Cc: akpm@linux-foundation.org, baolin.wang@linux.alibaba.com, bhe@redhat.com, chrisl@kernel.org, david@redhat.com, hannes@cmpxchg.org, hughd@google.com, kaleshsingh@google.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, nphamcs@gmail.com, ryan.roberts@arm.com, shikemeng@huaweicloud.com, tim.c.chen@linux.intel.com, willy@infradead.org, ying.huang@linux.alibaba.com, yosryahmed@google.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: d87itg3jkis46p7yeykpybuhqfenedoe X-Rspamd-Queue-Id: 59AAB20010 X-Rspam-User: X-Rspamd-Server: rspam02 X-HE-Tag: 1747655838-795128 X-HE-Meta: U2FsdGVkX19Vb/PnPng+lfxr6tnaMF3mFUGOdWYGo5L3SZATKX7O6zSgVxNjLNwIQNzqPp185B7CSZgqsqtFF3UeW3ysVpJwjTL42I05Ew78RF6ep+yQpzj1/SIZYZzoBIcrE5FLJ0+nRcKn1jn6StsMosJ9+LNh/mHk5zV5MQsh6oUnOOPpXd7iResxMZ/fNQDxzyrVM3V4/NYlPxDSPa5ApDwrk0kG23HeL7ciaTM957mWJ/Wott4zOIdcziCkCpQfs/ZBm2AvwiReTc3fimm40mqfK2gwyS1VGLBDGExl7Huotdd2teZK/NxK6P6somlqe968+eWbiIDDenHhNmyMpY0WKHfYhpSoG7nGlAD0RX7yhEQ9fbMFctRZkuWxEhtjMrDghjK8ydpv08ts8zbS8y94hrcaIBWBGgzlQhSSw1DD9Zj4tlKA9hfW/ohgxywjIUKaRAZSHIE9lZKHo+qktNNvi1zM5Q9RMj4Zn6/zcHWAuBvZEbMghVBLHOQip9DXl4roZuwq6/hD2PjRr7ETbnEyfvzccbXeT+4a8a9T+pfBbEruSHqUumUMC9YvAglz2A2SM7heFS6xax5aZ6P5gUWmfCuAYWoPjD11FSl+TsK122FWjIX/LnOLMGsyNG81HIuMoGgTGn3UI2I7qHEPG65/tCa8tFfWmHqFy3sk3DHCCTS1Cr7xYDGfrmpVzekBHw/i7KsQQU4FedFE/B1L1gAScQu0/7IFLSOhxtShOJ9XcsdQydnSyxH+UlPECMAS7k5wt9BECZAtAsXV+N6iFe4HfChqyMyhNE6Sl6gfNxU7MaPlITZ2gFUFe2YCQuMa1QvHv/sWZ+XWW/UL5aIPW1fAu1eFrspWAec3K81mDi3m0E3H1xOGZbW3FvEumfZ1nJaZKfvqcadMrbjd2gC/HnQJIYAIgumSS94eG4P0ep4EBnekqeXQ2zK06vwuiA0mxUWEN1N2+1d3l9t ZN9Pgj/M ojdoOy3UEMSQBL7S9X5rzttD3S4hhPQ6XDmrQGh1n+tf+UY9UsFluMY8tjsUjh1a3M8awVX3De9QBi8Ih5D8L4mGF+tfuqijdzEd3WBrUzGCO+TyMun4TsNFUHYn+YEakeGo/2FhtgkRuKTQCeGqkRekK0tErf/b2pknYPfCftPDGy/36xmWbunxh92wFjdOd/+YnID+Q8gISTUTVQoIGotQjv5+BX+it7kJUAZzauKe0qVzZlo9CZU6BbKpIo/muE+FBe0PioCSOxy5wMV/Vu/nx7zKzMWRdNy59vtg6JVyEu81tSx2rsAkaenpbQdxLtwlPdCvB/HDm9CmexhJdt/0rNqZMMlaOn/nDhogFHjaYHK03dH4zndscMQ== 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: On Mon, May 19, 2025 at 7:10=E2=80=AFPM Kairui Song wrot= e: > > On Mon, May 19, 2025 at 3:08=E2=80=AFPM Barry Song <21cnbao@gmail.com> wr= ote: > > > > > From: Kairui Song > > > > > > > -static bool can_swapin_thp(struct vm_fault *vmf, pte_t *ptep, int nr= _pages) > > > +static bool can_swapin_thp(struct vm_fault *vmf, pte_t *ptep, > > > + unsigned long addr, unsigned int nr_pages) > > > > > + if (unlikely(addr < max(addr & PMD_MASK, vmf->vma->vm_start) || > > > + addr_end > pmd_addr_end(addr, vmf->vma->vm_end))) > > > > > > > @@ -4731,27 +4732,18 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) > > > page_idx =3D 0; > > > address =3D vmf->address; > > > ptep =3D vmf->pte; > > > + > > > if (folio_test_large(folio) && folio_test_swapcache(folio)) { > > > - int nr =3D folio_nr_pages(folio); > > > + unsigned long nr =3D folio_nr_pages(folio); > > > unsigned long idx =3D folio_page_idx(folio, page); > > > - unsigned long folio_start =3D address - idx * PAGE_SIZE= ; > > > - unsigned long folio_end =3D folio_start + nr * PAGE_SIZ= E; > > > - pte_t *folio_ptep; > > > - pte_t folio_pte; > > > + unsigned long folio_address =3D address - idx * PAGE_SI= ZE; > > > + pte_t *folio_ptep =3D vmf->pte - idx; > > > > > > - if (unlikely(folio_start < max(address & PMD_MASK, vma-= >vm_start))) > > > - goto check_folio; > > > > We are handling a corner case a large folio is remapped to an unaligned= address. > > For example, > > > > A 64KiB mTHP at address: XGB + 2MB +4KB, > > > > Its start address will be XGB + 2MB - 60KB which is another PMD. > > > > The previous code will return false; now your can_swapin_thp() will ret= urn true > > as you are using XGB + 2MB - 60KB as the argument "addr" in can_swapin_= thp(). > > Thanks very much for the info and explanation. > > You are right, I need to keep using vmf->address in can_swapin_thp: > > if (unlikely(addr < max(vmf->address & PMD_MASK, vmf->vma->vm_start) || > addr_end > pmd_addr_end(vmf->address, vmf->vma->vm_end))) > return false; > > But one thing I'm not so sure is how that happens? And there isn't an > address checking in the direct swapin mTHP check above? In page faults, we always make the start address aligned with PAGE_SIZE * nr_pages. but for a mremap, we can't actually control the dst address. so the original code can exclude this case for direct mTHP swapin by the below you are dropping: - if (unlikely(folio_start < max(address & PMD_MASK, vma->vm_start))) - goto check_folio; - if (unlikely(folio_end > pmd_addr_end(address, vma->vm_end))) - goto check_folio; Thanks Barry