summaryrefslogtreecommitdiffstats
path: root/include/xen
diff options
context:
space:
mode:
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>2014-11-21 06:08:39 -0500
committerDavid Vrabel <david.vrabel@citrix.com>2014-12-04 07:41:54 -0500
commitda095a996090a412c3b6292c7a8680661dca157d (patch)
tree02247bce77b50867c227384ed023bab81ffe77c4 /include/xen
parenta4dba130891271084344c12537731542ec77cb85 (diff)
xen/arm: introduce GNTTABOP_cache_flush
Introduce support for new hypercall GNTTABOP_cache_flush. Use it to perform cache flashing on pages used for dma when necessary. If GNTTABOP_cache_flush is supported by the hypervisor, we don't need to bounce dma map operations that involve foreign grants and non-coherent devices. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Acked-by: Ian Campbell <ian.campbell@citrix.com>
Diffstat (limited to 'include/xen')
-rw-r--r--include/xen/interface/grant_table.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/include/xen/interface/grant_table.h b/include/xen/interface/grant_table.h
index e40fae9bf11a..bcce56439d64 100644
--- a/include/xen/interface/grant_table.h
+++ b/include/xen/interface/grant_table.h
@@ -479,6 +479,25 @@ struct gnttab_get_version {
479DEFINE_GUEST_HANDLE_STRUCT(gnttab_get_version); 479DEFINE_GUEST_HANDLE_STRUCT(gnttab_get_version);
480 480
481/* 481/*
482 * Issue one or more cache maintenance operations on a portion of a
483 * page granted to the calling domain by a foreign domain.
484 */
485#define GNTTABOP_cache_flush 12
486struct gnttab_cache_flush {
487 union {
488 uint64_t dev_bus_addr;
489 grant_ref_t ref;
490 } a;
491 uint16_t offset; /* offset from start of grant */
492 uint16_t length; /* size within the grant */
493#define GNTTAB_CACHE_CLEAN (1<<0)
494#define GNTTAB_CACHE_INVAL (1<<1)
495#define GNTTAB_CACHE_SOURCE_GREF (1<<31)
496 uint32_t op;
497};
498DEFINE_GUEST_HANDLE_STRUCT(gnttab_cache_flush);
499
500/*
482 * Bitfield values for update_pin_status.flags. 501 * Bitfield values for update_pin_status.flags.
483 */ 502 */
484 /* Map the grant entry for access by I/O devices. */ 503 /* Map the grant entry for access by I/O devices. */