diff options
Diffstat (limited to 'arch/powerpc/include/asm/interrupt.h')
| -rw-r--r-- | arch/powerpc/include/asm/interrupt.h | 10 | 
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/interrupt.h b/arch/powerpc/include/asm/interrupt.h index 7b610864b364..2d6c886b40f4 100644 --- a/arch/powerpc/include/asm/interrupt.h +++ b/arch/powerpc/include/asm/interrupt.h @@ -336,6 +336,14 @@ static inline void interrupt_nmi_enter_prepare(struct pt_regs *regs, struct inte  	if (IS_ENABLED(CONFIG_KASAN))  		return; +	/* +	 * Likewise, do not use it in real mode if percpu first chunk is not +	 * embedded. With CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK enabled there +	 * are chances where percpu allocation can come from vmalloc area. +	 */ +	if (percpu_first_chunk_is_paged) +		return; +  	/* Otherwise, it should be safe to call it */  	nmi_enter();  } @@ -351,6 +359,8 @@ static inline void interrupt_nmi_exit_prepare(struct pt_regs *regs, struct inter  		// no nmi_exit for a pseries hash guest taking a real mode exception  	} else if (IS_ENABLED(CONFIG_KASAN)) {  		// no nmi_exit for KASAN in real mode +	} else if (percpu_first_chunk_is_paged) { +		// no nmi_exit if percpu first chunk is not embedded  	} else {  		nmi_exit();  	}  |