mirror of
https://github.com/opnsense/src.git
synced 2026-06-06 23:32:52 -04:00
bhyve: Suppress unimplemented MSR related warnings
When using bhyve on x86, rdmsr and wrmsr can emit many warnings when dealing with unimplemented MSRs. An option x86.verbosemsr is created to control these warnings. By default, the MSR related warnings are suppressed to avoid spamming the console. Sponsored by: Netflix Reviewed by: imp, jhb Pull Request: https://github.com/freebsd/freebsd-src/pull/1611
This commit is contained in:
parent
3209f63851
commit
a27328ea39
3 changed files with 16 additions and 4 deletions
|
|
@ -63,6 +63,7 @@ bhyve_init_config(void)
|
|||
set_config_bool("acpi_tables_in_memory", true);
|
||||
set_config_value("memory.size", "256M");
|
||||
set_config_bool("x86.strictmsr", true);
|
||||
set_config_bool("x86.verbosemsr", false);
|
||||
set_config_value("lpc.fwcfg", "bhyve");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -107,8 +107,11 @@ vmexit_rdmsr(struct vmctx *ctx __unused, struct vcpu *vcpu,
|
|||
val = 0;
|
||||
error = emulate_rdmsr(vcpu, vme->u.msr.code, &val);
|
||||
if (error != 0) {
|
||||
EPRINTLN("rdmsr to register %#x on vcpu %d",
|
||||
vme->u.msr.code, vcpu_id(vcpu));
|
||||
if (get_config_bool("x86.strictmsr") ||
|
||||
get_config_bool("x86.verbosemsr")) {
|
||||
EPRINTLN("rdmsr to register %#x on vcpu %d",
|
||||
vme->u.msr.code, vcpu_id(vcpu));
|
||||
}
|
||||
if (get_config_bool("x86.strictmsr")) {
|
||||
vm_inject_gp(vcpu);
|
||||
return (VMEXIT_CONTINUE);
|
||||
|
|
@ -137,8 +140,11 @@ vmexit_wrmsr(struct vmctx *ctx __unused, struct vcpu *vcpu,
|
|||
|
||||
error = emulate_wrmsr(vcpu, vme->u.msr.code, vme->u.msr.wval);
|
||||
if (error != 0) {
|
||||
EPRINTLN("wrmsr to register %#x(%#lx) on vcpu %d",
|
||||
vme->u.msr.code, vme->u.msr.wval, vcpu_id(vcpu));
|
||||
if (get_config_bool("x86.strictmsr") ||
|
||||
get_config_bool("x86.verbosemsr")) {
|
||||
EPRINTLN("wrmsr to register %#x(%#lx) on vcpu %d",
|
||||
vme->u.msr.code, vme->u.msr.wval, vcpu_id(vcpu));
|
||||
}
|
||||
if (get_config_bool("x86.strictmsr")) {
|
||||
vm_inject_gp(vcpu);
|
||||
return (VMEXIT_CONTINUE);
|
||||
|
|
|
|||
|
|
@ -240,6 +240,11 @@ By default, writes are ignored and reads return all bits set.
|
|||
Inject a general protection fault if a guest accesses a Model Specific
|
||||
Register (MSR) that is not emulated.
|
||||
If this is false, writes are ignored and reads return zero.
|
||||
.It Va x86.verbosemsr Ta bool Ta false Ta
|
||||
Enable verbose MSR print out. When this option is true,
|
||||
messages related to reading from (rdmsr) and writing to (wrmsr)
|
||||
MSRs on virtual CPUs will be printed out. This can be useful for
|
||||
debugging purposes.
|
||||
.It Va x86.vmexit_on_hlt Ta bool Ta false Ta
|
||||
Force a VM exit when a guest CPU executes the
|
||||
.Dv HLT
|
||||
|
|
|
|||
Loading…
Reference in a new issue