All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Sergey Shtylyov <s.shtylyov@omp.ru>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
	Hans de Goede <hdegoede@redhat.com>, Jens Axboe <axboe@kernel.dk>,
	Damien Le Moal <damien.lemoal@opensource.wdc.com>
Subject: Re: [PATCH v1 1/2] ata: libahci_platform: Get rid of dup message when IRQ can't be retrieved
Date: Fri, 10 Dec 2021 19:51:35 +0200	[thread overview]
Message-ID: <YbOTp2f0WLhPo0bu@smile.fi.intel.com> (raw)
In-Reply-To: <51c0aa6e-e75f-faa7-b9b1-850684da58c8@omp.ru>

On Fri, Dec 10, 2021 at 08:39:38PM +0300, Sergey Shtylyov wrote:
> On 12/10/21 2:28 PM, Andy Shevchenko wrote:
> 
> >>>>>>>>> While at it, drop redundant check for 0 as platform_get_irq() spills
> >>>>>>>>> out a big WARN() in such case.
> >>>>>>>>
> >>>>>>>>    And? IRQ0 is still returned! :-(
> >>>>>>>
> >>>>>>> It should not be returned in the first place.
> >>>>>>
> >>>>>>    But it still is, despite the WARN(), right?
> >>>>>
> >>>>> So, you admit that there is a code which does that?
> >>>>
> >>>>    I admit *what*?! That platfrom_get_irq() and its ilk return IRQ0 while they
> >>>> shouldn't? =)
> >>>
> >>> That there is a code beneath platform_get_irq() that returns 0, yes.
> >>
> >>    Look at the ACPI-specific GpioInt handling code (just above the out_not_found label) --
> >> I'm not sure the check there is correct -- I'm not very familiar with ACPI, you seem to
> >> know it much better. :-)
> > 
> > And what is your point here exactly?
> 
>    You're saying IRQ0 shouldn't be returned (by the ACPI code) -- from this fragment
> we can see that it may be returned...

Please, provide your analysis, I really don't see how it's possible.
If you prove that, we must fix the severe bug then.

> > If == 0 case happens, it will be
> > immediately WARN() and reported (I hope)
> 
>    Well, "hope dies last"... :-)

Believe, big WARNs are quite likely to be reported if not by humans, then by
CIs and fuzzers. So, the hope is rather to word 'immediately'.

> > since it will mean bug in the code.
> > 
> >>    Also, 0 can be specified via the normal IRQ resource. I know of e.g. the Alchemy MIPS SoCs
> >> that have IRQ0 used by UART0; luckily, currently SoC IRQs are mapped starting at Linux IRQ8
> >> (but it wasn't the case in the 2.6.1x time frame where we had issue with the serial driver)...
> > 
> > You mixed up HW IRQ with vIRQ.
> 
>    I didn't. Linux expects the vIRQs (I called them Linux IRQs). In the 2.6.1x time frame
> those corresponded 1:1 on Alchemy. Also, there's 8259 which is always mapped at vIRQ0 (or
> the legacy drivers won't work).
> 
> > The former one may be 0 and it's completely valid case, while
> > the second one is not.
> 
>    Well, request_irq() happilly takes vIRQ0. Moreover, there are 8253 drivers in e.g. the arch/x86/
> (PPC and MIPS too) which do use vIRQ0.

This is an exception which is not in the scope here. Let me remind that the
topic here is libahci_platform and platform_get_irq().

> >>>>> That code should be fixed first. Have you sent a patch?
> >>>>
> >>>>    Which code?! You got me totally muddled. =)
> >>>
> >>> Above mentioned.
> >>
> >>    What needs to be fixed in this case is the interrupt controller driver.
> > 
> > What do you mean by that?
> 
>    You better ask Linus... ;-)

If you cite somebody you have to understand what they said, right?
Lemme repeat the question, what do you mean by that? In your own words, please.

> > vIRQ is handled by IRQ core, IRQ controller driver
> > just a mere provider of the resource. And those exceptions for vIRQ == 0
> > shouldn't be propagated to the platform code or so.
> 
> >> Quoting Linus
> >> (imprecisely :-)), IRQ #s should be either mapped starting with #1 or IRQ0 remapped at
> >> the end of the controller's interrupt range... I currently have no information on the
> >> platforms requiring such kind of fixing (Alchemy don't seem to need it now)...
> 
>    Well, actually that Linus' quote predates drivers/irqchip/, so I must confess this
> argument was wrong... :-)
> 
> > Again, do not mix vIRQ (about which Linus ranted) and HW IRQ.

...

> >>>>>>>>> -	if (!irq)
> >>>>>>>>> -		return -EINVAL;
> >>>>>>>>
> >>>>>>>>    This is prermature -- let's wait till my patch that stops returning IRQ0 from
> >>>>>>>> platform_get_irq() and friends gets merged....
> >>>>>>>
> >>>>>>> What patch?
> >>>>>>
> >>>>>>    https://marc.info/?l=linux-kernel&m=163623041902285
> >>>>>>
> >>>>>>> Does it fix platform_get_irq_optional()?
> >>>>>>
> >>>>>>    Of course! :-)
> >>>>>
> >>>>> Can you share link to lore.kernel.org, please?
> >>>>> It will make much easier to try and comment.
> >>>>
> >>>>    I don't know how to uise it yet, and I'm a little busy with other IRQ0 issues ATM,
> > 
> >>    A little bit, I meant to type.
> > 
> > No problem. I just haven't got what other IRQ0 issues except fixing
> > platform_get_irq_optional() et al. could be possibly needed...
> 
>    There is other IRQ0 issue which is very old already...

Is it big secret? What is that issue?

-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2021-12-10 17:52 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-09 14:59 [PATCH v1 1/2] ata: libahci_platform: Get rid of dup message when IRQ can't be retrieved Andy Shevchenko
2021-12-09 14:59 ` [PATCH v1 2/2] ata: libahci_platform: Remove bogus 32-bit DMA mask attempt Andy Shevchenko
2021-12-10 19:34   ` Andy Shevchenko
2021-12-11  0:04     ` Damien Le Moal
2021-12-17  0:58   ` Damien Le Moal
2021-12-17 11:57     ` Andy Shevchenko
2021-12-09 15:21 ` [PATCH v1 1/2] ata: libahci_platform: Get rid of dup message when IRQ can't be retrieved Hans de Goede
2021-12-09 17:24 ` Sergey Shtylyov
2021-12-09 17:42   ` Andy Shevchenko
2021-12-09 18:22     ` Sergey Shtylyov
2021-12-09 19:22       ` Andy Shevchenko
2021-12-09 19:27         ` Andy Shevchenko
2021-12-09 20:31           ` Sergey Shtylyov
2021-12-09 20:29         ` Sergey Shtylyov
2021-12-10 10:44           ` Andy Shevchenko
2021-12-10 11:14             ` Sergey Shtylyov
2021-12-10 11:28               ` Andy Shevchenko
2021-12-10 17:39                 ` Sergey Shtylyov
2021-12-10 17:51                   ` Andy Shevchenko [this message]
2021-12-09 22:49 ` Damien Le Moal
2021-12-09 22:57   ` Damien Le Moal
2021-12-10  8:47   ` Andy Shevchenko
2021-12-10 16:38     ` Sergey Shtylyov
2021-12-10 17:57       ` Andy Shevchenko
2021-12-10  8:59   ` Sergey Shtylyov
2021-12-10 10:46     ` Andy Shevchenko
2021-12-10 11:19       ` Sergey Shtylyov
2021-12-10 11:36         ` Andy Shevchenko
2021-12-10 17:15           ` Sergei Shtylyov
2021-12-10 17:59             ` Andy Shevchenko
2021-12-10 19:01               ` Sergey Shtylyov
2021-12-10 19:25                 ` Andy Shevchenko
2021-12-10 19:30                   ` Sergey Shtylyov
2021-12-10 19:35                     ` Sergei Shtylyov
2021-12-11 10:13                       ` Sergey Shtylyov
2021-12-13 11:26                         ` Andy Shevchenko
2021-12-10 23:45     ` Damien Le Moal
2021-12-11 10:25       ` Sergey Shtylyov
2021-12-12 22:39         ` Damien Le Moal
2021-12-13 11:52           ` Andy Shevchenko
2021-12-13 21:36             ` Damien Le Moal
2021-12-13 22:02               ` Andy Shevchenko
2021-12-13 11:49         ` Andy Shevchenko
2021-12-13 11:46       ` Andy Shevchenko

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=YbOTp2f0WLhPo0bu@smile.fi.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=axboe@kernel.dk \
    --cc=damien.lemoal@opensource.wdc.com \
    --cc=hdegoede@redhat.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=s.shtylyov@omp.ru \
    /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.