diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-05-22 23:58:24 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-05-22 23:58:24 +0200 |
commit | b86bb35c7d82f097e6572d400527046245b877fd (patch) | |
tree | 81d8366c8eaf5cfb7df253d3506ffc88c456bb7f /sys/src/9/pc64 | |
parent | 0002fd0cf786d16c9b3e1ab62f0cb92b2461f185 (diff) |
pc, pc64: do page attribute table (PAT) init early in cpuidentify()
the page attribute table was initialized in mmuinit(), which is
too late for bootscreen(). So now we check for PAT support and
insert the write-combine entry early in cpuidentify().
this might have been the cause of some slow EFI framebuffers on
machines with overlapping or insufficient MTRR entries.
Diffstat (limited to 'sys/src/9/pc64')
-rw-r--r-- | sys/src/9/pc64/mem.h | 3 | ||||
-rw-r--r-- | sys/src/9/pc64/mmu.c | 11 |
2 files changed, 3 insertions, 11 deletions
diff --git a/sys/src/9/pc64/mem.h b/sys/src/9/pc64/mem.h index 3a9bf9a1a..c6f9bba70 100644 --- a/sys/src/9/pc64/mem.h +++ b/sys/src/9/pc64/mem.h @@ -176,5 +176,8 @@ #define getpgcolor(a) 0 +/* PAT entry used for write combining */ +#define PATWC 7 + #define RMACH R15 /* m-> */ #define RUSER R14 /* up-> */ diff --git a/sys/src/9/pc64/mmu.c b/sys/src/9/pc64/mmu.c index f7c8bb7e5..970d0f262 100644 --- a/sys/src/9/pc64/mmu.c +++ b/sys/src/9/pc64/mmu.c @@ -38,9 +38,6 @@ enum { PDE = 0, MAPBITS = 8*sizeof(m->mmumap[0]), - - /* PAT entry used for write combining */ - PATWC = 7, }; static void @@ -133,14 +130,6 @@ mmuinit(void) wrmsr(Star, ((uvlong)UE32SEL << 48) | ((uvlong)KESEL << 32)); wrmsr(Lstar, (uvlong)syscallentry); wrmsr(Sfmask, 0x200); - - /* IA32_PAT write combining */ - if((MACHP(0)->cpuiddx & Pat) != 0 - && rdmsr(0x277, &v) != -1){ - v &= ~(255LL<<(PATWC*8)); - v |= 1LL<<(PATWC*8); /* WC */ - wrmsr(0x277, v); - } } /* |