All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: Eduardo Habkost <ehabkost@redhat.com>, qemu-devel@nongnu.org
Cc: Gu Zheng <guz.fnst@cn.fujitsu.com>,
	Igor Mammedov <imammedo@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v3 4/5] target-i386: Require APIC ID to be explicitly set before CPU realize
Date: Mon, 02 Mar 2015 18:50:44 +0100	[thread overview]
Message-ID: <54F4A2F4.1040405@suse.de> (raw)
In-Reply-To: <1424986952-18579-5-git-send-email-ehabkost@redhat.com>

Am 26.02.2015 um 22:42 schrieb Eduardo Habkost:
> Instead of setting APIC ID automatically when creating a X86CPU, require
> the property to be set before realizing the object (which all callers of
> cpu_x86_create() already do).
> 
> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
>  target-i386/cpu-qom.h | 2 +-
>  target-i386/cpu.c     | 7 ++++++-
>  2 files changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/target-i386/cpu-qom.h b/target-i386/cpu-qom.h
> index 4a6f48a..31a0c1e 100644
> --- a/target-i386/cpu-qom.h
> +++ b/target-i386/cpu-qom.h
> @@ -93,7 +93,7 @@ typedef struct X86CPU {
>      bool expose_kvm;
>      bool migratable;
>      bool host_features;
> -    uint32_t apic_id;
> +    int64_t apic_id;
>  
>      /* if true the CPUID code directly forward host cache leaves to the guest */
>      bool cache_info_passthrough;
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index c4a96b6..9819c47 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -2786,6 +2786,11 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
>      Error *local_err = NULL;
>      static bool ht_warned;
>  
> +    if (cpu->apic_id < 0) {

Since you were setting it immediately before setting realized=true,

#ifdef CONFIG_USER_ONLY
    cpu->apic_id = cs->cpu_index;
#else

> +        error_setg(errp, "apic-id property was not initialized properly");
> +        return;

#endif

would keep any x86-specific logic out of cpu_init().

Regards,
Andreas

> +    }
> +
>      if (env->features[FEAT_7_0_EBX] && env->cpuid_level < 7) {
>          env->cpuid_level = 7;
>      }
> @@ -2929,7 +2934,7 @@ static void x86_cpu_initfn(Object *obj)
>                          NULL, NULL, (void *)cpu->filtered_features, NULL);
>  
>      cpu->hyperv_spinlock_attempts = HYPERV_SPINLOCK_NEVER_RETRY;
> -    cpu->apic_id = x86_cpu_apic_id_from_index(cs->cpu_index);
> +    cpu->apic_id = -1;
>  
>      x86_cpu_load_def(cpu, xcc->cpu_def, &error_abort);
>  

-- 
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Jennifer Guild, Dilip Upmanyu,
Graham Norton; HRB 21284 (AG Nürnberg)

  reply	other threads:[~2015-03-02 17:50 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-26 21:42 [Qemu-devel] [PATCH v3 0/5] target-i386: Simplify APIC ID initialization, move compat code to pc.c Eduardo Habkost
2015-02-26 21:42 ` [Qemu-devel] [PATCH v3 1/5] target-i386: Move topology.h to include/hw/i386 Eduardo Habkost
2015-03-02 17:54   ` Andreas Färber
2015-02-26 21:42 ` [Qemu-devel] [PATCH v3 2/5] target-i386: Move CPUX86State.cpuid_apic_id to X86CPU.apic_id Eduardo Habkost
2015-03-02 17:51   ` Andreas Färber
2015-03-04  1:51     ` Eduardo Habkost
2015-02-26 21:42 ` [Qemu-devel] [PATCH v3 3/5] target-i386: Set APIC ID using cpu_index on legacy cpu_x86_init() Eduardo Habkost
2015-03-02 17:45   ` Andreas Färber
2015-02-26 21:42 ` [Qemu-devel] [PATCH v3 4/5] target-i386: Require APIC ID to be explicitly set before CPU realize Eduardo Habkost
2015-03-02 17:50   ` Andreas Färber [this message]
2015-03-02 18:45     ` Eduardo Habkost
2015-02-26 21:42 ` [Qemu-devel] [PATCH v3 5/5] target-i386: Move APIC ID compatibility code to pc.c Eduardo Habkost
2015-03-02 17:53   ` 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=54F4A2F4.1040405@suse.de \
    --to=afaerber@suse.de \
    --cc=ehabkost@redhat.com \
    --cc=guz.fnst@cn.fujitsu.com \
    --cc=imammedo@redhat.com \
    --cc=pbonzini@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.