Subject: Re: [mmotm and linux-next][PATCH] irq: enclose irq_desc_lock_class in CONFIG_LOCKDEP

From: "KOSAKI Motohiro" <[email-masked]>
Date: Tue, 16 Dec 2008 20:45:14 +0900

>> > actually, this breaks the build on !SPARSEIRQ because we will use that
>> > class in the non-sparseirq case. So we've converted a build warning to
>> > a build failure ;-)
>>
>> Please give me your .config and tell me your arch. my ia64 box (ia64 is
>> !SPARSEIRQ) can build the akpm patch.
>
> The expected build failure is obvious from reading the code:
>
>  #ifdef CONFIG_TRACE_IRQFLAGS
>  void early_init_irq_lock_class(void)
>  {
>  #ifndef CONFIG_SPARSE_IRQ
>         struct irq_desc *desc;
>         int i;
>
>         for_each_irq_desc(i, desc) {
>                 if (!desc)
>                         continue;
>
>                 lockdep_set_class(&desc->lock, &irq_desc_lock_class);
>
> Note that it's an #ifndef sparseirq, not an #ifdef sparseirq condition.

I see. thanks.
It seems my first proposal is better.

or, following #ifdef ?

#if defined(CONFIG_SPARSE_IRQ) || defined(CONFIG_TRACE_IRQFLAGS)

 /*
 * lockdep: we want to handle all irq_desc locks as a single lock-class:
 */
 static struct lock_class_key irq_desc_lock_class;

#endif