Commit 6204004d authored by Yanan Wang's avatar Yanan Wang Committed by Marc Zyngier

KVM: arm64: Introduce two cache maintenance callbacks

To prepare for performing CMOs for guest stage-2 in the fault handlers
in pgtable.c, here introduce two cache maintenance callbacks in struct
kvm_pgtable_mm_ops. We also adjust the comment alignment for the
existing part but make no real content change at all.
Reviewed-by: default avatarFuad Tabba <tabba@google.com>
Signed-off-by: default avatarYanan Wang <wangyanan55@huawei.com>
[maz: fixed up comments and renamed callbacks]
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210617105824.31752-2-wangyanan55@huawei.com
parent 8124c8a6
...@@ -27,23 +27,29 @@ typedef u64 kvm_pte_t; ...@@ -27,23 +27,29 @@ typedef u64 kvm_pte_t;
/** /**
* struct kvm_pgtable_mm_ops - Memory management callbacks. * struct kvm_pgtable_mm_ops - Memory management callbacks.
* @zalloc_page: Allocate a single zeroed memory page. The @arg parameter * @zalloc_page: Allocate a single zeroed memory page.
* can be used by the walker to pass a memcache. The * The @arg parameter can be used by the walker
* initial refcount of the page is 1. * to pass a memcache. The initial refcount of
* @zalloc_pages_exact: Allocate an exact number of zeroed memory pages. The * the page is 1.
* @size parameter is in bytes, and is rounded-up to the * @zalloc_pages_exact: Allocate an exact number of zeroed memory pages.
* next page boundary. The resulting allocation is * The @size parameter is in bytes, and is rounded
* physically contiguous. * up to the next page boundary. The resulting
* @free_pages_exact: Free an exact number of memory pages previously * allocation is physically contiguous.
* allocated by zalloc_pages_exact. * @free_pages_exact: Free an exact number of memory pages previously
* @get_page: Increment the refcount on a page. * allocated by zalloc_pages_exact.
* @put_page: Decrement the refcount on a page. When the refcount * @get_page: Increment the refcount on a page.
* reaches 0 the page is automatically freed. * @put_page: Decrement the refcount on a page. When the
* @page_count: Return the refcount of a page. * refcount reaches 0 the page is automatically
* @phys_to_virt: Convert a physical address into a virtual address mapped * freed.
* in the current context. * @page_count: Return the refcount of a page.
* @virt_to_phys: Convert a virtual address mapped in the current context * @phys_to_virt: Convert a physical address into a virtual
* into a physical address. * address mapped in the current context.
* @virt_to_phys: Convert a virtual address mapped in the current
* context into a physical address.
* @dcache_clean_inval_poc: Clean and invalidate the data cache to the PoC
* for the specified memory address range.
* @icache_inval_pou: Invalidate the instruction cache to the PoU
* for the specified memory address range.
*/ */
struct kvm_pgtable_mm_ops { struct kvm_pgtable_mm_ops {
void* (*zalloc_page)(void *arg); void* (*zalloc_page)(void *arg);
...@@ -54,6 +60,8 @@ struct kvm_pgtable_mm_ops { ...@@ -54,6 +60,8 @@ struct kvm_pgtable_mm_ops {
int (*page_count)(void *addr); int (*page_count)(void *addr);
void* (*phys_to_virt)(phys_addr_t phys); void* (*phys_to_virt)(phys_addr_t phys);
phys_addr_t (*virt_to_phys)(void *addr); phys_addr_t (*virt_to_phys)(void *addr);
void (*dcache_clean_inval_poc)(void *addr, size_t size);
void (*icache_inval_pou)(void *addr, size_t size);
}; };
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment