Ensure PMF service timestamps are properly aligned on a cache line boundary
authordp-arm <dimitris.papastamos@arm.com>
Fri, 9 Sep 2016 10:39:09 +0000 (11:39 +0100)
committerdp-arm <dimitris.papastamos@arm.com>
Wed, 14 Sep 2016 10:41:41 +0000 (11:41 +0100)
When using more than a single service in PMF, it is necessary that the
per-service timestamps begin on a cache line boundary.  Previously it
was possible that two services shared a cache line for their
timestamps.  This made it difficult to reason about cache maintenance
operations within a single service and required a global understanding
of how all services operate.

Change-Id: Iacaae5154a7e19ad4107468e56df9ad082ee371c

include/lib/pmf/pmf_helpers.h

index 9be6050f480d4e7fb7bf363f9e014320e20dc792..bb4242c107d2f0eee0e4475b6a19d254e558578d 100644 (file)
@@ -71,7 +71,9 @@ typedef struct pmf_svc_desc {
  */
 #define PMF_ALLOCATE_TIMESTAMP_MEMORY(_name, _total_id)                \
        unsigned long long pmf_ts_mem_ ## _name[_total_id]      \
-       __section("pmf_timestamp_array") __used;
+       __aligned(CACHE_WRITEBACK_GRANULE)                      \
+       __section("pmf_timestamp_array")                        \
+       __used;
 
 /*
  * Convenience macro to validate tid index for the given TS array.