From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yang, Sheng" Subject: Re: [patch 1/2] KVM: hlt emulation should take in-kernel APIC/PIT timers into account Date: Sat, 10 May 2008 10:12:02 +0800 Message-ID: <200805101012.03113.sheng.yang@intel.com> References: <20080410201254.316224847@localhost.localdomain> <200805091549.20620.sheng.yang@intel.com> <20080509145300.GA11955@dmt> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-devel@lists.sourceforge.net, Avi Kivity To: Marcelo Tosatti Return-path: In-Reply-To: <20080509145300.GA11955@dmt> Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces@lists.sourceforge.net Errors-To: kvm-devel-bounces@lists.sourceforge.net List-Id: kvm.vger.kernel.org On Friday 09 May 2008 22:53:00 Marcelo Tosatti wrote: > On Fri, May 09, 2008 at 03:49:20PM +0800, Yang, Sheng wrote: > > On Sunday 13 April 2008 17:28:22 Avi Kivity wrote: > > > Marcelo Tosatti wrote: > > > > On Fri, Apr 11, 2008 at 03:12:41PM +0300, Avi Kivity wrote: > > > >> This breaks ia64 (and shouldn't s390 use this too?) > > > >> > > > >>> * We will block until either an interrupt or a signal wakes us up > > > >>> */ > > > >>> while (!kvm_cpu_has_interrupt(vcpu) > > > >>> + && !kvm_cpu_has_pending_timer(vcpu) > > > >> > > > >> I guess the fix is to stub this out for the other archs. > > > > > > > > Agreed. How's this. > > > > > > Better :); applied. > > > > Hi, Marcelo > > > > This patch got into trouble when OS don't use PIT/LAPIC timer and don't > > disable them. Then the pending counters would keep increasing, but the > > HLT emulation can't be executed. And this would resulted in mass a lot > > (above 220,000 per second) halt_exit for the Windows XP that using RTC as > > the clocksource (and keep PIT enabled after bios did, just mask the pin) > > idle, and the cpu utilize would be about 100% of QEmu process. > > > > The following patch used another way to fix the issue, though not very > > formal. > > Hi Sheng, > > Did you have kvm.git commit 8ae6dc90ac84d9734e343210c8ec709f50cd9d89 > when testing this? > > I believe it should fix that issue, because "ps->inject_pending" won't > be set by kvm_pit_timer_intr_post() if the IRQ is masked. Please correct > me if I'm wrong. Oh, sorry, I missed that commit. But... It just solved an half of the problem. LAPIC suffered from it as well, and the current HLT emulation still didn't work... And I can't find something like inject_pending in LAPIC timer. I have to say, I think my method is more preciously, directly and efficient... It also can be extended easily if we got more clock sources (though I don't think this would happen in near future...). In fact, I think take care of pending counts is some kind of *wrong concept*... We should take care of the window, or when the increment of pending counters happened, CMIIW. And it got nothing to do with the current counter number (yeah, I realized it after saw the hlt behaviour in XP, not before ;) ). -- Thanks Yang, Sheng ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone