xref: /illumos-gate/usr/src/uts/intel/sys/smt_machcpu.h (revision 7c8c0b82)
1*7c8c0b82SPatrick Mooney /*
2*7c8c0b82SPatrick Mooney  * This file and its contents are supplied under the terms of the
3*7c8c0b82SPatrick Mooney  * Common Development and Distribution License ("CDDL"), version 1.0.
4*7c8c0b82SPatrick Mooney  * You may only use this file in accordance with the terms of version
5*7c8c0b82SPatrick Mooney  * 1.0 of the CDDL.
6*7c8c0b82SPatrick Mooney  *
7*7c8c0b82SPatrick Mooney  * A full copy of the text of the CDDL should have accompanied this
8*7c8c0b82SPatrick Mooney  * source.  A copy of the CDDL is also available via the Internet at
9*7c8c0b82SPatrick Mooney  * http://www.illumos.org/license/CDDL.
10*7c8c0b82SPatrick Mooney  */
11*7c8c0b82SPatrick Mooney 
12*7c8c0b82SPatrick Mooney /*
13*7c8c0b82SPatrick Mooney  * Copyright 2019 Joyent, Inc.
14*7c8c0b82SPatrick Mooney  * Copyright 2022 Oxide Computer Company
15*7c8c0b82SPatrick Mooney  */
16*7c8c0b82SPatrick Mooney 
17*7c8c0b82SPatrick Mooney #ifndef	_SYS_SMT_MACHCPU_H
18*7c8c0b82SPatrick Mooney #define	_SYS_SMT_MACHCPU_H
19*7c8c0b82SPatrick Mooney 
20*7c8c0b82SPatrick Mooney #include <sys/types.h>
21*7c8c0b82SPatrick Mooney 
22*7c8c0b82SPatrick Mooney #ifdef	__cplusplus
23*7c8c0b82SPatrick Mooney extern "C" {
24*7c8c0b82SPatrick Mooney #endif
25*7c8c0b82SPatrick Mooney 
26*7c8c0b82SPatrick Mooney /*
27*7c8c0b82SPatrick Mooney  * The SMT exclusion logic requires `struct cpu_smt` be present in
28*7c8c0b82SPatrick Mooney  * `struct machcpu` as the field `mcpu_smt`.  It is defined here, on its own, so
29*7c8c0b82SPatrick Mooney  * it may be easily included by the relevant machine architecture(s).
30*7c8c0b82SPatrick Mooney  */
31*7c8c0b82SPatrick Mooney typedef struct cpu_smt {
32*7c8c0b82SPatrick Mooney 	lock_t cs_lock;
33*7c8c0b82SPatrick Mooney 	char cs_pad[56];
34*7c8c0b82SPatrick Mooney 	struct cpu *cs_sib;
35*7c8c0b82SPatrick Mooney 	volatile uint64_t cs_intr_depth;
36*7c8c0b82SPatrick Mooney 	volatile uint64_t cs_state;
37*7c8c0b82SPatrick Mooney 	volatile uint64_t cs_sibstate;
38*7c8c0b82SPatrick Mooney } cpu_smt_t;
39*7c8c0b82SPatrick Mooney 
40*7c8c0b82SPatrick Mooney #ifdef	__cplusplus
41*7c8c0b82SPatrick Mooney }
42*7c8c0b82SPatrick Mooney #endif
43*7c8c0b82SPatrick Mooney 
44*7c8c0b82SPatrick Mooney #endif	/* _SYS_SMT_MACHCPU_H */
45