From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9F22CC31E40 for ; Tue, 30 Jul 2019 11:07:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7D992208E3 for ; Tue, 30 Jul 2019 11:07:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729315AbfG3LHn (ORCPT ); Tue, 30 Jul 2019 07:07:43 -0400 Received: from mga11.intel.com ([192.55.52.93]:57603 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730639AbfG3LHg (ORCPT ); Tue, 30 Jul 2019 07:07:36 -0400 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Jul 2019 04:07:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,326,1559545200"; d="scan'208";a="371502145" Received: from smile.fi.intel.com (HELO smile) ([10.237.68.145]) by fmsmga006.fm.intel.com with ESMTP; 30 Jul 2019 04:07:32 -0700 Received: from andy by smile with local (Exim 4.92) (envelope-from ) id 1hsPyc-000293-LK; Tue, 30 Jul 2019 14:07:30 +0300 Date: Tue, 30 Jul 2019 14:07:30 +0300 From: Andy Shevchenko To: Brian Norris Cc: Greg Kroah-Hartman , "Rafael J. Wysocki" , linux-kernel@vger.kernel.org, Salvatore Bellizzi , Dmitry Torokhov , egranata@chromium.org, egranata@google.com, Enric Balletbo i Serra , Gwendal Grignou , linux-acpi@vger.kernel.org, Benson Leung , stable@vger.kernel.org Subject: Re: [PATCH] driver core: platform: return -ENXIO for missing GpioInt Message-ID: <20190730110730.GK23480@smile.fi.intel.com> References: <20190729204954.25510-1-briannorris@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190729204954.25510-1-briannorris@chromium.org> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-acpi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org On Mon, Jul 29, 2019 at 01:49:54PM -0700, Brian Norris wrote: > Commit daaef255dc96 ("driver: platform: Support parsing GpioInt 0 in > platform_get_irq()") broke the Embedded Controller driver on most LPC > Chromebooks (i.e., most x86 Chromebooks), because cros_ec_lpc expects > platform_get_irq() to return -ENXIO for non-existent IRQs. > Unfortunately, acpi_dev_gpio_irq_get() doesn't follow this convention > and returns -ENOENT instead. So we get this error from cros_ec_lpc: > > couldn't retrieve IRQ number (-2) > > I see a variety of drivers that treat -ENXIO specially, so rather than > fix all of them, let's fix up the API to restore its previous behavior. > > I reported this on v2 of this patch: > > https://lore.kernel.org/lkml/20190220180538.GA42642@google.com/ > > but apparently the patch had already been merged before v3 got sent out: > > https://lore.kernel.org/lkml/20190221193429.161300-1-egranata@chromium.org/ > > and the result is that the bug landed and remains unfixed. > > I differ from the v3 patch by: > * allowing for ret==0, even though acpi_dev_gpio_irq_get() specifically > documents (and enforces) that 0 is not a valid return value (noted on > the v3 review) > * adding a small comment Thank you for fixing this. Reviewed-by: Andy Shevchenko > > Reported-by: Brian Norris > Reported-by: Salvatore Bellizzi > Cc: Enrico Granata > Cc: > Fixes: daaef255dc96 ("driver: platform: Support parsing GpioInt 0 in platform_get_irq()") > Signed-off-by: Brian Norris > --- > Side note: it might have helped alleviate some of this pain if there > were email notifications to the mailing list when a patch gets applied. > I didn't realize (and I'm not sure if Enrico did) that v2 was already > merged by the time I noted its mistakes. If I had known, I would have > suggested a follow-up patch, not a v3. > > I know some maintainers' "tip bots" do this, but not all apparently. > > drivers/base/platform.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/base/platform.c b/drivers/base/platform.c > index 506a0175a5a7..ec974ba9c0c4 100644 > --- a/drivers/base/platform.c > +++ b/drivers/base/platform.c > @@ -157,8 +157,13 @@ int platform_get_irq(struct platform_device *dev, unsigned int num) > * the device will only expose one IRQ, and this fallback > * allows a common code path across either kind of resource. > */ > - if (num == 0 && has_acpi_companion(&dev->dev)) > - return acpi_dev_gpio_irq_get(ACPI_COMPANION(&dev->dev), num); > + if (num == 0 && has_acpi_companion(&dev->dev)) { > + int ret = acpi_dev_gpio_irq_get(ACPI_COMPANION(&dev->dev), num); > + > + /* Our callers expect -ENXIO for missing IRQs. */ > + if (ret >= 0 || ret == -EPROBE_DEFER) > + return ret; > + } > > return -ENXIO; > #endif > -- > 2.22.0.709.g102302147b-goog > -- With Best Regards, Andy Shevchenko