24 Apr, 2018

1 commit

  • commit ad7b4e8022b9864c075fe71e1328b1d25cad82f6 upstream.

    cxllib_handle_fault() is called by an external driver when it needs to
    have the host resolve page faults for a buffer. The buffer can cover
    several pages and VMAs. The function iterates over all the pages used
    by the buffer, based on the page size of the VMA.

    To ensure some stability while processing the faults, the thread T1
    grabs the mm->mmap_sem semaphore with read access (R1). However, when
    processing a page fault for a single page, one of the underlying
    functions, copro_handle_mm_fault(), also grabs the same semaphore with
    read access (R2). So the thread T1 takes the semaphore twice.

    If another thread T2 tries to access the semaphore in write mode W1
    (say, because it wants to allocate memory and calls 'brk'), then that
    thread T2 will have to wait because there's a reader (R1). If the
    thread T1 is processing a new page at that time, it won't get an
    automatic grant at R2, because there's now a writer thread
    waiting (T2). And we have a deadlock.

    The timeline is:
    1. thread T1 owns the semaphore with read access R1
    2. thread T2 requests write access W1 and waits
    3. thread T1 requests read access R2 and waits

    The fix is for the thread T1 to release the semaphore R1 once it got
    the information it needs from the current VMA. The address space/VMAs
    could evolve while T1 iterates over the full buffer, but in the
    unlikely case where T1 misses a page, the external driver will raise a
    new page fault when retrying the memory access.

    Fixes: 3ced8d730063 ("cxl: Export library to support IBM XSL")
    Cc: stable@vger.kernel.org # 4.13+
    Signed-off-by: Frederic Barrat
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Frederic Barrat
     

08 Apr, 2018

1 commit

  • commit bb0829a741792b56c908d7745bc0b2b540293bcc upstream.

    Currently the driver spams the kernel log on unsupported ioctls which is
    unnecessary as the ioctl returns -ENOIOCTLCMD to indicate this anyway.
    I suspect this was originally for debugging purposes but it really is not
    required so remove it.

    Signed-off-by: Colin Ian King
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Colin Ian King
     

25 Feb, 2018

2 commits


22 Feb, 2018

1 commit

  • commit 4950276672fce5c241857540f8561c440663673d upstream.

    Patch series "kmemcheck: kill kmemcheck", v2.

    As discussed at LSF/MM, kill kmemcheck.

    KASan is a replacement that is able to work without the limitation of
    kmemcheck (single CPU, slow). KASan is already upstream.

    We are also not aware of any users of kmemcheck (or users who don't
    consider KASan as a suitable replacement).

    The only objection was that since KASAN wasn't supported by all GCC
    versions provided by distros at that time we should hold off for 2
    years, and try again.

    Now that 2 years have passed, and all distros provide gcc that supports
    KASAN, kill kmemcheck again for the very same reasons.

    This patch (of 4):

    Remove kmemcheck annotations, and calls to kmemcheck from the kernel.

    [alexander.levin@verizon.com: correctly remove kmemcheck call from dma_map_sg_attrs]
    Link: http://lkml.kernel.org/r/20171012192151.26531-1-alexander.levin@verizon.com
    Link: http://lkml.kernel.org/r/20171007030159.22241-2-alexander.levin@verizon.com
    Signed-off-by: Sasha Levin
    Cc: Alexander Potapenko
    Cc: Eric W. Biederman
    Cc: Michal Hocko
    Cc: Pekka Enberg
    Cc: Steven Rostedt
    Cc: Tim Hansen
    Cc: Vegard Nossum
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds
    Signed-off-by: Greg Kroah-Hartman

    Levin, Alexander (Sasha Levin)
     

04 Feb, 2018

1 commit

  • commit cc365dcf0e56271bedf3de95f88922abe248e951 upstream.

    >From the pci power documentation:
    "The driver itself should not call pm_runtime_allow(), though. Instead,
    it should let user space or some platform-specific code do that (user space
    can do it via sysfs as stated above)..."

    However, the S0ix residency cannot be reached without MEI device getting
    into low power state. Hence, for mei devices that support D0i3, it's better
    to make runtime power management mandatory and not rely on the system
    integration such as udev rules.
    This policy cannot be applied globally as some older platforms
    were found to have broken power management.

    Cc: Rafael J. Wysocki
    Signed-off-by: Tomas Winkler
    Reviewed-by: Alexander Usyskin
    Signed-off-by: Greg Kroah-Hartman

    Tomas Winkler
     

25 Dec, 2017

2 commits

  • commit 1784f9144b143a1e8b19fe94083b040aa559182b upstream.

    We'd like to use the 'PTI' acronym for 'Page Table Isolation' - free up the
    namespace by renaming the driver header to .

    (Also standardize the header guard name while at it.)

    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: J Freyensee
    Cc: Greg Kroah-Hartman
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar
    Signed-off-by: Greg Kroah-Hartman

    Ingo Molnar
     
  • commit 03b2a320b19f1424e9ac9c21696be9c60b6d0d93 upstream.

    The x86_hyper pointer is only used for checking whether a virtual
    device is supporting the hypervisor the system is running on.

    Use an enum for that purpose instead and drop the x86_hyper pointer.

    Signed-off-by: Juergen Gross
    Acked-by: Thomas Gleixner
    Acked-by: Xavier Deguillard
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: akataria@vmware.com
    Cc: arnd@arndb.de
    Cc: boris.ostrovsky@oracle.com
    Cc: devel@linuxdriverproject.org
    Cc: dmitry.torokhov@gmail.com
    Cc: gregkh@linuxfoundation.org
    Cc: haiyangz@microsoft.com
    Cc: kvm@vger.kernel.org
    Cc: kys@microsoft.com
    Cc: linux-graphics-maintainer@vmware.com
    Cc: linux-input@vger.kernel.org
    Cc: moltmann@vmware.com
    Cc: pbonzini@redhat.com
    Cc: pv-drivers@vmware.com
    Cc: rkrcmar@redhat.com
    Cc: sthemmin@microsoft.com
    Cc: virtualization@lists.linux-foundation.org
    Cc: xen-devel@lists.xenproject.org
    Link: http://lkml.kernel.org/r/20171109132739.23465-3-jgross@suse.com
    Signed-off-by: Ingo Molnar
    Signed-off-by: Greg Kroah-Hartman

    Juergen Gross
     

20 Dec, 2017

3 commits

  • [ Upstream commit 846df244ebefbc9f7b91e9ae7a5e5a2e69fb4772 ]

    If you call ida_simple_remove(&pci_endpoint_test_ida, id) with a
    negative "id" then it triggers an immediate BUG_ON(). Let's not allow
    that.

    Fixes: 2c156ac71c6b ("misc: Add host side PCI driver for PCI test function device")
    Signed-off-by: Dan Carpenter
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Dan Carpenter
     
  • [ Upstream commit 80068c93688f6143100859c4856f895801c1a1d9 ]

    Return value of pci_endpoint_test_probe is not set properly in a couple of
    failure cases. Fix it here.

    Signed-off-by: Kishon Vijay Abraham I
    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Kishon Vijay Abraham I
     
  • commit 7f6d2ecd3d7acaf205ea7b3e96f9ffc55b92298b upstream.

    Trying to read the MAC address from an eeprom that has an offset that
    is not a multiple of 4 causes an error currently.

    Fix it by changing the nvmem stride to 1.

    Signed-off-by: David Lechner
    [Bartosz: tweaked the commit message]
    Signed-off-by: Bartosz Golaszewski
    Signed-off-by: Greg Kroah-Hartman

    David Lechner
     

05 Dec, 2017

4 commits

  • commit 12841f87b7a8ceb3d54f171660f72a86941bfcb3 upstream.

    During an eeh a kernel-oops is reported if no vPHB is allocated to the
    AFU. This happens as during AFU init, an error in creation of vPHB is
    a non-fatal error. Hence afu->phb should always be checked for NULL
    before iterating over it for the virtual AFU pci devices.

    This patch fixes the kenel-oops by adding a NULL pointer check for
    afu->phb before it is dereferenced.

    Fixes: 9e8df8a21963 ("cxl: EEH support")
    Signed-off-by: Vaibhav Jain
    Acked-by: Andrew Donnellan
    Acked-by: Frederic Barrat
    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Vaibhav Jain
     
  • commit d9bcd462daf34aebb8de9ad7f76de0198bb5a0f0 upstream.

    So far we completely rely on the caller to provide valid arguments.
    To be on the safe side perform an own sanity check.

    Signed-off-by: Heiner Kallweit
    Signed-off-by: Bartosz Golaszewski
    Signed-off-by: Greg Kroah-Hartman

    Heiner Kallweit
     
  • commit 5478e478eee3b096b8d998d4ed445da30da2dfbc upstream.

    There's an ilog2() expansion in AT24_DEVICE_MAGIC() which rounds down
    the actual size of EUI-48 byte array in at24mac402 eeproms to 4 from 6,
    making it impossible to read it all.

    Fix it by manually adjusting the value in probe().

    This patch contains a temporary fix that is suitable for stable
    branches. Eventually we'll probably remove the call to ilog2() while
    converting the magic values to actual structs.

    Fixes: 0b813658c115 ("eeprom: at24: add support for at24mac series")
    Signed-off-by: Bartosz Golaszewski
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Greg Kroah-Hartman

    Bartosz Golaszewski
     
  • commit 644a1f19c6c8393d0c4168a5adf79056da6822eb upstream.

    Chip datasheet mentions that word addresses other than the actual
    start position of the MAC delivers undefined results. So fix this.
    Current implementation doesn't work due to this wrong offset.

    Fixes: 0b813658c115 ("eeprom: at24: add support for at24mac series")
    Signed-off-by: Heiner Kallweit
    Signed-off-by: Bartosz Golaszewski
    Signed-off-by: Greg Kroah-Hartman

    Heiner Kallweit
     

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
     

15 Oct, 2017

1 commit

  • Pull char/misc driver fixes from Greg KH:
    "Here are 4 patches to resolve some char/misc driver issues found these
    past weeks.

    One of them is a mei bugfix and another is a new mei device id. There
    is also a hyper-v fix for a reported issue, and a binder issue fix for
    a problem reported by a few people.

    All of these have been in my tree for a while, I don't know if
    linux-next is really testing much this month. But 0-day is happy with
    them :)"

    * tag 'char-misc-4.14-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    binder: fix use-after-free in binder_transaction()
    Drivers: hv: vmbus: Fix bugs in rescind handling
    mei: me: add gemini lake devices id
    mei: always use domain runtime pm callbacks.

    Linus Torvalds
     

04 Oct, 2017

2 commits

  • Add Gemini Lake (GLK) device id.

    Signed-off-by: Tomas Winkler
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Tomas Winkler
     
  • This patch fixes a regression caused by the new changes
    in the "run wake" handlers.

    The mei devices that support D0i3 are no longer receiving an interrupt
    after entering runtime suspend state and will stall.

    pci_dev_run_wake function now returns "true" for some devices
    (including mei) for which it used to return "false",
    arguably incorrectly as "run wake" used to mean that
    wakeup signals can be generated for a device in
    the working state of the system, so it could not be enabled
    or disabled before too.

    MEI maps runtime suspend/resume to its own defined
    power gating (PG) states, (D0i3 or other depending on generation),
    hence we need to go around the native PCI runtime service which
    eventually brings the device into D3cold/hot state,
    but the mei devices cannot wake up from D3 unlike from D0i3/PG state,
    which keeps irq running.
    To get around PCI device native runtime pm,
    MEI uses runtime pm domain handlers which take precedence.

    Cc: #4.13+
    Signed-off-by: Alexander Usyskin
    Signed-off-by: Tomas Winkler
    Acked-by: Rafael J. Wysocki
    Signed-off-by: Greg Kroah-Hartman

    Alexander Usyskin
     

29 Sep, 2017

1 commit

  • The in-kernel 'library' API can be called by drivers to help
    interaction with an IBM XSL on a POWER9 system.

    The cxllib_handle_fault() API is used to handle memory fault. All memory
    pages of the specified buffer have to be handled but under certain
    conditions,the last page may not be touched, and the address the
    adapter is trying to access is never sent to the kernel for resolution.

    This patch reworks start address of the loop with an address aligned on
    the page size. In this context, the last page is not missed.

    Signed-off-by: Christophe Lombard
    Acked-by: Frederic Barrat
    Acked-by: Andrew Donnellan

    Fixes: 3ced8d730063 ("cxl: Export library to support IBM XSL");
    Signed-off-by: Michael Ellerman

    Christophe Lombard
     

14 Sep, 2017

1 commit

  • GFP_TEMPORARY was introduced by commit e12ba74d8ff3 ("Group short-lived
    and reclaimable kernel allocations") along with __GFP_RECLAIMABLE. It's
    primary motivation was to allow users to tell that an allocation is
    short lived and so the allocator can try to place such allocations close
    together and prevent long term fragmentation. As much as this sounds
    like a reasonable semantic it becomes much less clear when to use the
    highlevel GFP_TEMPORARY allocation flag. How long is temporary? Can the
    context holding that memory sleep? Can it take locks? It seems there is
    no good answer for those questions.

    The current implementation of GFP_TEMPORARY is basically GFP_KERNEL |
    __GFP_RECLAIMABLE which in itself is tricky because basically none of
    the existing caller provide a way to reclaim the allocated memory. So
    this is rather misleading and hard to evaluate for any benefits.

    I have checked some random users and none of them has added the flag
    with a specific justification. I suspect most of them just copied from
    other existing users and others just thought it might be a good idea to
    use without any measuring. This suggests that GFP_TEMPORARY just
    motivates for cargo cult usage without any reasoning.

    I believe that our gfp flags are quite complex already and especially
    those with highlevel semantic should be clearly defined to prevent from
    confusion and abuse. Therefore I propose dropping GFP_TEMPORARY and
    replace all existing users to simply use GFP_KERNEL. Please note that
    SLAB users with shrinkers will still get __GFP_RECLAIMABLE heuristic and
    so they will be placed properly for memory fragmentation prevention.

    I can see reasons we might want some gfp flag to reflect shorterm
    allocations but I propose starting from a clear semantic definition and
    only then add users with proper justification.

    This was been brought up before LSF this year by Matthew [1] and it
    turned out that GFP_TEMPORARY really doesn't have a clear semantic. It
    seems to be a heuristic without any measured advantage for most (if not
    all) its current users. The follow up discussion has revealed that
    opinions on what might be temporary allocation differ a lot between
    developers. So rather than trying to tweak existing users into a
    semantic which they haven't expected I propose to simply remove the flag
    and start from scratch if we really need a semantic for short term
    allocations.

    [1] http://lkml.kernel.org/r/20170118054945.GD18349@bombadil.infradead.org

    [akpm@linux-foundation.org: fix typo]
    [akpm@linux-foundation.org: coding-style fixes]
    [sfr@canb.auug.org.au: drm/i915: fix up]
    Link: http://lkml.kernel.org/r/20170816144703.378d4f4d@canb.auug.org.au
    Link: http://lkml.kernel.org/r/20170728091904.14627-1-mhocko@kernel.org
    Signed-off-by: Michal Hocko
    Signed-off-by: Stephen Rothwell
    Acked-by: Mel Gorman
    Acked-by: Vlastimil Babka
    Cc: Matthew Wilcox
    Cc: Neil Brown
    Cc: "Theodore Ts'o"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Hocko
     

09 Sep, 2017

1 commit

  • Pull PCI updates from Bjorn Helgaas:

    - add enhanced Downstream Port Containment support, which prints more
    details about Root Port Programmed I/O errors (Dongdong Liu)

    - add Layerscape ls1088a and ls2088a support (Hou Zhiqiang)

    - add MediaTek MT2712 and MT7622 support (Ryder Lee)

    - add MediaTek MT2712 and MT7622 MSI support (Honghui Zhang)

    - add Qualcom IPQ8074 support (Varadarajan Narayanan)

    - add R-Car r8a7743/5 device tree support (Biju Das)

    - add Rockchip per-lane PHY support for better power management (Shawn
    Lin)

    - fix IRQ mapping for hot-added devices by replacing the
    pci_fixup_irqs() boot-time design with a host bridge hook called at
    probe-time (Lorenzo Pieralisi, Matthew Minter)

    - fix race when enabling two devices that results in upstream bridge
    not being enabled correctly (Srinath Mannam)

    - fix pciehp power fault infinite loop (Keith Busch)

    - fix SHPC bridge MSI hotplug events by enabling bus mastering
    (Aleksandr Bezzubikov)

    - fix a VFIO issue by correcting PCIe capability sizes (Alex
    Williamson)

    - fix an INTD issue on Xilinx and possibly other drivers by unifying
    INTx IRQ domain support (Paul Burton)

    - avoid IOMMU stalls by marking AMD Stoney GPU ATS as broken (Joerg
    Roedel)

    - allow APM X-Gene device assignment to guests by adding an ACS quirk
    (Feng Kan)

    - fix driver crashes by disabling Extended Tags on Broadcom HT2100
    (Extended Tags support is required for PCIe Receivers but not
    Requesters, and we now enable them by default when Requesters support
    them) (Sinan Kaya)

    - fix MSIs for devices that use phantom RIDs for DMA by assuming MSIs
    use the real Requester ID (not a phantom RID) (Robin Murphy)

    - prevent assignment of Intel VMD children to guests (which may be
    supported eventually, but isn't yet) by not associating an IOMMU with
    them (Jon Derrick)

    - fix Intel VMD suspend/resume by releasing IRQs on suspend (Scott
    Bauer)

    - fix a Function-Level Reset issue with Intel 750 NVMe by waiting
    longer (up to 60sec instead of 1sec) for device to become ready
    (Sinan Kaya)

    - fix a Function-Level Reset issue on iProc Stingray by working around
    hardware defects in the CRS implementation (Oza Pawandeep)

    - fix an issue with Intel NVMe P3700 after an iProc reset by adding a
    delay during shutdown (Oza Pawandeep)

    - fix a Microsoft Hyper-V lockdep issue by polling instead of blocking
    in compose_msi_msg() (Stephen Hemminger)

    - fix a wireless LAN driver timeout by clearing DesignWare MSI
    interrupt status after it is handled, not before (Faiz Abbas)

    - fix DesignWare ATU enable checking (Jisheng Zhang)

    - reduce Layerscape dependencies on the bootloader by doing more
    initialization in the driver (Hou Zhiqiang)

    - improve Intel VMD performance allowing allocation of more IRQ vectors
    than present CPUs (Keith Busch)

    - improve endpoint framework support for initial DMA mask, different
    BAR sizes, configurable page sizes, MSI, test driver, etc (Kishon
    Vijay Abraham I, Stan Drozd)

    - rework CRS support to add periodic messages while we poll during
    enumeration and after Function-Level Reset and prepare for possible
    other uses of CRS (Sinan Kaya)

    - clean up Root Port AER handling by removing unnecessary code and
    moving error handler methods to struct pcie_port_service_driver
    (Christoph Hellwig)

    - clean up error handling paths in various drivers (Bjorn Andersson,
    Fabio Estevam, Gustavo A. R. Silva, Harunobu Kurokawa, Jeffy Chen,
    Lorenzo Pieralisi, Sergei Shtylyov)

    - clean up SR-IOV resource handling by disabling VF decoding before
    updating the corresponding resource structs (Gavin Shan)

    - clean up DesignWare-based drivers by unifying quirks to update Class
    Code and Interrupt Pin and related handling of write-protected
    registers (Hou Zhiqiang)

    - clean up by adding empty generic pcibios_align_resource() and
    pcibios_fixup_bus() and removing empty arch-specific implementations
    (Palmer Dabbelt)

    - request exclusive reset control for several drivers to allow cleanup
    elsewhere (Philipp Zabel)

    - constify various structures (Arvind Yadav, Bhumika Goyal)

    - convert from full_name() to %pOF (Rob Herring)

    - remove unused variables from iProc, HiSi, Altera, Keystone (Shawn
    Lin)

    * tag 'pci-v4.14-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (170 commits)
    PCI: xgene: Clean up whitespace
    PCI: xgene: Define XGENE_PCI_EXP_CAP and use generic PCI_EXP_RTCTL offset
    PCI: xgene: Fix platform_get_irq() error handling
    PCI: xilinx-nwl: Fix platform_get_irq() error handling
    PCI: rockchip: Fix platform_get_irq() error handling
    PCI: altera: Fix platform_get_irq() error handling
    PCI: spear13xx: Fix platform_get_irq() error handling
    PCI: artpec6: Fix platform_get_irq() error handling
    PCI: armada8k: Fix platform_get_irq() error handling
    PCI: dra7xx: Fix platform_get_irq() error handling
    PCI: exynos: Fix platform_get_irq() error handling
    PCI: iproc: Clean up whitespace
    PCI: iproc: Rename PCI_EXP_CAP to IPROC_PCI_EXP_CAP
    PCI: iproc: Add 500ms delay during device shutdown
    PCI: Fix typos and whitespace errors
    PCI: Remove unused "res" variable from pci_resource_io()
    PCI: Correct kernel-doc of pci_vpd_srdt_size(), pci_vpd_srdt_tag()
    PCI/AER: Reformat AER register definitions
    iommu/vt-d: Prevent VMD child devices from being remapping targets
    x86/PCI: Use is_vmd() rather than relying on the domain number
    ...

    Linus Torvalds
     

08 Sep, 2017

1 commit

  • Pull powerpc updates from Michael Ellerman:
    "Nothing really major this release, despite quite a lot of activity.
    Just lots of things all over the place.

    Some things of note include:

    - Access via perf to a new type of PMU (IMC) on Power9, which can
    count both core events as well as nest unit events (Memory
    controller etc).

    - Optimisations to the radix MMU TLB flushing, mostly to avoid
    unnecessary Page Walk Cache (PWC) flushes when the structure of the
    tree is not changing.

    - Reworks/cleanups of do_page_fault() to modernise it and bring it
    closer to other architectures where possible.

    - Rework of our page table walking so that THP updates only need to
    send IPIs to CPUs where the affected mm has run, rather than all
    CPUs.

    - The size of our vmalloc area is increased to 56T on 64-bit hash MMU
    systems. This avoids problems with the percpu allocator on systems
    with very sparse NUMA layouts.

    - STRICT_KERNEL_RWX support on PPC32.

    - A new sched domain topology for Power9, to capture the fact that
    pairs of cores may share an L2 cache.

    - Power9 support for VAS, which is a new mechanism for accessing
    coprocessors, and initial support for using it with the NX
    compression accelerator.

    - Major work on the instruction emulation support, adding support for
    many new instructions, and reworking it so it can be used to
    implement the emulation needed to fixup alignment faults.

    - Support for guests under PowerVM to use the Power9 XIVE interrupt
    controller.

    And probably that many things again that are almost as interesting,
    but I had to keep the list short. Plus the usual fixes and cleanups as
    always.

    Thanks to: Alexey Kardashevskiy, Alistair Popple, Andreas Schwab,
    Aneesh Kumar K.V, Anju T Sudhakar, Arvind Yadav, Balbir Singh,
    Benjamin Herrenschmidt, Bhumika Goyal, Breno Leitao, Bryant G. Ly,
    Christophe Leroy, Cédric Le Goater, Dan Carpenter, Dou Liyang,
    Frederic Barrat, Gautham R. Shenoy, Geliang Tang, Geoff Levand, Hannes
    Reinecke, Haren Myneni, Ivan Mikhaylov, John Allen, Julia Lawall,
    LABBE Corentin, Laurentiu Tudor, Madhavan Srinivasan, Markus Elfring,
    Masahiro Yamada, Matt Brown, Michael Neuling, Murilo Opsfelder Araujo,
    Nathan Fontenot, Naveen N. Rao, Nicholas Piggin, Oliver O'Halloran,
    Paul Mackerras, Rashmica Gupta, Rob Herring, Rui Teng, Sam Bobroff,
    Santosh Sivaraj, Scott Wood, Shilpasri G Bhat, Sukadev Bhattiprolu,
    Suraj Jitindar Singh, Tobin C. Harding, Victor Aoqui"

    * tag 'powerpc-4.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (321 commits)
    powerpc/xive: Fix section __init warning
    powerpc: Fix kernel crash in emulation of vector loads and stores
    powerpc/xive: improve debugging macros
    powerpc/xive: add XIVE Exploitation Mode to CAS
    powerpc/xive: introduce H_INT_ESB hcall
    powerpc/xive: add the HW IRQ number under xive_irq_data
    powerpc/xive: introduce xive_esb_write()
    powerpc/xive: rename xive_poke_esb() in xive_esb_read()
    powerpc/xive: guest exploitation of the XIVE interrupt controller
    powerpc/xive: introduce a common routine xive_queue_page_alloc()
    powerpc/sstep: Avoid used uninitialized error
    axonram: Return directly after a failed kzalloc() in axon_ram_probe()
    axonram: Improve a size determination in axon_ram_probe()
    axonram: Delete an error message for a failed memory allocation in axon_ram_probe()
    powerpc/powernv/npu: Move tlb flush before launching ATSD
    powerpc/macintosh: constify wf_sensor_ops structures
    powerpc/iommu: Use permission-specific DEVICE_ATTR variants
    powerpc/eeh: Delete an error out of memory message at init time
    powerpc/mm: Use seq_putc() in two functions
    macintosh: Convert to using %pOF instead of full_name
    ...

    Linus Torvalds
     

06 Sep, 2017

1 commit

  • Pull char/misc driver updates from Greg KH:
    "Here is the big char/misc driver update for 4.14-rc1.

    Lots of different stuff in here, it's been an active development cycle
    for some reason. Highlights are:

    - updated binder driver, this brings binder up to date with what
    shipped in the Android O release, plus some more changes that
    happened since then that are in the Android development trees.

    - coresight updates and fixes

    - mux driver file renames to be a bit "nicer"

    - intel_th driver updates

    - normal set of hyper-v updates and changes

    - small fpga subsystem and driver updates

    - lots of const code changes all over the driver trees

    - extcon driver updates

    - fmc driver subsystem upadates

    - w1 subsystem minor reworks and new features and drivers added

    - spmi driver updates

    Plus a smattering of other minor driver updates and fixes.

    All of these have been in linux-next with no reported issues for a
    while"

    * tag 'char-misc-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (244 commits)
    ANDROID: binder: don't queue async transactions to thread.
    ANDROID: binder: don't enqueue death notifications to thread todo.
    ANDROID: binder: Don't BUG_ON(!spin_is_locked()).
    ANDROID: binder: Add BINDER_GET_NODE_DEBUG_INFO ioctl
    ANDROID: binder: push new transactions to waiting threads.
    ANDROID: binder: remove proc waitqueue
    android: binder: Add page usage in binder stats
    android: binder: fixup crash introduced by moving buffer hdr
    drivers: w1: add hwmon temp support for w1_therm
    drivers: w1: refactor w1_slave_show to make the temp reading functionality separate
    drivers: w1: add hwmon support structures
    eeprom: idt_89hpesx: Support both ACPI and OF probing
    mcb: Fix an error handling path in 'chameleon_parse_cells()'
    MCB: add support for SC31 to mcb-lpc
    mux: make device_type const
    char: virtio: constify attribute_group structures.
    Documentation/ABI: document the nvmem sysfs files
    lkdtm: fix spelling mistake: "incremeted" -> "incremented"
    perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file
    nvmem: include linux/err.h from header
    ...

    Linus Torvalds
     

01 Sep, 2017

3 commits

  • Calls to mmu_notifier_invalidate_page() were replaced by calls to
    mmu_notifier_invalidate_range() and are now bracketed by calls to
    mmu_notifier_invalidate_range_start()/end()

    Remove now useless invalidate_page callback.

    Signed-off-by: Jérôme Glisse
    Cc: Dimitri Sivanich
    Cc: Jack Steiner
    Cc: Kirill A. Shutemov
    Cc: Andrew Morton
    Cc: Andrea Arcangeli
    Signed-off-by: Linus Torvalds

    Jérôme Glisse
     
  • Calls to mmu_notifier_invalidate_page() were replaced by calls to
    mmu_notifier_invalidate_range() and are now bracketed by calls to
    mmu_notifier_invalidate_range_start()/end()

    Remove now useless invalidate_page callback.

    Signed-off-by: Jérôme Glisse
    Cc: Sudeep Dutt
    Cc: Ashutosh Dixit
    Cc: Kirill A. Shutemov
    Cc: Andrew Morton
    Cc: Andrea Arcangeli
    Signed-off-by: Linus Torvalds

    Jérôme Glisse
     
  • Allow the idt_89hpesx driver to get information from child nodes from
    both OF and ACPI by using more generic fwnode_property_read*() functions.

    Below is an example of instantiating idt_89hpesx driver via ACPI Table:

    Device(IDT0) {
    Name(_HID, "PRP0001")
    Name(_CID, "PRP0001")
    Name(_CCA, ONE)
    Name(_STR, Unicode("IDT SW I2C Slave"))
    Name(_CRS, ResourceTemplate () {
    I2cSerialBus (0x74, ControllerInitiated, 1000,
    AddressingMode7Bit, "\\_SB.I2CS",
    0x00, ResourceConsumer, ,
    )
    })
    Name (_DSD, Package () {
    ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
    Package () {
    Package () {"compatible", "idt,89hpes32nt8ag2"},
    },
    })
    Device (EPR0) {
    Name (_DSD, Package () {
    ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
    Package () {
    Package () {"compatible", "onsemi,24c64"},
    Package () {"reg", 0x50},
    }
    })
    }
    }

    Signed-off-by: Huy Duong
    Acked-by: Serge Semin
    Signed-off-by: Greg Kroah-Hartman

    Huy Duong
     

31 Aug, 2017

2 commits

  • cxl keeps a driver use count, which is used with the hash memory model
    on p8 to know when to upgrade local TLBIs to global and to trigger
    callbacks to manage the MMU for PSL8.

    If a process opens a context and closes without attaching or fails the
    attachment, the driver use count is never decremented. As a
    consequence, TLB invalidations remain global, even if there are no
    active cxl contexts.

    We should increment the driver use count when the process is attaching
    to the cxl adapter, and not on open. It's not needed before the
    adapter starts using the context and the use count is decremented on
    the detach path, so it makes more sense.

    It affects only the user api. The kernel api is already doing The
    Right Thing.

    Signed-off-by: Frederic Barrat
    Cc: stable@vger.kernel.org # v4.2+
    Fixes: 7bb5d91a4dda ("cxl: Rework context lifetimes")
    Acked-by: Andrew Donnellan
    Signed-off-by: Michael Ellerman

    Frederic Barrat
     
  • We need to add memory barrier so that the page table walk doesn't happen
    before the cpumask is set and made visible to the other cpus. We need
    to use a sync here instead of lwsync because lwsync is not sufficient for
    store/load ordering.

    We also need to add an if (mm) check so that we do the right thing when called
    with a kernel context. For kernel context, we have mm = NULL. W.r.t kernel
    address we can skip setting the mm cpumask.

    Fixes: 0f4bc0932e ("powerpc/mm/cxl: Add the fault handling cpu to mm cpumask")
    Cc: Andrew Donnellan
    Reported-by: Benjamin Herrenschmidt
    Reported-by: Dan Carpenter
    Signed-off-by: Aneesh Kumar K.V
    Acked-by: Andrew Donnellan
    Signed-off-by: Michael Ellerman

    Aneesh Kumar K.V
     

30 Aug, 2017

5 commits

  • In certain platforms like TI's DRA7 SoCs, use of legacy PCI interrupt is
    exclusive with use of MSI (Section 24.9.4.6.2.1 Legacy PCI Interrupts in
    http://www.ti.com/lit/ug/spruhz6i/spruhz6i.pdf).

    However pci_endpoint_test driver enables MSI by default in probe. In order
    for pci_endpoint_test to be able to test legacy interrupt, MSI should be
    disabled. Add a module param 'no_msi' to disable MSI (only when legacy
    interrupt has to be tested).

    Signed-off-by: Kishon Vijay Abraham I
    [bhelgaas: folded in static fix from Colin Ian King ]
    Signed-off-by: Bjorn Helgaas

    Kishon Vijay Abraham I
     
  • BAR sizes are hard-coded in pci_endpoint_test driver corresponding to the
    sizes used in pci-epf-test function driver. This might break if the sizes
    in pci-epf-test function driver are modified (and the corresponding change
    is not done in pci_endpoint_test PCI driver).

    To avoid hard coding BAR sizes, use pci_resource_len() API.

    Signed-off-by: Kishon Vijay Abraham I
    Signed-off-by: Bjorn Helgaas

    Kishon Vijay Abraham I
     
  • Some platforms like TI's K2G have a restriction that the host side buffer
    address should be aligned to either 1MB/2MB/4MB or 8MB addresses depending
    on how it is configured in the endpoint (Ref: 11.14.4.9.1 Outbound Address
    Translation in K2G TRM SPRUHY8F January 2016 – Revised May 2017). This
    restriction also applies to the MSI addresses provided by the RC. However
    it's not possible for the RC to know about this restriction and it may not
    provide 1MB/2MB/4MB or 8MB aligned address. So MSI interrupts should be
    disabled even if the K2G EP has MSI capabiltiy register.

    Add support to not enable MSI interrupts in pci_endpoint_test driver so
    that it can be used to test K2G EP.

    Signed-off-by: Kishon Vijay Abraham I
    Signed-off-by: Bjorn Helgaas

    Kishon Vijay Abraham I
     
  • Some platforms like TI's K2G have a restriction that the host side buffer
    address should be aligned to either 1MB/2MB/4MB or 8MB (Ref: 11.14.4.9.1
    Outbound Address Translation in K2G TRM SPRUHY8F January 2016 – Revised May
    2017) addresses depending on how it is configured in the endpoint.

    Add support to provide such aligned address here so that pci_endpoint_test
    driver can be used to test K2G EP.

    Signed-off-by: Kishon Vijay Abraham I
    Signed-off-by: Bjorn Helgaas

    Kishon Vijay Abraham I
     
  • pci_endpoint_test driver assumes the PCI_ENDPOINT_TEST registers will
    always be mapped to BAR_0. This need not always be the case like in TI's
    K2G where BAR_0 is mapped to PCI controller application registers.

    Add support so that PCI_ENDPOINT_TEST registers can be mapped to any BAR.
    Change the bar_size used for BAR test accordingly.

    Signed-off-by: Kishon Vijay Abraham I
    Signed-off-by: Bjorn Helgaas

    Kishon Vijay Abraham I
     

28 Aug, 2017

6 commits