This series reduces memory consumption for unpinned regions by avoiding
PFN array allocation. A 1GB unpinned region currently wastes 2MB for an
unused PFN array that HMM-managed regions don't need.
v4:
- Rebased on the latest state of the tree.
- Dropped "mshv: Improve code readability with handler function typedef"
as redundant.
v3:
- Fix missing unmap/remap of pages before the first huge page.
v2:
- Improved commit message
- Fixed invalid vfree(region->mreg_pfns) call for MMIO-backed regions
- Fixed unpinning of already-released pages in the error path during
pinned region creation
- Removed redundant mshv_map_region helper in favor of the new
optimized mapping logic
---
Stanislav Kinsburskii (6):
mshv: Consolidate region creation and mapping
mshv: Rename mshv_mem_region to mshv_region
mshv: Optimize region unmap and invalidation with large pages
mshv: Pass pfns array explicitly through processing chain
mshv: Simplify pfn array handling in region processing
mshv: Allocate pfns array only for pinned regions
drivers/hv/mshv_regions.c | 346 +++++++++++++++++++++++++++----------------
drivers/hv/mshv_root.h | 28 ++-
drivers/hv/mshv_root_main.c | 81 ++++------
3 files changed, 265 insertions(+), 190 deletions(-)