|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] x86/mm: limit deferred TLB flushing to PV owned pages
The current logic on x86 will mark all domain owned pages as needed a TLB
flush before being re-used. However such TLB flushing is only strictly
needed for PV domain owned pages, as those can keep a reference to the page
in the TLB after it has been freed.
Limit the requirement of a flush to pages that are owned by PV domains.
Signed-off-by: Roger Pau Monné <roger@xxxxxxxxxxxxxx>
---
xen/common/page_alloc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 62ac89b824de..be202f0b8d1e 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -1501,6 +1501,7 @@ bool scrub_free_pages(void)
static bool mark_page_free(struct page_info *pg, mfn_t mfn)
{
+ const struct domain *owner = page_get_owner(pg);
bool pg_offlined = false;
ASSERT(mfn_x(mfn) == mfn_x(page_to_mfn(pg)));
@@ -1539,7 +1540,7 @@ static bool mark_page_free(struct page_info *pg, mfn_t
mfn)
}
/* If a page has no owner it will need no safety TLB flush. */
- pg->u.free.need_tlbflush = (page_get_owner(pg) != NULL);
+ pg->u.free.need_tlbflush = owner && is_pv_domain(owner);
if ( pg->u.free.need_tlbflush )
page_set_tlbflush_timestamp(pg);
--
2.55.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |