mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
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
This commit is contained in:
@@ -910,7 +910,7 @@ config ARCH_FORCE_MAX_ORDER
|
||||
default "6" if PPC32 && PPC_64K_PAGES
|
||||
range 4 10 if PPC32 && PPC_256K_PAGES
|
||||
default "4" if PPC32 && PPC_256K_PAGES
|
||||
range 10 10
|
||||
range 10 12
|
||||
default "10"
|
||||
help
|
||||
The kernel page allocator limits the size of maximal physically
|
||||
|
||||
@@ -406,6 +406,9 @@ static __always_inline bool yield_to_prev(struct qspinlock *lock, struct qnode *
|
||||
if ((yield_count & 1) == 0)
|
||||
goto yield_prev; /* owner vcpu is running */
|
||||
|
||||
if (get_owner_cpu(READ_ONCE(lock->val)) != yield_cpu)
|
||||
goto yield_prev; /* re-sample lock owner */
|
||||
|
||||
spin_end();
|
||||
|
||||
preempted = true;
|
||||
|
||||
@@ -1212,14 +1212,7 @@ void radix__tlb_flush(struct mmu_gather *tlb)
|
||||
|
||||
smp_mb(); /* see radix__flush_tlb_mm */
|
||||
exit_flush_lazy_tlbs(mm);
|
||||
_tlbiel_pid(mm->context.id, RIC_FLUSH_ALL);
|
||||
|
||||
/*
|
||||
* It should not be possible to have coprocessors still
|
||||
* attached here.
|
||||
*/
|
||||
if (WARN_ON_ONCE(atomic_read(&mm->context.copros) > 0))
|
||||
__flush_all_mm(mm, true);
|
||||
__flush_all_mm(mm, true);
|
||||
|
||||
preempt_enable();
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user