Commit cdb8f1c8 authored by Achin Gupta's avatar Achin Gupta
Browse files

Merge pull request #398 from achingupta/vk/fix_bakery_lock_size

Fix relocation of __PERCPU_BAKERY_LOCK_SIZE__ in PR #390
parents a6ef882c 7173f5f6
...@@ -124,7 +124,7 @@ SECTIONS ...@@ -124,7 +124,7 @@ SECTIONS
__BAKERY_LOCK_START__ = .; __BAKERY_LOCK_START__ = .;
*(bakery_lock) *(bakery_lock)
. = ALIGN(CACHE_WRITEBACK_GRANULE); . = ALIGN(CACHE_WRITEBACK_GRANULE);
__PERCPU_BAKERY_LOCK_SIZE__ = . - __BAKERY_LOCK_START__; __PERCPU_BAKERY_LOCK_SIZE__ = ABSOLUTE(. - __BAKERY_LOCK_START__);
. = . + (__PERCPU_BAKERY_LOCK_SIZE__ * (PLATFORM_CORE_COUNT - 1)); . = . + (__PERCPU_BAKERY_LOCK_SIZE__ * (PLATFORM_CORE_COUNT - 1));
__BAKERY_LOCK_END__ = .; __BAKERY_LOCK_END__ = .;
#ifdef PLAT_PERCPU_BAKERY_LOCK_SIZE #ifdef PLAT_PERCPU_BAKERY_LOCK_SIZE
......
...@@ -1153,11 +1153,23 @@ of the system counter, which is retrieved from the first entry in the frequency ...@@ -1153,11 +1153,23 @@ of the system counter, which is retrieved from the first entry in the frequency
modes table. modes table.
* **#define : PLAT_PERCPU_BAKERY_LOCK_SIZE** [optional] ### #define : PLAT_PERCPU_BAKERY_LOCK_SIZE [optional]
It is used if the bakery locks are using normal memory. It defines the memory When `USE_COHERENT_MEM = 0`, this constant defines the total memory (in
(in bytes) to be allocated for the bakery locks and needs to be a multiple of bytes) aligned to the cache line boundary that should be allocated per-cpu to
cache line size. accommodate all the bakery locks.
If this constant is not defined when `USE_COHERENT_MEM = 0`, the linker
calculates the size of the `bakery_lock` input section, aligns it to the
nearest `CACHE_WRITEBACK_GRANULE`, multiplies it with `PLATFORM_CORE_COUNT`
and stores the result in a linker symbol. This constant prevents a platform
from relying on the linker and provide a more efficient mechanism for
accessing per-cpu bakery lock information.
If this constant is defined and its value is not equal to the value
calculated by the linker then a link time assertion is raised. A compile time
assertion is raised if the value of the constant is not aligned to the cache
line boundary.
3.3 Power State Coordination Interface (in BL3-1) 3.3 Power State Coordination Interface (in BL3-1)
------------------------------------------------ ------------------------------------------------
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment