Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1246537ybt; Thu, 25 Jun 2020 01:04:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwW7yMXmDo6+ETj6rMd7nVmrv6mpgtL0V+9x7wPrpvIaKRC2U8T/UgsXDvT6BOoM9zTekKG X-Received: by 2002:a50:a1e7:: with SMTP id 94mr29915494edk.165.1593072281702; Thu, 25 Jun 2020 01:04:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593072281; cv=none; d=google.com; s=arc-20160816; b=PBFiWDlWa5Apj9G6zaT5QK7Uh/HtFdu9CrLufO1f/qEt3NYJ5+kJKl2XLHkk0xVGO7 xWsYr7Bg8mc8Tkvgaf5k5utGtUYtyGfr3nxStchShH5EbJ70FSkHuCpqn47geb+mjUSO VQqK4X+/zQFBawvEn/w+im0YHV17KpRYajCDXMPEHU1uSIcVbctLAnXFNlP29tS525G8 m9nFjtndT/nJqzB+Mq1MX55DkGkIxvzSEjnDsB0RNnt0PQVYdtTTXEf75QaE+gfUv9kK 1FGvwGwdD9QwU7E6XZM83sOc7J53YlSRzzjzLMlYKjwqohS0GwPxNfn1drkn3rmD/bim BP/g== 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=2JjiIG5TRAwyRIXGUmCL6vx5inpF6Oq9nVKLqr73Wuw=; b=mnXOLda+RAdGd3CVcEl1I4a7HmnqbxhetrMhkG0dzjlFnGn8/seznwYzXB2mkLYx/k T46TaKT2nvSnnijuCJ4kX/F3SzbFqyDvGHJMRJxrOtMVjyH8r5SVSAX9FzzbGRcvUCqh L9Bc3hrGpFAOb4GxbdN27UX9EK5Yhd+6Plx1m37x1rylJelHjtTZ+0JwVVokRjjkCt5B XXS2AltGT9VUBCZLHrMpMgEB3eIxBOLM2egsLfIC0o6GNvg0EhSgY3lKRndaac5tXGW3 SX2HM39a4yAQaOW+G33W5zRvVNlLyY7NPSvD825CRLnp5gHKhm5hGfSusxf//wbPIyCW 908Q== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h20si9587734ejk.652.2020.06.25.01.04.17; Thu, 25 Jun 2020 01:04:41 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390576AbgFYIDn (ORCPT + 99 others); Thu, 25 Jun 2020 04:03:43 -0400 Received: from szxga06-in.huawei.com ([45.249.212.32]:44946 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2390553AbgFYIDi (ORCPT ); Thu, 25 Jun 2020 04:03:38 -0400 Received: from DGGEMS413-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id 466B960EC52E8A581F40; Thu, 25 Jun 2020 16:03:37 +0800 (CST) Received: from DESKTOP-KKJBAGG.china.huawei.com (10.173.220.25) by DGGEMS413-HUB.china.huawei.com (10.3.19.213) with Microsoft SMTP Server id 14.3.487.0; Thu, 25 Jun 2020 16:03:26 +0800 From: Zhenyu Ye To: , , , , , , , , , , , , , , , , CC: , , , , , , , , , Subject: [RESEND PATCH v5 2/6] arm64: Add level-hinted TLB invalidation helper Date: Thu, 25 Jun 2020 16:03:10 +0800 Message-ID: <20200625080314.230-3-yezhenyu2@huawei.com> X-Mailer: git-send-email 2.22.0.windows.1 In-Reply-To: <20200625080314.230-1-yezhenyu2@huawei.com> References: <20200625080314.230-1-yezhenyu2@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.173.220.25] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Marc Zyngier Add a level-hinted TLB invalidation helper that only gets used if ARMv8.4-TTL gets detected. Signed-off-by: Marc Zyngier Signed-off-by: Zhenyu Ye Reviewed-by: Catalin Marinas --- arch/arm64/include/asm/tlbflush.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/arch/arm64/include/asm/tlbflush.h b/arch/arm64/include/asm/tlbflush.h index bc3949064725..8adbd6fd8489 100644 --- a/arch/arm64/include/asm/tlbflush.h +++ b/arch/arm64/include/asm/tlbflush.h @@ -10,6 +10,7 @@ #ifndef __ASSEMBLY__ +#include #include #include #include @@ -59,6 +60,34 @@ __ta; \ }) +#define TLBI_TTL_MASK GENMASK_ULL(47, 44) + +#define __tlbi_level(op, addr, level) do { \ + u64 arg = addr; \ + \ + if (cpus_have_const_cap(ARM64_HAS_ARMv8_4_TTL) && \ + level) { \ + u64 ttl = level; \ + \ + switch (PAGE_SIZE) { \ + case SZ_4K: \ + ttl |= 1 << 2; \ + break; \ + case SZ_16K: \ + ttl |= 2 << 2; \ + break; \ + case SZ_64K: \ + ttl |= 3 << 2; \ + break; \ + } \ + \ + arg &= ~TLBI_TTL_MASK; \ + arg |= FIELD_PREP(TLBI_TTL_MASK, ttl); \ + } \ + \ + __tlbi(op, arg); \ +} while (0) + /* * TLB Invalidation * ================ -- 2.26.2