git: 5afcca138f6b - main - vmm: Cherry pick illumos commit '13361 bhyve should mask RDT cpuid info'
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 30 Jun 2022 17:27:57 UTC
The branch main has been updated by jhb:
URL: https://cgit.FreeBSD.org/src/commit/?id=5afcca138f6b1f9d6413de586a0cf2baf16da764
commit 5afcca138f6b1f9d6413de586a0cf2baf16da764
Author: Vitaliy Gusev <gusev.vitaliy@gmail.com>
AuthorDate: 2022-06-30 17:27:27 +0000
Commit: John Baldwin <jhb@FreeBSD.org>
CommitDate: 2022-06-30 17:27:27 +0000
vmm: Cherry pick illumos commit '13361 bhyve should mask RDT cpuid info'
Summary:
commit 1a5f1879be09d3de900b2510692dd12003784d84
Author: Patrick Mooney <pmooney@pfmooney.com>
Date: 2020-12-16T20:02:23.000Z
13361 bhyve should mask RDT cpuid info
Reviewed by: Andy Fiddaman <andy@omnios.org>
Reviewed by: Toomas Soome <tsoome@me.com>
Approved by: Robert Mustacchi <rm@fingolfin.org>
https://github.com/illumos/illumos-gate/commit/1a5f1879be09d3de900b2510692dd12003784d8
----
We saw similar warning of GP (on Intel Xeon CPU E5-2630 v4 and VM with Ubuntu 20.04 5.4.0-113-generic) until this commit is applied:
```
[ 1.658880] kernel: unchecked MSR access error: WRMSR to 0xc8f (tried to write 0x0000000000000000) at rIP: 0xffffffffacc735b4 (native_write_msr+0x4/0x30)
[ 1.662734] kernel: Call Trace:
[ 1.663885] kernel: ? clear_closid_rmid.isra.0+0x36/0x40
[ 1.665501] kernel: resctrl_online_cpu+0xdc/0x3f0
[ 1.666952] kernel: ? __switch_to_asm+0x40/0x70
[ 1.668358] kernel: ? __switch_to+0x7f/0x480
[ 1.669693] kernel: ? cat_wrmsr+0x70/0x70
[ 1.670970] kernel: cpuhp_invoke_callback+0x9b/0x580
[ 1.672541] kernel: ? __schedule+0x2eb/0x740
[ 1.673893] kernel: cpuhp_thread_fun+0xb8/0x120
[ 1.675304] kernel: smpboot_thread_fn+0xd0/0x170
[ 1.676685] kernel: kthread+0x104/0x140
[ 1.677948] kernel: ? sort_range+0x30/0x30
[ 1.679299] kernel: ? kthread_park+0x90/0x90
[ 1.680570] kernel: ret_from_fork+0x35/0x40
[ 1.682000] kernel: *** VALIDATE rdt ***
[ 1.683454] kernel: resctrl: L3 monitoring detected
```
Reviewed by: markj, jhb
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D35442
---
sys/amd64/vmm/x86.c | 18 ++++++++++++++++++
sys/amd64/vmm/x86.h | 2 ++
2 files changed, 20 insertions(+)
diff --git a/sys/amd64/vmm/x86.c b/sys/amd64/vmm/x86.c
index c97cb91af4f6..67542fe3b661 100644
--- a/sys/amd64/vmm/x86.c
+++ b/sys/amd64/vmm/x86.c
@@ -576,6 +576,24 @@ x86_emulate_cpuid(struct vm *vm, int vcpu_id, uint64_t *rax, uint64_t *rbx,
}
break;
+ case CPUID_0000_000F:
+ case CPUID_0000_0010:
+ /*
+ * Do not report any Resource Director Technology
+ * capabilities. Exposing control of cache or memory
+ * controller resource partitioning to the guest is not
+ * at all sensible.
+ *
+ * This is already hidden at a high level by masking of
+ * leaf 0x7. Even still, a guest may look here for
+ * detailed capability information.
+ */
+ regs[0] = 0;
+ regs[1] = 0;
+ regs[2] = 0;
+ regs[3] = 0;
+ break;
+
case CPUID_0000_0015:
/*
* Don't report CPU TSC/Crystal ratio and clock
diff --git a/sys/amd64/vmm/x86.h b/sys/amd64/vmm/x86.h
index 318f0b5cf871..4785bb8f46d4 100644
--- a/sys/amd64/vmm/x86.h
+++ b/sys/amd64/vmm/x86.h
@@ -41,6 +41,8 @@
#define CPUID_0000_000A (0xA)
#define CPUID_0000_000B (0xB)
#define CPUID_0000_000D (0xD)
+#define CPUID_0000_000F (0xF)
+#define CPUID_0000_0010 (0x10)
#define CPUID_0000_0015 (0x15)
#define CPUID_8000_0000 (0x80000000)
#define CPUID_8000_0001 (0x80000001)