Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'powerpc-5.15-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux

Pull powerpc fixes from Michael Ellerman:

- Fix a bug exposed by a previous fix, where running guests with
certain SMT topologies could crash the host on Power8.

- Fix atomic sleep warnings when re-onlining CPUs, when PREEMPT is
enabled.

Thanks to Nathan Lynch, Srikar Dronamraju, and Valentin Schneider.

* tag 'powerpc-5.15-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
powerpc/smp: do not decrement idle task preempt count in CPU offline
powerpc/idle: Don't corrupt back chain when going idle

+6 -6
+6 -4
arch/powerpc/kernel/idle_book3s.S
··· 126 126 /* 127 127 * This is the sequence required to execute idle instructions, as 128 128 * specified in ISA v2.07 (and earlier). MSR[IR] and MSR[DR] must be 0. 129 - * 130 - * The 0(r1) slot is used to save r2 in isa206, so use that here. 129 + * We have to store a GPR somewhere, ptesync, then reload it, and create 130 + * a false dependency on the result of the load. It doesn't matter which 131 + * GPR we store, or where we store it. We have already stored r2 to the 132 + * stack at -8(r1) in isa206_idle_insn_mayloss, so use that. 131 133 */ 132 134 #define IDLE_STATE_ENTER_SEQ_NORET(IDLE_INST) \ 133 135 /* Magic NAP/SLEEP/WINKLE mode enter sequence */ \ 134 - std r2,0(r1); \ 136 + std r2,-8(r1); \ 135 137 ptesync; \ 136 - ld r2,0(r1); \ 138 + ld r2,-8(r1); \ 137 139 236: cmpd cr0,r2,r2; \ 138 140 bne 236b; \ 139 141 IDLE_INST; \
-2
arch/powerpc/kernel/smp.c
··· 1730 1730 1731 1731 void arch_cpu_idle_dead(void) 1732 1732 { 1733 - sched_preempt_enable_no_resched(); 1734 - 1735 1733 /* 1736 1734 * Disable on the down path. This will be re-enabled by 1737 1735 * start_secondary() via start_secondary_resume() below