30 Jun, 2020

4 commits

  • This adds an example for the important RCU grace period guarantee, which
    shows an RCU reader can never span a grace period.

    Acked-by: Andrea Parri
    Signed-off-by: Joel Fernandes (Google)
    Signed-off-by: Paul E. McKenney

    Joel Fernandes (Google)
     
  • This adds an example for the important RCU grace period guarantee, which
    shows an RCU reader can never span a grace period.

    Acked-by: Andrea Parri
    Signed-off-by: Joel Fernandes (Google)
    Signed-off-by: Paul E. McKenney

    Joel Fernandes (Google)
     
  • The definition of "conflict" should not include the type of access nor
    whether the accesses are concurrent or not, which this patch addresses.
    The definition of "data race" remains unchanged.

    The definition of "conflict" as we know it and is cited by various
    papers on memory consistency models appeared in [1]: "Two accesses to
    the same variable conflict if at least one is a write; two operations
    conflict if they execute conflicting accesses."

    The LKMM as well as the C11 memory model are adaptations of
    data-race-free, which are based on the work in [2]. Necessarily, we need
    both conflicting data operations (plain) and synchronization operations
    (marked). For example, C11's definition is based on [3], which defines a
    "data race" as: "Two memory operations conflict if they access the same
    memory location, and at least one of them is a store, atomic store, or
    atomic read-modify-write operation. In a sequentially consistent
    execution, two memory operations from different threads form a type 1
    data race if they conflict, at least one of them is a data operation,
    and they are adjacent in
    Co-developed-by: Alan Stern
    Signed-off-by: Alan Stern
    Acked-by: Andrea Parri
    Signed-off-by: Paul E. McKenney

    Marco Elver
     
  • This commit updates the list of LKMM-related publications in
    Documentation/references.txt.

    Signed-off-by: Paul E. McKenney
    Acked-by: Andrea Parri

    Paul E. McKenney
     

29 Jun, 2020

11 commits

  • Linus Torvalds
     
  • Pull ARM OMAP fixes from Arnd Bergmann:
    "The OMAP developers are particularly active at hunting down
    regressions, so this is a separate branch with OMAP specific
    fixes for v5.8:

    As Tony explains
    "The recent display subsystem (DSS) related platform data changes
    caused display related regressions for suspend and resume. Looks
    like I only tested suspend and resume before dropping the legacy
    platform data, and forgot to test it after dropping it. Turns out
    the main issue was that we no longer have platform code calling
    pm_runtime_suspend for DSS like we did for the legacy platform data
    case, and that fix is still being discussed on the dri-devel list
    and will get merged separately. The DSS related testing exposed a
    pile other other display related issues that also need fixing
    though":

    - Fix ti-sysc optional clock handling and reset status checks for
    devices that reset automatically in idle like DSS

    - Ignore ti-sysc clockactivity bit unless separately requested to
    avoid unexpected performance issues

    - Init ti-sysc framedonetv_irq to true and disable for am4

    - Avoid duplicate DSS reset for legacy mode with dts data

    - Remove LCD timings for am4 as they cause warnings now that we're
    using generic panels

    Other OMAP changes from Tony include:

    - Fix omap_prm reset deassert as we still have drivers setting the
    pm_runtime_irq_safe() flag

    - Flush posted write for ti-sysc enable and disable

    - Fix droid4 spi related errors with spi flags

    - Fix am335x USB range and a typo for softreset

    - Fix dra7 timer nodes for clocks for IPU and DSP

    - Drop duplicate mailboxes after mismerge for dra7

    - Prevent pocketgeagle header line signal from accidentally setting
    micro-SD write protection signal by removing the default mux

    - Fix NFSroot flakeyness after resume for duover by switching the
    smsc911x gpio interrupt to back to level sensitive

    - Fix regression for omap4 clockevent source after recent system
    timer changes

    - Yet another ethernet regression fix for the "rgmii" vs "rgmii-rxid"
    phy-mode

    - One patch to convert am3/am4 DT files to use the regular sdhci-omap
    driver instead of the old hsmmc driver, this was meant for the
    merge window but got lost in the process"

    * tag 'arm-omap-fixes-5.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (21 commits)
    ARM: dts: am5729: beaglebone-ai: fix rgmii phy-mode
    ARM: dts: Fix omap4 system timer source clocks
    ARM: dts: Fix duovero smsc interrupt for suspend
    ARM: dts: am335x-pocketbeagle: Fix mmc0 Write Protect
    Revert "bus: ti-sysc: Increase max softreset wait"
    ARM: dts: am437x-epos-evm: remove lcd timings
    ARM: dts: am437x-gp-evm: remove lcd timings
    ARM: dts: am437x-sk-evm: remove lcd timings
    ARM: dts: dra7-evm-common: Fix duplicate mailbox nodes
    ARM: dts: dra7: Fix timer nodes properly for timer_sys_ck clocks
    ARM: dts: Fix am33xx.dtsi ti,sysc-mask wrong softreset flag
    ARM: dts: Fix am33xx.dtsi USB ranges length
    bus: ti-sysc: Increase max softreset wait
    ARM: OMAP2+: Fix legacy mode dss_reset
    bus: ti-sysc: Fix uninitialized framedonetv_irq
    bus: ti-sysc: Ignore clockactivity unless specified as a quirk
    bus: ti-sysc: Use optional clocks on for enable and wait for softreset bit
    ARM: dts: omap4-droid4: Fix spi configuration and increase rate
    bus: ti-sysc: Flush posted write on enable and disable
    soc: ti: omap-prm: use atomic iopoll instead of sleeping one
    ...

    Linus Torvalds
     
  • Pull ARM SoC fixes from Arnd Bergmann:
    "Here are a couple of bug fixes, mostly for devicetree files

    NXP i.MX:
    - Use correct voltage on some i.MX8M board device trees to avoid
    hardware damage
    - Code fixes for a compiler warning and incorrect reference counting,
    both harmless.
    - Fix the i.MX8M SoC driver to correctly identify imx8mp
    - Fix watchdog configuration in imx6ul-kontron device tree.

    Broadcom:
    - A small regression fix for the Raspberry-Pi firmware driver
    - A Kconfig change to use the correct timer driver on Northstar
    - A DT fix for the Luxul XWC-2000 machine
    - Two more DT fixes for NSP SoCs

    STmicroelectronics STI
    - Revert one broken patch for L2 cache configuration

    ARM Versatile Express:
    - Fix a regression by reverting a broken DT cleanup

    TEE drivers:
    - MAINTAINERS: change tee mailing list"

    * tag 'arm-fixes-5.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
    Revert "ARM: sti: Implement dummy L2 cache's write_sec"
    soc: imx8m: fix build warning
    ARM: imx6: add missing put_device() call in imx6q_suspend_init()
    ARM: imx5: add missing put_device() call in imx_suspend_alloc_ocram()
    soc: imx8m: Correct i.MX8MP UID fuse offset
    ARM: dts: imx6ul-kontron: Change WDOG_ANY signal from push-pull to open-drain
    ARM: dts: imx6ul-kontron: Move watchdog from Kontron i.MX6UL/ULL board to SoM
    arm64: dts: imx8mm-beacon: Fix voltages on LDO1 and LDO2
    arm64: dts: imx8mn-ddr4-evk: correct ldo1/ldo2 voltage range
    arm64: dts: imx8mm-evk: correct ldo1/ldo2 voltage range
    ARM: dts: NSP: Correct FA2 mailbox node
    ARM: bcm2835: Fix integer overflow in rpi_firmware_print_firmware_revision()
    MAINTAINERS: change tee mailing list
    ARM: dts: NSP: Disable PL330 by default, add dma-coherent property
    ARM: bcm: Select ARM_TIMER_SP804 for ARCH_BCM_NSP
    ARM: dts: BCM5301X: Add missing memory "device_type" for Luxul XWC-2000
    arm: dts: vexpress: Move mcc node back into motherboard node

    Linus Torvalds
     
  • Pull timer fix from Ingo Molnar:
    "A single DocBook fix"

    * tag 'timers-urgent-2020-06-28' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    timekeeping: Fix kerneldoc system_device_crosststamp & al

    Linus Torvalds
     
  • Pull perf fix from Ingo Molnar:
    "A single Kbuild dependency fix"

    * tag 'perf-urgent-2020-06-28' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf/x86/rapl: Fix RAPL config variable bug

    Linus Torvalds
     
  • Pull EFI fixes from Ingo Molnar:

    - Fix build regression on v4.8 and older

    - Robustness fix for TPM log parsing code

    - kobject refcount fix for the ESRT parsing code

    - Two efivarfs fixes to make it behave more like an ordinary file
    system

    - Style fixup for zero length arrays

    - Fix a regression in path separator handling in the initrd loader

    - Fix a missing prototype warning

    - Add some kerneldoc headers for newly introduced stub routines

    - Allow support for SSDT overrides via EFI variables to be disabled

    - Report CPU mode and MMU state upon entry for 32-bit ARM

    - Use the correct stack pointer alignment when entering from mixed mode

    * tag 'efi-urgent-2020-06-28' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    efi/libstub: arm: Print CPU boot mode and MMU state at boot
    efi/libstub: arm: Omit arch specific config table matching array on arm64
    efi/x86: Setup stack correctly for efi_pe_entry
    efi: Make it possible to disable efivar_ssdt entirely
    efi/libstub: Descriptions for stub helper functions
    efi/libstub: Fix path separator regression
    efi/libstub: Fix missing-prototype warning for skip_spaces()
    efi: Replace zero-length array and use struct_size() helper
    efivarfs: Don't return -EINTR when rate-limiting reads
    efivarfs: Update inode modification time for successful writes
    efi/esrt: Fix reference count leak in esre_create_sysfs_entry.
    efi/tpm: Verify event log header before parsing
    efi/x86: Fix build with gcc 4

    Linus Torvalds
     
  • Pull scheduler fixes from Borislav Petkov:
    "The most anticipated fix in this pull request is probably the horrible
    build fix for the RANDSTRUCT fail that didn't make -rc2. Also included
    is the cleanup that removes those BUILD_BUG_ON()s and replaces it with
    ugly unions.

    Also included is the try_to_wake_up() race fix that was first
    triggered by Paul's RCU-torture runs, but was independently hit by
    Dave Chinner's fstest runs as well"

    * tag 'sched_urgent_for_5.8_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    sched/cfs: change initial value of runnable_avg
    smp, irq_work: Continue smp_call_function*() and irq_work*() integration
    sched/core: s/WF_ON_RQ/WQ_ON_CPU/
    sched/core: Fix ttwu() race
    sched/core: Fix PI boosting between RT and DEADLINE tasks
    sched/deadline: Initialize ->dl_boosted
    sched/core: Check cpus_mask, not cpus_ptr in __set_cpus_allowed_ptr(), to fix mask corruption
    sched/core: Fix CONFIG_GCC_PLUGIN_RANDSTRUCT build fail

    Linus Torvalds
     
  • Pull x86 fixes from Borislav Petkov:

    - AMD Memory bandwidth counter width fix, by Babu Moger.

    - Use the proper length type in the 32-bit truncate() syscall variant,
    by Jiri Slaby.

    - Reinit IA32_FEAT_CTL during wakeup to fix the case where after
    resume, VMXON would #GP due to VMX not being properly enabled, by
    Sean Christopherson.

    - Fix a static checker warning in the resctrl code, by Dan Carpenter.

    - Add a CR4 pinning mask for bits which cannot change after boot, by
    Kees Cook.

    - Align the start of the loop of __clear_user() to 16 bytes, to improve
    performance on AMD zen1 and zen2 microarchitectures, by Matt Fleming.

    * tag 'x86_urgent_for_5.8_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/asm/64: Align start of __clear_user() loop to 16-bytes
    x86/cpu: Use pinning mask for CR4 bits needing to be 0
    x86/resctrl: Fix a NULL vs IS_ERR() static checker warning in rdt_cdp_peer_get()
    x86/cpu: Reinitialize IA32_FEAT_CTL MSR on BSP during wakeup
    syscalls: Fix offset type of ksys_ftruncate()
    x86/resctrl: Fix memory bandwidth counter width for AMD

    Linus Torvalds
     
  • Pull RCU-vs-KCSAN fixes from Borislav Petkov:
    "A single commit that uses "arch_" atomic operations to avoid the
    instrumentation that comes with the non-"arch_" versions.

    In preparation for that commit, it also has another commit that makes
    these "arch_" atomic operations available to generic code.

    Without these commits, KCSAN uses can see pointless errors"

    * tag 'rcu_urgent_for_5.8_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    rcu: Fixup noinstr warnings
    locking/atomics: Provide the arch_atomic_ interface to generic code

    Linus Torvalds
     
  • Pull objtool fixes from Borislav Petkov:
    "Three fixes from Peter Zijlstra suppressing KCOV instrumentation in
    noinstr sections.

    Peter Zijlstra says:
    "Address KCOV vs noinstr. There is no function attribute to
    selectively suppress KCOV instrumentation, instead teach objtool
    to NOP out the calls in noinstr functions"

    This cures a bunch of KCOV crashes (as used by syzcaller)"

    * tag 'objtool_urgent_for_5.8_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    objtool: Fix noinstr vs KCOV
    objtool: Provide elf_write_{insn,reloc}()
    objtool: Clean up elf_write() condition

    Linus Torvalds
     
  • Pull x86 entry fixes from Borislav Petkov:
    "This is the x86/entry urgent pile which has accumulated since the
    merge window.

    It is not the smallest but considering the almost complete entry core
    rewrite, the amount of fixes to follow is somewhat higher than usual,
    which is to be expected.

    Peter Zijlstra says:
    'These patches address a number of instrumentation issues that were
    found after the x86/entry overhaul. When combined with rcu/urgent
    and objtool/urgent, these patches make UBSAN/KASAN/KCSAN happy
    again.

    Part of making this all work is bumping the minimum GCC version for
    KASAN builds to gcc-8.3, the reason for this is that the
    __no_sanitize_address function attribute is broken in GCC releases
    before that.

    No known GCC version has a working __no_sanitize_undefined, however
    because the only noinstr violation that results from this happens
    when an UB is found, we treat it like WARN. That is, we allow it to
    violate the noinstr rules in order to get the warning out'"

    * tag 'x86_entry_for_5.8' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/entry: Fix #UD vs WARN more
    x86/entry: Increase entry_stack size to a full page
    x86/entry: Fixup bad_iret vs noinstr
    objtool: Don't consider vmlinux a C-file
    kasan: Fix required compiler version
    compiler_attributes.h: Support no_sanitize_undefined check with GCC 4
    x86/entry, bug: Comment the instrumentation_begin() usage for WARN()
    x86/entry, ubsan, objtool: Whitelist __ubsan_handle_*()
    x86/entry, cpumask: Provide non-instrumented variant of cpu_is_offline()
    compiler_types.h: Add __no_sanitize_{address,undefined} to noinstr
    kasan: Bump required compiler version
    x86, kcsan: Add __no_kcsan to noinstr
    kcsan: Remove __no_kcsan_or_inline
    x86, kcsan: Remove __no_kcsan_or_inline usage

    Linus Torvalds
     

28 Jun, 2020

25 commits

  • Some performance regression on reaim benchmark have been raised with
    commit 070f5e860ee2 ("sched/fair: Take into account runnable_avg to classify group")

    The problem comes from the init value of runnable_avg which is initialized
    with max value. This can be a problem if the newly forked task is finally
    a short task because the group of CPUs is wrongly set to overloaded and
    tasks are pulled less agressively.

    Set initial value of runnable_avg equals to util_avg to reflect that there
    is no waiting time so far.

    Fixes: 070f5e860ee2 ("sched/fair: Take into account runnable_avg to classify group")
    Reported-by: kernel test robot
    Signed-off-by: Vincent Guittot
    Signed-off-by: Peter Zijlstra (Intel)
    Link: https://lkml.kernel.org/r/20200624154422.29166-1-vincent.guittot@linaro.org

    Vincent Guittot
     
  • Instead of relying on BUG_ON() to ensure the various data structures
    line up, use a bunch of horrible unions to make it all automatic.

    Much of the union magic is to ensure irq_work and smp_call_function do
    not (yet) see the members of their respective data structures change
    name.

    Suggested-by: Linus Torvalds
    Signed-off-by: Peter Zijlstra (Intel)
    Signed-off-by: Ingo Molnar
    Reviewed-by: Frederic Weisbecker
    Link: https://lkml.kernel.org/r/20200622100825.844455025@infradead.org

    Peter Zijlstra
     
  • Use a better name for this poorly named flag, to avoid confusion...

    Signed-off-by: Peter Zijlstra (Intel)
    Signed-off-by: Ingo Molnar
    Acked-by: Mel Gorman
    Link: https://lkml.kernel.org/r/20200622100825.785115830@infradead.org

    Peter Zijlstra
     
  • Paul reported rcutorture occasionally hitting a NULL deref:

    sched_ttwu_pending()
    ttwu_do_wakeup()
    check_preempt_curr() := check_preempt_wakeup()
    find_matching_se()
    is_same_group()
    if (se->cfs_rq == pse->cfs_rq) on_cpu can only be true for remote tasks.
    Similarly, without the new code-path from commit:

    c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu")

    this would've unconditionally hit:

    smp_cond_load_acquire(&p->on_cpu, !VAL);

    and if: 'cpu == smp_processor_id() && p->on_cpu' is possible, this
    would result in an instant live-lock (with IRQs disabled), something
    that hasn't been reported.

    The NULL deref can be explained however if the task_cpu(p) load at the
    beginning of try_to_wake_up() returns an old value, and this old value
    happens to be smp_processor_id(). Further assume that the p->on_cpu
    load accurately returns 1, it really is still running, just not here.

    Then, when we enqueue the task locally, we can crash in exactly the
    observed manner because p->se.cfs_rq != rq->cfs_rq, because p's cfs_rq
    is from the wrong CPU, therefore we'll iterate into the non-existant
    parents and NULL deref.

    The closest semi-plausible scenario I've managed to contrive is
    somewhat elaborate (then again, actual reproduction takes many CPU
    hours of rcutorture, so it can't be anything obvious):

    X->cpu = 1
    rq(1)->curr = X

    CPU0 CPU1 CPU2

    // switch away from X
    LOCK rq(1)->lock
    smp_mb__after_spinlock
    dequeue_task(X)
    X->on_rq = 9
    switch_to(Z)
    X->on_cpu = 0
    UNLOCK rq(1)->lock

    // migrate X to cpu 0
    LOCK rq(1)->lock
    dequeue_task(X)
    set_task_cpu(X, 0)
    X->cpu = 0
    UNLOCK rq(1)->lock

    LOCK rq(0)->lock
    enqueue_task(X)
    X->on_rq = 1
    UNLOCK rq(0)->lock

    // switch to X
    LOCK rq(0)->lock
    smp_mb__after_spinlock
    switch_to(X)
    X->on_cpu = 1
    UNLOCK rq(0)->lock

    // X goes sleep
    X->state = TASK_UNINTERRUPTIBLE
    smp_mb(); // wake X
    ttwu()
    LOCK X->pi_lock
    smp_mb__after_spinlock

    if (p->state)

    cpu = X->cpu; // =? 1

    smp_rmb()

    // X calls schedule()
    LOCK rq(0)->lock
    smp_mb__after_spinlock
    dequeue_task(X)
    X->on_rq = 0

    if (p->on_rq)

    smp_rmb();

    if (p->on_cpu && ttwu_queue_wakelist(..)) [*]

    smp_cond_load_acquire(&p->on_cpu, !VAL)

    cpu = select_task_rq(X, X->wake_cpu, ...)
    if (X->cpu != cpu)
    switch_to(Y)
    X->on_cpu = 0
    UNLOCK rq(0)->lock

    However I'm having trouble convincing myself that's actually possible
    on x86_64 -- after all, every LOCK implies an smp_mb() there, so if ttwu
    observes ->state != RUNNING, it must also observe ->cpu != 1.

    (Most of the previous ttwu() races were found on very large PowerPC)

    Nevertheless, this fully explains the observed failure case.

    Fix it by ordering the task_cpu(p) load after the p->on_cpu load,
    which is easy since nothing actually uses @cpu before this.

    Fixes: c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu")
    Reported-by: Paul E. McKenney
    Tested-by: Paul E. McKenney
    Signed-off-by: Peter Zijlstra (Intel)
    Signed-off-by: Ingo Molnar
    Link: https://lkml.kernel.org/r/20200622125649.GC576871@hirez.programming.kicks-ass.net

    Peter Zijlstra
     
  • syzbot reported the following warning:

    WARNING: CPU: 1 PID: 6351 at kernel/sched/deadline.c:628
    enqueue_task_dl+0x22da/0x38a0 kernel/sched/deadline.c:1504

    At deadline.c:628 we have:

    623 static inline void setup_new_dl_entity(struct sched_dl_entity *dl_se)
    624 {
    625 struct dl_rq *dl_rq = dl_rq_of_se(dl_se);
    626 struct rq *rq = rq_of_dl_rq(dl_rq);
    627
    628 WARN_ON(dl_se->dl_boosted);
    629 WARN_ON(dl_time_before(rq_clock(rq), dl_se->deadline));
    [...]
    }

    Which means that setup_new_dl_entity() has been called on a task
    currently boosted. This shouldn't happen though, as setup_new_dl_entity()
    is only called when the 'dynamic' deadline of the new entity
    is in the past w.r.t. rq_clock and boosted tasks shouldn't verify this
    condition.

    Digging through the PI code I noticed that what above might in fact happen
    if an RT tasks blocks on an rt_mutex hold by a DEADLINE task. In the
    first branch of boosting conditions we check only if a pi_task 'dynamic'
    deadline is earlier than mutex holder's and in this case we set mutex
    holder to be dl_boosted. However, since RT 'dynamic' deadlines are only
    initialized if such tasks get boosted at some point (or if they become
    DEADLINE of course), in general RT 'dynamic' deadlines are usually equal
    to 0 and this verifies the aforementioned condition.

    Fix it by checking that the potential donor task is actually (even if
    temporary because in turn boosted) running at DEADLINE priority before
    using its 'dynamic' deadline value.

    Fixes: 2d3d891d3344 ("sched/deadline: Add SCHED_DEADLINE inheritance logic")
    Reported-by: syzbot+119ba87189432ead09b4@syzkaller.appspotmail.com
    Signed-off-by: Juri Lelli
    Signed-off-by: Peter Zijlstra (Intel)
    Signed-off-by: Ingo Molnar
    Reviewed-by: Daniel Bristot de Oliveira
    Tested-by: Daniel Wagner
    Link: https://lkml.kernel.org/r/20181119153201.GB2119@localhost.localdomain

    Juri Lelli
     
  • syzbot reported the following warning triggered via SYSC_sched_setattr():

    WARNING: CPU: 0 PID: 6973 at kernel/sched/deadline.c:593 setup_new_dl_entity /kernel/sched/deadline.c:594 [inline]
    WARNING: CPU: 0 PID: 6973 at kernel/sched/deadline.c:593 enqueue_dl_entity /kernel/sched/deadline.c:1370 [inline]
    WARNING: CPU: 0 PID: 6973 at kernel/sched/deadline.c:593 enqueue_task_dl+0x1c17/0x2ba0 /kernel/sched/deadline.c:1441

    This happens because the ->dl_boosted flag is currently not initialized by
    __dl_clear_params() (unlike the other flags) and setup_new_dl_entity()
    rightfully complains about it.

    Initialize dl_boosted to 0.

    Fixes: 2d3d891d3344 ("sched/deadline: Add SCHED_DEADLINE inheritance logic")
    Reported-by: syzbot+5ac8bac25f95e8b221e7@syzkaller.appspotmail.com
    Signed-off-by: Juri Lelli
    Signed-off-by: Peter Zijlstra (Intel)
    Signed-off-by: Ingo Molnar
    Tested-by: Daniel Wagner
    Link: https://lkml.kernel.org/r/20200617072919.818409-1-juri.lelli@redhat.com

    Juri Lelli
     
  • This function is concerned with the long-term CPU mask, not the
    transitory mask the task might have while migrate disabled. Before
    this patch, if a task was migrate-disabled at the time
    __set_cpus_allowed_ptr() was called, and the new mask happened to be
    equal to the CPU that the task was running on, then the mask update
    would be lost.

    Signed-off-by: Scott Wood
    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Peter Zijlstra (Intel)
    Signed-off-by: Ingo Molnar
    Link: https://lkml.kernel.org/r/20200617121742.cpxppyi7twxmpin7@linutronix.de

    Scott Wood
     
  • As a temporary build fix, the proper cleanup needs more work.

    Reported-by: Guenter Roeck
    Reported-by: Eric Biggers
    Suggested-by: Eric Biggers
    Suggested-by: Kees Cook
    Fixes: a148866489fb ("sched: Replace rq::wake_list")
    Signed-off-by: Peter Zijlstra (Intel)
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     
  • …guo/linux into arm/fixes

    i.MX fixes for 5.8:

    - Fix LDO1 and LDO2 voltage range for a couple of i.MX8M board device
    trees.
    - Fix i.MX8MP UID fuse offset in i.MX8M SoC driver.
    - Fix watchdog configuration in imx6ul-kontron device tree.
    - Fix one build warning seen on building soc-imx8m driver with
    x86_64-randconfig.
    - Add missing put_device() call for a couple of mach-imx PM functions.

    * tag 'imx-fixes-5.8' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
    soc: imx8m: fix build warning
    ARM: imx6: add missing put_device() call in imx6q_suspend_init()
    ARM: imx5: add missing put_device() call in imx_suspend_alloc_ocram()
    soc: imx8m: Correct i.MX8MP UID fuse offset
    ARM: dts: imx6ul-kontron: Change WDOG_ANY signal from push-pull to open-drain
    ARM: dts: imx6ul-kontron: Move watchdog from Kontron i.MX6UL/ULL board to SoM
    arm64: dts: imx8mm-beacon: Fix voltages on LDO1 and LDO2
    arm64: dts: imx8mn-ddr4-evk: correct ldo1/ldo2 voltage range
    arm64: dts: imx8mm-evk: correct ldo1/ldo2 voltage range

    Link: https://lore.kernel.org/r/20200624111725.GA24312@dragon
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>

    Arnd Bergmann
     
  • This pull request contains Broadcom ARM/ARM64/MIPS SoCs drivers fixes
    for 5.8, please pull the following:

    - Andy provides a fix for the Raspberry Pi firmware driver to print the
    correct time upon boot. This is a fallout from a converstion to use
    the ptT format

    * tag 'arm-soc/for-5.8/drivers-fixes' of https://github.com/Broadcom/stblinux:
    ARM: bcm2835: Fix integer overflow in rpi_firmware_print_firmware_revision()

    Link: https://lore.kernel.org/r/20200619202250.19029-2-f.fainelli@gmail.com
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • This pull request contains Broadcom ARM-based SoCs machine/Kconfig fixes
    for 5.8, please pull the following:

    - Matthew adds a missing select to permit the use of the standard ARM
    SP804 timers on Norsthstar Plus (NSP)

    * tag 'arm-soc/for-5.8/soc-fixes' of https://github.com/Broadcom/stblinux:
    ARM: bcm: Select ARM_TIMER_SP804 for ARCH_BCM_NSP

    Link: https://lore.kernel.org/r/20200619202250.19029-3-f.fainelli@gmail.com
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • This pull request contains Broadcom ARM-based SoCs Device Tree fixes for
    5.8, please pull the following:

    - Rafal adds a missing 'device_type' property to the Luxul XWC-2000
    required for the memory nodes to be correctly parsed by Linux

    - Matthew provides two fixes for the NSP SoCs, one to disable the PL330
    DMA controller by default since it can be left in reset by the
    bootloader and the second to correct the flow accelerator mailbox node

    * tag 'arm-soc/for-5.8/devicetree-fixes' of https://github.com/Broadcom/stblinux:
    ARM: dts: NSP: Correct FA2 mailbox node
    ARM: dts: NSP: Disable PL330 by default, add dma-coherent property
    ARM: dts: BCM5301X: Add missing memory "device_type" for Luxul XWC-2000

    Link: https://lore.kernel.org/r/20200619202250.19029-1-f.fainelli@gmail.com
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • This reverts commit 7b8e0188fa717cd9abc4fb52587445b421835c2a.

    Initially, STiH410-B2260 was supposed to be secured, that's why
    l2c_write_sec was stubbed to avoid secure register access from
    non secure world.

    But by default, STiH410-B2260 is running in non secure mode,
    so L2 cache register accesses are authorized, l2c_write_sec stub
    is not needed.

    With this patch, L2 cache is configured and performance are enhanced.

    Link: https://lore.kernel.org/r/20200618172456.29475-1-patrice.chotard@st.com
    Signed-off-by: Patrice Chotard
    Cc: Alain Volmat
    Signed-off-by: Arnd Bergmann

    Patrice Chotard
     
  • …/kernel/git/tmlind/linux-omap into arm/omap-fixes

    Few dts fixes for omaps for v5.8

    Few fixes for various devices:

    - Prevent pocketgeagle header line signal from accidentally setting
    micro-SD write protection signal by removing the default mux

    - Fix NFSroot flakeyness after resume for duover by switching the
    smsc911x gpio interrupt to back to level sensitive

    - Fix regression for omap4 clockevent source after recent system
    timer changes

    - Yet another ethernet regression fix for the "rgmii" vs "rgmii-rxid"
    phy-mode

    * tag 'omap-for-v5.8/fixes-rc1-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
    ARM: dts: am5729: beaglebone-ai: fix rgmii phy-mode
    ARM: dts: Fix omap4 system timer source clocks
    ARM: dts: Fix duovero smsc interrupt for suspend
    ARM: dts: am335x-pocketbeagle: Fix mmc0 Write Protect

    Link: https://lore.kernel.org/r/pull-1592499282-121092@atomide.com
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>

    Arnd Bergmann
     
  • …/kernel/git/tmlind/linux-omap into arm/omap-fixes

    Missed sdhci patch for am3 and am4

    I forgot to send a pull request earlier for converting am3 and am4 to
    use sdhci-omap driver instead of the old omap_hsmmc driver.

    There was a display subsystem related suspend and resume regression found
    recently and looks like I forgot to send a pull request for this patch
    while debugging the regression. This patch has been tested without the
    display subsystem, and has been in Linux next for several weeks now, so
    would be good to have merged for v5.8.

    * tag 'omap-for-v5.8/dt-missed-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
    ARM: dts: Move am33xx and am43xx mmc nodes to sdhci-omap driver

    Link: https://lore.kernel.org/r/pull-1591637467-607254@atomide.com
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>

    Arnd Bergmann
     
  • Change the TEE mailing list in MAINTAINERS

    * tag 'tee-ml-for-v5.8' of git://git.linaro.org/people/jens.wiklander/linux-tee:
    MAINTAINERS: change tee mailing list

    Link: https://lore.kernel.org/r/20200616075948.GA2288211@jade
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • …scm/linux/kernel/git/tmlind/linux-omap into arm/fixes

    Fixes for omaps for v5.8

    The recent display subsystem (DSS) related platform data changes caused
    display related regressions for suspend and resume. Looks like I only
    tested suspend and resume before dropping the legacy platform data, and
    forgot to test it after dropping it. Turns out the main issue was that
    we no longer have platform code calling pm_runtime_suspend for DSS like
    we did for the legacy platform data case, and that fix is still being
    discussed on the dri-devel list and will get merged separately. The DSS
    related testing exposed a pile other other display related issues that
    also need fixing though:

    - Fix ti-sysc optional clock handling and reset status checks
    for devices that reset automatically in idle like DSS

    - Ignore ti-sysc clockactivity bit unless separately requested
    to avoid unexpected performance issues

    - Init ti-sysc framedonetv_irq to true and disable for am4

    - Avoid duplicate DSS reset for legacy mode with dts data

    - Remove LCD timings for am4 as they cause warnings now that we're
    using generic panels

    Then there is a pile of other fixes not related to the DSS:

    - Fix omap_prm reset deassert as we still have drivers setting the
    pm_runtime_irq_safe() flag

    - Flush posted write for ti-sysc enable and disable

    - Fix droid4 spi related errors with spi flags

    - Fix am335x USB range and a typo for softreset

    - Fix dra7 timer nodes for clocks for IPU and DSP

    - Drop duplicate mailboxes after mismerge for dra7

    * tag 'omap-for-v5.8/fixes-merge-window-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
    Revert "bus: ti-sysc: Increase max softreset wait"
    ARM: dts: am437x-epos-evm: remove lcd timings
    ARM: dts: am437x-gp-evm: remove lcd timings
    ARM: dts: am437x-sk-evm: remove lcd timings
    ARM: dts: dra7-evm-common: Fix duplicate mailbox nodes
    ARM: dts: dra7: Fix timer nodes properly for timer_sys_ck clocks
    ARM: dts: Fix am33xx.dtsi ti,sysc-mask wrong softreset flag
    ARM: dts: Fix am33xx.dtsi USB ranges length
    bus: ti-sysc: Increase max softreset wait
    ARM: OMAP2+: Fix legacy mode dss_reset
    bus: ti-sysc: Fix uninitialized framedonetv_irq
    bus: ti-sysc: Ignore clockactivity unless specified as a quirk
    bus: ti-sysc: Use optional clocks on for enable and wait for softreset bit
    ARM: dts: omap4-droid4: Fix spi configuration and increase rate
    bus: ti-sysc: Flush posted write on enable and disable
    soc: ti: omap-prm: use atomic iopoll instead of sleeping one

    Link: https://lore.kernel.org/r/pull-1591889257-410830@atomide.com
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>

    Arnd Bergmann
     
  • The cell name stored in the afs_cell struct is a 64-char + NUL buffer -
    when it needs to be able to handle up to AFS_MAXCELLNAME (256 chars) + NUL.

    Fix this by changing the array to a pointer and allocating the string.

    Found using Coverity.

    Fixes: 989782dcdc91 ("afs: Overhaul cell database management")
    Reported-by: Colin Ian King
    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     
  • Pull cifs fixes from Steve French:
    "Six cifs/smb3 fixes, three of them for stable.

    Fixes xfstests 451, 313 and 316"

    * tag '5.8-rc2-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6:
    cifs: misc: Use array_size() in if-statement controlling expression
    cifs: update ctime and mtime during truncate
    cifs/smb3: Fix data inconsistent when punch hole
    cifs/smb3: Fix data inconsistent when zero file range
    cifs: Fix double add page to memcg when cifs_readpages
    cifs: Fix cached_fid refcnt leak in open_shroot

    Linus Torvalds
     
  • Pull SCSI fixes from James Bottomley:
    "Six small fixes, five in drivers and one to correct another minor
    regression from cc97923a5bcc ("block: move dma drain handling to
    scsi") where we still need the drain stub to be built in to the kernel
    for the modular libata, non-modular SAS driver case"

    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    scsi: mptscsih: Fix read sense data size
    scsi: zfcp: Fix panic on ERP timeout for previously dismissed ERP action
    scsi: lpfc: Avoid another null dereference in lpfc_sli4_hba_unset()
    scsi: libata: Fix the ata_scsi_dma_need_drain stub
    scsi: qla2xxx: Keep initiator ports after RSCN
    scsi: qla2xxx: Set NVMe status code for failed NVMe FCP request

    Linus Torvalds
     
  • Pull VFIO fixes from Alex Williamson:

    - Fix double free of eventfd ctx (Alex Williamson)

    - Fix duplicate use of capability ID (Alex Williamson)

    - Fix SR-IOV VF memory enable handling (Alex Williamson)

    * tag 'vfio-v5.8-rc3' of git://github.com/awilliam/linux-vfio:
    vfio/pci: Fix SR-IOV VF handling with MMIO blocking
    vfio/type1: Fix migration info capability ID
    vfio/pci: Clear error and request eventfd ctx after releasing

    Linus Torvalds
     
  • Pull i2c fixes from Wolfram Sang:
    "This contains a 5.8 regression fix for the Designware driver, a
    register bitfield fix for the fsi driver, and a missing sanity check
    for the I2C core"

    * 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
    i2c: core: check returned size of emulated smbus block read
    i2c: fsi: Fix the port number field in status register
    i2c: designware: Adjust bus speed independently of ACPI

    Linus Torvalds
     
  • Pull staging driver fixes from Greg KH:
    "Here are a small number of tiny staging driver fixes for 5.8-rc3.

    Not much here, but there were some reported problems to be fixed:

    - three wfx driver fixes

    - rtl8723bs driver fix

    All of these have been in linux-next with no reported issues"

    * tag 'staging-5.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    Staging: rtl8723bs: prevent buffer overflow in update_sta_support_rate()
    staging: wfx: fix coherency of hif_scan() prototype
    staging: wfx: drop useless loop
    staging: wfx: fix AC priority

    Linus Torvalds
     
  • Pull USB fixes from Greg KH:
    "Here are some small USB fixes for 5.8-rc3 to resolve some reported
    issues.

    Nothing major here:

    - gadget driver fixes

    - cdns3 driver fixes

    - xhci fixes

    - renesas_usbhs driver fixes

    - some new device support with ids

    - documentation update

    All of these have been in linux-next with no reported issues"

    * tag 'usb-5.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (27 commits)
    usb: renesas_usbhs: getting residue from callback_result
    Revert "usb: dwc3: exynos: Add support for Exynos5422 suspend clk"
    xhci: Poll for U0 after disabling USB2 LPM
    xhci: Return if xHCI doesn't support LPM
    usb: host: xhci-mtk: avoid runtime suspend when removing hcd
    xhci: Fix enumeration issue when setting max packet size for FS devices.
    xhci: Fix incorrect EP_STATE_MASK
    usb: cdns3: ep0: add spinlock for cdns3_check_new_setup
    usb: cdns3: trace: using correct dir value
    usb: cdns3: ep0: fix the test mode set incorrectly
    Revert "usb: dwc3: exynos: Add support for Exynos5422 suspend clk"
    usb: gadget: udc: Potential Oops in error handling code
    usb: phy: tegra: Fix unnecessary check in tegra_usb_phy_probe()
    usb: dwc3: pci: Fix reference count leak in dwc3_pci_resume_work
    usb: cdns3: ep0: add spinlock for cdns3_check_new_setup
    usb: cdns3: trace: using correct dir value
    usb: cdns3: ep0: fix the test mode set incorrectly
    usb: typec: tcpci_rt1711h: avoid screaming irq causing boot hangs
    USB: ohci-sm501: Add missed iounmap() in remove
    cdc-acm: Add DISABLE_ECHO quirk for Microchip/SMSC chip
    ...

    Linus Torvalds
     
  • Pull char/misc fixes from Greg KH:
    "Some tiny char/misc driver fixes for 5.8-rc3.

    The "largest" changes are in the mei driver, to resolve some reported
    problems and add some new device ids. There's also a binder bugfix, an
    fpga driver build fix, and some assorted habanalabs fixes.

    All of these, except for the habanalabs fixes, have been in linux-next
    with no reported issues. The habanalabs driver changes showed up in my
    tree on Friday, but as they are totally self-contained, all should be
    good there"

    * tag 'char-misc-5.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    habanalabs: increase h/w timer when checking idle
    habanalabs: Correct handling when failing to enqueue CB
    habanalabs: increase GAUDI QMAN ARB WDT timeout
    habanalabs: rename mmu_write() to mmu_asid_va_write()
    habanalabs: use PI in MMU cache invalidation
    habanalabs: block scalar load_and_exe on external queue
    mei: me: add tiger lake point device ids for H platforms.
    mei: me: disable mei interface on Mehlow server platforms
    binder: fix null deref of proc->context
    fpga: zynqmp: fix modular build

    Linus Torvalds