/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASM_X86_SEAMLDR_H #define _ASM_X86_SEAMLDR_H #include /* * This is the "SEAMLDR_INFO" data structure defined in the * "SEAM Loader (SEAMLDR) Interface Specification". * * Must be aligned to a 256-byte boundary. */ struct seamldr_info { u32 version; u32 attributes; u32 vendor_id; u32 build_date; u16 build_num; u16 minor_version; u16 major_version; u16 update_version; u32 acm_x2apicid; u32 num_remaining_updates; u8 seam_info[128]; u8 seam_ready; u8 seam_debug; u8 p_seam_ready; u8 reserved[93]; } __packed __aligned(256); static_assert(sizeof(struct seamldr_info) == 256); int seamldr_get_info(struct seamldr_info *seamldr_info); int seamldr_install_module(const u8 *data, u32 data_len); void seamldr_lock_module_update(void); void seamldr_unlock_module_update(void); #endif /* _ASM_X86_SEAMLDR_H */