1 #include <nuklear.h>
2
3 #include <ui/display.h>
4 #include <ui/font.h>
5 #include <ui/window.h>
6
7 #include <vuln/ridl.h>
8
9 #include "style.h"
10
11 void
show_ridl_tab(struct nk_context * ctx,struct style * style,struct ridl_info * info,int flags)12 show_ridl_tab(struct nk_context *ctx, struct style *style, struct ridl_info *info, int flags)
13 {
14 float ratios[] = {0.3f, 0.7f};
15 int ret;
16
17 ui_set_font(ctx, style->header_font);
18 ret = nk_tree_push(ctx, NK_TREE_TAB, "Micro-architectural Data Sampling", flags);
19 ui_set_font(ctx, style->font);
20
21 if (!ret)
22 return;
23
24 nk_layout_row(ctx, NK_DYNAMIC, 20, 2, ratios);
25 ui_set_font(ctx, style->bold_font);
26 nk_label_wrap(ctx, "Line Fill Buffers (MFBDS):");
27 ui_set_font(ctx, style->font);
28
29 if (info->mfbds) {
30 nk_label_colored_wrap(ctx, "Vulnerable", style->red);
31 } else {
32 nk_label_colored_wrap(ctx, "Not Affected", style->green);
33 }
34
35 ui_set_font(ctx, style->bold_font);
36 nk_label_wrap(ctx, "Store Buffers (MSBDS):");
37 ui_set_font(ctx, style->font);
38
39 if (info->msbds) {
40 nk_label_colored_wrap(ctx, "Vulnerable", style->red);
41 } else {
42 nk_label_colored_wrap(ctx, "Not Affected", style->green);
43 }
44
45 ui_set_font(ctx, style->bold_font);
46 nk_label_wrap(ctx, "Load Ports (MLPDS):");
47 ui_set_font(ctx, style->font);
48
49 if (info->mlpds) {
50 nk_label_colored_wrap(ctx, "Vulnerable", style->red);
51 } else {
52 nk_label_colored_wrap(ctx, "Not Affected", style->green);
53 }
54
55 ui_set_font(ctx, style->bold_font);
56 nk_label_wrap(ctx, "Uncached Memory (MDSUM)");
57 ui_set_font(ctx, style->font);
58
59 if (info->mdsum) {
60 nk_label_colored_wrap(ctx, "Vulnerable", style->red);
61 } else {
62 nk_label_colored_wrap(ctx, "Not Affected", style->green);
63 }
64
65 ui_set_font(ctx, style->bold_font);
66 nk_label_wrap(ctx, "SMT:");
67 ui_set_font(ctx, style->font);
68
69 if ((info->mfbds || info->msbds || info->mlpds) && info->smt_vuln) {
70 nk_label_colored_wrap(ctx, "Vulnerable", style->red);
71 } else {
72 nk_label_colored_wrap(ctx, "Unaffected",
73 (info->mfbds || info->msbds || info->mlpds) ? style->green : style->black);
74 }
75
76 ui_set_font(ctx, style->bold_font);
77 nk_label_wrap(ctx, "MD_CLEAR:");
78 ui_set_font(ctx, style->font);
79
80 if (info->mfbds || info->msbds || info->mlpds) {
81 if (info->md_clear) {
82 nk_label_colored_wrap(ctx, "Available", style->green);
83 } else {
84 nk_label_colored_wrap(ctx, "Not Available", style->red);
85 }
86 } else {
87 nk_label_colored_wrap(ctx, "Not Required", style->green);
88 }
89
90 nk_tree_pop(ctx);
91 }
92