All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergey Shtylyov <s.shtylyov@omp.ru>
To: Andy Shevchenko <andriy.shevchenko@intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] platform: finally disallow IRQ0 in platform_get_irq() and its ilk
Date: Tue, 4 Jan 2022 22:27:58 +0300	[thread overview]
Message-ID: <8a415980-990b-abae-6f60-dedd0c199583@omp.ru> (raw)
In-Reply-To: <YbM3T29wPZFLMu1D@smile.fi.intel.com>

On 12/10/21 2:17 PM, Andy Shevchenko 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!
>>>
>>> You are changing the return value of platform_get_irq_optional().
>>> The problem here is the proposed change doesn't bring any value in such
>>> case. platform_get_irq_optional() should be able (at the end of the day)
>>> to return 3 types of values (as other APIs do):
>>> 	 > 0: success
>>> 	== 0: IRQ not found
>>> 	 < 0: an error that must be consumed by the caller
>>
>>    I remember that was in your patch that got reverted right after being merged. ;-)
>> IMHO returning both error code and 0 on failure is a sign of a misdesigned API, it
>> makes the failure check unnecessarily complex and error prone.
> 
> I dunno what you are talking about when you mentioned "0 on failure" because 0
> is not the failure, that's what I'm trying to tell.

   OK.
 
>>> 0 is unexpected result for non-optional APIs and there you may try to play
>>> tricks (like replacing it by error code).
>>>
>>> There was a discussion around the topic:
>>> https://lore.kernel.org/lkml/20210331144526.19439-1-andriy.shevchenko@linux.intel.com/T/#u
>>
>>    I don't see much of the discussion there...
> 
> Indeed, it was split between two threads. Another one is this:
> https://lore.kernel.org/linux-serial/20210407101713.8694-1-andriy.shevchenko@linux.intel.com/T/#u

   OK.

>>> Wanna help?
>>
>>    No, I'm afraid you're on your own here... 

   Tell me please, how far you've got with this by now?
   (I've already started to add the fixups to your patch -- unfortunately, this change has to be
done atomically, not piecemeal.)

>>>> Fixes: a85a6c86c25b ("driver core: platform: Clarify that IRQ 0 is invalid")
>>>
>>> Not sure.
>>
>>    Why? It fixes gthe IRQ0 problem, so that you don't have to check for IRQ0 in many callers
>> (for the subsytems that treat 0 as s/th special, like polling mode)... If you have something
>> to improve, you can do that atop of this patch...
> 
> Because first we need to fix all users of platform_get_irq_optional().

   I still don't understand why your issue should be fixed 1st -- but I don't really care about
the order...

MBR, Sergey

  reply	other threads:[~2022-01-04 19:28 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-06 20:26 [PATCH] platform: finally disallow IRQ0 in platform_get_irq() and its ilk Sergey Shtylyov
2021-11-26 16:20 ` Greg Kroah-Hartman
2021-12-02 21:11   ` Sergey Shtylyov
2021-12-09 20:06 ` Andy Shevchenko
2021-12-09 20:21   ` Sergey Shtylyov
2021-12-10 11:17     ` Andy Shevchenko
2022-01-04 19:27       ` Sergey Shtylyov [this message]
2022-01-05 10:09         ` Andy Shevchenko
2022-01-09 11:31           ` Sergey Shtylyov
2022-01-04  9:26 ` Marc Zyngier
2022-01-04  9:47   ` Geert Uytterhoeven
2022-01-04 10:48     ` Marc Zyngier
2022-01-04 10:53       ` Greg Kroah-Hartman
2022-01-04 11:13         ` Marc Zyngier
2022-01-05 10:02         ` Andy Shevchenko
2022-01-04 11:24       ` Geert Uytterhoeven
2022-01-05  9:59         ` Andy Shevchenko
2022-01-04 12:23     ` Sergey Shtylyov
2022-01-04 20:30   ` Sergey Shtylyov
2022-01-12 17:53   ` Sergey Shtylyov
2022-01-12 18:08     ` Marc Zyngier
2022-01-12 20:08       ` Sergey Shtylyov
2022-02-11 20:20       ` Sergey Shtylyov
2022-01-12 18:19     ` Greg Kroah-Hartman
2022-01-12 20:20       ` Sergey Shtylyov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8a415980-990b-abae-6f60-dedd0c199583@omp.ru \
    --to=s.shtylyov@omp.ru \
    --cc=andriy.shevchenko@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rafael@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.