All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v4 1/2] Force driftfix=none on previous machines
@ 2012-06-19 19:38 Crístian Viana
  2012-06-19 19:38 ` [Qemu-devel] [PATCH v4 2/2] Change driftfix default value to slew Crístian Viana
  2012-06-20  8:34 ` [Qemu-devel] [PATCH v4 1/2] Force driftfix=none on previous machines Daniel P. Berrange
  0 siblings, 2 replies; 3+ messages in thread
From: Crístian Viana @ 2012-06-19 19:38 UTC (permalink / raw)
  To: QEMU Development ML
  Cc: Paolo Bonzini, Crístian Viana, Anthony Liguori, Stefano Stabellini

The current value for the -rtc driftfix option is 'none'. This patch
makes sure that the old machines configuration will work the same way
even after that option changes its default value.

Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com>
---

There's a scenario when things don't work the way I expected: when I set a
previous machine with -M, the driftfix flag value on the command line is not
used, the machine's default value overwrites it. I'm not sure if that's the
expected behavior of QEMU in those cases (if I set a machine, I can't change its
properties) or if there's a bug somewhere. This is the question I asked in a
previous e-mail (http://article.gmane.org/gmane.comp.emulators.qemu/149902).

For example,

$ x86_64-softmmu/qemu-x86_64 -M pc-1.0 --rtc driftfix=slew

will use "driftfix=none", which is the default for the machine pc-1.0, not
"driftfix=slew" as I set on the command line. That only happens if I choose
a different machine than the default one (pc-1.1 as of now); otherwise it
works fine.

Changes since v3:
- Rebase the code

 hw/pc_piix.c |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/hw/pc_piix.c b/hw/pc_piix.c
index d68f77a..ed463da 100644
--- a/hw/pc_piix.c
+++ b/hw/pc_piix.c
@@ -378,6 +378,10 @@ static QEMUMachine pc_machine_v1_1 = {
             .driver   = TYPE_USB_DEVICE,\
             .property = "full-path",\
             .value    = "no",\
+        },{\
+            .driver   = "mc146818rtc",\
+            .property = "lost_tick_policy",\
+            .value    = "discard",\
         }
 
 static QEMUMachine pc_machine_v1_0 = {
-- 
1.7.9.5

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

* [Qemu-devel] [PATCH v4 2/2] Change driftfix default value to slew
  2012-06-19 19:38 [Qemu-devel] [PATCH v4 1/2] Force driftfix=none on previous machines Crístian Viana
@ 2012-06-19 19:38 ` Crístian Viana
  2012-06-20  8:34 ` [Qemu-devel] [PATCH v4 1/2] Force driftfix=none on previous machines Daniel P. Berrange
  1 sibling, 0 replies; 3+ messages in thread
From: Crístian Viana @ 2012-06-19 19:38 UTC (permalink / raw)
  To: QEMU Development ML
  Cc: Paolo Bonzini, Crístian Viana, Anthony Liguori, Stefano Stabellini

Windows 2008+ is very sensitive to missed ticks. The RTC is used by default as
the time source. If driftfix is not enabled, Windows is prone to
blue screening.

Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com>
---

Anthony,
Could you please try to reproduce the segfault again (as you stated in
http://article.gmane.org/gmane.comp.emulators.qemu/143649)? I can't find
it anymore.

Changes since v3:
- Fix a segfault

 hw/mc146818rtc.c |    2 +-
 vl.c             |   11 ++++++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
index 3777f85..dfd7ee6 100644
--- a/hw/mc146818rtc.c
+++ b/hw/mc146818rtc.c
@@ -686,7 +686,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/vl.c b/vl.c
index 204d85b..03661d1 100644
--- a/vl.c
+++ b/vl.c
@@ -559,7 +559,16 @@ static void configure_rtc(QemuOpts *opts)
 
             qdev_prop_register_global_list(slew_lost_ticks);
         } else if (!strcmp(value, "none")) {
-            /* discard is default */
+            static GlobalProperty discard_lost_ticks[] = {
+                {
+                    .driver   = "mc146818rtc",
+                    .property = "lost_tick_policy",
+                    .value    = "discard",
+                },
+                { /* end of list */ }
+            };
+
+            qdev_prop_register_global_list(discard_lost_ticks);
         } else {
             fprintf(stderr, "qemu: invalid option value '%s'\n", value);
             exit(1);
-- 
1.7.9.5

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

* Re: [Qemu-devel] [PATCH v4 1/2] Force driftfix=none on previous machines
  2012-06-19 19:38 [Qemu-devel] [PATCH v4 1/2] Force driftfix=none on previous machines Crístian Viana
  2012-06-19 19:38 ` [Qemu-devel] [PATCH v4 2/2] Change driftfix default value to slew Crístian Viana
@ 2012-06-20  8:34 ` Daniel P. Berrange
  1 sibling, 0 replies; 3+ messages in thread
From: Daniel P. Berrange @ 2012-06-20  8:34 UTC (permalink / raw)
  To: Crístian Viana
  Cc: Paolo Bonzini, QEMU Development ML, Anthony Liguori, Stefano Stabellini

On Tue, Jun 19, 2012 at 04:38:44PM -0300, Crístian Viana wrote:
> The current value for the -rtc driftfix option is 'none'. This patch
> makes sure that the old machines configuration will work the same way
> even after that option changes its default value.
> 
> Signed-off-by: Crístian Viana <vianac@linux.vnet.ibm.com>
> ---
> 
> There's a scenario when things don't work the way I expected: when I set a
> previous machine with -M, the driftfix flag value on the command line is not
> used, the machine's default value overwrites it. I'm not sure if that's the
> expected behavior of QEMU in those cases (if I set a machine, I can't change its
> properties) or if there's a bug somewhere. This is the question I asked in a
> previous e-mail (http://article.gmane.org/gmane.comp.emulators.qemu/149902).
> 
> For example,
> 
> $ x86_64-softmmu/qemu-x86_64 -M pc-1.0 --rtc driftfix=slew
> 
> will use "driftfix=none", which is the default for the machine pc-1.0, not
> "driftfix=slew" as I set on the command line. That only happens if I choose
> a different machine than the default one (pc-1.1 as of now); otherwise it
> works fine.

I can't answer your question as to why this happens, but this is a
critical problem we must fix before merging this change. We need to
be able to set driftfix=slew for old machine types manually.


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|

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

end of thread, other threads:[~2012-06-20  8:34 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-19 19:38 [Qemu-devel] [PATCH v4 1/2] Force driftfix=none on previous machines Crístian Viana
2012-06-19 19:38 ` [Qemu-devel] [PATCH v4 2/2] Change driftfix default value to slew Crístian Viana
2012-06-20  8:34 ` [Qemu-devel] [PATCH v4 1/2] Force driftfix=none on previous machines Daniel P. Berrange

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.