[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] xen/arm: Fix P2M root page tables invalidation
- To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
- From: Michal Orzel <michal.orzel@xxxxxxx>
- Date: Mon, 16 Jun 2025 08:56:48 +0200
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/u9vc2Yh18LQ/kV2+OYDJu5UeOkfnKzyLdi8UYEUIdc=; b=CY3WLzHNW8P6o0tnfNSQpQvRKaAk/ncQUCYCKJjBzaNd7aiOomZj6+qVXzrmCphvBHRWbyz7/WrjqRjIk6x4Rnzxfeza+hZqp2kTaF9YwKVG3Xzj3D3arBjlBE9kADZB1R0rfGUN3QYM+0zLA0jsNZCuatxD3nBtu4hkr0OjdY9nBRLt/Iu2WbwDnB2nc2yQMX4T67o4AVk/J7GgtdY2o6o83BL6+c8zrTp0iQwRhgsIOAUH+gqzILH37Wtf8HRIDzQ7KwlemRPvZIYoPSKujNVXvw9FIM4g3pYU48V408kSUlXCktUh3BdRywMLhGNC2/ik1fDOivFVK39HkjlabQ==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p0JC+bNiinUAcQmdIDSXfPAj6XkiOi2ZweNEqWvRy7vk01jOtT0CilCDix3fGQb1JHO88Tk6frhpHSHyrHTgk3Q0cvSZTdxaV7dZ9w9qizx67O2IzBaF74aAZq6LFKMdqVgmT1AsnwJDw5FLEED7p22gOIpLbSPgfmwtzAfFZBKJt22pKYvVmWrswuTLzoJPwcW6iBFvCV2Z1psNfCoGAs52u9wDhDGNxLvLAgd/9leh4FUnWu7sRoMsvzTMcetPCMPrnbLOF+AVstiOCtKxDPilQGPy2nWBN3HMBh+leGmdkOsjS2mXUEofgTpz0eZhDhgZ6DD331YjnYcSHtZ/AQ==
- Cc: Michal Orzel <michal.orzel@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
- Delivery-date: Mon, 16 Jun 2025 06:57:03 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
Fix the condition part of the for loop in p2m_invalidate_root() that
uses P2M_ROOT_LEVEL instead of P2M_ROOT_PAGES. The goal here is to
invalidate all root page tables (that can be concatenated), so the loop
must iterate through all these pages. Root level can be 0 or 1, whereas
there can be 1,2,8,16 root pages. The issue may lead to some pages
not being invalidated and therefore the guest access won't be trapped.
We use it to track pages accessed by guest for set/way emulation provided
no IOMMU, IOMMU not enabled for the domain or P2M not shared with IOMMU.
Fixes: 2148a125b73b ("xen/arm: Track page accessed between batch of Set/Way
operations")
Signed-off-by: Michal Orzel <michal.orzel@xxxxxxx>
---
xen/arch/arm/mmu/p2m.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index d96078f547d5..67296dabb587 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1291,7 +1291,7 @@ static void p2m_invalidate_root(struct p2m_domain *p2m)
p2m_write_lock(p2m);
- for ( i = 0; i < P2M_ROOT_LEVEL; i++ )
+ for ( i = 0; i < P2M_ROOT_PAGES; i++ )
p2m_invalidate_table(p2m, page_to_mfn(p2m->root + i));
p2m_write_unlock(p2m);
--
2.25.1
|