From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751917AbcBLVIC (ORCPT ); Fri, 12 Feb 2016 16:08:02 -0500 Received: from mga11.intel.com ([192.55.52.93]:34623 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751724AbcBLVC0 (ORCPT ); Fri, 12 Feb 2016 16:02:26 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,437,1449561600"; d="scan'208";a="901774107" Subject: [PATCH 23/33] x86, pkeys: dump PKRU with other kernel registers To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, x86@kernel.org, torvalds@linux-foundation.org, Dave Hansen , dave.hansen@linux.intel.com From: Dave Hansen Date: Fri, 12 Feb 2016 13:02:25 -0800 References: <20160212210152.9CAD15B0@viggo.jf.intel.com> In-Reply-To: <20160212210152.9CAD15B0@viggo.jf.intel.com> Message-Id: <20160212210225.BF0D4482@viggo.jf.intel.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dave Hansen Protection Keys never affect kernel mappings. But, they can affect whether the kernel will fault when it touches a user mapping. The kernel doesn't touch user mappings without some careful choreography and these accesses don't generally result in oopses. But, if one does, we definitely want to have PKRU available so we can figure out if protection keys played a role. Signed-off-by: Dave Hansen Reviewed-by: Thomas Gleixner --- b/arch/x86/kernel/process_64.c | 2 ++ 1 file changed, 2 insertions(+) diff -puN arch/x86/kernel/process_64.c~pkeys-30-kernel-error-dumps arch/x86/kernel/process_64.c --- a/arch/x86/kernel/process_64.c~pkeys-30-kernel-error-dumps 2016-02-12 10:44:24.287614870 -0800 +++ b/arch/x86/kernel/process_64.c 2016-02-12 10:44:24.291615053 -0800 @@ -116,6 +116,8 @@ void __show_regs(struct pt_regs *regs, i printk(KERN_DEFAULT "DR0: %016lx DR1: %016lx DR2: %016lx\n", d0, d1, d2); printk(KERN_DEFAULT "DR3: %016lx DR6: %016lx DR7: %016lx\n", d3, d6, d7); + if (boot_cpu_has(X86_FEATURE_OSPKE)) + printk(KERN_DEFAULT "PKRU: %08x\n", read_pkru()); } void release_thread(struct task_struct *dead_task) _