xref: /illumos-gate/usr/src/uts/intel/sys/ucode_amd.h (revision d32f26eec03290baae31e85e7c5840280d5c4292)
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