qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] APIC: Do not start zero-period timers
@ 2008-07-19  8:32 Jan Kiszka
  2008-08-16  9:07 ` [Qemu-devel] [RESEND][PATCH] " Jan Kiszka
  0 siblings, 1 reply; 4+ messages in thread
From: Jan Kiszka @ 2008-07-19  8:32 UTC (permalink / raw)
  To: qemu-devel

The APIC timer must not start when the initial count is (still) zero.

This caused occasional stalls when booting secondary CPUs of Linux SMP
guests.

Signed-off-by: Jan Kiszka <jan.kiszka@web.de>
---
 hw/apic.c |    2 ++
 1 file changed, 2 insertions(+)

Index: b/hw/apic.c
===================================================================
--- a/hw/apic.c
+++ b/hw/apic.c
@@ -566,6 +566,8 @@ static void apic_timer_update(APICState
         d = (current_time - s->initial_count_load_time) >>
             s->count_shift;
         if (s->lvt[APIC_LVT_TIMER] & APIC_LVT_TIMER_PERIODIC) {
+            if (!s->initial_count)
+                goto no_timer;
             d = ((d / ((uint64_t)s->initial_count + 1)) + 1) * ((uint64_t)s->initial_count + 1);
         } else {
             if (d >= s->initial_count)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Qemu-devel] [RESEND][PATCH] APIC: Do not start zero-period timers
  2008-07-19  8:32 [Qemu-devel] [PATCH] APIC: Do not start zero-period timers Jan Kiszka
@ 2008-08-16  9:07 ` Jan Kiszka
  2008-08-18 14:20   ` Anthony Liguori
  0 siblings, 1 reply; 4+ messages in thread
From: Jan Kiszka @ 2008-08-16  9:07 UTC (permalink / raw)
  To: qemu-devel

The APIC timer must not start when the initial count is (still) zero.

This caused occasional stalls when booting secondary CPUs of Linux SMP
guests.

Signed-off-by: Jan Kiszka <jan.kiszka@web.de>
---
 hw/apic.c |    2 ++
 1 file changed, 2 insertions(+)

Index: b/hw/apic.c
===================================================================
--- a/hw/apic.c
+++ b/hw/apic.c
@@ -566,6 +566,8 @@ static void apic_timer_update(APICState
         d = (current_time - s->initial_count_load_time) >>
             s->count_shift;
         if (s->lvt[APIC_LVT_TIMER] & APIC_LVT_TIMER_PERIODIC) {
+            if (!s->initial_count)
+                goto no_timer;
             d = ((d / ((uint64_t)s->initial_count + 1)) + 1) * ((uint64_t)s->initial_count + 1);
         } else {
             if (d >= s->initial_count)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [RESEND][PATCH] APIC: Do not start zero-period timers
  2008-08-16  9:07 ` [Qemu-devel] [RESEND][PATCH] " Jan Kiszka
@ 2008-08-18 14:20   ` Anthony Liguori
  2008-08-18 19:29     ` Asheesh Laroia
  0 siblings, 1 reply; 4+ messages in thread
From: Anthony Liguori @ 2008-08-18 14:20 UTC (permalink / raw)
  To: qemu-devel; +Cc: kvm-devel, Jan Kiszka

Jan Kiszka wrote:
> The APIC timer must not start when the initial count is (still) zero.
>
> This caused occasional stalls when booting secondary CPUs of Linux SMP
> guests.
>   

Applied.  Thanks.

Besides testing, I confirmed that this is what's done in the in-kernel 
APIC in KVM (which is also used by Xen).  It seems really unfortunate to 
me that there are fixes in the in-kernel APIC that aren't in QEMU (and 
perhaps vice-versa).  I wonder if there's any way to unify the two code 
bases?

Regards,

Anthony Liguori

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [RESEND][PATCH] APIC: Do not start zero-period timers
  2008-08-18 14:20   ` Anthony Liguori
@ 2008-08-18 19:29     ` Asheesh Laroia
  0 siblings, 0 replies; 4+ messages in thread
From: Asheesh Laroia @ 2008-08-18 19:29 UTC (permalink / raw)
  To: qemu-devel; +Cc: kvm-devel, Jan Kiszka

On Mon, 18 Aug 2008, Anthony Liguori wrote:

> Jan Kiszka wrote:
>> The APIC timer must not start when the initial count is (still) zero.
>> 
>> This caused occasional stalls when booting secondary CPUs of Linux SMP
>> guests.
>> 
>
> Applied.  Thanks.
>
> Besides testing, I confirmed that this is what's done in the in-kernel APIC 
> in KVM (which is also used by Xen).  It seems really unfortunate to me that 
> there are fixes in the in-kernel APIC that aren't in QEMU (and perhaps 
> vice-versa).  I wonder if there's any way to unify the two code bases?

Just a thought - if the code bases have similar textual content, one could 
start playing games like noticing when the kernel releases have APIC 
changes in KVM, and then mailing those as [PATCH] automatically to this 
list by detecting the commit log messages for them from kernel git.

And vice versa, even?

Even just a web page that shows the two implementations side by side, 
highlighting the diff, could probably be useful.

-- Asheesh.

-- 
Experience is what you get when you were expecting something else.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-08-18 20:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-19  8:32 [Qemu-devel] [PATCH] APIC: Do not start zero-period timers Jan Kiszka
2008-08-16  9:07 ` [Qemu-devel] [RESEND][PATCH] " Jan Kiszka
2008-08-18 14:20   ` Anthony Liguori
2008-08-18 19:29     ` Asheesh Laroia

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).