From: Eduardo Habkost <ehabkost@redhat.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Andrew Morton <akpm@osdl.org>,
kvm@vger.kernel.org, kexec@lists.infradead.org,
linux-kernel@vger.kernel.org, "Rafael J. Wysocki" <rjw@sisk.pl>,
Haren Myneni <hbabu@us.ibm.com>,
Simon Horman <horms@verge.net.au>, Avi Kivity <avi@redhat.com>,
Ingo Molnar <mingo@elte.hu>, Andrey Borzenkov <arvidjaar@mail.ru>,
mingo@redhat.com, Vivek Goyal <vgoyal@redhat.com>
Subject: Re: [PATCH 08/16] x86: Emergency virtualization disable function
Date: Wed, 5 Nov 2008 15:52:35 -0200 [thread overview]
Message-ID: <20081105175235.GJ5247@blackpad> (raw)
In-Reply-To: <m1bpwu3wod.fsf@frodo.ebiederm.org>
On Wed, Nov 05, 2008 at 09:33:06AM -0800, Eric W. Biederman wrote:
> Eduardo Habkost <ehabkost@redhat.com> writes:
>
> > +int set_virt_disable_func(void (*fn)(void))
> > +{
> > + int r = 0;
> > +
> > + spin_lock(&virt_disable_lock);
> > + if (!virt_disable_fn)
> > + rcu_assign_pointer(virt_disable_fn, fn);
> > + else
> > + r = -EEXIST;
> > + spin_unlock(&virt_disable_lock);
> > +
> > + return r;
> > +}
> > +EXPORT_SYMBOL(set_virt_disable_func);
>
> EXPORT_SYMBOL_GPL?
>
> > +EXPORT_SYMBOL(clear_virt_disable_func);
> EXPORT_SYMBOL_GPL?
>
> We are talking a core internal api that should not even
> be exported if KVM is compiled into the kernel.
>
> I have had to tell people NO too many times by that
> wanted to shove code on the kexec on panic path that
> had no business there. I do not want to give
> the least little impression that this is an ok hook
> for the to use. The very specific name helps in
> that regard thank you for that. Having the symbol
> exported GPL would help even more.
Agreed. I will change that if nobody else objects.
>
> Overall I think the code is just barely ok.
>
> I don't like the fact that to run 2-3 instructions per cpu we are two
> function pointers deep. It feels like we have an excess of
> abstraction here on the kvm side.
>
> Is it possible to have the individual kvm modules call
> set_virt_disable_func and clear_virt_disable_func? Instead
> of going through the x86_kvm_ops?
>
> It really feels like we have an excess of abstraction here.
We could move the set_virt_disable_func() calls to vmx.c and svm.c (on
hardware_setup/hardware_unsetup). One could argue that it is sort of a
coincidence that we need the code for both vmx and svm.
Avi, what do you think?
--
Eduardo
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Eduardo Habkost <ehabkost@redhat.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Avi Kivity <avi@redhat.com>, Ingo Molnar <mingo@elte.hu>,
Simon Horman <horms@verge.net.au>, Andrew Morton <akpm@osdl.org>,
Vivek Goyal <vgoyal@redhat.com>, Haren Myneni <hbabu@us.ibm.com>,
Andrey Borzenkov <arvidjaar@mail.ru>,
mingo@redhat.com, "Rafael J. Wysocki" <rjw@sisk.pl>,
kexec@lists.infradead.org, kvm@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 08/16] x86: Emergency virtualization disable function
Date: Wed, 5 Nov 2008 15:52:35 -0200 [thread overview]
Message-ID: <20081105175235.GJ5247@blackpad> (raw)
In-Reply-To: <m1bpwu3wod.fsf@frodo.ebiederm.org>
On Wed, Nov 05, 2008 at 09:33:06AM -0800, Eric W. Biederman wrote:
> Eduardo Habkost <ehabkost@redhat.com> writes:
>
> > +int set_virt_disable_func(void (*fn)(void))
> > +{
> > + int r = 0;
> > +
> > + spin_lock(&virt_disable_lock);
> > + if (!virt_disable_fn)
> > + rcu_assign_pointer(virt_disable_fn, fn);
> > + else
> > + r = -EEXIST;
> > + spin_unlock(&virt_disable_lock);
> > +
> > + return r;
> > +}
> > +EXPORT_SYMBOL(set_virt_disable_func);
>
> EXPORT_SYMBOL_GPL?
>
> > +EXPORT_SYMBOL(clear_virt_disable_func);
> EXPORT_SYMBOL_GPL?
>
> We are talking a core internal api that should not even
> be exported if KVM is compiled into the kernel.
>
> I have had to tell people NO too many times by that
> wanted to shove code on the kexec on panic path that
> had no business there. I do not want to give
> the least little impression that this is an ok hook
> for the to use. The very specific name helps in
> that regard thank you for that. Having the symbol
> exported GPL would help even more.
Agreed. I will change that if nobody else objects.
>
> Overall I think the code is just barely ok.
>
> I don't like the fact that to run 2-3 instructions per cpu we are two
> function pointers deep. It feels like we have an excess of
> abstraction here on the kvm side.
>
> Is it possible to have the individual kvm modules call
> set_virt_disable_func and clear_virt_disable_func? Instead
> of going through the x86_kvm_ops?
>
> It really feels like we have an excess of abstraction here.
We could move the set_virt_disable_func() calls to vmx.c and svm.c (on
hardware_setup/hardware_unsetup). One could argue that it is sort of a
coincidence that we need the code for both vmx and svm.
Avi, what do you think?
--
Eduardo
WARNING: multiple messages have this Message-ID (diff)
From: Eduardo Habkost <ehabkost-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: "Eric W. Biederman" <ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
Cc: Andrew Morton <akpm-3NddpPZAyC0@public.gmane.org>,
kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
kexec-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
"Rafael J. Wysocki" <rjw-KKrjLPT3xs0@public.gmane.org>,
Haren Myneni <hbabu-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>,
Simon Horman <horms-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org>,
Avi Kivity <avi-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org>,
Andrey Borzenkov <arvidjaar-JGs/UdohzUI@public.gmane.org>,
mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
Vivek Goyal <vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH 08/16] x86: Emergency virtualization disable function
Date: Wed, 5 Nov 2008 15:52:35 -0200 [thread overview]
Message-ID: <20081105175235.GJ5247@blackpad> (raw)
In-Reply-To: <m1bpwu3wod.fsf-B27657KtZYmhTnVgQlOflh2eb7JE58TQ@public.gmane.org>
On Wed, Nov 05, 2008 at 09:33:06AM -0800, Eric W. Biederman wrote:
> Eduardo Habkost <ehabkost-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> writes:
>
> > +int set_virt_disable_func(void (*fn)(void))
> > +{
> > + int r = 0;
> > +
> > + spin_lock(&virt_disable_lock);
> > + if (!virt_disable_fn)
> > + rcu_assign_pointer(virt_disable_fn, fn);
> > + else
> > + r = -EEXIST;
> > + spin_unlock(&virt_disable_lock);
> > +
> > + return r;
> > +}
> > +EXPORT_SYMBOL(set_virt_disable_func);
>
> EXPORT_SYMBOL_GPL?
>
> > +EXPORT_SYMBOL(clear_virt_disable_func);
> EXPORT_SYMBOL_GPL?
>
> We are talking a core internal api that should not even
> be exported if KVM is compiled into the kernel.
>
> I have had to tell people NO too many times by that
> wanted to shove code on the kexec on panic path that
> had no business there. I do not want to give
> the least little impression that this is an ok hook
> for the to use. The very specific name helps in
> that regard thank you for that. Having the symbol
> exported GPL would help even more.
Agreed. I will change that if nobody else objects.
>
> Overall I think the code is just barely ok.
>
> I don't like the fact that to run 2-3 instructions per cpu we are two
> function pointers deep. It feels like we have an excess of
> abstraction here on the kvm side.
>
> Is it possible to have the individual kvm modules call
> set_virt_disable_func and clear_virt_disable_func? Instead
> of going through the x86_kvm_ops?
>
> It really feels like we have an excess of abstraction here.
We could move the set_virt_disable_func() calls to vmx.c and svm.c (on
hardware_setup/hardware_unsetup). One could argue that it is sort of a
coincidence that we need the code for both vmx and svm.
Avi, what do you think?
--
Eduardo
next prev parent reply other threads:[~2008-11-05 17:53 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-04 14:52 [PATCH 00/14] x86: disable virt on kdump and emergency_restart Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-04 14:52 ` [PATCH 01/16] x86 kdump: Extract kdump-specific code from crash_nmi_callback() Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-04 14:52 ` [PATCH 02/16] x86 kdump: Move crashing_cpu assignment to nmi_shootdown_cpus() Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-04 14:52 ` [PATCH 03/16] x86 kdump: Create kdump_nmi_shootdown_cpus() Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-04 14:52 ` [PATCH 04/16] x86 kdump: Make kdump_nmi_callback() a function ptr on crash_nmi_callback() Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-04 14:52 ` [PATCH 05/16] x86 kdump: Make nmi_shootdown_cpus() non-static Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-04 14:52 ` [PATCH 06/16] x86: Move nmi_shootdown_cpus() to reboot.c Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-04 14:52 ` [PATCH 07/16] x86: Make nmi_shootdown_cpus() available on !SMP and !X86_LOCAL_APIC Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-04 18:15 ` Eduardo Habkost
2008-11-04 18:15 ` Eduardo Habkost
2008-11-04 14:52 ` [PATCH 08/16] x86: Emergency virtualization disable function Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-05 17:33 ` Eric W. Biederman
2008-11-05 17:33 ` Eric W. Biederman
2008-11-05 17:52 ` Eduardo Habkost [this message]
2008-11-05 17:52 ` Eduardo Habkost
2008-11-05 17:52 ` Eduardo Habkost
2008-11-06 9:48 ` Avi Kivity
2008-11-06 9:48 ` Avi Kivity
2008-11-06 10:22 ` Eric W. Biederman
2008-11-06 10:22 ` Eric W. Biederman
2008-11-06 10:30 ` Avi Kivity
2008-11-06 10:30 ` Avi Kivity
2008-11-06 10:30 ` Avi Kivity
2008-11-06 17:45 ` Eduardo Habkost
2008-11-06 17:45 ` Eduardo Habkost
2008-11-06 17:45 ` Eduardo Habkost
2008-11-09 11:23 ` Avi Kivity
2008-11-09 11:23 ` Avi Kivity
2008-11-09 11:23 ` Avi Kivity
2008-11-04 14:52 ` [PATCH 09/16] kdump: Hook emergency_virt_disable() on crash shutdown code Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-05 14:41 ` Vivek Goyal
2008-11-05 14:41 ` Vivek Goyal
2008-11-05 14:41 ` Vivek Goyal
2008-11-05 15:07 ` Eduardo Habkost
2008-11-05 15:07 ` Eduardo Habkost
2008-11-05 15:07 ` Eduardo Habkost
2008-11-04 14:52 ` [PATCH 10/16] x86: disable virtualization on all CPUs if needed, on emergency_restart Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-04 14:52 ` [PATCH 11/16] kvm_x86_ops: crash_hardware_disable() operation Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-04 14:52 ` [PATCH 12/16] kvm: svm: set crash_hardware_disable to svm_hardware_disable Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-04 14:52 ` [PATCH 13/16] kvm: vmx: crash_hardware_disable function Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-04 14:52 ` [PATCH 14/16] kvmx: x86: set kvm_x86_ops earlier on kvm_arch_init() Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-04 14:52 ` [PATCH 15/16] kvm: x86: set kdump virt_disable function on initialization Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-05 17:26 ` Eric W. Biederman
2008-11-05 17:26 ` Eric W. Biederman
2008-11-05 17:50 ` Eduardo Habkost
2008-11-05 17:50 ` Eduardo Habkost
2008-11-05 17:50 ` Eduardo Habkost
2008-11-06 9:44 ` Avi Kivity
2008-11-06 9:44 ` Avi Kivity
2008-11-06 9:44 ` Avi Kivity
2008-11-04 14:52 ` [PATCH 16/16] Revert "x86: default to reboot via ACPI" Eduardo Habkost
2008-11-04 14:52 ` Eduardo Habkost
2008-11-04 16:54 ` [PATCH 00/14] x86: disable virt on kdump and emergency_restart Avi Kivity
2008-11-04 16:54 ` Avi Kivity
2008-11-04 16:54 ` Avi Kivity
2008-11-05 14:44 ` Vivek Goyal
2008-11-05 14:44 ` Vivek Goyal
2008-11-05 15:04 ` Eduardo Habkost
2008-11-05 15:04 ` Eduardo Habkost
2008-11-06 9:52 ` Avi Kivity
2008-11-06 9:52 ` Avi Kivity
2008-11-05 16:33 ` Ingo Molnar
2008-11-05 16:33 ` Ingo Molnar
2008-11-05 16:33 ` Ingo Molnar
2008-11-06 9:49 ` Avi Kivity
2008-11-06 9:49 ` Avi Kivity
2008-11-06 9:49 ` Avi Kivity
2008-11-06 12:28 ` Eduardo Habkost
2008-11-06 12:28 ` Eduardo Habkost
2008-11-06 12:28 ` Eduardo Habkost
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081105175235.GJ5247@blackpad \
--to=ehabkost@redhat.com \
--cc=akpm@osdl.org \
--cc=arvidjaar@mail.ru \
--cc=avi@redhat.com \
--cc=ebiederm@xmission.com \
--cc=hbabu@us.ibm.com \
--cc=horms@verge.net.au \
--cc=kexec@lists.infradead.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mingo@redhat.com \
--cc=rjw@sisk.pl \
--cc=vgoyal@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.