Thread (27 messages) flat view 27 messages, 5 authors, 2d ago

Re: [PATCH v3 1/6] set_memory: add number of pages parameter to set_direct_map APIs

From: Mike Rapoport <rppt@kernel.org>
Date: 2026-09-08 11:21:18
Also in: linux-mm, linux-pm, linux-riscv, linux-s390, lkml, loongarch

On Tue, Sep 08, 2026 at 12:38:44PM +0200, David Hildenbrand (Arm) wrote:
On 9/3/26 11:28, Mike Rapoport (Microsoft) wrote:
quoted
When set_direct_map APIs were introduced by the commit d253ca0c3865
("x86/mm/cpa: Add set_direct_map_*() functions") the single page
parameter made sense because the initial callers (vmalloc and
hibernation) had sets of unsorted struct pages that required changes of
their mappings in the direct map.

Since there is an increasing demand for direct map manipulation and it
is also desirable to be able to update larger physically contiguous
mappings, for example an entire large folio, extend set_direct_map APIs
to receive number of pages parameter.

As there is still only a handful of callers, change the existing
functions directly and update all the call sites rather than adding
wrappers for single page case.

Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
---
In general, LGTM.

But regarding semantics, is it well defined what happens when an update fails
halfway through an operation?
Just like other set_memory, it bails out in the middle if anything bad
happens.
 
I'd assume such a case cannot currently get triggered, but there is no
documentation on what's supported and what's not. Or is there?

Imagine someone performing an update on an area that partially spans two PMDs.
While splitting and updating the first PMD could succeed, splitting the second
PMD could fail. What would be the end result? Rollback? Does the caller have to
clean up?
There is no rollback in any of set_memory implementations. It's up to the
callers to cleanup the mess afterwards.
 
I'd appreciate if we could add proper documentation with expected semantics.
I believe it's more in the scope of  "arch, mm: create a generic
set_memory/change_page_attr core" [1] work than this patchset.

I can write (or maybe even slop ;) ) a doc about set_memory/set_direct_map,
but I wouldn't want to hold this because there's not set_memory
documentation.

[1] https://lore.kernel.org/all/20260721-generic-set-memory-v0-1-v1-0-2c1fc62306b3@kernel.org (local)
 
-- 
Cheers,

David
-- 
Sincerely yours,
Mike.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help