1. 24 6月, 2018 1 次提交
    • L
      Merge tag 'trace-v4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 81f9c4e4
      Linus Torvalds 提交于
      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
  2. 23 6月, 2018 6 次提交
    • L
      Merge tag 'powerpc-4.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 5e220483
      Linus Torvalds 提交于
      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
    • L
      Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · 7ab366e4
      Linus Torvalds 提交于
      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
    • L
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 8b88ed3c
      Linus Torvalds 提交于
      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
    • L
      Merge tag 'for-linus-4.18-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip · 4ab59fcf
      Linus Torvalds 提交于
      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
    • W
      arm64: mm: Ensure writes to swapper are ordered wrt subsequent cache maintenance · 71c8fc0c
      Will Deacon 提交于
      When rewriting swapper using nG mappings, we must performance cache
      maintenance around each page table access in order to avoid coherency
      problems with the host's cacheable alias under KVM. To ensure correct
      ordering of the maintenance with respect to Device memory accesses made
      with the Stage-1 MMU disabled, DMBs need to be added between the
      maintenance and the corresponding memory access.
      
      This patch adds a missing DMB between writing a new page table entry and
      performing a clean+invalidate on the same line.
      
      Fixes: f992b4df ("arm64: kpti: Add ->enable callback to remap swapper using nG mappings")
      Cc: <stable@vger.kernel.org> # 4.16.x-
      Acked-by: NMark Rutland <mark.rutland@arm.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      71c8fc0c
    • W
      arm64: kpti: Use early_param for kpti= command-line option · b5b7dd64
      Will Deacon 提交于
      We inspect __kpti_forced early on as part of the cpufeature enable
      callback which remaps the swapper page table using non-global entries.
      
      Ensure that __kpti_forced has been updated to reflect the kpti=
      command-line option before we start using it.
      
      Fixes: ea1e3de8 ("arm64: entry: Add fake CPU feature for unmapping the kernel at EL0")
      Cc: <stable@vger.kernel.org> # 4.16.x-
      Reported-by: NWei Xu <xuwei5@hisilicon.com>
      Tested-by: NSudeep Holla <sudeep.holla@arm.com>
      Tested-by: NWei Xu <xuwei5@hisilicon.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      b5b7dd64
  3. 22 6月, 2018 21 次提交
  4. 21 6月, 2018 12 次提交
    • R
      Merge branches 'acpi-soc' and 'acpi-processor' · e50f182c
      Rafael J. Wysocki 提交于
      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
    • R
      Merge branch 'pm-tools' · b51e0013
      Rafael J. Wysocki 提交于
      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
    • R
      Merge branches 'pm-core' and 'pm-opp' · 7553a72b
      Rafael J. Wysocki 提交于
      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
    • J
      KVM: arm/arm64: add WARN_ON if size is not PAGE_SIZE aligned in unmap_stage2_range · 47a91b72
      Jia He 提交于
      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: NSuzuki K Poulose <suzuki.poulose@arm.com>
      Signed-off-by: jia.he@hxt-semitech.com
      [maz: tidied up commit message]
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      47a91b72
    • M
      drm/bridge/sii8620: fix display of packed pixel modes in MHL2 · e8b92efa
      Maciej Purski 提交于
      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: NMaciej Purski <m.purski@samsung.com>
      Signed-off-by: NAndrzej Hajda <a.hajda@samsung.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1516706239-9104-1-git-send-email-m.purski@samsung.com
      e8b92efa
    • D
      KVM: arm64: Avoid mistaken attempts to save SVE state for vcpus · 2955bcc8
      Dave Martin 提交于
      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: NDave Martin <Dave.Martin@arm.com>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      2955bcc8
    • D
      KVM: arm64/sve: Fix SVE trap restoration for non-current tasks · b3eb56b6
      Dave Martin 提交于
      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: NDave Martin <Dave.Martin@arm.com>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      b3eb56b6
    • D
      KVM: arm64: Don't mask softirq with IRQs disabled in vcpu_put() · b045e4d0
      Dave Martin 提交于
      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: NAndre Przywara <andre.przywara@arm.com>
      Signed-off-by: NDave Martin <Dave.Martin@arm.com>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      b045e4d0
    • M
      arm64: Introduce sysreg_clear_set() · 6ebdf4db
      Mark Rutland 提交于
      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: NMark Rutland <mark.rutland@arm.com>
      Reviewed-by: NDave Martin <dave.martin@arm.com>
      Acked-by: NCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      6ebdf4db
    • A
      KVM: arm/arm64: Drop resource size check for GICV window · ba56bc3a
      Ard Biesheuvel 提交于
      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: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      ba56bc3a
    • D
    • R
      Merge branch 'turbostat' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux · 3af20c95
      Rafael J. Wysocki 提交于
      Pull turbostat utility changes for 4.18-rc2 from Len Brown.
      
      "This includes two regression fixes, plus a couple more random, but
       worthy, patches."
      
      * 'turbostat' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux:
        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
      3af20c95