qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [6567] KVM: Get all cpuid values from function 2 (Amit	Shah)
Date: Mon, 09 Feb 2009 20:27:56 +0200	[thread overview]
Message-ID: <499075AC.6070104@redhat.com> (raw)
In-Reply-To: <49905DE1.7070808@codemonkey.ws>

Anthony Liguori wrote:
>>
>> Note that if we are rescheduled on another cpu, or if another process 
>> calls cpuid 2 during the loop on the same cpu, this will break.
>
> That's unfortunate.  If cpuid values can differ for individual 
> processors, than I don't see a great way to avoid this problem in 
> general.

The problem is not mismatched cpus, it's hidden state within the cpu.

If you look at the code, it just calls cpuid(2) repeatedly, and expects 
different results for the same inputs.  That means the cpuid code in the 
cpu looks something like this:

    if (function == 2) {
        switch (hidden_function_2_state++) {
              // return different results
        }
    }

this hidden state is of course not maintained across context switches.  
Only the kernel can extract this information reliably.  Note that we 
also need save this hidden state as part of savevm.

The word "unfortunate" doesn't even begin to describe it, even if one 
favors understatements.

-- 
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.

      parent reply	other threads:[~2009-02-09 18:27 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-09 15:50 [Qemu-devel] [6567] KVM: Get all cpuid values from function 2 (Amit Shah) Anthony Liguori
2009-02-09 16:06 ` Avi Kivity
2009-02-09 16:46   ` Anthony Liguori
2009-02-09 17:03     ` Amit Shah
2009-02-09 18:27     ` Avi Kivity [this message]

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=499075AC.6070104@redhat.com \
    --to=avi@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).