From: Eduardo Habkost <ehabkost@redhat.com>
To: Jan Kiszka <jan.kiszka@web.de>
Cc: kvm@vger.kernel.org
Subject: Re: 2.6.27.5 guest boot failure using in-kernel PIT
Date: Fri, 21 Nov 2008 14:39:22 -0200 [thread overview]
Message-ID: <20081121163922.GG30825@blackpad> (raw)
In-Reply-To: <4926D68C.8050401@web.de>
On Fri, Nov 21, 2008 at 04:41:00PM +0100, Jan Kiszka wrote:
> Eduardo Habkost wrote:
> > On Fri, Nov 21, 2008 at 08:54:56AM +0100, Jan Kiszka wrote:
> >> Eduardo Habkost wrote:
> >>> On Thu, Nov 20, 2008 at 12:22:53PM -0200, Eduardo Habkost wrote:
> >>>> Hi,
> >>>>
> >>>> When using a kvm.git kernel as host, I am getting guest boot failures
> >>>> when booting Fedora Rawhide kernel (2.6.27.5-117.fc10.x86_64). Guest
> >>>> stops booting at:
> >>>>
> >>>> ENABLING IO-APIC IRQs
> >>>> ..TIMER: vector=0x30 apic1=0 pin1=0 apic2=-1 pin2=-1
> >>>> ..MP-BIOS bug: 8254 timer not connected to IO-APIC
> >>>> ...trying to set up timer (IRQ0) through the 8259A ...
> >>>> ..... (found apic 0 pin 0) ...
> >>>> ....... failed.
> >>>> ...trying to set up timer as Virtual Wire IRQ...
> >>>> ..... failed.
> >>>> ...trying to set up timer as ExtINT IRQ...
> >>> I've just found out this problem happens because the guest has HZ=1000
> >>> and the host had HZ=250 and no CONFIG_HIGH_RES_TIMERS.
> >>>
> >>> With this setup, the host is not managing to inject enough timer
> >>> interrupts during the mdelay() loop on timer_irq_works().
> >>>
> >> Interesting, and plausible.
> >>
> >> My observation so far is a sporadic test failure, often correlating with
> >> some raised host OS load. I'm running a high-res kernel, but that cannot
> >> prevent that this only 10 ticks long loop of the guest may obtain too
> >> few CPU cycles to handle enough of them once in a while (IIRC, it needs
> >> 4 out of the 10 ticks to declare the timer routing functional).
> >>
> >> Maybe Gleb's anti-coalesce patches for the PIC can also deal with your
> >> timer resolution conflict. At least worth a try...
> >
> > Aren't Gleb patches for the userspace PIT?
>
> Yeah, they are, so you won't benefit from them for in-kernel cases. But
> with in-kernel emulation just the probability of coalesced ticks is a
> bit lower, they cannot be avoided either.
>
> > I am seeing the problem here
> > when using the in-kernel PIT, but (surprisingly) my setup works when
> > using -no-kvm-pit.
>
> Weird, makes no sense to me as well ATM.
The qemu PIT seems to calculate the timeout for its timer as a function
of the time where the PIT timer was set up (count_load_time) and the
last timer set up (next_transition_time), without looking at the current
time. After missing some ticks and getting the timer triggered late,
it will set up a lot of "trigger on the past" timers before the guest
finished the mdelay() loop.
The in-kernel PIT seems to try to do the same thing (it just calls
hrtimer_add_expires_ns() on the timer), but maybe the behaviour of the
kernel timers is different of the qemu timers when a timer is set up
to be triggered on the past. On my host-HZ=250 guest-HZ=1000 setup,
it was incrementing pit_timer.pending only once every 4 milliseconds.
--
Eduardo
next prev parent reply other threads:[~2008-11-21 16:39 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-20 14:22 2.6.27.5 guest boot failure using in-kernel PIT Eduardo Habkost
2008-11-20 22:05 ` Eduardo Habkost
2008-11-21 3:05 ` Sheng Yang
2008-11-21 7:54 ` Jan Kiszka
2008-11-21 13:17 ` Eduardo Habkost
2008-11-21 15:41 ` Jan Kiszka
2008-11-21 16:39 ` Eduardo Habkost [this message]
2008-11-21 17:06 ` Eduardo Habkost
2008-11-24 17:02 ` hrtimer_forward() semantics when using non-high-res timers Eduardo Habkost
2008-11-21 17:10 ` 2.6.27.5 guest boot failure using in-kernel PIT Marcelo Tosatti
2008-11-24 14:33 ` Glauber Costa
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=20081121163922.GG30825@blackpad \
--to=ehabkost@redhat.com \
--cc=jan.kiszka@web.de \
--cc=kvm@vger.kernel.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.