summaryrefslogtreecommitdiff
path: root/sys/src/9/pc/mmu.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2021-11-26 20:51:45 +0000
committercinap_lenrek <cinap_lenrek@felloff.net>2021-11-26 20:51:45 +0000
commit20ea113790c22e5fc8dd0051baa359e4fa083425 (patch)
treea64dbfef9f4e41db253a1d8f240bf6b060639b27 /sys/src/9/pc/mmu.c
parentadd3a0a4da2f46f69a87782699e77c794a8b2cb9 (diff)
kernel: support large 64-bit pci membars, increase pc64 VMAPSIZE to 1TB
This makes vmap()/vunmap() take a vlong size argument, and change the type of Pci.mem[].size to vlong as well. Even if vmap() wont support large mappings, it is nice to get the original unruncated value for error checking. pc64 needs a bigger VMAP window, as system76 pangolin puts the framebuffer at a physical address > 512GB.
Diffstat (limited to 'sys/src/9/pc/mmu.c')
-rw-r--r--sys/src/9/pc/mmu.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/src/9/pc/mmu.c b/sys/src/9/pc/mmu.c
index a21c94197..be5b9fd25 100644
--- a/sys/src/9/pc/mmu.c
+++ b/sys/src/9/pc/mmu.c
@@ -530,13 +530,13 @@ static void pdbunmap(ulong*, ulong, int);
* Add a device mapping to the vmap range.
*/
void*
-vmap(uvlong pa, int size)
+vmap(uvlong pa, vlong size)
{
- int osize;
+ vlong osize;
ulong o, va;
if(pa < BY2PG || size <= 0 || ((pa+size) >> 32) != 0 || size > VMAPSIZE){
- print("vmap pa=%llux size=%d pc=%#p\n", pa, size, getcallerpc(&pa));
+ print("vmap pa=%llux size=%lld pc=%#p\n", pa, size, getcallerpc(&pa));
return nil;
}
@@ -560,7 +560,7 @@ vmap(uvlong pa, int size)
vmapsync(va+i);
*/
USED(osize);
-// print(" vmap %#.8lux %d => %#.8lux\n", pa+o, osize, va+o);
+// print(" vmap %#.8lux %lld => %#.8lux\n", pa+o, osize, va+o);
return (void*)(va + o);
}
@@ -621,7 +621,7 @@ vmapalloc(ulong size)
* the call need not be interlocked with vmap.
*/
void
-vunmap(void *v, int size)
+vunmap(void *v, vlong size)
{
ulong va, o;
@@ -635,7 +635,7 @@ vunmap(void *v, int size)
size = ROUND(size, BY2PG);
if(size < 0 || va < VMAP || va+size > VMAP+VMAPSIZE)
- panic("vunmap va=%#.8lux size=%#x pc=%#.8lux",
+ panic("vunmap va=%#.8lux size=%lld pc=%#.8lux",
va, size, getcallerpc(&v));
pdbunmap(MACHP(0)->pdb, va, size);