It was <2017-12-11 pon 15:54>, when Krzysztof Kozlowski wrote:
On Mon, Dec 11, 2017 at 3:06 PM, Łukasz Stelmach [off-list ref] wrote:
quoted
Cc: Marek Szyprowski <m.szyprowski@samsung.com>, Bartlomiej
Zolnierkiewicz [off-list ref]
This should not appear here.
A glitch in a scripted invocation of git-format-patch, fixed.
quoted
Use memcpy_fromio() instead of custom exynos_rng_copy_random() function
to retrieve generated numbers from the registers of PRNG.
Rearrange the loop around cpu_relax(). In a loop with while() at the
beginning and the cpu_relax() removed the retry variable is decremented
twice (down to 98).
I had troubles with understanding this sentence... and then I figured
out that you are referring to some case without cpu_relax(). I do not
see how it is relevant to this case. Compare the new code with old,
not with some imaginary case without barriers (thus maybe reordered?).
Your solution is strictly performance oriented so it would be nice to
see here the exact difference in numbers justifying the change. But
only the change for while() -> do-while(), not mixed with
memcpy_fromio.
Apparently, after trhough tests, I must admit, the way the status
register is being polled is insignificant for the performance. I will
remove from the patch any changes in the loop.
It is the way, the random bytes are copied from the regiesteres, that
makes the difference (5.9 MB/s vs 7.1 MB/s)
Thank you very much for your assistance in reaching this conclusion.
--
Łukasz Stelmach
Samsung R&D Institute Poland
Samsung Electronics