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 2D565C5B559 for ; Fri, 6 Jun 2025 11:00:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B3FA26B0088; Fri, 6 Jun 2025 07:00:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AF79D6B008A; Fri, 6 Jun 2025 07:00:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A06A16B008C; Fri, 6 Jun 2025 07:00:00 -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 839C36B0088 for ; Fri, 6 Jun 2025 07:00:00 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 2FAA9141D7C for ; Fri, 6 Jun 2025 11:00:00 +0000 (UTC) X-FDA: 83524680960.15.465E20F Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) by imf08.hostedemail.com (Postfix) with ESMTP id 2F745160017 for ; Fri, 6 Jun 2025 10:59:57 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=hEUPAasN; spf=pass (imf08.hostedemail.com: domain of jannh@google.com designates 209.85.208.46 as permitted sender) smtp.mailfrom=jannh@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749207598; 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=Ij6p51RBSpIfTcDNnVZuFN0QIs5BBfAMlgmDV1oy1ao=; b=hEhB6MfpV7Mc656ctOi8q5LmEd/hR/KshxMjq9dJ2ksznISeKULpsBiqEVJeKYl1AMLdjz +kTW829HbziMHtRiIJ3pBEBfW8OG+dqtGLOX0686ewO54gVUBhuQrgyVP6+Qt6AmpFRDQP PZ7nbbmfiOss8GplTrUQU9TV3/CrDSs= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=hEUPAasN; spf=pass (imf08.hostedemail.com: domain of jannh@google.com designates 209.85.208.46 as permitted sender) smtp.mailfrom=jannh@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749207598; a=rsa-sha256; cv=none; b=mPa+QPp5R73dVxXkagDDndvG2lXI4iDIyhlgk6oTzKHm77ItL8deic/+v80FvAKfrg8w/j LtLsTLcl6oT8WZzlTURIENVukyDxXVxt5RLyftFjMpcTW+t20/p/JhHeM2edAaWwu/ELFy gP40Mqms8EbgPXr3oZin/ihopU8xuyo= Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-6000791e832so6832a12.1 for ; Fri, 06 Jun 2025 03:59:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749207597; x=1749812397; 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=Ij6p51RBSpIfTcDNnVZuFN0QIs5BBfAMlgmDV1oy1ao=; b=hEUPAasN5oW7y5vjut8dVUxHGgogXvcmSV0R1ho3VPWFNCO+i7bFA6WMhnPvsjA+aD ybrC2ti5VCYo9paR+iKKwfMU4Q/f9HNNZQY4ABB2U85/PNXD0wRW5w2ZIaCjwzcQeUfX JJrrGJQEp5jPdV9FP1wKAH5eeJDJLsQ3cJeanpu6G0epCkg8xycI7dhKiyAiG3qn5Mvd Vj5f/thNWT64GcKTRU4s9hvH9dof8aYdcPn6AgtwlJKatyOhre9fnR5B+qGSHgYKyIz4 yh4w4B7XUSsVNOnqPFDiqASNmLC/ou9TU/m+F1tdygTrdMDSXHX2+X2A9bZpjsTu22Ip wahg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749207597; x=1749812397; 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=Ij6p51RBSpIfTcDNnVZuFN0QIs5BBfAMlgmDV1oy1ao=; b=V18TlL3YtD3dvdQzTRRkZ4Me1B7jKJr21U2yOFTUmHB5wpzYEfDihgUTz96SYMvA4c 6hHx5Xx1fundeqAv+bQ3ND64IRrymJgD280YANC02gXls2gbW1tFc5Mku7hLduoSofxw AcUAbitgr1e5/Zoik95Rwyyz1Yc/tacwsLciG9C14Vl1wWgsUQP4nXsZ6Uo8/wfXKq9Q qDAMFrU8EiZv5b5MzSi3sllMM0KgpN1OR8zLQqrIQEn187ObsNFsmNOBNGyof+EGsu4b 73P4dLgTz26E82p2e4w5rehyYK/mhJA8o9/PkLKGRoqU0JI6xLi/gtga3+9XQfh5YR6D wFJw== X-Forwarded-Encrypted: i=1; AJvYcCXRqBB34nVw4S5Z7baEmIc7o/fAkt75L7bU3yX1uaqr81nc4NyhFP0e+Q7JoHO8Pf51uli8YZAsqg==@kvack.org X-Gm-Message-State: AOJu0YxMWzrJj0sqLEHPF71Xcu9tA3xYqUU9MIZYTDXfK5jhWd5tSLne 1RC2btxn+lDi3EIZo5YAF+k3sQN7Zsq7cof4R1TgPKuZ6vQ+yUJwZ1FotXvbafq2s08WiF0xi0Z fNdBx+GkWIcyR+AuxATJOl+WAWhNafm3V06jQ7Xsr X-Gm-Gg: ASbGncvEK4rKoHEGqxvO2XUeyx6EtsBSfQZAsqZ71pM+jqacsh9RHEX4NoJK8ufgj74 K6LAaiX9FJO/gyr1NHUOlq8+oX8nDo5CSfq954OdCq1inndoO3EabQt20baRPaGr78qR1MP77cR wDP1QsLAWCRCcX3MZ6Gkpx6yRGzK86N1LV5FE5QhmEMowDIcoWie+mMY8Y1EMyLTak6Lj8gqE3q l/wmuRE X-Google-Smtp-Source: AGHT+IHxO2eadHOlfPVxuGh+iyeVA+X2FQXWYvnzf8QlbhCwgU3Fgf6hl8bb87wyCATPpiU1tP4xwP8RO2klSRm0ODw= X-Received: by 2002:aa7:d98f:0:b0:601:7b94:b80e with SMTP id 4fb4d7f45d1cf-607793d441bmr49798a12.3.1749207596298; Fri, 06 Jun 2025 03:59:56 -0700 (PDT) MIME-Version: 1.0 References: <20250604141958.111300-1-lorenzo.stoakes@oracle.com> In-Reply-To: From: Jann Horn Date: Fri, 6 Jun 2025 12:59:20 +0200 X-Gm-Features: AX0GCFuSeBKSZUd4LEoLg2wIZ296FSomM3Hd1AfilUwfRktV5EvXRfsEyT3g3G0 Message-ID: Subject: Re: [PATCH v2] mm/pagewalk: split walk_page_range_novma() into kernel/user parts To: David Hildenbrand Cc: Lorenzo Stoakes , Andrew Morton , Barry Song , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Muchun Song , Oscar Salvador , Huacai Chen , WANG Xuerui , Jonas Bonn , Stefan Kristiansson , Stafford Horne , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , loongarch@lists.linux.dev, linux-kernel@vger.kernel.org, linux-openrisc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 2F745160017 X-Stat-Signature: ieoyet3eknxch3odqui459tusprw57y8 X-Rspam-User: X-Rspamd-Server: rspam04 X-HE-Tag: 1749207597-421766 X-HE-Meta: U2FsdGVkX1+sjJRqXi0W0AjK7OqoOR5Npym05o9SFcQphHReLt+0fW9uiaCmQzubea35lcmb2ej4//tnGuDKmCAlzC8It/9maflOCaMHgBPQe3jePde7SD3EY9M0EGg3IR+bNWld6duTFyrhW0NWkuL6EWVgWdoBVjyn9vlctoBe7N7mI1Ghn14krEiyPuUiPxFQRI5/7miHN1wAW8I6+/qyJwyVDQsHuN0soWJnKd2McR2e0cSAMVP8hh5iKU7D2mgJsJBkX/fK6J8ynJeiTbBqotANYCHYobw2wtM0GRor5705ea4PNwIZzsnhibJdrfIhEzWCunvBwqweTOwNU+5/4OoVS/pXuSW+c/9lb/WmMYQ+fV/WfjLJC/bwl9u+ae9o9EB8AHgFyuFjk7QB1WVEH5CfxCSjygZQKZUqGVP1r6zYdqSuD1FOuiI2zFrdpzPfJ5+qBpcBiZjU/rHBfR8eltpqATeoeqyMKggjiMRzjgVqMi90RRuM/NPZXWl+MiVNNPt2kqfucxBkdSWgTm8G/xtdERPJEq89QQP2AyALP4jMZmNzVX+e76bvDGngvI7JXIT8o0rLe9+cTq5r8iNJ71Y5U8ym2AD7DFXynX9VcwwDaftMgDBSA5bRtV5k/8Az0dv9aMyNkmJFkfgTC2XeT70B00Acve/ra892BhRcrkxNVkLoTvu65HgEtFRkIcLBIC2FnB55xXE2sTQS/RV+0UtjIhRWRKuDWGjuxQbMftxZlFBBvujreqgtJZ0VsGYTQFRV1JLzbTIRWMPT5AIpoZb29voJD5FkkBCWXULUc4LvEy16aef2+N29P2NfDBADitKGZfv4EzFp6uS4fEw89trqC5F+LIFj4UHFTJCYcJgV6jrgsN/ayFmfAMvbVNYY01ZPXrUkYNAIK4exR4CG77KtuqtxOeF/1p6tuPTWV5aWBhAiz2AJMoZ4MOwzcwTvAt5T9j0lQ/kEWbN qeRl/N+k IiOTfLtkOaaDrutJSVeYGeZb0jy0CDV/INUR40Fzgra+/dgirmrmcMkCUOwQztOd4Qfw7EHBSO3SQXe6zzXPA7tMZ005Pp461+GjVrz7BlluvLk1dGzIoNMy37IwhhYRLF81o14g5JQt+WusCX8oUR9XqKrG3Phg+gKw7CdC4q3Tjez5UHfxQtJi7NDEXtWGtskwg60A0yNXE7Dm0IB7CDysddlD1v2+vg7i9FfWLjrV5uF5BcCgs7MeH6i1i8A5A0top0zX5BIChL+xiXJTn89VH7HEZrIWuhM5NK7vY3D7P4l7cclIFLXgs+TwP84YKEZoR/wbOd2LvnXp8JsUsHI9TIA== 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 Thu, Jun 5, 2025 at 10:23=E2=80=AFPM David Hildenbrand wrote: > On 05.06.25 21:19, Jann Horn wrote: > > On Wed, Jun 4, 2025 at 4:21=E2=80=AFPM Lorenzo Stoakes > > wrote: > >> The walk_page_range_novma() function is rather confusing - it supports= two > >> modes, one used often, the other used only for debugging. > >> > >> The first mode is the common case of traversal of kernel page tables, = which > >> is what nearly all callers use this for. > >> > >> Secondly it provides an unusual debugging interface that allows for th= e > >> traversal of page tables in a userland range of memory even for that m= emory > >> which is not described by a VMA. > >> > >> It is far from certain that such page tables should even exist, but pe= rhaps > >> this is precisely why it is useful as a debugging mechanism. > >> > >> As a result, this is utilised by ptdump only. Historically, things wer= e > >> reversed - ptdump was the only user, and other parts of the kernel evo= lved > >> to use the kernel page table walking here. > > > > Just for the record, copy-pasting my comment on v1 that was > > accidentally sent off-list: > > ``` > > Sort of a tangential comment: I wonder if it would make sense to give > > ptdump a different page table walker that uses roughly the same safety > > contract as gup_fast() - turn off IRQs and then walk the page tables > > locklessly. We'd need basically no locking and no special cases > > (regarding userspace mappings at least), at the cost of having to > > write the walker code such that we periodically restart the walk from > > scratch and not being able to inspect referenced pages. (That might > > also be nicer for debugging, since it wouldn't block on locks...) > > ``` > > I assume we don't have to dump more than pte values etc? So > pte_special() and friends are not relevant to get it right. > > GUP-fast depend on CONFIG_HAVE_GUP_FAST, not sure if that would be a > concern for now. Ah, good point, that's annoying... maaaybe we should just gate this entire feature on CONFIG_HAVE_GUP_FAST to make sure the userspace mappings are designed to be walkable in this way? It's in debugfs, which _theoretically_ (https://docs.kernel.org/filesystems/debugfs.html) means there are no stability guarantees, and I think it is normally used on architectures that define CONFIG_HAVE_GUP_FAST...