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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3D22FC433EF for ; Tue, 4 Jan 2022 10:48:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231620AbiADKsG (ORCPT ); Tue, 4 Jan 2022 05:48:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59362 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230076AbiADKsF (ORCPT ); Tue, 4 Jan 2022 05:48:05 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2F955C061761 for ; Tue, 4 Jan 2022 02:48:05 -0800 (PST) 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 E57E8B8119E for ; Tue, 4 Jan 2022 10:48:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 931A8C36AE9; Tue, 4 Jan 2022 10:48:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1641293282; bh=9ZmQ7b6gnInhR6Gs/2XDlMBqv0g4Yh8WaqfFg+qfd4o=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=JBjcEOkHqLwmNQELU6sT3RAUVpeVpZd4ciYMEibrYMdV3lyhUbeydTFiEqj0C33q+ 4QSvMRn5S+6th6A9u6T/vSNrbOMSJg0V657LtzIKAmtJ9QunpN4EDatixZGOw6S+Z5 feKVIM/6LoSLQ1BidV43J5YmQuyl9xS7UtfY2IzbkfE7Uohti1A1QAd0k2q8x63xGW ezTi+cuHqfiynITMMMJZsVDunvZPz8EnxI456lwUWpvBDZEpIITpIOVVS6VWBHgXvt JfY235YVvOsiHxIorpA0nuBC/PQi3EQfLHPFJ7dz4q7wxnSvPW2mYQ29anKbCZWnq3 Gbc6B87TKteig== Received: from sofa.misterjones.org ([185.219.108.64] helo=why.misterjones.org) 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 1n4hMG-00Fszw-GV; Tue, 04 Jan 2022 10:48:00 +0000 Date: Tue, 04 Jan 2022 10:48:00 +0000 Message-ID: <87mtkbvktb.wl-maz@kernel.org> From: Marc Zyngier To: Geert Uytterhoeven Cc: Sergey Shtylyov , Greg Kroah-Hartman , "Rafael J. Wysocki" , linux-kernel@vger.kernel.org, Thomas Gleixner Subject: Re: [PATCH] platform: finally disallow IRQ0 in platform_get_irq() and its ilk In-Reply-To: References: <5e001ec1-d3f1-bcb8-7f30-a6301fd9930c@omp.ru> <87pmp7volh.wl-maz@kernel.org> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/27.1 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: geert@linux-m68k.org, s.shtylyov@omp.ru, gregkh@linuxfoundation.org, rafael@kernel.org, linux-kernel@vger.kernel.org, tglx@linutronix.de X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 04 Jan 2022 09:47:21 +0000, Geert Uytterhoeven wrote: > > On Tue, Jan 4, 2022 at 10:26 AM Marc Zyngier wrote: > > [Adding Geert] > > > > On Sat, 06 Nov 2021 20:26:47 +0000, > > Sergey Shtylyov wrote: > > > The commit a85a6c86c25b ("driver core: platform: Clarify that IRQ 0 is > > > invalid") only calls WARN() when IRQ0 is about to be returned, however > > > using IRQ0 is considered invalid (according to Linus) outside the arch/ > > > code where it's used by the i8253 drivers. Many driver subsystems treat > > > 0 specially (e.g. as an indication of the polling mode by libata), so > > > the users of platform_get_irq[_byname]() in them would have to filter > > > out IRQ0 explicitly and this (quite obviously) doesn't scale... > > > Let's finally get this straight and return -EINVAL instead of IRQ0! > > > > > > Fixes: a85a6c86c25b ("driver core: platform: Clarify that IRQ 0 is invalid") > > > Signed-off-by: Sergey Shtylyov > > > > --- driver-core.orig/drivers/base/platform.c > > > +++ driver-core/drivers/base/platform.c > > > @@ -231,7 +231,8 @@ int platform_get_irq_optional(struct pla > > > out_not_found: > > > ret = -ENXIO; > > > out: > > > - WARN(ret == 0, "0 is an invalid IRQ number\n"); > > > + if (WARN(!ret, "0 is an invalid IRQ number\n")) > > > + return -EINVAL; > > > return ret; > > > } > > > EXPORT_SYMBOL_GPL(platform_get_irq_optional); > > > @@ -445,7 +446,8 @@ static int __platform_get_irq_byname(str > > > > > > r = platform_get_resource_byname(dev, IORESOURCE_IRQ, name); > > > if (r) { > > > - WARN(r->start == 0, "0 is an invalid IRQ number\n"); > > > + if (WARN(!r->start, "0 is an invalid IRQ number\n")) > > > + return -EINVAL; > > > return r->start; > > > } > > > > Geert recently mentioned that a few architectures (such as sh?) still > > use IRQ0 as something valid in limited cases. > > https://lore.kernel.org/all/CAMuHMdUg3=q7gyaVHP0XcYUOo3PQUUv8Hc8wp5faVQ+bTBpg4A@mail.gmail.com > > TL;DR: Probably only smsc911x Ethernet on the AP-SH4A-3A and > AP-SH4AD-0A boards, which should trigger the warning since v5.8. > > > From my PoV, this patch is fine, but please be prepared to fix things > > in a couple of years when someone decides to boot a recent kernel on > > their pet dinosaur. With that in mind: > > > > Acked-by: Marc Zyngier > > TBH, I don't see much point in this patch, as the WARN() has been > there since a while, and the end goal is to return zero instead of > -ENXIO for no interrupt, right? I think the end-goal is to never return 0. Either we return a valid interrupt number, or we return an error. It should be the responsibility of the caller to decide what they want to do in the error case. Thanks, M. -- Without deviation from the norm, progress is not possible.