Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp717847imu; Fri, 16 Nov 2018 09:08:08 -0800 (PST) X-Google-Smtp-Source: AJdET5eCEmKlTS57527IT1YV2cgESwRg28VhjzWP+/nwi6hbzWGNYY+tOUDy0vhVIkY6GBR6mhDr X-Received: by 2002:a62:fc86:: with SMTP id e128mr12421598pfh.54.1542388088712; Fri, 16 Nov 2018 09:08:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542388088; cv=none; d=google.com; s=arc-20160816; b=lRA9yUxoxS88Jcu2r8NSsSvoFvUu8RGicf4oSz8yxQVRpvJzNsQIGBXWzIrqkkNPUw lHPm7osy1tFTXpyFYi/zy5Am6U0luynGiVdkrbQhrYg9M5n0nWCd7SCfSw+zPGXN+rTa 6zwI8tXYl37APWcIlxCIOBmx94lXZrstkpvuRGBqD796xb87dxlEdYDpn3gIHCXjOfbx n+GD4s2w/i3AGvMdZn0L9Y5TsFR7cNYyGIg/00nw2R5kju1MR2oQfUldh4KvcpGZHLFq QYnk9f/NJ9D5H6ZtFQLblACLoZ4reAvoF/KPu13+Cn6CqLtgUJIf1fZjrmzdQuumGcWs HDQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:cc:to:subject:from:message-id; bh=xUWgo/2a5ypf2SiqKJbCrUQ3QX17PQcK8YcRwZxMuAI=; b=jHmTUABNbqxX39RRBgCHTl0luypuPJG4+MJZ3IX9RjRLj0Qr9Jyw9yygfNwqNKod2H 1vsDz5nvRXn0GuoxisMMv47VTIdEleKynLBBOOWVj5YmWer+eTGeFowGUnFKcXgOl1z8 JQkCVZuZgAnnT9f54VXzHNOHPXaMf3xK1+jO89saXIyj+EDwuEyw6hMbNCSfNWGHz3XT kCQ3xj7OzkbtOOh3BjzkYIWohPxIVyRjb7wTSuPqapHhfpPtyzQ4CnU/JQcUFxmOyP/5 SVxhxL6SUqvw4lNzVJZqX3AyWV+uhp64u8K/ajKSMMH3PSCT9kvhTbx36zl6ACqo37Rh cbYw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s12si31830202pgh.488.2018.11.16.09.07.54; Fri, 16 Nov 2018 09:08:08 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390232AbeKQDT6 (ORCPT + 99 others); Fri, 16 Nov 2018 22:19:58 -0500 Received: from pegase1.c-s.fr ([93.17.236.30]:27443 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728628AbeKQDT6 (ORCPT ); Fri, 16 Nov 2018 22:19:58 -0500 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 42xPlk1sfgz9vBmn; Fri, 16 Nov 2018 18:06:42 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id GPpubZAbHbOS; Fri, 16 Nov 2018 18:06:42 +0100 (CET) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 42xPlk1Jgqz9vBLK; Fri, 16 Nov 2018 18:06:42 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 0A0308B91D; Fri, 16 Nov 2018 18:06:44 +0100 (CET) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id E4rQYU0K49P3; Fri, 16 Nov 2018 18:06:43 +0100 (CET) Received: from po14163vm.idsi0.si.c-s.fr (po15451.idsi0.si.c-s.fr [172.25.231.2]) by messagerie.si.c-s.fr (Postfix) with ESMTP id C9E508B8C0; Fri, 16 Nov 2018 18:06:43 +0100 (CET) Received: by po14163vm.idsi0.si.c-s.fr (Postfix, from userid 0) id B897969A5C; Fri, 16 Nov 2018 17:06:43 +0000 (UTC) Message-Id: <535d3d1838d3599d4f7535a92e3b7872102f9ff4.1542387964.git.christophe.leroy@c-s.fr> From: Christophe Leroy Subject: [PATCH] powerpc/mm: dump segment registers on book3s/32 To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Date: Fri, 16 Nov 2018 17:06:43 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch creates a debugfs file to see content of segment registers ~# cat /sys/kernel/debug/segment_registers ---[ User Segments ]--- 0x00000000-0x0fffffff Kern key 1 User key 1 VSID 0xade2b0 0x10000000-0x1fffffff Kern key 1 User key 1 VSID 0xade3c1 0x20000000-0x2fffffff Kern key 1 User key 1 VSID 0xade4d2 0x30000000-0x3fffffff Kern key 1 User key 1 VSID 0xade5e3 0x40000000-0x4fffffff Kern key 1 User key 1 VSID 0xade6f4 0x50000000-0x5fffffff Kern key 1 User key 1 VSID 0xade805 0x60000000-0x6fffffff Kern key 1 User key 1 VSID 0xade916 0x70000000-0x7fffffff Kern key 1 User key 1 VSID 0xadea27 0x80000000-0x8fffffff Kern key 1 User key 1 VSID 0xadeb38 0x90000000-0x9fffffff Kern key 1 User key 1 VSID 0xadec49 0xa0000000-0xafffffff Kern key 1 User key 1 VSID 0xaded5a 0xb0000000-0xbfffffff Kern key 1 User key 1 VSID 0xadee6b ---[ Kernel Segments ]--- 0xc0000000-0xcfffffff Kern key 0 User key 1 VSID 0x000ccc 0xd0000000-0xdfffffff Kern key 0 User key 1 VSID 0x000ddd 0xe0000000-0xefffffff Kern key 0 User key 1 VSID 0x000eee 0xf0000000-0xffffffff Kern key 0 User key 1 VSID 0x000fff Signed-off-by: Christophe Leroy --- arch/powerpc/mm/Makefile | 2 +- arch/powerpc/mm/dump_sr.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 arch/powerpc/mm/dump_sr.c diff --git a/arch/powerpc/mm/Makefile b/arch/powerpc/mm/Makefile index 2adad10b5856..cf3e99ceb420 100644 --- a/arch/powerpc/mm/Makefile +++ b/arch/powerpc/mm/Makefile @@ -47,7 +47,7 @@ ifdef CONFIG_PPC_PTDUMP obj-$(CONFIG_4xx) += dump_linuxpagetables-generic.o obj-$(CONFIG_PPC_8xx) += dump_linuxpagetables-8xx.o obj-$(CONFIG_PPC_BOOK3E_MMU) += dump_linuxpagetables-generic.o -obj-$(CONFIG_PPC_BOOK3S_32) += dump_linuxpagetables-generic.o dump_bats.o +obj-$(CONFIG_PPC_BOOK3S_32) += dump_linuxpagetables-generic.o dump_bats.o dump_sr.o obj-$(CONFIG_PPC_BOOK3S_64) += dump_linuxpagetables-book3s64.o endif obj-$(CONFIG_PPC_HTDUMP) += dump_hashpagetable.o diff --git a/arch/powerpc/mm/dump_sr.c b/arch/powerpc/mm/dump_sr.c new file mode 100644 index 000000000000..057b60bcb6fc --- /dev/null +++ b/arch/powerpc/mm/dump_sr.c @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2018, Christophe Leroy CS S.I. + * + * + * This dumps the content of Segment Registers + */ + +#include + +static void seg_show(struct seq_file *m, int i) +{ + u32 val = mfsrin(i << 28); + + seq_printf(m, "0x%01x0000000-0x%01xfffffff ", i, i); + seq_printf(m, "Kern key %d ", (val >> 30) & 1); + seq_printf(m, "User key %d ", (val >> 29) & 1); + if (val & 0x80000000) { + seq_printf(m, "Device 0x%03x", (val >> 20) & 0x1ff); + seq_printf(m, "-0x%05x", val & 0xfffff); + } else { + if (val & 0x10000000) + seq_puts(m, "No Exec "); + seq_printf(m, "VSID 0x%06x", val & 0xffffff); + } + seq_puts(m, "\n"); +} + +static int sr_show(struct seq_file *m, void *v) +{ + int i; + + seq_puts(m, "---[ User Segments ]---\n"); + for (i = 0; i < TASK_SIZE >> 28; i++) + seg_show(m, i); + + seq_puts(m, "\n---[ Kernel Segments ]---\n"); + for (; i < 16; i++) + seg_show(m, i); + + return 0; +} + +static int sr_open(struct inode *inode, struct file *file) +{ + return single_open(file, sr_show, NULL); +} + +static const struct file_operations sr_fops = { + .open = sr_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int sr_init(void) +{ + struct dentry *debugfs_file; + + debugfs_file = debugfs_create_file("segment_registers", 0400, + NULL, NULL, &sr_fops); + return debugfs_file ? 0 : -ENOMEM; +} +device_initcall(sr_init); -- 2.13.3