1b65a6011SIsaku Yamahata /* 2b65a6011SIsaku Yamahata * Copyright (c) 2025 Intel Corporation 3b65a6011SIsaku Yamahata * Author: Isaku Yamahata <isaku.yamahata at gmail.com> 4b65a6011SIsaku Yamahata * <isaku.yamahata at intel.com> 5b65a6011SIsaku Yamahata * 6b65a6011SIsaku Yamahata * SPDX-License-Identifier: GPL-2.0-or-later 7b65a6011SIsaku Yamahata */ 8b65a6011SIsaku Yamahata 9b65a6011SIsaku Yamahata #ifndef HW_I386_TDVF_H 10b65a6011SIsaku Yamahata #define HW_I386_TDVF_H 11b65a6011SIsaku Yamahata 12b65a6011SIsaku Yamahata #include "qemu/osdep.h" 13b65a6011SIsaku Yamahata 14b65a6011SIsaku Yamahata #define TDVF_SECTION_TYPE_BFV 0 15b65a6011SIsaku Yamahata #define TDVF_SECTION_TYPE_CFV 1 16b65a6011SIsaku Yamahata #define TDVF_SECTION_TYPE_TD_HOB 2 17b65a6011SIsaku Yamahata #define TDVF_SECTION_TYPE_TEMP_MEM 3 18b65a6011SIsaku Yamahata 19b65a6011SIsaku Yamahata #define TDVF_SECTION_ATTRIBUTES_MR_EXTEND (1U << 0) 20b65a6011SIsaku Yamahata #define TDVF_SECTION_ATTRIBUTES_PAGE_AUG (1U << 1) 21b65a6011SIsaku Yamahata 22b65a6011SIsaku Yamahata typedef struct TdxFirmwareEntry { 23b65a6011SIsaku Yamahata uint32_t data_offset; 24b65a6011SIsaku Yamahata uint32_t data_len; 25b65a6011SIsaku Yamahata uint64_t address; 26b65a6011SIsaku Yamahata uint64_t size; 27b65a6011SIsaku Yamahata uint32_t type; 28b65a6011SIsaku Yamahata uint32_t attributes; 29*4420ba0eSXiaoyao Li 30*4420ba0eSXiaoyao Li void *mem_ptr; 31b65a6011SIsaku Yamahata } TdxFirmwareEntry; 32b65a6011SIsaku Yamahata 33b65a6011SIsaku Yamahata typedef struct TdxFirmware { 34*4420ba0eSXiaoyao Li void *mem_ptr; 35*4420ba0eSXiaoyao Li 36b65a6011SIsaku Yamahata uint32_t nr_entries; 37b65a6011SIsaku Yamahata TdxFirmwareEntry *entries; 38b65a6011SIsaku Yamahata } TdxFirmware; 39b65a6011SIsaku Yamahata 40*4420ba0eSXiaoyao Li #define for_each_tdx_fw_entry(fw, e) \ 41*4420ba0eSXiaoyao Li for (e = (fw)->entries; e != (fw)->entries + (fw)->nr_entries; e++) 42*4420ba0eSXiaoyao Li 43b65a6011SIsaku Yamahata int tdvf_parse_metadata(TdxFirmware *fw, void *flash_ptr, int size); 44b65a6011SIsaku Yamahata 45b65a6011SIsaku Yamahata #endif /* HW_I386_TDVF_H */ 46