svn commit: r186252 - head/sys/kern

Antoine Brodin antoine at freebsd.org
Sat Dec 27 18:13:50 UTC 2008


On Wed, Dec 17, 2008 at 8:57 PM, Ivan Voras <ivoras at freebsd.org> wrote:
> Author: ivoras
> Date: Wed Dec 17 19:57:12 2008
> New Revision: 186252
> URL: http://svn.freebsd.org/changeset/base/186252
>
> Log:
>  Introduce a sysctl kern.vm_guest that reflects what the kernel knows about
>  it running under a virtual environment. This also introduces a globally
>  accessible variable vm_guest that can be used where appropriate in the
>  kernel to inspect this environment.
>
>  To make it easier for the long run, an enum VM_GUEST is also introduced,
>  which could possibly be factored out in a header somewhere (but the
>  question is where - vm/vm_param.h? sys/param.h?) so it eventually becomes
>  a part of the standard KPI. In any case, it's a start.
>
>  The purpose of all this isn't to absolutely detect that the OS is running
>  under a virtual environment (cf. "redpill") but to allow the parts of the
>  kernel and the userland that care about this particular aspect and can do
>  something useful depending on it to have a standardised interface. Reducing
>  kern.hz is one example but there are other things that could be done like
>  avoiding context switches, not using CPU instructions that are known to be
>  slow in emulation, possibly different strategies in VM (memory) allocation,
>  CPU scheduling, etc.
>
>  It isn't clear if the JAILS/VIMAGE functionality should also be exposed
>  by this particular mechanism (probably not since they're not "full"
>  virtual hardware environments). Sometime in the future another sysctl and
>  a variable could be introduced to reflect if the kernel supports any kind
>  of virtual hosting (e.g. VMWare VMI, Xen dom0).
>
>  Reviewed by:  silence from src-commiters@, virtualization@, kmacy@
>  Approved by:  gnn (mentor)
>  Security:     Obscurity doesn't help.
>
> Modified:
>  head/sys/kern/subr_param.c
>
> Modified: head/sys/kern/subr_param.c
[snip]
> +enum VM_GUEST { VM_GUEST_NO, VM_GUEST_VM, VM_GUEST_XEN };
> +
[snip]
> -               hz = detect_virtual() ? HZ_VM : HZ;
> +               hz = vm_guest > VM_GUEST_NO ? HZ_VM : HZ;
[snip]

Hi Ivan,

Could you change VM_GUEST_NO / VM_GUEST_VM / VM_GUEST_XEN to a #define
or explicitly initialize them?
The magnitude comparison between vm_guest and VM_GUEST_NO looks like
gratuitous obfuscation.

Cheers,

Antoine


More information about the svn-src-all mailing list