Re: [GIT pull] irq updates for 4.13

From: Linus Torvalds
Date: Tue Jul 11 2017 - 12:31:46 EST


On Tue, Jul 11, 2017 at 9:19 AM, Thomas Gleixner <tglx@xxxxxxxxxxxxx> 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