diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c
index 6be7991505019a30ce3ff6268c275a931a088644..4f1a2413e865c351dd7fca93631dbd00f6376bae 100644
--- a/arch/tile/kernel/process.c
+++ b/arch/tile/kernel/process.c
@@ -548,6 +548,9 @@ int do_work_pending(struct pt_regs *regs, u32 thread_info_flags)
 	if (!user_mode(regs))
 		return 0;
 
+	/* Enable interrupts; they are disabled again on return to caller. */
+	local_irq_enable();
+
 	if (thread_info_flags & _TIF_NEED_RESCHED) {
 		schedule();
 		return 1;