qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] Changing RTC from UTC to local time
@ 2004-05-29 14:39 Bartosz Fabianowski
  2004-05-29 17:23 ` Kyle Hayes
  0 siblings, 1 reply; 20+ messages in thread
From: Bartosz Fabianowski @ 2004-05-29 14:39 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 989 bytes --]

Hi

I have recently been experimenting with QEMU a bit and I noticed that 
the simulated RTC will always give the time in UTC, not in the local 
time zone of the host. This is probably by design; however, I would like 
to question that design choice.

On a PC, the RTC is supposed to always be set to local time, not to UTC. 
It might be different on different architectures - but for a simulated 
PC, the current behavior is not correct.

This is an important issue because Windows assumes that the RTC behaves 
to the spec and thinks that the time reported by the RTC is local. Thus, 
a Windows installed inside QEMU will report the current UTC time as the 
local time. If the host computer is located in any time zone other than 
GMT, the time on the host and the time on the slave will therefore be 
off by hours.

The fix for this is obvious - set the RTC to the local time of the host, 
not to UTC. I have attached a trivial patch to accomplish this.

Regards,
- Bartosz Fabianowski

[-- Attachment #2: local_time_patch.diff --]
[-- Type: text/plain, Size: 725 bytes --]

diff -rud qemu/hw/mc146818rtc.c qemu-patched/hw/mc146818rtc.c
--- qemu/hw/mc146818rtc.c	Sat Apr  3 14:27:31 2004
+++ qemu-patched/hw/mc146818rtc.c	Sat May 29 14:24:29 2004
@@ -235,7 +235,7 @@
     time_t ti;
 
     ti = s->current_time;
-    rtc_set_date_buf(s, gmtime(&ti));
+    rtc_set_date_buf(s, localtime(&ti));
 
     if (!(s->cmos_data[RTC_REG_B] & REG_B_SET)) {
         rtc_copy_date(s);
diff -rud qemu/hw/pc.c qemu-patched/hw/pc.c
--- qemu/hw/pc.c	Sun May 23 21:10:46 2004
+++ qemu-patched/hw/pc.c	Sat May 29 14:24:46 2004
@@ -110,7 +110,7 @@
 
     /* set the CMOS date */
     time(&ti);
-    tm = gmtime(&ti);
+    tm = localtime(&ti);
     rtc_set_date(s, tm);
 
     val = to_bcd(s, (tm->tm_year / 100) + 19);

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-29 14:39 [Qemu-devel] Changing RTC from UTC to local time Bartosz Fabianowski
@ 2004-05-29 17:23 ` Kyle Hayes
  2004-05-29 18:50   ` Bartosz Fabianowski
  0 siblings, 1 reply; 20+ messages in thread
From: Kyle Hayes @ 2004-05-29 17:23 UTC (permalink / raw)
  To: qemu-devel

On Saturday 29 May 2004 07:39, Bartosz Fabianowski wrote:
> Hi
>
> I have recently been experimenting with QEMU a bit and I noticed
> that the simulated RTC will always give the time in UTC, not in the
> local time zone of the host. This is probably by design; however, I
> would like to question that design choice.
>
> On a PC, the RTC is supposed to always be set to local time, not to
> UTC. It might be different on different architectures - but for a
> simulated PC, the current behavior is not correct.

Er, no.  For a _Windows_ PC, this is true.  For all *BSD and Linux 
OSes, you should usually use UTC/GMT for the hardware clock.

> This is an important issue because Windows assumes that the RTC
> behaves to the spec and thinks that the time reported by the RTC is
> local. Thus, a Windows installed inside QEMU will report the
> current UTC time as the local time. If the host computer is located
> in any time zone other than GMT, the time on the host and the time
> on the slave will therefore be off by hours.
>
> The fix for this is obvious - set the RTC to the local time of the
> host, not to UTC. I have attached a trivial patch to accomplish
> this.

Please revert the patch or make it so that it is a runtime option.  I 
don't run Windows in QEMU and this makes all my times off.

Best,
Kyle

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-29 17:23 ` Kyle Hayes
@ 2004-05-29 18:50   ` Bartosz Fabianowski
  2004-05-29 23:13     ` Tim
  2004-05-30 21:59     ` Flavien
  0 siblings, 2 replies; 20+ messages in thread
From: Bartosz Fabianowski @ 2004-05-29 18:50 UTC (permalink / raw)
  To: kyle, qemu-devel

> Er, no.  For a _Windows_ PC, this is true.  For all *BSD and Linux 
> OSes, you should usually use UTC/GMT for the hardware clock.

You can set a PC's RTC to UTC or any other time zone for that matter if 
you want to. However, according to the original design (dating back to 
the olden days of the first IBM PC), the RTC should be running in local 
time.

I don't run Linux myself but since so many people multi-boot Windows and 
Linux, I guess it must be possible to make Linux deal with an RTC 
running in local time, even if the Linux default is UTC. As for *BSD, it 
is definitely possible to do so. I run FreeBSD as my primary OS and I 
know that during installation it already asks you whether your RTC has 
local or UTC time. So it can deal with both scenarios.

Thus, since Linux and *BSD are flexible and can deal with both the 
standard local and non-standard UTC setting, while Windows only 
understands local time, I believe that setting the RTC to local time 
will make it usable to all those systems at once.

> Please revert the patch or make it so that it is a runtime option.  I 
> don't run Windows in QEMU and this makes all my times off.

I guess one could make this a runtime option. But that would only 
clutter the command line, as there would be one more parameter just to 
set the RTC's time zone. A compile time option makes much more sense 
IMHO. However, this would only benefit very few people as most people 
download binaries.

Keeping in mind that Linux and *BSD both can deal with a standard PC RTC 
running in local time, are you sure that QEMU really needs the option of 
having the RTC run in UTC?

Regards,
- Bartosz Fabianowski

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-29 18:50   ` Bartosz Fabianowski
@ 2004-05-29 23:13     ` Tim
  2004-05-29 23:23       ` Bartosz Fabianowski
  2004-05-30 21:59     ` Flavien
  1 sibling, 1 reply; 20+ messages in thread
From: Tim @ 2004-05-29 23:13 UTC (permalink / raw)
  To: qemu-devel

> You can set a PC's RTC to UTC or any other time zone for that matter if 
> you want to. However, according to the original design (dating back to 
> the olden days of the first IBM PC), the RTC should be running in local 
> time.

Probably makes sense to make this the default.

> I guess one could make this a runtime option. But that would only 
> clutter the command line, as there would be one more parameter just to 
> set the RTC's time zone. A compile time option makes much more sense 
> IMHO. However, this would only benefit very few people as most people 
> download binaries.
> 
> Keeping in mind that Linux and *BSD both can deal with a standard PC RTC 
> running in local time, are you sure that QEMU really needs the option of 
> having the RTC run in UTC?

It is difficult to anticipate future uses of any piece of software.  I
can think of a few cases where I would want to set this behavior on a
case-by-case basis, for example, running an OS that was installed on
real hardware originally.  Therefore, if it were to come down to a vote,
I would say it should be a command line option.  The patch submitted 
earlier illustrates how trivial it would be to make it configurable at
runtime.


As for a cluttered command line.. yes, I agree it is getting cluttered.
In addition, the current syntax will eventually limit future emmulated
hardware (scsi bus, more than 4 IDE disks, etc).  Is there any effort
currently in the works to move the command line options into a config
file for more versatile runtime configuration?  When I find time, I
might work on this, if no one else has started it...

tim

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-29 23:13     ` Tim
@ 2004-05-29 23:23       ` Bartosz Fabianowski
  2004-05-30  4:52         ` John R. Hogerhuis
  0 siblings, 1 reply; 20+ messages in thread
From: Bartosz Fabianowski @ 2004-05-29 23:23 UTC (permalink / raw)
  To: qemu-devel

> I can think of a few cases where I would want to set this behavior on
> a case-by-case basis, for example, running an OS that was installed
> on real hardware originally.

Kyle sent me a description of what he is running on QEMU off the list
and after reading that I agree that there are some situations where you
definitely want your RTC to be UTC. Not your typical desktop use, so 
local RTC should be default, but UTC RTC has its uses.

> As for a cluttered command line.. yes, I agree it is getting
> cluttered.

I would code up a command line option for the RTC time zone, but for now
I will wait and see if there is any consensus regarding some
configuration file. It would be much better to have one IMHO.

- Bartosz

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-29 23:23       ` Bartosz Fabianowski
@ 2004-05-30  4:52         ` John R. Hogerhuis
  2004-05-30 19:32           ` Bartosz Fabianowski
  0 siblings, 1 reply; 20+ messages in thread
From: John R. Hogerhuis @ 2004-05-30  4:52 UTC (permalink / raw)
  To: qemu-devel

I would prefer configuration to be kept simple.

Good defaults, and no config file unless and until it is absolutely
necessary. Sounds like a solution looking for a problem at this stage.
I'm not seeing any stress marks yet.

-- John.

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-30  4:52         ` John R. Hogerhuis
@ 2004-05-30 19:32           ` Bartosz Fabianowski
  2004-05-30 19:42             ` Kyle Hayes
  2004-05-31 13:53             ` Pavel Janík
  0 siblings, 2 replies; 20+ messages in thread
From: Bartosz Fabianowski @ 2004-05-30 19:32 UTC (permalink / raw)
  To: jhoger, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 284 bytes --]

Attached is a revised patch. With this patch, the default time zone for 
the RTC is the local time zone of the host. If the command line option 
"-utc" is specified, the time zone changes to UTC.

This patch applies cleanly, compiles and runs with today's QEMU CVS for me.

- Bartosz

[-- Attachment #2: qemu-rtc.patch --]
[-- Type: text/plain, Size: 2495 bytes --]

diff -ru qemu.orig/hw/mc146818rtc.c qemu/hw/mc146818rtc.c
--- qemu.orig/hw/mc146818rtc.c	Sun May 30 21:17:35 2004
+++ qemu/hw/mc146818rtc.c	Sun May 30 21:06:14 2004
@@ -235,7 +235,10 @@
     time_t ti;
 
     ti = s->current_time;
-    rtc_set_date_buf(s, gmtime(&ti));
+    if (rtc_utc)
+        rtc_set_date_buf(s, gmtime(&ti));
+    else
+        rtc_set_date_buf(s, localtime(&ti));
 
     if (!(s->cmos_data[RTC_REG_B] & REG_B_SET)) {
         rtc_copy_date(s);
diff -ru qemu.orig/hw/pc.c qemu/hw/pc.c
--- qemu.orig/hw/pc.c	Sun May 30 21:17:35 2004
+++ qemu/hw/pc.c	Sun May 30 21:06:42 2004
@@ -110,7 +110,10 @@
 
     /* set the CMOS date */
     time(&ti);
-    tm = gmtime(&ti);
+    if (rtc_utc)
+        tm = gmtime(&ti);
+    else
+        tm = localtime(&ti);
     rtc_set_date(s, tm);
 
     val = to_bcd(s, (tm->tm_year / 100) + 19);
diff -ru qemu.orig/vl.c qemu/vl.c
--- qemu.orig/vl.c	Sun May 30 21:17:35 2004
+++ qemu/vl.c	Sun May 30 21:14:20 2004
@@ -129,6 +129,7 @@
 int audio_enabled = 0;
 int pci_enabled = 0;
 int prep_enabled = 0;
+int rtc_utc = 0;
 
 /***********************************************************/
 /* x86 ISA bus support */
@@ -1940,6 +1941,7 @@
            "-m megs         set virtual RAM size to megs MB [default=%d]\n"
            "-nographic      disable graphical output and redirect serial I/Os to console\n"
            "-enable-audio   enable audio support\n"
+           "-utc            set the real time clock to UTC, not local time time\n"
            "\n"
            "Network options:\n"
            "-nics n         simulate 'n' network cards [default=1]\n"
@@ -2026,6 +2028,7 @@
     QEMU_OPTION_no_code_copy,
     QEMU_OPTION_pci,
     QEMU_OPTION_prep,
+    QEMU_OPTION_utc,
 };
 
 typedef struct QEMUOption {
@@ -2076,6 +2079,7 @@
 #ifdef TARGET_PPC
     { "prep", 0, QEMU_OPTION_prep },
 #endif
+    { "utc", 0, QEMU_OPTION_utc },
     { NULL },
 };
 
@@ -2351,6 +2355,9 @@
                 break;
             case QEMU_OPTION_prep:
                 prep_enabled = 1;
+                break;
+            case QEMU_OPTION_utc:
+                rtc_utc = 1;
                 break;
             }
         }
diff -ru qemu.orig/vl.h qemu/vl.h
--- qemu.orig/vl.h	Sun May 30 21:17:35 2004
+++ qemu/vl.h	Sun May 30 21:04:55 2004
@@ -543,6 +543,7 @@
 RTCState *rtc_init(int base, int irq);
 void rtc_set_memory(RTCState *s, int addr, int val);
 void rtc_set_date(RTCState *s, const struct tm *tm);
+extern int rtc_utc;
 
 /* serial.c */
 

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-30 19:32           ` Bartosz Fabianowski
@ 2004-05-30 19:42             ` Kyle Hayes
  2004-05-31 13:53             ` Pavel Janík
  1 sibling, 0 replies; 20+ messages in thread
From: Kyle Hayes @ 2004-05-30 19:42 UTC (permalink / raw)
  To: qemu-devel

On Sunday 30 May 2004 12:32, Bartosz Fabianowski wrote:
> Attached is a revised patch. With this patch, the default time zone
> for the RTC is the local time zone of the host. If the command line
> option "-utc" is specified, the time zone changes to UTC.
>
> This patch applies cleanly, compiles and runs with today's QEMU CVS
> for me.

Thanks!!

Best,
Kyle

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-29 18:50   ` Bartosz Fabianowski
  2004-05-29 23:13     ` Tim
@ 2004-05-30 21:59     ` Flavien
  2004-05-31  0:29       ` Bartosz Fabianowski
  1 sibling, 1 reply; 20+ messages in thread
From: Flavien @ 2004-05-30 21:59 UTC (permalink / raw)
  To: qemu-devel

Hello,


Bartosz Fabianowski wrote :
> 
> You can set a PC's RTC to UTC or any other time zone  for  that
> matter if you want  to.  However,  according  to  the  original
> design (dating back to the olden days of the first IBM PC), the
> RTC should be running in local time.

Just a thought :

There is a problem with setting RTC to local time  with  daylight
savings, when running multiple OSs on the same hardware.

If an OS expects RTC clock to be local, then  you'd  better  only
one OS on that system, otherwise you'll get into trouble twice  a
year. Example :
1/ Install two instances of windows on the same  machine,
2/ Only boot one of them daily for 6 months,
3/ Wait for daylight saving time, still working  with  that  same
   version of windows : It will change RTC clock and run fine.
4/ Boot the other windows : It will think "oh, I have'nt been run
   for a long time. And what happened during  that  time  ?  Time
   changed ! So, let's change RTC clock !". Your RTC  clock  will
   have been change twice.

Conclusion : setting RTC to local time is a _broken_ concept.


Flavien.

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-30 21:59     ` Flavien
@ 2004-05-31  0:29       ` Bartosz Fabianowski
  2004-05-31  1:52         ` Kyle Hayes
  0 siblings, 1 reply; 20+ messages in thread
From: Bartosz Fabianowski @ 2004-05-31  0:29 UTC (permalink / raw)
  To: qemu-devel

> There is a problem with setting RTC to local time  with  daylight
> savings, when running multiple OSs on the same hardware.

Actually, it's not quite as bad.

First of all, the problem you described affects all multi boot systems. 
If more than one operating system decides to adjust for DST, yes, you 
get a clock that is off. That is a know problem and users of multi boot 
systems, which are quite common these days, have learned to deal with 
it. When you are installing Windows, it suggests you let it adjust for 
DST automatically. However, you can uncheck the relevant check box and 
Windows will leave your RTC alone. So, you can designate one operating 
system to take care of the DST adjustment or you can even do it manually 
if you want to. Again, this is not a new issue uncovered here; it 
affects all multi boot systems.

With QEMU, the situation is actually much better. When you shut down 
QEMU, its RTC state is not saved anywhere and it gets initialized from 
the host's RTC the next time QEMU is run. And also, while it is running, 
QEMU keeps synchronizing its RTC with the host time. So if you run 
multiple OSes inside QEMU and if you allow any of them to adjust for 
DST, this will actually have no effect. Therefore, I don't see a problem 
with allowing the RTC to be running in local time and to allow the 
operating systems to play with it.

> Conclusion : setting RTC to local time is a _broken_ concept.

I agree that the world would be a better - and much simpler - place if 
all RTCs ran in UTC. However, this is simply not the case. PC RTCs have 
historically always run in local time. While some PC servers may be 
handling this differently these days, it is certainly still true of 
desktops. And if I understand the idea behind QEMU right, it is to 
emulate a PC and behave like a real one would. So to follow the vast 
majority of PCs out there, QEMU should have a local time RTC by default.

And after all, with my patch, you would still have the option of using 
an UTC RTC if you choose so.

- Bartosz

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-31  0:29       ` Bartosz Fabianowski
@ 2004-05-31  1:52         ` Kyle Hayes
  2004-05-31 12:11           ` Bartosz Fabianowski
  0 siblings, 1 reply; 20+ messages in thread
From: Kyle Hayes @ 2004-05-31  1:52 UTC (permalink / raw)
  To: qemu-devel

On Sunday 30 May 2004 17:29, Bartosz Fabianowski wrote:
[snip]
> With QEMU, the situation is actually much better. When you shut down
> QEMU, its RTC state is not saved anywhere and it gets initialized from
> the host's RTC the next time QEMU is run. And also, while it is running,
> QEMU keeps synchronizing its RTC with the host time. So if you run
> multiple OSes inside QEMU and if you allow any of them to adjust for
> DST, this will actually have no effect. Therefore, I don't see a problem
> with allowing the RTC to be running in local time and to allow the
> operating systems to play with it.

Of course, if the emulator takes its time from the real RTC and that has 
been changed....  Hmm, no even if the RTC is in UTC, then localtime() will 
still return daylight-savings-time-corrected time.  So, you should 
probably _always_ have the emulated OS keep away from the RTC.  The host 
OS will provide the correct time as the fake RTC value. I.e. it will 
already be changed.

> > Conclusion : setting RTC to local time is a _broken_ concept.
>
> I agree that the world would be a better - and much simpler - place if
> all RTCs ran in UTC. However, this is simply not the case. PC RTCs have
> historically always run in local time. While some PC servers may be
> handling this differently these days, it is certainly still true of
> desktops. And if I understand the idea behind QEMU right, it is to
> emulate a PC and behave like a real one would. So to follow the vast
> majority of PCs out there, QEMU should have a local time RTC by default.

Actually, while installing SuSE 9.1 yesterday, I noted that it states that 
the clock should be set to UTC unless you are dual booting.  I believe 
that most Linux distros recommend this as well.  I don't dual boot any 
machines (that's what QEMU is for!) so I haven't had this issue for a long 
time.

Best,
Kyle

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-31  1:52         ` Kyle Hayes
@ 2004-05-31 12:11           ` Bartosz Fabianowski
  0 siblings, 0 replies; 20+ messages in thread
From: Bartosz Fabianowski @ 2004-05-31 12:11 UTC (permalink / raw)
  To: kyle, qemu-devel

> So, you should probably _always_ have the emulated OS keep away from 
> the RTC.  The host OS will provide the correct time as the fake RTC 
> value.

My point exactly. Your host operating system is most likely one you use
quite a lot so chances are you will have set it up correctly to take
care of DST adjustments. When installing a slave OS that requires a
local RTC (Windows), you can just tell it the RTC is local and also tell
it to keep away from the RTC. When the host adjusts for DST, the slave
will automatically follow - theoretically, this should work even if it
occurs while QEMU is running. Though I haven't tried this yet.

And as a further safeguard, as I pointed out earlier, QEMU will always
reset the RTC if the slave OS starts tinkering with it. So even if you
forget to tell your slave OS to stop setting the RTC, no harm is done.

> Actually, while installing SuSE 9.1 yesterday, I noted that it states
> that the clock should be set to UTC unless you are dual booting.

I have never installed Linux on a machine myself so I didn't know what
Linux recommends. From your post and my own experience I conclude once
again that both Linux and *BSD can deal with a local time RTC while
Windows actually requires one. So if your RTC is running in local time,
all of those OSes will work. However, when your RTC is UTC, only Linux
and *BSD will work correctly. Windows will give you the wrong time. This
is why I believe we should have:

a) a choice between UTC and local time and
b) a safe default that makes all OSes work - which is local time

I guess it breaks down to this: If you are tinkering with Linux or *BSD
inside QEMU, you want your RTC to be UTC, as that is technically the
better way of doing it and it works nicely. If you are installing
Windows however, you want local time. Judging from the current posts on
the mailing list, the number of people who install Windows for now seems
to be smaller than that of people who install Linux or *BSD. But I could
well imagine that once QEMU matures and the word gets out, people will
start using it as a VMWare replacement for when they need that lonely
Windows application and Wine just won't do. Which happens to be the
situation I am in. So in anticipation of such a use - a use by newbies -
I believe a safe default is very important.

Thus, again, I believe my patch should be committed. But that, after
all, is Fabrice's choice.

- Bartosz

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-30 19:32           ` Bartosz Fabianowski
  2004-05-30 19:42             ` Kyle Hayes
@ 2004-05-31 13:53             ` Pavel Janík
  2004-05-31 14:20               ` Bartosz Fabianowski
  2004-05-31 14:51               ` Fabrice Bellard
  1 sibling, 2 replies; 20+ messages in thread
From: Pavel Janík @ 2004-05-31 13:53 UTC (permalink / raw)
  To: qemu-devel

   From: Bartosz Fabianowski <bartosz@fabianowski.de>
   Date: Sun, 30 May 2004 21:32:26 +0200

This is multi-reply.

   > Attached is a revised patch. With this patch, the default time zone
   > for the RTC is the local time zone of the host. If the command line
   > option "-utc" is specified, the time zone changes to UTC.

I vote against this change. It is nonsense to have local time in UTC
because then when you work on the system that has TZ1 time in BIOS and you
work in TZ2, you can't set your time accordingly, because you must know the
TZ1 vs. TZ2 offset. It *should* be enough to know your own timezone to set
the correct date and time.

On the other hand, I agree that having the possibility to change CMOS time
to local could be handy for those who use broken systems like Microsoft
Windows is.


   From: Flavien <flavien-qemu@lebarbe.net>
   Date: Sun, 30 May 2004 23:59:49 +0200

   > Conclusion : setting RTC to local time is a _broken_ concept.

+1. Also imagine you boot your system in 2:30 the day when time moves back
from 03:00 to 02:00, ie. there are two moments 02:30. Which one it is?


   From: Bartosz Fabianowski <bartosz@fabianowski.de>
   Date: Mon, 31 May 2004 14:11:18 +0200

   > > RTC.  The host OS will provide the correct time as the fake RTC value.
   > 
   > My point exactly. Your host operating system is most likely one you use
   > quite a lot so chances are you will have set it up correctly to take
   > care of DST adjustments.

I often run QEMU on my other system I have in US. I'm in Europe. I do not
want to *always* have bad time... My system in US always gives me right
time now - it is in UTC so it is pretty easy to setup - just say the TZ you
want to have in your host system. I can't imagine how I could do that
should the system use US local time if I want to use Czech local time.

   > b) a safe default that makes all OSes work - which is local time

You still think like Windows only user. Please stop that. This is not safe
default. This would be default that hurts many people, but not Windows
users. This is not "safe".
-- 
Pavel Janík

That's the problem: pretesters aren't finding many more bugs nowadays,
so it'll probably take until 2005 to find and fix enough bugs that we
can comfortably announce the code stable.
                  -- Stefan Monnier in comp.emacs

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-31 13:53             ` Pavel Janík
@ 2004-05-31 14:20               ` Bartosz Fabianowski
  2004-05-31 14:51               ` Fabrice Bellard
  1 sibling, 0 replies; 20+ messages in thread
From: Bartosz Fabianowski @ 2004-05-31 14:20 UTC (permalink / raw)
  To: qemu-devel

> On the other hand, I agree that having the possibility to change CMOS
>  time to local could be handy for those who use broken systems like 
> Microsoft Windows is.

Seems like we all agree on this. The only thing we can't agree on is
what should be the default. I believe local RTC is a sane default while
you believe it should be UTC. Really, all I care about is that I am
given the option of using local RTC if I need to. Since QEMU is not my
project and I have no commit privileges, I hope that Fabrice will pick
the way he prefers and then commit my patch - modified or unmodified.

> +1. Also imagine you boot your system in 2:30 the day when time moves
> back from 03:00 to 02:00, ie. there are two moments 02:30. Which one
> it is?

Yes, as I said many times before, a local time RTC is neither elegant
nor without problems. Neither is the A20 gate. But when emulating a PC,
you have to live with other people's bad decisions and you have to
emulate them faithfully. IBM's and later Microsoft's choice to go with a
local time RTC is something one needs to be aware of and that one needs
to emulate - not something one needs to agree with.

> My system in US always gives me right time now - it is in UTC [...]

And with my patch, there would be nothing there to keep you from doing
it like this. Just specify "-utc" on the command line and you are fine.

> You still think like Windows only user. Please stop that.

No, I am not thinking like a Windows user. I am thinking *about* Windows
users while you prefer to ignore them. Truth is, most Linux/*BSD people
are smart enough to figure out what the difference between local time
and UTC is and to decide which one they want. While, on the other hand,
most Windows people are simple end users who don't understand this
choice. To them, when the RTC runs in UTC, the clock will simply be off
by a few hours and they will have no clue why. That's why I believe
local time should be the default, with a well documented and easily
accessible option to override this default if you choose to do so.

- Bartosz

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-31 13:53             ` Pavel Janík
  2004-05-31 14:20               ` Bartosz Fabianowski
@ 2004-05-31 14:51               ` Fabrice Bellard
  2004-05-31 14:51                 ` Bartosz Fabianowski
                                   ` (3 more replies)
  1 sibling, 4 replies; 20+ messages in thread
From: Fabrice Bellard @ 2004-05-31 14:51 UTC (permalink / raw)
  To: qemu-devel


My initial idea was to set local time as the default, as it is the case 
for most OSes. But I knew that many Unix users would not like that.

Before there is support for a configuration file, I can add a default 
mode where QEMU scans the partition table and switches to localtime if 
the boot partition is of FAT type (I don't know how to probe for NTFS 
yet). But there are still problems with the CDROMs.

Fabrice.

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-31 14:51               ` Fabrice Bellard
@ 2004-05-31 14:51                 ` Bartosz Fabianowski
  2004-05-31 15:12                 ` Derek Fawcus
                                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 20+ messages in thread
From: Bartosz Fabianowski @ 2004-05-31 14:51 UTC (permalink / raw)
  To: qemu-devel

> Before there is support for a configuration file, I can add a default
> mode where QEMU scans the partition table

Would it not be better to use a command line option? While it seems
utterly senseless, somebody might come up with the idea of doing
multi boot inside QEMU (that is, installing multiple operating systems on
a simulated hard drive). Your scan in this case will only find the first
system. And if the first one is Linux/*BSD and the second one Windows,
you will set the wrong time zone.

No matter how smart you make your program, a human will be smarter and
will make a better choice of time zone in a split second.

- Bartosz

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-31 14:51               ` Fabrice Bellard
  2004-05-31 14:51                 ` Bartosz Fabianowski
@ 2004-05-31 15:12                 ` Derek Fawcus
  2004-05-31 16:43                   ` Tim
  2004-05-31 16:27                 ` Pavel Janík
  2004-05-31 17:09                 ` Kyle Hayes
  3 siblings, 1 reply; 20+ messages in thread
From: Derek Fawcus @ 2004-05-31 15:12 UTC (permalink / raw)
  To: qemu-devel

On Mon, May 31, 2004 at 04:51:03PM +0200, Fabrice Bellard wrote:
> 
> Before there is support for a configuration file, I can add a default 
> mode where QEMU scans the partition table and switches to localtime if 
> the boot partition is of FAT type

Sounds like overkill,  and won't always give the correct result.

i.e.  my laptop boots from a FAT fs,  but only has Linux on it.

The FAT fs simply being used as a simple boot / recover FS.

I believe that plan 9 does a similar thing (9fat fs == FAT),
with a FAT based boot filesys.

I've certainly seen other OS's that take a similar approach.

So I'd suggest that the offered patch be chosen - but simply
pick if you want local or UTC as the default.

DF

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-31 14:51               ` Fabrice Bellard
  2004-05-31 14:51                 ` Bartosz Fabianowski
  2004-05-31 15:12                 ` Derek Fawcus
@ 2004-05-31 16:27                 ` Pavel Janík
  2004-05-31 17:09                 ` Kyle Hayes
  3 siblings, 0 replies; 20+ messages in thread
From: Pavel Janík @ 2004-05-31 16:27 UTC (permalink / raw)
  To: qemu-devel

   From: Fabrice Bellard <fabrice@bellard.org>
   Date: Mon, 31 May 2004 16:51:03 +0200

Fabrice,

   > Before there is support for a configuration file, I can add a default
   > mode where QEMU scans the partition table and switches to localtime if
   > the boot partition is of FAT type (I don't know how to probe for NTFS
   > yet). But there are still problems with the CDROMs.

I too think this is overkill.
-- 
Pavel Janík

Actually, we've just rescheduled: the word now is that Emacs 21 will not be
released before year 2005.
                  -- Eli Zaretskii in comp.emacs about release of Emacs 21

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-31 15:12                 ` Derek Fawcus
@ 2004-05-31 16:43                   ` Tim
  0 siblings, 0 replies; 20+ messages in thread
From: Tim @ 2004-05-31 16:43 UTC (permalink / raw)
  To: qemu-devel

> Sounds like overkill,  and won't always give the correct result.

Yeah, I agree this is overkill, and will often fail.

I think a command line option is perfectly sufficient at this point.
When a configuration file is developed later, it can be available there
as well.

my $2*10^-2

tim

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

* Re: [Qemu-devel] Changing RTC from UTC to local time
  2004-05-31 14:51               ` Fabrice Bellard
                                   ` (2 preceding siblings ...)
  2004-05-31 16:27                 ` Pavel Janík
@ 2004-05-31 17:09                 ` Kyle Hayes
  3 siblings, 0 replies; 20+ messages in thread
From: Kyle Hayes @ 2004-05-31 17:09 UTC (permalink / raw)
  To: qemu-devel

On Monday 31 May 2004 07:51, Fabrice Bellard wrote:
> My initial idea was to set local time as the default, as it is the case
> for most OSes. But I knew that many Unix users would not like that.
>
> Before there is support for a configuration file, I can add a default
> mode where QEMU scans the partition table and switches to localtime if
> the boot partition is of FAT type (I don't know how to probe for NTFS
> yet). But there are still problems with the CDROMs.

I think that just a simple command line switch is sufficient.  I wrap all 
my QEMU invocations in small shell scripts anyway, so I do not see all the 
command line args.  I do not care whether the default is local time or 
UTC.  As long as I can make it UTC for my QEMU instances, I'm happy :-)

I wouldn't worry about making QEMU have a config file at this point.  Just 
keep up the great work with the emulator itself and adding PCI and 
graphics.  If I could pay you for this, I would!  QEMU is one of the most 
useful open source projects I've used in years.

Best,
Kyle

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

end of thread, other threads:[~2004-05-31 19:12 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-05-29 14:39 [Qemu-devel] Changing RTC from UTC to local time Bartosz Fabianowski
2004-05-29 17:23 ` Kyle Hayes
2004-05-29 18:50   ` Bartosz Fabianowski
2004-05-29 23:13     ` Tim
2004-05-29 23:23       ` Bartosz Fabianowski
2004-05-30  4:52         ` John R. Hogerhuis
2004-05-30 19:32           ` Bartosz Fabianowski
2004-05-30 19:42             ` Kyle Hayes
2004-05-31 13:53             ` Pavel Janík
2004-05-31 14:20               ` Bartosz Fabianowski
2004-05-31 14:51               ` Fabrice Bellard
2004-05-31 14:51                 ` Bartosz Fabianowski
2004-05-31 15:12                 ` Derek Fawcus
2004-05-31 16:43                   ` Tim
2004-05-31 16:27                 ` Pavel Janík
2004-05-31 17:09                 ` Kyle Hayes
2004-05-30 21:59     ` Flavien
2004-05-31  0:29       ` Bartosz Fabianowski
2004-05-31  1:52         ` Kyle Hayes
2004-05-31 12:11           ` Bartosz Fabianowski

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