From patchwork Thu Sep 30 13:17:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pingfan Liu X-Patchwork-Id: 12528301 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2BB41C433EF for ; Thu, 30 Sep 2021 13:24:09 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 003B261139 for ; Thu, 30 Sep 2021 13:24:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 003B261139 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; 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=PihnHHECzFan0piSXBKTxF2FvJc7bEOOchZKXbt/VOw=; b=Pshpqik0XkWje3 u2zpUj8ylNwOXUS12svgtF1rUFJtu+1jHKyqzOUABlBhEtsbKJ4G6nbEQrfK2aqoFaAHP5jQlCYp9 5NOWL4XVUxK1oneKLowOULz9iY3HCq9fDAumZhyAsLi6KfedlNpafhCMaut7pqSUCHIHpDHJu/F2F Sk8+ZMoQDSdMk+vvNk4JsUhYO+9+Nfc58ugSBdNCv4XZfteBYiKhUMVxtSLewEGxL5eKrR4yyz9OX hBokbtvfdSR5/5EZX9AmIv6LcGeLlx0PIN5XRqysZuzcuOgkRhxYP7bv9jzvTLpe1UJtFropfUvEt 57btPoTRAPtTBTCmJOvA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVw0n-00ER98-Ca; Thu, 30 Sep 2021 13:22:10 +0000 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mVvwd-00EPfh-Fc for linux-arm-kernel@lists.infradead.org; Thu, 30 Sep 2021 13:17:52 +0000 Received: by mail-pf1-x42f.google.com with SMTP id h1so864437pfv.12 for ; Thu, 30 Sep 2021 06:17:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iq4X0g0bNv3iySMgE6XWInM1VJ3s/S3gRmcd7OQw2M0=; b=p/ixfUPW2sb4xybJnAWeBmWUyUUMy2u1gWtZsfWva68Uc1TRNXzFuG0cGRMduhsYVw MkpgnSBTD13whXV0B6kA4SAx3E+kAyGPyq2I7DQBD4i5MNBVMZSGXg6V/nb1BmKwReAa lkiOciPmGdDLSbe+AqLQpNbhXGHLGy32TltxGQZjPT0drVXYjrd8ba4jUHJk+70Hcffg CDusJp+uBXK71w2ziNCNaKMJKFbTZSnKoco0PDc6JbviYhsV1wiFEo6Qaul5NnW6Yl27 DmY7arAtnTxHrOvuDQ9Xj3cM2+4pzNGnoAZDlBoGD4bewDbpp1hjBZEI1lk77CDgd+VQ gvTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iq4X0g0bNv3iySMgE6XWInM1VJ3s/S3gRmcd7OQw2M0=; b=RG0kBn1Emak6TPOn0Zcm/pgRJHWUemx85XJdjZ69Bkun2N9v3NJFjoDeCxHkQa/Q83 o3NV8B2YOYtWs30gFVrEtqc1Cd6Xd/Id5kS9vDinJZDHlEb2dC0B6YFh7tAOnEAjgHDa CZSduKcBv3oJDcmBuz8efdXmV7NXDPlPL5C8f62oF2TRdW1wIljmR4wMsL2r5Lm+Zb5q sDDdlWki1IXJEPkUQztrqUpGI6TyJ9YvB0P9TrxM4+MxESKgdsqZgAgwUWOKmFJT7XP/ K3958yItWVLRRGbh4eRlqLUD1HzqhBLjSzsH8scmHDsDnN/3ulO2B1ePvR+cr22+KV7k 7R4g== X-Gm-Message-State: AOAM5313CO1XCIIOPBUjG9oLdC67WjxaF10404cVw2CCnWscj5Y3NHUZ U15rlN+AOWsclr/vucEkDoFcYVxGJQ== X-Google-Smtp-Source: ABdhPJx+5fIXNU6NKWcbhaG2hsXLhuIGjjwcxQmCR2ctOpGFWoUy907StHbtq8LaCDzRe93yxFAhbQ== X-Received: by 2002:a05:6a00:cd4:b0:44b:b523:4d7 with SMTP id b20-20020a056a000cd400b0044bb52304d7mr4320025pfv.72.1633007870535; Thu, 30 Sep 2021 06:17:50 -0700 (PDT) Received: from piliu.users.ipa.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id q3sm3083167pgf.18.2021.09.30.06.17.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Sep 2021 06:17:50 -0700 (PDT) From: Pingfan Liu To: linux-arm-kernel@lists.infradead.org Cc: Pingfan Liu , "Paul E. McKenney" , Catalin Marinas , Will Deacon , Mark Rutland , Marc Zyngier , Joey Gouly , Sami Tolvanen , Julien Thierry , Thomas Gleixner , Yuichi Ito , linux-kernel@vger.kernel.org Subject: [PATCHv3 3/3] arm64/entry-common: supplement irq accounting Date: Thu, 30 Sep 2021 21:17:08 +0800 Message-Id: <20210930131708.35328-4-kernelfans@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210930131708.35328-1-kernelfans@gmail.com> References: <20210930131708.35328-1-kernelfans@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210930_061751_598218_8B6AC826 X-CRM114-Status: GOOD ( 13.20 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org At present, the irq entry/exit accounting, which is performed by handle_domain_irq(), overlaps with arm64 exception entry code somehow. By supplementing irq accounting on arm64 exception entry code, the accounting in handle_domain_irq() can be dropped totally by selecting the macro HAVE_ARCH_IRQENTRY. Signed-off-by: Pingfan Liu Cc: "Paul E. McKenney" Cc: Catalin Marinas Cc: Will Deacon Cc: Mark Rutland Cc: Marc Zyngier Cc: Joey Gouly Cc: Sami Tolvanen Cc: Julien Thierry Cc: Thomas Gleixner Cc: Yuichi Ito Cc: linux-kernel@vger.kernel.org To: linux-arm-kernel@lists.infradead.org Reviewed-by: Mark Rutland Reviewed-by: Marc Zyngier --- arch/arm64/Kconfig | 1 + arch/arm64/kernel/entry-common.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 5c7ae4c3954b..d29bae38a951 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -98,6 +98,7 @@ config ARM64 select ARCH_HAS_UBSAN_SANITIZE_ALL select ARM_AMBA select ARM_ARCH_TIMER + select HAVE_ARCH_IRQENTRY select ARM_GIC select AUDIT_ARCH_COMPAT_GENERIC select ARM_GIC_V2M if PCI diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c index 5f1473319fb0..6d4dc3b3799f 100644 --- a/arch/arm64/kernel/entry-common.c +++ b/arch/arm64/kernel/entry-common.c @@ -428,7 +428,9 @@ static __always_inline void __el1_interrupt(struct pt_regs *regs, void (*handler)(struct pt_regs *)) { enter_from_kernel_mode(regs); + irq_enter_rcu(); do_interrupt_handler(regs, handler); + irq_exit_rcu(); /* * Note: thread_info::preempt_count includes both thread_info::count * and thread_info::need_resched, and is not equivalent to @@ -667,7 +669,9 @@ static void noinstr el0_interrupt(struct pt_regs *regs, if (regs->pc & BIT(55)) arm64_apply_bp_hardening(); + irq_enter_rcu(); do_interrupt_handler(regs, handler); + irq_exit_rcu(); exit_to_user_mode(regs); }