Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp1375088ybf; Thu, 27 Feb 2020 09:45:27 -0800 (PST) X-Google-Smtp-Source: APXvYqwr8laUH5Hz7XB5lXPSbxuks4kK6/q165TJESN6X2Sg4+l9socb4QaO8BYCmWmiD3hUtOkZ X-Received: by 2002:a54:4595:: with SMTP id z21mr160243oib.136.1582825527132; Thu, 27 Feb 2020 09:45:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582825527; cv=none; d=google.com; s=arc-20160816; b=UEcSll640YvaUdwq7xf4Ntz2M0204MecOrqcYyy1QwLHTbFvPA8RLVixqcwpHVsfPb +jPyOixUSv0xdEWDwp2H9HFnYhL5PhU8dWwcPuskEsQiSIRdKQE90pk86P4xkNsT8DSG JI7vbkQJMsEEvPIKKnqoJZxPbqPKclt7bzdDvRN5ZNPpdU/GJH6ScUuhfP5GOz833CNI 7rCF2aiV/aZQHuDh5l6p2nrr0iOiF9AKNkmDljW75jPwmtwBhGTzfYQK44ZRa83jl6HD CJ46c+UwohKiTT21HUz0TmJFMsTSpo50yvzhoeiEhEDO45Rp6Br9X+k60McHruot3EfI Qp8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=2EnG0pebq3Kr9ebn89uZg7evBkIPktZ+b7F0vWbvIe4=; b=g1f7IIcrTgg34t4DBqVECibtQx5GMUS4qJ/sjAE5VutdEXss5WZE1BzzO6XdjrmXgf cGorgIKCn964gxmj0Xkv2qypICP/CGolLQHfBblOZrYKCJzB/H7N5mvLUQNaKoNE4zdl DtYvb/qo39TDvgzsYTMlegvwnvYzGxEbIBI3Lyc0UZNx5kfvZh1Ta0NjVC9+QQj7qkxW zYPDuLMp41c9uJo7a5rCnkhauBbCselOrAwFhvFcVytrLAc654FFEkplIJHr4MPZcpvi CgvPS2NlK5HTAz4lzpX8SPe73fXrKCDqIZ3idS8+38j81TP7r7BlXLX2pXkHNeQYWdnn s7Pw== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d19si2238366ote.3.2020.02.27.09.45.13; Thu, 27 Feb 2020 09:45:27 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730657AbgB0Roh (ORCPT + 99 others); Thu, 27 Feb 2020 12:44:37 -0500 Received: from foss.arm.com ([217.140.110.172]:55592 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730623AbgB0Rog (ORCPT ); Thu, 27 Feb 2020 12:44:36 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9C8B511B3; Thu, 27 Feb 2020 09:44:35 -0800 (PST) Received: from localhost (unknown [10.37.6.21]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DD3613F73B; Thu, 27 Feb 2020 09:44:34 -0800 (PST) From: Mark Brown To: Catalin Marinas , Will Deacon Cc: Alexander Viro , Paul Elliott , Peter Zijlstra , Yu-cheng Yu , Amit Kachhap , Vincenzo Frascino , Marc Zyngier , Eugene Syromiatnikov , Szabolcs Nagy , "H . J . Lu " , Andrew Jones , Kees Cook , Arnd Bergmann , Jann Horn , Richard Henderson , =?UTF-8?q?Kristina=20Mart=C5=A1enko?= , Thomas Gleixner , Florian Weimer , Sudakshina Das , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, linux-fsdevel@vger.kernel.org, Dave Martin , Mark Brown Subject: [PATCH v8 06/11] arm64: BTI: Decode BYTPE bits when printing PSTATE Date: Thu, 27 Feb 2020 17:44:12 +0000 Message-Id: <20200227174417.23722-7-broonie@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200227174417.23722-1-broonie@kernel.org> References: <20200227174417.23722-1-broonie@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dave Martin The current code to print PSTATE symbolically when generating backtraces etc., does not include the BYTPE field used by Branch Target Identification. So, decode BYTPE and print it too. In the interests of human-readability, print the classes of BTI matched. The symbolic notation, BYTPE (PSTATE[11:10]) and permitted classes of subsequent instruction are: -- (BTYPE=0b00): any insn jc (BTYPE=0b01): BTI jc, BTI j, BTI c, PACIxSP -c (BYTPE=0b10): BTI jc, BTI c, PACIxSP j- (BTYPE=0b11): BTI jc, BTI j Signed-off-by: Dave Martin Reviewed-by: Kees Cook Signed-off-by: Mark Brown --- arch/arm64/kernel/process.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index b8e3faa8d406..24af13d7bde6 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -211,6 +211,15 @@ void machine_restart(char *cmd) while (1); } +#define bstr(suffix, str) [PSR_BTYPE_ ## suffix >> PSR_BTYPE_SHIFT] = str +static const char *const btypes[] = { + bstr(NONE, "--"), + bstr( JC, "jc"), + bstr( C, "-c"), + bstr( J , "j-") +}; +#undef bstr + static void print_pstate(struct pt_regs *regs) { u64 pstate = regs->pstate; @@ -229,7 +238,10 @@ static void print_pstate(struct pt_regs *regs) pstate & PSR_AA32_I_BIT ? 'I' : 'i', pstate & PSR_AA32_F_BIT ? 'F' : 'f'); } else { - printk("pstate: %08llx (%c%c%c%c %c%c%c%c %cPAN %cUAO)\n", + const char *btype_str = btypes[(pstate & PSR_BTYPE_MASK) >> + PSR_BTYPE_SHIFT]; + + printk("pstate: %08llx (%c%c%c%c %c%c%c%c %cPAN %cUAO BTYPE=%s)\n", pstate, pstate & PSR_N_BIT ? 'N' : 'n', pstate & PSR_Z_BIT ? 'Z' : 'z', @@ -240,7 +252,8 @@ static void print_pstate(struct pt_regs *regs) pstate & PSR_I_BIT ? 'I' : 'i', pstate & PSR_F_BIT ? 'F' : 'f', pstate & PSR_PAN_BIT ? '+' : '-', - pstate & PSR_UAO_BIT ? '+' : '-'); + pstate & PSR_UAO_BIT ? '+' : '-', + btype_str); } } -- 2.20.1