diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index bc439de48cd166f47137b73f9a390e11036349be..b44e37753b9a59f30d448ebca1da13814ef33ba5 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -21,6 +21,7 @@ config SUPERH select HAVE_REGS_AND_STACK_ACCESS_API select HAVE_GENERIC_HARDIRQS select HAVE_SPARSE_IRQ + select IRQ_FORCED_THREADING select RTC_LIB select GENERIC_ATOMIC64 select GENERIC_IRQ_SHOW diff --git a/drivers/sh/intc/virq.c b/drivers/sh/intc/virq.c index ce5f81d7cc6b859a7301c1929a127498e516ce58..1e6e2d0353ea52987e6ef25a5baf42173c0cea03 100644 --- a/drivers/sh/intc/virq.c +++ b/drivers/sh/intc/virq.c @@ -235,6 +235,11 @@ static void __init intc_subgroup_map(struct intc_desc_int *d) irq_set_handler_data(irq, (void *)entry->handle); + /* + * Set the virtual IRQ as non-threadable. + */ + irq_set_nothread(irq); + irq_set_chained_handler(entry->pirq, intc_virq_handler); add_virq_to_pirq(entry->pirq, irq);