All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: Bharata B Rao <bharata.rao@gmail.com>
Cc: qemu-devel@nongnu.org, Avi Kivity <avi@redhat.com>
Subject: Re: [Qemu-devel] [FIX] X86 CPU topology broken in KVM mode
Date: Wed, 07 Sep 2011 10:07:48 +0200	[thread overview]
Message-ID: <4E672654.7070701@siemens.com> (raw)
In-Reply-To: <CAGZKiBr0G-boxFCmt-mL9Qu56Ubn3tkSndCHiNz79tB094L7xw@mail.gmail.com>

On 2011-09-07 06:21, Bharata B Rao wrote:
> Hi,
> 
> Sometime back I posted a patch for fixing x86 CPU topology (
> http://lists.gnu.org/archive/html/qemu-devel/2011-08/msg02022.html).
> Here is the next version of the fix which addresses all but one
> comment received during that post.
> 
> - Fixed code style issues
> - Ensured that the fix doesn't break TCG mode
> - I am not sure what is the problem with i486 as I haven't been able
> to boot an i486 VM successfully, hence haven't attempted to fix this.

-smp 2 -cpu i486 boots fine here (granted, I don't have some i486 SMP
kernel at hand).

> 
> I have tested following scenarios and found the fix to be working fine.
> 
> KVM: (with --enable-kvm)
> -smp sockets=1,cores=4,threads=2
> -smp sockets=4,cores=4,threads=2
> -cpu core2duo sockets=1,cores=4,threads=2
> -cpu core2duo sockets=2,cores=4,threads=2
> 
> TCG: (without --enable-kvm)
> -cpu core2duo sockets=1,cores=4,threads=2
> -cpu core2duo sockets=2,cores=4,threads=2
> 
> Here is the updated patch which now applies against qemu.git.
> 
> ********************
> Fix apic id enumeration
> 
> apic id returned to guest kernel in ebx for cpuid(function=1) depends on
> CPUX86State->cpuid_apic_id which gets populated after the cpuid information
> is cached in the host kernel.
> 
> Fix this by setting cpuid_apic_id before cpuid information is passed to
> the host kernel. This is done by moving the setting of cpuid_apic_id
> to cpu_x86_init() where it will work for both KVM as well as TCG modes.
> 
> Signed-off-by: Bharata B Rao <bharata.rao@gmail.com>
> ---
>  hw/pc.c              |    1 -
>  target-i386/helper.c |    5 +++++
>  2 files changed, 5 insertions(+), 1 deletion(-)
> 
> Index: qemu/hw/pc.c
> ===================================================================
> --- qemu.orig/hw/pc.c
> +++ qemu/hw/pc.c
> @@ -933,7 +933,6 @@ static CPUState *pc_new_cpu(const char *
>          exit(1);
>      }
>      if ((env->cpuid_features & CPUID_APIC) || smp_cpus > 1) {
> -        env->cpuid_apic_id = env->cpu_index;
>          env->apic_state = apic_init(env, env->cpuid_apic_id);
>      }
>      qemu_register_reset(pc_cpu_reset, env);
> Index: qemu/target-i386/helper.c
> ===================================================================
> --- qemu.orig/target-i386/helper.c
> +++ qemu/target-i386/helper.c
> @@ -1256,6 +1256,11 @@ CPUX86State *cpu_x86_init(const char *cp
>          cpu_x86_close(env);
>          return NULL;
>      }
> +
> +    if (env->cpuid_features & CPUID_APIC) {

|| smp_cpus > 1

Should be obvious when looking at the hunk you took this from.

> +        env->cpuid_apic_id = env->cpu_index;
> +    }
> +
>      mce_init(env);
> 
>      qemu_init_vcpu(env);
> *************************
> 
> Regards,
> Bharata.
> --
>  http://bharata.sulekha.com/blog/posts.htm, http://raobharata.wordpress.com/
> 
> 

Jan

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux

  reply	other threads:[~2011-09-07  8:07 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-07  4:21 [Qemu-devel] [FIX] X86 CPU topology broken in KVM mode Bharata B Rao
2011-09-07  8:07 ` Jan Kiszka [this message]
2011-09-07  8:19   ` Bharata B Rao
2011-09-07  8:33     ` Jan Kiszka
2011-09-07 12:59 ` Anthony Liguori
2011-09-07 13:24   ` Bharata B Rao
2011-09-07 13:29     ` Anthony Liguori

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=4E672654.7070701@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=avi@redhat.com \
    --cc=bharata.rao@gmail.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.