List Info

Thread: Re: NetBSD crashes on 4 GB Supermicro




Re: NetBSD crashes on 4 GB Supermicro
country flaguser name
United States
2007-05-04 23:58:54
I have some sort of answer now.

In xen_machdep.c:

  xpmap_get_bootptep checks if PG_V is set. If not, it
returns (void *)-1;

  xpmap_get_bootpte returns simply
xpmap_get_bootptep(va)[0]. If
  xpmap_get_bootptep returned (void *)-1, the domain will
crash right here.

I modified things slightly so the condition could be
returned back to
xpmap_init. When this happens I had the loop continue.

This seems to make it boot reliably.

This needs to be looked at more closely, but I need to get
some sleep.
This has made my brain hurt.

----------------------------------------

--- ../../../xen/i386/xen_machdep.c.old  2006-04-07
08:51:25.000000000 -0400
+++ ../../../xen/i386/xen_machdep.c     2007-05-05
00:32:49.000000000 -0400
 -307,8
+313,16 
 static pt_entry_t
 xpmap_get_bootpte(paddr_t va)
 {
+#ifdef PANIX4G
+  pt_entry_t *x;

+  x=xpmap_get_bootptep(va);
+  if (x==(void *)-1)
+    return 0;
+  return x[0];
+#else
        return xpmap_get_bootptep(va)[0];
+#endif
 }

 #if defined(XENDEBUG)
 -418,6
+434,12 
                                continue;
                        if (ptp[j] >= KERNTEXTOFF) {
                                pte = ptp[j];
+#ifdef PANIX4G
+                               if (xpmap_get_bootpte(pte
& PG_FRAME)==0) {
+                                 XENPRINTK(("PANIX 4,
XXXn"));
+                                 continue;
+                               }
+#endif
                                ptp[j] = (pte &
~PG_FRAME) |
                                       
(xpmap_get_bootpte(pte & PG_FRAME) &
                                            PG_FRAME);


[1]

about | contact  Other archives ( Real Estate discussion Medical topics )