On Wed, Jan 27, 2016 at 2:18 AM, Julian Margetson runaway@candw.ms wrote:
On 1/26/2016 9:43 PM, Dan Williams wrote:
diff --git a/mm/memory.c b/mm/memory.c index 30991f83d0bf..c44e387130b2 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -1521,6 +1521,8 @@ static int insert_pfn(struct vm_area_struct *vma, unsigned long addr, entry = pte_mkdevmap(pfn_t_pte(pfn, prot)); else entry = pte_mkspecial(pfn_t_pte(pfn, prot));
pr_info("%s: entry: %#llx pfn: %#lx\n", __func__,
(unsigned long long) entry, pfn_t_to_pfn(pfn)); set_pte_at(mm, addr, pte, entry); update_mmu_cache(vma, addr, pte); /* XXX: why not for insert_page? */
...of course for the passing case you'll need to drop the call to pfn_t_to_pfn() and just print the pfn directly.
Thank you for the help tracking this down, it's much appreciated.
Happy to help out. Just need some guidance sometimes as I am relatively new at this.
No worries.
So, below is the failing case, what does insert_pfn print in the passing case? No need for the full log just the first few lines after starting X when running the commit before this failing one... (commit 69660fd797c3 "x86, mm: introduce _PAGE_DEVMAP").
I'm still stumped given that PTE_RPN_SHIFT==PAGE_SHIFT in this configuration, so there's no 64-bit to 32-bit truncation to worry about...
15.802615] systemd[1]: Started Journal Service. [ 44.263074] Oops: Machine check, sig: 7 [#1] [ 44.267603] PREEMPT Canyonlands [ 44.270938] Modules linked in: [ 44.274182] CPU: 0 PID: 586 Comm: Xorg Tainted: G W 4.5.0-rc1-Sam460ex #2 [ 44.282538] task: ecd505c0 ti: efff2000 task.ti: ecd76000 [ 44.288239] NIP: c0000cec LR: 1fb81404 CTR: 1fb814d0 [ 44.293483] REGS: efff3f10 TRAP: 0214 Tainted: G W (4.5.0-rc1-Sam460ex) [ 44.301926] MSR: 00021000 <CE,ME> CR: 84004242 XER: 00000000 [ 44.308185] GPR00: 1f045134 bfd0ce80 b7e7b6f0 b763dffc b6e54008 00000780 00000004 00000000 GPR08: 00000000 b763dffc b6e54010 ecf50000 ecf50000 00000009 00000000 00000780 GPR16: 00000000 00000020 00000000 00000000 00001e00 2079b638 00000438 b6e54008 GPR24: 00000780 bfd0ced8 20785770 b763e000 b763e000 b6e54008 1fc89ff4 00001e00 [ 44.340039] NIP [c0000cec] DataTLBError44x+0x6c/0x90 [ 44.345279] LR [1fb81404] 0x1fb81404 [ 44.349053] Call Trace: [ 44.351631] Instruction dump: [ 44.354776] 7d7342a6 816b0040 7d92eaa6 7db00aa6 51ac063e 7d92eba6 7d9e0aa6 39a00009 [ 44.363081] 518d57bc 554c6cfa 7d6c582e 556c0029 <4182003c> 514cbd38 816c0000 818c0004 [ 44.524699] ---[ end trace 439fa29153308785 ]--- [ 44.529322] [ 47.216536] insert_pfn: entry: 0x80ed246b pfn: 0x80ed2 [ 47.221777] insert_pfn: entry: 0x80ed346b pfn: 0x80ed3 [ 47.228485] insert_pfn: entry: 0x80ed446b pfn: 0x80ed4 [ 47.237798] insert_pfn: entry: 0x80ed546b pfn: 0x80ed5 [ 47.249809] insert_pfn: entry: 0x80ed646b pfn: 0x80ed6 [ 47.257588] insert_pfn: entry: 0x80ed746b pfn: 0x80ed7 [ 47.265879] insert_pfn: entry: 0x80ed846b pfn: 0x80ed8 [ 47.275825] insert_pfn: entry: 0x80ed946b pfn: 0x80ed9 [ 47.281437] insert_pfn: entry: 0x80eda46b pfn: 0x80eda [ 47.288113] insert_pfn: entry: 0x80edb46b pfn: 0x80edb [ 47.293660] insert_pfn: entry: 0x80edc46b pfn: 0x80edc [ 47.299834] insert_pfn: entry: 0x80edd46b pfn: 0x80edd [ 47.305223] insert_pfn: entry: 0x80ede46b pfn: 0x80ede [ 47.314891] insert_pfn: entry: 0x80edf46b pfn: 0x80edf [ 47.329777] insert_pfn: entry: 0x80ee046b pfn: 0x80ee0 [ 47.339769] insert_pfn: entry: 0x80ee146b pfn: 0x80ee1 [ 47.349777] Machine check in kernel mode. [ 47.353814] Data Write PLB Error