Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp841047pxb; Fri, 22 Apr 2022 12:19:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz34z+/hHWaW+5IZdEyQHXzX076NI9V1doR3DvLyBABUZDDB7dfSelJdjd4y37ojad4YLgv X-Received: by 2002:a62:1a0d:0:b0:50a:cf43:d757 with SMTP id a13-20020a621a0d000000b0050acf43d757mr6693268pfa.5.1650655161590; Fri, 22 Apr 2022 12:19:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650655161; cv=none; d=google.com; s=arc-20160816; b=Sbx59G9N5laifUCe0zHg8ibSy1HQoyVThL//6n9Bo5YWdDfqguUFGtZabz3QNGhTud PuHegpCK4eE5jOyxuS7D9OdFWRqsg5yej2M7a1oGiwD6P+pYxGB7C9nnE2Mi0obw7lKn NHXqL8MXwHjtciCTHXVTt+kXGZzgeGFRanq01VomWHoYI/qKcz2oTiK4a4vvqckTWaLh s1GLZJZdu1b9kof0jdafAYOABHw7KgKGeN3e4kjf3YXq6eDcTRAe7B89+1roAWHk5CJt r6NKNvyBg7Md6YnCdbcGE7PaJ9ozV0zHEmGRyfvsv+iIOdoPUO8tT76aauLSIHi35zDG StfA== 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=4CWmAGiAYsEKLbXSCK8gFYRVzpYJAIas6x8jn6wd280=; b=HMew0/kNzej/3BX9BtcMJzav58Sdi5hxqO3ukXPFOVsxjbHK8jSpHOl4jrQ2Rld2Nl 2Hvb62Ggk9fEMuJRL5/SI6y2wmUWTAOhZ5gDu2UAWUtzH+7+Q7uC6P7FQmF5R45sZnpY sg0ho+qkUjOhiaduRJlhP9RU2tCcTMdiQmp1tmtxVudpZj6RD0LpxYdCLsg1lPXDofVE jjF/Bs23A2+90Em+Zcu3F3u4DaBz2eiwavjmKWCREluELnAlmPslpODyNXF/c5Q7KYY4 kRuxZuUaONIVj0YN6xQJRZI9U53q7R3OIyCr6Fo1twdBETjyrgDgsimy7wQFJDMQY2Rw qlCQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=VUXhS2Oc; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id d17-20020aa78e51000000b0050ad23a8d0esi6210956pfr.113.2022.04.22.12.19.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Apr 2022 12:19:21 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=VUXhS2Oc; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 78EED1BE00B; Fri, 22 Apr 2022 11:34:01 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351186AbiDSOWT (ORCPT + 99 others); Tue, 19 Apr 2022 10:22:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36088 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1353053AbiDSOVq (ORCPT ); Tue, 19 Apr 2022 10:21:46 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A1A6218E15; Tue, 19 Apr 2022 07:19:03 -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 4AD69B819D6; Tue, 19 Apr 2022 14:19:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D4009C385A5; Tue, 19 Apr 2022 14:19:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1650377940; bh=awgNL2Qrv6Jb+Ytm47kX89cgcLuC99ReFIb+oac4wqc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VUXhS2OccgHglZ+R6gI3pVxEi2AomC8ukyBLS6WrpjRwqOCw1xIB0ERlfiS4ByHzZ 6veYWEo2qcDwogbSiyKpoVlH33m0hyv5rbgGO1qsy9/j2J4zNS4C7z9dqQ/Nsk049l ywydsAWeYHesAolTJ6cv1XzV8Sa8Wmtjw5iP1pC7POiVepARcMCtF2571kQK6Ak2N9 9cwIL8Kp0S1w/RS0Ze0I3u87Jh1JIS51V7mkIbdqtw2XQD2UzNik5Yqj3JtTHWxcM0 PWXmRSva+zROEPDDHICWzXXCaDL/a+X5MXKf1fJR5wCru4FKMzOrmTzJDukTbXlJMj qp2i56cblyqUQ== Received: from sofa.misterjones.org ([185.219.108.64] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ngoh0-005MFS-MG; Tue, 19 Apr 2022 15:18:58 +0100 From: Marc Zyngier To: linux-kernel@vger.kernel.org Cc: Linus Walleij , Bartosz Golaszewski , Thierry Reding , Joey Gouly , Jonathan Hunter , Hector Martin , Sven Peter , Alyssa Rosenzweig , Bjorn Andersson , Andy Gross , Jeffrey Hugo , Thomas Gleixner , Basavaraj Natikar , Shyam Sundar S K , Andy Shevchenko , linux-gpio@vger.kernel.org, linux-tegra@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, kernel-team@android.com Subject: [PATCH v3 01/10] gpio: Don't fiddle with irqchips marked as immutable Date: Tue, 19 Apr 2022 15:18:37 +0100 Message-Id: <20220419141846.598305-2-maz@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220419141846.598305-1-maz@kernel.org> References: <20220419141846.598305-1-maz@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: linux-kernel@vger.kernel.org, linus.walleij@linaro.org, brgl@bgdev.pl, thierry.reding@gmail.com, joey.gouly@arm.com, jonathanh@nvidia.com, marcan@marcan.st, sven@svenpeter.dev, alyssa@rosenzweig.io, bjorn.andersson@linaro.org, agross@kernel.org, jeffrey.l.hugo@gmail.com, tglx@linutronix.de, Basavaraj.Natikar@amd.com, Shyam-sundar.S-k@amd.com, andy.shevchenko@gmail.com, linux-gpio@vger.kernel.org, linux-tegra@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-Spam-Status: No, score=-2.9 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RDNS_NONE,SPF_HELO_NONE autolearn=unavailable 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 In order to move away from gpiolib messing with the internals of unsuspecting irqchips, add a flag by which irqchips advertise that they are not to be messed with, and do solemnly swear that they correctly call into the gpiolib helpers when required. Also nudge the users into converting their drivers to the new model. Reviewed-by: Andy Shevchenko Reviewed-by: Bartosz Golaszewski Signed-off-by: Marc Zyngier --- drivers/gpio/gpiolib.c | 7 ++++++- include/linux/irq.h | 2 ++ kernel/irq/debugfs.c | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index e59884cc12a7..48191e62a3cc 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -1475,6 +1475,11 @@ static void gpiochip_set_irq_hooks(struct gpio_chip *gc) { struct irq_chip *irqchip = gc->irq.chip; + if (irqchip->flags & IRQCHIP_IMMUTABLE) + return; + + chip_warn(gc, "not an immutable chip, please consider fixing it!\n"); + if (!irqchip->irq_request_resources && !irqchip->irq_release_resources) { irqchip->irq_request_resources = gpiochip_irq_reqres; @@ -1633,7 +1638,7 @@ static void gpiochip_irqchip_remove(struct gpio_chip *gc) irq_domain_remove(gc->irq.domain); } - if (irqchip) { + if (irqchip && !(irqchip->flags & IRQCHIP_IMMUTABLE)) { if (irqchip->irq_request_resources == gpiochip_irq_reqres) { irqchip->irq_request_resources = NULL; irqchip->irq_release_resources = NULL; diff --git a/include/linux/irq.h b/include/linux/irq.h index f92788ccdba2..505308253d23 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -569,6 +569,7 @@ struct irq_chip { * IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND: Invokes __enable_irq()/__disable_irq() for wake irqs * in the suspend path if they are in disabled state * IRQCHIP_AFFINITY_PRE_STARTUP: Default affinity update before startup + * IRQCHIP_IMMUTABLE: Don't ever change anything in this chip */ enum { IRQCHIP_SET_TYPE_MASKED = (1 << 0), @@ -582,6 +583,7 @@ enum { IRQCHIP_SUPPORTS_NMI = (1 << 8), IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND = (1 << 9), IRQCHIP_AFFINITY_PRE_STARTUP = (1 << 10), + IRQCHIP_IMMUTABLE = (1 << 11), }; #include diff --git a/kernel/irq/debugfs.c b/kernel/irq/debugfs.c index 2b43f5f5033d..bc8e40cf2b65 100644 --- a/kernel/irq/debugfs.c +++ b/kernel/irq/debugfs.c @@ -58,6 +58,7 @@ static const struct irq_bit_descr irqchip_flags[] = { BIT_MASK_DESCR(IRQCHIP_SUPPORTS_LEVEL_MSI), BIT_MASK_DESCR(IRQCHIP_SUPPORTS_NMI), BIT_MASK_DESCR(IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND), + BIT_MASK_DESCR(IRQCHIP_IMMUTABLE), }; static void -- 2.34.1