Measurement Registers¶
-
struct tsm_measurement_register¶
describes an architectural measurement register (MR)
Definition:
struct tsm_measurement_register {
const char *mr_name;
void *mr_value;
u32 mr_size;
u32 mr_flags;
enum hash_algo mr_hash;
};
Members
mr_namename of the MR
mr_valuebuffer containing the current value of the MR
mr_sizesize of the MR - typically the digest size of mr_hash
mr_flagsbitwise OR of one or more flags, detailed below
mr_hashoptional hash identifier defined in include/uapi/linux/hash_info.h.
Description
A CC guest driver encloses an array of this structure in struct
tsm_measurements to detail the measurement facility supported by the
underlying CC hardware.
mr_name and mr_value must stay valid until this structure is no longer in use.
mr_flags is the bitwise-OR of zero or more of the flags below.
TSM_MR_F_READABLE- the sysfs attribute corresponding to this MR is readable.TSM_MR_F_WRITABLE- the sysfs attribute corresponding to this MR is writable. The semantics is typically to extend the MR but could vary depending on the architecture and the MR.TSM_MR_F_LIVE- this MR’s value may differ from the last value written, so must be read back from the underlying CC hardware/firmware.TSM_MR_F_RTMR- bitwise-OR ofTSM_MR_F_LIVEandTSM_MR_F_WRITABLE.TSM_MR_F_NOHASH- this MR does NOT have an associated hash algorithm. mr_hash will be ignored when this flag is set.
-
struct tsm_measurements¶
defines the CC architecture specific measurement facility and methods for updating measurement registers (MRs)
Definition:
struct tsm_measurements {
const struct tsm_measurement_register *mrs;
size_t nr_mrs;
int (*refresh)(const struct tsm_measurements *tm);
int (*write)(const struct tsm_measurements *tm, const struct tsm_measurement_register *mr, const u8 *data);
};
Members
mrsArray of MR definitions.
nr_mrsNumber of elements in mrs.
refreshCallback function to load/sync all MRs from TVM hardware/firmware into the kernel cache.
writeCallback function to write to the MR specified by the parameter mr. Typically, writing to an MR extends the input buffer to that MR.
Description
The refresh callback is invoked when an MR with TSM_MR_F_LIVE set is being
read and the cache is stale. It must reload all MRs with TSM_MR_F_LIVE set.
The function parameter tm is a pointer pointing back to this structure.
The write callback is invoked whenever an MR is being written. It takes two additional parameters besides tm:
mr - points to the MR (an element of tm->mrs) being written.
data - contains the bytes to write and whose size is mr->mr_size.
Both refresh and write should return 0 on success and an appropriate error code on failure.
-
const struct attribute_group *tsm_mr_create_attribute_group(const struct tsm_measurements *tm)¶
creates an attribute group for measurement registers (MRs)
Parameters
const struct tsm_measurements *tmpointer to
struct tsm_measurementscontaining the MR definitions.
Description
This function creates attributes corresponding to the MR definitions provided by tm->mrs.
The created attributes will reference tm and its members. The caller must
not free tm until after tsm_mr_free_attribute_group() is called.
Context
Process context. May sleep due to memory allocation.
Return
On success, the pointer to a an attribute group is returned; otherwise
-EINVAL- Invalid MR definitions.-ENOMEM- Out of memory.
-
void tsm_mr_free_attribute_group(const struct attribute_group *attr_grp)¶
frees the attribute group returned by
tsm_mr_create_attribute_group()
Parameters
const struct attribute_group *attr_grpattribute group returned by
tsm_mr_create_attribute_group()
Context
Process context.