Checking bhyve supported features (sysctls)

Matt Churchyard matt.churchyard at
Thu Aug 16 16:01:28 UTC 2018

> Hello,
> I'm looking for better ways to check for bhyve support / available features without trying to scan through dmesg output.

>Yes, it would be very good to remove that, as it usually tries to grep a non-existent file /var/run/dmesg.boot that is not created until after vm_bhyve has been called from /usr/local/etc/rc.d when you have things set to autostartup >in /etc/rc.conf

> I notice that the following 2 sysctl's appear to be set to 1 as soon 
> as the vmm module is loaded
> hw.vmm.vmx.initialized: 1
> hw.vmm.vmx.cap.unrestricted_guest: 1
> Will these be available on both Intel & AMD processors as a way to determine if the module has loaded successfully and can run guests?
> I also see the below sysctl related to iommu.
> hw.vmm.iommu.initialized
> Again, will this be set to 1 as soon as the module is loaded if iommu is supported, or only when it is used?
> There also seems to be a vmm.amdvi.enable sysctl. Would both these need checking or is vmm.iommu enough to determine support on any processor.

>Probalby the safest way for a shell script to decide if bhyve is up and running is to stat /dev/vmm, if that exists then the modules have loaded and initialized and bhyve should be ready to process guests.

Hmm, I don't get /dev/vmm unless I actually have running guests.

>sysctl's mentiond above would be a poor way to make this determination.

It would be nice if sysctls were better documented. If vmx.initialized is set once vmm has successfully loaded, I can't see a better way of checking for bhyve support (assuming it's not Intel specific). This entry definitely exists and is set to 0 if you load the module on a non-supported system, and set to 1 as soon as vmm loads on my Intel test system.


Rod Grimes                                                 rgrimes at

More information about the freebsd-virtualization mailing list