From: Igor Mammedov <imammedo@redhat.com>
To: Gleb Natapov <gleb@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:13:11 +0100 [thread overview]
Message-ID: <20130107151311.4b093dfb@thinkpad.mammed.net> (raw)
In-Reply-To: <20130107133026.GE3440@redhat.com>
On Mon, 7 Jan 2013 15:30:26 +0200
Gleb Natapov <gleb@redhat.com> wrote:
> 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?
unavailable_host_feature() is being ifdef-ed above
>
> > 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.
This ifdef could be eliminated later when cpus are converted into sub-classes.
Then we would put host subclass close to kvm_cpu_fill_host inside of the same
ifdef. that would leave ifdef around kvm_check_features_against_host() in
cpu_x86_parse_featurestr().
>
> > 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.
both ways would work, but if stubs are preferred style then there is no
point arguing.
>
> --
> Gleb.
--
Regards,
Igor
next prev parent reply other threads:[~2013-01-07 14:13 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-04 22:01 [Qemu-devel] [PATCH qom-cpu 00/11] disable-kvm_mmu + -cpu check/enforce fixes (v2) Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] [PATCH qom-cpu 01/11] target-i386: Don't set any KVM flag by default if KVM is disabled Eduardo Habkost
2013-01-06 11:32 ` Gleb Natapov
2013-01-07 11:42 ` Eduardo Habkost
2013-01-07 11:42 ` Gleb Natapov
2013-01-07 12:09 ` Eduardo Habkost
2013-01-07 12:15 ` Gleb Natapov
2013-01-07 12:30 ` Eduardo Habkost
2013-01-07 12:33 ` Gleb Natapov
2013-01-07 13:01 ` Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] [PATCH qom-cpu 02/11] target-i386: Disable kvm_mmu_op by default on pc-1.4 Eduardo Habkost
2013-01-06 13:38 ` Gleb Natapov
2013-01-07 11:45 ` Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] [PATCH qom-cpu 03/11] target-i386: kvm: -cpu host: Use GET_SUPPORTED_CPUID for SVM features Eduardo Habkost
2013-01-06 13:51 ` Gleb Natapov
2013-01-04 22:01 ` [Qemu-devel] [PATCH qom-cpu 04/11] target-i386: kvm: Enable all supported KVM features for -cpu host Eduardo Habkost
2013-01-06 13:52 ` Gleb Natapov
2013-01-04 22:01 ` [Qemu-devel] [PATCH qom-cpu 05/11] target-i386: check/enforce: Fix CPUID leaf numbers on error messages Eduardo Habkost
2013-01-06 14:12 ` Gleb Natapov
2013-01-06 14:15 ` Gleb Natapov
2013-01-07 11:54 ` Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] [PATCH qom-cpu 06/11] target-i386: check/enforce: Do not ignore "hypervisor" flag Eduardo Habkost
2013-01-06 14:24 ` Gleb Natapov
2013-01-04 22:01 ` [Qemu-devel] [PATCH qom-cpu 07/11] target-i386: check/enforce: Check all CPUID.80000001H.EDX bits Eduardo Habkost
2013-01-06 14:24 ` Gleb Natapov
2013-01-04 22:01 ` [Qemu-devel] [PATCH qom-cpu 08/11] target-i386: check/enforce: Check SVM flag support as well Eduardo Habkost
2013-01-06 14:25 ` Gleb Natapov
2013-01-04 22:01 ` [Qemu-devel] [PATCH qom-cpu 09/11] target-i386: check/enforce: Eliminate check_feat field Eduardo Habkost
2013-01-06 14:25 ` Gleb Natapov
2013-01-04 22:01 ` [Qemu-devel] [PATCH qom-cpu 10/11] target-i386: Call kvm_check_features_against_host() only if CONFIG_KVM is set Eduardo Habkost
2013-01-06 14:27 ` Gleb Natapov
2013-01-07 12:00 ` Eduardo Habkost
2013-01-07 13:15 ` Igor Mammedov
2013-01-07 13:30 ` Gleb Natapov
2013-01-07 14:13 ` Igor Mammedov [this message]
2013-01-07 13:30 ` Eduardo Habkost
2013-01-04 22:01 ` [Qemu-devel] [PATCH qom-cpu 11/11] target-i386: check/enforce: Check all feature words Eduardo Habkost
2013-01-06 14:35 ` Gleb Natapov
2013-01-07 12:06 ` Eduardo Habkost
2013-01-07 12:06 ` Gleb Natapov
2013-01-07 12:19 ` Eduardo Habkost
2013-01-07 12:23 ` 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
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=20130107151311.4b093dfb@thinkpad.mammed.net \
--to=imammedo@redhat.com \
--cc=afaerber@suse.de \
--cc=ehabkost@redhat.com \
--cc=gleb@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).