All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] arm/p2m: call iommu iotlb flush if iommu exists and enabled
@ 2019-01-23 10:12 Andrii Anisov
  2019-01-23 11:33 ` Julien Grall
  0 siblings, 1 reply; 6+ messages in thread
From: Andrii Anisov @ 2019-01-23 10:12 UTC (permalink / raw)
  To: xen-devel, Julien Grall; +Cc: Stefano Stabellini, Andrii Anisov

From: Andrii Anisov <andrii_anisov@epam.com>

Taking decission by `need_iommu_pt_sync()` make us never kicking
`iommu_iotlb_flush()` for IOMMUs which do share TLB with CPU.
So check `has_iommu_pt()` instead.

Signed-off-by: Andrii Anisov <andrii_anisov@epam.com>

---

Julien,

Could you please look at this, IMO there is a mistake here.
x86 uses `need_iommu_pt_sync()` to make decission if iommu's map/unmap should be additionally called.
But ARM has no non-shared pt support in the mainline, so using `need_iommu_pt_sync()` seems to be odd.

 xen/arch/arm/p2m.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index 2394f97..059a391 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -1019,7 +1019,7 @@ static int __p2m_set_entry(struct p2m_domain *p2m,
          !mfn_eq(lpae_get_mfn(*entry), lpae_get_mfn(orig_pte)) )
         p2m_free_entry(p2m, orig_pte, level);
 
-    if ( need_iommu_pt_sync(p2m->domain) &&
+    if ( has_iommu_pt(p2m->domain) &&
          (lpae_is_valid(orig_pte) || lpae_is_valid(*entry)) )
     {
         unsigned int flush_flags = 0;
-- 
2.7.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-01-23 12:41 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-23 10:12 [RFC] arm/p2m: call iommu iotlb flush if iommu exists and enabled Andrii Anisov
2019-01-23 11:33 ` Julien Grall
2019-01-23 11:45   ` Paul Durrant
2019-01-23 12:40     ` Andrii Anisov
2019-01-23 12:41       ` Paul Durrant
2019-01-23 12:35   ` Andrii Anisov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.