public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Marcelo Tosatti <marcelo-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org>
To: Andi Kleen <andi-Vw/NltI1exuRpAAqCnN02g@public.gmane.org>
Cc: Marcelo Tosatti <marcelo-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org>,
	Alexander Graf <alex-r27SGEef+tmzQB+pC5nmwQ@public.gmane.org>,
	Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>,
	kvm-devel
	<kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
Subject: Re: [RFC] fix VMX TSC synchronicity
Date: Thu, 17 Jan 2008 16:43:49 -0200	[thread overview]
Message-ID: <20080117184349.GA17843@dmt> (raw)
In-Reply-To: <20080116135415.GA14664-qrUzlfsMFqo/4alezvVtWx2eb7JE58TQ@public.gmane.org>

On Wed, Jan 16, 2008 at 02:54:15PM +0100, Andi Kleen wrote:
> On Wed, Jan 16, 2008 at 03:38:45PM +0200, Avi Kivity wrote:
> > Andi Kleen wrote:
> > >Linux checks a couple of things: e.g. if there are no deep C states
> > >and if there are no clustered nodes in the APIC etc.
> > >
> > >It might be reasonable to check the clock source of the kernel
> > >and if it's not TSC force one of these in the emulated firmware
> > >environment
> > >
> > >  
> > 
> > The problems are with older guests which assume the tsc is okay.  Newer 
> > guests check the tsc and conclude that it isn't usable.
> 
> If the guest would get it wrong running natively on the host
> I guess it would be reasonable to require an option that forces
> TSC off. Disabling the TSC bit unfortunately won't work for 64bit
> guests, but for probably most 32bit guests.
> 
> But for non broken guests they can only do that if the guest has the same 
> visibility into the firmware state as the host. For the easy cases Linux will
> check it anyways becaused on standard the TSC synchronicity check, but
> there are cases where the TSCs only drift apart slowly over a longer time
> 
> [I finally fixed the clocksource watchdog now to catch this case, but
> it will be only in .25]
> 
> I think it would be better to fake at least some of the usual
> firmware cues for bad TSC if the host does not use it.
> 
> > 
> > >>You might taskset guests into a single node on such systems, which is a
> > >>good idea anyway.
> > >>    
> > >
> > >Ah pushing the problem to the user. An easy, but typically wrong, solution.
> > >  
> > 
> > If you have other suggestions I'll be happy to hear them.  I don't like 
> > this either.
> 
> Check if host is using TSC source and if not force a clustered
> APIC mode (only works for 64bit unfortunately) or fake a C3 state
> in ACPI and on AMD clear the synchronous TSC bit.

Forcing clustered APIC mode works only on SMP, and there were high CPU
consumption on Windows SMP guests due to C3 state being reported (fixed
in kvm-30 something).

So perhaps:
- Faking clustered APIC on SMP 
- Faking C3 on UP

And turning of the TSC bit (for 32-bit guests).

Is the way to go? 

Avi, do you understand why C3 was causing the Windows SMP problems ?

/* Common C-state entry for C2, C3, .. */
static void acpi_cstate_enter(struct acpi_processor_cx *cstate)
{
        if (cstate->space_id == ACPI_CSTATE_FFH) {
                /* Call into architectural FFH based C-state */
                acpi_processor_ffh_cstate_enter(cstate);
        } else {
                int unused;
                /* IO port based C-state */
                inb(cstate->address);
                /* Dummy wait op - must do something useless after P_LVL2 read
                   because chipsets cannot guarantee that STPCLK# signal
                   gets asserted in time to freeze execution properly. */
                unused = inl(acpi_gbl_FADT.xpm_timer_block.address);
        }
}

Clearly that inb() won't actually idle under QEMU. So the question is,
if C3 stated is reported, that port read should be emulated... But how? 

http://www.mail-archive.com/kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org/msg05360.html

Zhao, Yunfeng wrote:
>> I ran the same image under qemu 0.9.0, uniprocessor, and got the same
>> results: high host cpu usage while the guest is idle.  Most likely the
>> BIOS ACPI tables are misconfigured and the Windows idle loop is
>>     
> confused.




-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/

  parent reply	other threads:[~2008-01-17 18:43 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-11 20:49 [RFC] fix VMX TSC synchronicity Marcelo Tosatti
2008-01-13 12:19 ` Avi Kivity
     [not found]   ` <478A01D1.7000402-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-14 16:06     ` Marcelo Tosatti
2008-01-14 20:46       ` Marcelo Tosatti
2008-01-15 14:59         ` Avi Kivity
2008-01-15 14:33       ` Avi Kivity
     [not found]         ` <478CC448.1030901-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-15 14:50           ` Alexander Graf
     [not found]             ` <478CC819.3040106-r27SGEef+tmzQB+pC5nmwQ@public.gmane.org>
2008-01-15 15:09               ` Avi Kivity
     [not found]                 ` <478CCCA9.2080300-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-15 16:42                   ` Alexander Graf
     [not found]                     ` <478CE277.9010109-r27SGEef+tmzQB+pC5nmwQ@public.gmane.org>
2008-01-15 17:46                       ` Avi Kivity
     [not found]                         ` <478CF186.5030304-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-15 18:29                           ` Amit Shah
2008-01-16  5:51                   ` Andi Kleen
     [not found]                     ` <p73ir1ul3ls.fsf-KvMlXPVkKihbpigZmTR7Iw@public.gmane.org>
2008-01-16  8:46                       ` Avi Kivity
     [not found]                         ` <478DC453.1000404-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-16 13:34                           ` Andi Kleen
     [not found]                             ` <478E08E5.2030507@qumranet.com>
     [not found]                               ` <478E08E5.2030507-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2008-01-16 13:54                                 ` Andi Kleen
     [not found]                                   ` <20080116135415.GA14664-qrUzlfsMFqo/4alezvVtWx2eb7JE58TQ@public.gmane.org>
2008-01-16 13:56                                     ` Avi Kivity
2008-01-17 18:43                                     ` Marcelo Tosatti [this message]
2008-01-17 18:56                                       ` Andi Kleen
2008-01-20 14:59                                       ` Avi Kivity
2008-05-04 15:40                                       ` Avi Kivity
2008-05-06 13:55                                         ` Avi Kivity
  -- strict thread matches above, loose matches on Subject: below --
2008-01-12  3:11 Will Trives
2008-01-12 12:28 ` Marcelo Tosatti
2008-01-12 13:48   ` Will Trives
2008-01-12 20:51     ` 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=20080117184349.GA17843@dmt \
    --to=marcelo-bw31mazkks3ytjvyw6ydsg@public.gmane.org \
    --cc=alex-r27SGEef+tmzQB+pC5nmwQ@public.gmane.org \
    --cc=andi-Vw/NltI1exuRpAAqCnN02g@public.gmane.org \
    --cc=avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org \
    --cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.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