Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/x86/coco/tdx/debug.c
26489 views
1
// SPDX-License-Identifier: GPL-2.0
2
3
#undef pr_fmt
4
#define pr_fmt(fmt) "tdx: " fmt
5
6
#include <linux/array_size.h>
7
#include <linux/printk.h>
8
#include <asm/tdx.h>
9
10
#define DEF_TDX_ATTR_NAME(_name) [TDX_ATTR_##_name##_BIT] = __stringify(_name)
11
12
static __initdata const char *tdx_attributes[] = {
13
DEF_TDX_ATTR_NAME(DEBUG),
14
DEF_TDX_ATTR_NAME(HGS_PLUS_PROF),
15
DEF_TDX_ATTR_NAME(PERF_PROF),
16
DEF_TDX_ATTR_NAME(PMT_PROF),
17
DEF_TDX_ATTR_NAME(ICSSD),
18
DEF_TDX_ATTR_NAME(LASS),
19
DEF_TDX_ATTR_NAME(SEPT_VE_DISABLE),
20
DEF_TDX_ATTR_NAME(MIGRTABLE),
21
DEF_TDX_ATTR_NAME(PKS),
22
DEF_TDX_ATTR_NAME(KL),
23
DEF_TDX_ATTR_NAME(TPA),
24
DEF_TDX_ATTR_NAME(PERFMON),
25
};
26
27
#define DEF_TD_CTLS_NAME(_name) [TD_CTLS_##_name##_BIT] = __stringify(_name)
28
29
static __initdata const char *tdcs_td_ctls[] = {
30
DEF_TD_CTLS_NAME(PENDING_VE_DISABLE),
31
DEF_TD_CTLS_NAME(ENUM_TOPOLOGY),
32
DEF_TD_CTLS_NAME(VIRT_CPUID2),
33
DEF_TD_CTLS_NAME(REDUCE_VE),
34
DEF_TD_CTLS_NAME(LOCK),
35
};
36
37
void __init tdx_dump_attributes(u64 td_attr)
38
{
39
pr_info("Attributes:");
40
41
for (int i = 0; i < ARRAY_SIZE(tdx_attributes); i++) {
42
if (!tdx_attributes[i])
43
continue;
44
if (td_attr & BIT(i))
45
pr_cont(" %s", tdx_attributes[i]);
46
td_attr &= ~BIT(i);
47
}
48
49
if (td_attr)
50
pr_cont(" unknown:%#llx", td_attr);
51
pr_cont("\n");
52
53
}
54
55
void __init tdx_dump_td_ctls(u64 td_ctls)
56
{
57
pr_info("TD_CTLS:");
58
59
for (int i = 0; i < ARRAY_SIZE(tdcs_td_ctls); i++) {
60
if (!tdcs_td_ctls[i])
61
continue;
62
if (td_ctls & BIT(i))
63
pr_cont(" %s", tdcs_td_ctls[i]);
64
td_ctls &= ~BIT(i);
65
}
66
if (td_ctls)
67
pr_cont(" unknown:%#llx", td_ctls);
68
pr_cont("\n");
69
}
70
71