From: Sean Christopherson <sean.j.christopherson@intel.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: dave.hansen@linux.intel.com, Andrew Lutomirski <luto@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>,
bp@alien8.de, the arch/x86 maintainers <x86@kernel.org>,
Peter Anvin <hpa@zytor.com>,
Linux List Kernel Mailing <linux-kernel@vger.kernel.org>,
Rik van Riel <riel@surriel.com>,
yu-cheng.yu@intel.com, Ingo Molnar <mingo@kernel.org>
Subject: Re: [PATCH v2] x86/fault: Decode and print #PF oops in human readable form
Date: Fri, 7 Dec 2018 14:06:47 -0800 [thread overview]
Message-ID: <20181207220646.GH10404@linux.intel.com> (raw)
In-Reply-To: <CAHk-=wgtN9nQBimLuOmBxY8eYqDRhNeBOW_uvnhqtZSFycyHuA@mail.gmail.com>
On Fri, Dec 07, 2018 at 12:46:30PM -0800, Linus Torvalds wrote:
> On Fri, Dec 7, 2018 at 11:52 AM Sean Christopherson
> <sean.j.christopherson@intel.com> wrote:
> >
> > Remove the per-bit decoding of the error code and instead print:
>
> The patch looks fine to me, so feel free to add an acked-by, but:
>
> (a) I'm not the one who wanted the human-legible version in the first
> place, since I'm also perfectly ok with just the error code, so my
> judgement is obviously garbage wrt this whole thing
>
> (b) it would be good to have a couple of actual examples of the
> printout to judge.
>
> I can certainly imagine how it looks just from the patch, but maybe if
> I actually see reality I'd go "eww". Or somebody else goes "eww".
Here's what it looks like in the full oops context:
[ 14.109977] BUG: unable to handle kernel paging request at ffffbeef00000000
[ 14.110604] #PF: error_code(0x0000) - not-present page
[ 14.111048] #PF: supervisor-privileged read access from kernel code
[ 14.111594] PGD 0 P4D 0
[ 14.111820] Oops: 0000 [#1] SMP
[ 14.112098] CPU: 4 PID: 1007 Comm: modprobe Not tainted 4.20.0-rc2+ #91
[ 14.112668] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
[ 14.113344] RIP: 0010:hardware_setup+0xab/0x6f1 [kvm_intel]
[ 14.113825] Code: 05 30 8c ff ff 0f 84 56 05 00 00 0f 31 83 e0 03 75 13 48 b8 00 00 00 00 ef be ff ff 48 c7 00 00 00 00 00 eb 2b 48 ff c8 75 0c <48> a1 00 00 00 00 ef be ff ff eb 1a 48 8b 15 50 ff f6 ff 48 b8 00
[ 14.115421] RSP: 0018:ffffc9000058bbb8 EFLAGS: 00010246
[ 14.115878] RAX: 0000000000000000 RBX: 0000000000000006 RCX: ffffea0009d42148
[ 14.116497] RDX: 000000000000000a RSI: dead000000000200 RDI: 00000000006000c0
[ 14.117115] RBP: ffffc9000058bc50 R08: 0000000000000006 R09: 000000000016a6d0
[ 14.117731] R10: ffffc9000058bc68 R11: ffff8882750ef5e8 R12: 0000000000005e40
[ 14.118346] R13: ffffffffa014dd00 R14: ffff888270273480 R15: ffffc9000058be98
[ 14.118961] FS: 00007ffac1c70700(0000) GS:ffff888277800000(0000) knlGS:0000000000000000
[ 14.119661] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 14.120160] CR2: ffffbeef00000000 CR3: 0000000270352004 CR4: 0000000000360ee0
[ 14.120778] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 14.121393] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 14.122006] Call Trace:
[ 14.122235] kvm_arch_hardware_setup+0x42/0x200 [kvm]
[ 14.122685] ? vmx_check_processor_compat+0x8d/0x8d [kvm_intel]
[ 14.123201] ? kvm_init+0x79/0x280 [kvm]
[ 14.123552] kvm_init+0x79/0x280 [kvm]
[ 14.123883] ? vmx_check_processor_compat+0x8d/0x8d [kvm_intel]
[ 14.124394] vmx_init+0x9d/0x400 [kvm_intel]
[ 14.124766] ? vmx_check_processor_compat+0x8d/0x8d [kvm_intel]
[ 14.125277] do_one_initcall+0x4d/0x1c4
[ 14.125613] ? kmem_cache_alloc_trace+0x30/0x1a0
[ 14.126014] do_init_module+0x5b/0x20d
[ 14.126342] load_module+0x2389/0x2980
[ 14.126670] ? vfs_read+0x117/0x130
[ 14.126976] ? __do_sys_finit_module+0xd2/0x100
[ 14.127369] __do_sys_finit_module+0xd2/0x100
[ 14.127751] do_syscall_64+0x4f/0x100
[ 14.128078] entry_SYSCALL_64_after_hwframe+0x44/0xa9
[ 14.128504] RIP: 0033:0x7ffac178e4d9
[ 14.128810] Code: 00 f3 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 8f 29 2c 00 f7 d8 64 89 01 48
[ 14.130358] RSP: 002b:00007ffc5b68d0c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
[ 14.131023] RAX: ffffffffffffffda RBX: 00005581920445c0 RCX: 00007ffac178e4d9
[ 14.131658] RDX: 0000000000000000 RSI: 0000558192048850 RDI: 0000000000000005
[ 14.132256] RBP: 0000558192048850 R08: 0000000000000000 R09: 0000000000000008
[ 14.132856] R10: 0000000000000005 R11: 0000000000000246 R12: 0000000000000000
[ 14.133454] R13: 0000558192044640 R14: 0000000000040000 R15: 0000000000000008
[ 14.134055] Modules linked in: kvm_intel(+) kvm irqbypass bridge stp llc
[ 14.134649] CR2: ffffbeef00000000
[ 14.134933] ---[ end trace 8dce06ca17fa1e39 ]---
Looking at it again, my own personal preference would be to swap the order
of the #PF lines. For most cases the three main lines show up in reverse
fir-tree ordering and the cause of the fault is easy to pick out since it's
the last thing highlighted by pr_alert (excepting when we dump the IDT,
GDT, etc...).
[ 160.246820] BUG: unable to handle kernel paging request at ffffbeef00000000
[ 160.247517] #PF: supervisor-privileged instruction fetch from kernel code
[ 160.248085] #PF: error_code(0x0010) - not-present page
[ 160.248517] PGD 0 P4D 0
[ 160.248738] Oops: 0010 [#1] SMP
[ 160.249012] CPU: 4 PID: 1003 Comm: modprobe Not tainted 4.20.0-rc2+ #93
[ 160.249566] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
[ 160.250221] RIP: 0010:0xffffbeef00000000
[ 160.250556] Code: Bad RIP value.
[ 160.250833] RSP: 0018:ffffc90000447bf8 EFLAGS: 00010246
[ 160.251274] RAX: ffffbeef00000000 RBX: 00000000ffffffff RCX: 0000000000000000
[ 160.251871] RDX: ffff8882733dd7c0 RSI: 000000000000000c RDI: ffffffff820379c0
[ 160.252469] RBP: ffffc90000447c50 R08: 0000000000000006 R09: 0000000000000000
[ 160.253120] R10: ffffc90000447c68 R11: ffff88827518cfe8 R12: 0000000000005e40
[ 160.253717] R13: ffffffffa014dd00 R14: ffff888274431900 R15: ffffc90000447e98
[ 160.254322] FS: 00007f54cc42b700(0000) GS:ffff888277800000(0000) knlGS:0000000000000000
[ 160.254982] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 160.255487] CR2: ffffbeeeffffffd6 CR3: 0000000271020006 CR4: 0000000000360ee0
[ 160.256074] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 160.256660] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 160.257297] Call Trace:
[ 160.257521] ? kvm_arch_hardware_setup+0x42/0x200 [kvm]
[ 160.257964] ? vmx_check_processor_compat+0x41d/0x41d [kvm_intel]
[ 160.258481] ? kvm_init+0x79/0x280 [kvm]
[ 160.258820] ? kvm_init+0x79/0x280 [kvm]
[ 160.259156] ? vmx_check_processor_compat+0x41d/0x41d [kvm_intel]
[ 160.259669] ? vmx_init+0x9d/0xaee [kvm_intel]
[ 160.260047] ? vmx_check_processor_compat+0x41d/0x41d [kvm_intel]
[ 160.260560] ? do_one_initcall+0x4d/0x1c4
[ 160.260911] ? kmem_cache_alloc_trace+0x30/0x1a0
[ 160.261307] ? do_init_module+0x5b/0x20d
[ 160.261641] ? load_module+0x2389/0x2980
[ 160.261974] ? vfs_read+0x117/0x130
[ 160.262272] ? __do_sys_finit_module+0xd2/0x100
[ 160.262655] ? __do_sys_finit_module+0xd2/0x100
[ 160.263038] ? do_syscall_64+0x4f/0x100
[ 160.263364] ? entry_SYSCALL_64_after_hwframe+0x44/0xa9
[ 160.263804] Modules linked in: kvm_intel(+) kvm irqbypass bridge stp llc
[ 160.264367] CR2: ffffbeef00000000
[ 160.264651] ---[ end trace 2b9acada0f38bc58 ]---
Other combinations with the current order:
[ 0.143436] BUG: unable to handle kernel paging request at ffffc90000230000
[ 0.143985] #PF: error_code(0x000b) - reserved bit violation
[ 0.144505] #PF: supervisor-privileged write access from kernel code
[ 0.145090] BUG: unable to handle kernel paging request at ffffc90000230000
[ 0.145755] #PF: error_code(0x0019) - reserved bit violation
[ 0.146244] #PF: supervisor-privileged instruction fetch from kernel code
[ 0.146847] BUG: unable to handle kernel paging request at ffffc90000230000
[ 0.147040] #PF: error_code(0x0009) - reserved bit violation
[ 0.147040] #PF: supervisor-privileged read access from kernel code
[ 0.147040] BUG: unable to handle kernel paging request at ffffc90000230000
[ 0.147040] #PF: error_code(0x0023) - protection keys violation
[ 0.147040] #PF: supervisor-privileged write access from kernel code
[ 0.147040] BUG: unable to handle kernel paging request at ffffc90000230000
[ 0.147040] #PF: error_code(0x0031) - protection keys violation
[ 0.147040] #PF: supervisor-privileged instruction fetch from kernel code
[ 0.147040] BUG: unable to handle kernel paging request at ffffc90000230000
[ 0.147040] #PF: error_code(0x0021) - protection keys violation
[ 0.147040] #PF: supervisor-privileged read access from kernel code
[ 0.147040] BUG: unable to handle kernel paging request at ffffc90000230000
[ 0.147040] #PF: error_code(0x0025) - protection keys violation
[ 0.147040] #PF: user-privileged read access from kernel code
[ 0.147040] BUG: unable to handle kernel paging request at ffffc90000230000
[ 0.147040] #PF: error_code(0x0007) - permissions violation
[ 0.147040] #PF: user-privileged write access from kernel code
[ 0.147040] BUG: unable to handle kernel paging request at ffffc90000230000
[ 0.147040] #PF: error_code(0x0015) - permissions violation
[ 0.147040] #PF: user-privileged instruction fetch from kernel code
[ 0.147040] BUG: unable to handle kernel paging request at ffffc90000230000
[ 0.147040] #PF: error_code(0x0005) - permissions violation
[ 0.147040] #PF: user-privileged read access from kernel code
[ 0.147040] BUG: unable to handle kernel paging request at ffffc90000230000
[ 0.147040] #PF: error_code(0x0004) - not-present page
[ 0.147040] #PF: user-privileged read access from kernel code
[ 0.147040] BUG: unable to handle kernel paging request at ffffc90000230000
[ 0.147040] #PF: error_code(0x0000) - not-present page
[ 0.147040] #PF: supervisor-privileged read access from kernel code
next prev parent reply other threads:[~2018-12-07 22:06 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-05 16:36 [PATCH] x86/fault: Print "SUPERVISOR" and "READ" when decoding #PF oops Sean Christopherson
2018-12-05 19:27 ` Randy Dunlap
2018-12-05 19:35 ` Linus Torvalds
2018-12-06 7:34 ` [PATCH] x86/mm/fault: Streamline the fault error_code decoder some more Ingo Molnar
2018-12-06 15:53 ` Sean Christopherson
2018-12-06 16:23 ` Ingo Molnar
2018-12-06 16:39 ` Andy Lutomirski
2018-12-06 16:47 ` Ingo Molnar
2018-12-06 17:05 ` Andy Lutomirski
2018-12-06 17:36 ` Ingo Molnar
2018-12-06 18:15 ` Linus Torvalds
2018-12-06 19:06 ` Andy Lutomirski
2018-12-06 20:24 ` Linus Torvalds
2018-12-06 20:28 ` Andy Lutomirski
2018-12-06 20:39 ` Linus Torvalds
2018-12-07 18:44 ` [PATCH] x86/fault: Decode and print #PF oops in human readable form Sean Christopherson
2018-12-07 18:52 ` Linus Torvalds
2018-12-07 19:18 ` Sean Christopherson
2018-12-07 19:52 ` [PATCH v2] " Sean Christopherson
2018-12-07 20:46 ` Linus Torvalds
2018-12-07 22:06 ` Sean Christopherson [this message]
2018-12-07 22:14 ` Linus Torvalds
2018-12-07 23:57 ` Andy Lutomirski
2018-12-10 16:04 ` Sean Christopherson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181207220646.GH10404@linux.intel.com \
--to=sean.j.christopherson@intel.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=riel@surriel.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.org \
--cc=yu-cheng.yu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.