public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Dor Laor <dor.laor-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Carlo Marcelo Arenas Belon
	<carenas-kLeDWSohozoJb6fo7hG9ng@public.gmane.org>
Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: [RFC] qemu: simulate edge-triggered interrupt in master PIC for time-drift-fix
Date: Sat, 10 Nov 2007 22:17:20 +0200	[thread overview]
Message-ID: <473611D0.5010706@qumranet.com> (raw)
In-Reply-To: <20071110034120.GB9933@tapir>


[-- Attachment #1.1: Type: text/plain, Size: 4728 bytes --]

Carlo Marcelo Arenas Belon wrote:
> On Sat, Nov 10, 2007 at 12:35:34AM +0200, Dor Laor wrote:
>   
>>    Carlo Marcelo Arenas Belon wrote:
>>
>>  wrong patch, this was meant to go to the slave PIC, so it will use s->pics[1]
>>  instead of s->pics[0].
>>
>>    Why to the slave pic? Isn't the pit connected to line 0 of the master?
>>     
>
> yes, you are right; 8254 should be connected to line 0 of the master 8259 and
> using the slave PIC is not correct.
>
> sadly, with the patch and while trying to test if it make a difference or not,
> I found that when using -no-kvm-irqchip -tdf with an ACPI enabled guest
> (Fedora 7 x86_64) it was dying with the following kernel panic :
>
> MP-BIOS bug: 8254 timer not connected to IO-APIC
> Kernel panic - not syncing: IO-APIC + timer doesn't work! Try using the
> 'noapic' kernel parameter.
>
>   
It was only tested with non acpi/apic guests, mainly with windows.
If you'll use windows with stadard hal as a guest you'll see the difference.
For acpi/apic guest the -tdf is not relevant because they dont use the 
pit as timesource and use apic/acpi timers.
> and pressummed I misread the code and got the wrong PIC; when that problem was
> already happenning even without the patch.
>
> so to resume, the original patch should be right, and probably closer to what
> the original implementation of tdf was doing; but that original implementation
> has a bug with ACPI and the current code works eventhough is obviously broken,
> just because the compiler is packing the PicState2 struct in a way that makes
> "s" and "&s->pics[0]" point to the same address.
>
>   
You're right about this and we should apply the patch.
>>  also from my tests it might seem that tdf is irrelevant anyway with the new
>>  clock work and haven't been able to find a case where enabling it (so
>>  triggering this buggy code path) migh be needed.
>>
>>  any one care to comment on any current users of tdf? and if there are none in
>>  the viability for removing it?
>>
>>   
>>
>>    It does work but only for non-acpi guest that has the -no-kvm-irqchip
>>    parameter.
>>    To test it you can load your host and see what happens to the clock when
>>    you run
>>    a 1000HZ guest (use taskset to pin the guest with other cpu intensive
>>    tasks.)
>>    We decided not to fix it in the in-kernel pic since once the tpr
>>    optimization enable
>>    running acpi/apic guests and thus the pic is not used as time source.
>>    Dor.
>>     
>
> not sure if I follow what you meant here, but I had been able to reproduce the
> time drifts at least when using -no-acpi
>
> Carlo
>   
>>  On Fri, Nov 09, 2007 at 11:22:10AM -0600, Carlo Marcelo Arenas Belon wrote:
>>   
>>
>>  The following patch fixes 1a483ef4040ed380bf69d684783d06a617073256 so that the
>>  parent PIC pointer is used to send the edge irq0 instead of the PIC pair and
>>  that is an incompatible pointer type as reported in :
>>
>>  /var/tmp/portage/app-emulation/kvm-51/work/kvm-51/qemu/hw/i8259.c: In function
>>  `
>>  pic_read_irq':
>>  /var/tmp/portage/app-emulation/kvm-51/work/kvm-51/qemu/hw/i8259.c:248:
>>  warning: passing arg 1 of `pic_set_irq1' from incompatible pointer type
>>  /var/tmp/portage/app-emulation/kvm-51/work/kvm-51/qemu/hw/i8259.c:249:
>>  warning: passing arg 1 of `pic_set_irq1' from incompatible pointer type
>>
>>  Signed-off-by: Carlo Marcelo Arenas Belon <carenas-kLeDWSohozoJb6fo7hG9ng@public.gmane.org>
>>  ---
>>   qemu/hw/i8259.c |    4 ++--
>>   1 files changed, 2 insertions(+), 2 deletions(-)
>>
>>  diff --git a/qemu/hw/i8259.c b/qemu/hw/i8259.c
>>  index 01447d7..60063d4 100644
>>  --- a/qemu/hw/i8259.c
>>  +++ b/qemu/hw/i8259.c
>>  @@ -245,8 +245,8 @@ int pic_read_irq(PicState2 *s)
>>              if (timer_ints_to_push > 0) {
>>                  timer_ints_to_push--;
>>                   /* simulate an edge irq0, like the one generated by i8254 */
>>  -                pic_set_irq1(s, 0, 0);
>>  -                pic_set_irq1(s, 0, 1);
>>  +                pic_set_irq1(&s->pics[0], 0, 0);
>>  +                pic_set_irq1(&s->pics[0], 0, 1);
>>              }
>>          }
>>  
>>  --
>>  1.5.2.5
>>
>>     
>>
>>  -------------------------------------------------------------------------
>>  This SF.net email is sponsored by: Splunk Inc.
>>  Still grepping through log files to find problems?  Stop.
>>  Now Search log events and configuration files using AJAX and a browser.
>>  Download your FREE copy of Splunk now >> http://get.splunk.com/
>>  _______________________________________________
>>  kvm-devel mailing list
>>  kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
>>  https://lists.sourceforge.net/lists/listinfo/kvm-devel
>>
>>   
>>     
>
>   


[-- Attachment #1.2: Type: text/html, Size: 5660 bytes --]

[-- Attachment #2: Type: text/plain, Size: 314 bytes --]

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/

[-- Attachment #3: Type: text/plain, Size: 186 bytes --]

_______________________________________________
kvm-devel mailing list
kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/kvm-devel

      reply	other threads:[~2007-11-10 20:17 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-09 17:22 [PATCH] qemu: simulate edge-triggered interrupt in master PIC for time-drift-fix Carlo Marcelo Arenas Belon
2007-11-09 17:57 ` [RFC] " Carlo Marcelo Arenas Belon
2007-11-09 22:35   ` Dor Laor
     [not found]     ` <4734E0B6.6030109-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-11-10  3:41       ` Carlo Marcelo Arenas Belon
2007-11-10 20:17         ` Dor Laor [this message]

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=473611D0.5010706@qumranet.com \
    --to=dor.laor-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=carenas-kLeDWSohozoJb6fo7hG9ng@public.gmane.org \
    --cc=dor.laor-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