| From: |
| Shivank Garg <shivankg-AT-amd.com> |
| To: |
| "Matthew Wilcox (Oracle)" <willy-AT-infradead.org>, Jan Kara <jack-AT-suse.cz>, Andrew Morton <akpm-AT-linux-foundation.org>, Vlastimil Babka <vbabka-AT-kernel.org>, Suren Baghdasaryan <surenb-AT-google.com>, Michal Hocko <mhocko-AT-suse.com>, Brendan Jackman <jackmanb-AT-google.com>, Johannes Weiner <hannes-AT-cmpxchg.org>, Zi Yan <ziy-AT-nvidia.com>, David Hildenbrand <david-AT-kernel.org>, Matthew Brost <matthew.brost-AT-intel.com>, Joshua Hahn <joshua.hahnjy-AT-gmail.com>, Rakie Kim <rakie.kim-AT-sk.com>, Byungchul Park <byungchul-AT-sk.com>, Gregory Price <gourry-AT-gourry.net>, Ying Huang <ying.huang-AT-linux.alibaba.com>, Alistair Popple <apopple-AT-nvidia.com>, "Paolo Bonzini" <pbonzini-AT-redhat.com>, Shuah Khan <shuah-AT-kernel.org>, Chao Peng <chao.p.peng-AT-linux.intel.com>, Nikunj A Dadhania <nikunj-AT-amd.com>, Ira Weiny <ira.weiny-AT-intel.com>, Michael Roth <michael.roth-AT-amd.com>, Pankaj Gupta <pankaj.gupta-AT-amd.com>, Ackerley Tng <ackerleytng-AT-google.com>, Fuad Tabba <tabba-AT-google.com>, Sean Christopherson <seanjc-AT-google.com>, Vishal Annapurve <vannapurve-AT-google.com>, Nikita Kalyazin <nikita.kalyazin-AT-linux.dev>, Patrick Roy <patrick.roy-AT-linux.dev>, Pratik Sampat <prsampat-AT-amd.com>, Ashish Kalra <Ashish.Kalra-AT-amd.com> |
| Subject: |
| [PATCH RFC 0/3] KVM: guest_memfd: folio migration for non-confidential VMs |
| Date: |
| Thu, 11 Jun 2026 13:05:07 +0000 |
| Message-ID: |
| <20260611-shivank-gmem-migrate-v1-0-2d266bfc6f95@amd.com> |
| Cc: |
| <linux-fsdevel-AT-vger.kernel.org>, <linux-coco-AT-lists.linux.dev>, <linux-mm-AT-kvack.org>, <linux-kernel-AT-vger.kernel.org>, <kvm-AT-vger.kernel.org>, <linux-kselftest-AT-vger.kernel.org>, Shivank Garg <shivankg-AT-amd.com> |
| Archive-link: |
| Article |
guest_memfd folios are currently marked unmovable, so the kernel cannot
perform NUMA-balancing, memory compaction, etc. This is unavoidable for
confidential VMs (SEV-SNP, TDX), since memory is encrypted and copying it
needs firmware assistance. However, for non-confidential VMs (like
Firecracker), we can migrate the folios.
This series enables folio migration for non-confidential guest_memfd and
also lays the groundwork for migrating confidential guest_memfd later.
Once firmware-assisted copying support is available, those VMs can be
made movable, the confidential folio content can be copied separately,
and the destination folio marked with FOLIO_CONTENT_COPIED so
__migrate_folio() skips the host-side folio_mc_copy().
Testing
-------
Host: 7.1-rc7 + this, 2 NUMA nodes
- KVM selftest: allocate folios on node 0, migrate them to node 1 and
back and verify resulting NUMA node and the folio contents at each
step.
- Firecracker [1]: booted a microVM backed by guest_memfd. While the
guest was running, forced host-side migration of its folios via
migratepages(8) and explicit move_pages(2) of guest_memfd
pages. Verify with /proc/firecracker_pid/numa_maps.
[1] https://github.com/firecracker-microvm/firecracker/tree/f...
and change builder.rs to remove GUEST_MEMFD_FLAG_NO_DIRECT_MAP from
vm.create_guest_memfd()
Best regards,
Shivank
Signed-off-by: Shivank Garg <shivankg@amd.com>
---
Shivank Garg (3):
mm: split AS_UNMOVABLE back out of AS_INACCESSIBLE
KVM: guest_memfd: support folio migration for non-confidential VMs
KVM: selftests: exercise guest_memfd folio migration
include/linux/pagemap.h | 24 ++++++--
mm/compaction.c | 12 ++--
mm/migrate.c | 2 +-
tools/testing/selftests/kvm/guest_memfd_test.c | 77 ++++++++++++++++++++++++++
virt/kvm/guest_memfd.c | 49 ++++++++++++++--
5 files changed, 149 insertions(+), 15 deletions(-)
---
base-commit: 4549871118cf616eecdd2d939f78e3b9e1dddc48
change-id: 20260611-shivank-gmem-migrate-8c1c519b30a6
Best regards,
--
Shivank Garg <shivankg@amd.com>