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