Skip to content
  1. Jul 09, 2019
    • Josh Poimboeuf's avatar
      x86/speculation: Prepare entry code for Spectre v1 swapgs mitigations · 18ec54fd
      Josh Poimboeuf authored
      
      
      
      Spectre v1 isn't only about array bounds checks.  It can affect any
      conditional checks.  The kernel entry code interrupt, exception, and NMI
      handlers all have conditional swapgs checks.  Those may be problematic in
      the context of Spectre v1, as kernel code can speculatively run with a user
      GS.
      
      For example:
      
      	if (coming from user space)
      		swapgs
      	mov %gs:<percpu_offset>, %reg
      	mov (%reg), %reg1
      
      When coming from user space, the CPU can speculatively skip the swapgs, and
      then do a speculative percpu load using the user GS value.  So the user can
      speculatively force a read of any kernel value.  If a gadget exists which
      uses the percpu value as an address in another load/store, then the
      contents of the kernel value may become visible via an L1 side channel
      attack.
      
      A similar attack exists when coming from kernel space.  The CPU can
      speculatively do the swapgs, causing the user GS to get used for the rest
      of the speculative window.
      
      The mitigation is similar to a traditional Spectre v1 mitigation, except:
      
        a) index masking isn't possible; because the index (percpu offset)
           isn't user-controlled; and
      
        b) an lfence is needed in both the "from user" swapgs path and the
           "from kernel" non-swapgs path (because of the two attacks described
           above).
      
      The user entry swapgs paths already have SWITCH_TO_KERNEL_CR3, which has a
      CR3 write when PTI is enabled.  Since CR3 writes are serializing, the
      lfences can be skipped in those cases.
      
      On the other hand, the kernel entry swapgs paths don't depend on PTI.
      
      To avoid unnecessary lfences for the user entry case, create two separate
      features for alternative patching:
      
        X86_FEATURE_FENCE_SWAPGS_USER
        X86_FEATURE_FENCE_SWAPGS_KERNEL
      
      Use these features in entry code to patch in lfences where needed.
      
      The features aren't enabled yet, so there's no functional change.
      
      Signed-off-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Reviewed-by: default avatarDave Hansen <dave.hansen@intel.com>
      18ec54fd
    • Linus Torvalds's avatar
      Merge branch 'x86-topology-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 222a21d2
      Linus Torvalds authored
      Pull x86 topology updates from Ingo Molnar:
       "Implement multi-die topology support on Intel CPUs and expose the die
        topology to user-space tooling, by Len Brown, Kan Liang and Zhang Rui.
      
        These changes should have no effect on the kernel's existing
        understanding of topologies, i.e. there should be no behavioral impact
        on cache, NUMA, scheduler, perf and other topologies and overall
        system performance"
      
      * 'x86-topology-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/x86/intel/rapl: Cosmetic rename internal variables in response to multi-die/pkg support
        perf/x86/intel/uncore: Cosmetic renames in response to multi-die/pkg support
        hwmon/coretemp: Cosmetic: Rename internal variables to zones from packages
        thermal/x86_pkg_temp_thermal: Cosmetic: Rename internal variables to zones from packages
        perf/x86/intel/cstate: Support multi-die/package
        perf/x86/intel/rapl: Support multi-die/package
        perf/x86/intel/uncore: Support multi-die/package
        topology: Create core_cpus and die_cpus sysfs attributes
        topology: Create package_cpus sysfs attribute
        hwmon/coretemp: Support multi-die/package
        powercap/intel_rapl: Update RAPL domain name and debug messages
        thermal/x86_pkg_temp_thermal: Support multi-die/package
        powercap/intel_rapl: Support multi-die/package
        powercap/intel_rapl: Simplify rapl_find_package()
        x86/topology: Define topology_logical_die_id()
        x86/topology: Define topology_die_id()
        cpu/topology: Export die_id
        x86/topology: Create topology_max_die_per_package()
        x86/topology: Add CPUID.1F multi-die/package support
      222a21d2
    • Linus Torvalds's avatar
      Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 8faef712
      Linus Torvalds authored
      Pull x86 platform updayes from Ingo Molnar:
       "Most of the commits add ACRN hypervisor guest support, plus two
        cleanups"
      
      * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/jailhouse: Mark jailhouse_x2apic_available() as __init
        x86/platform/geode: Drop <linux/gpio.h> includes
        x86/acrn: Use HYPERVISOR_CALLBACK_VECTOR for ACRN guest upcall vector
        x86: Add support for Linux guests on an ACRN hypervisor
        x86/Kconfig: Add new X86_HV_CALLBACK_VECTOR config symbol
      8faef712
    • Linus Torvalds's avatar
      Merge branch 'x86-paravirt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · da177023
      Linus Torvalds authored
      Pull x86 paravirt updates from Ingo Molnar:
       "A handful of paravirt patching code enhancements to make it more
        robust against patching failures, and related cleanups and not so
        related cleanups - by Thomas Gleixner and myself"
      
      * 'x86-paravirt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/paravirt: Rename paravirt_patch_site::instrtype to paravirt_patch_site::type
        x86/paravirt: Standardize 'insn_buff' variable names
        x86/paravirt: Match paravirt patchlet field definition ordering to initialization ordering
        x86/paravirt: Replace the paravirt patch asm magic
        x86/paravirt: Unify the 32/64 bit paravirt patching code
        x86/paravirt: Detect over-sized patching bugs in paravirt_patch_call()
        x86/paravirt: Detect over-sized patching bugs in paravirt_patch_insns()
        x86/paravirt: Remove bogus extern declarations
      da177023
    • Linus Torvalds's avatar
      Merge branch 'x86-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 3431a940
      Linus Torvalds authored
      Pull x86 AVX512 status update from Ingo Molnar:
       "This adds a new ABI that the main scheduler probably doesn't want to
        deal with but HPC job schedulers might want to use: the
        AVX512_elapsed_ms field in the new /proc/<pid>/arch_status task status
        file, which allows the user-space job scheduler to cluster such tasks,
        to avoid turbo frequency drops"
      
      * 'x86-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        Documentation/filesystems/proc.txt: Add arch_status file
        x86/process: Add AVX-512 usage elapsed time to /proc/pid/arch_status
        proc: Add /proc/<pid>/arch_status
      3431a940
    • Linus Torvalds's avatar
      Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5b7a2095
      Linus Torvalds authored
      Pull x86 cleanups from Ingo Molnar:
       "Misc small cleanups: removal of superfluous code and coding style
        cleanups mostly"
      
      * 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/kexec: Make variable static and config dependent
        x86/defconfigs: Remove useless UEVENT_HELPER_PATH
        x86/amd_nb: Make hygon_nb_misc_ids static
        x86/tsc: Move inline keyword to the beginning of function declarations
        x86/io_delay: Define IO_DELAY macros in C instead of Kconfig
        x86/io_delay: Break instead of fallthrough in switch statement
      5b7a2095
    • Linus Torvalds's avatar
      Merge branch 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6cfcdad7
      Linus Torvalds authored
      Pull x86 cache resource control update from Ingo Molnar:
       "Two cleanup patches"
      
      * 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/resctrl: Cleanup cbm_ensure_valid()
        x86/resctrl: Use _ASM_BX to avoid ifdeffery
      6cfcdad7
    • Linus Torvalds's avatar
      Merge branch 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · c83b5d32
      Linus Torvalds authored
      Pull x86 build updates from Ingo Molnar:
       "Two kbuild enhancements by Masahiro Yamada"
      
      * 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/build: Remove redundant 'clean-files += capflags.c'
        x86/build: Add 'set -e' to mkcapflags.sh to delete broken capflags.c
      c83b5d32
    • Linus Torvalds's avatar
      Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · a1aab6f3
      Linus Torvalds authored
      Pull x86 asm updates from Ingo Molnar:
       "Most of the changes relate to Peter Zijlstra's cleanup of ptregs
        handling, in particular the i386 part is now much simplified and
        standardized - no more partial ptregs stack frames via the esp/ss
        oddity. This simplifies ftrace, kprobes, the unwinder, ptrace, kdump
        and kgdb.
      
        There's also a CR4 hardening enhancements by Kees Cook, to make the
        generic platform functions such as native_write_cr4() less useful as
        ROP gadgets that disable SMEP/SMAP. Also protect the WP bit of CR0
        against similar attacks.
      
        The rest is smaller cleanups/fixes"
      
      * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/alternatives: Add int3_emulate_call() selftest
        x86/stackframe/32: Allow int3_emulate_push()
        x86/stackframe/32: Provide consistent pt_regs
        x86/stackframe, x86/ftrace: Add pt_regs frame annotations
        x86/stackframe, x86/kprobes: Fix frame pointer annotations
        x86/stackframe: Move ENCODE_FRAME_POINTER to asm/frame.h
        x86/entry/32: Clean up return from interrupt preemption path
        x86/asm: Pin sensitive CR0 bits
        x86/asm: Pin sensitive CR4 bits
        Documentation/x86: Fix path to entry_32.S
        x86/asm: Remove unused TASK_TI_flags from asm-offsets.c
      a1aab6f3
    • Linus Torvalds's avatar
      Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · dad1c12e
      Linus Torvalds authored
      Pull scheduler updates from Ingo Molnar:
      
       - Remove the unused per rq load array and all its infrastructure, by
         Dietmar Eggemann.
      
       - Add utilization clamping support by Patrick Bellasi. This is a
         refinement of the energy aware scheduling framework with support for
         boosting of interactive and capping of background workloads: to make
         sure critical GUI threads get maximum frequency ASAP, and to make
         sure background processing doesn't unnecessarily move to cpufreq
         governor to higher frequencies and less energy efficient CPU modes.
      
       - Add the bare minimum of tracepoints required for LISA EAS regression
         testing, by Qais Yousef - which allows automated testing of various
         power management features, including energy aware scheduling.
      
       - Restructure the former tsk_nr_cpus_allowed() facility that the -rt
         kernel used to modify the scheduler's CPU affinity logic such as
         migrate_disable() - introduce the task->cpus_ptr value instead of
         taking the address of &task->cpus_allowed directly - by Sebastian
         Andrzej Siewior.
      
       - Misc optimizations, fixes, cleanups and small enhancements - see the
         Git log for details.
      
      * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (33 commits)
        sched/uclamp: Add uclamp support to energy_compute()
        sched/uclamp: Add uclamp_util_with()
        sched/cpufreq, sched/uclamp: Add clamps for FAIR and RT tasks
        sched/uclamp: Set default clamps for RT tasks
        sched/uclamp: Reset uclamp values on RESET_ON_FORK
        sched/uclamp: Extend sched_setattr() to support utilization clamping
        sched/core: Allow sched_setattr() to use the current policy
        sched/uclamp: Add system default clamps
        sched/uclamp: Enforce last task's UCLAMP_MAX
        sched/uclamp: Add bucket local max tracking
        sched/uclamp: Add CPU's clamp buckets refcounting
        sched/fair: Rename weighted_cpuload() to cpu_runnable_load()
        sched/debug: Export the newly added tracepoints
        sched/debug: Add sched_overutilized tracepoint
        sched/debug: Add new tracepoint to track PELT at se level
        sched/debug: Add new tracepoints to track PELT at rq level
        sched/debug: Add a new sched_trace_*() helper functions
        sched/autogroup: Make autogroup_path() always available
        sched/wait: Deduplicate code with do-while
        sched/topology: Remove unused 'sd' parameter from arch_scale_cpu_capacity()
        ...
      dad1c12e
    • Linus Torvalds's avatar
      Merge branch 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 090bc5a2
      Linus Torvalds authored
      Pull RAS updates from Ingo Molnar:
       "Boris is on vacation so I'm sending the RAS bits this time. The main
        changes were:
      
         - Various RAS/CEC improvements and fixes by Borislav Petkov:
             - error insertion fixes
             - offlining latency fix
             - memory leak fix
             - additional sanity checks
             - cleanups
             - debug output improvements
      
         - More SMCA enhancements by Yazen Ghannam:
             - make banks truly per-CPU which they are in the hardware
             - don't over-cache certain registers
             - make the number of MCA banks per-CPU variable
      
           The long term goal with these changes is to support future
           heterogenous SMCA extensions.
      
         - Misc fixes and improvements"
      
      * 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mce: Do not check return value of debugfs_create functions
        x86/MCE: Determine MCA banks' init state properly
        x86/MCE: Make the number of MCA banks a per-CPU variable
        x86/MCE/AMD: Don't cache block addresses on SMCA systems
        x86/MCE: Make mce_banks a per-CPU array
        x86/MCE: Make struct mce_banks[] static
        RAS/CEC: Add copyright
        RAS/CEC: Add CONFIG_RAS_CEC_DEBUG and move CEC debug features there
        RAS/CEC: Dump the different array element sections
        RAS/CEC: Rename count_threshold to action_threshold
        RAS/CEC: Sanity-check array on every insertion
        RAS/CEC: Fix potential memory leak
        RAS/CEC: Do not set decay value on error
        RAS/CEC: Check count_threshold unconditionally
        RAS/CEC: Fix pfn insertion
      090bc5a2
    • Linus Torvalds's avatar
      Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e1928328
      Linus Torvalds authored
      Pull locking updates from Ingo Molnar:
       "The main changes in this cycle are:
      
         - rwsem scalability improvements, phase #2, by Waiman Long, which are
           rather impressive:
      
             "On a 2-socket 40-core 80-thread Skylake system with 40 reader
              and writer locking threads, the min/mean/max locking operations
              done in a 5-second testing window before the patchset were:
      
               40 readers, Iterations Min/Mean/Max = 1,807/1,808/1,810
               40 writers, Iterations Min/Mean/Max = 1,807/50,344/151,255
      
              After the patchset, they became:
      
               40 readers, Iterations Min/Mean/Max = 30,057/31,359/32,741
               40 writers, Iterations Min/Mean/Max = 94,466/95,845/97,098"
      
           There's a lot of changes to the locking implementation that makes
           it similar to qrwlock, including owner handoff for more fair
           locking.
      
           Another microbenchmark shows how across the spectrum the
           improvements are:
      
             "With a locking microbenchmark running on 5.1 based kernel, the
              total locking rates (in kops/s) on a 2-socket Skylake system
              with equal numbers of readers and writers (mixed) before and
              after this patchset were:
      
              # of Threads   Before Patch      After Patch
              ------------   ------------      -----------
                   2            2,618             4,193
                   4            1,202             3,726
                   8              802             3,622
                  16              729             3,359
                  32              319             2,826
                  64              102             2,744"
      
           The changes are extensive and the patch-set has been through
           several iterations addressing various locking workloads. There
           might be more regressions, but unless they are pathological I
           believe we want to use this new implementation as the baseline
           going forward.
      
         - jump-label optimizations by Daniel Bristot de Oliveira: the primary
           motivation was to remove IPI disturbance of isolated RT-workload
           CPUs, which resulted in the implementation of batched jump-label
           updates. Beyond the improvement of the real-time characteristics
           kernel, in one test this patchset improved static key update
           overhead from 57 msecs to just 1.4 msecs - which is a nice speedup
           as well.
      
         - atomic64_t cross-arch type cleanups by Mark Rutland: over the last
           ~10 years of atomic64_t existence the various types used by the
           APIs only had to be self-consistent within each architecture -
           which means they became wildly inconsistent across architectures.
           Mark puts and end to this by reworking all the atomic64
           implementations to use 's64' as the base type for atomic64_t, and
           to ensure that this type is consistently used for parameters and
           return values in the API, avoiding further problems in this area.
      
         - A large set of small improvements to lockdep by Yuyang Du: type
           cleanups, output cleanups, function return type and othr cleanups
           all around the place.
      
         - A set of percpu ops cleanups and fixes by Peter Zijlstra.
      
         - Misc other changes - please see the Git log for more details"
      
      * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (82 commits)
        locking/lockdep: increase size of counters for lockdep statistics
        locking/atomics: Use sed(1) instead of non-standard head(1) option
        locking/lockdep: Move mark_lock() inside CONFIG_TRACE_IRQFLAGS && CONFIG_PROVE_LOCKING
        x86/jump_label: Make tp_vec_nr static
        x86/percpu: Optimize raw_cpu_xchg()
        x86/percpu, sched/fair: Avoid local_clock()
        x86/percpu, x86/irq: Relax {set,get}_irq_regs()
        x86/percpu: Relax smp_processor_id()
        x86/percpu: Differentiate this_cpu_{}() and __this_cpu_{}()
        locking/rwsem: Guard against making count negative
        locking/rwsem: Adaptive disabling of reader optimistic spinning
        locking/rwsem: Enable time-based spinning on reader-owned rwsem
        locking/rwsem: Make rwsem->owner an atomic_long_t
        locking/rwsem: Enable readers spinning on writer
        locking/rwsem: Clarify usage of owner's nonspinaable bit
        locking/rwsem: Wake up almost all readers in wait queue
        locking/rwsem: More optimal RT task handling of null owner
        locking/rwsem: Always release wait_lock before waking up tasks
        locking/rwsem: Implement lock handoff to prevent lock starvation
        locking/rwsem: Make rwsem_spin_on_owner() return owner state
        ...
      e1928328
    • Linus Torvalds's avatar
      Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 46f1ec23
      Linus Torvalds authored
      Pull RCU updates from Ingo Molnar:
       "The changes in this cycle are:
      
         - RCU flavor consolidation cleanups and optmizations
      
         - Documentation updates
      
         - Miscellaneous fixes
      
         - SRCU updates
      
         - RCU-sync flavor consolidation
      
         - Torture-test updates
      
         - Linux-kernel memory-consistency-model updates, most notably the
           addition of plain C-language accesses"
      
      * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (61 commits)
        tools/memory-model: Improve data-race detection
        tools/memory-model: Change definition of rcu-fence
        tools/memory-model: Expand definition of barrier
        tools/memory-model: Do not use "herd" to refer to "herd7"
        tools/memory-model: Fix comment in MP+poonceonces.litmus
        Documentation: atomic_t.txt: Explain ordering provided by smp_mb__{before,after}_atomic()
        rcu: Don't return a value from rcu_assign_pointer()
        rcu: Force inlining of rcu_read_lock()
        rcu: Fix irritating whitespace error in rcu_assign_pointer()
        rcu: Upgrade sync_exp_work_done() to smp_mb()
        rcutorture: Upper case solves the case of the vanishing NULL pointer
        torture: Suppress propagating trace_printk() warning
        rcutorture: Dump trace buffer for callback pipe drain failures
        torture: Add --trust-make to suppress "make clean"
        torture: Make --cpus override idleness calculations
        torture: Run kernel build in source directory
        torture: Add function graph-tracing cheat sheet
        torture: Capture qemu output
        rcutorture: Tweak kvm options
        rcutorture: Add trivial RCU implementation
        ...
      46f1ec23
    • Linus Torvalds's avatar
      Merge branch 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 223cea6a
      Linus Torvalds authored
      Pull x86 pti updates from Thomas Gleixner:
       "The speculative paranoia departement delivers a few more plugs for
        possible (probably theoretical) spectre/mds leaks"
      
      * 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/tls: Fix possible spectre-v1 in do_get_thread_area()
        x86/ptrace: Fix possible spectre-v1 in ptrace_get_debugreg()
        x86/speculation/mds: Eliminate leaks by trace_hardirqs_on()
      223cea6a
    • Linus Torvalds's avatar
      Merge branch 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2f0f6503
      Linus Torvalds authored
      Pull x86 timer updates from Thomas Gleixner:
       "A rather large series consolidating the HPET code, which was triggered
        by the attempt to bolt HPET NMI watchdog support on to the existing
        maze with the usual duct tape and super glue approach.
      
        This mainly removes two separate partially redundant storage layers
        and consolidates them into a single one which provides a consistent
        view of the different HPET channels and their usage and allows to
        integrate HPET NMI watchdog support (if it turns out to be feasible)
        in a non intrusive way"
      
      * 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (29 commits)
        x86/hpet: Use channel for legacy clockevent storage
        x86/hpet: Use common init for legacy clockevent
        x86/hpet: Carve out shareable parts of init_one_hpet_msi_clockevent()
        x86/hpet: Consolidate clockevent functions
        x86/hpet: Wrap legacy clockevent in hpet_channel
        x86/hpet: Use cached info instead of extra flags
        x86/hpet: Move clockevents into channels
        x86/hpet: Rename variables to prepare for switching to channels
        x86/hpet: Add function to select a /dev/hpet channel
        x86/hpet: Add mode information to struct hpet_channel
        x86/hpet: Use cached channel data
        x86/hpet: Introduce struct hpet_base and struct hpet_channel
        x86/hpet: Coding style cleanup
        x86/hpet: Clean up comments
        x86/hpet: Make naming consistent
        x86/hpet: Remove not required includes
        x86/hpet: Decapitalize and rename EVT_TO_HPET_DEV
        x86/hpet: Simplify counter validation
        x86/hpet: Separate counter check out of clocksource register code
        x86/hpet: Shuffle code around for readability sake
        ...
      2f0f6503
    • Linus Torvalds's avatar
      Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 13324c42
      Linus Torvalds authored
      Pull x86 CPU feature updates from Thomas Gleixner:
       "Updates for x86 CPU features:
      
         - Support for UMWAIT/UMONITOR, which allows to use MWAIT and MONITOR
           instructions in user space to save power e.g. in HPC workloads
           which spin wait on synchronization points.
      
           The maximum time a MWAIT can halt in userspace is controlled by the
           kernel and can be adjusted by the sysadmin.
      
         - Speed up the MTRR handling code on CPUs which support cache
           self-snooping correctly.
      
           On those CPUs the wbinvd() invocations can be omitted which speeds
           up the MTRR setup by a factor of 50.
      
         - Support for the new x86 vendor Zhaoxin who develops processors
           based on the VIA Centaur technology.
      
         - Prevent 'cat /proc/cpuinfo' from affecting isolated NOHZ_FULL CPUs
           by sending IPIs to retrieve the CPU frequency and use the cached
           values instead.
      
         - The addition and late revert of the FSGSBASE support. The revert
           was required as it turned out that the code still has hard to
           diagnose issues. Yet another engineering trainwreck...
      
         - Small fixes, cleanups, improvements and the usual new Intel CPU
           family/model addons"
      
      * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (41 commits)
        x86/fsgsbase: Revert FSGSBASE support
        selftests/x86/fsgsbase: Fix some test case bugs
        x86/entry/64: Fix and clean up paranoid_exit
        x86/entry/64: Don't compile ignore_sysret if 32-bit emulation is enabled
        selftests/x86: Test SYSCALL and SYSENTER manually with TF set
        x86/mtrr: Skip cache flushes on CPUs with cache self-snooping
        x86/cpu/intel: Clear cache self-snoop capability in CPUs with known errata
        Documentation/ABI: Document umwait control sysfs interfaces
        x86/umwait: Add sysfs interface to control umwait maximum time
        x86/umwait: Add sysfs interface to control umwait C0.2 state
        x86/umwait: Initialize umwait control values
        x86/cpufeatures: Enumerate user wait instructions
        x86/cpu: Disable frequency requests via aperfmperf IPI for nohz_full CPUs
        x86/acpi/cstate: Add Zhaoxin processors support for cache flush policy in C3
        ACPI, x86: Add Zhaoxin processors support for NONSTOP TSC
        x86/cpu: Create Zhaoxin processors architecture support file
        x86/cpu: Split Tremont based Atoms from the rest
        Documentation/x86/64: Add documentation for GS/FS addressing mode
        x86/elf: Enumerate kernel FSGSBASE capability in AT_HWCAP2
        x86/cpu: Enable FSGSBASE on 64bit by default and add a chicken bit
        ...
      13324c42
    • Linus Torvalds's avatar
      Merge branch 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · ab2486a9
      Linus Torvalds authored
      Pull x86 FPU updates from Thomas Gleixner:
       "A small set of updates for the FPU code:
      
         - Make the no387/nofxsr command line options useful by restricting
           them to 32bit and actually clearing all dependencies to prevent
           random crashes and malfunction.
      
         - Simplify and cleanup the kernel_fpu_*() helpers"
      
      * 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/fpu: Inline fpu__xstate_clear_all_cpu_caps()
        x86/fpu: Make 'no387' and 'nofxsr' command line options useful
        x86/fpu: Remove the fpu__save() export
        x86/fpu: Simplify kernel_fpu_begin()
        x86/fpu: Simplify kernel_fpu_end()
      ab2486a9
    • Linus Torvalds's avatar
      Merge branch 'x86-entry-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 0d37dde7
      Linus Torvalds authored
      Pull x86 vsyscall updates from Thomas Gleixner:
       "Further hardening of the legacy vsyscall by providing support for
        execute only mode and switching the default to it.
      
        This prevents a certain class of attacks which rely on the vsyscall
        page being accessible at a fixed address in the canonical kernel
        address space"
      
      * 'x86-entry-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        selftests/x86: Add a test for process_vm_readv() on the vsyscall page
        x86/vsyscall: Add __ro_after_init to global variables
        x86/vsyscall: Change the default vsyscall mode to xonly
        selftests/x86/vsyscall: Verify that vsyscall=none blocks execution
        x86/vsyscall: Document odd SIGSEGV error code for vsyscalls
        x86/vsyscall: Show something useful on a read fault
        x86/vsyscall: Add a new vsyscall=xonly mode
        Documentation/admin: Remove the vsyscall=native documentation
      0d37dde7
    • Linus Torvalds's avatar
      Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 0902d501
      Linus Torvalds authored
      Pull x96 apic updates from Thomas Gleixner:
       "Updates for the x86 APIC interrupt handling and APIC timer:
      
         - Fix a long standing issue with spurious interrupts which was caused
           by the big vector management rework a few years ago. Robert Hodaszi
           provided finally enough debug data and an excellent initial failure
           analysis which allowed to understand the underlying issues.
      
           This contains a change to the core interrupt management code which
           is required to handle this correctly for the APIC/IO_APIC. The core
           changes are NOOPs for most architectures except ARM64. ARM64 is not
           impacted by the change as confirmed by Marc Zyngier.
      
         - Newer systems allow to disable the PIT clock for power saving
           causing panic in the timer interrupt delivery check of the IO/APIC
           when the HPET timer is not enabled either. While the clock could be
           turned on this would cause an endless whack a mole game to chase
           the proper register in each affected chipset.
      
           These systems provide the relevant frequencies for TSC, CPU and the
           local APIC timer via CPUID and/or MSRs, which allows to avoid the
           PIT/HPET based calibration. As the calibration code is the only
           usage of the legacy timers on modern systems and is skipped anyway
           when the frequencies are known already, there is no point in
           setting up the PIT and actually checking for the interrupt delivery
           via IO/APIC.
      
           To achieve this on a wide variety of platforms, the CPUID/MSR based
           frequency readout has been made more robust, which also allowed to
           remove quite some workarounds which turned out to be not longer
           required. Thanks to Daniel Drake for analysis, patches and
           verification"
      
      * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/irq: Seperate unused system vectors from spurious entry again
        x86/irq: Handle spurious interrupt after shutdown gracefully
        x86/ioapic: Implement irq_get_irqchip_state() callback
        genirq: Add optional hardware synchronization for shutdown
        genirq: Fix misleading synchronize_irq() documentation
        genirq: Delay deactivation in free_irq()
        x86/timer: Skip PIT initialization on modern chipsets
        x86/apic: Use non-atomic operations when possible
        x86/apic: Make apic_bsp_setup() static
        x86/tsc: Set LAPIC timer period to crystal clock frequency
        x86/apic: Rename 'lapic_timer_frequency' to 'lapic_timer_period'
        x86/tsc: Use CPUID.0x16 to calculate missing crystal frequency
      0902d501
    • Linus Torvalds's avatar
      Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 927ba67a
      Linus Torvalds authored
      Pull timer updates from Thomas Gleixner:
       "The timer and timekeeping departement delivers:
      
        Core:
      
         - The consolidation of the VDSO code into a generic library including
           the conversion of x86 and ARM64. Conversion of ARM and MIPS are en
           route through the relevant maintainer trees and should end up in
           5.4.
      
           This gets rid of the unnecessary different copies of the same code
           and brings all architectures on the same level of VDSO
           functionality.
      
         - Make the NTP user space interface more robust by restricting the
           TAI offset to prevent undefined behaviour. Includes a selftest.
      
         - Validate user input in the compat settimeofday() syscall to catch
           invalid values which would be turned into valid values by a
           multiplication overflow
      
         - Consolidate the time accessors
      
         - Small fixes, improvements and cleanups all over the place
      
        Drivers:
      
         - Support for the NXP system counter, TI davinci timer
      
         - Move the Microsoft HyperV clocksource/events code into the
           drivers/clocksource directory so it can be shared between x86 and
           ARM64.
      
         - Overhaul of the Tegra driver
      
         - Delay timer support for IXP4xx
      
         - Small fixes, improvements and cleanups as usual"
      
      * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (71 commits)
        time: Validate user input in compat_settimeofday()
        timer: Document TIMER_PINNED
        clocksource/drivers: Continue making Hyper-V clocksource ISA agnostic
        clocksource/drivers: Make Hyper-V clocksource ISA agnostic
        MAINTAINERS: Fix Andy's surname and the directory entries of VDSO
        hrtimer: Use a bullet for the returns bullet list
        arm64: vdso: Fix compilation with clang older than 8
        arm64: compat: Fix __arch_get_hw_counter() implementation
        arm64: Fix __arch_get_hw_counter() implementation
        lib/vdso: Make delta calculation work correctly
        MAINTAINERS: Add entry for the generic VDSO library
        arm64: compat: No need for pre-ARMv7 barriers on an ARMv8 system
        arm64: vdso: Remove unnecessary asm-offsets.c definitions
        vdso: Remove superfluous #ifdef __KERNEL__ in vdso/datapage.h
        clocksource/drivers/davinci: Add support for clocksource
        clocksource/drivers/davinci: Add support for clockevents
        clocksource/drivers/tegra: Set up maximum-ticks limit properly
        clocksource/drivers/tegra: Cycles can't be 0
        clocksource/drivers/tegra: Restore base address before cleanup
        clocksource/drivers/tegra: Add verbose definition for 1MHz constant
        ...
      927ba67a
    • Linus Torvalds's avatar
      Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2a1ccd31
      Linus Torvalds authored
      Pull irq updates from Thomas Gleixner:
       "The irq departement provides the usual mixed bag:
      
        Core:
      
         - Further improvements to the irq timings code which aims to predict
           the next interrupt for power state selection to achieve better
           latency/power balance
      
         - Add interrupt statistics to the core NMI handlers
      
         - The usual small fixes and cleanups
      
        Drivers:
      
         - Support for Renesas RZ/A1, Annapurna Labs FIC, Meson-G12A SoC and
           Amazon Gravition AMR/GIC interrupt controllers.
      
         - Rework of the Renesas INTC controller driver
      
         - ACPI support for Socionext SoCs
      
         - Enhancements to the CSKY interrupt controller
      
         - The usual small fixes and cleanups"
      
      * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (39 commits)
        irq/irqdomain: Fix comment typo
        genirq: Update irq stats from NMI handlers
        irqchip/gic-pm: Remove PM_CLK dependency
        irqchip/al-fic: Introduce Amazon's Annapurna Labs Fabric Interrupt Controller Driver
        dt-bindings: interrupt-controller: Add Amazon's Annapurna Labs FIC
        softirq: Use __this_cpu_write() in takeover_tasklets()
        irqchip/mbigen: Stop printing kernel addresses
        irqchip/gic: Add dependency for ARM_GIC_MAX_NR
        genirq/affinity: Remove unused argument from [__]irq_build_affinity_masks()
        genirq/timings: Add selftest for next event computation
        genirq/timings: Add selftest for irqs circular buffer
        genirq/timings: Add selftest for circular array
        genirq/timings: Encapsulate storing function
        genirq/timings: Encapsulate timings push
        genirq/timings: Optimize the period detection speed
        genirq/timings: Fix timings buffer inspection
        genirq/timings: Fix next event index function
        irqchip/qcom: Use struct_size() in devm_kzalloc()
        irqchip/irq-csky-mpintc: Remove unnecessary loop in interrupt handler
        dt-bindings: interrupt-controller: Update csky mpintc
        ...
      2a1ccd31
    • Linus Torvalds's avatar
      Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e0e86b11
      Linus Torvalds authored
      Pull SMP/hotplug updates from Thomas Gleixner:
       "A small set of updates for SMP and CPU hotplug:
      
         - Abort disabling secondary CPUs in the freezer when a wakeup is
           pending instead of evaluating it only after all CPUs have been
           offlined.
      
         - Remove the shared annotation for the strict per CPU cfd_data in the
           smp function call core code.
      
         - Remove the return values of smp_call_function() and on_each_cpu()
           as they are unconditionally 0. Fixup the few callers which actually
           bothered to check the return value"
      
      * 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        smp: Remove smp_call_function() and on_each_cpu() return values
        smp: Do not mark call_function_data as shared
        cpu/hotplug: Abort disabling secondary CPUs if wakeup is pending
        cpu/hotplug: Fix notify_cpu_starting() reference in bringup_wait_for_ap()
      e0e86b11
    • Linus Torvalds's avatar
      Merge branch 'core-rslib-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 568521d0
      Linus Torvalds authored
      Pull Reed-Solomon library updates from Thomas Gleixner:
       "A cleanup and fixes series from Ferdinand Blomqvist who analyzed the
        original Reed-Solomon library from Phil Karn on which the kernel
        implementation is based on.
      
        This comes with a test module which verifies all the various corner
        cases for correctness"
      
      * 'core-rslib-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        rslib: Make some functions static
        rslib: Fix remaining decoder flaws
        rslib: Update documentation
        rslib: Fix handling of of caller provided syndrome
        rslib: decode_rs: Code cleanup
        rslib: decode_rs: Fix length parameter check
        rslib: Fix decoding of shortened codes
        rslib: Add tests for the encoder and decoder
      568521d0
    • Linus Torvalds's avatar
      Merge branch 'core-debugobjects-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6b377547
      Linus Torvalds authored
      Pull debugobjects updates from Thomas Gleixner:
       "A set of updates for debugobjects:
      
        - A series of changes to make debugobjects more scalable by
          introducing per cpu pools and reducing the number of lock
          acquisitions
      
        - debugfs cleanup"
      
      * 'core-debugobjects-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        debugobjects: Move printk out of db->lock critical sections
        debugobjects: Less aggressive freeing of excess debug objects
        debugobjects: Reduce number of pool_lock acquisitions in fill_pool()
        debugobjects: Percpu pool lookahead freeing/allocation
        debugobjects: Add percpu free pools
        debugobjects: No need to check return value of debugfs_create()
      6b377547
    • Linus Torvalds's avatar
      Merge tag 's390-5.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 1758fedd
      Linus Torvalds authored
      Pull s390 updates from Vasily Gorbik:
      
       - Improve stop_machine wait logic: replace cpu_relax_yield call in
         generic stop_machine function with a weak stop_machine_yield
         function. This is overridden on s390, which yields the current cpu to
         the neighbouring cpu after a couple of retries, instead of blindly
         giving up the cpu to the hipervisor. This significantly improves
         stop_machine performance on s390 in overcommitted scenarios.
      
         This includes common code changes which have been Acked by Peter
         Zijlstra and Thomas Gleixner.
      
       - Improve jump label transformation speed: transform jump labels
         without using stop_machine.
      
       - Refactoring of the vfio-ccw cp handling, simplifying the code and
         avoiding unneeded allocating/copying.
      
       - Various vfio-ccw fixes (ccw translation, state machine).
      
       - Add support for vfio-ap queue interrupt control in the guest. This
         includes s390 kvm changes which have been Acked by Christian
         Borntraeger.
      
       - Add protected virtualization support for virtio-ccw.
      
       - Enforce both CONFIG_SMP and CONFIG_HOTPLUG_CPU, which allows to
         remove some code which most likely isn't working at all, besides that
         s390 didn't even compile for !CONFIG_SMP.
      
       - Support for special flagged EP11 CPRBs for zcrypt.
      
       - Handle PCI devices with no support for new MIO instructions.
      
       - Avoid KASAN false positives in reworked stack unwinder.
      
       - Couple of fixes for the QDIO layer.
      
       - Convert s390 specific documentation to ReST format.
      
       - Let s390 crypto modules return -ENODEV instead of -EOPNOTSUPP if
         hardware is missing. This way our modules behave like most other
         modules and which is also what systemd's systemd-modules-load.service
         expects.
      
       - Replace defconfig with performance_defconfig, so there is one config
         file less to maintain.
      
       - Remove the SCLP call home device driver, which was never useful.
      
       - Cleanups all over the place.
      
      * tag 's390-5.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (83 commits)
        docs: s390: s390dbf: typos and formatting, update crash command
        docs: s390: unify and update s390dbf kdocs at debug.c
        docs: s390: restore important non-kdoc parts of s390dbf.rst
        vfio-ccw: Fix the conversion of Format-0 CCWs to Format-1
        s390/pci: correctly handle MIO opt-out
        s390/pci: deal with devices that have no support for MIO instructions
        s390: ap: kvm: Enable PQAP/AQIC facility for the guest
        s390: ap: implement PAPQ AQIC interception in kernel
        vfio: ap: register IOMMU VFIO notifier
        s390: ap: kvm: add PQAP interception for AQIC
        s390/unwind: cleanup unused READ_ONCE_TASK_STACK
        s390/kasan: avoid false positives during stack unwind
        s390/qdio: don't touch the dsci in tiqdio_add_input_queues()
        s390/qdio: (re-)initialize tiqdio list entries
        s390/dasd: Fix a precision vs width bug in dasd_feature_list()
        s390/cio: introduce driver_override on the css bus
        vfio-ccw: make convert_ccw0_to_ccw1 static
        vfio-ccw: Remove copy_ccw_from_iova()
        vfio-ccw: Factor out the ccw0-to-ccw1 transition
        vfio-ccw: Copy CCW data outside length calculation
        ...
      1758fedd
    • Linus Torvalds's avatar
      Merge tag 'm68k-for-v5.3-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · 278ecbf0
      Linus Torvalds authored
      Pull m68k updates from Geert Uytterhoeven:
      
        - switch to using the generic remapping DMA allocator
      
        - defconfig updates
      
      * tag 'm68k-for-v5.3-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: Implement arch_dma_prep_coherent()
        m68k: Use the generic dma coherent remap allocator
        m68k: defconfig: Update defconfigs for v5.2-rc1
      278ecbf0
    • Linus Torvalds's avatar
      Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · dfd437a2
      Linus Torvalds authored
      Pull arm64 updates from Catalin Marinas:
      
       - arm64 support for syscall emulation via PTRACE_SYSEMU{,_SINGLESTEP}
      
       - Wire up VM_FLUSH_RESET_PERMS for arm64, allowing the core code to
         manage the permissions of executable vmalloc regions more strictly
      
       - Slight performance improvement by keeping softirqs enabled while
         touching the FPSIMD/SVE state (kernel_neon_begin/end)
      
       - Expose a couple of ARMv8.5 features to user (HWCAP): CondM (new
         XAFLAG and AXFLAG instructions for floating point comparison flags
         manipulation) and FRINT (rounding floating point numbers to integers)
      
       - Re-instate ARM64_PSEUDO_NMI support which was previously marked as
         BROKEN due to some bugs (now fixed)
      
       - Improve parking of stopped CPUs and implement an arm64-specific
         panic_smp_self_stop() to avoid warning on not being able to stop
         secondary CPUs during panic
      
       - perf: enable the ARM Statistical Profiling Extensions (SPE) on ACPI
         platforms
      
       - perf: DDR performance monitor support for iMX8QXP
      
       - cache_line_size() can now be set from DT or ACPI/PPTT if provided to
         cope with a system cache info not exposed via the CPUID registers
      
       - Avoid warning on hardware cache line size greater than
         ARCH_DMA_MINALIGN if the system is fully coherent
      
       - arm64 do_page_fault() and hugetlb cleanups
      
       - Refactor set_pte_at() to avoid redundant READ_ONCE(*ptep)
      
       - Ignore ACPI 5.1 FADTs reported as 5.0 (infer from the
         'arm_boot_flags' introduced in 5.1)
      
       - CONFIG_RANDOMIZE_BASE now enabled in defconfig
      
       - Allow the selection of ARM64_MODULE_PLTS, currently only done via
         RANDOMIZE_BASE (and an erratum workaround), allowing modules to spill
         over into the vmalloc area
      
       - Make ZONE_DMA32 configurable
      
      * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (54 commits)
        perf: arm_spe: Enable ACPI/Platform automatic module loading
        arm_pmu: acpi: spe: Add initial MADT/SPE probing
        ACPI/PPTT: Add function to return ACPI 6.3 Identical tokens
        ACPI/PPTT: Modify node flag detection to find last IDENTICAL
        x86/entry: Simplify _TIF_SYSCALL_EMU handling
        arm64: rename dump_instr as dump_kernel_instr
        arm64/mm: Drop [PTE|PMD]_TYPE_FAULT
        arm64: Implement panic_smp_self_stop()
        arm64: Improve parking of stopped CPUs
        arm64: Expose FRINT capabilities to userspace
        arm64: Expose ARMv8.5 CondM capability to userspace
        arm64: defconfig: enable CONFIG_RANDOMIZE_BASE
        arm64: ARM64_MODULES_PLTS must depend on MODULES
        arm64: bpf: do not allocate executable memory
        arm64/kprobes: set VM_FLUSH_RESET_PERMS on kprobe instruction pages
        arm64/mm: wire up CONFIG_ARCH_HAS_SET_DIRECT_MAP
        arm64: module: create module allocations without exec permissions
        arm64: Allow user selection of ARM64_MODULE_PLTS
        acpi/arm64: ignore 5.1 FADTs that are reported as 5.0
        arm64: Allow selecting Pseudo-NMI again
        ...
      dfd437a2
  2. Jul 08, 2019
  3. Jul 07, 2019
    • zhengbin's avatar
      time: Validate user input in compat_settimeofday() · 9176ab1b
      zhengbin authored
      
      
      The user value is validated after converting the timeval to a timespec, but
      for a wide range of negative tv_usec values the multiplication overflow turns
      them in positive numbers. So the 'validated later' is not catching the
      invalid input.
      
      Signed-off-by: default avatarzhengbin <zhengbin13@huawei.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/r/1562460701-113301-1-git-send-email-zhengbin13@huawei.com
      9176ab1b
    • Sebastian Andrzej Siewior's avatar
      x86/fpu: Inline fpu__xstate_clear_all_cpu_caps() · 7891bc0a
      Sebastian Andrzej Siewior authored
      All fpu__xstate_clear_all_cpu_caps() does is to invoke one simple
      function since commit
      
        73e3a7d2
      
       ("x86/fpu: Remove the explicit clearing of XSAVE dependent features")
      
      so invoke that function directly and remove the wrapper.
      
      Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/r/20190704060743.rvew4yrjd6n33uzx@linutronix.de
      7891bc0a
    • Sebastian Andrzej Siewior's avatar
      x86/fpu: Make 'no387' and 'nofxsr' command line options useful · 9838e3bf
      Sebastian Andrzej Siewior authored
      The command line option `no387' is designed to disable the FPU
      entirely. This only 'works' with CONFIG_MATH_EMULATION enabled.
      
      But on 64bit this cannot work because user space expects SSE to work which
      required basic FPU support. MATH_EMULATION does not help because SSE is not
      emulated.
      
      The command line option `nofxsr' should also be limited to 32bit because
      FXSR is part of the required flags on 64bit so turning it off is not
      possible.
      
      Clearing X86_FEATURE_FPU without emulation enabled will not work anyway and
      hang in fpu__init_system_early_generic() before the console is enabled.
      
      Setting additioal dependencies, ensures that the CPU still boots on a
      modern CPU. Otherwise, dropping FPU will leave FXSR enabled causing the
      kernel to crash early in fpu__init_system_mxcsr().
      
      With XSAVE support it will crash in fpu__init_cpu_xstate(). The problem is
      that xsetbv() with XMM set and SSE cleared is not allowed.  That means
      XSAVE has to be disabled. The XSAVE support is disabled in
      fpu__init_system_xstate_size_legacy() but it is too late. It can be
      removed, it has been added in commit
      
        1f999ab5
      
       ("x86, xsave: Disable xsave in i387 emulation mode")
      
      to use `no387' on a CPU with XSAVE support.
      
      All this happens before console output.
      
      After hat, the next possible crash is in RAID6 detect code because MMX
      remained enabled. With a 3DNOW enabled config it will explode in memcpy()
      for instance due to kernel_fpu_begin() but this is unconditionally enabled.
      
      This is enough to boot a Debian Wheezy on a 32bit qemu "host" CPU which
      supports everything up to XSAVES, AVX2 without 3DNOW. Later, Debian
      increased the minimum requirements to i686 which means it does not boot
      userland atleast due to CMOV.
      
      After masking the additional features it still keeps SSE4A and 3DNOW*
      enabled (if present on the host) but those are unused in the kernel.
      
      Restrict `no387' and `nofxsr' otions to 32bit only. Add dependencies for
      FPU, FXSR to additionaly mask CMOV, MMX, XSAVE if FXSR or FPU is cleared.
      
      Reported-by: default avatarVegard Nossum <vegard.nossum@oracle.com>
      Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/r/20190703083247.57kjrmlxkai3vpw3@linutronix.de
      9838e3bf
    • Peter Xu's avatar
      timer: Document TIMER_PINNED · 28ef2db8
      Peter Xu authored
      
      
      The flag hints the user that the pinned timers will always be run on a
      static CPU (because that should be what "pinned" means...) but that's
      not the truth, at least with the current implementation.
      
      For example, currently if a pinned timer is set up but later mod_timer()
      upon the pinned timer is invoked, mod_timer() will still try to queue the
      timer on the current processor and migrate the timer if necessary.
      
      Document it a bit with the definition of TIMER_PINNED so that all future
      users will use it correctly.
      
      Signed-off-by: default avatarPeter Xu <peterx@redhat.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: Marcelo Tosatti <mtosatti@redhat.com>
      Cc: Luiz Capitulino <lcapitulino@redhat.com>
      Link: https://lkml.kernel.org/r/20190628105942.14131-1-peterx@redhat.com
      28ef2db8
    • Linus Torvalds's avatar
      Merge tag 'for-linus-20190706' of git://git.kernel.dk/linux-block · 46713c3d
      Linus Torvalds authored
      Pull block fix from Jens Axboe:
       "Just a single fix for a patch from Greg KH, which reportedly break
        block debugfs locations for certain setups. Trivial enough that I
        think we should include it now, rather than wait and release 5.2 with
        it, since it's a regression in this series"
      
      * tag 'for-linus-20190706' of git://git.kernel.dk/linux-block:
        blk-mq: fix up placement of debugfs directory of queue files
      46713c3d
    • Linus Torvalds's avatar
      Merge tag 'mips_fixes_5.2_2' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux · bcc0e65f
      Linus Torvalds authored
      Pull MIPS fixes from Paul Burton:
       "A few more MIPS fixes:
      
         - Fix a silly typo in virt_addr_valid which led to completely bogus
           behavior (that happened to stop tripping up hardened usercopy
           despite being broken).
      
         - Fix UART parity setup on AR933x systems.
      
         - A build fix for non-Linux build machines.
      
         - Have the 'all' make target build DTBs, primarily to fit in with the
           behavior of scripts/package/builddeb.
      
         - Handle an execution hazard in TLB exceptions that use KScratch
           registers, which could inadvertently clobber the $1 register on
           some generally higher-end out-of-order CPUs.
      
         - A MAINTAINERS update to fix the path to the NAND driver for Ingenic
           systems"
      
      * tag 'mips_fixes_5.2_2' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux:
        MAINTAINERS: Correct path to moved files
        MIPS: Add missing EHB in mtc0 -> mfc0 sequence.
        MIPS: have "plain" make calls build dtbs for selected platforms
        MIPS: fix build on non-linux hosts
        MIPS: ath79: fix ar933x uart parity mode
        MIPS: Fix bounds check virt_addr_valid
      bcc0e65f
    • Linus Torvalds's avatar
      Merge tag 'dmaengine-fix-5.2' of git://git.infradead.org/users/vkoul/slave-dma · 2692982b
      Linus Torvalds authored
      Pull dmaengine fixes from Vinod Koul:
      
       - bam_dma fix for completed descriptor count
      
       - fix for imx-sdma remove BD_INTR for channel0 and use-after-free on
         probe error path
      
       - endian bug fix in jz4780 IRQ handler
      
      * tag 'dmaengine-fix-5.2' of git://git.infradead.org/users/vkoul/slave-dma:
        dmaengine: qcom: bam_dma: Fix completed descriptors count
        dmaengine: imx-sdma: remove BD_INTR for channel0
        dmaengine: imx-sdma: fix use-after-free on probe error path
        dmaengine: jz4780: Fix an endian bug in IRQ handler
      2692982b
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · 4f8b4909
      Linus Torvalds authored
      Pull SCSI fixes from James Bottomley:
       "Two iscsi fixes.
      
        One for an oops in the client which can be triggered by the server
        authentication protocol and the other in the target code which causes
        data corruption"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        scsi: iscsi: set auth_protocol back to NULL if CHAP_A value is not supported
        scsi: target/iblock: Fix overrun in WRITE SAME emulation
      4f8b4909
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · ceacbc0e
      Linus Torvalds authored
      Pull vfs fixlet from Al Viro:
       "Fix bogus default y in Kconfig (VALIDATE_FS_PARSER)
      
        That thing should not be turned on by default, especially since it's
        not quiet in case it finds no problems. Geert has sent the obvious fix
        quite a few times, but it fell through the cracks"
      
      * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        fs: VALIDATE_FS_PARSER should default to n
      ceacbc0e
    • Greg Kroah-Hartman's avatar
      blk-mq: fix up placement of debugfs directory of queue files · 7e41c3c9
      Greg Kroah-Hartman authored
      When the blk-mq debugfs file creation logic was "cleaned up" it was
      cleaned up too much, causing the queue file to not be created in the
      correct location.  Turns out the check for the directory being present
      is needed as if that has not happened yet, the files should not be
      created, and the function will be called later on in the initialization
      code so that the files can be created in the correct location.
      
      Fixes: 6cfc0081
      
       ("blk-mq: no need to check return value of debugfs_create functions")
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Cc: linux-block@vger.kernel.org
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      7e41c3c9
  4. Jul 06, 2019