Commit cd80afff authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull powerpc fixes from Madhavan Srinivasan:

 - Fix for kexec warning due to SMT disable or partial SMT enabled

 - Handle font bitmap pointer with reloc_offset to fix boot crash

 - Fix to enable cpuidle state for Power11

 - Couple of misc fixes

Thanks to Aboorva Devarajan, Aditya Bodkhe, Cedar Maxwell, Christian
Zigotzky, Christophe Leroy, Christophe Leroy (CS GROUP), Finn Thain,
Gopi Krishna Menon, Guenter Roeck, Jan Stancek, Joe Lawrence, Josh
Poimboeuf, Justin M. Forbes, Madadi Vineeth Reddy, Naveen N Rao (AMD),
Nysal Jan K.A., Sachin P Bappalige, Samir M, Sourabh Jain, Srikar
Dronamraju, and Stan Johnson

* tag 'powerpc-6.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
  powerpc/32: Restore disabling of interrupts at interrupt/syscall exit
  powerpc/powernv: Enable cpuidle state detection for POWER11
  powerpc: Add reloc_offset() to font bitmap pointer used for bootx_printf()
  powerpc/tools: drop `-o pipefail` in gcc check scripts
  selftests/powerpc/pmu/: Add check_extended_reg_test to .gitignore
  powerpc/kexec: Enable SMT before waking offline CPUs
parents d26143bb 608328ba
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ static inline void __hard_EE_RI_disable(void)
	if (IS_ENABLED(CONFIG_BOOKE))
		wrtee(0);
	else if (IS_ENABLED(CONFIG_PPC_8xx))
		wrtspr(SPRN_NRI);
		wrtspr_sync(SPRN_NRI);
	else if (IS_ENABLED(CONFIG_PPC_BOOK3S_64))
		__mtmsrd(0, 1);
	else
+1 −0
Original line number Diff line number Diff line
@@ -1400,6 +1400,7 @@ static inline void mtmsr_isync(unsigned long val)
				     : "r" ((unsigned long)(v)) \
				     : "memory")
#define wrtspr(rn)	asm volatile("mtspr " __stringify(rn) ",2" : : : "memory")
#define wrtspr_sync(rn)	asm volatile("mtspr " __stringify(rn) ",2; sync" : : : "memory")

static inline void wrtee(unsigned long val)
{
+2 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <asm/io.h>
#include <asm/processor.h>
#include <asm/udbg.h>
#include <asm/setup.h>

#define NO_SCROLL

@@ -463,7 +464,7 @@ static noinline void draw_byte(unsigned char c, long locX, long locY)
{
	unsigned char *base	= calc_base(locX << 3, locY << 4);
	unsigned int font_index = c * 16;
	const unsigned char *font	= font_sun_8x16.data + font_index;
	const unsigned char *font = PTRRELOC(font_sun_8x16.data) + font_index;
	int rb			= dispDeviceRowBytes;

	rmci_maybe_on();
+0 −15
Original line number Diff line number Diff line
@@ -101,17 +101,6 @@ SYM_FUNC_END(__kuep_unlock)
.endm
#endif

.macro	clr_ri trash
#ifndef CONFIG_BOOKE
#ifdef CONFIG_PPC_8xx
	mtspr   SPRN_NRI, \trash
#else
	li	\trash, MSR_KERNEL & ~MSR_RI
	mtmsr	\trash
#endif
#endif
.endm

	.globl	transfer_to_syscall
transfer_to_syscall:
	stw	r3, ORIG_GPR3(r1)
@@ -160,7 +149,6 @@ ret_from_syscall:
	cmpwi	r3,0
	REST_GPR(3, r1)
syscall_exit_finish:
	clr_ri	r4
	mtspr	SPRN_SRR0,r7
	mtspr	SPRN_SRR1,r8

@@ -237,7 +225,6 @@ fast_exception_return:
	/* Clear the exception marker on the stack to avoid confusing stacktrace */
	li	r10, 0
	stw	r10, 8(r11)
	clr_ri	r10
	mtspr	SPRN_SRR1,r9
	mtspr	SPRN_SRR0,r12
	REST_GPR(9, r11)
@@ -270,7 +257,6 @@ interrupt_return:
.Lfast_user_interrupt_return:
	lwz	r11,_NIP(r1)
	lwz	r12,_MSR(r1)
	clr_ri	r4
	mtspr	SPRN_SRR0,r11
	mtspr	SPRN_SRR1,r12

@@ -313,7 +299,6 @@ END_FTR_SECTION_IFSET(CPU_FTR_NEED_PAIRED_STWCX)
	cmpwi	cr1,r3,0
	lwz	r11,_NIP(r1)
	lwz	r12,_MSR(r1)
	clr_ri	r4
	mtspr	SPRN_SRR0,r11
	mtspr	SPRN_SRR1,r12

+4 −1
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ static inline bool exit_must_hard_disable(void)
#else
static inline bool exit_must_hard_disable(void)
{
	return false;
	return true;
}
#endif

@@ -443,6 +443,9 @@ notrace unsigned long interrupt_exit_kernel_prepare(struct pt_regs *regs)

		if (unlikely(stack_store))
			__hard_EE_RI_disable();
#else
	} else {
		__hard_EE_RI_disable();
#endif /* CONFIG_PPC64 */
	}

Loading