blob: df966a2868d190f6633220caa5a27387c05a8f7b [file] [log] [blame]
\ *****************************************************************************
\ * Copyright (c) 2015-2020 IBM Corporation
\ * All rights reserved.
\ * This program and the accompanying materials
\ * are made available under the terms of the BSD License
\ * which accompanies this distribution, and is available at
\ * http://www.opensource.org/licenses/bsd-license.php
\ *
\ * Contributors:
\ * IBM Corporation - initial implementation
\ ****************************************************************************/
." Populating " pwd cr
false VALUE vtpm-debug?
0 VALUE vtpm-unit
0 VALUE log-base
40000 CONSTANT LOG-SIZE \ 256k per VTPM FW spec.
e CONSTANT VTPM_DRV_ERROR_SML_HANDED_OVER
LOG-SIZE BUFFER: log-base
\ firmware API call
: sml-get-allocated-size ( -- buffer-size)
LOG-SIZE
;
\ firmware API call
: sml-get-handover-size ( -- size)
tpm-get-logsize
;
\ firmware API call
: sml-handover ( dest size -- )
log-base ( dest size src )
-rot ( src dest size )
move
VTPM_DRV_ERROR_SML_HANDED_OVER tpm-driver-set-failure-reason
;
\ firmware API call
: get-failure-reason ( -- reason )
tpm-driver-get-failure-reason ( reason )
;
\ firmware API call
: 2hash-ext-log ( pcr eventtype info info-len data data-len -- success?)
vtpm-debug? IF
." Call to 2hash-ext-log" cr
THEN
tpm-2hash-ext-log ( success? )
dup 0= IF
." VTPM: tpm-2hash-ext-log failed: " dup . cr
THEN
;
0 0 s" ibm,sml-efi-reformat-supported" property
\ firmware API call
: reformat-sml-to-efi-alignment ( -- success )
true
;
: open true ;
: close ;
: vtpm-cleanup ( -- )
vtpm-debug? IF ." VTPM: Disabling RTAS bypass" cr THEN
tpm-finalize
\ Disable TCE bypass
vtpm-unit 0 rtas-set-tce-bypass
;
: vtpm-init ( -- success )
0 0 get-node open-node ?dup 0= IF false EXIT THEN
my-self >r
dup to my-self
vtpm-debug? IF ." VTPM: Initializing for c-driver" cr THEN
my-unit to vtpm-unit
\ Enable TCE bypass special qemu feature
vtpm-unit 1 rtas-set-tce-bypass
\ Have TCE bypass cleaned up
['] vtpm-cleanup add-quiesce-xt
\ close temporary node
close-node
r> to my-self
tpm-start ?dup 0= IF
vtpm-debug? IF ." VTPM: Success from tpm-start" cr THEN
true
ELSE
." VTPM: Error code from tpm-start: " . cr
false
THEN
;
\ inititialize unit and set RTAS bypass
vtpm-init IF
\ pass logbase and size to the C driver; we may only do this after
\ init of the lower levels since this calls needs to know the PCR banks
\ when setting up the log
log-base LOG-SIZE tpm-set-log-parameters
s" vtpm-sml.fs" included
ELSE
." VTPM: vtpm-init failed" cr
THEN