From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-20.6 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F2E99C433DF for ; Fri, 14 Aug 2020 17:28:26 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id A8C1A2078D for ; Fri, 14 Aug 2020 17:28:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="VBd8Y8/0" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A8C1A2078D Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id DDF176B0031; Fri, 14 Aug 2020 13:28:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D6ACE6B0032; Fri, 14 Aug 2020 13:28:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B443A6B0033; Fri, 14 Aug 2020 13:28:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0026.hostedemail.com [216.40.44.26]) by kanga.kvack.org (Postfix) with ESMTP id 94E696B0031 for ; Fri, 14 Aug 2020 13:28:17 -0400 (EDT) Received: from smtpin16.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 5DF3E181AEF23 for ; Fri, 14 Aug 2020 17:28:17 +0000 (UTC) X-FDA: 77149857834.16.hall49_340148a26ffe Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin16.hostedemail.com (Postfix) with ESMTP id 32ED4100E6912 for ; Fri, 14 Aug 2020 17:28:17 +0000 (UTC) X-HE-Tag: hall49_340148a26ffe X-Filterd-Recvd-Size: 4953 Received: from mail-qt1-f201.google.com (mail-qt1-f201.google.com [209.85.160.201]) by imf08.hostedemail.com (Postfix) with ESMTP for ; Fri, 14 Aug 2020 17:28:16 +0000 (UTC) Received: by mail-qt1-f201.google.com with SMTP id f59so7441768qtb.22 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=AL6VeXbIXRCbeBNKQYqTrej4VGH5jRdqXpPGn+NU3Xw6Flv/fKxn7Jbl+puOgGzm1v pT0pxMWBZGIK9rzmGwFzTx/JnCvCTuEsvyMA28bOgycpu4545RoJv6Q78SaiWagS8WA5 TTZQ5iQruf907h4JFPqJe1zRJl51LsqXPyEI2037m8ObwwNWYPUTQwl1MCUHNl0XD8Fx cYMdqSPJ1iIAJCz28O5hXzvGfHhlWNEFpgKKkAqWv+ifhLDnjkSewnwj/mCd2wRFVPui 0jSzcDR4AJ8f7WhTc6M0GgaQDXyE8g04UxK4lYt79DbI2rGT5Pqa2eHa3AWTluM5ATSh 095A== X-Gm-Message-State: AOAM532VJQq9L7sQod3xh9J5EF8Fzaa1pL3CR9G2HoB4Af4siAkZW2Xo 08/eYS1O9qeWHcqpRCVYlswJExO4ThR9jMey X-Google-Smtp-Source: ABdhPJwkBrAQ8GyLssKpf9q7VKymTxaofLqPPbiLmDAQiv3UZOFrLINHymedM0M36JyCRp99bnQq9F+T3nsH6DvR 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" X-Rspamd-Queue-Id: 32ED4100E6912 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam05 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: 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