Re: [PATCH] KVM: SEV: drop FOLL_LONGTERM for encrypted region registration
From: Gupta, Pankaj
Date: Mon Jul 06 2026 - 09:47:19 EST
Hi David,
commit 7e066cb9b71a ("KVM: SEV: Use long-term pin when registering encrypted memory regions")But that breaks the original issue of breaking ZONE_MOVABLE/CMA?
added FOLL_LONGTERM to sev_mem_enc_register_region() so anonymous guest RAM is
migrated out of MIGRATE_CMA/ZONE_MOVABLE before a long term pin. This breaks
virtio-pmem which has file backed (MAP_SHARED) host mapping where GUP rejects
FOLL_WRITE | FOLL_LONGTERM since:
commit 8ac268436e6d ("mm/gup: disallow FOLL_LONGTERM GUP-nonfast writing to file-backed mappings")
commit a6e79df92e4a ("mm/gup: disallow FOLL_LONGTERM GUP-fast writing to file-backed mappings").
Drop FOLL_LONGTERM when registering encrypted memory regions and restore
the previous behavior.
If it is a longterm pin, it must use FOLL_LONGTERM. :/
I assume we fail in check_vma_flags()
if ((gup_flags & FOLL_LONGTERM) && vma_is_fsdax(vma))
return -EOPNOTSUPP;
Yes, it fails in this path but for file backed mapping, vma_is_fsdax() returns false because
vma_is_dax() returns false:
IIRC, fsdax cannot tolerate unbounded pins. Is that the case we are running into?
Host side backend is regular file backed memory (no fsdax).
Thanks,
Pankaj
How does vfio deal with that? (does it?)