From patchwork Thu Mar 11 16:47:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 12132133 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=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 94EEFC433E0 for ; Thu, 11 Mar 2021 16:48:09 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id ED48364FE2 for ; Thu, 11 Mar 2021 16:48:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ED48364FE2 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=4srTY6v1p+KZxAODQQeiecz/bFSQIIH2Y1Xop9cEAZc=; b=Pd8/yxJdmMpbTIDBnV70gVIs6 fVJfMGZ33kd/EQbY0GIBC6tEz6k2Dh8ETboPqvOxYDTMudr2lTCwc8bUdJTrNdWZKIYO099SKCxCy v0k/PgxfEBXrIgyvcdaxFMm6nUnwwYwOovF0fEjDMpGKJXcpSFPKJLtCGakqbgikXMz0rus0S4aPb oSuxcJORueaLOTx0JKWR5XWjpZ5bfC6YIPuKJ5oMMti3llHTxz34DoroCkACvWqSiQkduRQK7r5bw 6QjOfMaL/DQmf+107i8thkQ5F88G3H41LMyGPGitpEdAJOSNrvhcFwe7IHFBuyTEmN7aAmU+G0cjr 88PyhYg2A==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lKOTZ-009bvh-Bs; Thu, 11 Mar 2021 16:47:53 +0000 Received: from esa3.hgst.iphmx.com ([216.71.153.141]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lKOTU-009buL-Mp for linux-riscv@lists.infradead.org; Thu, 11 Mar 2021 16:47:50 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1615481268; x=1647017268; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=7W+sx8e4Cij6s7jeh170Vdld+rK+I5NrG88R46BVLaQ=; b=h+T7N4U1wU+lnQS9wapPyORscVldsAePV/IW7XEe/pDgn+qAUigszUpH HGYyhaCP6cmwFe6URNVK5iMOcprmAJtQz1XtHfAzU2XY06Yu0TdpZdoIC cLk4RRdatoVqz1ocY0cL/xgShbvxdFTD4S4BYzIMwsYOyepKVWi725RpA BLoU6J6a2tSY7CER74A/jmzowfp5Fbr65FiQg6ws/4jGuF7CVZzoVh9sI tfm1ARlqJin7ZV6NLA/SYX7mryqHW/j2ovuTDgVxDwxXpXDRMIwMhHZ7T WqijMufRstsLGk9Xv2mc9DaaG5d4KOnFFk0+iJkoNv/PtDwIF9r1Nn4WT A==; IronPort-SDR: lU3vDpG8bg4fDoj14b2YQGXQmG8TQ0GYUMTqyrAhg38V8739F8FJLI/pI9dgExSJXJKfTG9u6H btqU/Orxuu0ngdgtIH7tSZo/qgp4DgQN1BeTgcZpEEKVsKeuch5GeunHxidWVjJmO4g6WrJ+gv 0tsFkpvauSqR+FfTUF3o+QFXNF3WLJs2HdVAYlxn07MCyrRdQLmwEl0oQnkkIOGaJavgBFmzxq KMeatKFrhiHDq6bGOC0/W9ZVRtfuwBrzVdNQWjJ3z1o51CceBuigk5bB5lBW2+ykuCyR4IB9ns xNE= X-IronPort-AV: E=Sophos;i="5.81,241,1610380800"; d="scan'208";a="166429044" Received: from mail-co1nam04lp2051.outbound.protection.outlook.com (HELO NAM04-CO1-obe.outbound.protection.outlook.com) ([104.47.45.51]) by ob1.hgst.iphmx.com with ESMTP; 12 Mar 2021 00:47:45 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ejlxtnWnFsIS+TaDGxhOp7Eh+0Ts0Ih9Hchfj79MwqHMBQWssftXi3XcXUGYeVKNjEnRs5+K2jAX7ZcYzYXMFYfoOXBB7giKl+AoXkkExipuF0fpOQsnExbe4HclMKozVdvO33WLLb7K1Ts869clio9Zo5LeGVKLbPwezy5N5EgnZSpFl+xIFxMIzNyXzNp5kvzL+K13WIzl7/0jbb+cmlWAgbZEc6K26swonANQgtWANqbIKPfdzCSfDL7HGO+gVQLi25YVpg4PLEsfnH9crcS/cDDVD8L5awz25O+IyB+0wujNgZr07runa6K2VGNBxd0BIFpwy9rb6qfAKHhriQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=F+2K380GJTUU9NILQLzeBq1pUOn453ZEpp9WnrqHoGk=; b=V9kAN5TioAh56+H5gWOHT++Y68LcggyEP16JtSJLXJHtKZXtvXN7YPmQRWVUS3M68WujcYmKVmTD5OnYPmvbLjbvC+cSAtqk5UEhPWV/JyXvv9JNl5hYeu6H7jbzWow2RaI0qUSlQ4id8lTqAZMvPGYvroYDtjmEpTeJTjZ/mzjtpbT586nb80uA6mfcEBnzEx/e2Ths8tEWxU4v07bbUBLvT4aJlmQen8SFCA5+x5DKiokBfsNzu7iWtsG1d4SS4RScIEYuMFc3M5qpddylsALm8bFTv5CGYuhOiE+NzitteICqyiu5b4IcW2l14Le7zGA3wsuLwl2trVipC6GirA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wdc.com; dmarc=pass action=none header.from=wdc.com; dkim=pass header.d=wdc.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector2-sharedspace-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=F+2K380GJTUU9NILQLzeBq1pUOn453ZEpp9WnrqHoGk=; b=R5FLFwqaGVaOMfnMco9NTRpz5irqCBMfzpq1kjcOnbKtRyBhk8OzwWV2FBZYoelymR9MxMIzJmHkG7sfOqumOoWufDNcXsUkvxBtdG+NY6FZ66u+qP6TCm1ibpMdcoHjoZ+n+a0Rk5yatjBGHjtiqj5hJ+In0+V79SgshFeoGuc= Authentication-Results: dabbelt.com; dkim=none (message not signed) header.d=none;dabbelt.com; dmarc=none action=none header.from=wdc.com; Received: from DM6PR04MB6201.namprd04.prod.outlook.com (2603:10b6:5:127::32) by DM5PR04MB0218.namprd04.prod.outlook.com (2603:10b6:3:77::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3912.29; Thu, 11 Mar 2021 16:47:44 +0000 Received: from DM6PR04MB6201.namprd04.prod.outlook.com ([fe80::38c0:cc46:192b:1868]) by DM6PR04MB6201.namprd04.prod.outlook.com ([fe80::38c0:cc46:192b:1868%7]) with mapi id 15.20.3912.031; Thu, 11 Mar 2021 16:47:44 +0000 From: Anup Patel To: Palmer Dabbelt , Palmer Dabbelt , Paul Walmsley , Albert Ou , Daniel Lezcano , Thomas Gleixner Cc: Atish Patra , Alistair Francis , Anup Patel , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Anup Patel Subject: [RFC PATCH v1 1/3] RISC-V: IPI provider should specify if we can use IPI for remote FENCE Date: Thu, 11 Mar 2021 22:17:10 +0530 Message-Id: <20210311164712.652608-2-anup.patel@wdc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210311164712.652608-1-anup.patel@wdc.com> References: <20210311164712.652608-1-anup.patel@wdc.com> X-Originating-IP: [171.61.72.64] X-ClientProxiedBy: MAXPR01CA0113.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:5d::31) To DM6PR04MB6201.namprd04.prod.outlook.com (2603:10b6:5:127::32) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from wdc.com (171.61.72.64) by MAXPR01CA0113.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:5d::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3912.17 via Frontend Transport; Thu, 11 Mar 2021 16:47:40 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 8a6405e9-9a2e-4144-4a8f-08d8e4ad64a7 X-MS-TrafficTypeDiagnostic: DM5PR04MB0218: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: WDCIPOUTBOUND: EOP-TRUE X-MS-Oob-TLC-OOBClassifiers: OLM:3383; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NfRZqeunKhtlgnN6JVLv5m4yOv3WQQJKYSWyPTiw9p3xLRli2z5RYbwScSCE30aV7uByin3G/uwl9omp0K10ezZucDUF1URivh9r2d62UVlGH8kCKPSnXwM07+PEkxpYE89oeQec/2gLv/jlVObKOpzUXOuHPhbVASghQ7xg2IUxeFfWn64PHCYolNbHfpFfLqx/NcizFW0749+Ok/jiXHfy4iwilV61Uj483kMq9gYtsB2Lv1mFxddaTdGOxfj9AhEy0/DmNSAvn8NAzsLJWp1u2qud9W4kReHoKC9c10XmQw4Wztci4/qklwP63nGUiJrr2ym+pBaF7Yh1uKiUFocfOxw3hRHPyG90EE4vuv7hNGR3oI5Hk6skkHEf4rdGrI6RBOfTTm3swI7l0yGG26s0EI6hRn9EVixYmGWgygJnqQ/4bDG9amDCG4Qwj7TsorumywWvQl9gzaL7wGu52OKlYWYfLAdqJsR7OSqHcz4g9v0HmVxNr7+8en+yNqNDuUSrRx42LVrjLv3Uh79raA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR04MB6201.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(366004)(396003)(346002)(376002)(136003)(316002)(66476007)(66946007)(44832011)(36756003)(55016002)(8936002)(6666004)(110136005)(66556008)(16526019)(8886007)(2906002)(54906003)(478600001)(5660300002)(86362001)(26005)(1076003)(52116002)(7696005)(8676002)(956004)(2616005)(83380400001)(4326008)(186003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: IySa1O0lBq6tDsVQ25MtCmHk1foqnuk1JXWNWxkFQoA7HQYWyGn/jeNAf3UblqYEzZVwWbYaJIZivcV6Lzhe8Lu3IS8eYZlFVag6aauNodcHj+RE0BgOFFg5pRQy67mf8+UNRmKwFgx8HJa50PEW2atcPxYaSDBW+QXNwv3eQTfxtfaDhzKM6FFBpxLXcd85mtywFwhs/LFDDv41QqzAi3F2P0cyfA3mr/pCBIact3b9GXG48jihgKx4GiTqBirapvhzJicC6z9HAgR+R+sj/6Q969+SfaInbqK6rVYJkOGsZc0liOp8tJxvC65peUoZ31BGdlujSNXG/3FpJNLTAkM0YEeGRyt/FAKEDk5tDKg4+8xUOPVbmTznAXTUKFIwOYoAXrK5AN3zTCFmohjmflC/FaLN1baX4ZoHHHUrwFWz+C4js8E+v5agSc+J2s2lrFF9KC7Xq9chHqfKwxPJW9PpTw89nDRKkYR+zr7myd8Jhmdz2wBiQx97Hhq+vPWGzusAe+8z+d0K1AaaodqYR5z1dGwdH1Ck8JJpKUVCWiufkfhDiob3xpTw0So4fdLoxEBq2Wgwyc71Ci8NjaAfhEJhE1oU4GseyEf1EnT4FJyvTpInPOjf/jCbPiaokIAo+Eel48UKsPuOdkpZ/qkgz6nCrzFGGzYaH7LjwXJu/JJx2vTLL0P3+8g0s56eKfWzgn0zLnDRi7LYd5dKmf8FZsyXLk4x5APxAcMt5EDwl0KJP3F97CI2ORCAn+/HldhKu5xsI4oiDWLZlF3cxY4FGz/1HSIrhE1ZozbFoNzElaxR8Wd9FvSO4T/EuX3Vk2JxmQPDjEIqrQMZ/hQjE4a+gfiIOU2vS+Gygfl9OzS637rl3hTXevwvymZ1VRVJG4A8RunaiXlYv+glupdOZD8rTz8oY4j8GJJ5oJnGPMGpUVh+97qNYJMN7svUv3DYVEL9+IfaV3hin6fb7RWmzsa1EEYk9kVP/w66FSA+2oO/jLO5d7PEdjypBX/fQcf0zKTf8g8TiwQc+DkZJVHl7taQOcSfpxRYT/2+wS5VhXJLyHUUf8okL/YcDNogJalJLTSsuNkJXsBNqDPIenQVNVQsr8iLAMIeYq5nLpnVjJCPxfagIjvjWZJaOrVfD5RaNjd9EtVaCARkGbgr9I7adJPZe9cYXN9NXTRqi4yibwVDNkC2NMem7QSDLMCrHxFEROzgYkUYh3U6EaA0axFV6teSmVrRHze1MrkQVMaE9pBfheEHGUqELMQSee7hvQii84pWI1fHzkbSmUpzPZtV09ghFWp9lnlvzPxA32iK/9/aTNgtiBpWSZcJwB1l96nFs1z7 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8a6405e9-9a2e-4144-4a8f-08d8e4ad64a7 X-MS-Exchange-CrossTenant-AuthSource: DM6PR04MB6201.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2021 16:47:44.4234 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: D0qaB9+8ZUTOlqu5PGCUZM+1Ys24XqdRe/YpSf3hqU2YKloWdKDDihxmy/otJc1MmyHEQcjaluWyK86Syp+r/w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR04MB0218 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210311_164749_107346_0698FC28 X-CRM114-Status: GOOD ( 17.30 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org We extend riscv_set_ipi_ops() so that IPI providers (such as SBI, CLINT driver, etc) can specify whether IPIs are suitable for doing remote FENCEs (i.e remote TLB shoot down). The upcoming AIA specification allows IPI injection directly from S-mode (or VS-mode) using IMSIC controller so the extended riscv_set_ipi_ops() will be useful to AIA IMSIC driver as well. Signed-off-by: Anup Patel --- arch/riscv/include/asm/smp.h | 13 +++++++++++-- arch/riscv/kernel/sbi.c | 2 +- arch/riscv/kernel/smp.c | 10 +++++++++- arch/riscv/mm/cacheflush.c | 2 +- drivers/clocksource/timer-clint.c | 2 +- 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/arch/riscv/include/asm/smp.h b/arch/riscv/include/asm/smp.h index df1f7c4cd433..82c23e5f22f6 100644 --- a/arch/riscv/include/asm/smp.h +++ b/arch/riscv/include/asm/smp.h @@ -45,8 +45,11 @@ void arch_send_call_function_single_ipi(int cpu); int riscv_hartid_to_cpuid(int hartid); void riscv_cpuid_to_hartid_mask(const struct cpumask *in, struct cpumask *out); +/* Check if we can use IPIs for remote FENCE */ +bool riscv_use_ipi_for_rfence(void); + /* Set custom IPI operations */ -void riscv_set_ipi_ops(struct riscv_ipi_ops *ops); +void riscv_set_ipi_ops(struct riscv_ipi_ops *ops, bool use_for_rfence); /* Clear IPI for current CPU */ void riscv_clear_ipi(void); @@ -92,7 +95,13 @@ static inline void riscv_cpuid_to_hartid_mask(const struct cpumask *in, cpumask_set_cpu(boot_cpu_hartid, out); } -static inline void riscv_set_ipi_ops(struct riscv_ipi_ops *ops) +static inline bool riscv_use_ipi_for_rfence(void) +{ + return false; +} + +static inline void riscv_set_ipi_ops(struct riscv_ipi_ops *ops, + bool use_for_rfence) { } diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c index 49155588e56c..15a09680fdb6 100644 --- a/arch/riscv/kernel/sbi.c +++ b/arch/riscv/kernel/sbi.c @@ -634,5 +634,5 @@ void __init sbi_init(void) __sbi_rfence = __sbi_rfence_v01; } - riscv_set_ipi_ops(&sbi_ipi_ops); + riscv_set_ipi_ops(&sbi_ipi_ops, false); } diff --git a/arch/riscv/kernel/smp.c b/arch/riscv/kernel/smp.c index ea028d9e0d24..9258e3eaa8c6 100644 --- a/arch/riscv/kernel/smp.c +++ b/arch/riscv/kernel/smp.c @@ -85,11 +85,19 @@ static void ipi_stop(void) wait_for_interrupt(); } +static bool ipi_for_rfence; static struct riscv_ipi_ops *ipi_ops; -void riscv_set_ipi_ops(struct riscv_ipi_ops *ops) +bool riscv_use_ipi_for_rfence(void) +{ + return ipi_for_rfence; +} +EXPORT_SYMBOL_GPL(riscv_use_ipi_for_rfence); + +void riscv_set_ipi_ops(struct riscv_ipi_ops *ops, bool use_for_rfence) { ipi_ops = ops; + ipi_for_rfence = use_for_rfence; } EXPORT_SYMBOL_GPL(riscv_set_ipi_ops); diff --git a/arch/riscv/mm/cacheflush.c b/arch/riscv/mm/cacheflush.c index 094118663285..0ffe7d560dc8 100644 --- a/arch/riscv/mm/cacheflush.c +++ b/arch/riscv/mm/cacheflush.c @@ -16,7 +16,7 @@ static void ipi_remote_fence_i(void *info) void flush_icache_all(void) { - if (IS_ENABLED(CONFIG_RISCV_SBI)) + if (!riscv_use_ipi_for_rfence()) sbi_remote_fence_i(NULL); else on_each_cpu(ipi_remote_fence_i, NULL, 1); diff --git a/drivers/clocksource/timer-clint.c b/drivers/clocksource/timer-clint.c index 6cfe2ab73eb0..fe018a2c008f 100644 --- a/drivers/clocksource/timer-clint.c +++ b/drivers/clocksource/timer-clint.c @@ -228,7 +228,7 @@ static int __init clint_timer_init_dt(struct device_node *np) goto fail_free_irq; } - riscv_set_ipi_ops(&clint_ipi_ops); + riscv_set_ipi_ops(&clint_ipi_ops, true); clint_clear_ipi(); return 0; From patchwork Thu Mar 11 16:47:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 12132135 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=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 652C3C433DB for ; Thu, 11 Mar 2021 16:48:11 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B979564FE2 for ; Thu, 11 Mar 2021 16:48:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B979564FE2 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=wN6D+o84jaa+H34cS9cCzKGTesP7NBowDngyVEOvI/I=; b=oGcwSSHEOC1x6QmPbixZRTrpS qg6r9f5cZ4fHiQkb3JVY6zRbVeM6EsC+TFp03J+SMRZqFKrXB+nYTgG26PBcdTxW9j1WG+NotMiEQ oCvD9u3GhcH7DavxJlI6CRMYjzyk10G/jIE5TnZDkV4CtWswVsbyPgFAYc2pI1a4QGN28XKfJV2tn e5GbtGzTYMoghzV3rLL6T0rDb0mX/b41Q64jlDgnsNdw8XBu1bXKE4u5aNIj1Nk57ciK88nY2dSpz CSfuFTRof6pogUdXjMyoGTtx3KlyX4zrzakjJQX6C0hpTX0H74fr5FGxQLDiXlM0Rk49urD580ark EAgyDZGzA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lKOTb-009bw8-Jw; Thu, 11 Mar 2021 16:47:55 +0000 Received: from esa3.hgst.iphmx.com ([216.71.153.141]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lKOTX-009buL-Pq for linux-riscv@lists.infradead.org; Thu, 11 Mar 2021 16:47:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1615481271; x=1647017271; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=jkbKSZvRwwjsXmYu1Ws9MweMMyO4gkhzwEKijSyT1hU=; b=SCTa6LEf8pzZy1hx/Tel7aAFGT1WF3Br/6tOEBcfN0oTTZZRQR++/mxC Gp6r+I+2aXSF5MUsgvBX6cjOXGQxeP2jat3W1HA9vHHXrOU3Z0OI2wNOH jWLE5Cf5Fn2yBmkNS5+61v04iz1jYHesgKMRKr1QV6gvVKMEUB2SdK8qM TDsXM1FySgmTEMxLI9A2eU3zXKfzVHAPf3Dn3iIGCAUqkCBOyyb41hnsv ZUSoced698YWhCwh4QmNAvE7s1239bA7FIBq7IaLvg+pYhn7FqagUAZF7 i+Sd++jtjIhURi/+oEGZyMh7LJ7y47y/2x89DCePeB7iG/n64s1Xw8+uY w==; IronPort-SDR: p9fueH5b0bRLujo/jyoq7JptPsoqq0ZEu+R6ly66z43JNo6bYli3TZTIXeyxZfYZ+ddE/XmEP5 l80j6Zgjbi0kET8TlsR0Np3Lrh1aybjpLdi8f8xmoJRE3nmJrHlvz7FwjZ2zGioCvAj2G1bgaB 2XnoUlVqzVXHS4buB9IO3MRgwfJGksjDOZ5rkd68hJnd6yFa7AEzvXxnE1wlPz4E4RERHTg6Xe t4/tA63nm0mmFwK07nv5i2LLLAR4FzAJ8Hoi9UfdFFiuzcJgpcSSsW+LY5EGOSaFTmzKFj6mG+ FcQ= X-IronPort-AV: E=Sophos;i="5.81,241,1610380800"; d="scan'208";a="166429050" Received: from mail-co1nam04lp2050.outbound.protection.outlook.com (HELO NAM04-CO1-obe.outbound.protection.outlook.com) ([104.47.45.50]) by ob1.hgst.iphmx.com with ESMTP; 12 Mar 2021 00:47:49 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LVhdYLHx8tox7wiq9Eg8NoOqoFBu62n5EmdK+GParE8duI0Ka/Chr5QQW695Qa/OgMnXLh5mulB4BbU5C5JsnnSlJKvB5Nx8mE/AwFwsWuR1o6cK0MjXv4LwG5NGMcWJD2bPQ3GbE21u+rT2o1YrZWZdlofASB4H+SAiVgrwh27QI3JsB2q7lEIlxrVrgM1fG/mWxG7Yf570DpC51Qmr2ST4Ze3yfRBjeqzo1iz17Oa5LG9yAR/LVATIA0kZ1ddCr22AUsLvDGfSqumh8eoOJWDHyYWUJw47UNODceJ+LrhsJWGEzUf0/tgcdQmRvOxUW+OORLkotksQvOd+NrqfJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0Jtqet2fuPqM7Ms6NUR+wXwwQts7PJjG2T9FblTTEjs=; b=jKPS8H5YiiKaVC9musGqN0XpuyT0u+vd9E+l2CjBceRHLFcVXPng7jkHvvtMQ4dE087CyHmRjOphz49ogVbmaMJntOjrb6Yo8TrgkwCCPx3CsLtr1VGrno/uK3xKxsXbUc802OL8l4+yKyctRniQwDOmkbejo07jt3eZsxSCkeXsXXpGEcIKy6Sk16a59uYR1Gshun0nZuvY943ljxLV9iQtfnDjWSoCZxdvCIq4Yk7CTnu3kw8nkVusnYYSz6/o818ZU/rTJTLDtfb7WJXTPQpQE6WsAfUwy+IdF10F6tYV5/DinA1u5dA8/WNwvF28QrLtzlD8Xb5qZYnIoshR4g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wdc.com; dmarc=pass action=none header.from=wdc.com; dkim=pass header.d=wdc.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector2-sharedspace-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0Jtqet2fuPqM7Ms6NUR+wXwwQts7PJjG2T9FblTTEjs=; b=qVOJaxGvMfqg2DvilyjvoBqz/XHrQHmdlW5Hh4E4nVw4mOkhqbOW63tHFSMlcmFchQFvmQ63VGpkuIsfOsqFl/fLqpvaR7FIiXT5Fvz3lcz3AjmzuA2q8N0/pWNniJshijOqafp46wyeYYG/7+QBkWLu/rypxszgoTWdXUpUSAo= Authentication-Results: dabbelt.com; dkim=none (message not signed) header.d=none;dabbelt.com; dmarc=none action=none header.from=wdc.com; Received: from DM6PR04MB6201.namprd04.prod.outlook.com (2603:10b6:5:127::32) by DM5PR04MB0218.namprd04.prod.outlook.com (2603:10b6:3:77::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3912.29; Thu, 11 Mar 2021 16:47:48 +0000 Received: from DM6PR04MB6201.namprd04.prod.outlook.com ([fe80::38c0:cc46:192b:1868]) by DM6PR04MB6201.namprd04.prod.outlook.com ([fe80::38c0:cc46:192b:1868%7]) with mapi id 15.20.3912.031; Thu, 11 Mar 2021 16:47:48 +0000 From: Anup Patel To: Palmer Dabbelt , Palmer Dabbelt , Paul Walmsley , Albert Ou , Daniel Lezcano , Thomas Gleixner Cc: Atish Patra , Alistair Francis , Anup Patel , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Anup Patel Subject: [RFC PATCH v1 2/3] RISC-V: Use IPIs for remote TLB flush when possible Date: Thu, 11 Mar 2021 22:17:11 +0530 Message-Id: <20210311164712.652608-3-anup.patel@wdc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210311164712.652608-1-anup.patel@wdc.com> References: <20210311164712.652608-1-anup.patel@wdc.com> X-Originating-IP: [171.61.72.64] X-ClientProxiedBy: MAXPR01CA0113.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:5d::31) To DM6PR04MB6201.namprd04.prod.outlook.com (2603:10b6:5:127::32) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from wdc.com (171.61.72.64) by MAXPR01CA0113.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:5d::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3912.17 via Frontend Transport; Thu, 11 Mar 2021 16:47:44 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 3dbce72d-4a45-4581-878d-08d8e4ad6726 X-MS-TrafficTypeDiagnostic: DM5PR04MB0218: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: WDCIPOUTBOUND: EOP-TRUE X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Fl390zB5XANdcx3DVCqVlOgS/jE41muVd0IJVEoa7Riqyy6cDfA0PWVRKuybYFQQ/WZYs02/e7rxGqIofZGORMXFtsGj2jzJRl8XJ3cL2JFy/yLtZVpyaMvcOjCIdffU/Q2tvTxwFB3SHXAl9IzdjiGj88kELXix78pal5MDa/qttZQMFFWvvUcX2au/K2HWRnx1cPzNmWsyQe25UwbRDRjUyu4B85klOVlkIAtdGK+xNzT/MsbIeNOTzytPlfi/Q8ViWFGkF13Rx1o3Ji6jtAWtzTZV5CDs3foKMMX32yQYAM7KiQbAKNIeHogbPSJL8MLuvlF5P0vQifLN+TpMX1WXy9fQNJtmbIKPfbTdK+pTOrjq5O8fXcuBOd+1Q8ijSSOoREgKVOiREQQgm6prFxh39ODTf3zTqTkFiB2P62gle6nhuMSUn4KnpAU/P6fG18U6YQRKM97ZTtdWR2Nd6LIDpSyYqXr77t57a+XFwlmQdLAwhoNqj2O99DuH3BwCexVV255Dn5KY9d7x1Bxa7g== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR04MB6201.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(366004)(396003)(346002)(376002)(136003)(316002)(66476007)(66946007)(44832011)(36756003)(55016002)(8936002)(6666004)(110136005)(66556008)(16526019)(8886007)(2906002)(54906003)(478600001)(5660300002)(86362001)(26005)(1076003)(52116002)(7696005)(8676002)(956004)(2616005)(83380400001)(4326008)(186003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: FL3qmAYAWaYFpa8SW8w1Szfk8QIkat6milWXTze4aO+mpWYWz2OuIJskLXMLRy7D5vF8EKc+j5Rz3dIJeyK7o34RedBTOcObw+KZgGAEKPj2anIICkjhCWAm5yb5e1U4Mb99JzWvRYsMGmMLtj9LIzpe07gPsXvGit1/Fpl+D0DcoD8UKuKlA/NprlLljPcYvs6MstsnIY2xTNh7t94od0kAtZrn7mT209aNSJBJtQWRmsgrnvR6PuGfrA0aFATFHbiMlv7+CFtxIEn9TO6/tzZoR4YIMtQB0KbIi8NE4JzBZLNJabT33yLt81J6NeZ8Pa3mZzfqJ1Gq/c7Fp4QiTBMR4ZLCeUYt5xefHjhfTwYBP5Scp+V2u47RncDYEXGmS+EZF9QOzmgTXsK039Df7efVCQZvZaBpVvwSyTWQLD9zfF6FBqgDiDamY/TLUJs/yY5RBEuSHlqdbGaq+HgW5g15eTN27h/1TK51QU0eAfjVeAtKwCA/sr0WlpCMmDv1jJzaeLWeP0Ey/2WlpHkyLJCMqn2QArp781+U19usUyKOGkaOE+OqAyOZZw0TlgF3ad7qJE3ypULmwQOjzR3VjOO5jpJPdx3RX8MCiitbvNcplgjekuGJxycpAdNUPgYoKRF58KouDy6ONtVDS8P1EegqJ9BIOaWfD8m0RBmEBP1IhKEh3Gc3B0Scfqm55vuCHEsPRd9/rgFsiXkcTIYgwdPmwpwm2jtcBb4x4IIh7eaWWEwK4jFXwJxMlGcUSuv/rHnm4N00RxPEd3J5C+P0p/PB0yc1sfpS4gzNqfMJ+6V+XEQpFWeJcQE4gxunNUZVdd4Yf3MAyRBMZTu2q0BlCpy26FMs0bvYJMerIim0Dl1GVajeunlnHBe1DFL7scmANQ0aM094ukzJpnw/oezyaoLWYMiyOcynWxp+xKLzzbvMniDb/D6OwXFhOlOiW63c/rY0qYMzolIWT+paA4UBm8fQvuojB4rHrCilZOdjOB2XkXWZuqbl3PnbPS6wfjf0Rs0Zm9VpL0pgYE31IoSaBbxTpirsi2xyrKOfW2cCcGy9puRFtF1ThFc/S2/GaCMwmGnLTmviXuo3PHXzwtvoi1yuBvJ6emAJhq9wHKnd0ukv2ZmBin+7/w7s5PY65MygcZPjhzcQ+0sWHXC4G4H9sovML8uBUz1JSajIWwBqH3oxThGDLMSgKs7DLPVzUmW5duPF2cnI848A3QfQ8SsuWHkuL0iCstxodTxuUnDHQJlY74soaXw6ODlm32zCq1LFWqkKxMa5+dE5BwZoEFxSEAjUMbe9A59dlt0JyU09xga+CvK9YBV6xJjJ8L4dRJov X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3dbce72d-4a45-4581-878d-08d8e4ad6726 X-MS-Exchange-CrossTenant-AuthSource: DM6PR04MB6201.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2021 16:47:48.5907 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: O5LXGUckZhTBRD+5IM+aYRbWW/UIBM2nwoXn5cVAE2U7B77fvgrlq8dKbtLHy+4xmKoGru2KTf9eq/7HRsO1gw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR04MB0218 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210311_164752_284751_7BFC81CB X-CRM114-Status: GOOD ( 19.92 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org If IPI calls are injected using SBI IPI calls then remote TLB flush using SBI RFENCE calls is much faster because using IPIs for remote TLB flush would still endup as SBI IPI calls with extra processing on kernel side. It is now possible to have specialized hardware (such as RISC-V AIA) which allows S-mode software to directly inject IPIs without any assistance from M-mode runtime firmware. This patch extends remote TLB flush functions to use IPIs whenever underlying IPI operations are suitable for remote FENCEs. Signed-off-by: Anup Patel --- arch/riscv/mm/tlbflush.c | 62 +++++++++++++++++++++++++++++++--------- 1 file changed, 48 insertions(+), 14 deletions(-) diff --git a/arch/riscv/mm/tlbflush.c b/arch/riscv/mm/tlbflush.c index 720b443c4528..009c56fa102d 100644 --- a/arch/riscv/mm/tlbflush.c +++ b/arch/riscv/mm/tlbflush.c @@ -1,39 +1,73 @@ // SPDX-License-Identifier: GPL-2.0 +/* + * TLB flush implementation. + * + * Copyright (c) 2021 Western Digital Corporation or its affiliates. + */ #include #include #include #include +static void ipi_flush_tlb_all(void *info) +{ + local_flush_tlb_all(); +} + void flush_tlb_all(void) { - sbi_remote_sfence_vma(NULL, 0, -1); + if (!riscv_use_ipi_for_rfence()) + sbi_remote_sfence_vma(NULL, 0, -1); + else + on_each_cpu(ipi_flush_tlb_all, NULL, 1); +} + +struct flush_range_data { + unsigned long start; + unsigned long size; +}; + +static void ipi_flush_range(void *info) +{ + struct flush_range_data *data = info; + + /* local cpu is the only cpu present in cpumask */ + if (data->size <= PAGE_SIZE) + local_flush_tlb_page(data->start); + else + local_flush_tlb_all(); } /* - * This function must not be called with cmask being null. + * This function must not be called with NULL cpumask. * Kernel may panic if cmask is NULL. */ -static void __sbi_tlb_flush_range(struct cpumask *cmask, unsigned long start, - unsigned long size) +static void flush_range(struct cpumask *cmask, unsigned long start, + unsigned long size) { + struct flush_range_data info; struct cpumask hmask; unsigned int cpuid; if (cpumask_empty(cmask)) return; + info.start = start; + info.size = size; + cpuid = get_cpu(); if (cpumask_any_but(cmask, cpuid) >= nr_cpu_ids) { - /* local cpu is the only cpu present in cpumask */ - if (size <= PAGE_SIZE) - local_flush_tlb_page(start); - else - local_flush_tlb_all(); + ipi_flush_range(&info); } else { - riscv_cpuid_to_hartid_mask(cmask, &hmask); - sbi_remote_sfence_vma(cpumask_bits(&hmask), start, size); + if (!riscv_use_ipi_for_rfence()) { + riscv_cpuid_to_hartid_mask(cmask, &hmask); + sbi_remote_sfence_vma(cpumask_bits(&hmask), + start, size); + } else { + on_each_cpu_mask(cmask, ipi_flush_range, &info, 1); + } } put_cpu(); @@ -41,16 +75,16 @@ static void __sbi_tlb_flush_range(struct cpumask *cmask, unsigned long start, void flush_tlb_mm(struct mm_struct *mm) { - __sbi_tlb_flush_range(mm_cpumask(mm), 0, -1); + flush_range(mm_cpumask(mm), 0, -1); } void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr) { - __sbi_tlb_flush_range(mm_cpumask(vma->vm_mm), addr, PAGE_SIZE); + flush_range(mm_cpumask(vma->vm_mm), addr, PAGE_SIZE); } void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end) { - __sbi_tlb_flush_range(mm_cpumask(vma->vm_mm), start, end - start); + flush_range(mm_cpumask(vma->vm_mm), start, end - start); } From patchwork Thu Mar 11 16:47:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 12132137 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=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 A8074C43381 for ; Thu, 11 Mar 2021 16:48:15 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0F6D564FF5 for ; Thu, 11 Mar 2021 16:48:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0F6D564FF5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=wdc.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=a0JOpJ+Pk1kcv9iz2Uwin4q/nRiRdIb31+dBZAFmKWY=; b=WOvSVodaJwCKpjCb2gXSygYbu FUtGmDXLZsAargT0LeCk0x+P6OT+uEoK2OZ4wpVFimNJcahqYFc/myQ6ngXu5OW0XBkxlsc1iYS2C pnzb81xmvL7PZXFM4OA4L7JuD05jtIshjzgtJPYcAuFhi99M5KVHCNWHPg87DypwJsXeCl07YfFh2 4RrZTbcrwd2qkkNY5zcTD5kHbJdIy04WpIS+qCJgqcm66rSEAqH/tFxEAeD+QfQMuDrx8wwCBBZBB jZzgtQmXneeZhqBkRIJ5smlB8JdiSBQeKLPZaB/dQz3Wjg/Tq7gHTHHh6VZi6LqgZ4mpToeKLHFe6 +LvIFFXZg==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lKOTh-009bxY-PI; Thu, 11 Mar 2021 16:48:01 +0000 Received: from esa6.hgst.iphmx.com ([216.71.154.45]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lKOTc-009bw9-Gg for linux-riscv@lists.infradead.org; Thu, 11 Mar 2021 16:47:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1615481277; x=1647017277; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=p49YBvRt77kHU5iHzZps3D5w/Ox7oN4yAw2RiDzYMb0=; b=JgHj5g3tb1hNnRjX1GimgFd5H5LixdpZdiCzjsgWwg+1n9kN6f2COJ42 3W5bDbAVAihaVI15TVo2Nb8gymQeIKHxOOrdHnaZ/0JYKIEekpotLpeTw sujjeJjvnorPxJzd+A7UTzivt5yhO/E/jheBQNZz9o85Go4M0zMx1kpCb 7KODQplXq6a6wk/bM2p1OCGG4uCJEb/P7o1lAKnR5UJEemc6QD6cRT+3R MgerBFtBRpLD3ahxY1qUtpqctzUDm5dOLzQURK1eS7zC07TbkDjyKxuys GKyKeVIK2hyj2CW4SGC9Qfl2gQmooB/oGUFGJlhoz12kWtzLuAaDsfdB4 A==; IronPort-SDR: wW4BhPcCTCzCdjX6jnQeSXqhGr5EF5/wRY6CXj1ogy1jRO0+4rfk4x3qStMRLavjkmA0ET8wNx Y/xGfBMJ2k/y9h2eOzhjGVhDPFfpgG0k5ua0eTlyIeZYqm+b47ZevcWC84pWMYTKAs5s3Da7sx jQMYaGkLtMPhzc8KaxnvYemTHSD19vQizFjcUY5wjsOQri5Vgxt29co7zMAWepI5sF9MWnvOOE orfRM6Dua4f3IICfbvYVd5pEey85CSW0ZajVW0PbOaGbI3ZdBEAhIUMEj5KRfMtLBo819MdBVe Kpg= X-IronPort-AV: E=Sophos;i="5.81,241,1610380800"; d="scan'208";a="163089387" Received: from mail-bn7nam10lp2109.outbound.protection.outlook.com (HELO NAM10-BN7-obe.outbound.protection.outlook.com) ([104.47.70.109]) by ob1.hgst.iphmx.com with ESMTP; 12 Mar 2021 00:47:54 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ay4ERxtXFK/KM27k7sLzCjeV4U+X2rld8SHXjSIBMk4UypHqLVLqHzNU2mlh4TsObl0xxoFRLchw1QP/qfYcrM6uuH1LbLD4DGfu5EWQRDibGeVuYHNX11FO1omBHBJa+Bptao8zM3tIkhYucPNjyzCd2qUr+9IOexoCa2s5Fup0lpyMMLkCJ0iEzq42zeDOyG7VOnpWs8vJgk9xAXZKdAaRukMhcikLAAM6SktHkm15qqcU1CBMdd4/BbI1GyLxbldjGN8Nyabos7gAO0xzCjD/Efurnax9CSQBYzBrKERr+brNcE0wlBBk3hO5yH3qNzuIxDDwN44UiPjvebupqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+6BEj7b9CYeUOeXqSSGwypzpIN4o95ibgyatJHBiJ9c=; b=Dtdx+HU/ZHDD6V5vROqtJ8aNSaXX0s6hPrworG8AX6CkuWuH6ZvKw+UL+SRQ0b2N6nv/yIqhpSaJdtFucqtsYPUUzuGSSIn0jPBxvgBagSBFg9w5Spus+Wgw/QezgyKNwcjQSoGSd4dU3RbxWxN/9aj1WM8hgykQtJBgUdoKay0iVdRi+CICuSaAsNl1tqlNH6EcEXNHBOwuQlYaAgeDtkMkwm6LF3x1M4yrTeqd/7ZHSMMhJECVvDEgj1wECIwfRswfpZP2HncUOSikUn1Lgc/LBEIJ1oxoFPXpXbE8aTEjHKeZLHEMalJWBbIayj1SF/A1DYJ/8KQgG9JHl2aN+A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wdc.com; dmarc=pass action=none header.from=wdc.com; dkim=pass header.d=wdc.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector2-sharedspace-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+6BEj7b9CYeUOeXqSSGwypzpIN4o95ibgyatJHBiJ9c=; b=waFX9Sw0PBrUcLesYbwIUfe5nyUusmZsOD8qVVERQeOSw158y1tKz9KsacrYMzC4t+UiZhJTfsnj9sjceKNgMNqAp5OYkL3kaHIQhLcN33y8SPd3FmxMEfkFk6u3Qjc6EtDTuj2wjkJK2mPpjJVu6xVo1XYhAsDNBajrNbLkpRY= Authentication-Results: dabbelt.com; dkim=none (message not signed) header.d=none;dabbelt.com; dmarc=none action=none header.from=wdc.com; Received: from DM6PR04MB6201.namprd04.prod.outlook.com (2603:10b6:5:127::32) by DM5PR04MB0218.namprd04.prod.outlook.com (2603:10b6:3:77::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3912.29; Thu, 11 Mar 2021 16:47:52 +0000 Received: from DM6PR04MB6201.namprd04.prod.outlook.com ([fe80::38c0:cc46:192b:1868]) by DM6PR04MB6201.namprd04.prod.outlook.com ([fe80::38c0:cc46:192b:1868%7]) with mapi id 15.20.3912.031; Thu, 11 Mar 2021 16:47:52 +0000 From: Anup Patel To: Palmer Dabbelt , Palmer Dabbelt , Paul Walmsley , Albert Ou , Daniel Lezcano , Thomas Gleixner Cc: Atish Patra , Alistair Francis , Anup Patel , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Anup Patel Subject: [RFC PATCH v1 3/3] RISC-V: Add handle_IPI_noregs() for irqchip drivers Date: Thu, 11 Mar 2021 22:17:12 +0530 Message-Id: <20210311164712.652608-4-anup.patel@wdc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210311164712.652608-1-anup.patel@wdc.com> References: <20210311164712.652608-1-anup.patel@wdc.com> X-Originating-IP: [171.61.72.64] X-ClientProxiedBy: MAXPR01CA0113.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:5d::31) To DM6PR04MB6201.namprd04.prod.outlook.com (2603:10b6:5:127::32) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from wdc.com (171.61.72.64) by MAXPR01CA0113.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:5d::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3912.17 via Frontend Transport; Thu, 11 Mar 2021 16:47:49 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 2207b080-c5fb-4cfe-cd92-08d8e4ad69a1 X-MS-TrafficTypeDiagnostic: DM5PR04MB0218: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: WDCIPOUTBOUND: EOP-TRUE X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5dBX0UqOJIykUh6gG4rj3Uv9FK/JU5+vdxhkvvrrcTO+f14RaRcVfUBXhApFzagBkCEQ+3CCf6deGDdPFbsif9CK9Ua8TE22X3NB/qyldDxTO8ieKJAZyJZYUKv9/L47a7UK1sqwR1ZwSumJGv3jxYNpoMBtBhZ1wlJ4Bn9X+Wbec7YhOlXtQplAGjhthX8PcpaTWGihexe+ph6D16rNMaDyH1Yz8+NKiFgMTuCDYm3RfLpKe9IhIx4WRdavnMSpF/nFoa2PjlBV5iAUJkXZfjb1dLq6UHE0WohgUy19IHNytZYAMPc0G9SLMphrs7WGrPSH1ntnN0VJnBa1F0OKlxnympmBj6GkU5nF/6K11TQiSU8IH6Obg42OR4ULbMEP/GyRafW+pEYP+WyVQPRrxq7nL6dpC3uUXS1mkMwOY61BxEYoKDXVT1yDuMq9VC/wt9QsvpZNxjoFRZzsntE5krphcSmLxBxu3KQVHMH4fMIuB2DEh5/o/KhOG0XkAUF6hYtAtaREX7RfEA1eR9kaRw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR04MB6201.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(366004)(396003)(346002)(376002)(136003)(316002)(66476007)(66946007)(44832011)(36756003)(55016002)(8936002)(6666004)(110136005)(66556008)(16526019)(8886007)(2906002)(54906003)(478600001)(5660300002)(86362001)(26005)(1076003)(52116002)(7696005)(8676002)(956004)(2616005)(83380400001)(4326008)(186003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: dqM08nYbC38V5e3o4ZA6SPM2R9TKlKcHLJCQZX/z1ESUprCsjaVE4rLYxB7fhkOh1qxI7+sjqAvgDm0W/gD8FDA43LWq3wjrd/cozIYLNi6wmIOQQaVK9MndDG5ypFMW1KIGeLi2Yd+jeAF/AgjMDV0RmRQAF8x0wQKfdDIrZdsv24itzYOqoxR/05PSSRWgINmV9nm8YzNDsNmQyPLl7ts1I1J3qz23GZFBzjsB1TNUDirkVMgdJVrx/uvqGvzKDX3YTLUCvToBgZqv/rX4VJryjkjkh14qJnJM2oesotytQptF2MdriEZjxP/hbOwNL23OzpoPxoA2kDzqoKAvjGwbF6fndT+6hmiRxFt44WJmONA7wt1HdKiNlzy+BPFxQ8Ym9zpx6nhSPQs6ku2Hxt3bmnQusn3EGG91QTHbTZoYkLa36IRctDl+Vh0jxhzoVzqtWni4Mfp41bogHUpkQeZVLxv2CAH7UM6cpT8aJDbdpIHTWA6PL+iH44/YW9oaGMkd+rvbBjHX7T3AmQLft4gReMKOPHa4ugURS3OqTEU2BLysjRvAfQQFQxXJObfkmc+2uV0pPR4YSvIvar1Bcm6eiYp7G1BIXA5uyLGiWjxLdclpgOhTu5TWxCI9p5zWzwfKY7IN5Pn28E/rCoTiBS7/Xfdpv+eIJsdSacHpsy6wpDOxzzEdi6y8Hed8FufYjGQ8RnBQEh9yPBrCwhXXJueDaqyecTZZTdYlFSHcHDyQ1JFJXxhbSar6AOXVmRJRPRE/i30F+VDRGE80dSH/ypYBX7X0LfFGCDeavBYVRq9Yjg8rpvfYQFf4pd4v0hKxZOFOKXw2/0dN6u6WzX68fUem1lZr6DeuPoi2A30DJZ87O8SxLWwwwj2y7UH15/QnQjYLJdCHXy17UxMZqOEoMkwqTH94e39WwgoEAOwR5RmktNZN5mWsHvzXmjLMyqEtdPZz8p3E5MdNTXR4fG398+MFBL9J+doUjK2huu9lIGa8stfddXhwrC/L0aqlxVgnvCCiAuGtrsWtRyFx//1/cOsizculOt4xMFAXl9sExnBBzCxT3RZE93/7xaGL4sZk7WzBRH8wlCu6cmDfKXyCHIfEads3SMtJ33IuYZMjncISvibtmm66OIsTsZmgkKJwQqG9wXnWkDS5hUDMw3sNDooTb+zGNHWIJjsVzUau33JftwTO/mfTpXwghU6J7JpGwEI8HRwVRGqhuOXBUz6CwGjTIw5vHKQPvyTtjYxqBZJJIMnnW0KNk3vkVlP6wjOzef8TidUG7Ub22uit7po6o3VvxqOOPhpTyDu/xwXlZx1lRQ8LLvsEAC3oaYaxvwQc X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2207b080-c5fb-4cfe-cd92-08d8e4ad69a1 X-MS-Exchange-CrossTenant-AuthSource: DM6PR04MB6201.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2021 16:47:52.8000 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: bkVined56BOfL06/7JsMgUHiU1+v5WlJwHbO1G05OAckF+lqBpZM+Qe/gN45pbSaIhN5rffC7TaD6g+ivc2eyQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR04MB0218 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210311_164756_969322_D13FFBD2 X-CRM114-Status: GOOD ( 18.14 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org We will be having IPI handled through nested interrupt controllers (such as AIA IMSIC). The irqchip driver of such nested interrupt controller will not do irq_enter() and save pt_regs because this would have been already done by the irqchip driver of the parent interrupt controller. This patch adds handle_IPI_noregs() for nested irqchip drivers. Signed-off-by: Anup Patel --- arch/riscv/include/asm/smp.h | 6 ++++++ arch/riscv/kernel/smp.c | 20 ++++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/arch/riscv/include/asm/smp.h b/arch/riscv/include/asm/smp.h index 82c23e5f22f6..b31d3ec2f71b 100644 --- a/arch/riscv/include/asm/smp.h +++ b/arch/riscv/include/asm/smp.h @@ -33,6 +33,12 @@ void show_ipi_stats(struct seq_file *p, int prec); /* SMP initialization hook for setup_arch */ void __init setup_smp(void); +/* + * Called from C code, this handles an IPI assuming irq_enter() and + * pt_regs already saved by caller. + */ +void handle_IPI_noregs(void); + /* Called from C code, this handles an IPI. */ void handle_IPI(struct pt_regs *regs); diff --git a/arch/riscv/kernel/smp.c b/arch/riscv/kernel/smp.c index 9258e3eaa8c6..19e102e2d5e6 100644 --- a/arch/riscv/kernel/smp.c +++ b/arch/riscv/kernel/smp.c @@ -144,14 +144,11 @@ void arch_irq_work_raise(void) } #endif -void handle_IPI(struct pt_regs *regs) +void handle_IPI_noregs(void) { - struct pt_regs *old_regs = set_irq_regs(regs); unsigned long *pending_ipis = &ipi_data[smp_processor_id()].bits; unsigned long *stats = ipi_data[smp_processor_id()].stats; - irq_enter(); - riscv_clear_ipi(); while (true) { @@ -162,7 +159,7 @@ void handle_IPI(struct pt_regs *regs) ops = xchg(pending_ipis, 0); if (ops == 0) - goto done; + break; if (ops & (1 << IPI_RESCHEDULE)) { stats[IPI_RESCHEDULE]++; @@ -189,9 +186,20 @@ void handle_IPI(struct pt_regs *regs) /* Order data access and bit testing. */ mb(); } +} + +void handle_IPI(struct pt_regs *regs) +{ + struct pt_regs *old_regs = set_irq_regs(regs); + + irq_enter(); + + handle_IPI_noregs(); + + riscv_clear_ipi(); -done: irq_exit(); + set_irq_regs(old_regs); }