From: Avi Kivity <avi@redhat.com>
To: Zachary Amsden <zamsden@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
Chris Lalancette <clalance@redhat.com>,
kvm@vger.kernel.org
Subject: Re: [RFC][PATCH 1/3] Introduce a workqueue to deliver PIT timer interrupts.
Date: Thu, 10 Jun 2010 12:24:17 +0300 [thread overview]
Message-ID: <4C10AF41.6080600@redhat.com> (raw)
In-Reply-To: <4C1004F5.3020703@redhat.com>
On 06/10/2010 12:17 AM, Zachary Amsden wrote:
> On 06/09/2010 03:23 AM, Marcelo Tosatti wrote:
>> On Tue, Jun 08, 2010 at 04:36:16PM -1000, Zachary Amsden wrote:
>>>> + pt->timer.function = pit_timer_fn;
>>>>
>>> I am happy to see this. I thought kvm_timer_fn was a step
>>> backwards; it was too general of a function to justify the savings
>>> of 20 some odd lines of code.
>> This was not done to save 20 lines of code:
>>
>> http://www.mail-archive.com/kvm@vger.kernel.org/msg18640.html
>>
>>> Is there any chance that using a workqueue might help the problem of
>>> hrtimers firing too quickly? I wanted to return HR_NORESTART from
>>> pit_timer_fn always, then restart the hrtimer on delivery, but
>>> because of unreliable delivery, it wasn't clear how to do that.
>>>
>>> Perhaps the workqueue can be used to restart the timer instead,
>>> avoiding problems of impossibly small timeouts causing hrtimers to
>>> run amok.
>> It should be rearmed on ACK ideally. How come delivery is unreliable?
>
> Due to the various ways IRQ can be latched or not with different
> routing. If you program a very short timeout, it should fire even if
> the guest is slow to respond:
>
> i..i..i..i..i..i..i
> ..a...a...a...a
>
> if you don't restart right away, only on ack, you can risk the refire
> of the interrupt getting lost, especially if the guest happens to
> reprogram the PIT while this is happening...
>
Restarting on ack has the big advantage of not rearming at all if the
guest doesn't ack, i.e. a timer left running talking to a masked irq pin.
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2010-06-10 9:24 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-08 17:55 [RFC][PATCH 0/3]: Fixes to IRQ routing Chris Lalancette
2010-06-08 17:55 ` [RFC][PATCH 1/3] Introduce a workqueue to deliver PIT timer interrupts Chris Lalancette
2010-06-09 2:36 ` Zachary Amsden
2010-06-09 13:23 ` Marcelo Tosatti
2010-06-09 14:16 ` Avi Kivity
2010-06-09 14:40 ` Marcelo Tosatti
2010-06-09 21:17 ` Zachary Amsden
2010-06-10 9:24 ` Avi Kivity [this message]
2010-06-10 19:17 ` Zachary Amsden
2010-06-10 16:18 ` Marcelo Tosatti
2010-06-09 10:55 ` Avi Kivity
2010-06-09 13:49 ` Marcelo Tosatti
2010-06-09 14:20 ` Avi Kivity
2010-06-08 17:55 ` [RFC][PATCH 2/3] Allow any LAPIC to accept PIC interrupts Chris Lalancette
2010-06-08 17:55 ` [RFC][PATCH 3/3] In DM_LOWEST, only deliver interrupts to vcpus with enabled LAPIC's Chris Lalancette
2010-06-09 11:01 ` Gleb Natapov
2010-06-09 11:08 ` Avi Kivity
2010-06-09 11:20 ` Gleb Natapov
2010-06-09 11:22 ` Avi Kivity
2010-06-09 11:02 ` [RFC][PATCH 0/3]: Fixes to IRQ routing 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=4C10AF41.6080600@redhat.com \
--to=avi@redhat.com \
--cc=clalance@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=zamsden@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.