[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v4 4/7] xen/x86: introduce more cache maintenance operations



Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>

---

Changes in v4:
- remove _xen in the function names;
- implement the functions using existing x86 flushing functions.
---
 xen/arch/x86/flushtlb.c    |    6 ++++++
 xen/include/asm-x86/page.h |    7 ++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/flushtlb.c b/xen/arch/x86/flushtlb.c
index 5d5d79c..3e5e287 100644
--- a/xen/arch/x86/flushtlb.c
+++ b/xen/arch/x86/flushtlb.c
@@ -152,3 +152,9 @@ void flush_area_local(const void *va, unsigned int flags)
 
     local_irq_restore(irqfl);
 }
+
+void clean_and_invalidate_dcache_va_range(const void *p, unsigned long size)
+{
+    int order = get_order_from_bytes(size);
+    flush_area_local(p, FLUSH_CACHE|FLUSH_ORDER(order));
+}
diff --git a/xen/include/asm-x86/page.h b/xen/include/asm-x86/page.h
index 9aa780e..e56be8a 100644
--- a/xen/include/asm-x86/page.h
+++ b/xen/include/asm-x86/page.h
@@ -344,8 +344,13 @@ static inline uint32_t cacheattr_to_pte_flags(uint32_t 
cacheattr)
     return ((cacheattr & 4) << 5) | ((cacheattr & 3) << 3);
 }
 
-/* No cache maintenance required on x86 architecture. */
 static inline void flush_page_to_ram(unsigned long mfn) {}
+static inline void invalidate_dcache_va_range(const void *p, unsigned long 
size) {}
+void clean_and_invalidate_dcache_va_range(const void *p, unsigned long size);
+static inline void clean_dcache_va_range(const void *p, unsigned long size)
+{
+    clean_and_invalidate_dcache_va_range(p, size);
+}
 
 /* return true if permission increased */
 static inline bool_t
-- 
1.7.10.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.