[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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |