[RFC PATCH v2 08/11] powerpc: Add "mask_lvl" paramater to MASKABLE_* macros

Nicholas Piggin npiggin at gmail.com
Mon Aug 1 15:21:00 AEST 2016

On Mon,  1 Aug 2016 00:36:26 +0530
Madhavan Srinivasan <maddy at linux.vnet.ibm.com> wrote:

> Make it explicit the interrupt masking level supported
> by a gievn interrupt handler. Patch correspondingly
> extends the MASKABLE_* macros with an addition's parameter.
> "mask_lvl" parameter is passed to SOFTEN_TEST macro to decide
> on masking the interrupt.

Hey Madhavan,

It looks like this has worked quite nicely. I think you've
managed to avoid any additional instructions in fastpaths
if I'm reading correctly.

I will do a more comprehensive review, but I wanted to ask:

> @@ -426,79 +426,81 @@ label##_relon_hv:						\
>  #define SOFTEN_VALUE_0xe60	PACA_IRQ_HMI
>  #define SOFTEN_VALUE_0xe62	PACA_IRQ_HMI
> -#define __SOFTEN_TEST(h, vec)						\
> +#define __SOFTEN_TEST(h, vec, mask_lvl)					\
>  	lbz	r10,PACASOFTIRQEN(r13);					\
> -	cmpwi	r10,IRQ_DISABLE_LEVEL_LINUX;				\
> +	andi.	r10,r10,mask_lvl;					\
>  	li	r10,SOFTEN_VALUE_##vec;					\
> -	bge	masked_##h##interrupt
> -#define _SOFTEN_TEST(h, vec)	__SOFTEN_TEST(h, vec)
> +	bne	masked_##h##interrupt
> +#define _SOFTEN_TEST(h, vec, mask_lvl)	__SOFTEN_TEST(h, vec, mask_lvl)

We're talking about IRQ masking levels, but here it looks
like you're actually treating it as a mask.

I don't have a strong preference. Mask is more flexible, but
potentially constrained in how many interrupt types it can
cope with. That said, I doubt we'll need more than 8 mask bits
considering we've lived with one for years. So perhaps a mask
is a better choice. Ben, others, any preferences?

We should just use either "mask" or "level" everywhere, depending
on what we go with.


More information about the Linuxppc-dev mailing list