測量暫存器

struct tsm_measurement_register

描述架構測量暫存器 (MR)

定義:

struct tsm_measurement_register {
    const char *mr_name;
    void *mr_value;
    u32 mr_size;
    u32 mr_flags;
    enum hash_algo mr_hash;
};

成員

mr_name

MR 的名稱

mr_value

包含 MR 當前值的緩衝區

mr_size

MR 的大小 - 通常是 mr_hash 的摘要大小

mr_flags

一個或多個標誌的按位或,詳見下文

mr_hash

include/uapi/linux/hash_info.h 中定義的可選雜湊識別符號。

描述

CC guest 驅動程式將此結構的陣列封閉在 struct tsm_measurements 中,以詳細說明底層 CC 硬體支援的測量設施。

mr_namemr_value 必須保持有效,直到不再使用此結構。

mr_flags 是零個或多個以下標誌的按位或。

  • TSM_MR_F_READABLE - 與此 MR 對應的 sysfs 屬性是可讀的。

  • TSM_MR_F_WRITABLE - 與此 MR 對應的 sysfs 屬性是可寫的。 語義通常是擴充套件 MR,但可能因架構和 MR 而異。

  • TSM_MR_F_LIVE - 此 MR 的值可能與上次寫入的值不同,因此必須從底層 CC 硬體/韌體讀取回來。

  • TSM_MR_F_RTMR - TSM_MR_F_LIVETSM_MR_F_WRITABLE 的按位或。

  • TSM_MR_F_NOHASH - 此 MR 沒有相關的雜湊演算法。 設定此標誌時,將忽略 mr_hash

struct tsm_measurements

定義 CC 架構特定的測量設施和用於更新測量暫存器 (MR) 的方法

定義:

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);
};

成員

mrs

MR 定義陣列。

nr_mrs

mrs 中的元素數。

重新整理

回撥函式,用於將所有 MR 從 TVM 硬體/韌體載入/同步到核心快取中。

寫入

回撥函式,用於寫入引數 mr 指定的 MR。 通常,寫入 MR 會將輸入緩衝區擴充套件到該 MR。

描述

當正在讀取設定了 TSM_MR_F_LIVE 的 MR 且快取已過期時,將呼叫 refresh 回撥。 它必須重新載入所有設定了 TSM_MR_F_LIVE 的 MR。 函式引數 tm 是一個指標,指向回此結構。

每當寫入 MR 時,都會呼叫 write 回撥。 除了 tm 之外,它還需要兩個額外的引數

  • mr - 指向正在寫入的 MR(tm->mrs 的一個元素)。

  • data - 包含要寫入的位元組,其大小為 mr->mr_size

refreshwrite 都應在成功時返回 0,並在失敗時返回適當的錯誤程式碼。

const struct attribute_group *tsm_mr_create_attribute_group(const struct tsm_measurements *tm)

為測量暫存器 (MR) 建立屬性組

引數

const struct tsm_measurements *tm

指向包含 MR 定義的 struct tsm_measurements 的指標。

描述

此函式建立與 tm->mrs 提供的 MR 定義相對應的屬性。

建立的屬性將引用 tm 及其成員。 在呼叫 tsm_mr_free_attribute_group() 之前,呼叫者不得釋放 tm

上下文

程序上下文。 由於記憶體分配可能會休眠。

返回

  • 成功時,將返回指向屬性組的指標; 否則

  • -EINVAL - 無效的 MR 定義。

  • -ENOMEM - 記憶體不足。

void tsm_mr_free_attribute_group(const struct attribute_group *attr_grp)

釋放 tsm_mr_create_attribute_group() 返回的屬性組

引數

const struct attribute_group *attr_grp

tsm_mr_create_attribute_group() 返回的屬性組

上下文

程序上下文。