Tags

Tags give the ability to mark specific points in history as being important
  • v5.14.16

    f63179c1 · Linux 5.14.16 ·
    This is the 5.14.16 stable release
    
  • v5.10.77

    09df347c · Linux 5.10.77 ·
    This is the 5.10.77 stable release
    
  • v5.4.157

    e6de9a8b · Linux 5.4.157 ·
    This is the 5.4.157 stable release
    
  • v4.19.215

    a027d43c · Linux 4.19.215 ·
    This is the 4.19.215 stable release
    
  • v4.14.254

    0447aa20 · Linux 4.14.254 ·
    This is the 4.14.254 stable release
    
  • v4.9.289

    59d4178b · Linux 4.9.289 ·
    This is the 4.9.289 stable release
    
  • v4.4.291

    e0018f4c · Linux 4.4.291 ·
    This is the 4.4.291 stable release
    
  • x86_sgx_for_v5.16_rc1

    Add a SGX_IOC_VEPC_REMOVE ioctl to the /dev/sgx_vepc virt interface with
    which EPC pages can be put back into their uninitialized state without
    having to reopen /dev/sgx_vepc, which could not be possible anymore
    after startup due to security policies.
    
  • x86_sev_for_v5.16_rc1

    - Export sev_es_ghcb_hv_call() so that HyperV Isolation VMs can use it too
    
    - Non-urgent fixes and cleanups
    
  • x86_misc_for_v5.16_rc1

    - Use the proper interface for the job: get_unaligned() instead of
    memcpy() in the insn decoder
    
    - A randconfig build fix
    
  • x86_cpu_for_v5.16_rc1

    - Start checking a CPUID bit on AMD Zen3 which states that the CPU
    clears the segment base when a null selector is written. Do the explicit
    detection on older CPUs, zen2 and hygon specifically, which have the
    functionality but do not advertize the CPUID bit. Factor in the presence
    of a hypervisor underneath the kernel and avoid doing the explicit check
    there which the HV might've decided to not advertize for migration
    safety reasons, a.o.
    
    - Add support for a new X86 CPU vendor: VORTEX. Needed for whitelisting
    those CPUs in the hardware vulnerabilities detection
    
    - Force the compiler to use rIP-relative addressing in the fallback path of
    static_cpu_has(), in order to avoid unnecessary register pressure
    
  • x86_core_for_v5.16_rc1

    - Do not #GP on userspace use of CLI/STI but pretend it was a NOP to
    keep old userspace from breaking. Adjust the corresponding iopl selftest
    to that.
    
    - Improve stack overflow warnings to say which stack got overflowed and
    raise the exception stack sizes to 2 pages since overflowing the single
    page of exception stack is very easy to do nowadays with all the tracing
    machinery enabled. With that, rip out the custom mapping of AMD SEV's
    too.
    
    - A bunch of changes in preparation for FGKASLR like supporting more
    than 64K section headers in the relocs tool, correct ORC lookup table
    size to cover the whole kernel .text and other adjustments.
    
  • x86_cleanups_for_v5.16_rc1

    The usual round of random minor fixes and cleanups all over the place.
    
  • x86_cc_for_v5.16_rc1

    Add an interface called cc_platform_has() which is supposed to be used
    by confidential computing solutions to query different aspects of the
    system. The intent behind it is to unify testing of such aspects instead
    of having each confidential computing solution add its own set of tests
    to code paths in the kernel, leading to an unwieldy mess.
    
  • x86_build_for_v5.16_rc1

    - A single fix to hdimage when using older versions of mtools
    
  • ras_core_for_v5.16_rc1

    - Get rid of a bunch of function pointers used in MCA land in favor
    of normal functions. This is in preparation of making the MCA code
    noinstr-aware
    
    - When the kernel copies data from user addresses and it encounters a
    machine check, a SIGBUS is sent to that process. Change this action to
    either an -EFAULT which is returned to the user or a short write, making
    the recovery action a lot more user-friendly
    
  • sched-core-2021-11-01

    Scheduler updates:
    
     - Revert the printk format based wchan() symbol resolution as it can leak
       the raw value in case that the symbol is not resolvable.
    
     - Make wchan() more robust and work with all kind of unwinders by
       enforcing that the task stays blocked while unwinding is in progress.
    
     - Prevent sched_fork() from accessing an invalid sched_task_group
    
     - Improve asymmetric packing logic
    
     - Extend scheduler statistics to RT and DL scheduling classes and add
       statistics for bandwith burst to the SCHED_FAIR class.
    
     - Properly account SCHED_IDLE entities
    
     - Prevent a potential deadlock when initial priority is assigned to a
       newly created kthread. A recent change to plug a race between cpuset and
       __sched_setscheduler() introduced a new lock dependency which is now
       triggered. Break the lock dependency chain by moving the priority
       assignment to the thread function.
    
     - Fix the idle time reporting in /proc/uptime for NOHZ enabled systems.
    
     - Improve idle balancing in general and especially for NOHZ enabled
       systems.
    
     - Provide proper interfaces for live patching so it does not have to
       fiddle with scheduler internals.
    
     - Add cluster aware scheduling support.
    
     - A small set of tweaks for RT (irqwork, wait_task_inactive(), various
       scheduler options and delaying mmdrop)
    
     - The usual small tweaks and improvements all over the place
    
  • x86-fpu-2021-11-01

    x86/fpu updates:
    
     - Cleanup of extable fixup handling to be more robust, which in turn
       allows to make the FPU exception fixups more robust as well.
    
     - Change the return code for signal frame related failures from explicit
       error codes to a boolean fail/success as that's all what the calling
       code evaluates.
    
     - A large refactoring of the FPU code to prepare for adding AMX support:
    
       - Distangle the public header maze and remove especially the misnomed
         kitchen sink internal.h which is despite it's name included all over
         the place.
    
       - Add a proper abstraction for the register buffer storage (struct
         fpstate) which allows to dynamically size the buffer at runtime by
         flipping the pointer to the buffer container from the default
         container which is embedded in task_struct::tread::fpu to a
         dynamically allocated container with a larger register buffer.
    
       - Convert the code over to the new fpstate mechanism.
    
       - Consolidate the KVM FPU handling by moving the FPU related code into
         the FPU core which removes the number of exports and avoids adding
         even more export when AMX has to be supported in KVM. This also
         removes duplicated code which was of course unnecessary different and
         incomplete in the KVM copy.
    
       - Simplify the KVM FPU buffer handling by utilizing the new fpstate
         container and just switching the buffer pointer from the user space
         buffer to the KVM guest buffer when entering vcpu_run() and flipping
         it back when leaving the function. This cuts the memory requirements
         of a vCPU for FPU buffers in half and avoids pointless memory copy
         operations.
    
         This also solves the so far unresolved problem of adding AMX support
         because the current FPU buffer handling of KVM inflicted a circular
         dependency between adding AMX support to the core and to KVM.  With
         the new scheme of switching fpstate AMX support can be added to the
         core code without affecting KVM.
    
       - Replace various variables with proper data structures so the extra
         information required for adding dynamically enabled FPU features (AMX)
         can be added in one place
    
     - Add AMX (Advanved Matrix eXtensions) support (finally):
    
        AMX is a large XSTATE component which is going to be available with
        Saphire Rapids XEON CPUs. The feature comes with an extra MSR (MSR_XFD)
        which allows to trap the (first) use of an AMX related instruction,
        which has two benefits:
    
        1) It allows the kernel to control access to the feature
    
        2) It allows the kernel to dynamically allocate the large register
           state buffer instead of burdening every task with the the extra 8K
           or larger state storage.
    
        It would have been great to gain this kind of control already with
        AVX512.
    
        The support comes with the following infrastructure components:
    
        1) arch_prctl() to
           - read the supported features (equivalent to XGETBV(0))
           - read the permitted features for a task
           - request permission for a dynamically enabled feature
    
           Permission is granted per process, inherited on fork() and cleared
           on exec(). The permission policy of the kernel is restricted to
           sigaltstack size validation, but the syscall obviously allows
           further restrictions via seccomp etc.
    
        2) A stronger sigaltstack size validation for sys_sigaltstack(2) which
           takes granted permissions and the potentially resulting larger
           signal frame into account. This mechanism can also be used to
           enforce factual sigaltstack validation independent of dynamic
           features to help with finding potential victims of the 2K
           sigaltstack size constant which is broken since AVX512 support was
           added.
    
        3) Exception handling for #NM traps to catch first use of a extended
           feature via a new cause MSR. If the exception was caused by the use
           of such a feature, the handler checks permission for that
           feature. If permission has not been granted, the handler sends a
           SIGILL like the #UD handler would do if the feature would have been
           disabled in XCR0. If permission has been granted, then a new fpstate
           which fits the larger buffer requirement is allocated.
    
           In the unlikely case that this allocation fails, the handler sends
           SIGSEGV to the task. That's not elegant, but unavoidable as the
           other discussed options of preallocation or full per task
           permissions come with their own set of horrors for kernel and/or
           userspace. So this is the lesser of the evils and SIGSEGV caused by
           unexpected memory allocation failures is not a fundamentally new
           concept either.
    
           When allocation succeeds, the fpstate properties are filled in to
           reflect the extended feature set and the resulting sizes, the
           fpu::fpstate pointer is updated accordingly and the trap is disarmed
           for this task permanently.
    
        4) Enumeration and size calculations
    
        5) Trap switching via MSR_XFD
    
           The XFD (eXtended Feature Disable) MSR is context switched with the
           same life time rules as the FPU register state itself. The mechanism
           is keyed off with a static key which is default disabled so !AMX
           equipped CPUs have zero overhead. On AMX enabled CPUs the overhead
           is limited by comparing the tasks XFD value with a per CPU shadow
           variable to avoid redundant MSR writes. In case of switching from a
           AMX using task to a non AMX using task or vice versa, the extra MSR
           write is obviously inevitable.
    
           All other places which need to be aware of the variable feature sets
           and resulting variable sizes are not affected at all because they
           retrieve the information (feature set, sizes) unconditonally from
           the fpstate properties.
    
        6) Enable the new AMX states
    
      Note, this is relatively new code despite the fact that AMX support is in
      the works for more than a year now.
    
      The big refactoring of the FPU code, which allowed to do a proper
      integration has been started exactly 3 weeks ago. Refactoring of the
      existing FPU code and of the original AMX patches took a week and has
      been subject to extensive review and testing. The only fallout which has
      not been caught in review and testing right away was restricted to AMX
      enabled systems, which is completely irrelevant for anyone outside Intel
      and their early access program. There might be dragons lurking as usual,
      but so far the fine grained refactoring has held up and eventual yet
      undetected fallout is bisectable and should be easily addressable before
      the 5.16 release. Famous last words...
    
      Many thanks to Chang Bae and Dave Hansen for working hard on this and
      also to the various test teams at Intel who reserved extra capacity to
      follow the rapid development of this closely which provides the
      confidence level required to offer this rather large update for inclusion
      into 5.16-rc1.
    
  • x86-apic-2021-11-01

    x86/apic related update:
    
      - A single commit which reduces cacheline misses in
        __x2apic_send_IPI_mask() significantly by converting
        x86_cpu_to_logical_apicid() to an array instead of using per CPU
        storage. This reduces the cost for a full broadcast on a dual socket
        system with 256 CPUs from 33 down to 11 microseconds.
    
  • timers-core-2021-10-31

    Time, timers and timekeeping updates:
    
      - No core updates
    
      - No new clocksource/event driver
    
      - A large rework of the ARM architected timer driver to prepare for the
        support of the upcoming ARMv8.6 support
    
      - Fix Kconfig options for Exynos MCT, Samsung PWM and TI DM timers
    
      - Address a namespace collison in the ARC sp804 timer driver