Commit b5a23ad40c38ab6f5d496c1b0fbd92c460e36efa

Authored by balrog
1 parent c717d8bf

Do not set RTC frequency if already set (Aurelien Jarno).


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3954 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 4 additions and 1 deletions
@@ -1305,11 +1305,14 @@ static void hpet_stop_timer(struct qemu_alarm_timer *t) @@ -1305,11 +1305,14 @@ static void hpet_stop_timer(struct qemu_alarm_timer *t)
1305 static int rtc_start_timer(struct qemu_alarm_timer *t) 1305 static int rtc_start_timer(struct qemu_alarm_timer *t)
1306 { 1306 {
1307 int rtc_fd; 1307 int rtc_fd;
  1308 + unsigned long current_rtc_freq = 0;
1308 1309
1309 TFR(rtc_fd = open("/dev/rtc", O_RDONLY)); 1310 TFR(rtc_fd = open("/dev/rtc", O_RDONLY));
1310 if (rtc_fd < 0) 1311 if (rtc_fd < 0)
1311 return -1; 1312 return -1;
1312 - if (ioctl(rtc_fd, RTC_IRQP_SET, RTC_FREQ) < 0) { 1313 + ioctl(rtc_fd, RTC_IRQP_READ, &current_rtc_freq);
  1314 + if (current_rtc_freq != RTC_FREQ &&
  1315 + ioctl(rtc_fd, RTC_IRQP_SET, RTC_FREQ) < 0) {
1313 fprintf(stderr, "Could not configure '/dev/rtc' to have a 1024 Hz timer. This is not a fatal\n" 1316 fprintf(stderr, "Could not configure '/dev/rtc' to have a 1024 Hz timer. This is not a fatal\n"
1314 "error, but for better emulation accuracy either use a 2.6 host Linux kernel or\n" 1317 "error, but for better emulation accuracy either use a 2.6 host Linux kernel or\n"
1315 "type 'echo 1024 > /proc/sys/dev/rtc/max-user-freq' as root.\n"); 1318 "type 'echo 1024 > /proc/sys/dev/rtc/max-user-freq' as root.\n");