clean up a few nits - 82563, need sfence to eliminate the race between pci mmio and memory (this was never seen to be a problem, but it was not correct). also, bme needs to be set earlier. - portfns.h: mfence is gone; remove definition. - devpci.c: fix debug print type mismatch. Reference: /n/atom/patch/applied2013/nixnits20130921 Date: Sat Sep 21 16:50:02 CES 2013 Signed-off-by: quasntro@quanstro.net --- /sys/src/nix/port/devpci.c Sat Sep 21 16:48:00 2013 +++ /sys/src/nix/port/devpci.c Sat Sep 21 16:48:00 2013 @@ -196,7 +196,7 @@ for(i=0; imem); i++){ if(p->mem[i].size == 0) continue; - w = seprint(w, ebuf, " %d:%.8ux %d", i, p->mem[i].bar, p->mem[i].size); + w = seprint(w, ebuf, " %d:%#P %d", i, p->mem[i].bar, p->mem[i].size); } *w++ = '\n'; *w = '\0'; --- /sys/src/nix/port/portfns.h Sat Sep 21 16:48:00 2013 +++ /sys/src/nix/port/portfns.h Sat Sep 21 16:48:00 2013 @@ -190,6 +190,7 @@ ulong ms2tk(ulong); void mul64fract(uvlong*, uvlong, uvlong); void muxclose(Mnt*); +void (*mwait)(void *); Chan* namec(char*, int, int, int); void nameerror(char*, char*); Chan* newchan(void); --- /sys/src/nix/k10/ether82563.c Sat Sep 21 16:48:00 2013 +++ /sys/src/nix/k10/ether82563.c Sat Sep 21 16:48:01 2013 @@ -1089,6 +1089,7 @@ ctlr->rdfree++; } if(i != 0){ + sfence(); ctlr->rdt = rdt; csr32w(ctlr, Rdt, rdt); } @@ -2032,6 +2033,7 @@ return -1; } p = ctlr->pcidev; + pcisetbme(ctlr->pcidev); ctlr->nic = vmap(ctlr->port, p->mem[0].size); if(ctlr->nic == nil){ print("%s: can't map %#P\n", cname(ctlr), ctlr->port); @@ -2041,7 +2043,6 @@ vunmap(ctlr->nic, p->mem[0].size); return -1; } - pcisetbme(ctlr->pcidev); return 0; }