[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CA+55aFybh_GFN5UZ=tAN1EgTxE=JnofYM6ft3XG90+coxEdRtQ@mail.gmail.com>
Date: Tue, 11 Jul 2017 09:31:40 -0700
From: Linus Torvalds <torvalds@...ux-foundation.org>
To: Thomas Gleixner <tglx@...utronix.de>
Cc: Tony Lindgren <tony@...mide.com>,
Sebastian Reichel <sebastian.reichel@...labora.co.uk>,
LKML <linux-kernel@...r.kernel.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Ingo Molnar <mingo@...nel.org>,
"H. Peter Anvin" <hpa@...or.com>, Pavel Machek <pavel@....cz>,
Linus Walleij <linus.walleij@...aro.org>,
Grygorii Strashko <grygorii.strashko@...com>
Subject: Re: [GIT pull] irq updates for 4.13
On Tue, Jul 11, 2017 at 9:19 AM, Thomas Gleixner <tglx@...utronix.de> wrote:
>
> What I do not understand here is that we have already power management
> around all of that.
>
> irq_chip_pm_get(&desc->irq_data);
> ...
> chip_bus_lock(desc);
> ...
> chip_bus_unlock_sync(desc);
> ...
> irq_chip_pm_put(&desc->irq_data);
>
> So why is that not sufficient and needs extra magic in that GPIO driver?
Well, irq_chip_pm_get/put() isn't called just over the operation, it's
called over the *whole* sequence of the irq being enabled at all.
So the different (right now) is that
- chip_bus_lock/unlock_sync() is purely done around the actual
operations to set up and tear down the irq data.
So this just covers the very short setup/teardown.
- irq_chip_pm_get/put() is called around the *whole* "irqs can be active" block
This covers the whole lifetime of the irq, from setup to free.
Very different.
I'd really prefer my simple patch for now, leaving everything working
the way it used to work. I *think* it's ok for RT too. Yes?
.. and then maybe longer term people can look more at this and clean
up the oddities.
Linus
Powered by blists - more mailing lists