Date: Fri, 3 Jan 2003 15:03:14 -0800 From: Arun Sharma <arun.sharma@intel.com> To: freebsd-ia64@freebsd.org Subject: unaligned fault in pmap_find_vhpt Message-ID: <200301032303.gBQJBOs00863@unix-os.sc.intel.com>
next in thread | raw e-mail | index | archive | help
I saw a kernel mode unaligned fault during a compilation workload yesterday on an SMP 5.0-RC1 kernel. The fault happened here: 0xe000000000aad660 <pmap_find_vhpt+80>: More info below. It looks like the pte_chain is getting corrupted somehow. What is the locking scheme being used to protect pte collision chains on an SMP kernel ? -Arun pmap.c: static struct ia64_lpte * pmap_find_vhpt(vm_offset_t va) { struct ia64_lpte *pte; u_int64_t tag; pte = (struct ia64_lpte *) ia64_thash(va); if (!pte->pte_chain) { pte = 0; goto done; } tag = ia64_ttag(va); pte = (struct ia64_lpte *) IA64_PHYS_TO_RR7(pte->pte_chain); while (pte->pte_tag != tag) { <--- unaligned fault if (pte->pte_chain) { pte = (struct ia64_lpte *) IA64_PHYS_TO_RR7(pte->pte_chain); } else { pte = 0; break; } } done: return pte; } Dump of assembler code for function pmap_find_vhpt: 0xe000000000aad610 <pmap_find_vhpt>: [MMI] thash r14=r32;; 0xe000000000aad611 <pmap_find_vhpt+1>: mov r8=r14 0xe000000000aad612 <pmap_find_vhpt+2>: adds r14=24,r14;; 0xe000000000aad620 <pmap_find_vhpt+16>: [MMI] ld8 r14=[r14];; 0xe000000000aad621 <pmap_find_vhpt+17>: cmp.eq p7,p6=0,r14 0xe000000000aad622 <pmap_find_vhpt+18>: nop.i 0x0 0xe000000000aad630 <pmap_find_vhpt+32>: [MFB] nop.m 0x0 0xe000000000aad631 <pmap_find_vhpt+33>: nop.f 0x0 0xe000000000aad632 <pmap_find_vhpt+34>: (p06) br.cond.dptk.few 0xe000000000aad650 <pmap_find_vhpt+64> 0xe000000000aad640 <pmap_find_vhpt+48>: [MFB] mov r8=r0 0xe000000000aad641 <pmap_find_vhpt+49>: nop.f 0x0 0xe000000000aad642 <pmap_find_vhpt+50>: br.ret.sptk.many b0;; 0xe000000000aad650 <pmap_find_vhpt+64>: [MMI] ttag r14=r32;; 0xe000000000aad651 <pmap_find_vhpt+65>: mov r32=r14 0xe000000000aad652 <pmap_find_vhpt+66>: adds r14=24,r8;; 0xe000000000aad660 <pmap_find_vhpt+80>: [MLX] ld8 r15=[r14] 0xe000000000aad661 <pmap_find_vhpt+81>: movl r14=0xe000000000000000;; To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ia64" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200301032303.gBQJBOs00863>