M ip/ipifc.c => ip/ipifc.c +1 -0
@@ 318,6 318,7 @@ ipifckick(void *x)
else
(*ifc->m->pktin)(c->p->f, ifc, bp);
runlock(ifc);
+ poperror();
}
/*
M pc/screen.h => pc/screen.h +1 -0
@@ 116,6 116,7 @@ struct VGAscr {
void (*blank)(VGAscr*, int);
ulong id; /* internal identifier for driver use */
int isblank;
+ int overlayinit;
};
extern VGAscr vgascreen[];
M pc/vgamach64xx.c => pc/vgamach64xx.c +5 -2
@@ 831,7 831,6 @@ initengine(VGAscr *scr)
break;
}
- init_overlayclock(scr);
waitforidle(scr);
}
@@ 1175,9 1174,13 @@ mach64xxovlctl(VGAscr *scr, Chan *c, void *a, int n)
Cmdbuf *cb;
Cmdtab *ct;
- if (!mach64type->m64_vtgt)
+ if(!mach64type->m64_vtgt)
error(Enodev);
+ if(!scr->overlayinit){
+ scr->overlayinit = 1;
+ init_overlayclock(scr);
+ }
cb = parsecmd(a, n);
if(waserror()){
free(cb);