Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp532607pxa; Fri, 14 Aug 2020 10:32:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxy1Yf/HQLFcC+/PUZtu9WlhMnMpyQCXb8LqgBuIH49OfA1OyLQWHTnuyHO2WYIf268eUyO X-Received: by 2002:a17:906:f14f:: with SMTP id gw15mr3292802ejb.245.1597426330143; Fri, 14 Aug 2020 10:32:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597426330; cv=none; d=google.com; s=arc-20160816; b=GGMLGLzM+0JyZT8KOZli2+/rBfe/y+XAKCNTQwe5iU7DxTsjSjDC1vUYDP/V9DzS+Y rwL4LK58762u9Slv7vDlXTA9nxFDR/BqSRgXltYJICPU4Ri1k7te6SNBQ9UNA2Pw+IjV qazNGeR7ffLtZ1dxp0iGDB5Z5F4vAiPcW0syehTtje2qci8mFqt2h5G3h1vZOme2kjii zgxUs0DU0JCSNe2CCfOL4qjKNx28Q7NHe5lxjy/mN4Jgn4DSdZTeutFEn6iFur+7OY9R kENCoo+htoQ8obuKEUrMwr+NeXuv0bm/Gm0XIjt0NA6ongLz5pJE/Pie9N4PdMcipIUA A74w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:from:subject:references :mime-version:message-id:in-reply-to:date:dkim-signature; bh=LewkbAtBTS3fxa2ioFCrxocMUQLUBlN7d9swTrdmfVk=; b=hM2ldTzSIBCXkCnN4NX/cNst7QD8N+LKhyQAI2/1znMcU3ZxtaKQVyfU8O6u8tYfgp w+SsZkgK+7LGFw5S/+PIFChuqbvwGXsZQbxUFY9Bdy5JiGBe1W/xjrdGJYx2ZhCQ0H28 lzCIZ05Rd08KfGs0gLWhCEh1t6WRqxEILNXpRWRb4UUiFTxKUbOytRgTFGspaoex3z9f wS5EWt6RX5Gj1cc7Hn8N1bqyfeENZc6ZYYkE5O8kX9vJEZwLJzZGep64NM7y/h7Y6Iaq cgszYOmZO4ls5xnLsA6Iu5KFv+awpVDfnkeWum8vH1BhAqXUZAgWB0t5C5O0XVIg8ArK NgpQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="VBd8Y8/0"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x12si5572106edl.33.2020.08.14.10.31.47; Fri, 14 Aug 2020 10:32:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="VBd8Y8/0"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728525AbgHNRaC (ORCPT + 99 others); Fri, 14 Aug 2020 13:30:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37556 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728709AbgHNR2R (ORCPT ); Fri, 14 Aug 2020 13:28:17 -0400 Received: from mail-qv1-xf49.google.com (mail-qv1-xf49.google.com [IPv6:2607:f8b0:4864:20::f49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C4D06C061384 for ; Fri, 14 Aug 2020 10:28:16 -0700 (PDT) Received: by mail-qv1-xf49.google.com with SMTP id c4so6503331qvq.15 for ; Fri, 14 Aug 2020 10:28:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=LewkbAtBTS3fxa2ioFCrxocMUQLUBlN7d9swTrdmfVk=; b=VBd8Y8/0sCJNp9OLxtpbP3YFD0V7v4ivH9Cj8L45fMKAxsbpM/7wFGcDUQeyy72z7+ 0+83oUrkvXL/wVWdOLiGRPDkN9cxYy25dwFuY6WlobJRoBw5Hv9a+2zjxhhnyquGKy9S 2EZU9tkO5wLg8/RgIx9m7DsZYXR3314Znfr6vJ3MNxMoELwXKZlF+NlGBiOEjdt+YbH/ M8jvnzzivlTluFx2uqs4r137zk+fAgcIbSEWAReQBWWz/UFUwoH8b3I68Z73ieYmMigU ntrskJrbnmV1HFKyooD68AjgyDl3B/zvkVc8r7dyFNQz5HrEOh+GjWU5ZP9+NGOy7Czk g76Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=LewkbAtBTS3fxa2ioFCrxocMUQLUBlN7d9swTrdmfVk=; b=gYxEsHaW+Xpx6kJFcTftc9XOLR16gbdvBw66t8gMw0CYH0OTTatYNv658YtmTNtfJB QbiUm0hlnS53ppfg/WQ6uAS0HluJPUqKL9MjiLzFBhXG9Ipnkx+A/pRS9UVe6pPuYhaG iOT3WHdF6ZOoBSXei3Y5a1vhxbLlLxu2O6JJ+61JJqqP4DRUFdLayOXqVOhcpIj3oB4D Ga0toLUw4uMupDMMnWK3EmfdsteONX5mNui3FqrOvpcSyVXUM3LuiZr0k1BLkvZGwAyV n49gvIm1sQkyxdAB9HfzrJdH/T9C74mbdwIylFDv4qCX7l31QNLqF5s4OnTJKTOFyfXP G0mw== X-Gm-Message-State: AOAM530k1YCZvHiGYiHgwZ5CexoH33THsTRkCiVMB/mRRkSdNIBtlFlN H5I5XAEzdkuU3bA3XsL1rXI+HdRWAUuQn7xo X-Received: by 2002:ad4:4b0b:: with SMTP id r11mr3633062qvw.94.1597426095910; Fri, 14 Aug 2020 10:28:15 -0700 (PDT) Date: Fri, 14 Aug 2020 19:27:04 +0200 In-Reply-To: Message-Id: <6a83a47d9954935d37a654978e96c951cc56a2f6.1597425745.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.28.0.220.ged08abb693-goog Subject: [PATCH 22/35] arm64: mte: Enable in-kernel MTE From: Andrey Konovalov To: Dmitry Vyukov , Vincenzo Frascino , Catalin Marinas , kasan-dev@googlegroups.com Cc: Andrey Ryabinin , Alexander Potapenko , Marco Elver , Evgenii Stepanov , Elena Petrova , Branislav Rankov , Kevin Brodsky , Will Deacon , Andrew Morton , linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Vincenzo Frascino The Tag Checking operation causes a synchronous data abort as a consequence of a tag check fault when MTE is configured in synchronous mode. Enable MTE in Synchronous mode in EL1 to provide a more immediate way of tag check failure detection in the kernel. As part of this change enable match-all tag for EL1 to allow the kernel to access user pages without faulting. This is required because the kernel does not have knowledge of the tags set by the user in a page. Note: For MTE, the TCF bit field in SCTLR_EL1 affects only EL1 in a similar way as TCF0 affects EL0. Signed-off-by: Vincenzo Frascino --- arch/arm64/kernel/cpufeature.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index 4d3abb51f7d4..4d94af19d8f6 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -1670,6 +1670,9 @@ static void cpu_enable_mte(struct arm64_cpu_capabilities const *cap) write_sysreg_s(0, SYS_TFSR_EL1); write_sysreg_s(0, SYS_TFSRE0_EL1); + /* Enable Match-All at EL1 */ + sysreg_clear_set(tcr_el1, 0, SYS_TCR_EL1_TCMA1); + /* * CnP must be enabled only after the MAIR_EL1 register has been set * up. Inconsistent MAIR_EL1 between CPUs sharing the same TLB may @@ -1687,6 +1690,9 @@ static void cpu_enable_mte(struct arm64_cpu_capabilities const *cap) mair &= ~MAIR_ATTRIDX(MAIR_ATTR_MASK, MT_NORMAL_TAGGED); mair |= MAIR_ATTRIDX(MAIR_ATTR_NORMAL_TAGGED, MT_NORMAL_TAGGED); write_sysreg_s(mair, SYS_MAIR_EL1); + + /* Enable MTE Sync Mode for EL1 */ + sysreg_clear_set(sctlr_el1, SCTLR_ELx_TCF_MASK, SCTLR_ELx_TCF_SYNC); isb(); local_flush_tlb_all(); -- 2.28.0.220.ged08abb693-goog