Re: [RFC][PATCH -rt] irqd starvation on SMP by a single process?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



john stultz wrote:
> On Fri, 2006-05-12 at 07:50 +0200, Ingo Molnar wrote:
>> +		if (!cpus_equal(current->cpus_allowed, irq_affinity[irq]));
>> +			set_cpus_allowed(current, irq_affinity[irq]);
> 
> Gah! I introduced a terrible bug there. 
> 
> Note the semi-colon at the end of the if statement! Sorry about that!
> 
> The following patch (which I've tested as well) fixes that.
> 
> --- 2.6-rt/kernel/irq/manage.c	2006-05-11 18:37:36.000000000 -0500
> +++ dev-rt/kernel/irq/manage.c	2006-05-12 12:55:56.000000000 -0500
> @@ -724,6 +724,7 @@
>  		set_current_state(TASK_INTERRUPTIBLE);
>  		do_hardirq(desc);
>  		cond_resched_all();
> +		local_irq_disable();
>  		__do_softirq();
>  //		do_softirq_from_hardirq();
>  		local_irq_enable();
> @@ -731,10 +732,8 @@
>  		/*
>  		 * Did IRQ affinities change?
>  		 */
> -		if (!cpu_isset(smp_processor_id(), irq_affinity[irq])) {
> -			mask = cpumask_of_cpu(any_online_cpu(irq_affinity[irq]));
> -			set_cpus_allowed(current, mask);
> -		}
> +		if(!cpus_equal(current->cpus_allowed, irq_affinity[irq]))
> +			set_cpus_allowed(current, irq_affinity[irq]);
>  #endif
>  		schedule();
>  	}
> 
> 
> 
> 

FYI,

I just looked at rt21 and the first version of this patch seems to be in
it. Not this version.

Mark

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux