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)