mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Takahiro Itazuri <itazur@amazon.com>
To: Yosry Ahmed <yosry@kernel.org>
Cc: Sean Christopherson <seanjc@google.com>,
	Brendan Jackman <brendan.jackman@linux.dev>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	David Hildenbrand <david@kernel.org>,
	Vlastimil Babka <vbabka@kernel.org>,
	Mike Rapoport <rppt@kernel.org>, Wei Xu <weixugc@google.com>,
	Johannes Weiner <hannes@cmpxchg.org>, Zi Yan <ziy@nvidia.com>,
	Lorenzo Stoakes <ljs@kernel.org>, <linux-mm@kvack.org>,
	<linux-kernel@vger.kernel.org>, <x86@kernel.org>,
	Sumit Garg <sumit.garg@oss.qualcomm.com>,
	Will Deacon <will@kernel.org>, <rientjes@google.com>,
	Roy Patrick <patrick.roy@linux.dev>,
	Andy Lutomirski <luto@kernel.org>,
	David Kaplan <david.kaplan@amd.com>,
	Thomas Gleixner <tglx@kernel.org>,
	Patrick Bellasi <derkling@google.com>,
	Reiji Watanabe <reijiw@google.com>,
	Nikita Kalyazin <nikita.kalyazin@linux.dev>,
	"Ackerley Tng" <ackerleytng@google.com>,
	Takahiro Itazuri <zulinx86@gmail.com>,
	<cc-open-source@amazon.com>,
	Kevin Brodsky <kevin.brodsky@arm.com>,
	"Gregory Price" <gourry@gourry.net>, <kvm@vger.kernel.org>
Subject: Re: [PATCH v3 03/26] mm: introduce AS_NO_DIRECT_MAP
Date: Tue, 13 Oct 2026 16:25:53 +0100	[thread overview]
Message-ID: <20261013152553.39287-2-itazur@amazon.com> (raw)
In-Reply-To: <CAO9r8zMxdg2BTFguwcRQn8n-2CPaEJJfg+T8dWcgO2eV4uNaHQ@mail.gmail.com>

On Thu, 3 Sep 2026 07:06:02 -0700, Yosry Ahmed <yosry@kernel.org> wrote:
> > If that work is not already underway,
> > I would like to respin the AS_NO_DIRECT_MAP introduction and secretmem
> > adoption as a standalone MM series, separate from ALLOC_UNMAPPED and
> > mermap.
[...]
> Perhaps wait until I send the new version, then we can discuss if we
> want to split it based on how the feedback looks like. Does this work
> for you?

Following up on this with an update. Yosry let me know off-list that
ALLOC_UNMAPPED is on hold for now (quoted with permission):

> I wanted to give you an update. I was working on v4 of the
> ALLOC_UNMAPPED series while our team was simultaneously working on
> integrating that design without internal ASI implementation.
> Unfortunately, there were multiple complications with that
> integration, and we will be holding off on sending new versions of the
> ALLOC_UNMAPPED series until we have higher confidence that this
> approach will meet ASI's requirements (ideally in a production
> experiment).

Since the integration with Google's internal ASI implementation needs
more time, Yosry also agreed that I pick up the AS_NO_DIRECT_MAP work
for guest_memfd, separate from ALLOC_UNMAPPED. Here is how I plan to
proceed. Feedback is very welcome, especially from Sean on section 2
below.

1. MM and KVM parts together

I'm withdrawing my earlier proposal to post AS_NO_DIRECT_MAP and the
secretmem conversion as a standalone MM series first. secretmem
removes kernel access to its memory entirely, but KVM still needs to
access some guest memory from the kernel. If the MM part lands first
and the guest_memfd integration then requires a different design, we
would have to rework it right after it lands. So I'd like to settle
the design with guest_memfd as a real user, and post the MM and KVM
parts together in a single series so that both sides can review the
whole picture. Once we agree on the overall design, I'm of course
happy to split it up so that each part can go through the MM and KVM
trees.

2. Kernel access to direct-map-removed memory

I agree with Sean [1] that the way to access such memory from the
kernel, whether it ends up as an extension of GUP or a new interface,
should be generic rather than specific to guest_memfd, so that other
users of direct-map-removed pages that may come along can use it too.
It is also still open who should establish the kernel mapping: MM
could do it transparently, or callers could create one explicitly on
demand, either with existing MM mechanisms or with a new one like the
mermap. I don't have a concrete design in mind yet.

As a first step towards that, I'd like to:

  - List the use cases that stop working when GUP rejects
    AS_NO_DIRECT_MAP mappings. On the KVM side, these are mainly the
    gfn_to_pfn_cache users (kvmclock and the Xen shared pages) and
    kvm_vcpu_map() (mostly nested VMX/SVM). Accesses through uaccess,
    such as kvm_read_guest(), are not affected.

  - Look into each use case and sort out its requirements, e.g.
    whether it needs only the PFN, a short-lived kernel mapping, or a
    kernel mapping that stays valid for as long as the vCPU or VM
    uses it.

and then work out an appropriate design based on those requirements.
I'd only consider supporting the use cases incrementally where that
doesn't leave guest_memfd with a list of caveats or an ad hoc
interface.

3. ALLOC_UNMAPPED and the mermap

AS_NO_DIRECT_MAP itself works without them, by zapping the direct map
of each folio. However, guest_memfd will eventually need a temporary
kernel mapping to populate guest memory via write() [2], because
folios are already unmapped once they are added to the page cache.
The cost of TLB flushes and direct map fragmentation also matters for
performance, so I'd like to keep discussing these with folks
upstream, building on the direct map fragmentation discussion that
Kevin led at LPC [3].

Thanks,
Takahiro

[1] https://lore.kernel.org/all/anZfv81jLSU2qY9G@google.com/
[2] https://lore.kernel.org/all/20251114151828.98165-1-kalyazin@amazon.com/
[3] https://lpc.events/event/20/contributions/2420/

  parent reply	other threads:[~2026-10-13 15:26 UTC|newest]

Thread overview: 124+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-26 22:22 [PATCH v3 00/26] mm: Add ALLOC_UNMAPPED and AS_NO_DIRECT_MAP Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 01/26] set_memory: add folio_{zap,restore}_direct_map helpers Brendan Jackman
2026-07-27 10:33   ` Mike Rapoport
2026-07-29 11:42     ` Brendan Jackman
2026-07-30 20:34   ` Yosry Ahmed
2026-07-31  5:21     ` Mike Rapoport
2026-07-31 11:57       ` Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 02/26] mm/secretmem: make use of folio_{zap,restore}_direct_map Brendan Jackman
2026-07-27 10:40   ` Mike Rapoport
2026-07-26 22:22 ` [PATCH v3 03/26] mm: introduce AS_NO_DIRECT_MAP Brendan Jackman
2026-07-30 21:06   ` Yosry Ahmed
2026-07-31 12:15     ` Brendan Jackman
2026-07-31 19:28       ` Yosry Ahmed
2026-08-07  0:02         ` Sean Christopherson
2026-08-07  0:13           ` Yosry Ahmed
2026-08-07  0:19             ` Sean Christopherson
2026-08-07  0:29               ` Yosry Ahmed
2026-08-07 14:26                 ` Sean Christopherson
2026-08-07 18:12                   ` Yosry Ahmed
2026-08-07 18:49                     ` Sean Christopherson
2026-08-07 19:39                       ` Yosry Ahmed
2026-08-07 22:44                         ` Sean Christopherson
2026-08-07 22:48                           ` Yosry Ahmed
2026-09-03  7:26                             ` Takahiro Itazuri
2026-09-03 14:06                               ` Yosry Ahmed
2026-09-03 14:25                                 ` Takahiro Itazuri
2026-09-15 16:01                                 ` Gregory Price
2026-10-05 20:11                                   ` Yosry Ahmed
2026-10-13 15:25                                 ` Takahiro Itazuri [this message]
2026-10-13 15:36                                   ` Yosry Ahmed
2026-10-13 16:05                                     ` Takahiro Itazuri
2026-10-13 16:09                                       ` Yosry Ahmed
2026-08-08 13:56         ` Brendan Jackman
2026-08-10 21:39           ` Yosry Ahmed
2026-08-10 21:46             ` Sean Christopherson
2026-08-13 15:32         ` Brendan Jackman
2026-08-13 17:25           ` Ackerley Tng
2026-08-18  0:32           ` Yosry Ahmed
2026-08-18 10:41             ` Brendan Jackman
2026-08-02 16:10   ` Mike Rapoport
2026-08-08  0:19   ` Yosry Ahmed
2026-07-26 22:22 ` [PATCH v3 04/26] x86/mm: split out preallocate_sub_pgd() Brendan Jackman
2026-07-31 22:10   ` Yosry Ahmed
2026-08-13 15:42     ` Brendan Jackman
2026-08-18  0:30       ` Yosry Ahmed
2026-08-02 16:13   ` Mike Rapoport
2026-08-13 15:46     ` Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 05/26] x86: move PAE PMD preallocation defines to header Brendan Jackman
2026-07-31 23:59   ` Yosry Ahmed
2026-08-13 15:49     ` Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 06/26] x86/tlb: Expose some flush function declarations to modules Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 07/26] x86/mm: introduce mm-local region Brendan Jackman
2026-08-02 16:27   ` Mike Rapoport
2026-08-13 16:10     ` Brendan Jackman
2026-08-03 22:29   ` Yosry Ahmed
2026-08-13 16:23     ` Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 08/26] x86/mm: move LDT remap into " Brendan Jackman
2026-08-03 22:33   ` Yosry Ahmed
2026-07-26 22:22 ` [PATCH v3 09/26] mm: Create flags arg for __apply_to_page_range() Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 10/26] mm: Add more flags " Brendan Jackman
2026-08-04  0:08   ` Yosry Ahmed
2026-08-13 16:40     ` Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 11/26] x86/mm: introduce the mermap Brendan Jackman
2026-08-02 16:40   ` Mike Rapoport
2026-08-13 16:44     ` Brendan Jackman
2026-08-04 18:38   ` Yosry Ahmed
2026-07-26 22:22 ` [PATCH v3 12/26] mm: KUnit tests for " Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 13/26] mm: introduce freetype_t Brendan Jackman
2026-08-04 22:23   ` Yosry Ahmed
2026-08-14 10:37     ` Brendan Jackman
2026-08-18  0:35       ` Yosry Ahmed
2026-09-03  8:00         ` Vlastimil Babka (SUSE)
2026-09-03 13:30           ` Yosry Ahmed
2026-08-04 23:02   ` Yosry Ahmed
2026-08-14 10:48     ` Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 14/26] mm: move migratetype definitions to freetype.h Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 15/26] mm/page_alloc: add support for freetypes with no freelist Brendan Jackman
2026-07-31 14:13   ` Vlastimil Babka (SUSE)
2026-07-26 22:22 ` [PATCH v3 16/26] mm: add definitions for allocating unmapped pages Brendan Jackman
2026-08-04 19:53   ` Yosry Ahmed
2026-08-14 11:22     ` Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 17/26] mm: encode freetype flags in pageblock flags Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 18/26] mm/page_alloc: separate pcplists by freetype flags Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 19/26] mm/page_alloc: rename ALLOC_NON_BLOCK back to _HARDER Brendan Jackman
2026-07-31 14:52   ` Vlastimil Babka (SUSE)
2026-08-03  9:20     ` Vlastimil Babka (SUSE)
2026-08-04 21:50     ` Yosry Ahmed
2026-08-14 12:09       ` Brendan Jackman
2026-08-18  0:45         ` Yosry Ahmed
2026-08-18 10:58           ` Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 20/26] mm/page_alloc: introduce ALLOC_NOBLOCK Brendan Jackman
2026-07-26 22:22 ` [PATCH v3 21/26] mm/page_alloc: implement FREETYPE_UNMAPPED allocations Brendan Jackman
2026-08-03  9:18   ` Vlastimil Babka (SUSE)
2026-08-15 14:12     ` Brendan Jackman
2026-08-04 23:41   ` Yosry Ahmed
2026-08-07  0:05     ` Yosry Ahmed
2026-08-14 12:31     ` Brendan Jackman
2026-08-04 23:53   ` Yosry Ahmed
2026-08-05 16:13     ` Yosry Ahmed
2026-08-15 14:28     ` Brendan Jackman
2026-08-18  0:55       ` Yosry Ahmed
2026-08-18 11:03         ` Brendan Jackman
2026-08-18 17:51           ` Yosry Ahmed
2026-08-25 20:01             ` Yosry Ahmed
2026-08-07  0:16   ` Yosry Ahmed
2026-08-15 14:30     ` Brendan Jackman
2026-08-18  0:50       ` Yosry Ahmed
2026-08-12 21:26   ` Yosry Ahmed
2026-08-15 14:43     ` Brendan Jackman
2026-08-18  0:49       ` Yosry Ahmed
2026-08-18  1:01   ` Yosry Ahmed
2026-07-26 22:22 ` [PATCH v3 22/26] mm: Minimal KUnit tests for some new page_alloc logic Brendan Jackman
2026-08-03  9:30   ` Vlastimil Babka (SUSE)
2026-07-26 22:22 ` [PATCH v3 23/26] mm: Split out NR_FREE_PAGES_BLOCKS_[UN]MAPPED Brendan Jackman
2026-08-03  9:32   ` Vlastimil Babka (SUSE)
2026-07-26 22:22 ` [PATCH v3 24/26] mm/page_alloc: always direct compact for unmapped allocs Brendan Jackman
2026-08-03  9:44   ` Vlastimil Babka (SUSE)
2026-08-15 14:44     ` Brendan Jackman
2026-08-06 23:29   ` Yosry Ahmed
2026-07-26 22:22 ` [PATCH v3 25/26] mm: plumb alloc flags into some alloc funcs Brendan Jackman
2026-08-03  9:52   ` Vlastimil Babka (SUSE)
2026-07-26 22:22 ` [PATCH v3 26/26] mm: add fast path for AS_NO_DIRECT_MAP Brendan Jackman
2026-08-08  0:06   ` Yosry Ahmed
2026-07-29 11:52 ` [PATCH v3 00/26] mm: Add ALLOC_UNMAPPED and AS_NO_DIRECT_MAP Brendan Jackman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261013152553.39287-2-itazur@amazon.com \
    --to=itazur@amazon.com \
    --cc=ackerleytng@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=bp@alien8.de \
    --cc=brendan.jackman@linux.dev \
    --cc=cc-open-source@amazon.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=david.kaplan@amd.com \
    --cc=david@kernel.org \
    --cc=derkling@google.com \
    --cc=gourry@gourry.net \
    --cc=hannes@cmpxchg.org \
    --cc=kevin.brodsky@arm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=ljs@kernel.org \
    --cc=luto@kernel.org \
    --cc=nikita.kalyazin@linux.dev \
    --cc=patrick.roy@linux.dev \
    --cc=peterz@infradead.org \
    --cc=reijiw@google.com \
    --cc=rientjes@google.com \
    --cc=rppt@kernel.org \
    --cc=seanjc@google.com \
    --cc=sumit.garg@oss.qualcomm.com \
    --cc=tglx@kernel.org \
    --cc=vbabka@kernel.org \
    --cc=weixugc@google.com \
    --cc=will@kernel.org \
    --cc=x86@kernel.org \
    --cc=yosry@kernel.org \
    --cc=ziy@nvidia.com \
    --cc=zulinx86@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®