17 Oct, 2020

1 commit

  • Pull powerpc updates from Michael Ellerman:

    - A series from Nick adding ARCH_WANT_IRQS_OFF_ACTIVATE_MM & selecting
    it for powerpc, as well as a related fix for sparc.

    - Remove support for PowerPC 601.

    - Some fixes for watchpoints & addition of a new ptrace flag for
    detecting ISA v3.1 (Power10) watchpoint features.

    - A fix for kernels using 4K pages and the hash MMU on bare metal
    Power9 systems with > 16TB of RAM, or RAM on the 2nd node.

    - A basic idle driver for shallow stop states on Power10.

    - Tweaks to our sched domains code to better inform the scheduler about
    the hardware topology on Power9/10, where two SMT4 cores can be
    presented by firmware as an SMT8 core.

    - A series doing further reworks & cleanups of our EEH code.

    - Addition of a filter for RTAS (firmware) calls done via sys_rtas(),
    to prevent root from overwriting kernel memory.

    - Other smaller features, fixes & cleanups.

    Thanks to: Alexey Kardashevskiy, Andrew Donnellan, Aneesh Kumar K.V,
    Athira Rajeev, Biwen Li, Cameron Berkenpas, Cédric Le Goater, Christophe
    Leroy, Christoph Hellwig, Colin Ian King, Daniel Axtens, David Dai, Finn
    Thain, Frederic Barrat, Gautham R. Shenoy, Greg Kurz, Gustavo Romero,
    Ira Weiny, Jason Yan, Joel Stanley, Jordan Niethe, Kajol Jain, Konrad
    Rzeszutek Wilk, Laurent Dufour, Leonardo Bras, Liu Shixin, Luca
    Ceresoli, Madhavan Srinivasan, Mahesh Salgaonkar, Nathan Lynch, Nicholas
    Mc Guire, Nicholas Piggin, Nick Desaulniers, Oliver O'Halloran, Pedro
    Miraglia Franco de Carvalho, Pratik Rajesh Sampat, Qian Cai, Qinglang
    Miao, Ravi Bangoria, Russell Currey, Satheesh Rajendran, Scott Cheloha,
    Segher Boessenkool, Srikar Dronamraju, Stan Johnson, Stephen Kitt,
    Stephen Rothwell, Thiago Jung Bauermann, Tyrel Datwyler, Vaibhav Jain,
    Vaidyanathan Srinivasan, Vasant Hegde, Wang Wensheng, Wolfram Sang, Yang
    Yingliang, zhengbin.

    * tag 'powerpc-5.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (228 commits)
    Revert "powerpc/pci: unmap legacy INTx interrupts when a PHB is removed"
    selftests/powerpc: Fix eeh-basic.sh exit codes
    cpufreq: powernv: Fix frame-size-overflow in powernv_cpufreq_reboot_notifier
    powerpc/time: Make get_tb() common to PPC32 and PPC64
    powerpc/time: Make get_tbl() common to PPC32 and PPC64
    powerpc/time: Remove get_tbu()
    powerpc/time: Avoid using get_tbl() and get_tbu() internally
    powerpc/time: Make mftb() common to PPC32 and PPC64
    powerpc/time: Rename mftbl() to mftb()
    powerpc/32s: Remove #ifdef CONFIG_PPC_BOOK3S_32 in head_book3s_32.S
    powerpc/32s: Rename head_32.S to head_book3s_32.S
    powerpc/32s: Setup the early hash table at all time.
    powerpc/time: Remove ifdef in get_dec() and set_dec()
    powerpc: Remove get_tb_or_rtc()
    powerpc: Remove __USE_RTC()
    powerpc: Tidy up a bit after removal of PowerPC 601.
    powerpc: Remove support for PowerPC 601
    powerpc: Remove PowerPC 601
    powerpc: Drop SYNC_601() ISYNC_601() and SYNC()
    powerpc: Remove CONFIG_PPC601_SYNC_FIX
    ...

    Linus Torvalds
     

07 Oct, 2020

1 commit

  • Patch here adds cpu hotplug functions to hv_gpci pmu.
    A new cpuhp_state "CPUHP_AP_PERF_POWERPC_HV_GPCI_ONLINE" enum
    is added.

    The online callback function updates the cpumask only if its
    empty. As the primary intention of adding hotplug support
    is to designate a CPU to make HCALL to collect the
    counter data.

    The offline function test and clear corresponding cpu in a cpumask
    and update cpumask to any other active cpu.

    Signed-off-by: Kajol Jain
    Signed-off-by: Michael Ellerman
    Link: https://lore.kernel.org/r/20201003074943.338618-4-kjain@linux.ibm.com

    Kajol Jain
     

01 Oct, 2020

1 commit

  • If a CPU is offlined the debug objects per CPU pool is not cleaned up. If
    the CPU is never onlined again then the objects in the pool are wasted.

    Add a CPU hotplug callback which is invoked after the CPU is dead to free
    the pool.

    [ tglx: Massaged changelog and added comment about remote access safety ]

    Signed-off-by: Zqiang
    Signed-off-by: Thomas Gleixner
    Cc: Waiman Long
    Link: https://lore.kernel.org/r/20200908062709.11441-1-qiang.zhang@windriver.com

    Zqiang
     

18 Sep, 2020

1 commit

  • Steal time initialization requires mapping a memory region which
    invokes a memory allocation. Doing this at CPU starting time results
    in the following trace when CONFIG_DEBUG_ATOMIC_SLEEP is enabled:

    BUG: sleeping function called from invalid context at mm/slab.h:498
    in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 0, name: swapper/1
    CPU: 1 PID: 0 Comm: swapper/1 Not tainted 5.9.0-rc5+ #1
    Call trace:
    dump_backtrace+0x0/0x208
    show_stack+0x1c/0x28
    dump_stack+0xc4/0x11c
    ___might_sleep+0xf8/0x130
    __might_sleep+0x58/0x90
    slab_pre_alloc_hook.constprop.101+0xd0/0x118
    kmem_cache_alloc_node_trace+0x84/0x270
    __get_vm_area_node+0x88/0x210
    get_vm_area_caller+0x38/0x40
    __ioremap_caller+0x70/0xf8
    ioremap_cache+0x78/0xb0
    memremap+0x9c/0x1a8
    init_stolen_time_cpu+0x54/0xf0
    cpuhp_invoke_callback+0xa8/0x720
    notify_cpu_starting+0xc8/0xd8
    secondary_start_kernel+0x114/0x180
    CPU1: Booted secondary processor 0x0000000001 [0x431f0a11]

    However we don't need to initialize steal time at CPU starting time.
    We can simply wait until CPU online time, just sacrificing a bit of
    accuracy by returning zero for steal time until we know better.

    While at it, add __init to the functions that are only called by
    pv_time_init() which is __init.

    Signed-off-by: Andrew Jones
    Fixes: e0685fa228fd ("arm64: Retrieve stolen time as paravirtualized guest")
    Cc: stable@vger.kernel.org
    Reviewed-by: Steven Price
    Link: https://lore.kernel.org/r/20200916154530.40809-1-drjones@redhat.com
    Signed-off-by: Catalin Marinas

    Andrew Jones
     

21 Aug, 2020

1 commit

  • We add a separate CLINT timer driver for Linux RISC-V M-mode (i.e.
    RISC-V NoMMU kernel).

    The CLINT MMIO device provides three things:
    1. 64bit free running counter register
    2. 64bit per-CPU time compare registers
    3. 32bit per-CPU inter-processor interrupt registers

    Unlike other timer devices, CLINT provides IPI registers along with
    timer registers. To use CLINT IPI registers, the CLINT timer driver
    provides IPI related callbacks to arch/riscv.

    Signed-off-by: Anup Patel
    Tested-by: Emil Renner Berhing
    Acked-by: Daniel Lezcano
    Reviewed-by: Atish Patra
    Reviewed-by: Palmer Dabbelt
    Signed-off-by: Palmer Dabbelt

    Anup Patel
     

16 Jul, 2020

1 commit

  • Patch here adds cpu hotplug functions to hv_24x7 pmu.
    A new cpuhp_state "CPUHP_AP_PERF_POWERPC_HV_24x7_ONLINE" enum
    is added.

    The online callback function updates the cpumask only if its
    empty. As the primary intention of adding hotplug support
    is to designate a CPU to make HCALL to collect the
    counter data.

    The offline function test and clear corresponding cpu in a cpumask
    and update cpumask to any other active cpu.

    Signed-off-by: Kajol Jain
    Reviewed-by: Gautham R. Shenoy
    Signed-off-by: Michael Ellerman
    Link: https://lore.kernel.org/r/20200709051836.723765-2-kjain@linux.ibm.com

    Kajol Jain
     

12 Jun, 2020

1 commit

  • Pull more RISC-V updates from Palmer Dabbelt:

    - Kconfig select statements are now sorted alphanumerically

    - first-level interrupts are now handled via a full irqchip driver

    - CPU hotplug is fixed

    - vDSO calls now use the common vDSO infrastructure

    * tag 'riscv-for-linus-5.8-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
    riscv: set the permission of vdso_data to read-only
    riscv: use vDSO common flow to reduce the latency of the time-related functions
    riscv: fix build warning of missing prototypes
    RISC-V: Don't mark init section as non-executable
    RISC-V: Force select RISCV_INTC for CONFIG_RISCV
    RISC-V: Remove do_IRQ() function
    clocksource/drivers/timer-riscv: Use per-CPU timer interrupt
    irqchip: RISC-V per-HART local interrupt controller driver
    RISC-V: Rename and move plic_find_hart_id() to arch directory
    RISC-V: self-contained IPI handling routine
    RISC-V: Sort select statements alphanumerically

    Linus Torvalds
     

10 Jun, 2020

1 commit

  • The RISC-V per-HART local interrupt controller manages software
    interrupts, timer interrupts, external interrupts (which are routed
    via the platform level interrupt controller) and other per-HART
    local interrupts.

    We add a driver for the RISC-V local interrupt controller, which
    eventually replaces the RISC-V architecture code, allowing for a
    better split between arch code and drivers.

    The driver is compliant with RISC-V Hart-Level Interrupt Controller
    DT bindings located at:
    Documentation/devicetree/bindings/interrupt-controller/riscv,cpu-intc.txt

    Co-developed-by: Palmer Dabbelt
    Signed-off-by: Anup Patel
    [Palmer: Cleaned up warnings]
    Signed-off-by: Palmer Dabbelt

    Anup Patel
     

08 Jun, 2020

1 commit

  • Pull char/misc driver updates from Greg KH:
    "Here is the large set of char/misc driver patches for 5.8-rc1

    Included in here are:

    - habanalabs driver updates, loads

    - mhi bus driver updates

    - extcon driver updates

    - clk driver updates (approved by the clock maintainer)

    - firmware driver updates

    - fpga driver updates

    - gnss driver updates

    - coresight driver updates

    - interconnect driver updates

    - parport driver updates (it's still alive!)

    - nvmem driver updates

    - soundwire driver updates

    - visorbus driver updates

    - w1 driver updates

    - various misc driver updates

    In short, loads of different driver subsystem updates along with the
    drivers as well.

    All have been in linux-next for a while with no reported issues"

    * tag 'char-misc-5.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (233 commits)
    habanalabs: correctly cast u64 to void*
    habanalabs: initialize variable to default value
    extcon: arizona: Fix runtime PM imbalance on error
    extcon: max14577: Add proper dt-compatible strings
    extcon: adc-jack: Fix an error handling path in 'adc_jack_probe()'
    extcon: remove redundant assignment to variable idx
    w1: omap-hdq: print dev_err if irq flags are not cleared
    w1: omap-hdq: fix interrupt handling which did show spurious timeouts
    w1: omap-hdq: fix return value to be -1 if there is a timeout
    w1: omap-hdq: cleanup to add missing newline for some dev_dbg
    /dev/mem: Revoke mappings when a driver claims the region
    misc: xilinx-sdfec: convert get_user_pages() --> pin_user_pages()
    misc: xilinx-sdfec: cleanup return value in xsdfec_table_write()
    misc: xilinx-sdfec: improve get_user_pages_fast() error handling
    nvmem: qfprom: remove incorrect write support
    habanalabs: handle MMU cache invalidation timeout
    habanalabs: don't allow hard reset with open processes
    habanalabs: GAUDI does not support soft-reset
    habanalabs: add print for soft reset due to event
    habanalabs: improve MMU cache invalidation code
    ...

    Linus Torvalds
     

30 May, 2020

1 commit

  • Most of blk-mq drivers depend on managed IRQ's auto-affinity to setup
    up queue mapping. Thomas mentioned the following point[1]:

    "That was the constraint of managed interrupts from the very beginning:

    The driver/subsystem has to quiesce the interrupt line and the associated
    queue _before_ it gets shutdown in CPU unplug and not fiddle with it
    until it's restarted by the core when the CPU is plugged in again."

    However, current blk-mq implementation doesn't quiesce hw queue before
    the last CPU in the hctx is shutdown. Even worse, CPUHP_BLK_MQ_DEAD is a
    cpuhp state handled after the CPU is down, so there isn't any chance to
    quiesce the hctx before shutting down the CPU.

    Add new CPUHP_AP_BLK_MQ_ONLINE state to stop allocating from blk-mq hctxs
    where the last CPU goes away, and wait for completion of in-flight
    requests. This guarantees that there is no inflight I/O before shutting
    down the managed IRQ.

    Add a BLK_MQ_F_STACKING and set it for dm-rq and loop, so we don't need
    to wait for completion of in-flight requests from these drivers to avoid
    a potential dead-lock. It is safe to do this for stacking drivers as those
    do not use interrupts at all and their I/O completions are triggered by
    underlying devices I/O completion.

    [1] https://lore.kernel.org/linux-block/alpine.DEB.2.21.1904051331270.1802@nanos.tec.linutronix.de/

    [hch: different retry mechanism, merged two patches, minor cleanups]

    Signed-off-by: Ming Lei
    Signed-off-by: Christoph Hellwig
    Reviewed-by: Hannes Reinecke
    Reviewed-by: Daniel Wagner
    Signed-off-by: Jens Axboe

    Ming Lei
     

19 May, 2020

1 commit

  • Adds registration of CPU start and stop functions to CPU hotplug
    mechanisms - for any CPU bound CTI.

    Sets CTI powered flag according to state.
    Will enable CTI on CPU start if there are existing enable requests.

    Signed-off-by: Mike Leach
    Signed-off-by: Mathieu Poirier
    Link: https://lore.kernel.org/r/20200518180242.7916-23-mathieu.poirier@linaro.org
    Signed-off-by: Greg Kroah-Hartman

    Mike Leach
     

16 Mar, 2020

1 commit

  • Currently, PLIC threshold is only initialized once in the beginning.
    However, threshold can be set to disabled if a CPU is marked offline with
    CPU hotplug feature. This will not allow to change the irq affinity to a
    CPU that just came online.

    Add PLIC specific CPU hotplug callbacks and enable the threshold when a CPU
    comes online. Take this opportunity to move the external interrupt enable
    code from trap init to PLIC driver as well. On cpu offline path, the driver
    performs the exact opposite operations i.e. disable the interrupt and
    the threshold.

    Signed-off-by: Atish Patra
    Signed-off-by: Marc Zyngier
    Reviewed-by: Anup Patel
    Link: https://lore.kernel.org/r/20200302231146.15530-2-atish.patra@wdc.com

    Atish Patra
     

09 Feb, 2020

1 commit

  • Pull ARM SoC-related driver updates from Olof Johansson:
    "Various driver updates for platforms:

    - Nvidia: Fuse support for Tegra194, continued memory controller
    pieces for Tegra30

    - NXP/FSL: Refactorings of QuickEngine drivers to support
    ARM/ARM64/PPC

    - NXP/FSL: i.MX8MP SoC driver pieces

    - TI Keystone: ring accelerator driver

    - Qualcomm: SCM driver cleanup/refactoring + support for new SoCs.

    - Xilinx ZynqMP: feature checking interface for firmware. Mailbox
    communication for power management

    - Overall support patch set for cpuidle on more complex hierarchies
    (PSCI-based)

    and misc cleanups, refactorings of Marvell, TI, other platforms"

    * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (166 commits)
    drivers: soc: xilinx: Use mailbox IPI callback
    dt-bindings: power: reset: xilinx: Add bindings for ipi mailbox
    drivers: soc: ti: knav_qmss_queue: Pass lockdep expression to RCU lists
    MAINTAINERS: Add brcmstb PCIe controller entry
    soc/tegra: fuse: Unmap registers once they are not needed anymore
    soc/tegra: fuse: Correct straps' address for older Tegra124 device trees
    soc/tegra: fuse: Warn if straps are not ready
    soc/tegra: fuse: Cache values of straps and Chip ID registers
    memory: tegra30-emc: Correct error message for timed out auto calibration
    memory: tegra30-emc: Firm up hardware programming sequence
    memory: tegra30-emc: Firm up suspend/resume sequence
    soc/tegra: regulators: Do nothing if voltage is unchanged
    memory: tegra: Correct reset value of xusb_hostr
    soc/tegra: fuse: Add APB DMA dependency for Tegra20
    bus: tegra-aconnect: Remove PM_CLK dependency
    dt-bindings: mediatek: add MT6765 power dt-bindings
    soc: mediatek: cmdq: delete not used define
    memory: tegra: Add support for the Tegra194 memory controller
    memory: tegra: Only include support for enabled SoCs
    memory: tegra: Support DVFS on Tegra186 and later
    ...

    Linus Torvalds
     

02 Jan, 2020

1 commit

  • When the hierarchical CPU topology is used and when a CPU is put offline,
    that CPU prevents its PM domain from being powered off, which is because
    genpd observes the corresponding attached device as being active from a
    runtime PM point of view. Furthermore, any potential master PM domains are
    also prevented from being powered off.

    To address this limitation, let's add add a new CPU hotplug state
    (CPUHP_AP_CPU_PM_STARTING) and register up/down callbacks for it, which
    allows us to deal with runtime PM accordingly.

    Signed-off-by: Ulf Hansson
    Reviewed-by: Sudeep Holla
    Acked-by: Rafael J. Wysocki

    Ulf Hansson
     

11 Dec, 2019

1 commit

  • Configuring an instance's parallel mask without any online CPUs...

    echo 2 > /sys/kernel/pcrypt/pencrypt/parallel_cpumask
    echo 0 > /sys/devices/system/cpu/cpu1/online

    ...makes tcrypt mode=215 crash like this:

    divide error: 0000 [#1] SMP PTI
    CPU: 4 PID: 283 Comm: modprobe Not tainted 5.4.0-rc8-padata-doc-v2+ #2
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS ?-20191013_105130-anatol 04/01/2014
    RIP: 0010:padata_do_parallel+0x114/0x300
    Call Trace:
    pcrypt_aead_encrypt+0xc0/0xd0 [pcrypt]
    crypto_aead_encrypt+0x1f/0x30
    do_mult_aead_op+0x4e/0xdf [tcrypt]
    test_mb_aead_speed.constprop.0.cold+0x226/0x564 [tcrypt]
    do_test+0x28c2/0x4d49 [tcrypt]
    tcrypt_mod_init+0x55/0x1000 [tcrypt]
    ...

    cpumask_weight() in padata_cpu_hash() returns 0 because the mask has no
    CPUs. The problem is __padata_remove_cpu() checks for valid masks too
    early and so doesn't mark the instance PADATA_INVALID as expected, which
    would have made padata_do_parallel() return error before doing the
    division.

    Fix by introducing a second padata CPU hotplug state before
    CPUHP_BRINGUP_CPU so that __padata_remove_cpu() sees the online mask
    without @cpu. No need for the second argument to padata_replace() since
    @cpu is now already missing from the online mask.

    Fixes: 33e54450683c ("padata: Handle empty padata cpumasks")
    Signed-off-by: Daniel Jordan
    Cc: Eric Biggers
    Cc: Herbert Xu
    Cc: Sebastian Andrzej Siewior
    Cc: Steffen Klassert
    Cc: Thomas Gleixner
    Cc: linux-crypto@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Herbert Xu

    Daniel Jordan
     

27 Nov, 2019

1 commit


15 Nov, 2019

1 commit

  • Hyper-V has historically initialized stimer-based clockevents late in the
    process of onlining a CPU because clockevents depend on stimer
    interrupts. In the original Hyper-V design, stimer interrupts generate a
    VMbus message, so the VMbus machinery must be running first, and VMbus
    can't be initialized until relatively late. On x86/64, LAPIC timer based
    clockevents are used during early initialization before VMbus and
    stimer-based clockevents are ready, and again during CPU offlining after
    the stimer clockevents have been shut down.

    Unfortunately, this design creates problems when offlining CPUs for
    hibernation or other purposes. stimer-based clockevents are shut down
    relatively early in the offlining process, so clockevents_unbind_device()
    must be used to fallback to the LAPIC-based clockevents for the remainder
    of the offlining process. Furthermore, the late initialization and early
    shutdown of stimer-based clockevents doesn't work well on ARM64 since there
    is no other timer like the LAPIC to fallback to. So CPU onlining and
    offlining doesn't work properly.

    Fix this by recognizing that stimer Direct Mode is the normal path for
    newer versions of Hyper-V on x86/64, and the only path on other
    architectures. With stimer Direct Mode, stimer interrupts don't require any
    VMbus machinery. stimer clockevents can be initialized and shut down
    consistent with how it is done for other clockevent devices. While the old
    VMbus-based stimer interrupts must still be supported for backward
    compatibility on x86, that mode of operation can be treated as legacy.

    So add a new Hyper-V stimer entry in the CPU hotplug state list, and use
    that new state when in Direct Mode. Update the Hyper-V clocksource driver
    to allocate and initialize stimer clockevents earlier during boot. Update
    Hyper-V initialization and the VMbus driver to use this new design. As a
    result, the LAPIC timer is no longer used during boot or CPU
    onlining/offlining and clockevents_unbind_device() is not called. But
    retain the old design as a legacy implementation for older versions of
    Hyper-V that don't support Direct Mode.

    Signed-off-by: Michael Kelley
    Signed-off-by: Thomas Gleixner
    Tested-by: Dexuan Cui
    Reviewed-by: Dexuan Cui
    Link: https://lkml.kernel.org/r/1573607467-9456-1-git-send-email-mikelley@microsoft.com

    Michael Kelley
     

22 Oct, 2019

1 commit

  • Enable paravirtualization features when running under a hypervisor
    supporting the PV_TIME_ST hypercall.

    For each (v)CPU, we ask the hypervisor for the location of a shared
    page which the hypervisor will use to report stolen time to us. We set
    pv_time_ops to the stolen time function which simply reads the stolen
    value from the shared page for a VCPU. We guarantee single-copy
    atomicity using READ_ONCE which means we can also read the stolen
    time for another VCPU than the currently running one while it is
    potentially being updated by the hypervisor.

    Signed-off-by: Steven Price
    Signed-off-by: Marc Zyngier

    Steven Price
     

13 Jul, 2019

1 commit

  • Pull driver core and debugfs updates from Greg KH:
    "Here is the "big" driver core and debugfs changes for 5.3-rc1

    It's a lot of different patches, all across the tree due to some api
    changes and lots of debugfs cleanups.

    Other than the debugfs cleanups, in this set of changes we have:

    - bus iteration function cleanups

    - scripts/get_abi.pl tool to display and parse Documentation/ABI
    entries in a simple way

    - cleanups to Documenatation/ABI/ entries to make them parse easier
    due to typos and other minor things

    - default_attrs use for some ktype users

    - driver model documentation file conversions to .rst

    - compressed firmware file loading

    - deferred probe fixes

    All of these have been in linux-next for a while, with a bunch of
    merge issues that Stephen has been patient with me for"

    * tag 'driver-core-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (102 commits)
    debugfs: make error message a bit more verbose
    orangefs: fix build warning from debugfs cleanup patch
    ubifs: fix build warning after debugfs cleanup patch
    driver: core: Allow subsystems to continue deferring probe
    drivers: base: cacheinfo: Ensure cpu hotplug work is done before Intel RDT
    arch_topology: Remove error messages on out-of-memory conditions
    lib: notifier-error-inject: no need to check return value of debugfs_create functions
    swiotlb: no need to check return value of debugfs_create functions
    ceph: no need to check return value of debugfs_create functions
    sunrpc: no need to check return value of debugfs_create functions
    ubifs: no need to check return value of debugfs_create functions
    orangefs: no need to check return value of debugfs_create functions
    nfsd: no need to check return value of debugfs_create functions
    lib: 842: no need to check return value of debugfs_create functions
    debugfs: provide pr_fmt() macro
    debugfs: log errors when something goes wrong
    drivers: s390/cio: Fix compilation warning about const qualifiers
    drivers: Add generic helper to match by of_node
    driver_find_device: Unify the match function with class_find_device()
    bus_find_device: Unify the match callback with class_find_device
    ...

    Linus Torvalds
     

04 Jul, 2019

1 commit

  • The cacheinfo structures are alloced/freed by cpu online/offline
    callbacks. Originally these were only used by sysfs to expose the
    cache topology to user space. Without any in-kernel dependencies
    CPUHP_AP_ONLINE_DYN was an appropriate choice.

    resctrl has started using these structures to identify CPUs that
    share a cache. It updates its 'domain' structures from cpu
    online/offline callbacks. These depend on the cacheinfo structures
    (resctrl_online_cpu()->domain_add_cpu()->get_cache_id()->
    get_cpu_cacheinfo()).
    These also run as CPUHP_AP_ONLINE_DYN.

    Now that there is an in-kernel dependency, move the cacheinfo
    work earlier so we know its done before resctrl's CPUHP_AP_ONLINE_DYN
    work runs.

    Fixes: 2264d9c74dda1 ("x86/intel_rdt: Build structures for each resource based on cache topology")
    Cc:
    Cc: Fenghua Yu
    Cc: Reinette Chatre
    Signed-off-by: James Morse
    Link: https://lore.kernel.org/r/20190624173656.202407-1-james.morse@arm.com
    Signed-off-by: Greg Kroah-Hartman

    James Morse
     

26 Jun, 2019

1 commit

  • Exynos SoCs based on CA7/CA15 have 2 timer interfaces: custom Exynos MCT
    (Multi Core Timer) and standard ARM Architected Timers.

    There are use cases, where both timer interfaces are used simultanously.
    One of such examples is using Exynos MCT for the main system timer and
    ARM Architected Timers for the KVM and virtualized guests (KVM requires
    arch timers).

    Exynos Multi-Core Timer driver (exynos_mct) must be however started
    before ARM Architected Timers (arch_timer), because they both share some
    common hardware blocks (global system counter) and turning on MCT is
    needed to get ARM Architected Timer working properly.

    To ensure selecting Exynos MCT as the main system timer, increase MCT
    timer rating. To ensure proper starting order of both timers during
    suspend/resume cycle, increase MCT hotplug priority over ARM Archictected
    Timers.

    Signed-off-by: Marek Szyprowski
    Reviewed-by: Krzysztof Kozlowski
    Reviewed-by: Chanwoo Choi
    Signed-off-by: Daniel Lezcano

    Marek Szyprowski
     

15 Jun, 2019

1 commit

  • Adric Blake reported the following warning during suspend-resume:

    Enabling non-boot CPUs ...
    x86: Booting SMP configuration:
    smpboot: Booting Node 0 Processor 1 APIC 0x2
    unchecked MSR access error: WRMSR to 0x10f (tried to write 0x0000000000000000) \
    at rIP: 0xffffffff8d267924 (native_write_msr+0x4/0x20)
    Call Trace:
    intel_set_tfa
    intel_pmu_cpu_starting
    ? x86_pmu_dead_cpu
    x86_pmu_starting_cpu
    cpuhp_invoke_callback
    ? _raw_spin_lock_irqsave
    notify_cpu_starting
    start_secondary
    secondary_startup_64
    microcode: sig=0x806ea, pf=0x80, revision=0x96
    microcode: updated to revision 0xb4, date = 2019-04-01
    CPU1 is up

    The MSR in question is MSR_TFA_RTM_FORCE_ABORT and that MSR is emulated
    by microcode. The log above shows that the microcode loader callback
    happens after the PMU restoration, leading to the conjecture that
    because the microcode hasn't been updated yet, that MSR is not present
    yet, leading to the #GP.

    Add a microcode loader-specific hotplug vector which comes before
    the PERF vectors and thus executes earlier and makes sure the MSR is
    present.

    Fixes: 400816f60c54 ("perf/x86/intel: Implement support for TSX Force Abort")
    Reported-by: Adric Blake
    Signed-off-by: Borislav Petkov
    Reviewed-by: Thomas Gleixner
    Cc: Peter Zijlstra
    Cc:
    Cc: x86@kernel.org
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=203637

    Borislav Petkov
     

10 May, 2019

1 commit

  • Pull powerpc updates from Michael Ellerman:
    "Slightly delayed due to the issue with printk() calling
    probe_kernel_read() interacting with our new user access prevention
    stuff, but all fixed now.

    The only out-of-area changes are the addition of a cpuhp_state, small
    additions to Documentation and MAINTAINERS updates.

    Highlights:

    - Support for Kernel Userspace Access/Execution Prevention (like
    SMAP/SMEP/PAN/PXN) on some 64-bit and 32-bit CPUs. This prevents
    the kernel from accidentally accessing userspace outside
    copy_to/from_user(), or ever executing userspace.

    - KASAN support on 32-bit.

    - Rework of where we map the kernel, vmalloc, etc. on 64-bit hash to
    use the same address ranges we use with the Radix MMU.

    - A rewrite into C of large parts of our idle handling code for
    64-bit Book3S (ie. power8 & power9).

    - A fast path entry for syscalls on 32-bit CPUs, for a 12-17% speedup
    in the null_syscall benchmark.

    - On 64-bit bare metal we have support for recovering from errors
    with the time base (our clocksource), however if that fails
    currently we hang in __delay() and never crash. We now have support
    for detecting that case and short circuiting __delay() so we at
    least panic() and reboot.

    - Add support for optionally enabling the DAWR on Power9, which had
    to be disabled by default due to a hardware erratum. This has the
    effect of enabling hardware breakpoints for GDB, the downside is a
    badly behaved program could crash the machine by pointing the DAWR
    at cache inhibited memory. This is opt-in obviously.

    - xmon, our crash handler, gets support for a read only mode where
    operations that could change memory or otherwise disturb the system
    are disabled.

    Plus many clean-ups, reworks and minor fixes etc.

    Thanks to: Christophe Leroy, Akshay Adiga, Alastair D'Silva, Alexey
    Kardashevskiy, Andrew Donnellan, Aneesh Kumar K.V, Anju T Sudhakar,
    Anton Blanchard, Ben Hutchings, Bo YU, Breno Leitao, Cédric Le Goater,
    Christopher M. Riedl, Christoph Hellwig, Colin Ian King, David Gibson,
    Ganesh Goudar, Gautham R. Shenoy, George Spelvin, Greg Kroah-Hartman,
    Greg Kurz, Horia Geantă, Jagadeesh Pagadala, Joel Stanley, Joe
    Perches, Julia Lawall, Laurentiu Tudor, Laurent Vivier, Lukas Bulwahn,
    Madhavan Srinivasan, Mahesh Salgaonkar, Mathieu Malaterre, Michael
    Neuling, Mukesh Ojha, Nathan Fontenot, Nathan Lynch, Nicholas Piggin,
    Nick Desaulniers, Oliver O'Halloran, Peng Hao, Qian Cai, Ravi
    Bangoria, Rick Lindsley, Russell Currey, Sachin Sant, Stewart Smith,
    Sukadev Bhattiprolu, Thomas Huth, Tobin C. Harding, Tyrel Datwyler,
    Valentin Schneider, Wei Yongjun, Wen Yang, YueHaibing"

    * tag 'powerpc-5.2-1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (205 commits)
    powerpc/64s: Use early_mmu_has_feature() in set_kuap()
    powerpc/book3s/64: check for NULL pointer in pgd_alloc()
    powerpc/mm: Fix hugetlb page initialization
    ocxl: Fix return value check in afu_ioctl()
    powerpc/mm: fix section mismatch for setup_kup()
    powerpc/mm: fix redundant inclusion of pgtable-frag.o in Makefile
    powerpc/mm: Fix makefile for KASAN
    powerpc/kasan: add missing/lost Makefile
    selftests/powerpc: Add a signal fuzzer selftest
    powerpc/booke64: set RI in default MSR
    ocxl: Provide global MMIO accessors for external drivers
    ocxl: move event_fd handling to frontend
    ocxl: afu_irq only deals with IRQ IDs, not offsets
    ocxl: Allow external drivers to use OpenCAPI contexts
    ocxl: Create a clear delineation between ocxl backend & frontend
    ocxl: Don't pass pci_dev around
    ocxl: Split pci.c
    ocxl: Remove some unused exported symbols
    ocxl: Remove superfluous 'extern' from headers
    ocxl: read_pasid never returns an error, so make it void
    ...

    Linus Torvalds
     

03 May, 2019

1 commit


08 Apr, 2019

1 commit

  • The current handling of MSR_IA32_ENERGY_PERF_BIAS in the kernel is
    problematic, because it may cause changes made by user space to that
    MSR (with the help of the x86_energy_perf_policy tool, for example)
    to be lost every time a CPU goes offline and then back online as well
    as during system-wide power management transitions into sleep states
    and back into the working state.

    The first problem is that if the current EPB value for a CPU going
    online is 0 ('performance'), the kernel will change it to 6 ('normal')
    regardless of whether or not this is the first bring-up of that CPU.
    That also happens during system-wide resume from sleep states
    (including, but not limited to, hibernation). However, the EPB may
    have been adjusted by user space this way and the kernel should not
    blindly override that setting.

    The second problem is that if the platform firmware resets the EPB
    values for any CPUs during system-wide resume from a sleep state,
    the kernel will not restore their previous EPB values that may
    have been set by user space before the preceding system-wide
    suspend transition. Again, that behavior may at least be confusing
    from the user space perspective.

    In order to address these issues, rework the handling of
    MSR_IA32_ENERGY_PERF_BIAS so that the EPB value is saved on CPU
    offline and restored on CPU online as well as (for the boot CPU)
    during the syscore stages of system-wide suspend and resume
    transitions, respectively.

    However, retain the policy by which the EPB is set to 6 ('normal')
    on the first bring-up of each CPU if its initial value is 0, based
    on the observation that 0 may mean 'not initialized' just as well as
    'performance' in that case.

    While at it, move the MSR_IA32_ENERGY_PERF_BIAS handling code into
    a separate file and document it in Documentation/admin-guide.

    Fixes: abe48b108247 (x86, intel, power: Initialize MSR_IA32_ENERGY_PERF_BIAS)
    Fixes: b51ef52df71c (x86/cpu: Restore MSR_IA32_ENERGY_PERF_BIAS after resume)
    Reported-by: Thomas Renninger
    Signed-off-by: Rafael J. Wysocki
    Reviewed-by: Hannes Reinecke
    Acked-by: Borislav Petkov
    Acked-by: Thomas Gleixner

    Rafael J. Wysocki
     

23 Feb, 2019

1 commit

  • Add support for the Tegra210 timer that runs at oscillator clock
    (TMR10-TMR13). We need these timers to work as clock event device and to
    replace the ARMv8 architected timer due to it can't survive across the
    power cycle of the CPU core or CPUPORESET signal. So it can't be a wake-up
    source when CPU suspends in power down state.

    Also convert the original driver to use timer-of API.

    Cc: Daniel Lezcano
    Cc: Thomas Gleixner
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Joseph Lo
    Acked-by: Thierry Reding
    Acked-by: Jon Hunter
    Acked-by: Daniel Lezcano
    Signed-off-by: Daniel Lezcano

    Joseph Lo
     

06 Dec, 2018

1 commit

  • This patch adds a perf driver for the PMU UNCORE devices DDR4 Memory
    Controller(DMC) and Level 3 Cache(L3C). Each PMU supports up to 4
    counters. All counters lack overflow interrupt and are
    sampled periodically.

    Reviewed-by: Suzuki K Poulose
    Signed-off-by: Ganapatrao Kulkarni
    [will: consistent enum cpuhp_state naming]
    Signed-off-by: Will Deacon

    Kulkarni, Ganapatrao
     

22 Nov, 2018

1 commit

  • If the CPU assigned to the xgene PMU is taken offline, then subsequent
    perf invocations on the PMU will fail:

    # echo 0 > /sys/devices/system/cpu/cpu0/online
    # perf stat -a -e l3c0/cycle-count/,l3c0/write/ sleep 1
    Error:
    The sys_perf_event_open() syscall returned with 19 (No such device) for event (l3c0/cycle-count/).
    /bin/dmesg may provide additional information.
    No CONFIG_PERF_EVENTS=y kernel support configured?

    This patch implements a hotplug notifier in the xgene PMU driver so that
    the PMU context is migrated to another online CPU should its assigned
    CPU disappear.

    Acked-by: Mark Rutland
    Signed-off-by: Hoan Tran
    [will: Made naming of new cpuhp_state enum entry consistent]
    Signed-off-by: Will Deacon

    Hoan Tran
     

03 Nov, 2018

1 commit

  • The driver is for C-SKY SMP timer. It only supports oneshot event
    and 32bit overflow for clocksource. Per cpu core has one timer and
    all timers share one clock-counter-input from the same clocksource.

    This use mfcr&mtcr instructions to access the regs.

    Signed-off-by: Guo Ren
    Cc: Daniel Lezcano
    Cc: Thomas Gleixner
    Signed-off-by: Daniel Lezcano

    Guo Ren
     

24 Aug, 2018

1 commit

  • Pull ARM 32-bit SoC platform updates from Olof Johansson:
    "Most of the SoC updates in this cycle are cleanups and moves to more
    modern infrastructure:

    - Davinci was moved to common clock framework

    - OMAP1-based Amstrad E3 "Superphone" saw a bunch of cleanups to the
    keyboard interface (bitbanged AT keyboard via GPIO).

    - Removal of some stale code for Renesas platforms

    - Power management improvements for i.MX6LL"

    * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (112 commits)
    ARM: uniphier: select RESET_CONTROLLER
    arm64: uniphier: select RESET_CONTROLLER
    ARM: uniphier: remove empty Makefile
    ARM: exynos: Clear global variable on init error path
    ARM: exynos: Remove outdated maintainer information
    ARM: shmobile: Always enable ARCH_TIMER on SoCs with A7 and/or A15
    ARM: shmobile: r8a7779: hide unused r8a7779_platform_cpu_kill
    soc: r9a06g032: don't build SMP files for non-SMP config
    ARM: shmobile: Add the R9A06G032 SMP enabler driver
    ARM: at91: pm: configure wakeup sources for ULP1 mode
    ARM: at91: pm: add PMC fast startup registers defines
    ARM: at91: pm: Add ULP1 mode support
    ARM: at91: pm: Use ULP0 naming instead of slow clock
    ARM: hisi: handle of_iomap and fix missing of_node_put
    ARM: hisi: check of_iomap and fix missing of_node_put
    ARM: hisi: fix error handling and missing of_node_put
    ARM: mx5: Set the DBGEN bit in ARM_GPC register
    ARM: imx51: Configure M4IF to avoid visual artifacts
    ARM: imx: call imx6sx_cpuidle_init() conditionally for 6sll
    ARM: imx: fix i.MX6SLL build
    ...

    Linus Torvalds
     

20 Aug, 2018

1 commit

  • …l/git/palmer/riscv-linux

    Pull RISC-V updates from Palmer Dabbelt:
    "This contains some major improvements to the RISC-V port, including
    the necessary interrupt controller and timer support to actually make
    it to userspace. Support for three devices has been added:

    - the ISA-mandated timers on RISC-V systems.

    - the ISA-mandated first-level interrupt controller on RISC-V
    systems, which is handled as part of our core arch code because
    it's very small and tightly tied to the ISA.

    - SiFive's platform-level interrupt controller, which talks to the
    actual devices.

    In addition to these new devices, there are a handful of cleanups all
    over the RISC-V tree:

    - build fixes for various configurations:
    * A fix to the vDSO build's makefile so it respects CFLAGS.
    * The addition of __lshrti3, a libgcc derived function necessary
    for some 32-bit configurations.
    * !SMP && PERF_EVENTS

    - Cleanups to the arch code to remove the remnants of old versions of
    the drivers that were just properly submitted.
    * Some dead code from the timer driver, most of which wasn't ever
    even compiled.
    * Cleanups of some interrupt #defines, which are now local to the
    interrupt handling code.

    - Fixes to ptrace(), which while not being sufficient to fully make
    GDB work are at least sufficient to get simple GDB tasks to work.

    - Early printk support via RISC-V's architecturally mandated SBI
    console device.

    - A fix to our early debug trap handler to ensure it's always
    aligned.

    These patches have all been through a fairly extensive review process,
    but as this enables a whole pile of functionality (ie, userspace) I'm
    confident we'll need to submit a few more patches. The only concrete
    issues I know about are the sys_riscv_flush_icache patches, but as I
    managed to screw those up on Friday I figured it'd be best to let them
    bake another week.

    This tag boots a Fedora root filesystem on QEMU's master branch for
    me, and before this morning's rebase (from 4.18-rc8 to 4.18) it booted
    on the HiFive Unleashed.

    Thanks to Christoph Hellwig and the other guys at WD for getting the
    new drivers in shape!"

    * tag 'riscv-for-linus-4.19-mw0' of git://git.kernel.org/pub/scm/linux/kernel/git/palmer/riscv-linux:
    dt-bindings: interrupt-controller: SiFive Plaform Level Interrupt Controller
    dt-bindings: interrupt-controller: RISC-V local interrupt controller
    RISC-V: Fix !CONFIG_SMP compilation error
    irqchip: add a SiFive PLIC driver
    RISC-V: Add the directive for alignment of stvec's value
    clocksource: new RISC-V SBI timer driver
    RISC-V: implement low-level interrupt handling
    RISC-V: add a definition for the SIE SEIE bit
    RISC-V: remove INTERRUPT_CAUSE_* defines from asm/irq.h
    RISC-V: simplify software interrupt / IPI code
    RISC-V: remove timer leftovers
    RISC-V: Add early printk support via the SBI console
    RISC-V: Don't increment sepc after breakpoint.
    RISC-V: implement __lshrti3.
    RISC-V: Use KBUILD_CFLAGS instead of KCFLAGS when building the vDSO

    Linus Torvalds
     

13 Aug, 2018

1 commit

  • The RISC-V ISA defines a per-hart real-time clock and timer, which is
    present on all systems. The clock is accessed via the 'rdtime'
    pseudo-instruction (which reads a CSR), and the timer is set via an SBI
    call.

    Contains various improvements from Atish Patra .

    Signed-off-by: Dmitriy Cherkasov
    Signed-off-by: Palmer Dabbelt
    [hch: remove dead code, add SPDX tags, used riscv_of_processor_hart(),
    minor cleanups, merged hotplug cpu support and other improvements
    from Atish]
    Signed-off-by: Christoph Hellwig
    Acked-by: Thomas Gleixner
    Reviewed-by: Atish Patra
    Signed-off-by: Palmer Dabbelt

    Palmer Dabbelt
     

03 Jul, 2018

1 commit

  • Oleg suggested to replace the "watchdog/%u" threads with
    cpu_stop_work. That removes one thread per CPU while at the same time
    fixes softlockup vs SCHED_DEADLINE.

    But more importantly, it does away with the single
    smpboot_update_cpumask_percpu_thread() user, which allows
    cleanups/shrinkage of the smpboot interface.

    Suggested-by: Oleg Nesterov
    Signed-off-by: Peter Zijlstra (Intel)
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

27 Jun, 2018

1 commit

  • The current call site in boot_secondary is causing sleep in invalid context
    warnings, as this part of the code is running with interrrupts disabled and
    some of the calls into the clock framework might sleep on a mutex.

    Convert the secondary CPU clock sync to a hotplug state, which allows to
    call it from a sleepable context.

    Signed-off-by: Lucas Stach
    Signed-off-by: Gregory CLEMENT

    Lucas Stach
     

16 Mar, 2018

1 commit

  • The Analog Devices Blackfin port was added in 2007 and was rather
    active for a while, but all work on it has come to a standstill
    over time, as Analog have changed their product line-up.

    Aaron Wu confirmed that the architecture port is no longer relevant,
    and multiple people suggested removing blackfin independently because
    of some of its oddities like a non-working SMP port, and the amount of
    duplication between the chip variants, which cause extra work when
    doing cross-architecture changes.

    Link: https://docs.blackfin.uclinux.org/
    Acked-by: Aaron Wu
    Acked-by: Bryan Wu
    Cc: Steven Miao
    Cc: Mike Frysinger
    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     

23 Feb, 2018

2 commits

  • Now that arch/metag/ has been removed, remove the metag generic
    per-thread timer driver. It is of no value without the architecture
    code.

    Signed-off-by: James Hogan
    Acked-by: Daniel Lezcano
    Cc: Thomas Gleixner
    Cc: linux-metag@vger.kernel.org

    James Hogan
     
  • Now that arch/metag/ has been removed, drop a bunch of metag references
    in various codes across the whole tree:
    - VM_GROWSUP and __VM_ARCH_SPECIFIC_1.
    - MT_METAG_* ELF note types.
    - METAG Kconfig dependencies (FRAME_POINTER) and ranges
    (MAX_STACK_SIZE_MB).
    - metag cases in tools (checkstack.pl, recordmcount.c, perf).

    Signed-off-by: James Hogan
    Acked-by: Steven Rostedt (VMware)
    Acked-by: Peter Zijlstra (Intel)
    Reviewed-by: Guenter Roeck
    Cc: Ingo Molnar
    Cc: Arnaldo Carvalho de Melo
    Cc: Alexander Shishkin
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: linux-mm@kvack.org
    Cc: linux-metag@vger.kernel.org

    James Hogan
     

03 Feb, 2018

1 commit

  • Pull ARM updates from Russell King:

    - StrongARM SA1111 updates to modernise and remove cruft

    - Add StrongARM gpio drivers for board GPIOs

    - Verify size of zImage is what we expect to avoid issues with
    appended DTB

    - nommu updates from Vladimir Murzin

    - page table read-write-execute checking from Jinbum Park

    - Broadcom Brahma-B15 cache updates from Florian Fainelli

    - Avoid failure with kprobes test caused by inappropriately
    placed kprobes

    - Remove __memzero optimisation (which was incorrectly being
    used directly by some drivers)

    * 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm: (32 commits)
    ARM: 8745/1: get rid of __memzero()
    ARM: 8744/1: don't discard memblock for kexec
    ARM: 8743/1: bL_switcher: add MODULE_LICENSE tag
    ARM: 8742/1: Always use REFCOUNT_FULL
    ARM: 8741/1: B15: fix unused label warnings
    ARM: 8740/1: NOMMU: Make sure we do not hold stale data in mem[] array
    ARM: 8739/1: NOMMU: Setup VBAR/Hivecs for secondaries cores
    ARM: 8738/1: Disable CONFIG_DEBUG_VIRTUAL for NOMMU
    ARM: 8737/1: mm: dump: add checking for writable and executable
    ARM: 8736/1: mm: dump: make the page table dumping seq_file
    ARM: 8735/1: mm: dump: make page table dumping reusable
    ARM: sa1100/neponset: add GPIO drivers for control and modem registers
    ARM: sa1100/assabet: add BCR/BSR GPIO driver
    ARM: 8734/1: mm: idmap: Mark variables as ro_after_init
    ARM: 8733/1: hw_breakpoint: Mark variables as __ro_after_init
    ARM: 8732/1: NOMMU: Allow userspace to access background MPU region
    ARM: 8727/1: MAINTAINERS: Update brcmstb entries to cover B15 code
    ARM: 8728/1: B15: Register reboot notifier for KEXEC
    ARM: 8730/1: B15: Add suspend/resume hooks
    ARM: 8726/1: B15: Add CPU hotplug awareness
    ...

    Linus Torvalds
     

31 Jan, 2018

1 commit

  • Pull arm64 updates from Catalin Marinas:
    "The main theme of this pull request is security covering variants 2
    and 3 for arm64. I expect to send additional patches next week
    covering an improved firmware interface (requires firmware changes)
    for variant 2 and way for KPTI to be disabled on unaffected CPUs
    (Cavium's ThunderX doesn't work properly with KPTI enabled because of
    a hardware erratum).

    Summary:

    - Security mitigations:
    - variant 2: invalidate the branch predictor with a call to
    secure firmware
    - variant 3: implement KPTI for arm64

    - 52-bit physical address support for arm64 (ARMv8.2)

    - arm64 support for RAS (firmware first only) and SDEI (software
    delegated exception interface; allows firmware to inject a RAS
    error into the OS)

    - perf support for the ARM DynamIQ Shared Unit PMU

    - CPUID and HWCAP bits updated for new floating point multiplication
    instructions in ARMv8.4

    - remove some virtual memory layout printks during boot

    - fix initial page table creation to cope with larger than 32M kernel
    images when 16K pages are enabled"

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (104 commits)
    arm64: Fix TTBR + PAN + 52-bit PA logic in cpu_do_switch_mm
    arm64: Turn on KPTI only on CPUs that need it
    arm64: Branch predictor hardening for Cavium ThunderX2
    arm64: Run enable method for errata work arounds on late CPUs
    arm64: Move BP hardening to check_and_switch_context
    arm64: mm: ignore memory above supported physical address size
    arm64: kpti: Fix the interaction between ASID switching and software PAN
    KVM: arm64: Emulate RAS error registers and set HCR_EL2's TERR & TEA
    KVM: arm64: Handle RAS SErrors from EL2 on guest exit
    KVM: arm64: Handle RAS SErrors from EL1 on guest exit
    KVM: arm64: Save ESR_EL2 on guest SError
    KVM: arm64: Save/Restore guest DISR_EL1
    KVM: arm64: Set an impdef ESR for Virtual-SError using VSESR_EL2.
    KVM: arm/arm64: mask/unmask daif around VHE guests
    arm64: kernel: Prepare for a DISR user
    arm64: Unconditionally enable IESB on exception entry/return for firmware-first
    arm64: kernel: Survive corrected RAS errors notified by SError
    arm64: cpufeature: Detect CPU RAS Extentions
    arm64: sysreg: Move to use definitions for all the SCTLR bits
    arm64: cpufeature: __this_cpu_has_cap() shouldn't stop early
    ...

    Linus Torvalds
     

21 Jan, 2018

1 commit