1. 08 Jun, 2019 7 commits
    • Sven Schnelle's avatar
      parisc: add dynamic ftrace · 6ca63662
      Sven Schnelle authored
      This patch implements dynamic ftrace for PA-RISC. The required mcount
      call sequences can get pretty long, so instead of patching the
      whole call sequence out of the functions, we are using
      -fpatchable-function-entry from gcc. This puts a configurable amount of
      NOPS before/at the start of the function. Taking do_sys_open() as example,
      which would look like this when the call is patched out:
      
      1036b248:       08 00 02 40     nop
      1036b24c:       08 00 02 40     nop
      1036b250:       08 00 02 40     nop
      1036b254:       08 00 02 40     nop
      
      1036b258 <do_sys_open>:
      1036b258:       08 00 02 40     nop
      1036b25c:       08 03 02 41     copy r3,r1
      1036b260:       6b c2 3f d9     stw rp,-14(sp)
      1036b264:       08 1e 02 43     copy sp,r3
      1036b268:       6f c1 01 00     stw,ma r1,80(sp)
      
      When ftrace gets enabled for this function the kernel will patch these
      NOPs to:
      
      1036b248:       10 19 57 20     <address of ftrace>
      1036b24c:       6f c1 00 80     stw,ma r1,40(sp)
      1036b250:       48 21 3f d1     ldw -18(r1),r1
      1036b254:       e8 20 c0 02     bv,n r0(r1)
      
      1036b258 <do_sys_open>:
      1036b258:       e8 3f 1f df     b,l,n .-c,r1
      1036b25c:       08 03 02 41     copy r3,r1
      1036b260:       6b c2 3f d9     stw rp,-14(sp)
      1036b264:       08 1e 02 43     copy sp,r3
      1036b268:       6f c1 01 00     stw,ma r1,80(sp)
      
      So the first NOP in do_sys_open() will be patched to jump backwards into
      some minimal trampoline code which pushes a stackframe, saves r1 which
      holds the return address, loads the address of the real ftrace function,
      and branches to that location. For 64 Bit things are getting a bit more
      complicated (and longer) because we must make sure that the address of
      ftrace location is 8 byte aligned, and the offset passed to ldd for
      fetching the address is 8 byte aligned as well.
      
      Note that gcc has a bug which misplaces the function label, and needs a
      patch to make dynamic ftrace work. See
      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90751 for details.
      Signed-off-by: default avatarSven Schnelle <svens@stackframe.org>
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      6ca63662
    • Sven Schnelle's avatar
      compiler.h: add CC_USING_PATCHABLE_FUNCTION_ENTRY · 2809b392
      Sven Schnelle authored
      This can be used for architectures implementing dynamic
      ftrace via -fpatchable-function-entry.
      Signed-off-by: default avatarSven Schnelle <svens@stackframe.org>
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      2809b392
    • Sven Schnelle's avatar
      parisc: use pr_debug() in kernel/module.c · 6183d68b
      Sven Schnelle authored
      Instead of using our own version, switch to the generic
      pr_() calls.
      Signed-off-by: default avatarSven Schnelle <svens@stackframe.org>
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      6183d68b
    • Sven Schnelle's avatar
      parisc: add WARN_ON() to clear_fixmap · e4eab1ce
      Sven Schnelle authored
      Calling clear_fixmap() on an already cleared fixed mapping is
      a bad thing to do. Add a WARN_ON() to catch such issues.
      Signed-off-by: default avatarSven Schnelle <svens@stackframe.org>
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      e4eab1ce
    • Sven Schnelle's avatar
      parisc: add spinlock to patch function · 7e923369
      Sven Schnelle authored
      If multiple CPUs are patching code we need the spinlock
      to protect against parallel fixmap maps/unmap calls.
      Signed-off-by: default avatarSven Schnelle <svens@stackframe.org>
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      7e923369
    • Sven Schnelle's avatar
      parisc: add support for patching multiple words · 4e87ace9
      Sven Schnelle authored
      add patch_text_multiple() which allows to patch multiple
      text words in memory. This can be used to copy functions.
      Signed-off-by: default avatarSven Schnelle <svens@stackframe.org>
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      4e87ace9
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2019-06-07-1' of git://anongit.freedesktop.org/drm/drm · 79c3ba32
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "A small bit more lively this week but not majorly so. I'm away in
        Japan next week for family holiday, so I'll be pretty disconnected,
        I've asked Daniel to do fixes for the week while I'm out.
      
        The nouveau firmware changes are a bit large, but they address a big
        problem where a whole set of boards don't load with the driver, and
        the new firmware fixes that, so I think it's worth trying to land it
        now.
      
        core:
         - Allow fb changes in async commits (drivers as well)
      
        udmabuf:
         - Unmap scatterlist when unmapping udmabuf
      
        nouveau:
         - firmware loading fixes for secboot firmware on new GPU revision.
      
        komeda:
         - oops, dma mapping and warning fixes
      
        arm-hdlcd:
         - clock fixes
         - mode validation fix
      
        i915:
         - Add a missing Icelake workaround
         - GVT - DMA map fault fix and enforcement fixes
      
        amdgpu:
         - DCE resume fix
         - New raven variation updates"
      
      * tag 'drm-fixes-2019-06-07-1' of git://anongit.freedesktop.org/drm/drm: (33 commits)
        drm/nouveau/secboot/gp10[2467]: support newer FW to fix SEC2 failures on some boards
        drm/nouveau/secboot: enable loading of versioned LS PMU/SEC2 ACR msgqueue FW
        drm/nouveau/secboot: split out FW version-specific LS function pointers
        drm/nouveau/secboot: pass max supported FW version to LS load funcs
        drm/nouveau/core: support versioned firmware loading
        drm/nouveau/core: pass subdev into nvkm_firmware_get, rather than device
        drm/komeda: Potential error pointer dereference
        drm/komeda: remove set but not used variable 'kcrtc'
        drm/amd/amdgpu: add RLC firmware to support raven1 refresh
        drm/amd/powerplay: add set_power_profile_mode for raven1_refresh
        drm/amdgpu: fix ring test failure issue during s3 in vce 3.0 (V2)
        udmabuf: actually unmap the scatterlist
        drm/arm/hdlcd: Allow a bit of clock tolerance
        drm/arm/hdlcd: Actually validate CRTC modes
        drm/arm/mali-dp: Add a loop around the second set CVAL and try 5 times
        drm/komeda: fixing of DMA mapping sg segment warning
        drm: don't block fb changes for async plane updates
        drm/vc4: fix fb references in async update
        drm/msm: fix fb references in async update
        drm/amd: fix fb references in async update
        ...
      79c3ba32
  2. 07 Jun, 2019 21 commits
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-v5.2-rc4' of... · d4425649
      Linus Torvalds authored
      Merge tag 'hwmon-for-v5.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon fixes from Guenter Roeck:
      
       - Fix a couple of inconsistencies and locking problems in pmbus driver
      
       - Register with thermal subsystem only on systems supporting devicetree
      
      * tag 'hwmon-for-v5.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (pmbus/core) Treat parameters as paged if on multiple pages
        hwmon: (pmbus/core) mutex_lock write in pmbus_set_samples
        hwmon: (core) add thermal sensors only if dev->of_node is present
      d4425649
    • Jan Glauber's avatar
      lockref: Limit number of cmpxchg loop retries · 893a7d32
      Jan Glauber authored
      The lockref cmpxchg loop is unbound as long as the spinlock is not
      taken. Depending on the hardware implementation of compare-and-swap
      a high number of loop retries might happen.
      
      Add an upper bound to the loop to force the fallback to spinlocks
      after some time. A retry value of 100 should not impact any hardware
      that does not have this issue.
      
      With the retry limit the performance of an open-close testcase
      improved between 60-70% on ThunderX2.
      Suggested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarJan Glauber <jglauber@marvell.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      893a7d32
    • Andrey Konovalov's avatar
      uaccess: add noop untagged_addr definition · d9344522
      Andrey Konovalov authored
      Architectures that support memory tagging have a need to perform untagging
      (stripping the tag) in various parts of the kernel. This patch adds an
      untagged_addr() macro, which is defined as noop for architectures that do
      not support memory tagging. The oncoming patch series will define it at
      least for sparc64 and arm64.
      Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Reviewed-by: default avatarKhalid Aziz <khalid.aziz@oracle.com>
      Signed-off-by: default avatarAndrey Konovalov <andreyknvl@google.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d9344522
    • Linus Torvalds's avatar
      Merge tag 'xtensa-20190607' of git://github.com/jcmvbkbc/linux-xtensa · d18c7e9d
      Linus Torvalds authored
      Pull xtensa fix from Max Filippov:
       "Fix a section mismatch between memblock_reserve and mem_reserve.
      
        This fixes tinyconfig xtensa builds"
      
      * tag 'xtensa-20190607' of git://github.com/jcmvbkbc/linux-xtensa:
        xtensa: Fix section mismatch between memblock_reserve and mem_reserve
      d18c7e9d
    • Linus Torvalds's avatar
      Merge tag 'kbuild-fixes-v5.2-2' of... · 33de0d1c
      Linus Torvalds authored
      Merge tag 'kbuild-fixes-v5.2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild
      
      Pull more Kbuild fixes from Masahiro Yamada:
      
       - fix kselftest-merge to find config fragments in deeper directories
      
       - fix kconfig unit test, which was broken by SPDX tag addition
      
       - add + prefix to buildtar to suppress jobserver unavailable warning
      
       - fix checkstack.pl to recognize arch=arm64
      
       - suppress noisy warning from cc-cross-prefix
      
      * tag 'kbuild-fixes-v5.2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
        kbuild: use more portable 'command -v' for cc-cross-prefix
        scripts/checkstack.pl: Fix arm64 wrong or unknown architecture
        kbuild: tar-pkg: enable communication with jobserver
        kconfig: tests: fix recursive inclusion unit test
        kbuild: teach kselftest-merge to find nested config files
      33de0d1c
    • Linus Torvalds's avatar
      Merge tag 'mmc-v5.2-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · 91f152e7
      Linus Torvalds authored
      Pull MMC fixes from Ulf Hansson:
       "Here's a couple of MMC and MEMSTICK fixes:
      
        MMC host:
         - sdhci: Fix SDIO IRQ thread deadlock
         - sdhci-tegra: Fix a warning message
         - sdhci_am654: Fix SLOTTYPE write
         - meson-gx: Fix IRQ ack
         - tmio: Fix SCC error handling to avoid false positive CRC error
      
        MEMSTICK core:
         - mspro_block: Fix returning a correct error code"
      
      * tag 'mmc-v5.2-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
        mmc: sdhci_am654: Fix SLOTTYPE write
        mmc: sdhci: Fix SDIO IRQ thread deadlock
        mmc: meson-gx: fix irq ack
        mmc: tmio: fix SCC error handling to avoid false positive CRC error
        mmc: tegra: Fix a warning message
        memstick: mspro_block: Fix an error code in mspro_block_issue_req()
      91f152e7
    • Linus Torvalds's avatar
      Merge tag 'pm-5.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · a373ec23
      Linus Torvalds authored
      Pull power management fixes from Rafael Wysocki:
       "These fix a crash during resume from hibernation introduced during the
        4.19 cycle, cause the new Performance and Energy Bias Hint (EPB) code
        to be built only if CONFIG_PM is set and add a few missing kerneldoc
        comments.
      
        Specifics:
      
         - Fix a crash that occurs when a kernel with 'nosmt' in the command
           line is used to resume the system from hibernation (as the
           "restore" kernel), because memory mapping differences between the
           restore and image kernels cause SMT siblings to be woken up from
           idle states and subsequently they try to fetch instructions from
           incorrect memory locations (Jiri Kosina).
      
         - Cause the new Performance and Energy Bias Hint (EPB) code to be
           built only if CONFIG_PM is set, because that code is not really
           necessary otherwise (Rafael Wysocki).
      
         - Add kerneldoc comments to documents some helper functions related
           to system-wide suspend to avoid possible confusion regarding their
           purpose (Rafael Wysocki)"
      
      * tag 'pm-5.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        x86/power: Fix 'nosmt' vs hibernation triple fault during resume
        PM: sleep: Add kerneldoc comments to some functions
        x86: intel_epb: Do not build when CONFIG_PM is unset
      a373ec23
    • Jann Horn's avatar
      x86/insn-eval: Fix use-after-free access to LDT entry · de9f8696
      Jann Horn authored
      get_desc() computes a pointer into the LDT while holding a lock that
      protects the LDT from being freed, but then drops the lock and returns the
      (now potentially dangling) pointer to its caller.
      
      Fix it by giving the caller a copy of the LDT entry instead.
      
      Fixes: 670f928b ("x86/insn-eval: Add utility function to get segment descriptor")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJann Horn <jannh@google.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      de9f8696
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 1e1d9263
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Free AF_PACKET po->rollover properly, from Willem de Bruijn.
      
       2) Read SFP eeprom in max 16 byte increments to avoid problems with
          some SFP modules, from Russell King.
      
       3) Fix UDP socket lookup wrt. VRF, from Tim Beale.
      
       4) Handle route invalidation properly in s390 qeth driver, from Julian
          Wiedmann.
      
       5) Memory leak on unload in RDS, from Zhu Yanjun.
      
       6) sctp_process_init leak, from Neil HOrman.
      
       7) Fix fib_rules rule insertion semantic change that broke Android,
          from Hangbin Liu.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (33 commits)
        pktgen: do not sleep with the thread lock held.
        net: mvpp2: Use strscpy to handle stat strings
        net: rds: fix memory leak in rds_ib_flush_mr_pool
        ipv6: fix EFAULT on sendto with icmpv6 and hdrincl
        ipv6: use READ_ONCE() for inet->hdrincl as in ipv4
        Revert "fib_rules: return 0 directly if an exactly same rule exists when NLM_F_EXCL not supplied"
        net: aquantia: fix wol configuration not applied sometimes
        ethtool: fix potential userspace buffer overflow
        Fix memory leak in sctp_process_init
        net: rds: fix memory leak when unload rds_rdma
        ipv6: fix the check before getting the cookie in rt6_get_cookie
        ipv4: not do cache for local delivery if bc_forwarding is enabled
        s390/qeth: handle error when updating TX queue count
        s390/qeth: fix VLAN attribute in bridge_hostnotify udev event
        s390/qeth: check dst entry before use
        s390/qeth: handle limited IPv4 broadcast in L3 TX path
        net: fix indirect calls helpers for ptype list hooks.
        net: ipvlan: Fix ipvlan device tso disabled while NETIF_F_IP_CSUM is set
        udp: only choose unbound UDP socket for multicast when not in a VRF
        net/tls: replace the sleeping lock around RX resync with a bit lock
        ...
      1e1d9263
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma · 6e38335d
      Linus Torvalds authored
      Pull rdma fixes from Jason Gunthorpe:
       "Things are looking pretty quiet here in RDMA, not too many bug fixes
        rolling in right now. The usual driver bug fixes and fixes for a
        couple of regressions introduced in 5.2:
      
         - Fix a race on bootup with RDMA device renaming and srp. SRP also
           needs to rename its internal sys files
      
         - Fix a memory leak in hns
      
         - Don't leak resources in efa on certain error unwinds
      
         - Don't panic in certain error unwinds in ib_register_device
      
         - Various small user visible bug fix patches for the hfi and efa
           drivers
      
         - Fix the 32 bit compilation break"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma:
        RDMA/efa: Remove MAYEXEC flag check from mmap flow
        mlx5: avoid 64-bit division
        IB/hfi1: Validate page aligned for a given virtual address
        IB/{qib, hfi1, rdmavt}: Correct ibv_devinfo max_mr value
        IB/hfi1: Insure freeze_work work_struct is canceled on shutdown
        IB/rdmavt: Fix alloc_qpn() WARN_ON()
        RDMA/core: Fix panic when port_data isn't initialized
        RDMA/uverbs: Pass udata on uverbs error unwind
        RDMA/core: Clear out the udata before error unwind
        RDMA/hns: Fix PD memory leak for internal allocation
        RDMA/srp: Rename SRP sysfs name after IB device rename trigger
      6e38335d
    • Linus Torvalds's avatar
      Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · a02a532c
      Linus Torvalds authored
      Pull arm64 fixes from Will Deacon:
       "Another round of mostly-benign fixes, the exception being a boot crash
        on SVE2-capable CPUs (although I don't know where you'd find such a
        thing, so maybe it's benign too).
      
        We're in the process of resolving some big-endian ptrace breakage, so
        I'll probably have some more for you next week.
      
        Summary:
      
         - Fix boot crash on platforms with SVE2 due to missing register
           encoding
      
         - Fix architected timer accessors when CONFIG_OPTIMIZE_INLINING=y
      
         - Move cpu_logical_map into smp.h for use by upcoming irqchip drivers
      
         - Trivial typo fix in comment
      
         - Disable some useless, noisy warnings from GCC 9"
      
      * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
        arm64: Silence gcc warnings about arch ABI drift
        ARM64: trivial: s/TIF_SECOMP/TIF_SECCOMP/ comment typo fix
        arm64: arch_timer: mark functions as __always_inline
        arm64: smp: Moved cpu_logical_map[] to smp.h
        arm64: cpufeature: Fix missing ZFR0 in __read_sysreg_by_encoding()
      a02a532c
    • Masahiro Yamada's avatar
      kbuild: use more portable 'command -v' for cc-cross-prefix · 913ab978
      Masahiro Yamada authored
      To print the pathname that will be used by shell in the current
      environment, 'command -v' is a standardized way. [1]
      
      'which' is also often used in scripts, but it is less portable.
      
      When I worked on commit bd55f96f ("kbuild: refactor cc-cross-prefix
      implementation"), I was eager to use 'command -v' but it did not work.
      (The reason is explained below.)
      
      I kept 'which' as before but got rid of '> /dev/null 2>&1' as I
      thought it was no longer needed. Sorry, I was wrong.
      
      It works well on my Ubuntu machine, but Alexey Brodkin reports noisy
      warnings on CentOS7 when 'which' fails to find the given command in
      the PATH environment.
      
        $ which foo
        which: no foo in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin)
      
      Given that behavior of 'which' depends on system (and it may not be
      installed by default), I want to try 'command -v' once again.
      
      The specification [1] clearly describes the behavior of 'command -v'
      when the given command is not found:
      
        Otherwise, no output shall be written and the exit status shall reflect
        that the name was not found.
      
      However, we need a little magic to use 'command -v' from Make.
      
      $(shell ...) passes the argument to a subshell for execution, and
      returns the standard output of the command.
      
      Here is a trick. GNU Make may optimize this by executing the command
      directly instead of forking a subshell, if no shell special characters
      are found in the command and omitting the subshell will not change the
      behavior.
      
      In this case, no shell special character is used. So, Make will try
      to run it directly. However, 'command' is a shell-builtin command,
      then Make would fail to find it in the PATH environment:
      
        $ make ARCH=m68k defconfig
        make: command: Command not found
        make: command: Command not found
        make: command: Command not found
      
      In fact, Make has a table of shell-builtin commands because it must
      ask the shell to execute them.
      
      Until recently, 'command' was missing in the table.
      
      This issue was fixed by the following commit:
      
      | commit 1af314465e5dfe3e8baa839a32a72e83c04f26ef
      | Author: Paul Smith <psmith@gnu.org>
      | Date:   Sun Nov 12 18:10:28 2017 -0500
      |
      |     * job.c: Add "command" as a known shell built-in.
      |
      |     This is not a POSIX shell built-in but it's common in UNIX shells.
      |     Reported by Nick Bowler <nbowler@draconx.ca>.
      
      Because the latest release is GNU Make 4.2.1 in 2016, this commit is
      not included in any released versions. (But some distributions may
      have back-ported it.)
      
      We need to trick Make to spawn a subshell. There are various ways to
      do so:
      
       1) Use a shell special character '~' as dummy
      
          $(shell : ~; command -v $(c)gcc)
      
       2) Use a variable reference that always expands to the empty string
          (suggested by David Laight)
      
          $(shell command$${x:+} -v $(c)gcc)
      
       3) Use redirect
      
          $(shell command -v $(c)gcc 2>/dev/null)
      
      I chose 3) to not confuse people. The stderr would not be polluted
      anyway, but it will provide extra safety, and is easy to understand.
      
      Tested on Make 3.81, 3.82, 4.0, 4.1, 4.2, 4.2.1
      
      [1] http://pubs.opengroup.org/onlinepubs/9699919799/utilities/command.html
      
      Fixes: bd55f96f ("kbuild: refactor cc-cross-prefix implementation")
      Cc: linux-stable <stable@vger.kernel.org> # 5.1
      Reported-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Tested-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      913ab978
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-x86' · a964d23c
      Rafael J. Wysocki authored
      * pm-x86:
        x86/power: Fix 'nosmt' vs hibernation triple fault during resume
        x86: intel_epb: Do not build when CONFIG_PM is unset
      a964d23c
    • Dave Airlie's avatar
      Merge branch 'linux-5.2' of git://github.com/skeggsb/linux into drm-fixes · 671e2ee5
      Dave Airlie authored
      " This is a bit more than I'd like to be pushing at this point in a
      cycle, but it's a fairly important issue.  There's been numerous
      reports of more recent GP10[2467] boards failing to load, and I've
      worked with NVIDIA FW engineers and tracked this down to the FW we've
      been using not properly supporting the boards in question.
      
      I've pushed an update to linux-firmware with the new FW version, which
      unfortunately contains API changes vs the older firmware.
      
      This series teaches the ACR subsystem inside nouveau enough to be able
      to deal with supporting multiple incompatible FW revisions, and adds
      support to the relevant chipsets for loading the newer FW revision, if
      it's available."
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Ben Skeggs <skeggsb@gmail.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/CACAvsv7pG+vur0Kn_TyU3ainnkvJVw07upnnaQNOToF+kzQtDQ@mail.gmail.com
      671e2ee5
    • Ben Skeggs's avatar
      drm/nouveau/secboot/gp10[2467]: support newer FW to fix SEC2 failures on some boards · ab4bec16
      Ben Skeggs authored
      Some newer boards with these chipsets aren't compatible with the prior
      version of the SEC2 FW, and fail to load as a result.
      
      This newer FW is actually the one we already use on >=GP108.
      
      Unfortunately, there are interface differences in GP108's FW, making it
      impossible to simply move files around in linux-firmware to solve this.
      
      We need to be able to keep compatibility with all linux-firmware/kernel
      combinations, which means supporting both firmwares.
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      ab4bec16
    • Ben Skeggs's avatar
      drm/nouveau/secboot: enable loading of versioned LS PMU/SEC2 ACR msgqueue FW · 9352ce37
      Ben Skeggs authored
      Some chipsets will be switching to updated SEC2 LS firmware, so we need to
      plumb that through.
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      9352ce37
    • Ben Skeggs's avatar
      drm/nouveau/secboot: split out FW version-specific LS function pointers · 5f0f8b57
      Ben Skeggs authored
      It's not enough to have per-falcon structures anymore, we have multiple
      versions of some firmware now that have interface differences.
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      5f0f8b57
    • Ben Skeggs's avatar
      drm/nouveau/secboot: pass max supported FW version to LS load funcs · c26f3061
      Ben Skeggs authored
      Will be passed to the FW loader function as an upper bound on the supported
      FW version to attempt to load.
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      c26f3061
    • Ben Skeggs's avatar
      drm/nouveau/core: support versioned firmware loading · 475cf02b
      Ben Skeggs authored
      We have a need for this now with updated SEC2 LS FW images that have an
      incompatible interface from the previous version.
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      475cf02b
    • Ben Skeggs's avatar
      drm/nouveau/core: pass subdev into nvkm_firmware_get, rather than device · 8854eed1
      Ben Skeggs authored
      It'd be nice to have FW loading debug messages to appear for the relevant
      subsystem, when enabled.
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      8854eed1
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2019-06-06' of... · e659b412
      Dave Airlie authored
      Merge tag 'drm-intel-fixes-2019-06-06' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
      
      - Include gvt-fixes-2019-06-05
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190606120401.GA16071@jlahtine-desk.ger.corp.intel.com
      e659b412
  3. 06 Jun, 2019 12 commits
    • Dave Airlie's avatar
      Merge branch 'malidp-fixes' of git://linux-arm.org/linux-ld into drm-fixes · bcc9d0e3
      Dave Airlie authored
      Assorted set of patches for Arm DRM drivers that I maintain
      in my tree.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Liviu Dudau <Liviu.Dudau@arm.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190604144205.GO15316@e110455-lin.cambridge.arm.com
      bcc9d0e3
    • Linus Torvalds's avatar
      Merge branch 'parisc-5.2-3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · 16d72dd4
      Linus Torvalds authored
      Pull parisc fixes from Helge Deller:
      
       - Fix crashes when accessing PCI devices on some machines like C240 and
         J5000. The crashes were triggered because we replaced cache flushes
         by nops in the alternative coding where we shouldn't for some
         machines.
      
       - Dave fixed a race in the usage of the sr1 space register when used to
         load the coherence index.
      
       - Use the hardware lpa instruction to to load the physical address of
         kernel virtual addresses in the iommu driver code.
      
       - The kernel may fail to link when CONFIG_MLONGCALLS isn't set. Solve
         that by rearranging functions in the final vmlinux executeable.
      
       - Some defconfig cleanups and removal of compiler warnings.
      
      * 'parisc-5.2-3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: Fix crash due alternative coding for NP iopdir_fdc bit
        parisc: Use lpa instruction to load physical addresses in driver code
        parisc: configs: Remove useless UEVENT_HELPER_PATH
        parisc: Use implicit space register selection for loading the coherence index of I/O pdirs
        parisc: Fix compiler warnings in float emulation code
        parisc/slab: cleanup after /proc/slab_allocators removal
        parisc: Allow building 64-bit kernel without -mlong-calls compiler option
        parisc: Kconfig: remove ARCH_DISCARD_MEMBLOCK
      16d72dd4
    • Linus Torvalds's avatar
      Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · ae876604
      Linus Torvalds authored
      Pull crypto fixes from Herbert Xu:
       "This fixes a regression that breaks the jitterentropy RNG and a
        potential memory leak in hmac"
      
      * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
        crypto: hmac - fix memory leak in hmac_init_tfm()
        crypto: jitterentropy - change back to module_init()
      ae876604
    • Linus Torvalds's avatar
      Merge tag 'xfs-5.2-fixes-2' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · 01047631
      Linus Torvalds authored
      Pull xfs fixes from Darrick Wong:
       "Here are a couple more bug fixes for 5.2. Changes since last update:
      
         - Fix some forgotten strings in a log debugging function
      
         - Fix incorrect unit conversion in online fsck code"
      
      * tag 'xfs-5.2-fixes-2' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
        xfs: inode btree scrubber should calculate im_boffset correctly
        xfs: fix broken log reservation debugging
      01047631
    • Linus Torvalds's avatar
      Merge tag 'gfs2-v5.2.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2 · dc8ca9cc
      Linus Torvalds authored
      Pull gfs2 fix from Andreas Gruenbacher:
       "A revert for a patch that turned out to be broken"
      
      * tag 'gfs2-v5.2.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2:
        Revert "gfs2: Replace gl_revokes with a GLF flag"
      dc8ca9cc
    • Linus Torvalds's avatar
      Merge tag 'ovl-fixes-5.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs · 5d6b501f
      Linus Torvalds authored
      Pull overlayfs fixes from Miklos Szeredi:
       "Here's one fix for a class of bugs triggered by syzcaller, and one
        that makes xfstests fail less"
      
      * tag 'ovl-fixes-5.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs:
        ovl: doc: add non-standard corner cases
        ovl: detect overlapping layers
        ovl: support the FS_IOC_FS[SG]ETXATTR ioctls
      5d6b501f
    • Linus Torvalds's avatar
      Merge tag 'fuse-fixes-5.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse · 21175857
      Linus Torvalds authored
      Pull fuse fixes from Miklos Szeredi:
       "This fixes a leaked inode lock in an error cleanup path and a data
        consistency issue with copy_file_range().
      
        It also adds a new flag for the WRITE request that allows userspace
        filesystems to clear suid/sgid bits on the file if necessary"
      
      * tag 'fuse-fixes-5.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:
        fuse: extract helper for range writeback
        fuse: fix copy_file_range() in the writeback case
        fuse: add FUSE_WRITE_KILL_PRIV
        fuse: fallocate: fix return with locked inode
      21175857
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-5.2-2' of git://git.linux-nfs.org/projects/anna/linux-nfs · 459aa077
      Linus Torvalds authored
      Pull NFS client fixes from Anna Schumaker:
       "These are mostly stable bugfixes found during testing, many during the
        recent NFS bake-a-thon.
      
        Stable bugfixes:
         - SUNRPC: Fix regression in umount of a secure mount
         - SUNRPC: Fix a use after free when a server rejects the RPCSEC_GSS credential
         - NFSv4.1: Again fix a race where CB_NOTIFY_LOCK fails to wake a waiter
         - NFSv4.1: Fix bug only first CB_NOTIFY_LOCK is handled
      
        Other bugfixes:
         - xprtrdma: Use struct_size() in kzalloc()"
      
      * tag 'nfs-for-5.2-2' of git://git.linux-nfs.org/projects/anna/linux-nfs:
        NFSv4.1: Fix bug only first CB_NOTIFY_LOCK is handled
        NFSv4.1: Again fix a race where CB_NOTIFY_LOCK fails to wake a waiter
        SUNRPC: Fix a use after free when a server rejects the RPCSEC_GSS credential
        SUNRPC fix regression in umount of a secure mount
        xprtrdma: Use struct_size() in kzalloc()
      459aa077
    • Paolo Abeni's avatar
      pktgen: do not sleep with the thread lock held. · 720f1de4
      Paolo Abeni authored
      Currently, the process issuing a "start" command on the pktgen procfs
      interface, acquires the pktgen thread lock and never release it, until
      all pktgen threads are completed. The above can blocks indefinitely any
      other pktgen command and any (even unrelated) netdevice removal - as
      the pktgen netdev notifier acquires the same lock.
      
      The issue is demonstrated by the following script, reported by Matteo:
      
      ip -b - <<'EOF'
      	link add type dummy
      	link add type veth
      	link set dummy0 up
      EOF
      modprobe pktgen
      echo reset >/proc/net/pktgen/pgctrl
      {
      	echo rem_device_all
      	echo add_device dummy0
      } >/proc/net/pktgen/kpktgend_0
      echo count 0 >/proc/net/pktgen/dummy0
      echo start >/proc/net/pktgen/pgctrl &
      sleep 1
      rmmod veth
      
      Fix the above releasing the thread lock around the sleep call.
      
      Additionally we must prevent racing with forcefull rmmod - as the
      thread lock no more protects from them. Instead, acquire a self-reference
      before waiting for any thread. As a side effect, running
      
      rmmod pktgen
      
      while some thread is running now fails with "module in use" error,
      before this patch such command hanged indefinitely.
      
      Note: the issue predates the commit reported in the fixes tag, but
      this fix can't be applied before the mentioned commit.
      
      v1 -> v2:
       - no need to check for thread existence after flipping the lock,
         pktgen threads are freed only at net exit time
       -
      
      Fixes: 6146e6a4 ("[PKTGEN]: Removes thread_{un,}lock() macros.")
      Reported-and-tested-by: default avatarMatteo Croce <mcroce@redhat.com>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      720f1de4
    • Linus Torvalds's avatar
      Merge tag 'for-rc-adfs' of git://git.armlinux.org.uk/~rmk/linux-arm · 44e843eb
      Linus Torvalds authored
      Pull ADFS cleanups/fixes from Russell King:
       "As a result of some of Al Viro's great work, here are a few cleanups
        with fixes for adfs:
      
         - factor out filename comparison, so we can be sure that
           adfs_compare() (used for namei compare) and adfs_match() (used for
           lookup) have the same behaviour.
      
         - factor out filename lowering (which is not the same as tolower()
           which will lower top-bit-set characters) to ensure that we have the
           same behaviour when comparing filenames as when we hash them.
      
         - factor out the object fixups, so we are applying all fixups to
           directory objects in the same way, independent of the disk format.
      
         - factor out the object name fixup (into the previously factored out
           function) to ensure that filenames are appropriately translated -
           for example, adfs allows '/' in filenames, which being the Unix
           path separator, need to be translated to a different character,
           which is normally '.' (DOS 8.3 filenames represent the . as a / on
           adfs, so this is the expected reverse translation.)
      
         - remove filename truncation; Al asked about this and apparently the
           decision is to remove it. In any case, adfs's truncation was buggy,
           so this rids us of that bug by removing the truncation feature.
      
         - we now have only one location which adds the "filetype" suffix to
           the filename, so there's no point that code being out of line.
      
         - since we translate '/' into '.', an adfs filename of "/" or "//"
           would end up being translated to "." and ".." which have special
           meanings. In this case, change the first character to "^" to avoid
           these special directory names being abused"
      
      * tag 'for-rc-adfs' of git://git.armlinux.org.uk/~rmk/linux-arm:
        fs/adfs: fix filename fixup handling for "/" and "//" names
        fs/adfs: move append_filetype_suffix() into adfs_object_fixup()
        fs/adfs: remove truncated filename hashing
        fs/adfs: factor out filename fixup
        fs/adfs: factor out object fixups
        fs/adfs: factor out filename case lowering
        fs/adfs: factor out filename comparison
      44e843eb
    • Maxime Chevallier's avatar
      net: mvpp2: Use strscpy to handle stat strings · d37acd5a
      Maxime Chevallier authored
      Use a safe strscpy call to copy the ethtool stat strings into the
      relevant buffers, instead of a memcpy that will be accessing
      out-of-bound data.
      
      Fixes: 118d6298 ("net: mvpp2: add ethtool GOP statistics")
      Signed-off-by: default avatarMaxime Chevallier <maxime.chevallier@bootlin.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d37acd5a
    • Zhu Yanjun's avatar
      net: rds: fix memory leak in rds_ib_flush_mr_pool · 85cb9287
      Zhu Yanjun authored
      When the following tests last for several hours, the problem will occur.
      
      Server:
          rds-stress -r 1.1.1.16 -D 1M
      Client:
          rds-stress -r 1.1.1.14 -s 1.1.1.16 -D 1M -T 30
      
      The following will occur.
      
      "
      Starting up....
      tsks   tx/s   rx/s  tx+rx K/s    mbi K/s    mbo K/s tx us/c   rtt us cpu
      %
        1      0      0       0.00       0.00       0.00    0.00 0.00 -1.00
        1      0      0       0.00       0.00       0.00    0.00 0.00 -1.00
        1      0      0       0.00       0.00       0.00    0.00 0.00 -1.00
        1      0      0       0.00       0.00       0.00    0.00 0.00 -1.00
      "
      >From vmcore, we can find that clean_list is NULL.
      
      >From the source code, rds_mr_flushd calls rds_ib_mr_pool_flush_worker.
      Then rds_ib_mr_pool_flush_worker calls
      "
       rds_ib_flush_mr_pool(pool, 0, NULL);
      "
      Then in function
      "
      int rds_ib_flush_mr_pool(struct rds_ib_mr_pool *pool,
                               int free_all, struct rds_ib_mr **ibmr_ret)
      "
      ibmr_ret is NULL.
      
      In the source code,
      "
      ...
      list_to_llist_nodes(pool, &unmap_list, &clean_nodes, &clean_tail);
      if (ibmr_ret)
              *ibmr_ret = llist_entry(clean_nodes, struct rds_ib_mr, llnode);
      
      /* more than one entry in llist nodes */
      if (clean_nodes->next)
              llist_add_batch(clean_nodes->next, clean_tail, &pool->clean_list);
      ...
      "
      When ibmr_ret is NULL, llist_entry is not executed. clean_nodes->next
      instead of clean_nodes is added in clean_list.
      So clean_nodes is discarded. It can not be used again.
      The workqueue is executed periodically. So more and more clean_nodes are
      discarded. Finally the clean_list is NULL.
      Then this problem will occur.
      
      Fixes: 1bc144b6 ("net, rds, Replace xlist in net/rds/xlist.h with llist")
      Signed-off-by: default avatarZhu Yanjun <yanjun.zhu@oracle.com>
      Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      85cb9287