From: Ian Campbell Date: Wed, 18 Dec 2013 11:54:46 +0000 (+0000) Subject: xen: arm: clarify cacheability requirements of hypercall arguments. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~5740 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=5d81d015539535fb7f79383c7b9d49253b5209fe;p=xen.git xen: arm: clarify cacheability requirements of hypercall arguments. Accepting hypercall arguments which are either consistently in cached or uncached is tricky and/or potentially slow, requiring a guest mapping lookup to determine whether/when to do a cache clean or invalidate. There are very few reasons, and no current use cases in practice, for a guest to use uncached memory for their hypercall arguments. Therefore mandate that all hypercall arguments must be mapped inner-cacheable. Do not place any restriction on the outer-cacheability or on the cache fill/flush strategy used. If use cases arise then we can consider specific exemptions to this rule. Signed-off-by: Ian Campbell Acked-by: Stefano Stabellini --- diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h index 475cb4aa72..ef6217d73e 100644 --- a/xen/include/public/arch-arm.h +++ b/xen/include/public/arch-arm.h @@ -58,6 +58,11 @@ * (AAPCS64). Where there is a conflict the 64-bit standard should be * used regardless of guest type. Structures which are passed as * hypercall arguments are always little endian. + * + * All hypercall arguments passed via a pointer to guest memory must + * reside in memory which is mapped as Normal Inner-cacheable. Any + * Inner cache allocation strategy (Write-Back, Write-Through etc) is + * acceptable. There is no restriction on the Outer-cacheability. */ /*