summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorKevin Hao <haokexin@gmail.com>2015-10-22 20:23:48 +0800
committerScott Wood <scottwood@freescale.com>2015-10-27 18:14:40 -0500
commite1f580e8ced56d7c0a2b096e00e8b8e861d13671 (patch)
tree5f3195381d584c766113abf63eac85e74508dc9d /crypto
parentda414bb923d95f1f59fbf534a0e2ef9f52ffc667 (diff)
downloadblackbird-op-linux-e1f580e8ced56d7c0a2b096e00e8b8e861d13671.tar.gz
blackbird-op-linux-e1f580e8ced56d7c0a2b096e00e8b8e861d13671.zip
powerpc/e6500: hw tablewalk: make sure we invalidate and write to the same tlb entry
In order to workaround Erratum A-008139, we have to invalidate the tlb entry with tlbilx before overwriting. Due to the performance consideration, we don't add any memory barrier when acquire/release the tcd lock. This means the two load instructions for esel_next do have the possibility to return different value. This is definitely not acceptable due to the Erratum A-008139. We have two options to fix this issue: a) Add memory barrier when acquire/release tcd lock to order the load/store to esel_next. b) Just make sure to invalidate and write to the same tlb entry and tolerate the race that we may get the wrong value and overwrite the tlb entry just updated by the other thread. We observe better performance using option b. So reserve an additional register to save the value of the esel_next. Signed-off-by: Kevin Hao <haokexin@gmail.com> Signed-off-by: Scott Wood <scottwood@freescale.com>
Diffstat (limited to 'crypto')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud