[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 13:47, Jan Beulich wrote: 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. (XEN) HVM1: Booting from DVD/CD... (XEN) HVM1: Booting from 0000:7c00 (XEN) HVM1: pnp call arg1=0 [ 75.071460] xenbr0: port 3(vif1.0-emu) entering forwarding state (XEN) pt on: 10 (XEN) B=42 [A:2a B:02 C:50 pt:10/0] (XEN) C=50 pt=10/0 (XEN) C=c0 pt=10/0 (XEN) C=00 pt=10/0 (XEN) C=c0 pt=10/0 (XEN) C=00 pt=10/0 (XEN) pt off @87 (XEN) irq.c:270: Dom1 PCI link 0 changed 5 -> 0 (XEN) irq.c:270: Dom1 PCI link 1 changed 10 -> 0 (XEN) irq.c:270: Dom1 PCI link 2 changed 11 -> 0 (XEN) irq.c:270: Dom1 PCI link 3 changed 5 -> 0 Attached is the full log. -George 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__);//tempdestroy_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:
kodo2.log _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |