diff options
| author | Chenyi Qiang <chenyi.qiang@intel.com> | 2025-06-12 16:27:46 +0800 |
|---|---|---|
| committer | Peter Xu <peterx@redhat.com> | 2025-06-23 16:03:59 -0400 |
| commit | 2fde3fb916079ee0ff0fc26d9446c813b1d5cc28 (patch) | |
| tree | 27ffec7704fa6ab01c8b84de5b705d65855274af /include/system/ramblock.h | |
| parent | 5d6483edaa9232d8f3709f68c8eab4bc2033fb70 (diff) | |
| download | focaccia-qemu-2fde3fb916079ee0ff0fc26d9446c813b1d5cc28.tar.gz focaccia-qemu-2fde3fb916079ee0ff0fc26d9446c813b1d5cc28.zip | |
physmem: Support coordinated discarding of RAM with guest_memfd
A new field, attributes, was introduced in RAMBlock to link to a RamBlockAttributes object, which centralizes all guest_memfd related information (such as fd and status bitmap) within a RAMBlock. Create and initialize the RamBlockAttributes object upon ram_block_add(). Meanwhile, register the object in the target RAMBlock's MemoryRegion. After that, guest_memfd-backed RAMBlock is associated with the RamDiscardManager interface, and the users can execute RamDiscardManager specific handling. For example, VFIO will register the RamDiscardListener and get notifications when the state_change() helper invokes. As coordinate discarding of RAM with guest_memfd is now supported, only block uncoordinated discard. Tested-by: Alexey Kardashevskiy <aik@amd.com> Reviewed-by: Alexey Kardashevskiy <aik@amd.com> Acked-by: David Hildenbrand <david@redhat.com> Signed-off-by: Chenyi Qiang <chenyi.qiang@intel.com> Link: https://lore.kernel.org/r/20250612082747.51539-6-chenyi.qiang@intel.com Signed-off-by: Peter Xu <peterx@redhat.com>
Diffstat (limited to 'include/system/ramblock.h')
| -rw-r--r-- | include/system/ramblock.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/system/ramblock.h b/include/system/ramblock.h index 1bab9e2dac..87e847e184 100644 --- a/include/system/ramblock.h +++ b/include/system/ramblock.h @@ -46,6 +46,7 @@ struct RAMBlock { int fd; uint64_t fd_offset; int guest_memfd; + RamBlockAttributes *attributes; size_t page_size; /* dirty bitmap used during migration */ unsigned long *bmap; |