15 May, 2019

1 commit


14 May, 2019

1 commit

  • I noticed that recently multiple systems (chromebooks) couldn't wake
    from S0ix using LID or Keyboard after updating to a newer kernel. I
    bisected and it turned up commit f941d3e41da7 ("ACPI: EC / PM: Disable
    non-wakeup GPEs for suspend-to-idle"). I checked that the issue got
    fixed if that commit was reverted.

    I debugged and found that although PNP0C0D:00 (representing the LID)
    is wake capable and should wakeup the system per the code in
    acpi_wakeup_gpe_init() and in drivers/acpi/button.c:

    localhost /sys # cat /proc/acpi/wakeup
    Device S-state Status Sysfs node
    LID0 S4 *enabled platform:PNP0C0D:00
    CREC S5 *disabled platform:GOOG0004:00
    *disabled platform:cros-ec-dev.1.auto
    *disabled platform:cros-ec-accel.0
    *disabled platform:cros-ec-accel.1
    *disabled platform:cros-ec-gyro.0
    *disabled platform:cros-ec-ring.0
    *disabled platform:cros-usbpd-charger.2.auto
    *disabled platform:cros-usbpd-logger.3.auto
    D015 S3 *enabled i2c:i2c-ELAN0000:00
    PENH S3 *enabled platform:PRP0001:00
    XHCI S3 *enabled pci:0000:00:14.0
    GLAN S4 *disabled
    WIFI S3 *disabled pci:0000:00:14.3
    localhost /sys #

    On debugging, I found that its corresponding GPE is not being enabled.
    The particular GPE's "gpe_register_info->enable_for_wake" does not
    have any bits set when acpi_enable_all_wakeup_gpes() comes around to
    use it. I looked at code and could not find any other code path that
    should set the bits in "enable_for_wake" bitmask for the wake enabled
    devices for s2idle. [I do see that it happens for S3 in
    acpi_sleep_prepare()].

    Thus I used the same call to enable the GPEs for wake enabled devices,
    and verified that this fixes the regression I was seeing on multiple
    of my devices.

    [ rjw: The problem is that commit f941d3e41da7 ("ACPI: EC / PM:
    Disable non-wakeup GPEs for suspend-to-idle") forgot to add
    the acpi_enable_wakeup_devices() call for s2idle along with
    acpi_enable_all_wakeup_gpes(). ]

    Fixes: f941d3e41da7 ("ACPI: EC / PM: Disable non-wakeup GPEs for suspend-to-idle")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=203579
    Signed-off-by: Rajat Jain
    [ rjw: Subject & changelog ]
    Cc: 5.0+ # 5.0+
    Signed-off-by: Rafael J. Wysocki

    Rajat Jain
     

13 May, 2019

4 commits

  • In ACPI it is possible to make references to device objects only,
    not to other objects inside a device.

    In practice this means that hierarchical data extension targets
    must be in parentheses to make them strings, or an ACPICA warning
    will be produced.

    Reported-by: Andy Shevchenko
    Signed-off-by: Sakari Ailus
    Reviewed-by: Andy Shevchenko
    [ rjw: Changelog ]
    Signed-off-by: Rafael J. Wysocki

    Sakari Ailus
     
  • Use tabs to indent the graph documentation, not spaces.

    Fixes: f2dde1ed0f28 ("Documentation: ACPI: move dsd/graph.txt to firmware-guide/acpi and convert to reST")
    Signed-off-by: Sakari Ailus
    Signed-off-by: Rafael J. Wysocki

    Sakari Ailus
     
  • ACPICA commit 36449fa1dc914113f2b096622d22c2621fd22861

    Version 20190509.

    Link: https://github.com/acpica/acpica/commit/36449fa1
    Signed-off-by: Bob Moore
    Signed-off-by: Erik Schmauss
    Signed-off-by: Rafael J. Wysocki

    Bob Moore
     
  • ACPICA commit c14f17fa0acf8c93497ce04b9a7f4ada51b69383

    This flag should not be included in #ifndef CONFIG_ACPI. It should be
    used unconditionally.

    Link: https://github.com/acpica/acpica/commit/c14f17fa
    Fixes: aa9aaa4d61c0 ("ACPI: use different default debug value than ACPICA")
    Reported-by: Gabriel C
    Tested-by: Gabriel C
    Signed-off-by: Erik Schmauss
    Signed-off-by: Bob Moore
    Cc: 5.1+ 5.1+
    Signed-off-by: Rafael J. Wysocki

    Erik Schmauss
     

10 May, 2019

1 commit

  • Standards such as the MIPI DisCo for SoundWire 1.0 specification
    assume the _ADR field is 64 bits.

    _ADR is defined as an "Integer" represented as 64 bits since ACPI 2.0
    released in 2002. The low levels already use _ADR as 64 bits, e.g. in
    struct acpi_device_info.

    This patch bumps the representation used for sysfs to 64 bits. To
    avoid any compatibility/ABI issues, the printf format is only extended
    to 16 characters when the actual _ADR value exceeds the 32 bit
    maximum.

    Example with a SoundWire device, the results show the complete
    vendorID and linkID which were omitted before:

    Before:
    $ more /sys/bus/acpi/devices/device\:38/adr
    0x5d070000
    After:
    $ more /sys/bus/acpi/devices/device\:38/adr
    0x000010025d070000

    Signed-off-by: Pierre-Louis Bossart
    [ rjw: Replace 0xFFFFFFFF with U32_MAX, clean up subject ]
    Signed-off-by: Rafael J. Wysocki

    Pierre-Louis Bossart
     

07 May, 2019

33 commits

  • Pull ACPI updates from Rafael Wysocki:
    "These rearrange the ACPI documentation by converting it to the .rst
    format and splitting it into clear categories (admin guide, driver
    API, firmware guide), switch over multiple users of a problematic
    library function to a new better one, update the ACPICA code in the
    kernel to a new upstream release, fix a few issues, improve power
    device management diagnostics and do some cleanups.

    Specifics:

    - Convert the ACPI documentation in the kernel source tree to the
    .rst format and split it into the admin guide, driver API and
    firmware guide parts (Changbin Du).

    - Add a PRP0001 usage example to the ACPI documentation (Thomas
    Preston).

    - Switch over the users of the acpi_dev_get_first_match_name()
    library function which turned out to be problematic to a new,
    better one called acpi_dev_get_first_match_dev() (Andy Shevchenko,
    YueHaibing).

    - Update the ACPICA code in the kernel to upstream release 20190405
    including:
    * Null pointer dereference check in acpi_ns_delete_node() (Erik
    Schmauss).
    * Multiple macro and function name changes (Bob Moore).
    * Predefined operation region name fix (Erik Schmauss).

    - Fix hibernation issue on systems using the Baytrail and Cherrytrail
    Intel SoCs introduced during the 4.20 development cycle (Hans de
    Goede).

    - Add Sony VPCEH3U1E to the backlight quirk list (Zhang Rui).

    - Fix button handling during system resume (Zhang Rui).

    - Add a device PM diagnostic message (Rafael Wysocki).

    - Clean up the code, comments and white space in multiple places
    (Bjorn Helgaas, Gustavo Silva, Kefeng Wang)"

    * tag 'acpi-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (53 commits)
    Documentation: ACPI: move video_extension.txt to firmware-guide/acpi and convert to reST
    Documentation: ACPI: move ssdt-overlays.txt to admin-guide/acpi and convert to reST
    Documentation: ACPI: move lpit.txt to firmware-guide/acpi and convert to reST
    Documentation: ACPI: move cppc_sysfs.txt to admin-guide/acpi and convert to reST
    Documentation: ACPI: move apei/einj.txt to firmware-guide/acpi and convert to reST
    Documentation: ACPI: move apei/output_format.txt to firmware-guide/acpi and convert to reST
    Documentation: ACPI: move aml-debugger.txt to firmware-guide/acpi and convert to reST
    Documentation: ACPI: move method-tracing.txt to firmware-guide/acpi and convert to rsST
    Documentation: ACPI: move debug.txt to firmware-guide/acpi and convert to reST
    Documentation: ACPI: move dsd/data-node-references.txt to firmware-guide/acpi and convert to reST
    Documentation: ACPI: move dsd/graph.txt to firmware-guide/acpi and convert to reST
    Documentation: ACPI: move acpi-lid.txt to firmware-guide/acpi and convert to reST
    Documentation: ACPI: move i2c-muxes.txt to firmware-guide/acpi and convert to reST
    Documentation: ACPI: move dsdt-override.txt to admin-guide/acpi and convert to reST
    Documentation: ACPI: move initrd_table_override.txt to admin-guide/acpi and convert to reST
    Documentation: ACPI: move method-customizing.txt to firmware-guide/acpi and convert to reST
    Documentation: ACPI: move gpio-properties.txt to firmware-guide/acpi and convert to reST
    Documentation: ACPI: move DSD-properties-rules.txt to firmware-guide/acpi and covert to reST
    Documentation: ACPI: move scan_handlers.txt to driver-api/acpi and convert to reST
    Documentation: ACPI: move linuxized-acpica.txt to driver-api/acpi and convert to reST
    ...

    Linus Torvalds
     
  • Pull arm64 updates from Will Deacon:
    "Mostly just incremental improvements here:

    - Introduce AT_HWCAP2 for advertising CPU features to userspace

    - Expose SVE2 availability to userspace

    - Support for "data cache clean to point of deep persistence" (DC PODP)

    - Honour "mitigations=off" on the cmdline and advertise status via
    sysfs

    - CPU timer erratum workaround (Neoverse-N1 #1188873)

    - Introduce perf PMU driver for the SMMUv3 performance counters

    - Add config option to disable the kuser helpers page for AArch32 tasks

    - Futex modifications to ensure liveness under contention

    - Rework debug exception handling to seperate kernel and user
    handlers

    - Non-critical fixes and cleanup"

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (92 commits)
    Documentation: Add ARM64 to kernel-parameters.rst
    arm64/speculation: Support 'mitigations=' cmdline option
    arm64: ssbs: Don't treat CPUs with SSBS as unaffected by SSB
    arm64: enable generic CPU vulnerabilites support
    arm64: add sysfs vulnerability show for speculative store bypass
    arm64: Fix size of __early_cpu_boot_status
    clocksource/arm_arch_timer: Use arch_timer_read_counter to access stable counters
    clocksource/arm_arch_timer: Remove use of workaround static key
    clocksource/arm_arch_timer: Drop use of static key in arch_timer_reg_read_stable
    clocksource/arm_arch_timer: Direcly assign set_next_event workaround
    arm64: Use arch_timer_read_counter instead of arch_counter_get_cntvct
    watchdog/sbsa: Use arch_timer_read_counter instead of arch_counter_get_cntvct
    ARM: vdso: Remove dependency with the arch_timer driver internals
    arm64: Apply ARM64_ERRATUM_1188873 to Neoverse-N1
    arm64: Add part number for Neoverse N1
    arm64: Make ARM64_ERRATUM_1188873 depend on COMPAT
    arm64: Restrict ARM64_ERRATUM_1188873 mitigation to AArch32
    arm64: mm: Remove pte_unmap_nested()
    arm64: Fix compiler warning from pte_unmap() with -Wunused-but-set-variable
    arm64: compat: Reduce address limit for 64K pages
    ...

    Linus Torvalds
     
  • Pull mmiowb removal from Will Deacon:
    "Remove Mysterious Macro Intended to Obscure Weird Behaviours (mmiowb())

    Remove mmiowb() from the kernel memory barrier API and instead, for
    architectures that need it, hide the barrier inside spin_unlock() when
    MMIO has been performed inside the critical section.

    The only relatively recent changes have been addressing review
    comments on the documentation, which is in a much better shape thanks
    to the efforts of Ben and Ingo.

    I was initially planning to split this into two pull requests so that
    you could run the coccinelle script yourself, however it's been plain
    sailing in linux-next so I've just included the whole lot here to keep
    things simple"

    * tag 'arm64-mmiowb' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (23 commits)
    docs/memory-barriers.txt: Update I/O section to be clearer about CPU vs thread
    docs/memory-barriers.txt: Fix style, spacing and grammar in I/O section
    arch: Remove dummy mmiowb() definitions from arch code
    net/ethernet/silan/sc92031: Remove stale comment about mmiowb()
    i40iw: Redefine i40iw_mmiowb() to do nothing
    scsi/qla1280: Remove stale comment about mmiowb()
    drivers: Remove explicit invocations of mmiowb()
    drivers: Remove useless trailing comments from mmiowb() invocations
    Documentation: Kill all references to mmiowb()
    riscv/mmiowb: Hook up mmwiob() implementation to asm-generic code
    powerpc/mmiowb: Hook up mmwiob() implementation to asm-generic code
    ia64/mmiowb: Add unconditional mmiowb() to arch_spin_unlock()
    mips/mmiowb: Add unconditional mmiowb() to arch_spin_unlock()
    sh/mmiowb: Add unconditional mmiowb() to arch_spin_unlock()
    m68k/io: Remove useless definition of mmiowb()
    nds32/io: Remove useless definition of mmiowb()
    x86/io: Remove useless definition of mmiowb()
    arm64/io: Remove useless definition of mmiowb()
    ARM/io: Remove useless definition of mmiowb()
    mmiowb: Hook up mmiowb helpers to spinlocks and generic I/O accessors
    ...

    Linus Torvalds
     
  • Pull s390 updates from Martin Schwidefsky:

    - Support for kernel address space layout randomization

    - Add support for kernel image signature verification

    - Convert s390 to the generic get_user_pages_fast code

    - Convert s390 to the stack unwind API analog to x86

    - Add support for CPU directed interrupts for PCI devices

    - Provide support for MIO instructions to the PCI base layer, this will
    allow the use of direct PCI mappings in user space code

    - Add the basic KVM guest ultravisor interface for protected VMs

    - Add AT_HWCAP bits for several new hardware capabilities

    - Update the CPU measurement facility counter definitions to SVN 6

    - Arnds cleanup patches for his quest to get LLVM compiles working

    - A vfio-ccw update with bug fixes and support for halt and clear

    - Improvements for the hardware TRNG code

    - Another round of cleanup for the QDIO layer

    - Numerous cleanups and bug fixes

    * tag 's390-5.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (98 commits)
    s390/vdso: drop unnecessary cc-ldoption
    s390: fix clang -Wpointer-sign warnigns in boot code
    s390: drop CONFIG_VIRT_TO_BUS
    s390: boot, purgatory: pass $(CLANG_FLAGS) where needed
    s390: only build for new CPUs with clang
    s390: simplify disabled_wait
    s390/ftrace: use HAVE_FUNCTION_GRAPH_RET_ADDR_PTR
    s390/unwind: introduce stack unwind API
    s390/opcodes: add missing instructions to the disassembler
    s390/bug: add entry size to the __bug_table section
    s390: use proper expoline sections for .dma code
    s390/nospec: rename assembler generated expoline thunks
    s390: add missing ENDPROC statements to assembler functions
    locking/lockdep: check for freed initmem in static_obj()
    s390/kernel: add support for kernel address space layout randomization (KASLR)
    s390/kernel: introduce .dma sections
    s390/sclp: do not use static sccbs
    s390/kprobes: use static buffer for insn_page
    s390/kernel: convert SYSCALL and PGM_CHECK handlers to .quad
    s390/kernel: build a relocatable kernel
    ...

    Linus Torvalds
     
  • Pull m68k updates from Geert Uytterhoeven:

    - drop arch_gettimeoffset and adopt clocksource API

    - defconfig updates

    * tag 'm68k-for-v5.2-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
    Documentation/features/time: Mark m68k having modern-timekeeping
    m68k: defconfig: Update defconfigs for v5.1-rc1
    m68k: mvme16x: Handle timer counter overflow
    m68k: mvme16x: Convert to clocksource API
    m68k: mvme147: Handle timer counter overflow
    m68k: mvme147: Convert to clocksource API
    m68k: mac: Convert to clocksource API
    m68k: hp300: Handle timer counter overflow
    m68k: hp300: Convert to clocksource API
    m68k: bvme6000: Convert to clocksource API
    m68k: atari: Convert to clocksource API
    m68k: amiga: Convert to clocksource API
    m68k: Drop ARCH_USES_GETTIMEOFFSET
    m68k: apollo, q40, sun3, sun3x: Remove arch_gettimeoffset implementations
    m68k: mac: Fix VIA timer counter accesses
    m68k: Call timer_interrupt() with interrupts disabled

    Linus Torvalds
     
  • Pull x86 microcode loading update from Borislav Petkov:
    "A nice Intel microcode blob loading cleanup which gets rid of the ugly
    memcpy wrappers and switches the driver to use the iov_iter API. By
    Jann Horn.

    In addition, the /dev/cpu/microcode interface is finally deprecated as
    it is inadequate for the same reasons the late microcode loading is"

    * 'x86-microcode-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/microcode: Deprecate MICROCODE_OLD_INTERFACE
    x86/microcode: Fix the ancient deprecated microcode loading method
    x86/microcode/intel: Refactor Intel microcode blob loading

    Linus Torvalds
     
  • Pull x86 topology updates from Ingo Molnar:
    "Two main changes: preparatory changes for Intel multi-die topology
    support, plus a syslog message tweak"

    * 'x86-topology-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/topology: Make DEBUG_HOTPLUG_CPU0 pr_info() more descriptive
    x86/smpboot: Rename match_die() to match_pkg()
    topology: Simplify cputopology.txt formatting and wording
    x86/topology: Fix documentation typo

    Linus Torvalds
     
  • Pull x86 timer updates from Ingo Molnar:
    "Two changes: an LTO improvement, plus the new 'nowatchdog' boot option
    to disable the clocksource watchdog"

    * 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/timer: Don't inline __const_udelay()
    x86/tsc: Add option to disable tsc clocksource watchdog

    Linus Torvalds
     
  • Pull x86 platform updates from Ingo Molnar:
    "Smaller update for Hyper-V to support EOI assist, plus LTO fixes"

    * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/kvm: Make steal_time visible
    x86/hyperv: Make hv_vcpu_is_preempted() visible
    x86/hyper-v: Implement EOI assist

    Linus Torvalds
     
  • Pull x86 mm updates from Ingo Molnar:
    "The changes in here are:

    - text_poke() fixes and an extensive set of executability lockdowns,
    to (hopefully) eliminate the last residual circumstances under
    which we are using W|X mappings even temporarily on x86 kernels.
    This required a broad range of surgery in text patching facilities,
    module loading, trampoline handling and other bits.

    - tweak page fault messages to be more informative and more
    structured.

    - remove DISCONTIGMEM support on x86-32 and make SPARSEMEM the
    default.

    - reduce KASLR granularity on 5-level paging kernels from 512 GB to
    1 GB.

    - misc other changes and updates"

    * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (36 commits)
    x86/mm: Initialize PGD cache during mm initialization
    x86/alternatives: Add comment about module removal races
    x86/kprobes: Use vmalloc special flag
    x86/ftrace: Use vmalloc special flag
    bpf: Use vmalloc special flag
    modules: Use vmalloc special flag
    mm/vmalloc: Add flag for freeing of special permsissions
    mm/hibernation: Make hibernation handle unmapped pages
    x86/mm/cpa: Add set_direct_map_*() functions
    x86/alternatives: Remove the return value of text_poke_*()
    x86/jump-label: Remove support for custom text poker
    x86/modules: Avoid breaking W^X while loading modules
    x86/kprobes: Set instruction page as executable
    x86/ftrace: Set trampoline pages as executable
    x86/kgdb: Avoid redundant comparison of patched code
    x86/alternatives: Use temporary mm for text poking
    x86/alternatives: Initialize temporary mm for patching
    fork: Provide a function for copying init_mm
    uprobes: Initialize uprobes earlier
    x86/mm: Save debug registers when loading a temporary mm
    ...

    Linus Torvalds
     
  • Pull x86 kdump update from Ingo Molnar:
    "This includes two changes:

    - Raise the crash kernel reservation limit from from ~896MB to ~4GB.

    Only very old (and already known-broken) kexec-tools is supposed to
    be affected by this negatively.

    - Allow higher than 4GB crash kernel allocations when low allocations
    fail"

    * 'x86-kdump-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/kdump: Fall back to reserve high crashkernel memory
    x86/kdump: Have crashkernel=X reserve under 4G by default

    Linus Torvalds
     
  • Pull x86 irq updates from Ingo Molnar:
    "Here are the main changes in this tree:

    - Introduce x86-64 IRQ/exception/debug stack guard pages to detect
    stack overflows immediately and deterministically.

    - Clean up over a decade worth of cruft accumulated.

    The outcome of this should be more clear-cut faults/crashes when any
    of the low level x86 CPU stacks overflow, instead of silent memory
    corruption and sporadic failures much later on"

    * 'x86-irq-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (33 commits)
    x86/irq: Fix outdated comments
    x86/irq/64: Remove stack overflow debug code
    x86/irq/64: Remap the IRQ stack with guard pages
    x86/irq/64: Split the IRQ stack into its own pages
    x86/irq/64: Init hardirq_stack_ptr during CPU hotplug
    x86/irq/32: Handle irq stack allocation failure proper
    x86/irq/32: Invoke irq_ctx_init() from init_IRQ()
    x86/irq/64: Rename irq_stack_ptr to hardirq_stack_ptr
    x86/irq/32: Rename hard/softirq_stack to hard/softirq_stack_ptr
    x86/irq/32: Make irq stack a character array
    x86/irq/32: Define IRQ_STACK_SIZE
    x86/dumpstack/64: Speedup in_exception_stack()
    x86/exceptions: Split debug IST stack
    x86/exceptions: Enable IST guard pages
    x86/exceptions: Disconnect IST index and stack order
    x86/cpu: Remove orig_ist array
    x86/cpu: Prepare TSS.IST setup for guard pages
    x86/dumpstack/64: Use cpu_entry_area instead of orig_ist
    x86/irq/64: Use cpu entry area instead of orig_ist
    x86/traps: Use cpu_entry_area instead of orig_ist
    ...

    Linus Torvalds
     
  • Pull x86 entry cleanup from Ingo Molnar:
    "A single commit that removes a redundant complication from
    preempt-schedule handling in the x86 entry code"

    * 'x86-entry-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/entry: Remove unneeded need_resched() loop

    Linus Torvalds
     
  • Pull x86 cpu updates from Ingo Molnar:
    "Two changes: a Hygon CPU fix, and an optimization Centaur CPUs"

    * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/power: Optimize C3 entry on Centaur CPUs
    x86/CPU/hygon: Fix phys_proc_id calculation logic for multi-die processors

    Linus Torvalds
     
  • Pull x86 cleanups from Ingo Molnar:
    "A handful of cleanups: dma-ops cleanups, missing boot time kcalloc()
    check, a Sparse fix and use struct_size() to simplify a vzalloc()
    call"

    * 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/pci: Clean up usage of X86_DEV_DMA_OPS
    x86/Kconfig: Remove the unused X86_DMA_REMAP KConfig symbol
    x86/kexec/crash: Use struct_size() in vzalloc()
    x86/mm/tlb: Define LOADED_MM_SWITCHING with pointer-sized number
    x86/platform/uv: Fix missing checks of kcalloc() return values

    Linus Torvalds
     
  • Pull x86 cache QoS updates from Ingo Molnar:
    "An RDT cleanup and a fix for RDT initialization of new resource
    groups"

    * 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/resctrl: Initialize a new resource group with default MBA values
    x86/resctrl: Move per RDT domain initialization to a separate function

    Linus Torvalds
     
  • Pull x86 build updates from Ingo Molnar:
    "Misc updates:

    - Add link flag quirk to solve LLVM linker bug that removes local
    relocations, causing KASLR boot failures.

    - Update the defconfigs to remove archaic partition table support

    - Fix kernel growing pains: we had a bug in relocs.c handling section
    header table entries count larger than 0xff00 (~65k), which can
    happen with the -ffunction-sections flag, causing a build failure
    with a cryptic error message. Add support for detecting the limit
    and using the ELF protocol that extends the sections table via
    ->sh_size. The new limit is now much larger - over a billion
    entries?"

    * 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/tools/relocs: Fix big section header tables
    x86/defconfig: Remove archaic partition tables support
    x86/build: Keep local relocations with ld.lld

    Linus Torvalds
     
  • Pull x86 asm updates from Ingo Molnar:
    "This includes the following changes:

    - cpu_has() cleanups

    - sync_bitops.h modernization to the rmwcc.h facility, similarly to
    bitops.h

    - continued LTO annotations/fixes

    - misc cleanups and smaller cleanups"

    * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/um/vdso: Drop unnecessary cc-ldoption
    x86/vdso: Rename variable to fix -Wshadow warning
    x86/cpu/amd: Exclude 32bit only assembler from 64bit build
    x86/asm: Mark all top level asm statements as .text
    x86/build/vdso: Add FORCE to the build rule of %.so
    x86/asm: Modernize sync_bitops.h
    x86/mm: Convert some slow-path static_cpu_has() callers to boot_cpu_has()
    x86: Convert some slow-path static_cpu_has() callers to boot_cpu_has()
    x86/asm: Clarify static_cpu_has()'s intended use
    x86/uaccess: Fix implicit cast of __user pointer
    x86/cpufeature: Remove __pure attribute to _static_cpu_has()

    Linus Torvalds
     
  • Pull x86 apic update from Ingo Molnar:
    "A single commit which unifies the unnecessarily diverged
    implementations of APIC timer initialization. As a result the
    max_delta parameter is now consistently taken into account"

    * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/apic: Unify duplicated local apic timer clockevent initialization

    Linus Torvalds
     
  • Pull timer updates from Ingo Molnar:
    "This cycle had the following changes:

    - Timer tracing improvements (Anna-Maria Gleixner)

    - Continued tasklet reduction work: remove the hrtimer_tasklet
    (Thomas Gleixner)

    - Fix CPU hotplug remove race in the tick-broadcast mask handling
    code (Thomas Gleixner)

    - Force upper bound for setting CLOCK_REALTIME, to fix ABI
    inconsistencies with handling values that are close to the maximum
    supported and the vagueness of when uptime related wraparound might
    occur. Make the consistent maximum the year 2232 across all
    relevant ABIs and APIs. (Thomas Gleixner)

    - various cleanups and smaller fixes"

    * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    tick: Fix typos in comments
    tick/broadcast: Fix warning about undefined tick_broadcast_oneshot_offline()
    timekeeping: Force upper bound for setting CLOCK_REALTIME
    timer/trace: Improve timer tracing
    timer/trace: Replace deprecated vsprintf pointer extension %pf by %ps
    timer: Move trace point to get proper index
    tick/sched: Update tick_sched struct documentation
    tick: Remove outgoing CPU from broadcast masks
    timekeeping: Consistently use unsigned int for seqcount snapshot
    softirq: Remove tasklet_hrtimer
    xfrm: Replace hrtimer tasklet with softirq hrtimer
    mac80211_hwsim: Replace hrtimer tasklet with softirq hrtimer

    Linus Torvalds
     
  • Pull CPU hotplug updates from Ingo Molnar:
    "Two changes in this cycle:

    - Make the /sys/devices/system/cpu/smt/* files available on all
    arches, so user space has a consistent way to detect whether SMT is
    enabled.

    - Sparse annotation fix"

    * 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    smpboot: Place the __percpu annotation correctly
    cpu/hotplug: Create SMT sysfs interface for all arches

    Linus Torvalds
     
  • Pull scheduler updates from Ingo Molnar:
    "The main changes in this cycle were:

    - Make nohz housekeeping processing more permissive and less
    intrusive to isolated CPUs

    - Decouple CPU-bound workqueue acconting from the scheduler and move
    it into the workqueue code.

    - Optimize topology building

    - Better handle quota and period overflows

    - Add more RCU annotations

    - Comment updates, misc cleanups"

    * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (25 commits)
    nohz_full: Allow the boot CPU to be nohz_full
    sched/isolation: Require a present CPU in housekeeping mask
    kernel/cpu: Allow non-zero CPU to be primary for suspend / kexec freeze
    power/suspend: Add function to disable secondaries for suspend
    sched/core: Allow the remote scheduler tick to be started on CPU0
    sched/nohz: Run NOHZ idle load balancer on HK_FLAG_MISC CPUs
    sched/debug: Fix spelling mistake "logaritmic" -> "logarithmic"
    sched/topology: Update init_sched_domains() comment
    cgroup/cpuset: Update stale generate_sched_domains() comments
    sched/core: Check quota and period overflow at usec to nsec conversion
    sched/core: Handle overflow in cpu_shares_write_u64
    sched/rt: Check integer overflow at usec to nsec conversion
    sched/core: Fix typo in comment
    sched/core: Make some functions static
    sched/core: Unify p->on_rq updates
    sched/core: Remove ttwu_activate()
    sched/core, workqueues: Distangle worker accounting from rq lock
    sched/fair: Remove unneeded prototype of capacity_of()
    sched/topology: Skip duplicate group rewrites in build_sched_groups()
    sched/topology: Fix build_sched_groups() comment
    ...

    Linus Torvalds
     
  • Pull perf updates from Ingo Molnar:
    "The main kernel changes were:

    - add support for Intel's "adaptive PEBS v4" - which embedds LBS data
    in PEBS records and can thus batch up and reduce the IRQ (NMI) rate
    significantly - reducing overhead and making call-graph profiling
    less intrusive.

    - add Intel CPU core and uncore support updates for Tremont, Icelake,

    - extend the x86 PMU constraints scheduler with 'constraint ranges'
    to better support Icelake hw constraints,

    - make x86 call-chain support work better with CONFIG_FRAME_POINTER=y

    - misc other changes

    Tooling changes:

    - updates to the main tools: 'perf record', 'perf trace', 'perf
    stat'

    - updated Intel and S/390 vendor events

    - libtraceevent updates

    - misc other updates and fixes"

    * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (69 commits)
    perf/x86: Make perf callchains work without CONFIG_FRAME_POINTER
    watchdog: Fix typo in comment
    perf/x86/intel: Add Tremont core PMU support
    perf/x86/intel/uncore: Add Intel Icelake uncore support
    perf/x86/msr: Add Icelake support
    perf/x86/intel/rapl: Add Icelake support
    perf/x86/intel/cstate: Add Icelake support
    perf/x86/intel: Add Icelake support
    perf/x86: Support constraint ranges
    perf/x86/lbr: Avoid reading the LBRs when adaptive PEBS handles them
    perf/x86/intel: Support adaptive PEBS v4
    perf/x86/intel/ds: Extract code of event update in short period
    perf/x86/intel: Extract memory code PEBS parser for reuse
    perf/x86: Support outputting XMM registers
    perf/x86/intel: Force resched when TFA sysctl is modified
    perf/core: Add perf_pmu_resched() as global function
    perf/headers: Fix stale comment for struct perf_addr_filter
    perf/core: Make perf_swevent_init_cpu() static
    perf/x86: Add sanity checks to x86_schedule_events()
    perf/x86: Optimize x86_schedule_events()
    ...

    Linus Torvalds
     
  • Pull locking updates from Ingo Molnar:
    "Here are the locking changes in this cycle:

    - rwsem unification and simpler micro-optimizations to prepare for
    more intrusive (and more lucrative) scalability improvements in
    v5.3 (Waiman Long)

    - Lockdep irq state tracking flag usage cleanups (Frederic
    Weisbecker)

    - static key improvements (Jakub Kicinski, Peter Zijlstra)

    - misc updates, cleanups and smaller fixes"

    * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (26 commits)
    locking/lockdep: Remove unnecessary unlikely()
    locking/static_key: Don't take sleeping locks in __static_key_slow_dec_deferred()
    locking/static_key: Factor out the fast path of static_key_slow_dec()
    locking/static_key: Add support for deferred static branches
    locking/lockdep: Test all incompatible scenarios at once in check_irq_usage()
    locking/lockdep: Avoid bogus Clang warning
    locking/lockdep: Generate LOCKF_ bit composites
    locking/lockdep: Use expanded masks on find_usage_*() functions
    locking/lockdep: Map remaining magic numbers to lock usage mask names
    locking/lockdep: Move valid_state() inside CONFIG_TRACE_IRQFLAGS && CONFIG_PROVE_LOCKING
    locking/rwsem: Prevent unneeded warning during locking selftest
    locking/rwsem: Optimize rwsem structure for uncontended lock acquisition
    locking/rwsem: Enable lock event counting
    locking/lock_events: Don't show pvqspinlock events on bare metal
    locking/lock_events: Make lock_events available for all archs & other locks
    locking/qspinlock_stat: Introduce generic lockevent_*() counting APIs
    locking/rwsem: Enhance DEBUG_RWSEMS_WARN_ON() macro
    locking/rwsem: Add debug check for __down_read*()
    locking/rwsem: Micro-optimize rwsem_try_read_lock_unqueued()
    locking/rwsem: Move rwsem internal function declarations to rwsem-xadd.h
    ...

    Linus Torvalds
     
  • Pull irq updates from Ingo Molnar:
    "The changes in this cycle were:

    - Remove the irq timings/variance statistics code that tried to
    predict when the next interrupt would occur, which didn't work out
    as hoped and is replaced by another mechanism.

    - This new mechanism is the 'array suffix computation' estimate,
    which is superior to the previous one as it can detect not just a
    single periodic pattern, but independent periodic patterns along a
    log-2 scale of bucketing and exponential moving average. The
    comments are longer than the code - and it works better at
    predicting various complex interrupt patterns from real-world
    devices than the previous estimate.

    - avoid IRQ-work self-IPIs on the local CPU

    - fix work-list corruption in irq_set_affinity_notifier()"

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    irq_work: Do not raise an IPI when queueing work on the local CPU
    genirq/devres: Use struct_size() in devm_kzalloc()
    genirq/timings: Add array suffix computation code
    genirq/timings: Remove variance computation code
    genirq: Prevent use-after-free and work list corruption

    Linus Torvalds
     
  • Pull EFI updates from Ingo Molnar:
    "The changes in this cycle were:

    - Squash a spurious warning when using the EFI framebuffer on a
    non-EFI boot

    - Use DMI data to annotate RAS memory errors on ARM just like we do
    on Intel

    - Followup cleanups for DMI

    - libstub Makefile cleanups"

    * 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    efi/libstub/arm: Omit unneeded stripping of ksymtab/kcrctab sections
    efi: Unify DMI setup code over the arm/arm64, ia64 and x86 architectures
    efi/arm: Show SMBIOS bank/device location in CPER and GHES error logs
    efifb: Omit memory map check on legacy boot
    efi/libstub: Refactor the cmd_stubcopy Makefile command

    Linus Torvalds
     
  • Pull stack trace updates from Ingo Molnar:
    "So Thomas looked at the stacktrace code recently and noticed a few
    weirdnesses, and we all know how such stories of crummy kernel code
    meeting German engineering perfection end: a 45-patch series to clean
    it all up! :-)

    Here's the changes in Thomas's words:

    'Struct stack_trace is a sinkhole for input and output parameters
    which is largely pointless for most usage sites. In fact if embedded
    into other data structures it creates indirections and extra storage
    overhead for no benefit.

    Looking at all usage sites makes it clear that they just require an
    interface which is based on a storage array. That array is either on
    stack, global or embedded into some other data structure.

    Some of the stack depot usage sites are outright wrong, but
    fortunately the wrongness just causes more stack being used for
    nothing and does not have functional impact.

    Another oddity is the inconsistent termination of the stack trace
    with ULONG_MAX. It's pointless as the number of entries is what
    determines the length of the stored trace. In fact quite some call
    sites remove the ULONG_MAX marker afterwards with or without nasty
    comments about it. Not all architectures do that and those which do,
    do it inconsistenly either conditional on nr_entries == 0 or
    unconditionally.

    The following series cleans that up by:

    1) Removing the ULONG_MAX termination in the architecture code

    2) Removing the ULONG_MAX fixups at the call sites

    3) Providing plain storage array based interfaces for stacktrace
    and stackdepot.

    4) Cleaning up the mess at the callsites including some related
    cleanups.

    5) Removing the struct stack_trace based interfaces

    This is not changing the struct stack_trace interfaces at the
    architecture level, but it removes the exposure to the generic
    code'"

    * 'core-stacktrace-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (45 commits)
    x86/stacktrace: Use common infrastructure
    stacktrace: Provide common infrastructure
    lib/stackdepot: Remove obsolete functions
    stacktrace: Remove obsolete functions
    livepatch: Simplify stack trace retrieval
    tracing: Remove the last struct stack_trace usage
    tracing: Simplify stack trace retrieval
    tracing: Make ftrace_trace_userstack() static and conditional
    tracing: Use percpu stack trace buffer more intelligently
    tracing: Simplify stacktrace retrieval in histograms
    lockdep: Simplify stack trace handling
    lockdep: Remove save argument from check_prev_add()
    lockdep: Remove unused trace argument from print_circular_bug()
    drm: Simplify stacktrace handling
    dm persistent data: Simplify stack trace handling
    dm bufio: Simplify stack trace retrieval
    btrfs: ref-verify: Simplify stack trace retrieval
    dma/debug: Simplify stracktrace retrieval
    fault-inject: Simplify stacktrace retrieval
    mm/page_owner: Simplify stack trace handling
    ...

    Linus Torvalds
     
  • Pull speculation mitigation update from Ingo Molnar:
    "This adds the "mitigations=" bootline option, which offers a
    cross-arch set of options that will work on x86, PowerPC and s390 that
    will map to the arch specific option internally"

    * 'core-speculation-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    s390/speculation: Support 'mitigations=' cmdline option
    powerpc/speculation: Support 'mitigations=' cmdline option
    x86/speculation: Support 'mitigations=' cmdline option
    cpu/speculation: Add 'mitigations=' cmdline option

    Linus Torvalds
     
  • Pull rseq updates from Ingo Molnar:
    "A cleanup and a fix to comments"

    * 'core-rseq-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    rseq: Remove superfluous rseq_len from task_struct
    rseq: Clean up comments by reflecting removal of event counter

    Linus Torvalds
     
  • Pull RCU updates from Ingo Molnar:
    "This cycles's RCU changes include:

    - a couple of straggling RCU flavor consolidation updates

    - SRCU updates

    - RCU CPU stall-warning updates

    - torture-test updates

    - an LKMM commit adding support for synchronize_srcu_expedited()

    - documentation updates

    - miscellaneous fixes"

    * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (57 commits)
    net/ipv4/netfilter: Update comment from call_rcu_bh() to call_rcu()
    tools/memory-model: Add support for synchronize_srcu_expedited()
    doc/kprobes: Update obsolete RCU update functions
    torture: Suppress false-positive CONFIG_INITRAMFS_SOURCE complaint
    locktorture: NULL cxt.lwsa and cxt.lrsa to allow bad-arg detection
    rcuperf: Fix cleanup path for invalid perf_type strings
    rcutorture: Fix cleanup path for invalid torture_type strings
    rcutorture: Fix expected forward progress duration in OOM notifier
    rcutorture: Remove ->ext_irq_conflict field
    rcutorture: Make rcutorture_extend_mask() comment match the code
    tools/.../rcutorture: Convert to SPDX license identifier
    torture: Don't try to offline the last CPU
    rcu: Fix nohz status in stall warning
    rcu: Move forward-progress checkers into tree_stall.h
    rcu: Move irq-disabled stall-warning checking to tree_stall.h
    rcu: Organize functions in tree_stall.h
    rcu: Move FAST_NO_HZ stall-warning code to tree_stall.h
    rcu: Inline RCU stall-warning info helper functions
    rcu: Move rcu_print_task_exp_stall() to tree_exp.h
    rcu: Inline RCU task stall-warning helper functions
    ...

    Linus Torvalds
     
  • Pull objtool updates from Ingo Molnar:
    "This is a series from Peter Zijlstra that adds x86 build-time uaccess
    validation of SMAP to objtool, which will detect and warn about the
    following uaccess API usage bugs and weirdnesses:

    - call to %s() with UACCESS enabled
    - return with UACCESS enabled
    - return with UACCESS disabled from a UACCESS-safe function
    - recursive UACCESS enable
    - redundant UACCESS disable
    - UACCESS-safe disables UACCESS

    As it turns out not leaking uaccess permissions outside the intended
    uaccess functionality is hard when the interfaces are complex and when
    such bugs are mostly dormant.

    As a bonus we now also check the DF flag. We had at least one
    high-profile bug in that area in the early days of Linux, and the
    checking is fairly simple. The checks performed and warnings emitted
    are:

    - call to %s() with DF set
    - return with DF set
    - return with modified stack frame
    - recursive STD
    - redundant CLD

    It's all x86-only for now, but later on this can also be used for PAN
    on ARM and objtool is fairly cross-platform in principle.

    While all warnings emitted by this new checking facility that got
    reported to us were fixed, there might be GCC version dependent
    warnings that were not reported yet - which we'll address, should they
    trigger.

    The warnings are non-fatal build warnings"

    * 'core-objtool-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (27 commits)
    mm/uaccess: Use 'unsigned long' to placate UBSAN warnings on older GCC versions
    x86/uaccess: Dont leak the AC flag into __put_user() argument evaluation
    sched/x86_64: Don't save flags on context switch
    objtool: Add Direction Flag validation
    objtool: Add UACCESS validation
    objtool: Fix sibling call detection
    objtool: Rewrite alt->skip_orig
    objtool: Add --backtrace support
    objtool: Rewrite add_ignores()
    objtool: Handle function aliases
    objtool: Set insn->func for alternatives
    x86/uaccess, kcov: Disable stack protector
    x86/uaccess, ftrace: Fix ftrace_likely_update() vs. SMAP
    x86/uaccess, ubsan: Fix UBSAN vs. SMAP
    x86/uaccess, kasan: Fix KASAN vs SMAP
    x86/smap: Ditch __stringify()
    x86/uaccess: Introduce user_access_{save,restore}()
    x86/uaccess, signal: Fix AC=1 bloat
    x86/uaccess: Always inline user_access_begin()
    x86/uaccess, xen: Suppress SMAP warnings
    ...

    Linus Torvalds
     
  • Pull unified TLB flushing from Ingo Molnar:
    "This contains the generic mmu_gather feature from Peter Zijlstra,
    which is an all-arch unification of TLB flushing APIs, via the
    following (broad) steps:

    - enhance the APIs to cover more arch details

    - convert most TLB flushing arch implementations to the generic
    APIs.

    - remove leftovers of per arch implementations

    After this series every single architecture makes use of the unified
    TLB flushing APIs"

    * 'core-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    mm/resource: Use resource_overlaps() to simplify region_intersects()
    ia64/tlb: Eradicate tlb_migrate_finish() callback
    asm-generic/tlb: Remove tlb_table_flush()
    asm-generic/tlb: Remove tlb_flush_mmu_free()
    asm-generic/tlb: Remove CONFIG_HAVE_GENERIC_MMU_GATHER
    asm-generic/tlb: Remove arch_tlb*_mmu()
    s390/tlb: Convert to generic mmu_gather
    asm-generic/tlb: Introduce CONFIG_HAVE_MMU_GATHER_NO_GATHER=y
    arch/tlb: Clean up simple architectures
    um/tlb: Convert to generic mmu_gather
    sh/tlb: Convert SH to generic mmu_gather
    ia64/tlb: Convert to generic mmu_gather
    arm/tlb: Convert to generic mmu_gather
    asm-generic/tlb, arch: Invert CONFIG_HAVE_RCU_TABLE_INVALIDATE
    asm-generic/tlb, ia64: Conditionally provide tlb_migrate_finish()
    asm-generic/tlb: Provide generic tlb_flush() based on flush_tlb_mm()
    asm-generic/tlb, arch: Provide generic tlb_flush() based on flush_tlb_range()
    asm-generic/tlb, arch: Provide generic VIPT cache flush
    asm-generic/tlb, arch: Provide CONFIG_HAVE_MMU_GATHER_PAGE_SIZE
    asm-generic/tlb: Provide a comment

    Linus Torvalds
     
  • Make the forward declaration actually match the real function
    definition, something that previous versions of gcc had just ignored.

    This is another patch to fix new warnings from gcc-9 before I start the
    merge window pulls. I don't want to miss legitimate new warnings just
    because my system update brought a new compiler with new warnings.

    Signed-off-by: Linus Torvalds

    Linus Torvalds