Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 6 May 2014 08:52:29 -0700
From:      Neel Natu <neelnatu@gmail.com>
To:        Julian Elischer <julian@freebsd.org>
Cc:        "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "src-committers@freebsd.org" <src-committers@freebsd.org>, Neel Natu <neel@freebsd.org>
Subject:   Re: svn commit: r265364 - head/sys/amd64/vmm
Message-ID:  <CAFgRE9EKZKXAfHvsP3kQS3M2PioGFDyRe3ACg9KkD9zsf_Z-GA@mail.gmail.com>
In-Reply-To: <536860D3.5030205@freebsd.org>
References:  <201405051619.s45GJPr6074677@svn.freebsd.org> <536860D3.5030205@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi Julian,

On Mon, May 5, 2014 at 9:10 PM, Julian Elischer <julian@freebsd.org> wrote:
> On 5/6/14, 12:19 AM, Neel Natu wrote:
>>
>> Author: neel
>> Date: Mon May  5 16:19:24 2014
>> New Revision: 265364
>> URL: http://svnweb.freebsd.org/changeset/base/265364
>>
>> Log:
>>    Virtual machine halt detection is turned on by default. Allow it to be
>>    disabled via the tunable 'hw.vmm.halt_detection'.
>
> So this can only be changed at boot time for the host? not even as a sysctl?

The tunable can be set any time before loading vmm.ko:
- If you load vmm.ko at boot time then it needs to be set via loader.conf.
- If you load vmm.ko after the host is booted then it can be set via kenv(1).

> Why is that?

It is the easiest way to change the default without any additional complexity.

> Why can this not be done from the App?

It can be done but I don't think it would be used much.

best
Neel

>
>> Modified:
>>    head/sys/amd64/vmm/vmm.c
>>
>> Modified: head/sys/amd64/vmm/vmm.c
>>
>> ==============================================================================
>> --- head/sys/amd64/vmm/vmm.c    Mon May  5 15:59:31 2014        (r265363)
>> +++ head/sys/amd64/vmm/vmm.c    Mon May  5 16:19:24 2014        (r265364)
>> @@ -189,6 +189,16 @@ static VMM_STAT(VCPU_TOTAL_RUNTIME, "vcp
>>     SYSCTL_NODE(_hw, OID_AUTO, vmm, CTLFLAG_RW, NULL, NULL);
>>   +/*
>> + * Halt the guest if all vcpus are executing a HLT instruction with
>> + * interrupts disabled.
>> + */
>> +static int halt_detection_enabled = 1;
>> +TUNABLE_INT("hw.vmm.halt_detection", &halt_detection_enabled);
>> +SYSCTL_INT(_hw_vmm, OID_AUTO, halt_detection, CTLFLAG_RDTUN,
>> +    &halt_detection_enabled, 0,
>> +    "Halt VM if all vcpus execute HLT with interrupts disabled");
>> +
>>   static int vmm_ipinum;
>>   SYSCTL_INT(_hw_vmm, OID_AUTO, ipinum, CTLFLAG_RD, &vmm_ipinum, 0,
>>       "IPI vector used for vcpu notifications");
>> @@ -1047,7 +1057,7 @@ vm_handle_hlt(struct vm *vm, int vcpuid,
>>                 if (intr_disabled) {
>>                         wmesg = "vmhalt";
>>                         VCPU_CTR0(vm, vcpuid, "Halted");
>> -                       if (!vcpu_halted) {
>> +                       if (!vcpu_halted && halt_detection_enabled) {
>>                                 vcpu_halted = 1;
>>                                 CPU_SET_ATOMIC(vcpuid, &vm->halted_cpus);
>>                         }
>>
>>
>>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFgRE9EKZKXAfHvsP3kQS3M2PioGFDyRe3ACg9KkD9zsf_Z-GA>