From: Heiko Carstens Two changes: - let the kernel compile for architectures that support TRACE_IRQ_FLAGS but don't support GENERIC_HARDIRQS. - s390's console_init must enable interrupts, but early_boot_irqs_on() gets called later. To avoid problems move console_init() after local_irq_enable(). Hope this works on all architectures?! Signed-off-by: Heiko Carstens Acked-by: Ingo Molnar Cc: Martin Schwidefsky Cc: Arjan van de Ven Signed-off-by: Andrew Morton --- include/linux/lockdep.h | 8 ++++++-- init/main.c | 6 +++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff -puN include/linux/lockdep.h~lock-validator-early_init_irq_lock_type--console_init include/linux/lockdep.h --- 25/include/linux/lockdep.h~lock-validator-early_init_irq_lock_type--console_init Mon Jun 19 15:06:08 2006 +++ 25-akpm/include/linux/lockdep.h Mon Jun 19 15:06:08 2006 @@ -265,12 +265,16 @@ static inline void lockdep_on(void) struct lockdep_type_key { }; #endif /* !LOCKDEP */ -#ifdef CONFIG_TRACE_IRQFLAGS +#if defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_GENERIC_HARDIRQS) extern void early_init_irq_lock_type(void); +#else +# define early_init_irq_lock_type() do { } while (0) +#endif + +#ifdef CONFIG_TRACE_IRQFLAGS extern void early_boot_irqs_off(void); extern void early_boot_irqs_on(void); #else -# define early_init_irq_lock_type() do { } while (0) # define early_boot_irqs_off() do { } while (0) # define early_boot_irqs_on() do { } while (0) #endif diff -puN init/main.c~lock-validator-early_init_irq_lock_type--console_init init/main.c --- 25/init/main.c~lock-validator-early_init_irq_lock_type--console_init Mon Jun 19 15:06:08 2006 +++ 25-akpm/init/main.c Mon Jun 19 15:06:08 2006 @@ -516,6 +516,9 @@ asmlinkage void __init start_kernel(void softirq_init(); time_init(); timekeeping_init(); + profile_init(); + early_boot_irqs_on(); + local_irq_enable(); /* * HACK ALERT! This is early. We're enabling the console before @@ -525,9 +528,6 @@ asmlinkage void __init start_kernel(void console_init(); if (panic_later) panic(panic_later, panic_param); - profile_init(); - early_boot_irqs_on(); - local_irq_enable(); lockdep_info(); _