Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp1485259pxb; Fri, 1 Oct 2021 11:37:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwa00IqOvsskRWJtsNdpTsSgk0LRbVmyd66TwmIOKfQ3vlBNxgMvqY93MMPsXM4YZkaN4gz X-Received: by 2002:a17:90a:d58f:: with SMTP id v15mr14662331pju.28.1633113460450; Fri, 01 Oct 2021 11:37:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633113460; cv=none; d=google.com; s=arc-20160816; b=lw84u4W0jfjwlvNi3UUosXHG5feoQvqREs1W7AkqSrng3lKX8rEWAJ+hd7kZVEIyVK pC+/ahwNmOH+ap530OrkJGBtShwZTsQapywIXAQ9VYMk7Pq6ezuShBSLPwzwWSdKyJDY XFGrrp353AvLYNwMgR2QdCCYDhepNr+DSoblt+cPydvzekNNlRtRYfrq9NRD+n3drxDX vBezqbYHmSz/nvzNmsJ/nUD7+qm/Jj61JhfGFDZx+i4GWMF5FLxpYZjXMDdIfu7NZPXX +OIONx1nk4d5juf0BBOFbctEetqFlDjf1w1tsSCqbULaYzVBx9effQiIDBNBxNZABNwT JCdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=1cWLoh4CcvhLIKXy9j6hWHn1puHnoZvSz+6V1tIrhSk=; b=xYI0G0YwDdw86Llixt40Y+IFMMGGD84cvam8VMIettZRU2gdCImX7uDkF+kcwMGjFF 7BJkmQd5wgjUIWvfJmIEp940emr11sOHyJVN3VwP/870B5gZ2KBVpmjIRtcAzQemEIsg 5viMGtNIHN+UBeaBWODae7ybtB3tj9og83lgimYLFkrmCd+W3ReJfDT51fTn2a7FBuHd KDqb6n0czsu7e7BxsO9G0jFSlTmQ+KgbZEigizEP0Bqw3bW3PfR3ubo07hv84UbcwGCy OqJJbau91ZyIU5cTS3NTta4E0KbO5wnf+WxU4RnIp1k0GraiSA5dOyasZt0uGq3W530m NqCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=jGBO1kPi; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a13si8064021pld.131.2021.10.01.11.37.26; Fri, 01 Oct 2021 11:37:40 -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=@gmail.com header.s=20210112 header.b=jGBO1kPi; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354605AbhJAOqL (ORCPT + 99 others); Fri, 1 Oct 2021 10:46:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57370 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231679AbhJAOqK (ORCPT ); Fri, 1 Oct 2021 10:46:10 -0400 Received: from mail-pg1-x52f.google.com (mail-pg1-x52f.google.com [IPv6:2607:f8b0:4864:20::52f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C46B0C061775 for ; Fri, 1 Oct 2021 07:44:26 -0700 (PDT) Received: by mail-pg1-x52f.google.com with SMTP id h3so9613527pgb.7 for ; Fri, 01 Oct 2021 07:44:26 -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=1cWLoh4CcvhLIKXy9j6hWHn1puHnoZvSz+6V1tIrhSk=; b=jGBO1kPiEkCfAudaL3etNmrp3gjNL3qsBweVkIofU89tW18TzvoiSUAiaPWarJRLMz A6cPqTQsUn7k4Al4RQvAf7rdf0wQoAw0W8XzUCIr0FY6+/I8ci3/hhlTApjP1dM4h9na RdsUYiG3ZBFIFSEuPVow7TkymiAZdl0pLgUgWPGQIPtWCOB7mP+21mMhU9lQBpYtvvMX tonSYx3WC3gegNhxuAdreIST1iNAem+eu/kjJeM31Vifk1hqd1bjCsdij8bAQbOUlicr wSlwMPx2Z6ys2Afi/uQTq/Nw9orxskCqcur+yulxwiUmXh1OOGGuO8R9oimaVal8bzB1 4Kdg== 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=1cWLoh4CcvhLIKXy9j6hWHn1puHnoZvSz+6V1tIrhSk=; b=muZ5brHfNpd/3+UnRT2Do1qADVXrpeNQwNGweznJPi/ZuiQfQhvNLaCxU2UfuAJIWr R5QdAKW3r6KjSMMVOmNfYzs/3tJZ3KFxNlNKyW6IC6cToTPbB2plByXJcVB5VhZS+gd2 JTxdjDCQ7EEUxRze3froOzEy6il0kTLxcqedmhVGy4jpEBXr6qQ37HicwFyOlHdKm0pq QUswkxFr0csOm1YJghyc/CfAatr8FR+gN3ZiCcDruVWqpEaDdEq7dun/4mZzbiHn6Fn/ +izVN2DXd6pKfRt9sJUUDBBtrhApXgx2K1QFZS+CJx2YjiTkdMpP+4iWEuxrs+5zebrl rz2A== X-Gm-Message-State: AOAM531M+D1rsysbAsJN+Wfb9ATv5E6B8HhODg9riUnGFYw6YmVyFjJf Y1nKTEC8Iw6RE/DywvUi8w== X-Received: by 2002:a63:9911:: with SMTP id d17mr10076864pge.111.1633099466389; Fri, 01 Oct 2021 07:44:26 -0700 (PDT) Received: from piliu.users.ipa.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id z12sm6766203pge.16.2021.10.01.07.44.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Oct 2021 07:44:26 -0700 (PDT) From: Pingfan Liu To: linux-arm-kernel@lists.infradead.org Cc: Pingfan Liu , Mark Rutland , "Paul E. McKenney" , Catalin Marinas , Will Deacon , Marc Zyngier , Joey Gouly , Sami Tolvanen , Julien Thierry , Thomas Gleixner , Yuichi Ito , linux-kernel@vger.kernel.org Subject: [PATCHv4 1/3] kernel/irq: make irq_{enter,exit}() in handle_domain_irq() arch optional Date: Fri, 1 Oct 2021 22:44:04 +0800 Message-Id: <20211001144406.7719-2-kernelfans@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211001144406.7719-1-kernelfans@gmail.com> References: <20211001144406.7719-1-kernelfans@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When an IRQ is taken, some accounting needs to be performed to enter and exit IRQ context around the IRQ handler. Historically arch code would leave this to the irqchip or core IRQ code, but these days we want this to happen in exception entry code, and architectures such as arm64 do this. Currently handle_domain_irq() performs this entry/exit accounting, and if used on an architecture where the entry code also does this, the entry/exit accounting will be performed twice per IRQ. This is problematic as core RCU code such as rcu_is_cpu_rrupt_from_idle() depends on this happening once per IRQ, and will not detect quescent periods correctly, leading to stall warnings. As irqchip drivers which use handle_domain_irq() need to work on architectures with or without their own entry/exit accounting, this patch makes handle_domain_irq() conditionally perform the entry accounting depending on a new HAVE_ARCH_IRQENTRY Kconfig symbol that architectures can select if they perform this entry accounting themselves. For architectures which do not select the symbol. there should be no functional change as a result of this patch. Signed-off-by: Pingfan Liu Reviewed-by: Mark Rutland Cc: "Paul E. McKenney" Cc: Catalin Marinas Cc: Will Deacon 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 --- kernel/irq/Kconfig | 3 +++ kernel/irq/irqdesc.c | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig index fbc54c2a7f23..defa1db2d664 100644 --- a/kernel/irq/Kconfig +++ b/kernel/irq/Kconfig @@ -100,6 +100,9 @@ config IRQ_MSI_IOMMU config HANDLE_DOMAIN_IRQ bool +config HAVE_ARCH_IRQENTRY + bool + config IRQ_TIMINGS bool diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c index 4e3c29bb603c..fd5dd9d278b5 100644 --- a/kernel/irq/irqdesc.c +++ b/kernel/irq/irqdesc.c @@ -693,7 +693,9 @@ int handle_domain_irq(struct irq_domain *domain, struct irq_desc *desc; int ret = 0; +#ifndef CONFIG_HAVE_ARCH_IRQENTRY irq_enter(); +#endif /* The irqdomain code provides boundary checks */ desc = irq_resolve_mapping(domain, hwirq); @@ -702,7 +704,9 @@ int handle_domain_irq(struct irq_domain *domain, else ret = -EINVAL; +#ifndef CONFIG_HAVE_ARCH_IRQENTRY irq_exit(); +#endif set_irq_regs(old_regs); return ret; } -- 2.31.1