1. 23 Jun, 2018 7 commits
    • Linus Torvalds's avatar
      Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · 2dd3f7c9
      Linus Torvalds authored
      Pull crypto fixes from Herbert Xu:
      
       - Fix use after free in chtls
      
       - Fix RBP breakage in sha3
      
       - Fix use after free in hwrng_unregister
      
       - Fix overread in morus640
      
       - Move sleep out of kernel_neon in arm64/aes-blk
      
      * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
        hwrng: core - Always drop the RNG in hwrng_unregister()
        crypto: morus640 - Fix out-of-bounds access
        crypto: don't optimize keccakf()
        crypto: arm64/aes-blk - fix and move skcipher_walk_done out of kernel_neon_begin, _end
        crypto: chtls - use after free in chtls_pt_recvmsg()
      2dd3f7c9
    • Linus Torvalds's avatar
      Merge tag 'linux-kselftest-4.18-rc2' of... · b13fbe77
      Linus Torvalds authored
      Merge tag 'linux-kselftest-4.18-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull kselftest fixes from Shuah Khan:
      
       - fix new sparc64 adi driver test compile errors on non-sparc systems
      
       - fix config fragment for sync framework for improved test coverage
      
       - fix several tests to return correct Kselftest skip code
      
      * tag 'linux-kselftest-4.18-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
        selftests: sparc64: Add missing SPDX License Identifiers
        selftests: sparc64: delete RUN_TESTS and EMIT_TESTS overrides
        selftests: sparc64: Fix to do nothing on non-sparc64
        selftests: sync: add config fragment for testing sync framework
        selftests: vm: return Kselftest Skip code for skipped tests
        selftests: zram: return Kselftest Skip code for skipped tests
        selftests: user: return Kselftest Skip code for skipped tests
        selftests: sysctl: return Kselftest Skip code for skipped tests
        selftests: static_keys: return Kselftest Skip code for skipped tests
        selftests: pstore: return Kselftest Skip code for skipped tests
      b13fbe77
    • Linus Torvalds's avatar
      Merge tag 'trace-v4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 81f9c4e4
      Linus Torvalds authored
      Pull tracing fixes from Steven Rostedt:
       "This contains a few fixes and a clean up.
      
         - a bad merge caused an "endif" to go in the wrong place in
           scripts/Makefile.build
      
         - softirq tracing fix for tracing that corrupts lockdep and causes a
           false splat
      
         - histogram documentation typo fixes
      
         - fix a bad memory reference when passing in no filter to the filter
           code
      
         - simplify code by using the swap macro instead of open coding the
           swap"
      
      * tag 'trace-v4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        tracing: Fix SKIP_STACK_VALIDATION=1 build due to bad merge with -mrecord-mcount
        tracing: Fix some errors in histogram documentation
        tracing: Use swap macro in update_max_tr
        softirq: Reorder trace_softirqs_on to prevent lockdep splat
        tracing: Check for no filter when processing event filters
      81f9c4e4
    • Linus Torvalds's avatar
      Merge tag 'powerpc-4.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 5e220483
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
      
       - a fix for hugetlb with 4K pages, broken by our recent changes for
         split PMD PTL.
      
       - set the correct assembler machine type on e500mc, needed since
         binutils 2.26 introduced two forms for the "wait" instruction.
      
       - a fix for potential missed TLB flushes with MADV_[FREE|DONTNEED] etc.
         and THP on Power9 Radix.
      
       - three fixes to try and make our panic handling more robust by hard
         disabling interrupts, and not marking stopped CPUs as offline because
         they haven't been properly offlined.
      
       - three other minor fixes.
      
      Thanks to: Aneesh Kumar K.V, Michael Jeanson, Nicholas Piggin.
      
      * tag 'powerpc-4.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/mm/hash/4k: Free hugetlb page table caches correctly.
        powerpc/64s/radix: Fix radix_kvm_prefetch_workaround paca access of not possible CPU
        powerpc/64s: Fix build failures with CONFIG_NMI_IPI=n
        powerpc/64: hard disable irqs on the panic()ing CPU
        powerpc: smp_send_stop do not offline stopped CPUs
        powerpc/64: hard disable irqs in panic_smp_self_stop
        powerpc/64s: Fix DT CPU features Power9 DD2.1 logic
        powerpc/64s/radix: Fix MADV_[FREE|DONTNEED] TLB flush miss problem with THP
        powerpc/e500mc: Set assembler machine type to e500mc
      5e220483
    • Linus Torvalds's avatar
      Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · 7ab366e4
      Linus Torvalds authored
      Pull arm64 fixes from Catalin Marinas:
      
       - clear buffers allocated with FORCE_CONTIGUOUS explicitly until the
         CMA code honours __GFP_ZERO
      
       - notrace annotation for secondary_start_kernel()
      
       - use early_param() instead of __setup() for "kpti=" as it is needed
         for the cpufeature callback remapping swapper to non-global mappings
      
       - ensure writes to swapper are ordered wrt subsequent cache maintenance
         in the kpti non-global remapping code
      
      * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
        arm64: mm: Ensure writes to swapper are ordered wrt subsequent cache maintenance
        arm64: kpti: Use early_param for kpti= command-line option
        arm64: make secondary_start_kernel() notrace
        arm64: dma-mapping: clear buffers allocated with FORCE_CONTIGUOUS flag
      7ab366e4
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 8b88ed3c
      Linus Torvalds authored
      Pull KVM fixes from Radim Krčmář:
       "ARM:
         - Lazy FPSIMD switching fixes
         - Really disable compat ioctls on architectures that don't want it
         - Disable compat on arm64 (it was never implemented...)
         - Rely on architectural requirements for GICV on GICv3
         - Detect bad alignments in unmap_stage2_range
      
        x86:
         - Add nested VM entry checks to avoid broken error recovery path
         - Minor documentation fix"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        KVM: fix KVM_CAP_HYPERV_TLBFLUSH paragraph number
        kvm: vmx: Nested VM-entry prereqs for event inj.
        KVM: arm64: Prevent KVM_COMPAT from being selected
        KVM: Enforce error in ioctl for compat tasks when !KVM_COMPAT
        KVM: arm/arm64: add WARN_ON if size is not PAGE_SIZE aligned in unmap_stage2_range
        KVM: arm64: Avoid mistaken attempts to save SVE state for vcpus
        KVM: arm64/sve: Fix SVE trap restoration for non-current tasks
        KVM: arm64: Don't mask softirq with IRQs disabled in vcpu_put()
        arm64: Introduce sysreg_clear_set()
        KVM: arm/arm64: Drop resource size check for GICV window
      8b88ed3c
    • Linus Torvalds's avatar
      Merge tag 'for-linus-4.18-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip · 4ab59fcf
      Linus Torvalds authored
      Pull xen fixes from Juergen Gross:
       "This contains the following fixes/cleanups:
      
         - the removal of a BUG_ON() which wasn't necessary and which could
           trigger now due to a recent change
      
         - a correction of a long standing bug happening very rarely in Xen
           dom0 when a hypercall buffer from user land was not accessible by
           the hypervisor for very short periods of time due to e.g. page
           migration or compaction
      
         - usage of EXPORT_SYMBOL_GPL() instead of EXPORT_SYMBOL() in a
           Xen-related driver (no breakage possible as using those symbols
           without others already exported via EXPORT-SYMBOL_GPL() wouldn't
           make any sense)
      
         - a simplification for Xen PVH or Xen ARM guests
      
         - some additional error handling for callers of xenbus_printf()"
      
      * tag 'for-linus-4.18-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
        xen: Remove unnecessary BUG_ON from __unbind_from_irq()
        xen: add new hypercall buffer mapping device
        xen/scsiback: add error handling for xenbus_printf
        scsi: xen-scsifront: add error handling for xenbus_printf
        xen/grant-table: Export gnttab_{alloc|free}_pages as GPL
        xen: add error handling for xenbus_printf
        xen: share start flags between PV and PVH
      4ab59fcf
  2. 22 Jun, 2018 10 commits
  3. 21 Jun, 2018 23 commits
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2018-06-21' of... · 8325e6e3
      Dave Airlie authored
      Merge tag 'drm-intel-fixes-2018-06-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
      
      drm/i915 fixes for v4.18-rc2:
      - Mostly cc: stable display fixes, including a DBLSCAN regression fix
      - GEM fixes for this merge window
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      Link: https://patchwork.freedesktop.org/patch/msgid/87d0wkuypy.fsf@intel.com
      8325e6e3
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-4.18-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · 27db64f6
      Linus Torvalds authored
      Pull NFS client bugfixes from Trond Myklebust:
       "Hightlights include:
      
         - fix an rcu deadlock in nfs_delegation_find_inode()
      
         - fix NFSv4 deadlocks due to not freeing the session slot in
           layoutget
      
         - don't send layoutreturn if the layout is already invalid
      
         - prevent duplicate XID allocation
      
         - flexfiles: Don't tie up all the rpciod threads in resends"
      
      * tag 'nfs-for-4.18-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
        pNFS/flexfiles: Process writeback resends from nfsiod context as well
        pNFS/flexfiles: Don't tie up all the rpciod threads in resends
        sunrpc: Prevent duplicate XID allocation
        pNFS: Don't send layoutreturn if the layout is already invalid
        pNFS: Always free the session slot on error in nfs4_layoutget_handle_exception
        NFS: Fix an rcu deadlock in nfs_delegation_find_inode()
      27db64f6
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v4.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · acdf3f93
      Linus Torvalds authored
      Pull pin control fixes from Linus Walleij:
       "Some fallout in the pin control subsystem in the first week after the
        merge window, some minor fixes so I'd like to get it to you ASAP.
      
         - fix a serious kernel panic on the Mediatek driver with the external
           interrupt controller.
      
         - fix an uninitialized compiler warning in the owl (actions) driver.
      
         - allocation failure in the pinctrl-single driver.
      
         - pointer overwrite problem in the i.MX driver.
      
         - fix a small compiler warning"
      
      * tag 'pinctrl-v4.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl: mt7622: fix a kernel panic when pio don't work as EINT controller
        pinctrl: actions: Fix uninitialized error in owl_pin_config_set()
        pinctrl: single: Add allocation failure checking of saved_vals
        pinctrl: devicetree: Fix pctldev pointer overwrite
        pinctrl: mediatek: remove redundant return value check of platform_get_resource()
      acdf3f93
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-linus-v4.18-rc2' of... · 303f311e
      Linus Torvalds authored
      Merge tag 'hwmon-for-linus-v4.18-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon fixes from Guenter Roeck:
      
       - fix a loop limit in nct6775 driver
      
       - disable fan support for Dell XPS13 9333
      
      * tag 'hwmon-for-linus-v4.18-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (nct6775) Fix loop limit
        hwmon: (dell-smm) Disable fan support for Dell XPS13 9333
      303f311e
    • Linus Torvalds's avatar
      Merge tag 'acpi-4.18-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · f43fc5a0
      Linus Torvalds authored
      Pull ACPI fixes from Rafael Wysocki:
       "These fix a suspend/resume regression in the ACPI driver for Intel
        SoCs (LPSS), add a new system wakeup quirk to the ACPI EC driver and
        fix an inline stub of a function in the ACPI processor driver that
        diverged from the original.
      
        Specifics:
      
         - Fix a suspend/resume regression in the ACPI driver for Intel SoCs
           (LPSS) to make it work on systems where some power management
           quirks should only be applied for runtime PM and suspend-to-idle
           and not for suspend-to-RAM (Rafael Wysocki).
      
         - Add a system wakeup quirk for Thinkpad X1 Carbon 6th to the ACPI EC
           driver to avoid drainig battery too fast while suspended to idle on
           those systems (Mika Westerberg).
      
         - Fix an inline stub of acpi_processor_ppc_has_changed() to match the
           original function definition (Brian Norris)"
      
      * tag 'acpi-4.18-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI / processor: Finish making acpi_processor_ppc_has_changed() void
        ACPI / EC: Use ec_no_wakeup on Thinkpad X1 Carbon 6th
        ACPI / LPSS: Avoid PM quirks on suspend and resume from S3
      f43fc5a0
    • Linus Torvalds's avatar
      Merge tag 'pm-4.18-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 26c92a38
      Linus Torvalds authored
      Pull power management updates from Rafael Wysocki:
       "These are mostly fixes, including some fixes for changes made during
        the recent merge window and some "stable" material, plus some minor
        extensions of the turbostat utility.
      
        Specifics:
      
         - Fix the PM core to avoid introducing a runtime PM usage counter
           imbalance when adding device links during driver probe (Rafael
           Wysocki).
      
         - Fix the operating performance points (OPP) framework to ensure that
           the regulator voltage is always updated as appropriate when
           updating clock rates (Waldemar Rymarkiewicz).
      
         - Fix the intel_pstate driver to use correct max/min limits for cores
           with differing maximum frequences (Srinivas Pandruvada).
      
         - Fix a typo in the intel_pstate driver documentation (Rafael
           Wysocki).
      
         - Fix two issues with the recently added Kryo cpufreq driver (Ilia
           Lin).
      
         - Fix two recent regressions and some other minor issues in the
           turbostat utility and extend it to provide some more diagnostic
           information (Len Brown, Nathan Ciobanu)"
      
      * tag 'pm-4.18-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        Documentation: intel_pstate: Fix typo
        tools/power turbostat: version 18.06.20
        tools/power turbostat: add the missing command line switches
        tools/power turbostat: add single character tokens to help
        tools/power turbostat: alphabetize the help output
        tools/power turbostat: fix segfault on 'no node' machines
        tools/power turbostat: add optional APIC X2APIC columns
        tools/power turbostat: decode cpuid.1.HT
        tools/power turbostat: fix show/hide issues resulting from mis-merge
        PM / OPP: Update voltage in case freq == old_freq
        cpufreq: intel_pstate: Fix scaling max/min limits with Turbo 3.0
        cpufreq: kryo: Add module remove and exit
        cpufreq: kryo: Fix possible error code dereference
        PM / core: Fix supplier device runtime PM usage counter imbalance
      26c92a38
    • Greg Thelen's avatar
      tracing: Fix SKIP_STACK_VALIDATION=1 build due to bad merge with -mrecord-mcount · ed7d40bc
      Greg Thelen authored
      Non gcc-5 builds with CONFIG_STACK_VALIDATION=y and
      SKIP_STACK_VALIDATION=1 fail.
      Example output:
        /bin/sh: init/.tmp_main.o: Permission denied
      
      commit 96f60dfa ("trace: Use -mcount-record for dynamic ftrace"),
      added a mismatched endif.  This causes cmd_objtool to get mistakenly
      set.
      
      Relocate endif to balance the newly added -record-mcount check.
      
      Link: http://lkml.kernel.org/r/20180608214746.136554-1-gthelen@google.com
      
      Fixes: 96f60dfa ("trace: Use -mcount-record for dynamic ftrace")
      Acked-by: default avatarAndi Kleen <ak@linux.intel.com>
      Tested-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarGreg Thelen <gthelen@google.com>
      Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      ed7d40bc
    • Joel Fernandes (Google)'s avatar
      tracing: Fix some errors in histogram documentation · 064f35a9
      Joel Fernandes (Google) authored
      Fix typos, inconsistencies in using quotes, incorrect section number,
      etc. in the trace histogram documentation.
      
      Link: http://lkml.kernel.org/r/20180614224859.55864-1-joel@joelfernandes.orgReviewed-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      Acked-by: default avatarTom Zanussi <tom.zanussi@linux.intel.com>
      Signed-off-by: default avatarJoel Fernandes (Google) <joel@joelfernandes.org>
      Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      064f35a9
    • Gustavo A. R. Silva's avatar
      tracing: Use swap macro in update_max_tr · 08ae88f8
      Gustavo A. R. Silva authored
      Make use of the swap macro and remove unnecessary variable _buf_.
      This makes the code easier to read and maintain. Also, reduces the
      stack usage.
      
      This code was detected with the help of Coccinelle.
      
      Link: http://lkml.kernel.org/r/20180209175316.GA18720@embeddedgusSigned-off-by: default avatarGustavo A. R. Silva <gustavo@embeddedor.com>
      Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      08ae88f8
    • Joel Fernandes (Google)'s avatar
      softirq: Reorder trace_softirqs_on to prevent lockdep splat · 1a63dcd8
      Joel Fernandes (Google) authored
      I'm able to reproduce a lockdep splat with config options:
      CONFIG_PROVE_LOCKING=y,
      CONFIG_DEBUG_LOCK_ALLOC=y and
      CONFIG_PREEMPTIRQ_EVENTS=y
      
      $ echo 1 > /d/tracing/events/preemptirq/preempt_enable/enable
      
      [   26.112609] DEBUG_LOCKS_WARN_ON(current->softirqs_enabled)
      [   26.112636] WARNING: CPU: 0 PID: 118 at kernel/locking/lockdep.c:3854
      [...]
      [   26.144229] Call Trace:
      [   26.144926]  <IRQ>
      [   26.145506]  lock_acquire+0x55/0x1b0
      [   26.146499]  ? __do_softirq+0x46f/0x4d9
      [   26.147571]  ? __do_softirq+0x46f/0x4d9
      [   26.148646]  trace_preempt_on+0x8f/0x240
      [   26.149744]  ? trace_preempt_on+0x4d/0x240
      [   26.150862]  ? __do_softirq+0x46f/0x4d9
      [   26.151930]  preempt_count_sub+0x18a/0x1a0
      [   26.152985]  __do_softirq+0x46f/0x4d9
      [   26.153937]  irq_exit+0x68/0xe0
      [   26.154755]  smp_apic_timer_interrupt+0x271/0x280
      [   26.156056]  apic_timer_interrupt+0xf/0x20
      [   26.157105]  </IRQ>
      
      The issue was this:
      
      preempt_count = 1 << SOFTIRQ_SHIFT
      
      	__local_bh_enable(cnt = 1 << SOFTIRQ_SHIFT) {
      		if (softirq_count() == (cnt && SOFTIRQ_MASK)) {
      			trace_softirqs_on() {
      				current->softirqs_enabled = 1;
      			}
      		}
      		preempt_count_sub(cnt) {
      			trace_preempt_on() {
      				tracepoint() {
      					rcu_read_lock_sched() {
      						// jumps into lockdep
      
      Where preempt_count still has softirqs disabled, but
      current->softirqs_enabled is true, and we get a splat.
      
      Link: http://lkml.kernel.org/r/20180607201143.247775-1-joel@joelfernandes.org
      
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Tom Zanussi <tom.zanussi@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Thomas Glexiner <tglx@linutronix.de>
      Cc: Boqun Feng <boqun.feng@gmail.com>
      Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Todd Kjos <tkjos@google.com>
      Cc: Erick Reyes <erickreyes@google.com>
      Cc: Julia Cartwright <julia@ni.com>
      Cc: Byungchul Park <byungchul.park@lge.com>
      Cc: stable@vger.kernel.org
      Reviewed-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      Fixes: d5915816 ("tracing: Add support for preempt and irq enable/disable events")
      Signed-off-by: default avatarJoel Fernandes (Google) <joel@joelfernandes.org>
      Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      1a63dcd8
    • Steven Rostedt (VMware)'s avatar
      tracing: Check for no filter when processing event filters · 70303420
      Steven Rostedt (VMware) authored
      The syzkaller detected a out-of-bounds issue with the events filter code,
      specifically here:
      
      	prog[N].pred = NULL;					/* #13 */
      	prog[N].target = 1;		/* TRUE */
      	prog[N+1].pred = NULL;
      	prog[N+1].target = 0;		/* FALSE */
      ->	prog[N-1].target = N;
      	prog[N-1].when_to_branch = false;
      
      As that's the first reference to a "N-1" index, it appears that the code got
      here with N = 0, which means the filter parser found no filter to parse
      (which shouldn't ever happen, but apparently it did).
      
      Add a new error to the parsing code that will check to make sure that N is
      not zero before going into this part of the code. If N = 0, then -EINVAL is
      returned, and a error message is added to the filter.
      
      Cc: stable@vger.kernel.org
      Fixes: 80765597 ("tracing: Rewrite filter logic to be simpler and faster")
      Reported-by: default avatarair icy <icytxw@gmail.com>
      bugzilla url: https://bugzilla.kernel.org/show_bug.cgi?id=200019Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      70303420
    • Marc Zyngier's avatar
      KVM: arm64: Prevent KVM_COMPAT from being selected · 37b65db8
      Marc Zyngier authored
      There is very little point in trying to support the 32bit KVM/arm API
      on arm64, and this was never an anticipated use case.
      
      Let's make it clear by not selecting KVM_COMPAT.
      Acked-by: default avatarMark Rutland <mark.rutland@arm.com>
      Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      37b65db8
    • Marc Zyngier's avatar
      KVM: Enforce error in ioctl for compat tasks when !KVM_COMPAT · 7ddfd3e0
      Marc Zyngier authored
      The current behaviour of the compat ioctls is a bit odd.
      We provide a compat_ioctl method when KVM_COMPAT is set, and NULL
      otherwise. But NULL means that the normal, non-compat ioctl should
      be used directly for compat tasks, and there is no way to actually
      prevent a compat task from issueing KVM ioctls.
      
      This patch changes this behaviour, by always registering a compat_ioctl
      method, even if KVM_COMPAT is not selected. In that case, the callback
      will always return -EINVAL.
      
      Fixes: de8e5d74 ("KVM: Disable compat ioctl for s390")
      Reported-by: default avatarMark Rutland <mark.rutland@arm.com>
      Acked-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
      Acked-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
      Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      7ddfd3e0
    • Rafael J. Wysocki's avatar
      Merge branches 'acpi-soc' and 'acpi-processor' · e50f182c
      Rafael J. Wysocki authored
      These are a stable-candidate suspend/resume fix of the ACPI driver for
      Intel SoCs (LPSS) and an inline stub fix for the ACPI processor driver.
      
      * acpi-soc:
        ACPI / LPSS: Avoid PM quirks on suspend and resume from S3
      
      * acpi-processor:
        ACPI / processor: Finish making acpi_processor_ppc_has_changed() void
      e50f182c
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-tools' · b51e0013
      Rafael J. Wysocki authored
      These are turbostat utility updates for 4.18-rc2 including two fixes
      for recent regressions and some minor extensions.
      
      * pm-tools:
        tools/power turbostat: version 18.06.20
        tools/power turbostat: add the missing command line switches
        tools/power turbostat: add single character tokens to help
        tools/power turbostat: alphabetize the help output
        tools/power turbostat: fix segfault on 'no node' machines
        tools/power turbostat: add optional APIC X2APIC columns
        tools/power turbostat: decode cpuid.1.HT
        tools/power turbostat: fix show/hide issues resulting from mis-merge
      b51e0013
    • Rafael J. Wysocki's avatar
      Merge branches 'pm-core' and 'pm-opp' · 7553a72b
      Rafael J. Wysocki authored
      These are a PM core fix and an OPP framework fix for 4.18-rc2,
      both "stable" material.
      
      * pm-core:
        PM / core: Fix supplier device runtime PM usage counter imbalance
      
      * pm-opp:
        PM / OPP: Update voltage in case freq == old_freq
      7553a72b
    • Jia He's avatar
      KVM: arm/arm64: add WARN_ON if size is not PAGE_SIZE aligned in unmap_stage2_range · 47a91b72
      Jia He authored
      There is a panic in armv8a server(QDF2400) under memory pressure tests
      (start 20 guests and run memhog in the host).
      
      ---------------------------------begin--------------------------------
      [35380.800950] BUG: Bad page state in process qemu-kvm  pfn:dd0b6
      [35380.805825] page:ffff7fe003742d80 count:-4871 mapcount:-2126053375
      mapping:          (null) index:0x0
      [35380.815024] flags: 0x1fffc00000000000()
      [35380.818845] raw: 1fffc00000000000 0000000000000000 0000000000000000
      ffffecf981470000
      [35380.826569] raw: dead000000000100 dead000000000200 ffff8017c001c000
      0000000000000000
      [35380.805825] page:ffff7fe003742d80 count:-4871 mapcount:-2126053375
      mapping:          (null) index:0x0
      [35380.815024] flags: 0x1fffc00000000000()
      [35380.818845] raw: 1fffc00000000000 0000000000000000 0000000000000000
      ffffecf981470000
      [35380.826569] raw: dead000000000100 dead000000000200 ffff8017c001c000
      0000000000000000
      [35380.834294] page dumped because: nonzero _refcount
      [...]
      --------------------------------end--------------------------------------
      
      The root cause might be what was fixed at [1]. But from the KVM points of
      view, it would be better if the issue was caught earlier.
      
      If the size is not PAGE_SIZE aligned, unmap_stage2_range might unmap the
      wrong(more or less) page range. Hence it caused the "BUG: Bad page
      state"
      
      Let's WARN in that case, so that the issue is obvious.
      
      [1] https://lkml.org/lkml/2018/5/3/1042Reviewed-by: default avatarSuzuki K Poulose <suzuki.poulose@arm.com>
      Signed-off-by: jia.he@hxt-semitech.com
      [maz: tidied up commit message]
      Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      47a91b72
    • Maciej Purski's avatar
      drm/bridge/sii8620: fix display of packed pixel modes in MHL2 · e8b92efa
      Maciej Purski authored
      Currently packed pixel modes in MHL2 can't be displayed. The device
      automatically recognizes output format, so setting format other than
      RGB causes failure. Fix it by writing proper values to registers.
      
      Tested on MHL1 and MHL2 using various vendors' dongles both in
      DVI and HDMI mode.
      Signed-off-by: default avatarMaciej Purski <m.purski@samsung.com>
      Signed-off-by: default avatarAndrzej Hajda <a.hajda@samsung.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1516706239-9104-1-git-send-email-m.purski@samsung.com
      e8b92efa
    • Dave Martin's avatar
      KVM: arm64: Avoid mistaken attempts to save SVE state for vcpus · 2955bcc8
      Dave Martin authored
      Commit e6b673b7 ("KVM: arm64: Optimise FPSIMD handling to reduce
      guest/host thrashing") uses fpsimd_save() to save the FPSIMD state
      for a vcpu when scheduling the vcpu out.  However, currently
      current's value of TIF_SVE is restored before calling fpsimd_save()
      which means that fpsimd_save() may erroneously attempt to save SVE
      state from the vcpu.  This enables current's vector state to be
      polluted with guest data.  current->thread.sve_state may be
      unallocated or not large enough, so this can also trigger a NULL
      dereference or buffer overrun.
      
      Instead of this, TIF_SVE should be configured properly for the
      guest when calling fpsimd_save() with the vcpu context loaded.
      
      This patch ensures this by delaying restoration of current's
      TIF_SVE until after the call to fpsimd_save().
      
      Fixes: e6b673b7 ("KVM: arm64: Optimise FPSIMD handling to reduce guest/host thrashing")
      Signed-off-by: default avatarDave Martin <Dave.Martin@arm.com>
      Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      2955bcc8
    • Dave Martin's avatar
      KVM: arm64/sve: Fix SVE trap restoration for non-current tasks · b3eb56b6
      Dave Martin authored
      Commit e6b673b7 ("KVM: arm64: Optimise FPSIMD handling to reduce
      guest/host thrashing") attempts to restore the configuration of
      userspace SVE trapping via a call to fpsimd_bind_task_to_cpu(), but
      the logic for determining when to do this is not correct.
      
      The patch makes the errnoenous assumption that the only task that
      may try to enter userspace with the currently loaded FPSIMD/SVE
      register content is current.  This may not be the case however:  if
      some other user task T is scheduled on the CPU during the execution
      of the KVM run loop, and the vcpu does not try to use the registers
      in the meantime, then T's state may be left there intact.  If T
      happens to be the next task to enter userspace on this CPU then the
      hooks for reloading the register state and configuring traps will
      be skipped.
      
      (Also, current never has SVE state at this point anyway and should
      always have the trap enabled, as a side-effect of the ioctl()
      syscall needed to reach the KVM run loop in the first place.)
      
      This patch instead restores the state of the EL0 trap from the
      state observed at the most recent vcpu_load(), ensuring that the
      trap is set correctly for the loaded context (if any).
      
      Fixes: e6b673b7 ("KVM: arm64: Optimise FPSIMD handling to reduce guest/host thrashing")
      Signed-off-by: default avatarDave Martin <Dave.Martin@arm.com>
      Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      b3eb56b6
    • Dave Martin's avatar
      KVM: arm64: Don't mask softirq with IRQs disabled in vcpu_put() · b045e4d0
      Dave Martin authored
      Commit e6b673b7 ("KVM: arm64: Optimise FPSIMD handling to reduce
      guest/host thrashing") introduces a specific helper
      kvm_arch_vcpu_put_fp() for saving the vcpu FPSIMD state during
      vcpu_put().
      
      This function uses local_bh_disable()/_enable() to protect the
      FPSIMD context manipulation from interruption by softirqs.
      
      This approach is not correct, because vcpu_put() can be invoked
      either from the KVM host vcpu thread (when exiting the vcpu run
      loop), or via a preempt notifier.  In the former case, only
      preemption is disabled.  In the latter case, the function is called
      from inside __schedule(), which means that IRQs are disabled.
      
      Use of local_bh_disable()/_enable() with IRQs disabled is considerd
      an error, resulting in lockdep splats while running VMs if lockdep
      is enabled.
      
      This patch disables IRQs instead of attempting to disable softirqs,
      avoiding the problem of calling local_bh_enable() with IRQs
      disabled in the __schedule() path.  This creates an additional
      interrupt blackout during vcpu run loop exit, but this is the rare
      case and the blackout latency is still less than that of
      __schedule().
      
      Fixes: e6b673b7 ("KVM: arm64: Optimise FPSIMD handling to reduce guest/host thrashing")
      Reported-by: default avatarAndre Przywara <andre.przywara@arm.com>
      Signed-off-by: default avatarDave Martin <Dave.Martin@arm.com>
      Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      b045e4d0
    • Mark Rutland's avatar
      arm64: Introduce sysreg_clear_set() · 6ebdf4db
      Mark Rutland authored
      Currently we have a couple of helpers to manipulate bits in particular
      sysregs:
      
       * config_sctlr_el1(u32 clear, u32 set)
      
       * change_cpacr(u64 val, u64 mask)
      
      The parameters of these differ in naming convention, order, and size,
      which is unfortunate. They also differ slightly in behaviour, as
      change_cpacr() skips the sysreg write if the bits are unchanged, which
      is a useful optimization when sysreg writes are expensive.
      
      Before we gain yet another sysreg manipulation function, let's
      unify these with a common helper, providing a consistent order for
      clear/set operands, and the write skipping behaviour from
      change_cpacr(). Code will be migrated to the new helper in subsequent
      patches.
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Reviewed-by: default avatarDave Martin <dave.martin@arm.com>
      Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      6ebdf4db
    • Ard Biesheuvel's avatar
      KVM: arm/arm64: Drop resource size check for GICV window · ba56bc3a
      Ard Biesheuvel authored
      When booting a 64 KB pages kernel on a ACPI GICv3 system that
      implements support for v2 emulation, the following warning is
      produced
      
        GICV size 0x2000 not a multiple of page size 0x10000
      
      and support for v2 emulation is disabled, preventing GICv2 VMs
      from being able to run on such hosts.
      
      The reason is that vgic_v3_probe() performs a sanity check on the
      size of the window (it should be a multiple of the page size),
      while the ACPI MADT parsing code hardcodes the size of the window
      to 8 KB. This makes sense, considering that ACPI does not bother
      to describe the size in the first place, under the assumption that
      platforms implementing ACPI will follow the architecture and not
      put anything else in the same 64 KB window.
      
      So let's just drop the sanity check altogether, and assume that
      the window is at least 64 KB in size.
      
      Fixes: 90977732 ("KVM: arm/arm64: vgic-new: vgic_init: implement kvm_vgic_hyp_init")
      Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
      Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      ba56bc3a