armv8 linux4.9
查看dma map前后mmu page table的变化的时候,有看到有的page table entry映射了2M的size,这个2M的entry是何时建立的,目的是什么是这边博客要弄清楚的问题。
arm64 定义页框大小的define位置如下,每一个页表项映射一个页框大小的范围,当前系统定义为4K
linux 内核空间的页表是在kernel 初始化时做的一一映射,swapper_pg_dir是一级页表的在内存中的位置,所有kernel space线程共享的,userspace 线程的pagetable是fork时从父进程继承过来的,不同进程区分的页表。
除此之外还有一个idmap_pg_dir (identical)为了打开mmu准备的va与pa相同的页表,当然这是来自之前对32bit的理解,64bit va不是32bit
lds 对两者的定义看,都是存放在bss 段,位置相临,二者的页表项的个数一样,PTRS_PER_PGD代表描述内核memeory空间需要的页表项个数,