1 /*
2  * Copyright (C) 2020-2022 Intel Corporation.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef RTCT_H
8 #define RTCT_H
9 
10 /*Entry IDs for RTCT version 2*/
11 #define	RTCT_V2_COMPATIBILITY	0U
12 #define	RTCT_V2_RTCD_LIMIT	1U
13 #define	RTCT_V2_CRL_BINARY	2U
14 #define	RTCT_V2_IA_WAYMASK	3U
15 #define	RTCT_V2_WRC_WAYMASK	4U
16 #define	RTCT_V2_GT_WAYMASK	5U
17 #define	RTCT_V2_SSRAM_WAYMASK	6U
18 #define	RTCT_V2_SSRAM	7U
19 #define	RTCT_V2_MEMORY_HIERARCHY_LATENCY	8U
20 #define	RTCT_V2_ERROR_LOG_ADDRESS	9U
21 
22 struct rtct_entry {
23 	uint16_t size;
24 	uint16_t format_version;
25 	uint32_t type;
26 	uint32_t data[64];
27 } __packed;
28 
29 struct rtct_entry_data_compatibility {
30 	uint32_t rtct_ver_major;
31 	uint32_t rtct_ver_minor;
32 	uint32_t rtcd_ver_major;
33 	uint32_t rtcd_ver_Minor;
34 } __packed;
35 
36 struct rtct_entry_data_ssram_waymask {
37 	uint32_t cache_level;
38 	uint32_t cache_id;
39 	uint32_t waymask;
40 } __packed;
41 
42 struct rtct_entry_data_ssram_v2 {
43 	uint32_t cache_level;
44 	uint32_t cache_id;
45 	uint64_t base;
46 	uint32_t size;
47 	uint32_t shared;
48 } __packed;
49 
50 uint64_t get_vssram_gpa_base(void);
51 uint64_t get_vssram_size(void);
52 uint8_t *get_vssram_vrtct(void);
53 void clean_vssram_configs(void);
54 int init_vssram(struct vmctx *ctx);
55 void deinit_vssram(struct vmctx *ctx);
56 int parse_vssram_buf_params(const char *opt);
57 
58 #endif  /* RTCT_H */
59