summaryrefslogtreecommitdiff
path: root/mm/internal.h
diff options
context:
space:
mode:
authorLorenzo Stoakes <lorenzo.stoakes@oracle.com>2025-03-10 20:50:40 +0000
committerAndrew Morton <akpm@linux-foundation.org>2025-03-17 22:06:42 -0700
commit664dc4da2694fa56e49dc3e4a041bcf7608a060b (patch)
tree42c62d9b9d52674225b223ecbb64158c9ac127b0 /mm/internal.h
parent2a4077f49ccd6f904be6edb363714646e47292c9 (diff)
mm/mremap: thread state through move page table operation
Finish refactoring the page table logic by threading the PMC state throughout the operation, allowing us to control the operation as we go. Additionally, update the old_addr, new_addr fields in move_page_tables() as we progress through the process making use of the fact we have this state object now to track this. With these changes made, not only is the code far more readable, but we can finally transmit state throughout the entire operation, which lays the groundwork for sensibly making changes in future to how the mremap() operation is performed. Additionally take the opportunity to refactor the means of determining the progress of the operation, abstracting this to pmc_progress() and simplifying the logic to make it clearer what's going on. Link: https://lkml.kernel.org/r/230dd7a2b7b01a6eef442678f284d575e800356e.1741639347.git.lorenzo.stoakes@oracle.com Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Reviewed-by: Vlastimil Babka <vbabka@suse.cz> Cc: Harry Yoo <harry.yoo@oracle.com> Cc: Liam R. Howlett <Liam.Howlett@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm/internal.h')
-rw-r--r--mm/internal.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/mm/internal.h b/mm/internal.h
index 06f816cdb43b..1ac433d2092b 100644
--- a/mm/internal.h
+++ b/mm/internal.h
@@ -36,6 +36,9 @@ struct folio_batch;
*
* Use the PAGETABLE_MOVE() macro to initialise this struct.
*
+ * The old_addr and new_addr fields are updated as the page table move is
+ * executed.
+ *
* NOTE: The page table move is affected by reading from [old_addr, old_end),
* and old_addr may be updated for better page table alignment, so len_in
* represents the length of the range being copied as specified by the user.