15 Feb, 2017

2 commits

  • commit 9b256714979fad61ae11d90b53cf67dd5e6484eb upstream.

    The IPIs come in as HVI not EE, so we need to test the appropriate
    SRR1 bits. The encoding is such that it won't have false positives
    on P7 and P8 so we can just test it like that. We also need to handle
    the icp-opal variant of the flush.

    Fixes: d74361881f0d ("powerpc/xics: Add ICP OPAL backend")
    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Benjamin Herrenschmidt
     
  • commit 90c1e3c2fafec57fcb55b5d69bcf293b1a5fc8b3 upstream.

    Three tiny changes to the ERAT flushing logic: First don't make
    it depend on DD1. It hasn't been decided yet but we might run
    DD2 in a mode that also requires explicit flushes for performance
    reasons so make it unconditional. We also add a missing isync, and
    finally remove the flush from _tlbiel_va as it is only necessary
    for congruence-class invalidations (PID, LPID and full TLB), not
    targetted invalidations.

    Fixes: 96ed1fe511a8 ("powerpc/mm/radix: Invalidate ERAT on tlbiel for POWER9 DD1")
    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Benjamin Herrenschmidt
     

09 Feb, 2017

4 commits

  • commit a0615a16f7d0ceb5804d295203c302d496d8ee91 upstream.

    When setting a 2MB pte, radix__map_kernel_page() is using the address

    ptep = (pte_t *)pudp;

    Fix this conversion to use pmdp instead. Use pmdp_ptep() to do this
    instead of casting the pointer.

    Fixes: 2bfd65e45e87 ("powerpc/mm/radix: Add radix callbacks for early init routines")
    Reviewed-by: Aneesh Kumar K.V
    Signed-off-by: Reza Arbab
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Reza Arbab
     
  • commit b5fa0f7f88edcde37df1807fdf9ff10ec787a60e upstream.

    Anton says: In commit 4db7327194db ("powerpc: Add option to use jump
    label for cpu_has_feature()") and commit c12e6f24d413 ("powerpc: Add
    option to use jump label for mmu_has_feature()") we added:

    BUILD_BUG_ON(!__builtin_constant_p(feature))

    to cpu_has_feature() and mmu_has_feature() in order to catch usage
    issues (such as cpu_has_feature(cpu_has_feature(X), which has happened
    once in the past). Unfortunately LLVM isn't smart enough to resolve
    this, and it errors out.

    I work around it in my clang/LLVM builds of the kernel, but I have just
    discovered that it causes a lot of issues for the bcc (eBPF) trace tool
    (which uses LLVM).

    For now just #ifdef it away for clang builds.

    Fixes: 4db7327194db ("powerpc: Add option to use jump label for cpu_has_feature()")
    Fixes: c12e6f24d413 ("powerpc: Add option to use jump label for mmu_has_feature()")
    Reported-by: Anton Blanchard
    Tested-by: Naveen N. Rao
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Michael Ellerman
     
  • commit af2b7fa17eb92e52b65f96604448ff7a2a89ee99 upstream.

    prom_init.c calls 'instance-to-package' twice, but the return
    is not checked during prom_find_boot_cpu(). The result is then
    passed to prom_getprop(), which could be PROM_ERROR. Add a return check
    to prevent this.

    This was found on a pasemi system, where CFE doesn't have a working
    'instance-to package' prom call.

    Before Commit 5c0484e25ec0 ('powerpc: Endian safe trampoline') the area
    around addr 0 was mostly 0's and this doesn't cause a problem. Once the
    macro 'FIXUP_ENDIAN' has been added to head_64.S, the low memory area
    now has non-zero values, which cause the prom_getprop() call
    to hang.

    mpe: Also confirmed that under SLOF if 'instance-to-package' did fail
    with PROM_ERROR we would crash in SLOF. So the bug is not specific to
    CFE, it's just that other open firmwares don't trigger it because they
    have a working 'instance-to-package'.

    Fixes: 5c0484e25ec0 ("powerpc: Endian safe trampoline")
    Signed-off-by: Darren Stevens
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Darren Stevens
     
  • commit f05fea5b3574a5926c53865eea27139bb40b2f2b upstream.

    In __eeh_clear_pe_frozen_state(), we should pass the flag's value
    instead of its address to eeh_unfreeze_pe(). The isolated flag is
    cleared if no error returned from __eeh_clear_pe_frozen_state(). We
    never observed the error from the function. So the isolated flag should
    have been always cleared, no real issue is caused because of the misused
    @flag.

    This fixes the code by passing the value of @flag to eeh_unfreeze_pe().

    Fixes: 5cfb20b96f6 ("powerpc/eeh: Emulate EEH recovery for VFIO devices")
    Signed-off-by: Gavin Shan
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Gavin Shan
     

26 Jan, 2017

5 commits

  • commit 178f358208ceb8b38e5cff3f815e0db4a6a70a07 upstream.

    IBM bit 31 (for the rest of us - bit 0) is a reserved field in the
    instruction definition of mtspr and mfspr. Hardware is encouraged to
    (and does) ignore it.

    As a result, if userspace executes an mtspr DSCR with the reserved bit
    set, we get a DSCR facility unavailable exception. The kernel fails to
    match against the expected value/mask, and we silently return to
    userspace to try and re-execute the same mtspr DSCR instruction. We
    loop forever until the process is killed.

    We should do something here, and it seems mirroring what hardware does
    is the better option vs killing the process. While here, relax the
    matching of mfspr PVR too.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Anton Blanchard
     
  • commit b34ca60148c53971d373643195cc5c4d5d20be78 upstream.

    Ensure that if userspace supplies insufficient data to PTRACE_SETREGSET
    to fill all the check pointed registers, the thread's old check pointed
    registers are preserved.

    Fixes: 9d3918f7c0e5 ("powerpc/ptrace: Enable support for NT_PPC_CVSX")
    Fixes: 19cbcbf75a0c ("powerpc/ptrace: Enable support for NT_PPC_CFPR")
    Signed-off-by: Dave Martin
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Dave Martin
     
  • commit 99dfe80a2a246c600440a815741fd2e74a8b4977 upstream.

    Ensure that if userspace supplies insufficient data to PTRACE_SETREGSET
    to fill all the registers, the thread's old registers are preserved.

    Fixes: c6e6771b87d4 ("powerpc: Introduce VSX thread_struct and CONFIG_VSX")
    Signed-off-by: Dave Martin
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Dave Martin
     
  • commit d89f473ff6f84872e761419f7233d6e00f99c340 upstream.

    Use 0x10012 event code for PM_BRU_CMPL event in power9 event list
    instead of current 0x40060.

    Fixes: 34922527a2bcb ('powerpc/perf: Add power9 event list macros for generic and cache events')
    Signed-off-by: Madhavan Srinivasan
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Madhavan Srinivasan
     
  • commit 9728a7c8ab2f7a1c8d5c95278d2e4f4ac1285385 upstream.

    The icp-opal call is missing the code from icp-native to recover
    interrupts snatched by KVM. Without that, when running KVM, we can
    get into a situation where an interrupt is lost and the CPU stuck
    with an elevated CPPR.

    Also harden replay by always checking the return from opal_int_eoi().

    Fixes: d74361881f0d ("powerpc/xics: Add ICP OPAL backend")
    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Benjamin Herrenschmidt
     

20 Jan, 2017

5 commits

  • commit d4791db527bf397c84c9956c3ece9692ed5322ac upstream.

    Whenever a PE is initialised in powernv, opal_pci_eeh_freeze_clear() is
    called. This is to remove any existing freeze, and has no negative side
    effects if the PE is already in an unfrozen state. On PHB backends that
    don't support this operation and return OPAL_UNSUPPORTED, this creates a
    scary and misleading warning message.

    Skip the warning message on init if OPAL_UNSUPPORTED is returned.

    As far as I'm aware, this currently only affects NPUs.

    Fixes: 313483d ("powerpc/powernv: Unfreeze PE on allocation")
    Signed-off-by: Russell Currey
    Acked-by: Gavin Shan
    Reviewed-by: Andrew Donnellan
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Russell Currey
     
  • commit fe0f3168169f7c34c29b0cf0c489f126a7f29643 upstream.

    Make sure to drop any reference taken by bus_find_device() in the sysfs
    callbacks that are used to create and destroy devices based on
    device-tree entries.

    Fixes: 6bccf755ff53 ("[POWERPC] ibmebus: dynamic addition/removal of adapters, some code cleanup")
    Signed-off-by: Johan Hovold
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • commit 815a7141c4d1b11610dccb7fcbb38633759824f2 upstream.

    Make sure to drop any reference taken by bus_find_device() when creating
    devices during init and driver registration.

    Fixes: 55347cc9962f ("[POWERPC] ibmebus: Add device creation and bus probing based on of_device")
    Signed-off-by: Johan Hovold
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • commit 555c16328ae6d75a90e234eac9b51998d68f185b upstream.

    Version 3.00 of the ISA states that the PATS (partition table size) field
    of the PTCR (partition table control register) and the PRTS (process table
    size) field of the partition table entry must both be less than or equal
    to 24. However the actual size of the partition and process tables is equal
    to 2 to the power of 12 plus the PATS and PRTS fields, respectively. This
    means that the max allowable size of each of these tables is 2^36 or 64GB
    for both.

    Thus when checking the size shift for each we should be checking for values
    of greater than 36 instead of the current check for shifts larger than 24
    and 23.

    Fixes: 2bfd65e45e877fb5704730244da67c748d28a1b8
    Signed-off-by: Suraj Jitindar Singh
    Reviewed-by: Balbir Singh
    Reviewed-by: Aneesh Kumar K.V
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Suraj Jitindar Singh
     
  • commit 6b243fcfb5f1e16bcf732e6f86a63f8af5b59a9f upstream.

    This changes the way that we support the new ISA v3.00 HPTE format.
    Instead of adapting everything that uses HPTE values to handle either
    the old format or the new format, depending on which CPU we are on,
    we now convert explicitly between old and new formats if necessary
    in the low-level routines that actually access HPTEs in memory.
    This limits the amount of code that needs to know about the new
    format and makes the conversions explicit. This is OK because the
    old format contains all the information that is in the new format.

    This also fixes operation under a hypervisor, because the H_ENTER
    hypercall (and other hypercalls that deal with HPTEs) will continue
    to require the HPTE value to be supplied in the old format. At
    present the kernel will not boot in HPT mode on POWER9 under a
    hypervisor.

    This fixes and partially reverts commit 50de596de8be
    ("powerpc/mm/hash: Add support for Power9 Hash", 2016-04-29).

    Fixes: 50de596de8be ("powerpc/mm/hash: Add support for Power9 Hash")
    Signed-off-by: Paul Mackerras
    Reviewed-by: Aneesh Kumar K.V
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Paul Mackerras
     

15 Jan, 2017

1 commit

  • commit 8ae679c4bc2ea2d16d92620da8e3e9332fa4039f upstream.

    I am getting the following warning when I build kernel 4.9-git on my
    PowerBook G4 with a 32-bit PPC processor:

    AS arch/powerpc/kernel/misc_32.o
    arch/powerpc/kernel/misc_32.S:299:7: warning: "CONFIG_FSL_BOOKE" is not defined [-Wundef]

    This problem is evident after commit 989cea5c14be ("kbuild: prevent
    lib-ksyms.o rebuilds"); however, this change in kbuild only exposes an
    error that has been in the code since 2005 when this source file was
    created. That was with commit 9994a33865f4 ("powerpc: Introduce
    entry_{32,64}.S, misc_{32,64}.S, systbl.S").

    The offending line does not make a lot of sense. This error does not
    seem to cause any errors in the executable, thus I am not recommending
    that it be applied to any stable versions.

    Thanks to Nicholas Piggin for suggesting this solution.

    Fixes: 9994a33865f4 ("powerpc: Introduce entry_{32,64}.S, misc_{32,64}.S, systbl.S")
    Signed-off-by: Larry Finger
    Cc: Nicholas Piggin
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: Michael Ellerman
    Cc: linuxppc-dev@lists.ozlabs.org
    Signed-off-by: Linus Torvalds
    Signed-off-by: Greg Kroah-Hartman

    Larry Finger
     

09 Jan, 2017

5 commits

  • commit ff45000fcb56b5b0f1a14a865d3541746d838a0a upstream.

    The boot wrapper performs its own relocations and does not require
    PT_INTERP segment. However currently we don't tell the linker that.

    Prior to binutils 2.28 that works OK. But since binutils commit
    1a9ccd70f9a7 ("Fix the linker so that it will not silently generate ELF
    binaries with invalid program headers. Fix readelf to report such
    invalid binaries.") binutils tries to create a program header segment
    due to PT_INTERP, and the link fails because there is no space for it:

    ld: arch/powerpc/boot/zImage.pseries: Not enough room for program headers, try linking with -N
    ld: final link failed: Bad value

    So tell the linker not to do that, by passing --no-dynamic-linker.

    Reported-by: Anton Blanchard
    Signed-off-by: Nicholas Piggin
    [mpe: Drop dependency on ld-version.sh and massage change log]
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Nicholas Piggin
     
  • commit 6dff5b67054e17c91bd630bcdda17cfca5aa4215 upstream.

    GCC 5 generates different code for this bootwrapper null check that
    causes the PS3 to hang very early in its bootup. This check is of
    limited value, so just get rid of it.

    Signed-off-by: Geoff Levand
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Geoff Levand
     
  • commit f87f253bac3ce4a4eb2a60a1ae604d74e65f9042 upstream.

    From 80f23935cadb ("powerpc: Convert cmp to cmpd in idle enter sequence"):

    PowerPC's "cmp" instruction has four operands. Normally people write
    "cmpw" or "cmpd" for the second cmp operand 0 or 1. But, frequently
    people forget, and write "cmp" with just three operands.

    With older binutils this is silently accepted as if this was "cmpw",
    while often "cmpd" is wanted. With newer binutils GAS will complain
    about this for 64-bit code. For 32-bit code it still silently assumes
    "cmpw" is what is meant.

    In this case, cmpwi is called for, so this is just a build fix for
    new toolchains.

    Signed-off-by: Nicholas Piggin
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Nicholas Piggin
     
  • commit f064a0de1579fabded8990bed93971e30deb9ecb upstream.

    The hashed page table MMU in POWER processors can update the R
    (reference) and C (change) bits in a HPTE at any time until the
    HPTE has been invalidated and the TLB invalidation sequence has
    completed. In kvmppc_h_protect, which implements the H_PROTECT
    hypercall, we read the HPTE, modify the second doubleword,
    invalidate the HPTE in memory, do the TLB invalidation sequence,
    and then write the modified value of the second doubleword back
    to memory. In doing so we could overwrite an R/C bit update done
    by hardware between when we read the HPTE and when the TLB
    invalidation completed. To fix this we re-read the second
    doubleword after the TLB invalidation and OR in the (possibly)
    new values of R and C. We can use an OR since hardware only ever
    sets R and C, never clears them.

    This race was found by code inspection. In principle this bug could
    cause occasional guest memory corruption under host memory pressure.

    Fixes: a8606e20e41a ("KVM: PPC: Handle some PAPR hcalls in the kernel", 2011-06-29)
    Signed-off-by: Paul Mackerras
    Signed-off-by: Greg Kroah-Hartman

    Paul Mackerras
     
  • commit 0d808df06a44200f52262b6eb72bcb6042f5a7c5 upstream.

    When switching from/to a guest that has a transaction in progress,
    we need to save/restore the checkpointed register state. Although
    XER is part of the CPU state that gets checkpointed, the code that
    does this saving and restoring doesn't save/restore XER.

    This fixes it by saving and restoring the XER. To allow userspace
    to read/write the checkpointed XER value, we also add a new ONE_REG
    specifier.

    The visible effect of this bug is that the guest may see its XER
    value being corrupted when it uses transactions.

    Fixes: e4e38121507a ("KVM: PPC: Book3S HV: Add transactional memory support")
    Fixes: 0a8eccefcb34 ("KVM: PPC: Book3S HV: Add missing code for transaction reclaim on guest exit")
    Signed-off-by: Paul Mackerras
    Reviewed-by: Thomas Huth
    Signed-off-by: Paul Mackerras
    Signed-off-by: Greg Kroah-Hartman

    Paul Mackerras
     

06 Jan, 2017

1 commit

  • commit 84d77d3f06e7e8dea057d10e8ec77ad71f721be3 upstream.

    It is the reasonable expectation that if an executable file is not
    readable there will be no way for a user without special privileges to
    read the file. This is enforced in ptrace_attach but if ptrace
    is already attached before exec there is no enforcement for read-only
    executables.

    As the only way to read such an mm is through access_process_vm
    spin a variant called ptrace_access_vm that will fail if the
    target process is not being ptraced by the current process, or
    the current process did not have sufficient privileges when ptracing
    began to read the target processes mm.

    In the ptrace implementations replace access_process_vm by
    ptrace_access_vm. There remain several ptrace sites that still use
    access_process_vm as they are reading the target executables
    instructions (for kernel consumption) or register stacks. As such it
    does not appear necessary to add a permission check to those calls.

    This bug has always existed in Linux.

    Fixes: v1.0
    Reported-by: Andy Lutomirski
    Signed-off-by: "Eric W. Biederman"
    Signed-off-by: Greg Kroah-Hartman

    Eric W. Biederman
     

06 Dec, 2016

1 commit

  • Pull powerpc fixes from Michael Ellerman:
    "Four fixes, the first for code we merged this cycle and three that are
    also going to stable:

    - On 64-bit Book3E we were not placing the .text section where we
    said we would in the asm.

    - We broke building the boot wrapper on some 32-bit toolchains.

    - Lazy icache flushing was broken on pre-POWER5 machines.

    - One of the error paths in our EEH code would lead to a deadlock.

    Thanks to: Andrew Donnellan, Ben Hutchings, Benjamin Herrenschmidt,
    Nicholas Piggin"

    * tag 'powerpc-4.9-7' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/64: Fix placement of .text to be immediately following .head.text
    powerpc/eeh: Fix deadlock when PE frozen state can't be cleared
    powerpc/mm: Fix lazy icache flush on pre-POWER5
    powerpc/boot: Fix build failure in 32-bit boot wrapper

    Linus Torvalds
     

01 Dec, 2016

2 commits

  • Do not introduce any additional alignment. Placement of text section
    will be set by fixed section macros. Without this, output section
    alignment defaults to 4096, which makes BookE text section start at
    0x1000 when it is expected to start at 0x100.

    This was introduced by commit 57f266497d81 ("powerpc: Use gas sections
    for arranging exception vectors") and was caught with the scripted head
    section checker (not yet merged).

    Fixes: 57f266497d81 ("powerpc: Use gas sections for arranging exception vectors")
    Signed-off-by: Nicholas Piggin
    Signed-off-by: Michael Ellerman

    Nicholas Piggin
     
  • In eeh_reset_device(), we take the pci_rescan_remove_lock immediately after
    after we call eeh_reset_pe() to reset the PCI controller. We then call
    eeh_clear_pe_frozen_state(), which can return an error. In this case, we
    bail out of eeh_reset_device() without calling pci_unlock_rescan_remove().

    Add a call to pci_unlock_rescan_remove() in the eeh_clear_pe_frozen_state()
    error path so that we don't cause a deadlock later on.

    Reported-by: Pradipta Ghosh
    Fixes: 78954700631f ("powerpc/eeh: Avoid I/O access during PE reset")
    Cc: stable@vger.kernel.org # v3.16+
    Signed-off-by: Andrew Donnellan
    Acked-by: Russell Currey
    Signed-off-by: Michael Ellerman

    Andrew Donnellan
     

29 Nov, 2016

1 commit

  • On 64-bit CPUs with no-execute support and non-snooping icache, such as
    970 or POWER4, we have a software mechanism to ensure coherency of the
    cache (using exec faults when needed).

    This was broken due to a logic error when the code was rewritten
    from assembly to C, previously the assembly code did:

    BEGIN_FTR_SECTION
    mr r4,r30
    mr r5,r7
    bl hash_page_do_lazy_icache
    END_FTR_SECTION(CPU_FTR_NOEXECUTE|CPU_FTR_COHERENT_ICACHE, CPU_FTR_NOEXECUTE)

    Which tests that:
    (cpu_features & (NOEXECUTE | COHERENT_ICACHE)) == NOEXECUTE

    Which says that the current cpu does have NOEXECUTE, but does not have
    COHERENT_ICACHE.

    Fixes: 91f1da99792a ("powerpc/mm: Convert 4k hash insert to C")
    Fixes: 89ff725051d1 ("powerpc/mm: Convert __hash_page_64K to C")
    Fixes: a43c0eb8364c ("powerpc/mm: Convert 4k insert from asm to C")
    Cc: stable@vger.kernel.org # v4.5+
    Signed-off-by: Benjamin Herrenschmidt
    Reviewed-by: Aneesh Kumar K.V
    [mpe: Change log verbosification]
    Signed-off-by: Michael Ellerman

    Benjamin Herrenschmidt
     

28 Nov, 2016

1 commit

  • OPAL is not callable from 32-bit mode and the assembly code for it
    may not even build (depending on how binutils was configured).

    References: https://buildd.debian.org/status/fetch.php?pkg=linux&arch=powerpcspe&ver=4.8.7-1&stamp=1479203712
    Fixes: 656ad58ef19e ("powerpc/boot: Add OPAL console to epapr wrappers")
    Cc: stable@vger.kernel.org # v4.8+
    Signed-off-by: Ben Hutchings
    Signed-off-by: Michael Ellerman

    Ben Hutchings
     

27 Nov, 2016

1 commit

  • Pull powerpc fixes from Michael Ellerman:
    "Fixes marked for stable:
    - Set missing wakeup bit in LPCR on POWER9
    - Fix the early OPAL console wrappers
    - Fixup kernel read only mapping

    Fixes for code merged this cycle:
    - Fix missing CRCs, add more asm-prototypes.h declarations"

    * tag 'powerpc-4.9-6' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/mm: Fixup kernel read only mapping
    powerpc/boot: Fix the early OPAL console wrappers
    powerpc: Fix missing CRCs, add more asm-prototypes.h declarations
    powerpc: Set missing wakeup bit in LPCR on POWER9

    Linus Torvalds
     

25 Nov, 2016

1 commit

  • With commit e58e87adc8bf9 ("powerpc/mm: Update _PAGE_KERNEL_RO") we
    started using the ppp value 0b110 to map kernel readonly. But that
    facility was only added as part of ISA 2.04. For earlier ISA version
    only supported ppp bit value for readonly mapping is 0b011. (This
    implies both user and kernel get mapped using the same ppp bit value for
    readonly mapping.).
    Update the code such that for earlier architecture version we use ppp
    value 0b011 for readonly mapping. We don't differentiate between power5+
    and power5 here and apply the new ppp bits only from power6 (ISA 2.05).
    This keep the changes minimal.

    This fixes issue with PS3 spu usage reported at
    https://lkml.kernel.org/r/rep.1421449714.geoff@infradead.org

    Fixes: e58e87adc8bf9 ("powerpc/mm: Update _PAGE_KERNEL_RO")
    Cc: stable@vger.kernel.org # v4.7+
    Tested-by: Geoff Levand
    Signed-off-by: Aneesh Kumar K.V
    Signed-off-by: Michael Ellerman

    Aneesh Kumar K.V
     

24 Nov, 2016

1 commit

  • When configured with CONFIG_PPC_EARLY_DEBUG_OPAL=y the kernel expects
    the OPAL entry and base addresses to be passed in r8 and r9
    respectively. Currently the wrapper does not attempt to restore these
    values before entering the decompressed kernel which causes the kernel
    to branch into whatever happens to be in r9 when doing a write to the
    OPAL console in early boot.

    This patch adds a platform_ops hook that can be used to branch into the
    new kernel. The OPAL console driver patches this at runtime so that if
    the console is used it will be restored just prior to entering the
    kernel.

    Fixes: 656ad58ef19e ("powerpc/boot: Add OPAL console to epapr wrappers")
    Cc: stable@vger.kernel.org # v4.8+
    Signed-off-by: Oliver O'Halloran
    Signed-off-by: Michael Ellerman

    Oliver O'Halloran
     

22 Nov, 2016

2 commits

  • After patch 4efca4ed0 ("kbuild: modversions for EXPORT_SYMBOL() for asm"),
    asm exports can get modversions CRCs generated if they have C definitions
    in asm-prototypes.h. This patch adds missing definitions for 32 and 64 bit
    allmodconfig builds.

    Fixes: 9445aa1a3062 ("ppc: move exports to definitions")
    Signed-off-by: Nicholas Piggin
    Signed-off-by: Michael Ellerman

    Nicholas Piggin
     
  • There is a new bit, LPCR_PECE_HVEE (Hypervisor Virtualization Exit
    Enable), which controls wakeup from STOP states on Hypervisor
    Virtualization Interrupts (which happen to also be all external
    interrupts in host or bare metal mode).

    It needs to be set or we will miss wakeups.

    Fixes: 9baaef0a22c8 ("powerpc/irq: Add support for HV virtualization interrupts")
    Cc: stable@vger.kernel.org # v4.8+
    Signed-off-by: Benjamin Herrenschmidt
    [mpe: Rename it to HVEE to match the name in the ISA]
    Signed-off-by: Michael Ellerman

    Benjamin Herrenschmidt
     

20 Nov, 2016

1 commit

  • Pull powerpc fixes from Michael Ellerman:
    "Fixes marked for stable:
    - fix system reset interrupt winkle wakeups
    - fix setting of AIL in hypervisor mode

    Fixes for code merged this cycle:
    - fix exception vector build with 2.23 era binutils
    - fix missing update of HID register on secondary CPUs

    Other:
    - fix missing pr_cont()s
    - invalidate ERAT on tlbiel for POWER9 DD1"

    * tag 'powerpc-4.9-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/mm: Fix missing update of HID register on secondary CPUs
    powerpc/mm/radix: Invalidate ERAT on tlbiel for POWER9 DD1
    powerpc/64: Fix setting of AIL in hypervisor mode
    powerpc/oops: Fix missing pr_cont()s in instruction dump
    powerpc/oops: Fix missing pr_cont()s in show_regs()
    powerpc/oops: Fix missing pr_cont()s in print_msr_bits() et. al.
    powerpc/oops: Fix missing pr_cont()s in show_stack()
    powerpc: Fix exception vector build with 2.23 era binutils
    powerpc/64s: Fix system reset interrupt winkle wakeups

    Linus Torvalds
     

18 Nov, 2016

2 commits


15 Nov, 2016

1 commit

  • Commit d3cbff1b5 "powerpc: Put exception configuration in a common place"
    broke the setting of the AIL bit (which enables taking exceptions with
    the MMU still on) on all processors, moving it incorrectly to a function
    called only on the boot CPU. This was correct for the guest case but
    not when running in hypervisor mode.

    This fixes it by partially reverting that commit, putting the setting
    back in cpu_ready_for_interrupts()

    Fixes: d3cbff1b5a90 ("powerpc: Put exception configuration in a common place")
    Cc: stable@vger.kernel.org # v4.8+
    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Michael Ellerman

    Benjamin Herrenschmidt
     

12 Nov, 2016

3 commits