NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

port-amd64/55596: nvmm BIOS lock may not be granular enough



>Number:         55596
>Category:       port-amd64
>Synopsis:       nvmm BIOS lock may not be granular enough
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    port-amd64-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Aug 22 01:55:00 +0000 2020
>Originator:     William Coldwell
>Release:        netbsd-9
>Organization:
The NetBSD Foundation
>Environment:
NetBSD agamemnon.local 9.0_STABLE NetBSD 9.0_STABLE (GENERIC) #0: Thu Aug 13 01:40:53 UTC 2020  root@agamemnon.local:/tmp/netbsd-9/build/objdir/sys/arch/amd64/compile/GENERIC amd64

>Description:
modload nvmm

[ 638963.560892] NVMM: VMX disabled in BIOS
[ 638963.560892] autoconfiguration error: nvmm: cpu not supported
[ 638963.560892] WARNING: module error: modcmd(CMD_INIT) failed for `nvmm', error 86


cpuctl identify 0

cpu0: features1 0x7ffefbff<SSE3,PCLMULQDQ,DTES64,MONITOR,DS-CPL,VMX,SMX,EST>

So the cpu is advertising this, but nvmm says no because of:


        msr = rdmsr(MSR_IA32_FEATURE_CONTROL);
        if ((msr & IA32_FEATURE_CONTROL_LOCK) == 0) {
                printf("NVMM: VMX disabled in BIOS\n");
                return false;
        }
        if ((msr & IA32_FEATURE_CONTROL_OUT_SMX) == 0) {
                printf("NVMM: VMX disabled in BIOS\n");
                return false;
        }


However, I can run VMs/KVM on Linux with this machine, and it, too, is reporting those cpu flags.

Bigger question: Should cpu flags not report flags that are unavailable to the system/VM like we do with MDS/TAA, etc?








>How-To-Repeat:
Have a bios from a manufacturer that wants to sell their little BMC manager adapter, otherwise locks the bios apparently.

modload nvmm
get rejected.

>Fix:
Questionably ignore bios locking, because vendors don't necessarily know best?

Find out why Linux (possibly FreeBSD Bhyve too) works and we don't with native hypervisor.



Home | Main Index | Thread Index | Old Index