Merge tag 'powerpc-4.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
Pull powerpc fixes from Michael Ellerman: - An implementation for the newly added hv_ops->flush() for the OPAL hvc console driver backends, I forgot to apply this after merging the hvc driver changes before the merge window. - Enable all PCI bridges at boot on powernv, to avoid races when multiple children of a bridge try to enable it simultaneously. This is a workaround until the PCI core can be enhanced to fix the races. - A fix to query PowerVM for the correct system topology at boot before initialising sched domains, seen in some configurations to cause broken scheduling etc. - A fix for pte_access_permitted() on "nohash" platforms. - Two commits to fix SIGBUS when using remap_pfn_range() seen on Power9 due to a workaround when using the nest MMU (GPUs, accelerators). - Another fix to the VFIO code used by KVM, the previous fix had some bugs which caused guests to not start in some configurations. - A handful of other minor fixes. Thanks to: Aneesh Kumar K.V, Benjamin Herrenschmidt, Christophe Leroy, Hari Bathini, Luke Dashjr, Mahesh Salgaonkar, Nicholas Piggin, Paul Mackerras, Srikar Dronamraju. * tag 'powerpc-4.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: powerpc/mce: Fix SLB rebolting during MCE recovery path. KVM: PPC: Book3S: Fix guest DMA when guest partially backed by THP pages powerpc/mm/radix: Only need the Nest MMU workaround for R -> RW transition powerpc/mm/books3s: Add new pte bit to mark pte temporarily invalid. powerpc/nohash: fix pte_access_permitted() powerpc/topology: Get topology for shared processors at boot powerpc64/ftrace: Include ftrace.h needed for enable/disable calls powerpc/powernv/pci: Work around races in PCI bridge enabling powerpc/fadump: cleanup crash memory ranges support powerpc/powernv: provide a console flush operation for opal hvc driver powerpc/traps: Avoid rate limit messages from show unhandled signals powerpc/64s: Fix PACA_IRQ_HARD_DIS accounting in idle_power4()
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
#include <linux/crash_dump.h>
|
||||
#include <linux/kobject.h>
|
||||
#include <linux/sysfs.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#include <asm/debugfs.h>
|
||||
#include <asm/page.h>
|
||||
@@ -1019,13 +1020,6 @@ static int fadump_setup_crash_memory_ranges(void)
|
||||
pr_debug("Setup crash memory ranges.\n");
|
||||
crash_mem_ranges = 0;
|
||||
|
||||
/* allocate memory for crash memory ranges for the first time */
|
||||
if (!max_crash_mem_ranges) {
|
||||
ret = allocate_crash_memory_ranges();
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* add the first memory chunk (RMA_START through boot_memory_size) as
|
||||
* a separate memory chunk. The reason is, at the time crash firmware
|
||||
|
@@ -32,6 +32,8 @@ END_FTR_SECTION_IFCLR(CPU_FTR_CAN_NAP)
|
||||
cmpwi 0,r4,0
|
||||
beqlr
|
||||
|
||||
/* This sequence is similar to prep_irq_for_idle() */
|
||||
|
||||
/* Hard disable interrupts */
|
||||
mfmsr r7
|
||||
rldicl r0,r7,48,1
|
||||
@@ -41,10 +43,15 @@ END_FTR_SECTION_IFCLR(CPU_FTR_CAN_NAP)
|
||||
/* Check if something happened while soft-disabled */
|
||||
lbz r0,PACAIRQHAPPENED(r13)
|
||||
cmpwi cr0,r0,0
|
||||
bnelr
|
||||
bne- 2f
|
||||
|
||||
/* Soft-enable interrupts */
|
||||
/*
|
||||
* Soft-enable interrupts. This will make power4_fixup_nap return
|
||||
* to our caller with interrupts enabled (soft and hard). The caller
|
||||
* can cope with either interrupts disabled or enabled upon return.
|
||||
*/
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
/* Tell the tracer interrupts are on, because idle responds to them. */
|
||||
mflr r0
|
||||
std r0,16(r1)
|
||||
stdu r1,-128(r1)
|
||||
@@ -73,3 +80,8 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
|
||||
isync
|
||||
b 1b
|
||||
|
||||
2: /* Return if an interrupt had happened while soft disabled */
|
||||
/* Set the HARD_DIS flag because interrupts are now hard disabled */
|
||||
ori r0,r0,PACA_IRQ_HARD_DIS
|
||||
stb r0,PACAIRQHAPPENED(r13)
|
||||
blr
|
||||
|
@@ -1160,6 +1160,11 @@ void __init smp_cpus_done(unsigned int max_cpus)
|
||||
if (smp_ops && smp_ops->bringup_done)
|
||||
smp_ops->bringup_done();
|
||||
|
||||
/*
|
||||
* On a shared LPAR, associativity needs to be requested.
|
||||
* Hence, get numa topology before dumping cpu topology
|
||||
*/
|
||||
shared_proc_topology_init();
|
||||
dump_numa_cpu_topology();
|
||||
|
||||
/*
|
||||
|
@@ -315,22 +315,21 @@ void user_single_step_siginfo(struct task_struct *tsk,
|
||||
info->si_addr = (void __user *)regs->nip;
|
||||
}
|
||||
|
||||
static bool show_unhandled_signals_ratelimited(void)
|
||||
{
|
||||
static DEFINE_RATELIMIT_STATE(rs, DEFAULT_RATELIMIT_INTERVAL,
|
||||
DEFAULT_RATELIMIT_BURST);
|
||||
return show_unhandled_signals && __ratelimit(&rs);
|
||||
}
|
||||
|
||||
static void show_signal_msg(int signr, struct pt_regs *regs, int code,
|
||||
unsigned long addr)
|
||||
{
|
||||
if (!show_unhandled_signals_ratelimited())
|
||||
static DEFINE_RATELIMIT_STATE(rs, DEFAULT_RATELIMIT_INTERVAL,
|
||||
DEFAULT_RATELIMIT_BURST);
|
||||
|
||||
if (!show_unhandled_signals)
|
||||
return;
|
||||
|
||||
if (!unhandled_signal(current, signr))
|
||||
return;
|
||||
|
||||
if (!__ratelimit(&rs))
|
||||
return;
|
||||
|
||||
pr_info("%s[%d]: %s (%d) at %lx nip %lx lr %lx code %x",
|
||||
current->comm, current->pid, signame(signr), signr,
|
||||
addr, regs->nip, regs->link, code);
|
||||
|
Reference in New Issue
Block a user