Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp2138955iob; Thu, 5 May 2022 16:58:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwuLKdY00NHbULcOcDLLiaWmYeptOLvInCm61Bt/QUhSI4vSbLL/Rtcwmyp6rLJ6vzc2i0R X-Received: by 2002:a05:6402:430f:b0:427:d034:295b with SMTP id m15-20020a056402430f00b00427d034295bmr771117edc.126.1651795118421; Thu, 05 May 2022 16:58:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651795118; cv=none; d=google.com; s=arc-20160816; b=qbfVXd7RADnNyoMT2n8EZ57ZeFqUF/EFqnlI0R7kaWEszi5rUxIexTJa5+OJZcD8mT sqWLj9m7pR2l2WHHlc9scqR8ckA6Rbv2mVJqBrkyukKbqW+yCaISS5JCY4CDnDn6BIKI Wj4dTcyko46OYdWNpThx9w2cZ9ILgrz6o+6RJMsEVlBksjk5iJdfyd/Rwl/QpyqlISRn PJkZ/9+2MFa83BzZ0Uma5lisUCYQAZJ3nr2HqudHwEAN2+FSM1UjluHcKHM/pQt3d31V zTAALMT2QTlS5luKuxVWW8+OePkYV3aV3n4hJ4t1/p7VtXECDNhEz4W59QHJhtdogZkG UrvA== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=vX+vFCvRcbGC089V8dX0BEtXrlUVTQTOgkqXTmt1+S8=; b=IEIyyObycQXFgMLJaFsqvXb9f1IQn0IJJZZDrqlpbDbzpTOplH4U/YoV96H7LlSPPd Dajr1q4DkvPPnn711bBgKnEIy+blI7leEggbT4WyJEs1NZKMtGGPwf0kJ9iqGyqrbOOB 3RMhcoCatt0QKCSt5gqAGMSaHXq1aAVL/gUMU6u0qRRGf1qEVHulOe1IZj8b25Ev5xUU EF3QGcNK62gClulsDyKFIdqVRpvVdJeEaxMJ9hn1TqIGIUH33bMnDWlxTq+5eERiz1Xc e1dzu/G7XNBEqnWYW4gaqBMsZUYdXxBVPpPAT8UXbse4Zv0ckmU7PTza7lM54DUEPBMR pipQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="o6sS2/b1"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id oz16-20020a1709077d9000b006f515a9c6a5si648854ejc.251.2022.05.05.16.58.15; Thu, 05 May 2022 16:58:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="o6sS2/b1"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1359004AbiEDRfh (ORCPT + 99 others); Wed, 4 May 2022 13:35:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38690 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1357007AbiEDRJw (ORCPT ); Wed, 4 May 2022 13:09:52 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0AC0B4831E; Wed, 4 May 2022 09:56:56 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 12F46B827A1; Wed, 4 May 2022 16:56:55 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 96C9EC385BB; Wed, 4 May 2022 16:56:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1651683414; bh=NYarbiEKNJhdMwy43JHI6hW/kY4vKlXNSqwptppxmHQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=o6sS2/b1YAh//7S9evPqcpb1lDWPhU6OOJxPOj2ktBUTntSm8DRJhWNXwp5Qz0AgE uG3fp5rppmkgEm4x+dRT0oHSNbyEqcEm8Z3XO5ZKA8/seWc7UgzcEzF8aQDpN1gTJX zQ/W3z+cgbYkwErNkFPAVblCwYOhM3ON+ssXTuZM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Marek Vasut , Alexandre Torgue , Fabien Dessenne , Linus Walleij , Marc Zyngier , linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, Sasha Levin Subject: [PATCH 5.17 099/225] pinctrl: stm32: Do not call stm32_gpio_get() for edge triggered IRQs in EOI Date: Wed, 4 May 2022 18:45:37 +0200 Message-Id: <20220504153119.592660213@linuxfoundation.org> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220504153110.096069935@linuxfoundation.org> References: <20220504153110.096069935@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Marek Vasut [ Upstream commit e74200ebf7c4f6a7a7d1be9f63833ddba251effa ] The stm32_gpio_get() should only be called for LEVEL triggered interrupts, skip calling it for EDGE triggered interrupts altogether to avoid wasting CPU cycles in EOI handler. On this platform, EDGE triggered interrupts are the majority and LEVEL triggered interrupts are the exception no less, and the CPU cycles are not abundant. Fixes: 47beed513a85b ("pinctrl: stm32: Add level interrupt support to gpio irq chip") Signed-off-by: Marek Vasut Cc: Alexandre Torgue Cc: Fabien Dessenne Cc: Linus Walleij Cc: Marc Zyngier Cc: linux-stm32@st-md-mailman.stormreply.com Cc: linux-arm-kernel@lists.infradead.org To: linux-gpio@vger.kernel.org Link: https://lore.kernel.org/r/20220415215410.498349-1-marex@denx.de Signed-off-by: Linus Walleij Signed-off-by: Sasha Levin --- drivers/pinctrl/stm32/pinctrl-stm32.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/pinctrl/stm32/pinctrl-stm32.c b/drivers/pinctrl/stm32/pinctrl-stm32.c index 9ed764731570..df1d6b466fb7 100644 --- a/drivers/pinctrl/stm32/pinctrl-stm32.c +++ b/drivers/pinctrl/stm32/pinctrl-stm32.c @@ -311,6 +311,10 @@ static void stm32_gpio_irq_trigger(struct irq_data *d) struct stm32_gpio_bank *bank = d->domain->host_data; int level; + /* Do not access the GPIO if this is not LEVEL triggered IRQ. */ + if (!(bank->irq_type[d->hwirq] & IRQ_TYPE_LEVEL_MASK)) + return; + /* If level interrupt type then retrig */ level = stm32_gpio_get(&bank->gpio_chip, d->hwirq); if ((level == 0 && bank->irq_type[d->hwirq] == IRQ_TYPE_LEVEL_LOW) || -- 2.35.1