[PATCH 1/1] irq: Maintain user set affinity

Yinghai Lu yinghai at kernel.org
Sun Nov 9 11:01:05 EST 2008


On Sat, Nov 8, 2008 at 2:17 PM, Benjamin Herrenschmidt
<benh at kernel.crashing.org> wrote:
> On Sat, 2008-11-08 at 14:12 -0800, Yinghai Lu wrote:
>> On Tue, Nov 4, 2008 at 8:31 AM, Kumar Gala <galak at kernel.crashing.org> wrote:
>> > From 819ad3ed4660f4238e053728a8b5aa93d22b13d7 Mon Sep 17 00:00:00 2001
>> > From: Kumar Gala <galak at kernel.crashing.org>
>> > Date: Tue, 4 Nov 2008 10:13:53 -0600
>> > Subject: [PATCH 1/1] irq: Maintain user set affinity
>> >
>> > This addresses a regression in that if a user specified an affinity
>> > for an interrupt that affinity information would get reset between
>> > a request_irq(), free_irq() and request_irq() for the same irq.
>> >
>> > On example of this is bringing up an ethernet interface, taking
>> > it down and bringing it back up again.
>> >
>> > Instead of always using the irq_default_affinity we use the
>> > previous setting of the IRQs affinity with the assumption that
>> > at boot the IRQs affinity will be set to irq_default_affinity.
>>
>> why ?, the default_affinity is expected behavior...
>>
>> for example: when MSI is used, second driver could get same irq if
>> first driver is unloaded.
>
> The default affinity should be set when the irq is allocated / assigned
> to a device, not when it's requested.

ok, you are right.

for MSI, affinity is set two times.

also in dynamic_irq_init is setting with
#ifdef CONFIG_SMP
        cpus_setall(desc->affinity);
#endif

it seems should use irq_default_affinity instead of CPU_MASK_ALL directly there.

YH



More information about the Linuxppc-dev mailing list