Hi, I am working on a chip with multiple cores. I have defined static struct irq_chip new_plat_chip = { ... .startup = n_irq_startup, .mask = n_irq_shutdown, ... }; In n_irq_startup(), I have to make sure that all cores have set RVEC bit and corresponding EIMR bit. So, I try using on_each_cpu() (because EIMR can be set only by running code on that particular cpu) to run a function to set EIMR. n_irq_startup() is called as chip->startup() from __setup_irq() (from request_threaded_irq, in turn from request_irq() ) with a spin lock held (desc->lock, in kernel/irq/manage.c). This causes a stack dump from on_each_cpu(). Since it is wrong to call on_each_cpu with interrupts disabled, I want to change this piece of code. I am wondering how other SMP mips system implement this. Any comments or pointers will be helpful. I am not in the mailing list, please CC me in replies. Om.