[PATCH 0/2] kvm: disable virtualization on kdump
Avi Kivity
avi at redhat.com
Mon Oct 27 05:13:41 EDT 2008
Eric W. Biederman wrote:
>> NMI IPIs are already used on x86 native_machine_crash_shutdown(), so
>> it wouldn't get more messy that it is currently. We just need to add
>> another bit of code to the code that already runs on an NMI handler.
>>
>
> Yes. And handling of those NMIs is best effort. Nothing fails if
> they don't actually run.
>
>
Unless someone can come up with another way to disable vmx remotely,
that's going to change if you have vmx enabled.
> Well we could fairly easily have a non-modular function that does.
> if (vmx_present && vmx_enabled) {
> turn_off_vmx();
> }
>
> Which at first skim looks like it is all of about 10-20 machine
> instructions.
>
>
There's no way to query whether vmx is enabled or disabled, AFAICT. So
we have to execute vmxoff and ignore possible #UDs.
If we trust the exception handlers, there's no problem. Otherwise we
need to replace the current #UD handler with an iret (perhaps switching
temporarily to another IDT).
> There are a few real places where we need code on the kdump
> path because there it is not possible to do the work any
> other way. However we need to think long and hard about
> that because placing the code anywhere besides in a broken
> and failing kernel is going to be easier to maintain and
> more reliable.
>
vmx blocking INITs makes it impossible to leave this to the new kernel.
> I oppose an atomic notifier because it makes the review
> essentially impossible. If any module can come in and register
> a notifier we can't know what code is running on that code
> path and we can't be certain the code is safe in an abnormal
> case to run on that code path.
>
What if it's a specialized notifier for kexec? Or even kexec_crash?
That said, I have no issue with static code at the call site.
> Right now we only need to support vmx on the kdump path because
> of what appears to be a hardware design bug. Enabling vmx
> apparently disables standard functions like an INIT IPI. Things
> like this do happen but they should be rare.
>
The general kexec path also wants this fixed.
--
error compiling committee.c: too many arguments to function
More information about the kexec
mailing list