|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Multiple tasks could be trying to modify NVMEM concurrently. To avoid
data corruption add a mutex which guarantees that only one thread of
execution has access to the flash storing NVMEM objects.
Various paths accessing flash contents are now protected by the same
mutex. Mutex control functions are put in wrappers, which makes it
easier to add debugging code when needed.
BRANCH=cr50, cr50-mp
BUG=b:69907320, b:130828517
TEST=attempts to take a device through RMA open do not fail any more.
Change-Id: I6424477dced20d00f6165006cd3b3968433be6d0
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1584586
Reviewed-by: Andrey Pronin <apronin@chromium.org>
|
|
This patch is a proposed implementation of the new TPM NVMEM flash
layer.
There is a big comment block in common/new_nvmem.c describing the
approach taken, changes to the API and outstanding issues.
This implementation follows the design document attached to
b:69907320.
With all required changes to the rest of the code this new flash
storage scheme consumes 7816(!) bytes of code storage.
One of the more important aspects of this implementation is that the
(key, value) pair objects are stored in the flash only, they are not
duplicated in the SRAM cache. The advantage of this is that there
could be more space dedicated to these objects. Soft limit is set to
1K as opposed to 272 bytes available with the legacy scheme. The major
disadvantage is the need for the user not to forget to release the
(key, value) pair retrieved from NVMEM, as it occupies space on the
heap.
BRANCH=cr50, cr50-mp
BUG=b:69907320, b:129710256
TEST=with the rest of the patches applied the following tests pass:
- test cases in ./test (completely reworked for the new scheme)
- TCG suite (passes on par with the existing Cr50 code with the
reduced code footprint TPM2 library)
- Chrome OS device migrates from legacy to new implementation with
user account maintained.
- Chrome OS user account is maintained over AP and H1 reboots and
deep sleep cycles.
Change-Id: I6252649597c03abd4a08e2d55d61e384fe037ef7
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1450277
Reviewed-by: Andrey Pronin <apronin@chromium.org>
|