[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__);//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: kodo2.log
Description: Text Data

_______________________________________________
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®.