09 Jul, 2019

33 commits

  • Pull keyring ACL support from David Howells:
    "This changes the permissions model used by keys and keyrings to be
    based on an internal ACL by the following means:

    - Replace the permissions mask internally with an ACL that contains a
    list of ACEs, each with a specific subject with a permissions mask.
    Potted default ACLs are available for new keys and keyrings.

    ACE subjects can be macroised to indicate the UID and GID specified
    on the key (which remain). Future commits will be able to add
    additional subject types, such as specific UIDs or domain
    tags/namespaces.

    Also split a number of permissions to give finer control. Examples
    include splitting the revocation permit from the change-attributes
    permit, thereby allowing someone to be granted permission to revoke
    a key without allowing them to change the owner; also the ability
    to join a keyring is split from the ability to link to it, thereby
    stopping a process accessing a keyring by joining it and thus
    acquiring use of possessor permits.

    - Provide a keyctl to allow the granting or denial of one or more
    permits to a specific subject. Direct access to the ACL is not
    granted, and the ACL cannot be viewed"

    * tag 'keys-acl-20190703' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
    keys: Provide KEYCTL_GRANT_PERMISSION
    keys: Replace uid/gid/perm permissions checking with an ACL

    Linus Torvalds
     
  • …/git/dhowells/linux-fs

    Pull keyring namespacing from David Howells:
    "These patches help make keys and keyrings more namespace aware.

    Firstly some miscellaneous patches to make the process easier:

    - Simplify key index_key handling so that the word-sized chunks
    assoc_array requires don't have to be shifted about, making it
    easier to add more bits into the key.

    - Cache the hash value in the key so that we don't have to calculate
    on every key we examine during a search (it involves a bunch of
    multiplications).

    - Allow keying_search() to search non-recursively.

    Then the main patches:

    - Make it so that keyring names are per-user_namespace from the point
    of view of KEYCTL_JOIN_SESSION_KEYRING so that they're not
    accessible cross-user_namespace.

    keyctl_capabilities() shows KEYCTL_CAPS1_NS_KEYRING_NAME for this.

    - Move the user and user-session keyrings to the user_namespace
    rather than the user_struct. This prevents them propagating
    directly across user_namespaces boundaries (ie. the KEY_SPEC_*
    flags will only pick from the current user_namespace).

    - Make it possible to include the target namespace in which the key
    shall operate in the index_key. This will allow the possibility of
    multiple keys with the same description, but different target
    domains to be held in the same keyring.

    keyctl_capabilities() shows KEYCTL_CAPS1_NS_KEY_TAG for this.

    - Make it so that keys are implicitly invalidated by removal of a
    domain tag, causing them to be garbage collected.

    - Institute a network namespace domain tag that allows keys to be
    differentiated by the network namespace in which they operate. New
    keys that are of a type marked 'KEY_TYPE_NET_DOMAIN' are assigned
    the network domain in force when they are created.

    - Make it so that the desired network namespace can be handed down
    into the request_key() mechanism. This allows AFS, NFS, etc. to
    request keys specific to the network namespace of the superblock.

    This also means that the keys in the DNS record cache are
    thenceforth namespaced, provided network filesystems pass the
    appropriate network namespace down into dns_query().

    For DNS, AFS and NFS are good, whilst CIFS and Ceph are not. Other
    cache keyrings, such as idmapper keyrings, also need to set the
    domain tag - for which they need access to the network namespace of
    the superblock"

    * tag 'keys-namespace-20190627' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
    keys: Pass the network namespace into request_key mechanism
    keys: Network namespace domain tag
    keys: Garbage collect keys for which the domain has been removed
    keys: Include target namespace in match criteria
    keys: Move the user and user-session keyrings to the user_namespace
    keys: Namespace keyring names
    keys: Add a 'recurse' flag for keyring searches
    keys: Cache the hash value to avoid lots of recalculation
    keys: Simplify key description management

    Linus Torvalds
     
  • Pull request_key improvements from David Howells:
    "These are all request_key()-related, including a fix and some improvements:

    - Fix the lack of a Link permission check on a key found by
    request_key(), thereby enabling request_key() to link keys that
    don't grant this permission to the target keyring (which must still
    grant Write permission).

    Note that the key must be in the caller's keyrings already to be
    found.

    - Invalidate used request_key authentication keys rather than
    revoking them, so that they get cleaned up immediately rather than
    hanging around till the expiry time is passed.

    - Move the RCU locks outwards from the keyring search functions so
    that a request_key_rcu() can be provided. This can be called in RCU
    mode, so it can't sleep and can't upcall - but it can be called
    from LOOKUP_RCU pathwalk mode.

    - Cache the latest positive result of request_key*() temporarily in
    task_struct so that filesystems that make a lot of request_key()
    calls during pathwalk can take advantage of it to avoid having to
    redo the searching. This requires CONFIG_KEYS_REQUEST_CACHE=y.

    It is assumed that the key just found is likely to be used multiple
    times in each step in an RCU pathwalk, and is likely to be reused
    for the next step too.

    Note that the cleanup of the cache is done on TIF_NOTIFY_RESUME,
    just before userspace resumes, and on exit"

    * tag 'keys-request-20190626' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
    keys: Kill off request_key_async{,_with_auxdata}
    keys: Cache result of request_key*() temporarily in task_struct
    keys: Provide request_key_rcu()
    keys: Move the RCU locks outwards from the keyring search functions
    keys: Invalidate used request_key authentication keys
    keys: Fix request_key() lack of Link perm check on found key

    Linus Torvalds
     
  • Pull misc keyring updates from David Howells:
    "These are some miscellaneous keyrings fixes and improvements:

    - Fix a bunch of warnings from sparse, including missing RCU bits and
    kdoc-function argument mismatches

    - Implement a keyctl to allow a key to be moved from one keyring to
    another, with the option of prohibiting key replacement in the
    destination keyring.

    - Grant Link permission to possessors of request_key_auth tokens so
    that upcall servicing daemons can more easily arrange things such
    that only the necessary auth key is passed to the actual service
    program, and not all the auth keys a daemon might possesss.

    - Improvement in lookup_user_key().

    - Implement a keyctl to allow keyrings subsystem capabilities to be
    queried.

    The keyutils next branch has commits to make available, document and
    test the move-key and capabilities code:

    https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/keyutils.git/log

    They're currently on the 'next' branch"

    * tag 'keys-misc-20190619' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
    keys: Add capability-checking keyctl function
    keys: Reuse keyring_index_key::desc_len in lookup_user_key()
    keys: Grant Link permission to possessers of request_key auth keys
    keys: Add a keyctl to move a key between keyrings
    keys: Hoist locking out of __key_link_begin()
    keys: Break bits out of key_unlink()
    keys: Change keyring_serialise_link_sem to a mutex
    keys: sparse: Fix kdoc mismatches
    keys: sparse: Fix incorrect RCU accesses
    keys: sparse: Fix key_fs[ug]id_changed()

    Linus Torvalds
     
  • Pull selinux updates from Paul Moore:
    "Like the audit pull request this is a little early due to some
    upcoming vacation plans and uncertain network access while I'm away.
    Also like the audit PR, the list of patches here is pretty minor, the
    highlights include:

    - Explicitly use __le variables to make sure "sparse" can verify
    proper byte endian handling.

    - Remove some BUG_ON()s that are no longer needed.

    - Allow zero-byte writes to the "keycreate" procfs attribute without
    requiring key:create to make it easier for userspace to reset the
    keycreate label.

    - Consistently log the "invalid_context" field as an untrusted string
    in the AUDIT_SELINUX_ERR audit records"

    * tag 'selinux-pr-20190702' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux:
    selinux: format all invalid context as untrusted
    selinux: fix empty write to keycreate file
    selinux: remove some no-op BUG_ONs
    selinux: provide __le variables explicitly

    Linus Torvalds
     
  • Pull audit updates from Paul Moore:
    "This pull request is a bit early, but with some vacation time coming
    up I wanted to send this out now just in case the remote Internet Gods
    decide not to smile on me once the merge window opens. The patchset
    for v5.3 is pretty minor this time, the highlights include:

    - When the audit daemon is sent a signal, ensure we deliver
    information about the sender even when syscall auditing is not
    enabled/supported.

    - Add the ability to filter audit records based on network address
    family.

    - Tighten the audit field filtering restrictions on string based
    fields.

    - Cleanup the audit field filtering verification code.

    - Remove a few BUG() calls from the audit code"

    * tag 'audit-pr-20190702' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit:
    audit: remove the BUG() calls in the audit rule comparison functions
    audit: enforce op for string fields
    audit: add saddr_fam filter field
    audit: re-structure audit field valid checks
    audit: deliver signal_info regarless of syscall

    Linus Torvalds
     
  • Pull tpm updates from Jarkko Sakkinen:
    "This contains two critical bug fixes and support for obtaining TPM
    events triggered by ExitBootServices().

    For the latter I have to give a quite verbose explanation not least
    because I had to revisit all the details myself to remember what was
    going on in Matthew's patches.

    The preboot software stack maintains an event log that gets entries
    every time something gets hashed to any of the PCR registers. What
    gets hashed could be a component to be run or perhaps log of some
    actions taken just to give couple of coarse examples. In general,
    anything relevant for the boot process that the preboot software does
    gets hashed and a log entry with a specific event type [1].

    The main application for this is remote attestation and the reason why
    it is useful is nicely put in the very first section of [1]:

    "Attestation is used to provide information about the platform’s
    state to a challenger. However, PCR contents are difficult to
    interpret; therefore, attestation is typically more useful when
    the PCR contents are accompanied by a measurement log. While not
    trusted on their own, the measurement log contains a richer set of
    information than do the PCR contents. The PCR contents are used to
    provide the validation of the measurement log."

    Because EFI_TCG2_PROTOCOL.GetEventLog() is not available after calling
    ExitBootServices(), Linux EFI stub copies the event log to a custom
    configuration table. Unfortunately, ExitBootServices() also generates
    events and obviously these events do not get copied to that table.
    Luckily firmware does this for us by providing a configuration table
    identified by EFI_TCG2_FINAL_EVENTS_TABLE_GUID.

    This essentially contains necessary changes to provide the full event
    log for the use the user space that is concatenated from these two
    partial event logs [2]"

    [1] https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/
    [2] The final concatenation is done in drivers/char/tpm/eventlog/efi.c

    * tag 'tpmdd-next-20190625' of git://git.infradead.org/users/jjs/linux-tpmdd:
    tpm: Don't duplicate events from the final event log in the TCG2 log
    Abstract out support for locating an EFI config table
    tpm: Fix TPM 1.2 Shutdown sequence to prevent future TPM operations
    efi: Attempt to get the TCG2 event log in the boot stub
    tpm: Append the final event log to the TPM event log
    tpm: Reserve the TPM final events table
    tpm: Abstract crypto agile event size calculations
    tpm: Actually fail on TPM errors during "get random"

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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//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//arch_status

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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()
    ...

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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
    ...

    Linus Torvalds
     
  • 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
    ...

    Linus Torvalds
     
  • 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()

    Linus Torvalds
     
  • 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
    ...

    Linus Torvalds
     
  • 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
    ...

    Linus Torvalds
     
  • 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()

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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
    ...

    Linus Torvalds
     
  • 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
    ...

    Linus Torvalds
     
  • 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()

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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()

    Linus Torvalds
     
  • 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
    ...

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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
    ...

    Linus Torvalds
     

08 Jul, 2019

1 commit


07 Jul, 2019

6 commits

  • 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: zhengbin
    Signed-off-by: Thomas Gleixner
    Link: https://lkml.kernel.org/r/1562460701-113301-1-git-send-email-zhengbin13@huawei.com

    zhengbin
     
  • All fpu__xstate_clear_all_cpu_caps() does is to invoke one simple
    function since commit

    73e3a7d2a7c3b ("x86/fpu: Remove the explicit clearing of XSAVE dependent features")

    so invoke that function directly and remove the wrapper.

    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Thomas Gleixner
    Link: https://lkml.kernel.org/r/20190704060743.rvew4yrjd6n33uzx@linutronix.de

    Sebastian Andrzej Siewior
     
  • 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

    1f999ab5a1360 ("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: Vegard Nossum
    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Thomas Gleixner
    Link: https://lkml.kernel.org/r/20190703083247.57kjrmlxkai3vpw3@linutronix.de

    Sebastian Andrzej Siewior
     
  • 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: Peter Xu
    Signed-off-by: Thomas Gleixner
    Cc: Marcelo Tosatti
    Cc: Luiz Capitulino
    Link: https://lkml.kernel.org/r/20190628105942.14131-1-peterx@redhat.com

    Peter Xu
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds