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

Commit 4e26bc4a authored by Madhavan Srinivasan's avatar Madhavan Srinivasan Committed by Michael Ellerman
Browse files

powerpc/64: Rename soft_enabled to irq_soft_mask



Rename the paca->soft_enabled to paca->irq_soft_mask as it is no
longer used as a flag for interrupt state, but a mask.

Signed-off-by: default avatarMadhavan Srinivasan <maddy@linux.vnet.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 01417c6c
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -432,7 +432,7 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
	mflr	r9;			/* Get LR, later save to stack	*/ \
	ld	r2,PACATOC(r13);	/* get kernel TOC into r2	*/ \
	std	r9,_LINK(r1);						   \
	lbz	r10,PACASOFTIRQEN(r13);				   \
	lbz	r10,PACAIRQSOFTMASK(r13);				   \
	mfspr	r11,SPRN_XER;		/* save XER in stackframe	*/ \
	std	r10,SOFTE(r1);						   \
	std	r11,_XER(r1);						   \
@@ -498,7 +498,7 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
#define SOFTEN_VALUE_0xea0	PACA_IRQ_EE

#define __SOFTEN_TEST(h, vec)						\
	lbz	r10,PACASOFTIRQEN(r13);					\
	lbz	r10,PACAIRQSOFTMASK(r13);				\
	andi.	r10,r10,IRQS_DISABLED;				\
	li	r10,SOFTEN_VALUE_##vec;					\
	bne	masked_##h##interrupt
+31 −25
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@
#define PACA_IRQ_HMI		0x20

/*
 * flags for paca->soft_enabled
 * flags for paca->irq_soft_mask
 */
#define IRQS_ENABLED		0
#define IRQS_DISABLED		1
@@ -49,14 +49,14 @@ extern void unknown_exception(struct pt_regs *regs);
#ifdef CONFIG_PPC64
#include <asm/paca.h>

static inline notrace unsigned long soft_enabled_return(void)
static inline notrace unsigned long irq_soft_mask_return(void)
{
	unsigned long flags;

	asm volatile(
		"lbz %0,%1(13)"
		: "=r" (flags)
		: "i" (offsetof(struct paca_struct, soft_enabled)));
		: "i" (offsetof(struct paca_struct, irq_soft_mask)));

	return flags;
}
@@ -64,18 +64,24 @@ static inline notrace unsigned long soft_enabled_return(void)
/*
 * The "memory" clobber acts as both a compiler barrier
 * for the critical section and as a clobber because
 * we changed paca->soft_enabled
 * we changed paca->irq_soft_mask
 */
static inline notrace void soft_enabled_set(unsigned long enable)
static inline notrace void irq_soft_mask_set(unsigned long mask)
{
#ifdef CONFIG_TRACE_IRQFLAGS
	/*
	 * mask must always include LINUX bit if any are set, and
	 * interrupts don't get replayed until the Linux interrupt is
	 * unmasked. This could be changed to replay partial unmasks
	 * in future, which would allow Linux masks to nest inside
	 * other masks, among other things. For now, be very dumb and
	 * simple.
	 * The irq mask must always include the STD bit if any are set.
	 *
	 * and interrupts don't get replayed until the standard
	 * interrupt (local_irq_disable()) is unmasked.
	 *
	 * Other masks must only provide additional masking beyond
	 * the standard, and they are also not replayed until the
	 * standard interrupt becomes unmasked.
	 *
	 * This could be changed, but it will require partial
	 * unmasks to be replayed, among other things. For now, take
	 * the simple approach.
	 */
	WARN_ON(mask && !(mask & IRQS_DISABLED));
#endif
@@ -83,12 +89,12 @@ static inline notrace void soft_enabled_set(unsigned long enable)
	asm volatile(
		"stb %0,%1(13)"
		:
		: "r" (enable),
		  "i" (offsetof(struct paca_struct, soft_enabled))
		: "r" (mask),
		  "i" (offsetof(struct paca_struct, irq_soft_mask))
		: "memory");
}

static inline notrace unsigned long soft_enabled_set_return(unsigned long mask)
static inline notrace unsigned long irq_soft_mask_set_return(unsigned long mask)
{
	unsigned long flags;

@@ -99,7 +105,7 @@ static inline notrace unsigned long soft_enabled_set_return(unsigned long mask)
	asm volatile(
		"lbz %0,%1(13); stb %2,%1(13)"
		: "=&r" (flags)
		: "i" (offsetof(struct paca_struct, soft_enabled)),
		: "i" (offsetof(struct paca_struct, irq_soft_mask)),
		  "r" (mask)
		: "memory");

@@ -108,12 +114,12 @@ static inline notrace unsigned long soft_enabled_set_return(unsigned long mask)

static inline unsigned long arch_local_save_flags(void)
{
	return soft_enabled_return();
	return irq_soft_mask_return();
}

static inline void arch_local_irq_disable(void)
{
	soft_enabled_set(IRQS_DISABLED);
	irq_soft_mask_set(IRQS_DISABLED);
}

extern void arch_local_irq_restore(unsigned long);
@@ -125,7 +131,7 @@ static inline void arch_local_irq_enable(void)

static inline unsigned long arch_local_irq_save(void)
{
	return soft_enabled_set_return(IRQS_DISABLED);
	return irq_soft_mask_set_return(IRQS_DISABLED);
}

static inline bool arch_irqs_disabled_flags(unsigned long flags)
@@ -149,7 +155,7 @@ static inline bool arch_irqs_disabled(void)
#define hard_irq_disable()	do {				\
	unsigned long flags;					\
	__hard_irq_disable();					\
	flags = soft_enabled_set_return(IRQS_DISABLED);\
	flags = irq_soft_mask_set_return(IRQS_DISABLED);	\
	local_paca->irq_happened |= PACA_IRQ_HARD_DIS;		\
	if (!arch_irqs_disabled_flags(flags))			\
		trace_hardirqs_off();				\
+6 −6
Original line number Diff line number Diff line
@@ -47,14 +47,14 @@
 * be clobbered.
 */
#define RECONCILE_IRQ_STATE(__rA, __rB)		\
	lbz	__rA,PACASOFTIRQEN(r13);	\
	lbz	__rA,PACAIRQSOFTMASK(r13);	\
	lbz	__rB,PACAIRQHAPPENED(r13);	\
	andi.	__rA,__rA,IRQS_DISABLED;	\
	li	__rA,IRQS_DISABLED;		\
	ori	__rB,__rB,PACA_IRQ_HARD_DIS;	\
	stb	__rB,PACAIRQHAPPENED(r13);	\
	bne	44f;				\
	stb	__rA,PACASOFTIRQEN(r13);	\
	stb	__rA,PACAIRQSOFTMASK(r13);	\
	TRACE_DISABLE_INTS;			\
44:

@@ -66,7 +66,7 @@
	lbz	__rA,PACAIRQHAPPENED(r13);	\
	li	__rB,IRQS_DISABLED;		\
	ori	__rA,__rA,PACA_IRQ_HARD_DIS;	\
	stb	__rB,PACASOFTIRQEN(r13);	\
	stb	__rB,PACAIRQSOFTMASK(r13);	\
	stb	__rA,PACAIRQHAPPENED(r13)
#endif
#endif
+1 −1
Original line number Diff line number Diff line
@@ -873,7 +873,7 @@ static inline void kvmppc_fix_ee_before_entry(void)

	/* Only need to enable IRQs by hard enabling them after this */
	local_paca->irq_happened = 0;
	soft_enabled_set(IRQS_ENABLED);
	irq_soft_mask_set(IRQS_ENABLED);
#endif
}

+1 −1
Original line number Diff line number Diff line
@@ -159,7 +159,7 @@ struct paca_struct {
	u64 saved_r1;			/* r1 save for RTAS calls or PM */
	u64 saved_msr;			/* MSR saved here by enter_rtas */
	u16 trap_save;			/* Used when bad stack is encountered */
	u8 soft_enabled;		/* irq soft-enable flag */
	u8 irq_soft_mask;		/* mask for irq soft masking */
	u8 irq_happened;		/* irq happened while soft-disabled */
	u8 io_sync;			/* writel() needs spin_unlock sync */
	u8 irq_work_pending;		/* IRQ_WORK interrupt while soft-disable */
Loading