All of lore.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: kvm@vger.kernel.org
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Subject: [PATCH QEMU-KVM 3/7] test: optimize smp_id()
Date: Mon, 21 Sep 2009 11:55:34 +0300	[thread overview]
Message-ID: <1253523338-22784-4-git-send-email-avi@redhat.com> (raw)
In-Reply-To: <1253523338-22784-1-git-send-email-avi@redhat.com>

Rather than reading it from the APIC, read it from the per-cpu
area.

Signed-off-by: Avi Kivity <avi@redhat.com>
---
 kvm/user/test/lib/x86/smp.c |   17 +++++++++++++++--
 1 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/kvm/user/test/lib/x86/smp.c b/kvm/user/test/lib/x86/smp.c
index 25f0cae..9eface5 100644
--- a/kvm/user/test/lib/x86/smp.c
+++ b/kvm/user/test/lib/x86/smp.c
@@ -71,13 +71,21 @@ int cpu_count(void)
 
 int smp_id(void)
 {
-    return apic_read(APIC_ID);
+    unsigned id;
+
+    asm ("mov %%gs:0, %0" : "=r"(id));
+    return id;
+}
+
+static void setup_smp_id(void *data)
+{
+    asm ("mov %0, %%gs:0" : : "r"(apic_id()) : "memory");
 }
 
 void on_cpu(int cpu, void (*function)(void *data), void *data)
 {
     spin_lock(&ipi_lock);
-    if (cpu == apic_id())
+    if (cpu == smp_id())
 	function(data);
     else {
 	ipi_function = function;
@@ -98,4 +106,9 @@ void smp_init(void)
     void ipi_entry(void);
 
     set_ipi_descriptor(ipi_entry);
+
+    setup_smp_id(0);
+    for (i = 1; i < cpu_count(); ++i)
+        on_cpu(i, setup_smp_id, 0);
+
 }
-- 
1.6.4.1


  parent reply	other threads:[~2009-09-21  8:55 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-21  8:55 [PATCH QEMU-KVM 0/7] test: more IPI tests Avi Kivity
2009-09-21  8:55 ` [PATCH QEMU-KVM 1/7] test: issue EOI after IPI Avi Kivity
2009-09-21  8:55 ` [PATCH QEMU-KVM 2/7] test: set up per-cpu area Avi Kivity
2009-09-21  8:55 ` Avi Kivity [this message]
2009-09-21  8:55 ` [PATCH QEMU-KVM 4/7] test: add conditional execution for vmexit tests Avi Kivity
2009-09-21  8:55 ` [PATCH QEMU-KVM 5/7] test: add ipi latency test Avi Kivity
2009-09-21  8:55 ` [PATCH QEMU-KVM 6/7] test: Add ipi_halt benchmark Avi Kivity
2009-09-22  1:54   ` Marcelo Tosatti
2009-09-22  6:12     ` Avi Kivity
2009-09-21  8:55 ` [PATCH QEMU-KVM 7/7] test: Auto-tune vmexit test Avi Kivity

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=1253523338-22784-4-git-send-email-avi@redhat.com \
    --to=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@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.