After vga framebuffer is set to write combining mode, set mmio control register page (which is inside framebuffer space) back to uncached. Reference: /n/sources/patch/applied/vgamach64xx-mtrr-fix Date: Tue Jun 14 12:06:34 CES 2011 Signed-off-by: miller@hamnavoe.com --- /sys/src/9/pc/vgamach64xx.c Tue Jun 14 12:01:10 2011 +++ /sys/src/9/pc/vgamach64xx.c Tue Jun 14 12:01:07 2011 @@ -193,6 +193,15 @@ vgalinearpci(scr); if(scr->paddr == 0) return; + /* + * vgalinearpci sets framebuffer into write combining mode. + * Because mmio register page is inside framebuffer space, + * set it back to uncached. + */ + if(!waserror()){ + mtrr(scr->paddr+size-BY2PG, BY2PG, "uc"); + poperror(); + } scr->mmio = (ulong*)((uchar*)scr->vaddr+size-1024); addvgaseg("mach64mmio", scr->paddr+size-BY2PG, BY2PG); addvgaseg("mach64screen", scr->paddr, scr->apsize);