Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 470a166e authored by Anton Ivanov's avatar Anton Ivanov Committed by Richard Weinberger
Browse files

um: Do not change hard IRQ flags in soft IRQ processing



Software IRQ processing in generic architectures assumes that the
exit out of hard IRQ may have re-enabled interrupts (some
architectures may have an implicit EOI). It presumes them enabled
and toggles the flags once more just in case unless this is turned
off in the architecture specific hardirq.h by setting
__ARCH_IRQ_EXIT_IRQS_DISABLED

This patch adds this to UML where due to the way IRQs are handled
it is an optimization (it works fine without it too).

Signed-off-by: default avatarAnton Ivanov <aivanov@brocade.com>
Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent d5e3f5cb
Loading
Loading
Loading
Loading
+23 −0
Original line number Original line Diff line number Diff line
#ifndef __ASM_UM_HARDIRQ_H
#define __ASM_UM_HARDIRQ_H

#include <linux/cache.h>
#include <linux/threads.h>

typedef struct {
	unsigned int __softirq_pending;
} ____cacheline_aligned irq_cpustat_t;

#include <linux/irq_cpustat.h>	/* Standard mappings for irq_cpustat_t above */
#include <linux/irq.h>

#ifndef ack_bad_irq
static inline void ack_bad_irq(unsigned int irq)
{
	printk(KERN_CRIT "unexpected IRQ trap at vector %02x\n", irq);
}
#endif

#define __ARCH_IRQ_EXIT_IRQS_DISABLED 1

#endif /* __ASM_UM_HARDIRQ_H */