Re: [PATCH v3 2/4] genirq: Inform handler about line sharing state

Jan Kiszka
2010-12-14T23:01:22Z

[-- Attachment #1: Type: text/plain, Size: 781 bytes --]

Am 14.12.2010 22:46, Thomas Gleixner wrote:
> On Mon, 13 Dec 2010, Jan Kiszka wrote:
>> From: Jan Kiszka <jan.kiszka@siemens.com>
>> chip_bus_lock(desc);
>> retval = __setup_irq(irq, desc, action);
>> chip_bus_sync_unlock(desc);
>>
>> - if (retval)
>> + if (retval) {
>> + if (desc->action && !desc->action->next)
>> + desc->irq_data.drv_status &= ~IRQS_SHARED;
>
> This is redundant. IRQS_SHARED gets set in a code path where all
> checks are done already.

Nope, it's also set before entry of __setup_irq in case we call an
IRQF_ADAPTIVE handler.

We need to set it that early as we may race with IRQ events for the
already registered handler happening between the sharing notification
and the actual registration of the second handler.

Jan

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 259 bytes --]