M boot/bootip.c => boot/bootip.c +0 -1
@@ 61,7 61,6 @@ configip(void)
case -1:
fatal("configuring ip: %r");
case 0:
- print("exec-ing ipconfig\n");
exec("/boot/ipconfig", arg);
fatal("execing /ipconfig");
default:
M pc/mmu.c => pc/mmu.c +6 -6
@@ 327,14 327,14 @@ mmukmapsync(ulong va)
mach0 = MACHP(0);
- lock(&mmukmaplock);
+ ilock(&mmukmaplock);
if((pte = mmuwalk(mach0->pdb, va, 1, 0)) == nil){
- unlock(&mmukmaplock);
+ iunlock(&mmukmaplock);
return 0;
}
if(!(*pte & PTESIZE) && mmuwalk(mach0->pdb, va, 2, 0) == nil){
- unlock(&mmukmaplock);
+ iunlock(&mmukmaplock);
return 0;
}
entry = *pte;
@@ 349,7 349,7 @@ mmukmapsync(ulong va)
else
mmuflushtlb(PADDR(m->pdb));
- unlock(&mmukmaplock);
+ iunlock(&mmukmaplock);
return 1;
}
@@ 376,7 376,7 @@ mmukmap(ulong pa, ulong va, int size)
ova = va;
pae = pa + size;
- lock(&mmukmaplock);
+ ilock(&mmukmaplock);
while(pa < pae){
table = &mach0->pdb[PDX(va)];
/*
@@ 457,7 457,7 @@ mmukmap(ulong pa, ulong va, int size)
va += pgsz;
sync++;
}
- unlock(&mmukmaplock);
+ iunlock(&mmukmaplock);
/*
* If something was added
M port/devroot.c => port/devroot.c +7 -0
@@ 221,6 221,13 @@ rootread(Chan *c, void *buf, long n, vlong off)
return 0;
if(offset+n > d->length)
n = d->length - offset;
+#ifdef asdf
+print("[%d] kaddr %.8ulx base %.8ulx offset %ld (%.8ulx), n %d %.8ulx %.8ulx %.8ulx\n",
+ t, buf, data, offset, offset, n,
+ ((ulong*)(data+offset))[0],
+ ((ulong*)(data+offset))[1],
+ ((ulong*)(data+offset))[2]);
+#endif asdf
memmove(buf, data+offset, n);
return n;
}
M port/page.c => port/page.c +1 -1
@@ 66,7 66,7 @@ static void
pageunchain(Page *p)
{
if(canlock(&palloc))
- panic("pageunchain");
+ panic("pageunchain (palloc %p)", &palloc);
if(p->prev)
p->prev->next = p->next;
else
M port/qlock.c => port/qlock.c +2 -0
@@ 23,6 23,8 @@ qlock(QLock *q)
if(up != nil && up->nlocks)
print("qlock: %lux: nlocks %lud", getcallerpc(&q), up->nlocks);
+ if(q->use.key == 0x55555555)
+ panic("qlock: q %p, key 5*\n", q);
lock(&q->use);
rwstats.qlock++;
if(!q->locked) {
M port/taslock.c => port/taslock.c +17 -0
@@ 43,12 43,15 @@ lock(Lock *l)
{
int i;
ulong pc;
+Lock *_l = l;
pc = getcallerpc(&l);
lockstats.locks++;
if(up)
up->nlocks++; /* prevent being scheded */
+ if(l->key == 0x55555555)
+ panic("lock(1): l %p, key 5*, pc %.lux, %p\n", l, pc, _l);
if(tas(&l->key) == 0){
if(up)
up->lastlock = l;
@@ 57,6 60,8 @@ lock(Lock *l)
l->isilock = 0;
return 0;
}
+ if(l->key == 0x55555555)
+ panic("lock(1a): l %p, key 5*, pc %.lux, %p\n", l, pc, _l);
if(up)
up->nlocks--; /* didn't get the lock, allow scheding */
@@ 64,14 69,24 @@ lock(Lock *l)
for(;;){
lockstats.inglare++;
i = 0;
+ if(l->key == 0x55555555)
+ panic("lock(2): l %p, key 5*, pc %.lux, %p\n", l, pc, _l);
while(l->key){
if(i++ > 100000000){
i = 0;
+ if(l->key == 0x55555555)
+ panic("lock(3): l %p, key 5*, pc %.lux, %p\n", l, pc, _l);
lockloop(l, pc);
+ if(l->key == 0x55555555)
+ panic("lock(4): l %p, key 5*, pc %.lux, %p\n", l, pc, _l);
}
}
+ if(l->key == 0x55555555)
+ panic("lock(5): l %p, key 5*, pc %.lux, %p\n", l, pc, _l);
if(up)
up->nlocks++;
+ if(l->key == 0x55555555)
+ panic("lock(6): l %p, key 5*, pc %.lux, %p\n", l, pc, _l);
if(tas(&l->key) == 0){
if(up)
up->lastlock = l;
@@ 80,6 95,8 @@ lock(Lock *l)
l->isilock = 0;
return 1;
}
+ if(l->key == 0x55555555)
+ panic("lock(7): l %p, key 5*, pc %.lux, %p\n", l, pc, _l);
if(up)
up->nlocks--;
}