Port-xen archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: NetBSD crashes on 4 GB Supermicro
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, XXX\n"));
+ continue;
+ }
+#endif
ptp[j] = (pte & ~PG_FRAME) |
(xpmap_get_bootpte(pte & PG_FRAME) &
PG_FRAME);
Home |
Main Index |
Thread Index |
Old Index