Skip to content

Commit 1acfd2b

Browse files
committed
Merge tag 'powerpc-6.6-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
Pull powerpc fixes from Michael Ellerman: - Fix stale propagated yield_cpu in qspinlocks leading to lockups - Fix broken hugepages on some configs due to ARCH_FORCE_MAX_ORDER - Fix a spurious warning when copros are in use at exit time Thanks to Nicholas Piggin, Christophe Leroy, Nysal Jan K.A Sachin Sant, and Shrikanth Hegde. * tag 'powerpc-6.6-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: powerpc/qspinlock: Fix stale propagated yield_cpu powerpc/64s/radix: Don't warn on copros in radix__tlb_flush() powerpc/mm: Allow ARCH_FORCE_MAX_ORDER up to 12
2 parents d537ae4 + f9bc9bb commit 1acfd2b

File tree

3 files changed

+5
-9
lines changed

3 files changed

+5
-9
lines changed

arch/powerpc/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -910,7 +910,7 @@ config ARCH_FORCE_MAX_ORDER
910910
default "6" if PPC32 && PPC_64K_PAGES
911911
range 4 10 if PPC32 && PPC_256K_PAGES
912912
default "4" if PPC32 && PPC_256K_PAGES
913-
range 10 10
913+
range 10 12
914914
default "10"
915915
help
916916
The kernel page allocator limits the size of maximal physically

arch/powerpc/lib/qspinlock.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,9 @@ static __always_inline bool yield_to_prev(struct qspinlock *lock, struct qnode *
406406
if ((yield_count & 1) == 0)
407407
goto yield_prev; /* owner vcpu is running */
408408

409+
if (get_owner_cpu(READ_ONCE(lock->val)) != yield_cpu)
410+
goto yield_prev; /* re-sample lock owner */
411+
409412
spin_end();
410413

411414
preempted = true;

arch/powerpc/mm/book3s64/radix_tlb.c

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1212,14 +1212,7 @@ void radix__tlb_flush(struct mmu_gather *tlb)
12121212

12131213
smp_mb(); /* see radix__flush_tlb_mm */
12141214
exit_flush_lazy_tlbs(mm);
1215-
_tlbiel_pid(mm->context.id, RIC_FLUSH_ALL);
1216-
1217-
/*
1218-
* It should not be possible to have coprocessors still
1219-
* attached here.
1220-
*/
1221-
if (WARN_ON_ONCE(atomic_read(&mm->context.copros) > 0))
1222-
__flush_all_mm(mm, true);
1215+
__flush_all_mm(mm, true);
12231216

12241217
preempt_enable();
12251218
} else {

0 commit comments

Comments
 (0)