From: Gleb Natapov <gleb@redhat.com>
To: Igor Mammedov <imammedo@redhat.com>
Cc: libvir-list@redhat.com, "Andreas Färber" <afaerber@suse.de>,
"Eduardo Habkost" <ehabkost@redhat.com>,
kvm@vger.kernel.org, qemu-devel@nongnu.org
Subject: Re: [PATCH qom-cpu 10/11] target-i386: Call kvm_check_features_against_host() only if CONFIG_KVM is set
Date: Mon, 7 Jan 2013 15:30:26 +0200 [thread overview]
Message-ID: <20130107133026.GE3440@redhat.com> (raw)
In-Reply-To: <20130107141514.189f542e@thinkpad.mammed.net>
On Mon, Jan 07, 2013 at 02:15:14PM +0100, Igor Mammedov wrote:
> On Mon, 7 Jan 2013 10:00:09 -0200
> Eduardo Habkost <ehabkost@redhat.com> wrote:
>
> > On Sun, Jan 06, 2013 at 04:27:19PM +0200, Gleb Natapov wrote:
> > > On Fri, Jan 04, 2013 at 08:01:11PM -0200, Eduardo Habkost wrote:
> > > > This will be necessary once kvm_check_features_against_host() starts
> > > > using KVM-specific definitions (so it won't compile anymore if
> > > > CONFIG_KVM is not set).
> > > >
> > > > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> > > > ---
> > > > target-i386/cpu.c | 4 ++++
> > > > 1 file changed, 4 insertions(+)
> > > >
> > > > diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> > > > index 1c3c7e1..876b0f6 100644
> > > > --- a/target-i386/cpu.c
> > > > +++ b/target-i386/cpu.c
> > > > @@ -936,6 +936,7 @@ static void kvm_cpu_fill_host(x86_def_t *x86_cpu_def)
> > > > #endif /* CONFIG_KVM */
> > > > }
> > > >
> > > > +#ifdef CONFIG_KVM
> > > > static int unavailable_host_feature(struct model_features_t *f, uint32_t mask)
> > > > {
> > > > int i;
> > > > @@ -987,6 +988,7 @@ static int kvm_check_features_against_host(x86_def_t *guest_def)
> > > > }
> > > > return rv;
> > > > }
> > > > +#endif
> > > >
> > > > static void x86_cpuid_version_get_family(Object *obj, Visitor *v, void *opaque,
> > > > const char *name, Error **errp)
> > > > @@ -1410,10 +1412,12 @@ static int cpu_x86_parse_featurestr(x86_def_t *x86_cpu_def, char *features)
> > > > x86_cpu_def->kvm_features &= ~minus_kvm_features;
> > > > x86_cpu_def->svm_features &= ~minus_svm_features;
> > > > x86_cpu_def->cpuid_7_0_ebx_features &= ~minus_7_0_ebx_features;
> > > > +#ifdef CONFIG_KVM
> > > > if (check_cpuid && kvm_enabled()) {
> > > > if (kvm_check_features_against_host(x86_cpu_def) && enforce_cpuid)
> > > > goto error;
> > > > }
> > > > +#endif
> > > Provide kvm_check_features_against_host() stub if !CONFIG_KVM and drop
> > > ifdef here.
> >
> > I will do. Igor probably will have to change his "target-i386: move
> > kvm_check_features_against_host() check to realize time" patch to use
> > the same approach, too.
>
>
> Gleb,
>
> Why do stub here? As result we will be adding more ifdef-s just in other
> places. Currently kvm_cpu_fill_host(), unavailable_host_feature() and
Why will we be adding more ifdef-s in other places?
> kvm_check_features_against_host() are bundled together in cpu.c so we could
> instead ifdef whole block. Like here:
> http://www.mail-archive.com/qemu-devel@nongnu.org/msg146536.html
>
That's fine, but you can avoid things like:
if (kvm_enabled() && name && strcmp(name, "host") == 0) {
+#ifdef CONFIG_KVM
kvm_cpu_fill_host(x86_cpu_def);
+#endif
in your patch by providing stub for kvm_cpu_fill_host() for !CONFIG_KVM
case. This is common practice really. Avoid ifdefs in the code.
> For me code looks more readable with ifdef here, if we have stub, a reader
> would have to look at kvm_check_features_against_host() body to see if it does
> anything.
>
If reader cares about kvm it has to anyway. If he does not, there is
friendly kvm_enabled() (which is stub in case of !CONFIG_KVM BTW) to
tell him that he does not care. No need additional ifdef there.
--
Gleb.
WARNING: multiple messages have this Message-ID (diff)
From: Gleb Natapov <gleb@redhat.com>
To: Igor Mammedov <imammedo@redhat.com>
Cc: libvir-list@redhat.com, "Andreas Färber" <afaerber@suse.de>,
"Eduardo Habkost" <ehabkost@redhat.com>,
kvm@vger.kernel.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH qom-cpu 10/11] target-i386: Call kvm_check_features_against_host() only if CONFIG_KVM is set
Date: Mon, 7 Jan 2013 15:30:26 +0200 [thread overview]
Message-ID: <20130107133026.GE3440@redhat.com> (raw)
In-Reply-To: <20130107141514.189f542e@thinkpad.mammed.net>
On Mon, Jan 07, 2013 at 02:15:14PM +0100, Igor Mammedov wrote:
> On Mon, 7 Jan 2013 10:00:09 -0200
> Eduardo Habkost <ehabkost@redhat.com> wrote:
>
> > On Sun, Jan 06, 2013 at 04:27:19PM +0200, Gleb Natapov wrote:
> > > On Fri, Jan 04, 2013 at 08:01:11PM -0200, Eduardo Habkost wrote:
> > > > This will be necessary once kvm_check_features_against_host() starts
> > > > using KVM-specific definitions (so it won't compile anymore if
> > > > CONFIG_KVM is not set).
> > > >
> > > > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> > > > ---
> > > > target-i386/cpu.c | 4 ++++
> > > > 1 file changed, 4 insertions(+)
> > > >
> > > > diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> > > > index 1c3c7e1..876b0f6 100644
> > > > --- a/target-i386/cpu.c
> > > > +++ b/target-i386/cpu.c
> > > > @@ -936,6 +936,7 @@ static void kvm_cpu_fill_host(x86_def_t *x86_cpu_def)
> > > > #endif /* CONFIG_KVM */
> > > > }
> > > >
> > > > +#ifdef CONFIG_KVM
> > > > static int unavailable_host_feature(struct model_features_t *f, uint32_t mask)
> > > > {
> > > > int i;
> > > > @@ -987,6 +988,7 @@ static int kvm_check_features_against_host(x86_def_t *guest_def)
> > > > }
> > > > return rv;
> > > > }
> > > > +#endif
> > > >
> > > > static void x86_cpuid_version_get_family(Object *obj, Visitor *v, void *opaque,
> > > > const char *name, Error **errp)
> > > > @@ -1410,10 +1412,12 @@ static int cpu_x86_parse_featurestr(x86_def_t *x86_cpu_def, char *features)
> > > > x86_cpu_def->kvm_features &= ~minus_kvm_features;
> > > > x86_cpu_def->svm_features &= ~minus_svm_features;
> > > > x86_cpu_def->cpuid_7_0_ebx_features &= ~minus_7_0_ebx_features;
> > > > +#ifdef CONFIG_KVM
> > > > if (check_cpuid && kvm_enabled()) {
> > > > if (kvm_check_features_against_host(x86_cpu_def) && enforce_cpuid)
> > > > goto error;
> > > > }
> > > > +#endif
> > > Provide kvm_check_features_against_host() stub if !CONFIG_KVM and drop
> > > ifdef here.
> >
> > I will do. Igor probably will have to change his "target-i386: move
> > kvm_check_features_against_host() check to realize time" patch to use
> > the same approach, too.
>
>
> Gleb,
>
> Why do stub here? As result we will be adding more ifdef-s just in other
> places. Currently kvm_cpu_fill_host(), unavailable_host_feature() and
Why will we be adding more ifdef-s in other places?
> kvm_check_features_against_host() are bundled together in cpu.c so we could
> instead ifdef whole block. Like here:
> http://www.mail-archive.com/qemu-devel@nongnu.org/msg146536.html
>
That's fine, but you can avoid things like:
if (kvm_enabled() && name && strcmp(name, "host") == 0) {
+#ifdef CONFIG_KVM
kvm_cpu_fill_host(x86_cpu_def);
+#endif
in your patch by providing stub for kvm_cpu_fill_host() for !CONFIG_KVM
case. This is common practice really. Avoid ifdefs in the code.
> For me code looks more readable with ifdef here, if we have stub, a reader
> would have to look at kvm_check_features_against_host() body to see if it does
> anything.
>
If reader cares about kvm it has to anyway. If he does not, there is
friendly kvm_enabled() (which is stub in case of !CONFIG_KVM BTW) to
tell him that he does not care. No need additional ifdef there.
--
Gleb.
next prev parent reply other threads:[~2013-01-07 13:30 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-04 22:01 [PATCH qom-cpu 00/11] disable-kvm_mmu + -cpu check/enforce fixes (v2) Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] " Eduardo Habkost
2013-01-04 22:01 ` [libvirt] [PATCH qom-cpu 01/11] target-i386: Don't set any KVM flag by default if KVM is disabled Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] " Eduardo Habkost
2013-01-06 11:32 ` Gleb Natapov
2013-01-06 11:32 ` [Qemu-devel] " Gleb Natapov
2013-01-07 11:42 ` Eduardo Habkost
2013-01-07 11:42 ` [Qemu-devel] " Eduardo Habkost
2013-01-07 11:42 ` Gleb Natapov
2013-01-07 11:42 ` [Qemu-devel] " Gleb Natapov
2013-01-07 12:09 ` Eduardo Habkost
2013-01-07 12:09 ` [Qemu-devel] " Eduardo Habkost
2013-01-07 12:15 ` Gleb Natapov
2013-01-07 12:15 ` [Qemu-devel] " Gleb Natapov
2013-01-07 12:30 ` Eduardo Habkost
2013-01-07 12:30 ` [Qemu-devel] " Eduardo Habkost
2013-01-07 12:33 ` Gleb Natapov
2013-01-07 12:33 ` [Qemu-devel] " Gleb Natapov
2013-01-07 13:01 ` Eduardo Habkost
2013-01-07 13:01 ` [Qemu-devel] " Eduardo Habkost
2013-01-04 22:01 ` [libvirt] [PATCH qom-cpu 02/11] target-i386: Disable kvm_mmu_op by default on pc-1.4 Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] " Eduardo Habkost
2013-01-06 13:38 ` Gleb Natapov
2013-01-06 13:38 ` [Qemu-devel] " Gleb Natapov
2013-01-07 11:45 ` Eduardo Habkost
2013-01-07 11:45 ` [Qemu-devel] " Eduardo Habkost
2013-01-04 22:01 ` [libvirt] [PATCH qom-cpu 03/11] target-i386: kvm: -cpu host: Use GET_SUPPORTED_CPUID for SVM features Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] " Eduardo Habkost
2013-01-06 13:51 ` Gleb Natapov
2013-01-06 13:51 ` [Qemu-devel] " Gleb Natapov
2013-01-04 22:01 ` [PATCH qom-cpu 04/11] target-i386: kvm: Enable all supported KVM features for -cpu host Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] " Eduardo Habkost
2013-01-06 13:52 ` Gleb Natapov
2013-01-06 13:52 ` [Qemu-devel] " Gleb Natapov
2013-01-04 22:01 ` [libvirt] [PATCH qom-cpu 05/11] target-i386: check/enforce: Fix CPUID leaf numbers on error messages Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] " Eduardo Habkost
2013-01-06 14:12 ` Gleb Natapov
2013-01-06 14:12 ` [Qemu-devel] " Gleb Natapov
2013-01-06 14:15 ` Gleb Natapov
2013-01-06 14:15 ` [Qemu-devel] " Gleb Natapov
2013-01-07 11:54 ` Eduardo Habkost
2013-01-07 11:54 ` [Qemu-devel] " Eduardo Habkost
2013-01-04 22:01 ` [PATCH qom-cpu 06/11] target-i386: check/enforce: Do not ignore "hypervisor" flag Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] " Eduardo Habkost
2013-01-06 14:24 ` Gleb Natapov
2013-01-06 14:24 ` [Qemu-devel] " Gleb Natapov
2013-01-04 22:01 ` [libvirt] [PATCH qom-cpu 07/11] target-i386: check/enforce: Check all CPUID.80000001H.EDX bits Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] " Eduardo Habkost
2013-01-06 14:24 ` Gleb Natapov
2013-01-06 14:24 ` [Qemu-devel] " Gleb Natapov
2013-01-04 22:01 ` [libvirt] [PATCH qom-cpu 08/11] target-i386: check/enforce: Check SVM flag support as well Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] " Eduardo Habkost
2013-01-06 14:25 ` Gleb Natapov
2013-01-06 14:25 ` [Qemu-devel] " Gleb Natapov
2013-01-04 22:01 ` [libvirt] [PATCH qom-cpu 09/11] target-i386: check/enforce: Eliminate check_feat field Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] " Eduardo Habkost
2013-01-06 14:25 ` Gleb Natapov
2013-01-06 14:25 ` [Qemu-devel] " Gleb Natapov
2013-01-04 22:01 ` [PATCH qom-cpu 10/11] target-i386: Call kvm_check_features_against_host() only if CONFIG_KVM is set Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] " Eduardo Habkost
2013-01-06 14:27 ` Gleb Natapov
2013-01-06 14:27 ` [Qemu-devel] " Gleb Natapov
2013-01-07 12:00 ` Eduardo Habkost
2013-01-07 12:00 ` [Qemu-devel] " Eduardo Habkost
2013-01-07 13:15 ` Igor Mammedov
2013-01-07 13:15 ` Igor Mammedov
2013-01-07 13:30 ` Gleb Natapov [this message]
2013-01-07 13:30 ` Gleb Natapov
2013-01-07 14:13 ` Igor Mammedov
2013-01-07 14:13 ` [Qemu-devel] " Igor Mammedov
2013-01-07 13:30 ` Eduardo Habkost
2013-01-07 13:30 ` [Qemu-devel] " Eduardo Habkost
2013-01-04 22:01 ` [libvirt] [PATCH qom-cpu 11/11] target-i386: check/enforce: Check all feature words Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] " Eduardo Habkost
2013-01-06 14:35 ` Gleb Natapov
2013-01-06 14:35 ` [Qemu-devel] " Gleb Natapov
2013-01-07 12:06 ` Eduardo Habkost
2013-01-07 12:06 ` [Qemu-devel] " Eduardo Habkost
2013-01-07 12:06 ` Gleb Natapov
2013-01-07 12:06 ` [Qemu-devel] " Gleb Natapov
2013-01-07 12:19 ` Eduardo Habkost
2013-01-07 12:19 ` [Qemu-devel] " Eduardo Habkost
2013-01-07 12:23 ` Gleb Natapov
2013-01-07 12:23 ` [Qemu-devel] " Gleb Natapov
2013-01-07 18:04 ` [Qemu-devel] [PATCH qom-cpu 00/11] disable-kvm_mmu + -cpu check/enforce fixes (v2) Andreas Färber
2013-01-07 18:04 ` Andreas Färber
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=20130107133026.GE3440@redhat.com \
--to=gleb@redhat.com \
--cc=afaerber@suse.de \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=libvir-list@redhat.com \
--cc=qemu-devel@nongnu.org \
/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.