pte_unmap_unlock(pte, ptl); return 0; } 回过头看下那四个异常的情况,上面的内容会比较好理解些,首先获取到二级页表条目值entry,对于写时复制的情况,它的异常addr的二级页表条目还是存在的(就是说起码存在标志L_PTE_PRESENT),只是说映射的物理页不可写,所以由(!pte_present(entry))可界定这是请求调页的情...
mem_abort_decode(esr); show_pte(addr); die("Oops", regs, esr); bust_spinlocks(0); do_exit(SIGKILL); } 通过die() 会进行oops 异常处理,详细的 die() 函数流程看第 3 节。当出现 oops,并且如果有源码,可以通过 arm 的 arch64-linux-gnu-objdump 工具看到出错的函数的汇编情况,也可以通过 GDB ...
__do_kernel_fault的主要工作是打印pte、pt_regs、栈等信息,帮助发现问题根源,核心函数是__die。 __do_kernel_fault ->show_pte---1->die->__die->print_modules---2 ->__show_regs---3 ->dump_mem---
(2) 对于下面的两个信息,在函数show_pte中进行了打印,下面的打印涉及到了页全局目录,页表的知识,暂时先不分析,后续补上。 代码语言:javascript 复制 pgd=c65a4000[45685516]*pgd=00000000voidshow_pte(struct mm_struct*mm,unsigned long addr){pgd_t*pgd;if(!mm)mm=&init_mm;printk(KERN_ALERT"pgd = %p\...
show_pte(current->mm, addr); info.si_signo = inf->sig; info.si_errno = 0; info.si_code = inf->code; info.si_addr = (void __user *)addr; arm_notify_die("", regs, &info, fsr, 0); } 1. 2. 3. 4. 5. 6. 7. ...
内核提供了show_pte这个函数:arch/arm64/mm/fault.c voidshow_pte(unsignedlongaddr) { structmm_struct*mm; pgd_t*pgdp; pgd_tpgd; if(is_ttbr0_addr(addr)) { /* TTBR0 */ mm = current->active_mm; if(mm == &init_mm) { pr_alert("[%016lx] user address but active_mm is swapper...
show_pte(addr); die("Oops", regs, esr); bust_spinlocks(0); do_exit(SIGKILL); } 通过die() 会进行oops 异常处理,详细的 die() 函数流程看第 3 节。当出现 oops,并且如果有源码,可以通过 arm 的 arch64-linux-gnu-objdump 工具看到出错的函数的汇编情况,也可以通过 GDB 工具分析。如果出错的地方...
* 私有数据指针,由应用场景确定其具体的含义 */ #if USE_SPLIT_PTE_PTLOCKS #if ALLOC_SPLIT_PTLOCKS spinlock_t *ptl; #else spinlock_t ptl; #endif #endif struct kmem_cache *slab_cache; /* SL[AU]B: Pointer to slab */ }; #ifdef CONFIG_MEMCG struct mem_cgroup *mem_cgroup; #endif /*...
both pty01 and ptem01 test were cleaned up and split into several tests vma05.sh is a first test rewritten to the new shell test library process_madvise01 now runs in memory cgroup, where we can properly control memory pressure.
Xiaochen Shen (1):x86/resctrl:修复启用mba_sc时不正确的本地带宽。Xin Long (1):udp:修正传递给ip_protocol_deliver_rcu片段的原始值。Xuan Zhuo (2):xsk:用sock_poll_wait替换datagram_poll。xsk:更改TX可写条件。Yanan Wang (3):KVM:arm64:修复有效PTE的stage2更新上的内存泄漏。KVM...