15 Sep, 2018

1 commit

  • [ Upstream commit c42d3be0c06f0c1c416054022aa535c08a1f9b39 ]

    The problem is the the calculation should be "end - start + 1" but the
    plus one is missing in this calculation.

    Fixes: 8626816e905e ("powerpc: add support for MPIC message register API")
    Signed-off-by: Dan Carpenter
    Reviewed-by: Tyrel Datwyler
    Signed-off-by: Michael Ellerman
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Dan Carpenter
     

30 May, 2018

1 commit

  • [ Upstream commit 0834d627fbea00c1444075eb3e448e1974da452d ]

    In mpic_physmask() we loop over all CPUs up to 32, then get the hard
    SMP processor id of that CPU.

    Currently that's possibly walking off the end of the paca array, but
    in a future patch we will change the paca array to be an array of
    pointers, and in that case we will get a NULL for missing CPUs and
    oops. eg:

    Unable to handle kernel paging request for data at address 0x88888888888888b8
    Faulting instruction address: 0xc00000000004e380
    Oops: Kernel access of bad area, sig: 11 [#1]
    ...
    NIP .mpic_set_affinity+0x60/0x1a0
    LR .irq_do_set_affinity+0x48/0x100

    Fix it by checking the CPU is possible, this also fixes the code if
    there are gaps in the CPU numbering which probably never happens on
    mpic systems but who knows.

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

    Michael Ellerman
     

24 Apr, 2018

1 commit

  • commit b32e56e5a87a1f9243db92bc7a5df0ffb4627cfb upstream.

    When setting up a CPU, we "push" (activate) a pool VP for it.

    However it's an error to do so if it already has an active
    pool VP.

    This happens when doing soft CPU hotplug on powernv since we
    don't tear down the CPU on unplug. The HW flags the error which
    gets captured by the diagnostics.

    Fix this by making sure to "pull" out any already active pool
    first.

    Fixes: 243e25112d06 ("powerpc/xive: Native exploitation of the XIVE interrupt controller")
    Cc: stable@vger.kernel.org # v4.12+
    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Benjamin Herrenschmidt
     

22 Feb, 2018

1 commit

  • commit 8e036c8d30a2cd9d8fc7442fbf6824e0a3e986e7 upstream.

    The CPU event notification queues on sPAPR should be configured using
    a hardware CPU identifier.

    The problem did not show up on the Power Hypervisor because pHyp
    supports 8 threads per core which keeps CPU number contiguous. This is
    not the case on all sPAPR virtual machines, some use SMT=1.

    Also improve error logging by adding the CPU number.

    Fixes: eac1e731b59e ("powerpc/xive: guest exploitation of the XIVE interrupt controller")
    Cc: stable@vger.kernel.org # v4.14+
    Signed-off-by: Cédric Le Goater
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Cédric Le Goater
     

20 Dec, 2017

1 commit

  • [ Upstream commit 6b148a7ce72a7f87c81cbcde48af014abc0516a9 ]

    IPIC Status is provided by register IPIC_SERSR and not by IPIC_SERMR
    which is the mask register.

    Signed-off-by: Christophe Leroy
    Signed-off-by: Michael Ellerman
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Christophe Leroy
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

06 Oct, 2017

1 commit

  • Pull powerpc fixes from Michael Ellerman:
    "Nine small fixes, really nothing that stands out.

    A work-around for a spurious MCE on Power9. A CXL fault handling fix,
    some fixes to the new XIVE code, and a fix to the new 32-bit
    STRICT_KERNEL_RWX code.

    Fixes for old code/stable: an fix to an incorrect TLB flush on boot
    but not on any current machines, a compile error on 4xx and a fix to
    memory hotplug when using radix (Power9).

    Thanks to: Anton Blanchard, Cédric Le Goater, Christian Lamparter,
    Christophe Leroy, Christophe Lombard, Guenter Roeck, Jeremy Kerr,
    Michael Neuling, Nicholas Piggin"

    * tag 'powerpc-4.14-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/powernv: Increase memory block size to 1GB on radix
    powerpc/mm: Call flush_tlb_kernel_range with interrupts enabled
    powerpc/xive: Clear XIVE internal structures when a CPU is removed
    powerpc/xive: Fix IPI reset
    powerpc/4xx: Fix compile error with 64K pages on 40x, 44x
    powerpc: Fix action argument for cpufeatures-based TLB flush
    cxl: Fix memory page not handled
    powerpc: Fix workaround for spurious MCE on POWER9
    powerpc: Handle MCE on POWER9 with only DSISR bit 30 set

    Linus Torvalds
     

04 Oct, 2017

3 commits

  • Commit eac1e731b59e ("powerpc/xive: guest exploitation of the XIVE
    interrupt controller") introduced support for the XIVE exploitation
    mode of the P9 interrupt controller on the pseries platform.

    At that time, support for CPU removal was not complete on PowerVM and
    CPU hot unplug remained untested. It appears that some cleanups of the
    XIVE internal structures are required before releasing the CPU,
    without which the kernel crashes in a RTAS call doing the CPU
    isolation.

    These changes fix the crash by deconfiguring the IPI interrupt source
    and clearing the event queues of the CPU when it is removed.

    Fixes: eac1e731b59e ("powerpc/xive: guest exploitation of the XIVE interrupt controller")
    Signed-off-by: Cédric Le Goater
    Signed-off-by: Michael Ellerman

    Cédric Le Goater
     
  • When resetting an IPI, hw_ipi should also be set to zero.

    Fixes: eac1e731b59e ("powerpc/xive: guest exploitation of the XIVE interrupt controller")
    Signed-off-by: Cédric Le Goater
    Signed-off-by: Michael Ellerman

    Cédric Le Goater
     
  • Locking of config and doorbell operations should be done only if the
    underlying hardware requires it.

    This patch removes the global spinlocks from the rapidio subsystem and
    moves them to the mport drivers (fsl_rio and tsi721), only to the
    necessary places. For example, local config space read and write
    operations (lcread/lcwrite) are atomic in all existing drivers, so there
    should be no need for locking, while the cread/cwrite operations which
    generate maintenance transactions need to be synchronized with a lock.

    Later, each driver could chose to use a per-port lock instead of a
    global one, or even more granular locking.

    Link: http://lkml.kernel.org/r/20170824113023.GD50104@nokia.com
    Signed-off-by: Ioan Nicu
    Signed-off-by: Frank Kunz
    Acked-by: Alexandre Bounine
    Cc: Matt Porter
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: Michael Ellerman
    Cc: Nicholas Piggin
    Cc: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ioan Nicu
     

09 Sep, 2017

1 commit

  • First, number of CPUs can't be negative number.

    Second, different signnnedness leads to suboptimal code in the following
    cases:

    1)
    kmalloc(nr_cpu_ids * sizeof(X));

    "int" has to be sign extended to size_t.

    2)
    while (loff_t *pos < nr_cpu_ids)

    MOVSXD is 1 byte longed than the same MOV.

    Other cases exist as well. Basically compiler is told that nr_cpu_ids
    can't be negative which can't be deduced if it is "int".

    Code savings on allyesconfig kernel: -3KB

    add/remove: 0/0 grow/shrink: 25/264 up/down: 261/-3631 (-3370)
    function old new delta
    coretemp_cpu_online 450 512 +62
    rcu_init_one 1234 1272 +38
    pci_device_probe 374 399 +25

    ...

    pgdat_reclaimable_pages 628 556 -72
    select_fallback_rq 446 369 -77
    task_numa_find_cpu 1923 1807 -116

    Link: http://lkml.kernel.org/r/20170819114959.GA30580@avx2
    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     

08 Sep, 2017

1 commit

  • Pull block layer updates from Jens Axboe:
    "This is the first pull request for 4.14, containing most of the code
    changes. It's a quiet series this round, which I think we needed after
    the churn of the last few series. This contains:

    - Fix for a registration race in loop, from Anton Volkov.

    - Overflow complaint fix from Arnd for DAC960.

    - Series of drbd changes from the usual suspects.

    - Conversion of the stec/skd driver to blk-mq. From Bart.

    - A few BFQ improvements/fixes from Paolo.

    - CFQ improvement from Ritesh, allowing idling for group idle.

    - A few fixes found by Dan's smatch, courtesy of Dan.

    - A warning fixup for a race between changing the IO scheduler and
    device remova. From David Jeffery.

    - A few nbd fixes from Josef.

    - Support for cgroup info in blktrace, from Shaohua.

    - Also from Shaohua, new features in the null_blk driver to allow it
    to actually hold data, among other things.

    - Various corner cases and error handling fixes from Weiping Zhang.

    - Improvements to the IO stats tracking for blk-mq from me. Can
    drastically improve performance for fast devices and/or big
    machines.

    - Series from Christoph removing bi_bdev as being needed for IO
    submission, in preparation for nvme multipathing code.

    - Series from Bart, including various cleanups and fixes for switch
    fall through case complaints"

    * 'for-4.14/block' of git://git.kernel.dk/linux-block: (162 commits)
    kernfs: checking for IS_ERR() instead of NULL
    drbd: remove BIOSET_NEED_RESCUER flag from drbd_{md_,}io_bio_set
    drbd: Fix allyesconfig build, fix recent commit
    drbd: switch from kmalloc() to kmalloc_array()
    drbd: abort drbd_start_resync if there is no connection
    drbd: move global variables to drbd namespace and make some static
    drbd: rename "usermode_helper" to "drbd_usermode_helper"
    drbd: fix race between handshake and admin disconnect/down
    drbd: fix potential deadlock when trying to detach during handshake
    drbd: A single dot should be put into a sequence.
    drbd: fix rmmod cleanup, remove _all_ debugfs entries
    drbd: Use setup_timer() instead of init_timer() to simplify the code.
    drbd: fix potential get_ldev/put_ldev refcount imbalance during attach
    drbd: new disk-option disable-write-same
    drbd: Fix resource role for newly created resources in events2
    drbd: mark symbols static where possible
    drbd: Send P_NEG_ACK upon write error in protocol != C
    drbd: add explicit plugging when submitting batches
    drbd: change list_for_each_safe to while(list_first_entry_or_null)
    drbd: introduce drbd_recv_header_maybe_unplug
    ...

    Linus Torvalds
     

04 Sep, 2017

1 commit


02 Sep, 2017

7 commits

  • Having the CPU identifier in the debug logs is helpful when tracking
    issues. Also add some more logging and fix a compile issue in
    xive_do_source_eoi().

    Signed-off-by: Cédric Le Goater
    Acked-by: Benjamin Herrenschmidt
    Signed-off-by: Michael Ellerman

    Cédric Le Goater
     
  • The H_INT_ESB hcall() is used to issue a load or store to the ESB page
    instead of using the MMIO pages. This can be used as a workaround on
    some HW issues. The OS knows that this hcall should be used on an
    interrupt source when the ESB hcall flag is set to 1 in the hcall
    H_INT_GET_SOURCE_INFO.

    To maintain the frontier between the xive frontend and backend, we
    introduce a new xive operation 'esb_rw' to be used in the routines
    doing memory accesses on the ESBs.

    Signed-off-by: Cédric Le Goater
    Acked-by: Benjamin Herrenschmidt
    Signed-off-by: Michael Ellerman

    Cédric Le Goater
     
  • It will be required later by the H_INT_ESB hcall.

    Signed-off-by: Cédric Le Goater
    Acked-by: Benjamin Herrenschmidt
    Signed-off-by: Michael Ellerman

    Cédric Le Goater
     
  • Some source support MMIO stores on the ESB page to perform EOI. Let's
    introduce a specific routine for this case even if this should be the
    only use of it.

    Signed-off-by: Cédric Le Goater
    Reviewed-by: David Gibson
    Acked-by: Benjamin Herrenschmidt
    Signed-off-by: Michael Ellerman

    Cédric Le Goater
     
  • xive_poke_esb() is performing a load/read so it is better named as
    xive_esb_read() as we will need to introduce a xive_esb_write()
    routine. Also use the XIVE_ESB_LOAD_EOI offset when EOI'ing LSI
    interrupts.

    Signed-off-by: Cédric Le Goater
    Reviewed-by: David Gibson
    Acked-by: Benjamin Herrenschmidt
    Signed-off-by: Michael Ellerman

    Cédric Le Goater
     
  • This is the framework for using XIVE in a PowerVM guest. The support
    is very similar to the native one in a much simpler form.

    Each source is associated with an Event State Buffer (ESB). This is a
    two bit state machine which is used to trigger events. The bits are
    named "P" (pending) and "Q" (queued) and can be controlled by MMIO.
    The Guest OS registers event (or notifications) queues on which the HW
    will post event data for a target to notify.

    Instead of OPAL calls, a set of Hypervisors call are used to configure
    the interrupt sources and the event/notification queues of the guest:

    - H_INT_GET_SOURCE_INFO

    used to obtain the address of the MMIO page of the Event State
    Buffer (PQ bits) entry associated with the source.

    - H_INT_SET_SOURCE_CONFIG

    assigns a source to a "target".

    - H_INT_GET_SOURCE_CONFIG

    determines to which "target" and "priority" is assigned to a source

    - H_INT_GET_QUEUE_INFO

    returns the address of the notification management page associated
    with the specified "target" and "priority".

    - H_INT_SET_QUEUE_CONFIG

    sets or resets the event queue for a given "target" and "priority".
    It is also used to set the notification config associated with the
    queue, only unconditional notification for the moment. Reset is
    performed with a queue size of 0 and queueing is disabled in that
    case.

    - H_INT_GET_QUEUE_CONFIG

    returns the queue settings for a given "target" and "priority".

    - H_INT_RESET

    resets all of the partition's interrupt exploitation structures to
    their initial state, losing all configuration set via the hcalls
    H_INT_SET_SOURCE_CONFIG and H_INT_SET_QUEUE_CONFIG.

    - H_INT_SYNC

    issue a synchronisation on a source to make sure sure all
    notifications have reached their queue.

    As for XICS, the XIVE interface for the guest is described in the
    device tree under the "interrupt-controller" node. A couple of new
    properties are specific to XIVE :

    - "reg"

    contains the base address and size of the thread interrupt
    managnement areas (TIMA), also called rings, for the User level and
    for the Guest OS level. Only the Guest OS level is taken into
    account today.

    - "ibm,xive-eq-sizes"

    the size of the event queues. One cell per size supported, contains
    log2 of size, in ascending order.

    - "ibm,xive-lisn-ranges"

    the interrupt numbers ranges assigned to the guest. These are
    allocated using a simple bitmap.

    and also :

    - "/ibm,plat-res-int-priorities"

    contains a list of priorities that the hypervisor has reserved for
    its own use.

    Tested with a QEMU XIVE model for pseries and with the Power hypervisor.

    Signed-off-by: Cédric Le Goater
    Acked-by: Benjamin Herrenschmidt
    Signed-off-by: Michael Ellerman

    Cédric Le Goater
     
  • This routine will be used in the spapr backend. Also introduce a short
    xive_alloc_order() helper.

    Signed-off-by: Cédric Le Goater
    Reviewed-by: David Gibson
    Acked-by: Benjamin Herrenschmidt
    Signed-off-by: Michael Ellerman

    Cédric Le Goater
     

01 Sep, 2017

3 commits


24 Aug, 2017

2 commits

  • When called from xive_irq_startup(), the size of the cpumask can be
    larger than nr_cpu_ids. This can result in a WARN_ON such as:

    WARNING: CPU: 10 PID: 1 at ../arch/powerpc/sysdev/xive/common.c:476 xive_find_target_in_mask+0x110/0x2f0
    ...
    NIP [c00000000008a310] xive_find_target_in_mask+0x110/0x2f0
    LR [c00000000008a2e4] xive_find_target_in_mask+0xe4/0x2f0
    Call Trace:
    xive_find_target_in_mask+0x74/0x2f0 (unreliable)
    xive_pick_irq_target.isra.1+0x200/0x230
    xive_irq_startup+0x60/0x180
    irq_startup+0x70/0xd0
    __setup_irq+0x7bc/0x880
    request_threaded_irq+0x14c/0x2c0
    request_event_sources_irqs+0x100/0x180
    __machine_initcall_pseries_init_ras_IRQ+0x104/0x134
    do_one_initcall+0x68/0x1d0
    kernel_init_freeable+0x290/0x374
    kernel_init+0x24/0x170
    ret_from_kernel_thread+0x5c/0x74

    This happens because we're being called with our affinity mask set to
    irq_default_affinity. That in turn was populated using
    cpumask_setall(), which sets NR_CPUs worth of bits, not nr_cpu_ids
    worth. Finally cpumask_weight() will return > nr_cpu_ids when passed a
    mask which has > nr_cpu_ids bits set.

    Fix it by limiting the value returned by cpumask_weight().

    Signed-off-by: Cédric Le Goater
    [mpe: Add change log details on actual cause]
    Signed-off-by: Michael Ellerman

    Cédric Le Goater
     
  • This way we don't need a block_device structure to submit I/O. The
    block_device has different life time rules from the gendisk and
    request_queue and is usually only available when the block device node
    is open. Other callers need to explicitly create one (e.g. the lightnvm
    passthrough code, or the new nvme multipathing code).

    For the actual I/O path all that we need is the gendisk, which exists
    once per block device. But given that the block layer also does
    partition remapping we additionally need a partition index, which is
    used for said remapping in generic_make_request.

    Note that all the block drivers generally want request_queue or
    sometimes the gendisk, so this removes a layer of indirection all
    over the stack.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jens Axboe

    Christoph Hellwig
     

23 Aug, 2017

1 commit

  • Now that we have a custom printf format specifier, convert users of
    full_name to use %pOF instead. This is preparation to remove storing
    of the full path string for each node.

    Signed-off-by: Rob Herring
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: Michael Ellerman
    Cc: Anatolij Gustschin
    Cc: Scott Wood
    Cc: Kumar Gala
    Cc: Arnd Bergmann
    Cc: linuxppc-dev@lists.ozlabs.org
    Reviewed-by: Tyrel Datwyler
    Signed-off-by: Michael Ellerman

    Rob Herring
     

17 Aug, 2017

1 commit


15 Aug, 2017

1 commit

  • Exclude core xmon files from ftrace (along with an xmon xive helper
    outside of xmon/) to minimize impact of ftrace while within xmon.

    Before:
    /sys/kernel/debug/tracing# grep -ci xmon available_filter_functions
    26

    After:
    /sys/kernel/debug/tracing# grep -ci xmon available_filter_functions
    0

    Signed-off-by: Naveen N. Rao
    [mpe: Use $(subst ..) on KBUILD_CFLAGS rather than CFLAGS_REMOVE_xxx]
    Signed-off-by: Michael Ellerman

    Naveen N. Rao
     

10 Aug, 2017

5 commits


24 Jul, 2017

1 commit

  • External IRQ0 (index 48) has the same capabilities as the other IRQ1-7
    and is handled by the same register IPIC_SEPNR. When this register is
    not specified for "ack" in "ipic_info", you cannot configure this IRQ
    as IRQ_TYPE_EDGE_FALLING. This oversight was probably due to the
    non-contiguous hwirq numbering of IRQ0 in the IPIC.

    Signed-off-by: Jurgen Schindele
    [scottwood: Cleaned up commit message and posted as a proper patch]
    Signed-off-by: Scott Wood
    Signed-off-by: Michael Ellerman

    Scott Wood
     

08 Jul, 2017

2 commits

  • Pull powerpc updates from Michael Ellerman:
    "Highlights include:

    - Support for STRICT_KERNEL_RWX on 64-bit server CPUs.

    - Platform support for FSP2 (476fpe) board

    - Enable ZONE_DEVICE on 64-bit server CPUs.

    - Generic & powerpc spin loop primitives to optimise busy waiting

    - Convert VDSO update function to use new update_vsyscall() interface

    - Optimisations to hypercall/syscall/context-switch paths

    - Improvements to the CPU idle code on Power8 and Power9.

    As well as many other fixes and improvements.

    Thanks to: Akshay Adiga, Andrew Donnellan, Andrew Jeffery, Anshuman
    Khandual, Anton Blanchard, Balbir Singh, Benjamin Herrenschmidt,
    Christophe Leroy, Christophe Lombard, Colin Ian King, Dan Carpenter,
    Gautham R. Shenoy, Hari Bathini, Ian Munsie, Ivan Mikhaylov, Javier
    Martinez Canillas, Madhavan Srinivasan, Masahiro Yamada, Matt Brown,
    Michael Neuling, Michal Suchanek, Murilo Opsfelder Araujo, Naveen N.
    Rao, Nicholas Piggin, Oliver O'Halloran, Paul Mackerras, Pavel Machek,
    Russell Currey, Santosh Sivaraj, Stephen Rothwell, Thiago Jung
    Bauermann, Yang Li"

    * tag 'powerpc-4.13-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (158 commits)
    powerpc/Kconfig: Enable STRICT_KERNEL_RWX for some configs
    powerpc/mm/radix: Implement STRICT_RWX/mark_rodata_ro() for Radix
    powerpc/mm/hash: Implement mark_rodata_ro() for hash
    powerpc/vmlinux.lds: Align __init_begin to 16M
    powerpc/lib/code-patching: Use alternate map for patch_instruction()
    powerpc/xmon: Add patch_instruction() support for xmon
    powerpc/kprobes/optprobes: Use patch_instruction()
    powerpc/kprobes: Move kprobes over to patch_instruction()
    powerpc/mm/radix: Fix execute permissions for interrupt_vectors
    powerpc/pseries: Fix passing of pp0 in updatepp() and updateboltedpp()
    powerpc/64s: Blacklist rtas entry/exit from kprobes
    powerpc/64s: Blacklist functions invoked on a trap
    powerpc/64s: Un-blacklist system_call() from kprobes
    powerpc/64s: Move system_call() symbol to just after setting MSR_EE
    powerpc/64s: Blacklist system_call() and system_call_common() from kprobes
    powerpc/64s: Convert .L__replay_interrupt_return to a local label
    powerpc64/elfv1: Only dereference function descriptor for non-text symbols
    cxl: Export library to support IBM XSL
    powerpc/dts: Use #include "..." to include local DT
    powerpc/perf/hv-24x7: Aggregate result elements on POWER9 SMT8
    ...

    Linus Torvalds
     
  • Pull libnvdimm updates from Dan Williams:
    "libnvdimm updates for the latest ACPI and UEFI specifications. This
    pull request also includes new 'struct dax_operations' enabling to
    undo the abuse of copy_user_nocache() for copy operations to pmem.

    The dax work originally missed 4.12 to address concerns raised by Al.

    Summary:

    - Introduce the _flushcache() family of memory copy helpers and use
    them for persistent memory write operations on x86. The
    _flushcache() semantic indicates that the cache is either bypassed
    for the copy operation (movnt) or any lines dirtied by the copy
    operation are written back (clwb, clflushopt, or clflush).

    - Extend dax_operations with ->copy_from_iter() and ->flush()
    operations. These operations and other infrastructure updates allow
    all persistent memory specific dax functionality to be pushed into
    libnvdimm and the pmem driver directly. It also allows dax-specific
    sysfs attributes to be linked to a host device, for example:
    /sys/block/pmem0/dax/write_cache

    - Add support for the new NVDIMM platform/firmware mechanisms
    introduced in ACPI 6.2 and UEFI 2.7. This support includes the v1.2
    namespace label format, extensions to the address-range-scrub
    command set, new error injection commands, and a new BTT
    (block-translation-table) layout. These updates support inter-OS
    and pre-OS compatibility.

    - Fix a longstanding memory corruption bug in nfit_test.

    - Make the pmem and nvdimm-region 'badblocks' sysfs files poll(2)
    capable.

    - Miscellaneous fixes and small updates across libnvdimm and the nfit
    driver.

    Acknowledgements that came after the branch was pushed: commit
    6aa734a2f38e ("libnvdimm, region, pmem: fix 'badblocks'
    sysfs_get_dirent() reference lifetime") was reviewed by Toshi Kani
    "

    * tag 'libnvdimm-for-4.13' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm: (42 commits)
    libnvdimm, namespace: record 'lbasize' for pmem namespaces
    acpi/nfit: Issue Start ARS to retrieve existing records
    libnvdimm: New ACPI 6.2 DSM functions
    acpi, nfit: Show bus_dsm_mask in sysfs
    libnvdimm, acpi, nfit: Add bus level dsm mask for pass thru.
    acpi, nfit: Enable DSM pass thru for root functions.
    libnvdimm: passthru functions clear to send
    libnvdimm, btt: convert some info messages to warn/err
    libnvdimm, region, pmem: fix 'badblocks' sysfs_get_dirent() reference lifetime
    libnvdimm: fix the clear-error check in nsio_rw_bytes
    libnvdimm, btt: fix btt_rw_page not returning errors
    acpi, nfit: quiet invalid block-aperture-region warnings
    libnvdimm, btt: BTT updates for UEFI 2.7 format
    acpi, nfit: constify *_attribute_group
    libnvdimm, pmem: disable dax flushing when pmem is fronting a volatile region
    libnvdimm, pmem, dax: export a cache control attribute
    dax: convert to bitmask for flags
    dax: remove default copy_from_iter fallback
    libnvdimm, nfit: enable support for volatile ranges
    libnvdimm, pmem: fix persistence warning
    ...

    Linus Torvalds
     

03 Jul, 2017

1 commit


28 Jun, 2017

2 commits


15 Jun, 2017

1 commit

  • Architecturally we should apply a 0x400 offset for these. Not doing
    it will break future HW implementations.

    The offset of 0 is supposed to remain for "triggers" though not all
    sources support both trigger and store EOI, and in P9 specifically,
    some sources will treat 0 as a store EOI. But future chips will not.
    So this makes us use the properly architected offset which should work
    always.

    Fixes: 243e25112d06 ("powerpc/xive: Native exploitation of the XIVE interrupt controller")
    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Michael Ellerman

    Benjamin Herrenschmidt