Patchwork RTC: enable lost_tick_policy=slew as default (v2)

login
register
mail settings
Submitter Marcelo Tosatti
Date Dec. 12, 2012, 9:36 p.m.
Message ID <20121212213631.GA27694@amt.cnet>
Download mbox | patch
Permalink /patch/205663/
State New
Headers show

Comments

Marcelo Tosatti - Dec. 12, 2012, 9:36 p.m.
RTC interrupt reinjection has no known negative effect. Lack of
RTC interrupt reinjection, though, has negative effects: time drift
for Windows guests which use it as a timer source.

Based on that, enable lost_tick_policy=slew option as default.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>

v2: do not change default for older machines types (Paolo Bonzini)
Paolo Bonzini - Dec. 13, 2012, 8:35 a.m.
Il 12/12/2012 22:36, Marcelo Tosatti ha scritto:
> 
> RTC interrupt reinjection has no known negative effect. Lack of
> RTC interrupt reinjection, though, has negative effects: time drift
> for Windows guests which use it as a timer source.
> 
> Based on that, enable lost_tick_policy=slew option as default.
> 
> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
> 
> v2: do not change default for older machines types (Paolo Bonzini)
> 
> diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
> index c79fca7..c9e007d 100644
> --- a/hw/mc146818rtc.c
> +++ b/hw/mc146818rtc.c
> @@ -884,7 +884,7 @@ ISADevice *rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq)
>  static Property mc146818rtc_properties[] = {
>      DEFINE_PROP_INT32("base_year", RTCState, base_year, 1980),
>      DEFINE_PROP_LOSTTICKPOLICY("lost_tick_policy", RTCState,
> -                               lost_tick_policy, LOST_TICK_DISCARD),
> +                               lost_tick_policy, LOST_TICK_SLEW),
>      DEFINE_PROP_END_OF_LIST(),
>  };
>  
> diff --git a/hw/pc_piix.c b/hw/pc_piix.c
> index 19e342a..475bb4c 100644
> --- a/hw/pc_piix.c
> +++ b/hw/pc_piix.c
> @@ -295,6 +295,10 @@ static QEMUMachine pc_machine_v1_4 = {
>              .driver   = "usb-tablet",\
>              .property = "usb_version",\
>              .value    = stringify(1),\
> +        },{\
> +            .driver   = "mc146818rtc",\
> +            .property = "lost_tick_policy",\
> +            .value    = "discard",\
>          }
>  
>  static QEMUMachine pc_machine_v1_3 = {
> 

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Paolo Bonzini - March 7, 2013, 8:25 a.m.
Il 12/12/2012 22:36, Marcelo Tosatti ha scritto:
> 
> RTC interrupt reinjection has no known negative effect. Lack of
> RTC interrupt reinjection, though, has negative effects: time drift
> for Windows guests which use it as a timer source.
> 
> Based on that, enable lost_tick_policy=slew option as default.
> 
> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
> 
> v2: do not change default for older machines types (Paolo Bonzini)
> 
> diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
> index c79fca7..c9e007d 100644
> --- a/hw/mc146818rtc.c
> +++ b/hw/mc146818rtc.c
> @@ -884,7 +884,7 @@ ISADevice *rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq)
>  static Property mc146818rtc_properties[] = {
>      DEFINE_PROP_INT32("base_year", RTCState, base_year, 1980),
>      DEFINE_PROP_LOSTTICKPOLICY("lost_tick_policy", RTCState,
> -                               lost_tick_policy, LOST_TICK_DISCARD),
> +                               lost_tick_policy, LOST_TICK_SLEW),
>      DEFINE_PROP_END_OF_LIST(),
>  };
>  
> diff --git a/hw/pc_piix.c b/hw/pc_piix.c
> index 19e342a..475bb4c 100644
> --- a/hw/pc_piix.c
> +++ b/hw/pc_piix.c
> @@ -295,6 +295,10 @@ static QEMUMachine pc_machine_v1_4 = {
>              .driver   = "usb-tablet",\
>              .property = "usb_version",\
>              .value    = stringify(1),\
> +        },{\
> +            .driver   = "mc146818rtc",\
> +            .property = "lost_tick_policy",\
> +            .value    = "discard",\
>          }
>  
>  static QEMUMachine pc_machine_v1_3 = {
> 
> 

Looks like this was never applied.  Can you redo it for the new 1.5
machine (compatibility defines are now in hw/pc.h)?

Paolo
Marcelo Tosatti - March 8, 2013, 5:11 p.m.
On Thu, Mar 07, 2013 at 09:25:17AM +0100, Paolo Bonzini wrote:
> Il 12/12/2012 22:36, Marcelo Tosatti ha scritto:
> > 
> > RTC interrupt reinjection has no known negative effect. Lack of
> > RTC interrupt reinjection, though, has negative effects: time drift
> > for Windows guests which use it as a timer source.
> > 
> > Based on that, enable lost_tick_policy=slew option as default.
> > 
> > Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
> > 
> > v2: do not change default for older machines types (Paolo Bonzini)
> > 
> > diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
> > index c79fca7..c9e007d 100644
> > --- a/hw/mc146818rtc.c
> > +++ b/hw/mc146818rtc.c
> > @@ -884,7 +884,7 @@ ISADevice *rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq)
> >  static Property mc146818rtc_properties[] = {
> >      DEFINE_PROP_INT32("base_year", RTCState, base_year, 1980),
> >      DEFINE_PROP_LOSTTICKPOLICY("lost_tick_policy", RTCState,
> > -                               lost_tick_policy, LOST_TICK_DISCARD),
> > +                               lost_tick_policy, LOST_TICK_SLEW),
> >      DEFINE_PROP_END_OF_LIST(),
> >  };
> >  
> > diff --git a/hw/pc_piix.c b/hw/pc_piix.c
> > index 19e342a..475bb4c 100644
> > --- a/hw/pc_piix.c
> > +++ b/hw/pc_piix.c
> > @@ -295,6 +295,10 @@ static QEMUMachine pc_machine_v1_4 = {
> >              .driver   = "usb-tablet",\
> >              .property = "usb_version",\
> >              .value    = stringify(1),\
> > +        },{\
> > +            .driver   = "mc146818rtc",\
> > +            .property = "lost_tick_policy",\
> > +            .value    = "discard",\
> >          }
> >  
> >  static QEMUMachine pc_machine_v1_3 = {
> > 
> > 
> 
> Looks like this was never applied.  Can you redo it for the new 1.5
> machine (compatibility defines are now in hw/pc.h)?
> 
> Paolo

Anthony mentioned that this

http://article.gmane.org/gmane.comp.emulators.qemu/160699

Is the proper way to do it.
Anthony Liguori - March 8, 2013, 5:53 p.m.
Marcelo Tosatti <mtosatti@redhat.com> writes:

> On Thu, Mar 07, 2013 at 09:25:17AM +0100, Paolo Bonzini wrote:
>> Il 12/12/2012 22:36, Marcelo Tosatti ha scritto:
>> > 
>> > RTC interrupt reinjection has no known negative effect. Lack of
>> > RTC interrupt reinjection, though, has negative effects: time drift
>> > for Windows guests which use it as a timer source.
>> > 
>> > Based on that, enable lost_tick_policy=slew option as default.
>> > 
>> > Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
>> > 
>> > v2: do not change default for older machines types (Paolo Bonzini)
>> > 
>> > diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
>> > index c79fca7..c9e007d 100644
>> > --- a/hw/mc146818rtc.c
>> > +++ b/hw/mc146818rtc.c
>> > @@ -884,7 +884,7 @@ ISADevice *rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq)
>> >  static Property mc146818rtc_properties[] = {
>> >      DEFINE_PROP_INT32("base_year", RTCState, base_year, 1980),
>> >      DEFINE_PROP_LOSTTICKPOLICY("lost_tick_policy", RTCState,
>> > -                               lost_tick_policy, LOST_TICK_DISCARD),
>> > +                               lost_tick_policy, LOST_TICK_SLEW),
>> >      DEFINE_PROP_END_OF_LIST(),
>> >  };
>> >  
>> > diff --git a/hw/pc_piix.c b/hw/pc_piix.c
>> > index 19e342a..475bb4c 100644
>> > --- a/hw/pc_piix.c
>> > +++ b/hw/pc_piix.c
>> > @@ -295,6 +295,10 @@ static QEMUMachine pc_machine_v1_4 = {
>> >              .driver   = "usb-tablet",\
>> >              .property = "usb_version",\
>> >              .value    = stringify(1),\
>> > +        },{\
>> > +            .driver   = "mc146818rtc",\
>> > +            .property = "lost_tick_policy",\
>> > +            .value    = "discard",\
>> >          }
>> >  
>> >  static QEMUMachine pc_machine_v1_3 = {
>> > 
>> > 
>> 
>> Looks like this was never applied.  Can you redo it for the new 1.5
>> machine (compatibility defines are now in hw/pc.h)?
>> 
>> Paolo
>
> Anthony mentioned that this
>
> http://article.gmane.org/gmane.comp.emulators.qemu/160699
>
> Is the proper way to do it.

That breaks too.  I don't have a solution but I also don't remember what
the exact failures are.

I'm planning on running this patch through testing again so I can
provide better feedback.

Regards,

Anthony Liguori
Paolo Bonzini - March 9, 2013, 5:44 a.m.
Il 08/03/2013 18:53, Anthony Liguori ha scritto:
>> Anthony mentioned that this
>>
>> http://article.gmane.org/gmane.comp.emulators.qemu/160699
>>
>> Is the proper way to do it.
> 
> That breaks too.  I don't have a solution but I also don't remember what
> the exact failures are.

What about a more generic version of that?  Adding a priority field to
global properties, so that -global can have a higher priority than the
default (used by machine types)?

Paolo
Marcelo Tosatti - July 9, 2013, 9:24 p.m.
On Sat, Mar 09, 2013 at 06:44:36AM +0100, Paolo Bonzini wrote:
> Il 08/03/2013 18:53, Anthony Liguori ha scritto:
> >> Anthony mentioned that this
> >>
> >> http://article.gmane.org/gmane.comp.emulators.qemu/160699
> >>
> >> Is the proper way to do it.
> > 
> > That breaks too.  I don't have a solution but I also don't remember what
> > the exact failures are.
> 
> What about a more generic version of that?  Adding a priority field to
> global properties, so that -global can have a higher priority than the
> default (used by machine types)?
> 
> Paolo

What exactly is the problem with

http://lists.gnu.org/archive/html/qemu-devel/2012-12/msg01733.html

Again? Should it just be resubmitted ?
Anthony Liguori - July 9, 2013, 10:05 p.m.
Marcelo Tosatti <mtosatti@redhat.com> writes:

> On Sat, Mar 09, 2013 at 06:44:36AM +0100, Paolo Bonzini wrote:
>> Il 08/03/2013 18:53, Anthony Liguori ha scritto:
>> >> Anthony mentioned that this
>> >>
>> >> http://article.gmane.org/gmane.comp.emulators.qemu/160699
>> >>
>> >> Is the proper way to do it.
>> > 
>> > That breaks too.  I don't have a solution but I also don't remember what
>> > the exact failures are.
>> 
>> What about a more generic version of that?  Adding a priority field to
>> global properties, so that -global can have a higher priority than the
>> default (used by machine types)?
>> 
>> Paolo
>
> What exactly is the problem with
>
> http://lists.gnu.org/archive/html/qemu-devel/2012-12/msg01733.html
>
> Again? Should it just be resubmitted ?

Breaks the -rtc option which also uses globals.

Try qemu -M pc-1.4 -rtc driftfix=slew

Or qemu -M pc-1.4 -rtc-td-hack

Regards,

Anthony Liguori

Patch

diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
index c79fca7..c9e007d 100644
--- a/hw/mc146818rtc.c
+++ b/hw/mc146818rtc.c
@@ -884,7 +884,7 @@  ISADevice *rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq)
 static Property mc146818rtc_properties[] = {
     DEFINE_PROP_INT32("base_year", RTCState, base_year, 1980),
     DEFINE_PROP_LOSTTICKPOLICY("lost_tick_policy", RTCState,
-                               lost_tick_policy, LOST_TICK_DISCARD),
+                               lost_tick_policy, LOST_TICK_SLEW),
     DEFINE_PROP_END_OF_LIST(),
 };
 
diff --git a/hw/pc_piix.c b/hw/pc_piix.c
index 19e342a..475bb4c 100644
--- a/hw/pc_piix.c
+++ b/hw/pc_piix.c
@@ -295,6 +295,10 @@  static QEMUMachine pc_machine_v1_4 = {
             .driver   = "usb-tablet",\
             .property = "usb_version",\
             .value    = stringify(1),\
+        },{\
+            .driver   = "mc146818rtc",\
+            .property = "lost_tick_policy",\
+            .value    = "discard",\
         }
 
 static QEMUMachine pc_machine_v1_3 = {