1*d32f26eeSAndy Fiddaman /* 2*d32f26eeSAndy Fiddaman * CDDL HEADER START 3*d32f26eeSAndy Fiddaman * 4*d32f26eeSAndy Fiddaman * The contents of this file are subject to the terms of the 5*d32f26eeSAndy Fiddaman * Common Development and Distribution License (the "License"). 6*d32f26eeSAndy Fiddaman * You may not use this file except in compliance with the License. 7*d32f26eeSAndy Fiddaman * 8*d32f26eeSAndy Fiddaman * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*d32f26eeSAndy Fiddaman * or http://www.opensolaris.org/os/licensing. 10*d32f26eeSAndy Fiddaman * See the License for the specific language governing permissions 11*d32f26eeSAndy Fiddaman * and limitations under the License. 12*d32f26eeSAndy Fiddaman * 13*d32f26eeSAndy Fiddaman * When distributing Covered Code, include this CDDL HEADER in each 14*d32f26eeSAndy Fiddaman * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*d32f26eeSAndy Fiddaman * If applicable, add the following below this CDDL HEADER, with the 16*d32f26eeSAndy Fiddaman * fields enclosed by brackets "[]" replaced with your own identifying 17*d32f26eeSAndy Fiddaman * information: Portions Copyright [yyyy] [name of copyright owner] 18*d32f26eeSAndy Fiddaman * 19*d32f26eeSAndy Fiddaman * CDDL HEADER END 20*d32f26eeSAndy Fiddaman */ 21*d32f26eeSAndy Fiddaman /* 22*d32f26eeSAndy Fiddaman * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23*d32f26eeSAndy Fiddaman * Use is subject to license terms. 24*d32f26eeSAndy Fiddaman * 25*d32f26eeSAndy Fiddaman * Copyright 2021 OmniOS Community Edition (OmniOSce) Association. 26*d32f26eeSAndy Fiddaman * Copyright 2022 Joyent, Inc. 27*d32f26eeSAndy Fiddaman * Copyright 2023 Oxide Computer Company 28*d32f26eeSAndy Fiddaman */ 29*d32f26eeSAndy Fiddaman 30*d32f26eeSAndy Fiddaman #ifndef _SYS_UCODE_AMD_H 31*d32f26eeSAndy Fiddaman #define _SYS_UCODE_AMD_H 32*d32f26eeSAndy Fiddaman 33*d32f26eeSAndy Fiddaman #include <sys/types.h> 34*d32f26eeSAndy Fiddaman #include <ucode/ucode_errno.h> 35*d32f26eeSAndy Fiddaman 36*d32f26eeSAndy Fiddaman #ifdef __cplusplus 37*d32f26eeSAndy Fiddaman extern "C" { 38*d32f26eeSAndy Fiddaman #endif 39*d32f26eeSAndy Fiddaman 40*d32f26eeSAndy Fiddaman /* 41*d32f26eeSAndy Fiddaman * AMD Microcode file information 42*d32f26eeSAndy Fiddaman */ 43*d32f26eeSAndy Fiddaman typedef struct ucode_header_amd { 44*d32f26eeSAndy Fiddaman uint32_t uh_date; 45*d32f26eeSAndy Fiddaman uint32_t uh_patch_id; 46*d32f26eeSAndy Fiddaman uint32_t uh_internal; /* patch data id & length, init flag */ 47*d32f26eeSAndy Fiddaman uint32_t uh_cksum; 48*d32f26eeSAndy Fiddaman uint32_t uh_nb_id; 49*d32f26eeSAndy Fiddaman uint32_t uh_sb_id; 50*d32f26eeSAndy Fiddaman uint16_t uh_cpu_rev; 51*d32f26eeSAndy Fiddaman uint8_t uh_nb_rev; 52*d32f26eeSAndy Fiddaman uint8_t uh_sb_rev; 53*d32f26eeSAndy Fiddaman uint32_t uh_bios_rev; 54*d32f26eeSAndy Fiddaman uint32_t uh_match[8]; 55*d32f26eeSAndy Fiddaman } ucode_header_amd_t; 56*d32f26eeSAndy Fiddaman 57*d32f26eeSAndy Fiddaman typedef struct ucode_file_amd { 58*d32f26eeSAndy Fiddaman /* 59*d32f26eeSAndy Fiddaman * The combined size of these fields adds up to 8KiB (8192 bytes). 60*d32f26eeSAndy Fiddaman * If support is needed for larger update files, increase the size of 61*d32f26eeSAndy Fiddaman * the uf_encr element. 62*d32f26eeSAndy Fiddaman */ 63*d32f26eeSAndy Fiddaman ucode_header_amd_t uf_header; 64*d32f26eeSAndy Fiddaman uint8_t uf_data[896]; 65*d32f26eeSAndy Fiddaman uint8_t uf_resv[896]; 66*d32f26eeSAndy Fiddaman uint8_t uf_code_present; 67*d32f26eeSAndy Fiddaman uint8_t uf_code[191]; 68*d32f26eeSAndy Fiddaman uint8_t uf_encr[6144]; 69*d32f26eeSAndy Fiddaman } ucode_file_amd_t; 70*d32f26eeSAndy Fiddaman 71*d32f26eeSAndy Fiddaman typedef struct ucode_eqtbl_amd { 72*d32f26eeSAndy Fiddaman uint32_t ue_inst_cpu; 73*d32f26eeSAndy Fiddaman uint32_t ue_fixed_mask; 74*d32f26eeSAndy Fiddaman uint32_t ue_fixed_comp; 75*d32f26eeSAndy Fiddaman uint16_t ue_equiv_cpu; 76*d32f26eeSAndy Fiddaman uint16_t ue_reserved; 77*d32f26eeSAndy Fiddaman } ucode_eqtbl_amd_t; 78*d32f26eeSAndy Fiddaman 79*d32f26eeSAndy Fiddaman #define UCODE_AMD_EQUIVALENCE_TABLE_NAME "equivalence-table" 80*d32f26eeSAndy Fiddaman #define UCODE_MAX_NAME_LEN_AMD (sizeof (UCODE_AMD_EQUIVALENCE_TABLE_NAME)) 81*d32f26eeSAndy Fiddaman 82*d32f26eeSAndy Fiddaman #ifdef __cplusplus 83*d32f26eeSAndy Fiddaman } 84*d32f26eeSAndy Fiddaman #endif 85*d32f26eeSAndy Fiddaman 86*d32f26eeSAndy Fiddaman #endif /* _SYS_UCODE_AMD_H */ 87