[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Bug: Windows 2003 fails to install on xen-unstable tip



>>> On 19.04.13 at 12:44, Roger Pau MonnÃ<roger.pau@xxxxxxxxxx> wrote:
> (XEN) HVM1: Booting from 0000:7c00
> (XEN) B=42 [A:26 B:02 C:50]

Hmm - no REG_C read here. Below/attached an updated patch,
with some more printing and two changes which together may
help.

Should the extra printing get noisy, just disable it, but please let
me know which (if any) of them you needed to take out.

Jan

--- a/xen/arch/x86/hvm/rtc.c
+++ b/xen/arch/x86/hvm/rtc.c
@@ -84,9 +84,11 @@ void rtc_periodic_interrupt(void *opaque
     else if ( ++(s->pt_dead_ticks) >= 10 )
     {
         /* VM is ignoring its RTC; no point in running the timer */
+printk("pt off @%d\n", __LINE__);//temp
         destroy_periodic_time(&s->pt);
         s->pt_code = 0;
     }
+else if(s->pt_code) rtc_update_irq(s);//todo?
     spin_unlock(&s->lock);
 }
 
@@ -114,6 +116,7 @@ static void rtc_timer_update(RTCState *s
         {
             if ( period_code != s->pt_code )
             {
+printk("pt on: %d\n", period_code);//temp
                 s->pt_code = period_code;
                 period = 1 << (period_code - 1); /* period in 32 Khz cycles */
                 period = DIV_ROUND(period * 1000000000ULL, 32768); /* in ns */
@@ -125,6 +128,7 @@ static void rtc_timer_update(RTCState *s
         }
         /* fall through */
     default:
+printk("pt off @%d\n", __LINE__);//temp
         destroy_periodic_time(&s->pt);
         s->pt_code = 0;
         break;
@@ -451,6 +455,9 @@ static int rtc_ioport_write(void *opaque
             rtc_timer_update(s);
         break;
     case RTC_REG_B:
+printk("B=%02x [A:%02x B:%02x C:%02x pt:%d/%d]\n",//temp
+       data, s->hw.cmos_data[RTC_REG_A], orig, 
s->hw.cmos_data[RTC_REG_C],//temp
+       s->pt_code, s->pt_dead_ticks);//temp
         if ( data & RTC_SET )
         {
             /* set mode: reset UIP mode */
@@ -474,6 +481,7 @@ static int rtc_ioport_write(void *opaque
          */
         rtc_update_irq(s);
         s->hw.cmos_data[RTC_REG_B] = data;
+if((data & RTC_PIE) && !(orig & RTC_PIE)) rtc_timer_update(s);//todo?
         if ( (data ^ orig) & RTC_SET )
             check_update_timer(s);
         if ( (data ^ orig) & (RTC_24H | RTC_DM_BINARY | RTC_SET) )
@@ -629,6 +637,7 @@ static uint32_t rtc_ioport_read(RTCState
     case RTC_REG_C:
         ret = s->hw.cmos_data[s->hw.cmos_index];
         s->hw.cmos_data[RTC_REG_C] = 0x00;
+printk("C=%02x pt=%d/%d\n", ret, s->pt_code, s->pt_dead_ticks);//temp
         rtc_update_irq(s);
         check_update_timer(s);
         alarm_timer_update(s);
@@ -727,9 +736,12 @@ void rtc_reset(struct domain *d)
 {
     RTCState *s = domain_vrtc(d);
 
+printk("pt off @%d\n", __LINE__);//temp
     destroy_periodic_time(&s->pt);
     s->pt_code = 0;
     s->pt.source = PTSRC_isa;
+s->hw.cmos_data[RTC_REG_B] &= ~(RTC_PIE|RTC_AIE|RTC_UIE);//todo?
+s->hw.cmos_data[RTC_REG_C] = 0;//todo?
 }
 
 void rtc_init(struct domain *d)

Attachment: x86-HVM-RTC.patch
Description: Text document

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.