diff --git a/repos/dde_linux/src/lib/lx_emul/irqchip.c b/repos/dde_linux/src/lib/lx_emul/irqchip.c index 88f6ba659c..58e8048d7e 100644 --- a/repos/dde_linux/src/lib/lx_emul/irqchip.c +++ b/repos/dde_linux/src/lib/lx_emul/irqchip.c @@ -172,6 +172,8 @@ int lx_emul_irq_task_function(void * data) if (!dde_irq_domain) continue; + irq_enter(); + irq = irq_find_mapping(dde_irq_domain, lx_emul_irq_last()); if (!irq) { @@ -180,6 +182,8 @@ int lx_emul_irq_task_function(void * data) } else { generic_handle_irq(irq); } + + irq_exit(); } return 0; diff --git a/repos/dde_linux/src/lib/lx_emul/shadow/kernel/softirq.c b/repos/dde_linux/src/lib/lx_emul/shadow/kernel/softirq.c index e85cea401f..ba80a41d1c 100644 --- a/repos/dde_linux/src/lib/lx_emul/shadow/kernel/softirq.c +++ b/repos/dde_linux/src/lib/lx_emul/shadow/kernel/softirq.c @@ -72,3 +72,12 @@ void __local_bh_enable_ip(unsigned long ip,unsigned int cnt) */ __preempt_count_sub(cnt); } + + +void __init softirq_init(void) {} + + +void irq_enter(void) {} + + +void irq_exit(void) {} diff --git a/repos/dde_linux/src/lib/lx_emul/start.c b/repos/dde_linux/src/lib/lx_emul/start.c index 17fea8c263..8ca55f4ca0 100644 --- a/repos/dde_linux/src/lib/lx_emul/start.c +++ b/repos/dde_linux/src/lib/lx_emul/start.c @@ -107,6 +107,7 @@ int lx_emul_init_task_function(void * dtb) tick_init(); init_timers(); hrtimers_init(); + softirq_init(); timekeeping_init(); /* arch/arm64/kernel/time.c */