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 D5708CA1018 for ; Sat, 31 Aug 2024 10:06:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 54FAB8D0026; Sat, 31 Aug 2024 06:06:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 500178D0022; Sat, 31 Aug 2024 06:06:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4164B8D0026; Sat, 31 Aug 2024 06:06:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 1DF208D0022 for ; Sat, 31 Aug 2024 06:06:55 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 82D0D1C0D68 for ; Sat, 31 Aug 2024 10:06:54 +0000 (UTC) X-FDA: 82512111948.25.7D9118E Received: from mail-vs1-f43.google.com (mail-vs1-f43.google.com [209.85.217.43]) by imf29.hostedemail.com (Postfix) with ESMTP id C68D4120016 for ; Sat, 31 Aug 2024 10:06:52 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=DUZnpwtw; spf=pass (imf29.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.217.43 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=1725098691; 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=9DXuqiSaK+2NSpOVKFAA1ltma9lpqWFeEylLnKoFhrg=; b=1GwxuBqwOu5x1bHadu7n6ZBkeLivH0CILUVhbhlyArANpQjE002n67i+9Bf3yIM42nbYS+ I9ll+5pE7ITYxT74pZLEnc3ZS8mDEf+9UudgQhFCX0UleDu4vGd+knNIwr/Y3fi14sNJ77 jBKurjT/CE/BBXOOmE2NWVEkrcIoXQI= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=DUZnpwtw; spf=pass (imf29.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.217.43 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725098691; a=rsa-sha256; cv=none; b=4VXn7O3kEyKdWorvzEPU1KSngVw63mg0ifDQmDDZZsxj9/Lj5/x87hQ0HQy3yfOymySM8E FW6x2PYie7+HTh4jqylnY0RJM023fvoR1pADteFkQeEslm4TreaUHJshibeyOXf2zogUAf WrTk3SdR1gngzflvOQVBMsON8fqr6dE= Received: by mail-vs1-f43.google.com with SMTP id ada2fe7eead31-498c4d5a912so972380137.2 for ; Sat, 31 Aug 2024 03:06:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725098812; x=1725703612; 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=9DXuqiSaK+2NSpOVKFAA1ltma9lpqWFeEylLnKoFhrg=; b=DUZnpwtwNuRHYQh18MGcmDUvYIgj7GPYMO1aExlr3d8Yn22SKu9NLTRZjw+/UST1xL NZPlDLoABaX6rUfkD7zYXc53eXgtgZ4nvjJphUXJySMgV/sUOacInmNIO28mAhM3YIoL 0AOMmvKX6yl/sH9uozHKefRqGIia8/VUfdVB4q1h0dEFC1v+yIOMn5ul6R+OfBQOY9hC Sg2wbkqrqTdmSsqHy7scHJDVfWB4jWOzd0UkfqEPPLu2ks4NmPq0m0Hx1NuRcSTvw+mS OT8GbP+pj/bCK0OZpsHriq/BSf4uTK7vyb+lqJUCoLKIpKQhv48TePIgpTDbPUwqzkYm zK6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725098812; x=1725703612; 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=9DXuqiSaK+2NSpOVKFAA1ltma9lpqWFeEylLnKoFhrg=; b=GDOHo83Pd/Le42o7WGn+tcsrcZx8dR9lWu9BFjL36L1Uvzp9oho4sFjXILCcJM4KNQ gOv1/uvyiMRq/v+rCO/Y5CIpqMEu6KODPzlvCyd/bSGXpOK4mDZNvG8KSS/bpxiVRlxt vk7DNw+NTp/pte55sfWXViMLvOiHDL+urTMwP8o4isTAnQIQufZT+9UuY0YPHAvKAef1 Q6BZo6+RN/gbF971+mtsC6rGwBZk9cMAqInL42+CZssmeEaLZtKK1zXOQ6Ho342N2tsG s/M1Nt4bfuGeOWOz8Jr4mlDjfHrUlZBzNiJOJH9OSGDjEN3FabwSVCtM4FODYIVKjab7 yyDA== X-Forwarded-Encrypted: i=1; AJvYcCV7ORVO449DBT5UEawa0AK4awKMFB2iU0wYzy5joTtNce+IYW1+R5T7VtyFU3jypTOXb671ZDRugg==@kvack.org X-Gm-Message-State: AOJu0YyCwH3iPWZsgdkVTGEeOs4lWoIlRZSzjAGVKYNuj5je+S9zRnV8 ZGYNhJRWPb5Co6g3zIeURsPi1Clsb/ErX7gzz6A7KjuGuO9+2wCp2/10t8CwL24v/tMqozPPHJb tWTtn4MBFqr2dXHv46QAIYUlEhIk= X-Google-Smtp-Source: AGHT+IH7WGXZ5NHniPy+WWpVaSZhFIs0Rxj1OF8Cmz4kAKAMBmt5fTjFPS5sc8kLDyDbQlaDStKjsr5JjxN7pyEISpI= X-Received: by 2002:a05:6102:38d0:b0:48f:e7c2:1faf with SMTP id ada2fe7eead31-49a5af7baefmr10165869137.28.1725098811678; Sat, 31 Aug 2024 03:06:51 -0700 (PDT) MIME-Version: 1.0 References: <20240831083537.62111-1-21cnbao@gmail.com> In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Sat, 31 Aug 2024 22:06:40 +1200 Message-ID: Subject: Re: [PATCH RFC] mm: arm64: advance pte for contpte_ptep_set_access_flags To: David Hildenbrand Cc: akpm@linux-foundation.org, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, Barry Song , Ard Biesheuvel , John Hubbard , Mark Rutland , Catalin Marinas , Will Deacon Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: C68D4120016 X-Stat-Signature: abndegr9umqj8mwhhm633f368u5xjtfz X-Rspam-User: X-HE-Tag: 1725098812-165823 X-HE-Meta: U2FsdGVkX19LcjN8WMk0RKGRJ0nmx49qfSpy7IPOHr9S6mZCMnZRnaH6K58H+DsS9Es5DT4QF0tZX1FqlLQ/aDXbhcYUPNku7DsMyg/BcxJaQ+kHRI03KLIuch9s/FDwaFlVU1F5asG19cd8QDdFGcfhV4Aw5ECdrOHALWXAzWvcD46V/lLgPBCu3RO3TaWLTqDQk3OD20/Gjc0QdL3wHds//4RkEhLJxljy9vbQlamSegjuc9vXieDLob/O/2QlsnJ/h1Kmcv4FiHg3ywK2CtyTY6rA5Sl9L6lWgW1aaoS5bHlrjq88aDxnuE3P6w1I0qXNklFxCXtz9ZghoiDfGicird8Yq1AkTTbRMFTHnrcuJlxYqGBMtZqMSjfJGI7/G+nQ/hEyI2d6gORsahpB65Xwc9KmeDLHsFuW06jMEDW5lKLZ/E5c8KZoeAMl0MbKhFZzrRIcLviwWo7y9qTz8ko5TnsS0XRzGwVyq04QAGrEJJA52PuIfAZLPAy9hZCIAI6trxqUazO9L2wTALam+Jd/H/IuP2rvO3AJPyh5vHWlrIr8JHiTHUH6HIPVRiSYrSGAaFqV0t6u8lAQHDMuwub88ibUirmKiJQCsZBGxyFPhgJDuhvIlvUCI6o+jivQnlyzWOSwEYngVSzHrmIfoolEwFdKsQsjFQWBMhRzxjQZYGbDXoCVOHjklCYimWcMzoHmvnY/1m7hyZyFkOY5wA0BLw0EOzDDK88FoRyDuOfFf8hz2ablTWd/h3ccT8+nPuDhJvsSIasrWtqXzkZNCufsrY+tjqIT/nN30dvCkFQqmRLjGzqFXCpKKj/heudLr07JHTr1VA5TaGs0TQfMQwI6+zv7/kamfWz0emntdyz9XCAR87iOdrQp232K/NbTe9Gkb3FsSCvdSsoUmRtzRY5B1PdXwk4OZqO5uJ1KY0+M83aAPPr29LQHxg9gPhsePyO+zZGiX10p25CGue/ tgn/sNPf yX7qZnRk/aYcWud0An84eqLqaXstUb7+v0l2wlCRWgXgzaGagckyT0lT5+6ksugxpnB5QuJbbNM3dwNObtDN9PGcPD+YmX7wYMoA7uR9aulZyWRptVn0Qal2fl3/z56xdp94e0ogS9C29MLFAxL/TCksEcb9hkVXLVfa5hVPArlItTDmCZju7+GoQjXTS0DyXtHJEY30gIMLnZ0Wo6jijoRfc2q0vSpveDPmqIZWfc+WNHanXMZ9oDA67Ue8Trn2ogj56U3MjJwEnmELEfeLfQsfVhYfmzcpJVFmhWZEuzTBN1WQmLH1NZDrHJm2osVWsszD43cw4bgnwowpBs2tVK6h92/A823P/r+UqPKdNI3+XQ7NIGI+IAsNn2Am/BPSwtjVn5LGbpUTF4/RDePV8QOxzULRFOBeR5HEejknk6ZRFc4jqzTDRwDViLlFTj1KZ/vjD6ZTMVsfPvYE7WtGBK7JixuGjEGzNlrhz9sRi+70LfkbJRhYQWshhhiP9wwY7OtLiTRQqcdGfGeE= 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 Sat, Aug 31, 2024 at 9:54=E2=80=AFPM David Hildenbrand wrote: > > On 31.08.24 10:35, Barry Song wrote: > > From: Barry Song > > > > Hi Ryan, David, > > it seems contpte_ptep_set_access_flags() has never advanced > > pte pfn, and it is setting all entries' pfn to the first > > subpage. But I feel quite strange we never have a bug reported. > > Am I missing something? > > > > Fixes: 4602e5757bcc ("arm64/mm: wire up PTE_CONT for user mappings") > > Cc: Ard Biesheuvel > > Cc: John Hubbard > > Cc: Mark Rutland > > Cc: Catalin Marinas > > Cc: David Hildenbrand > > Cc: Will Deacon > > Signed-off-by: Barry Song > > --- > > arch/arm64/mm/contpte.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/arch/arm64/mm/contpte.c b/arch/arm64/mm/contpte.c > > index a3edced29ac1..10dcd2641184 100644 > > --- a/arch/arm64/mm/contpte.c > > +++ b/arch/arm64/mm/contpte.c > > @@ -421,8 +421,10 @@ int contpte_ptep_set_access_flags(struct vm_area_s= truct *vma, > > ptep =3D contpte_align_down(ptep); > > start_addr =3D addr =3D ALIGN_DOWN(addr, CONT_PTE_SIZE); > > > > - for (i =3D 0; i < CONT_PTES; i++, ptep++, addr +=3D PAGE_= SIZE) > > + for (i =3D 0; i < CONT_PTES; i++, ptep++, addr +=3D PAGE_= SIZE) { > > __ptep_set_access_flags(vma, addr, ptep, entry, 0= ); > > + entry =3D pte_advance_pfn(entry, 1); > > + } > > > > if (dirty) > > __flush_tlb_range(vma, start_addr, addr, > > Taking a closer look at __ptep_set_access_flags(), there is: > > /* only preserve the access flags and write permission * > pte_val(entry) &=3D PTE_RDONLY | PTE_AF | PTE_WRITE | PTE_DIRTY; > > So it looks like it doesn't need the PFN? right. > > > OTOH, there is the initial: > > > if (pte_same(pte, entry)) > return 0; > > check that might accelerate things. > > So unless I am missing something, this works as expected? (and if the > pte_same() would frequently be taken with your change would be worthwile > to optimize) Right. From page 1 to page (nr_pages - 1), we consistently get FALSE for pte_same(). This seems quite strange. I think we might need to "fix" it, at least for the sake of code semantics. on the other hand, if pte_same() is not important, it should be dropped. Hi Ryan, what is your take on this? > > -- > Cheers, > > David / dhildenb > Thanks Barry