13 Feb, 2020

1 commit


11 Feb, 2020

1 commit

  • The entire asm/archrandom.h header is generically included via
    linux/archrandom.h only when CONFIG_ARCH_RANDOM is already set, so the
    stub definitions of __arm64_rndr() and __early_cpu_has_rndr() are only
    visible to KASLR if it explicitly includes the arch-internal header.

    Acked-by: Mark Brown
    Signed-off-by: Robin Murphy
    Signed-off-by: Will Deacon

    Robin Murphy
     

10 Feb, 2020

8 commits

  • The commit f5bfdc8e3947 ("locking/osq: Use optimized spinning loop for
    arm64") introduced a warning from Clang because vcpu_is_preempted() is
    compiled away,

    kernel/locking/osq_lock.c:25:19: warning: unused function 'node_cpu'
    [-Wunused-function]
    static inline int node_cpu(struct optimistic_spin_node *node)
    ^
    1 warning generated.

    Fix it by converting vcpu_is_preempted() to a static inline function.

    Fixes: f5bfdc8e3947 ("locking/osq: Use optimized spinning loop for arm64")
    Acked-by: Waiman Long
    Signed-off-by: Qian Cai
    Signed-off-by: Will Deacon

    Qian Cai
     
  • When all CPUs in the system implement the SSBS extension, the SSBS field
    in PSTATE is the definitive indication of the mitigation state. Further,
    when the CPUs implement the SSBS manipulation instructions (advertised
    to userspace via an HWCAP), EL0 can toggle the SSBS field directly and
    so we cannot rely on any shadow state such as TIF_SSBD at all.

    Avoid forcing the SSBS field in context-switch on such a system, and
    simply rely on the PSTATE register instead.

    Cc:
    Cc: Catalin Marinas
    Cc: Srinivas Ramana
    Fixes: cbdf8a189a66 ("arm64: Force SSBS on context switch")
    Reviewed-by: Marc Zyngier
    Signed-off-by: Will Deacon

    Will Deacon
     
  • Use shared sysctl variables for zero and one constants, as in
    commit eec4844fae7c ("proc/sysctl: add shared variables for range check")

    Fixes: 63f0c6037965 ("arm64: Introduce prctl() options to control the tagged user addresses ABI")
    Signed-off-by: Matteo Croce
    Signed-off-by: Will Deacon

    Matteo Croce
     
  • There is a redundant do_sp_pc_abort() declaration in exceptions.h which can
    be removed. Also do_el0_ia_bp_hardening() as been already been dropped with
    the commit bfe298745afc ("arm64: entry-common: don't touch daif before
    bp-hardening") and hence does not need a declaration any more. This should
    not introduce any functional change.

    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: James Morse
    Cc: Thomas Gleixner
    Cc: linux-kernel@vger.kernel.org
    Acked-by: Mark Rutland
    Signed-off-by: Anshuman Khandual
    Signed-off-by: Will Deacon

    Anshuman Khandual
     
  • Pull more Kbuild updates from Masahiro Yamada:

    - fix randconfig to generate a sane .config

    - rename hostprogs-y / always to hostprogs / always-y, which are more
    natual syntax.

    - optimize scripts/kallsyms

    - fix yes2modconfig and mod2yesconfig

    - make multiple directory targets ('make foo/ bar/') work

    * tag 'kbuild-v5.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
    kbuild: make multiple directory targets work
    kconfig: Invalidate all symbols after changing to y or m.
    kallsyms: fix type of kallsyms_token_table[]
    scripts/kallsyms: change table to store (strcut sym_entry *)
    scripts/kallsyms: rename local variables in read_symbol()
    kbuild: rename hostprogs-y/always to hostprogs/always-y
    kbuild: fix the document to use extra-y for vmlinux.lds
    kconfig: fix broken dependency in randconfig-generated .config

    Linus Torvalds
     
  • Pull x86 fixes from Thomas Gleixner:
    "A set of fixes for X86:

    - Ensure that the PIT is set up when the local APIC is disable or
    configured in legacy mode. This is caused by an ordering issue
    introduced in the recent changes which skip PIT initialization when
    the TSC and APIC frequencies are already known.

    - Handle malformed SRAT tables during early ACPI parsing which caused
    an infinite loop anda boot hang.

    - Fix a long standing race in the affinity setting code which affects
    PCI devices with non-maskable MSI interrupts. The problem is caused
    by the non-atomic writes of the MSI address (destination APIC id)
    and data (vector) fields which the device uses to construct the MSI
    message. The non-atomic writes are mandated by PCI.

    If both fields change and the device raises an interrupt after
    writing address and before writing data, then the MSI block
    constructs a inconsistent message which causes interrupts to be
    lost and subsequent malfunction of the device.

    The fix is to redirect the interrupt to the new vector on the
    current CPU first and then switch it over to the new target CPU.
    This allows to observe an eventually raised interrupt in the
    transitional stage (old CPU, new vector) to be observed in the APIC
    IRR and retriggered on the new target CPU and the new vector.

    The potential spurious interrupts caused by this are harmless and
    can in the worst case expose a buggy driver (all handlers have to
    be able to deal with spurious interrupts as they can and do happen
    for various reasons).

    - Add the missing suspend/resume mechanism for the HYPERV hypercall
    page which prevents resume hibernation on HYPERV guests. This
    change got lost before the merge window.

    - Mask the IOAPIC before disabling the local APIC to prevent
    potentially stale IOAPIC remote IRR bits which cause stale
    interrupt lines after resume"

    * tag 'x86-urgent-2020-02-09' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/apic: Mask IOAPIC entries when disabling the local APIC
    x86/hyperv: Suspend/resume the hypercall page for hibernation
    x86/apic/msi: Plug non-maskable MSI affinity race
    x86/boot: Handle malformed SRAT tables during early ACPI parsing
    x86/timer: Don't skip PIT setup when APIC is disabled or in legacy mode

    Linus Torvalds
     
  • Pull interrupt fixes from Thomas Gleixner:
    "A set of fixes for the interrupt subsystem:

    - Provision only ACPI enabled redistributors on GICv3

    - Use the proper command colums when building the INVALL command for
    the GICv3-ITS

    - Ensure the allocation of the L2 vPE table for GICv4.1

    - Correct the GICv4.1 VPROBASER programming so it uses the proper
    size

    - A set of small GICv4.1 tidy up patches

    - Configuration cleanup for C-SKY interrupt chip

    - Clarify the function documentation for irq_set_wake() to document
    that the wakeup functionality is orthogonal to the irq
    disable/enable mechanism"

    * tag 'irq-urgent-2020-02-09' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    irqchip/gic-v3-its: Rename VPENDBASER/VPROPBASER accessors
    irqchip/gic-v3-its: Remove superfluous WARN_ON
    irqchip/gic-v4.1: Drop 'tmp' in inherit_vpe_l1_table_from_rd()
    irqchip/gic-v4.1: Ensure L2 vPE table is allocated at RD level
    irqchip/gic-v4.1: Set vpe_l1_base for all redistributors
    irqchip/gic-v4.1: Fix programming of GICR_VPROPBASER_4_1_SIZE
    genirq: Clarify that irq wake state is orthogonal to enable/disable
    irqchip/gic-v3-its: Reference to its_invall_cmd descriptor when building INVALL
    irqchip: Some Kconfig cleanup for C-SKY
    irqchip/gic-v3: Only provision redistributors that are enabled in ACPI

    Linus Torvalds
     
  • Pull EFI fix from Thomas Gleixner:
    "A single fix for a EFI boot regression on X86 which was caused by the
    recent rework of the EFI memory map parsing. On systems with invalid
    memmap entries the cleanup function uses an value which cannot be
    relied on in this stage. Use the actual EFI memmap entry instead"

    * tag 'efi-urgent-2020-02-09' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    efi/x86: Fix boot regression on systems with invalid memmap entries

    Linus Torvalds
     

09 Feb, 2020

7 commits

  • Pull powerpc fixes from Michael Ellerman:

    - Fix an existing bug in our user access handling, exposed by one of
    the bug fixes we merged this cycle.

    - A fix for a boot hang on 32-bit with CONFIG_TRACE_IRQFLAGS and the
    recently added CONFIG_VMAP_STACK.

    Thanks to: Christophe Leroy, Guenter Roeck.

    * tag 'powerpc-5.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc: Fix CONFIG_TRACE_IRQFLAGS with CONFIG_VMAP_STACK
    powerpc/futex: Fix incorrect user access blocking

    Linus Torvalds
     
  • Pull ARM SoC late updates from Olof Johansson:
    "This is some material that we picked up into our tree late, or that
    had more complex dependencies on more than one topic branch that makes
    sense to keep separately.

    - TI support for secure accelerators and hwrng on OMAP4/5

    - TI camera changes for dra7 and am437x and SGX improvement due to
    better reset control support on am335x, am437x and dra7

    - Davinci moves to proper clocksource on DM365, and regulator/audio
    improvements for DM365 and DM644x eval boards"

    * tag 'armsoc-late' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (32 commits)
    ARM: dts: omap4-droid4: Enable hdq for droid4 ds250x 1-wire battery nvmem
    ARM: dts: motorola-cpcap-mapphone: Configure calibration interrupt
    ARM: dts: Configure interconnect target module for am437x sgx
    ARM: dts: Configure sgx for dra7
    ARM: dts: Configure rstctrl reset for am335x SGX
    ARM: dts: dra7: Add ti-sysc node for VPE
    ARM: dts: dra7: add vpe clkctrl node
    ARM: dts: am43x-epos-evm: Add VPFE and OV2659 entries
    ARM: dts: am437x-sk-evm: Add VPFE and OV2659 entries
    ARM: dts: am43xx: add support for clkout1 clock
    arm: dts: dra76-evm: Add CAL and OV5640 nodes
    arm: dtsi: dra76x: Add CAL dtsi node
    arm: dts: dra72-evm-common: Add entries for the CSI2 cameras
    ARM: dts: DRA72: Add CAL dtsi node
    ARM: dts: dra7-l4: Add ti-sysc node for CAM
    ARM: OMAP: DRA7xx: Make CAM clock domain SWSUP only
    ARM: dts: dra7: add cam clkctrl node
    ARM: OMAP2+: Drop legacy platform data for omap4 des
    ARM: OMAP2+: Drop legacy platform data for omap4 sham
    ARM: OMAP2+: Drop legacy platform data for omap4 aes
    ...

    Linus Torvalds
     
  • Pull ARM SoC defconfig updates from Olof Johansson:
    "We keep this in a separate branch to avoid cross-branch conflicts, but
    most of the material here is fairly boring -- some new drivers turned
    on for hardware since they were merged, and some refreshed files due
    to time having moved a lot of entries around"

    * tag 'armsoc-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (38 commits)
    ARM: configs: at91: enable MMC_SDHCI_OF_AT91 and MICROCHIP_PIT64B
    arm64: defconfig: Enable Broadcom's GENET Ethernet controller
    ARM: multi_v7_defconfig: Enable devfreq thermal integration
    ARM: exynos_defconfig: Enable devfreq thermal integration
    ARM: multi_v7_defconfig: Enable NFS v4.1 and v4.2
    ARM: exynos_defconfig: Enable NFS v4.1 and v4.2
    arm64: defconfig: Enable Actions Semi specific drivers
    arm64: defconfig: Enable Broadcom's STB PCIe controller
    arm64: defconfig: Enable CONFIG_CLK_IMX8MP by default
    ARM: configs: at91: enable config flags for sam9x60 SoC
    ARM: configs: at91: use savedefconfig
    arm64: defconfig: Enable tegra XUDC support
    ARM: defconfig: gemini: Update defconfig
    arm64: defconfig: enable CONFIG_ARM_QCOM_CPUFREQ_NVMEM
    arm64: defconfig: enable CONFIG_QCOM_CPR
    arm64: defconfig: Enable HFPLL
    arm64: defconfig: Enable CRYPTO_DEV_FSL_CAAM
    ARM: imx_v6_v7_defconfig: Select the TFP410 driver
    ARM: imx_v6_v7_defconfig: Enable NFS_V4_1 and NFS_V4_2 support
    arm64: defconfig: Enable ATH10K_SNOC
    ...

    Linus Torvalds
     
  • 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
     
  • Pull ARM Device-tree updates from Olof Johansson:
    "New SoCs:

    - Atmel/Microchip SAM9X60 (ARM926 SoC)

    - OMAP 37xx gets split into AM3703/AM3715/DM3725, who are all
    variants of it with different GPU/media IP configurations.

    - ST stm32mp15 SoCs (1-2 Cortex-A7, CAN, GPU depending on SKU)

    - ST Ericsson ab8505 (variant of ab8500) and db8520 (variant of
    db8500)

    - Unisoc SC9863A SoC (8x Cortex-A55 mobile chipset w/ GPU, modem)

    - Qualcomm SC7180 (8-core 64bit SoC, unnamed CPU class)

    New boards:

    - Allwinner:
    + Emlid Neutis SoM (H3 variant)
    + Libre Computer ALL-H3-IT
    + PineH64 Model B

    - Amlogic:
    + Libretech Amlogic GX PC (s905d and s912-based variants)

    - Atmel/Microchip:
    + Kizboxmini, sam9x60 EK, sama5d27 Wireless SOM (wlsom1)

    - Marvell:
    + Armada 385-based SolidRun Clearfog GTR

    - NXP:
    + Gateworks GW59xx boards based on i.MX6/6Q/6QDL
    + Tolino Shine 3 eBook reader (i.MX6sl)
    + Embedded Artists COM (i.MX7ULP)
    + SolidRun CLearfog CX/ITX and HoneyComb (LX2160A-based systems)
    + Google Coral Edge TPU (i.MX8MQ)

    - Rockchip:
    + Radxa Dalang Carrier (supports rk3288 and rk3399 SOMs)
    + Radxa Rock Pi N10 (RK3399Pro-based)
    + VMARC RK3399Pro SOM

    - ST:
    + Reference boards for stm32mp15

    - ST Ericsson:
    + Samsung Galaxy S III mini (GT-I8190)
    + HREF520 reference board for DB8520

    - TI OMAP:
    + Gen1 Amazon Echo (OMAP3630-based)

    - Qualcomm:
    + Inforce 6640 Single Board Computer (msm8996-based)
    + SC7180 IDP (SC7180-based)"

    * tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (623 commits)
    dt-bindings: fix compilation error of the example in marvell,mmp3-hsic-phy.yaml
    arm64: dts: ti: k3-am654-base-board: Add CSI2 OV5640 camera
    arm64: dts: ti: k3-am65-main Add CAL node
    arm64: dts: ti: k3-j721e-main: Add McASP nodes
    arm64: dts: ti: k3-am654-main: Add McASP nodes
    arm64: dts: ti: k3-j721e: DMA support
    arm64: dts: ti: k3-j721e-main: Move secure proxy and smmu under main_navss
    arm64: dts: ti: k3-j721e-main: Correct main NAVSS representation
    arm64: dts: ti: k3-j721e: Correct the address for MAIN NAVSS
    arm64: dts: ti: k3-am65: DMA support
    arm64: dts: ti: k3-am65-main: Move secure proxy under cbass_main_navss
    arm64: dts: ti: k3-am65-main: Correct main NAVSS representation
    ARM: dts: aspeed: rainier: Add UCD90320 power sequencer
    ARM: dts: aspeed: rainier: Switch PSUs to unknown version
    arm64: dts: rockchip: Kill off "simple-panel" compatibles
    ARM: dts: rockchip: Kill off "simple-panel" compatibles
    arm64: dts: rockchip: rename dwmmc node names to mmc
    ARM: dts: rockchip: rename dwmmc node names to mmc
    arm64: dts: exynos: Rename Samsung and Exynos to lowercase
    arm64: dts: uniphier: add reset-names to NAND controller node
    ...

    Linus Torvalds
     
  • Pull ARM SoC platform updates from Olof Johansson:
    "Most of these are smaller fixes that have accrued, and some continued
    cleanup of OMAP platforms towards shared frameworks.

    One new SoC from Atmel/Microchip: sam9x60"

    * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (35 commits)
    ARM: OMAP2+: Fix undefined reference to omap_secure_init
    ARM: s3c64xx: Drop unneeded select of TIMER_OF
    ARM: exynos: Drop unneeded select of MIGHT_HAVE_CACHE_L2X0
    ARM: s3c24xx: Switch to atomic pwm API in rx1950
    ARM: OMAP2+: sleep43xx: Call secure suspend/resume handlers
    ARM: OMAP2+: Use ARM SMC Calling Convention when OP-TEE is available
    ARM: OMAP2+: Introduce check for OP-TEE in omap_secure_init()
    ARM: OMAP2+: Add omap_secure_init callback hook for secure initialization
    ARM: at91: Documentation: add sam9x60 product and datasheet
    ARM: at91: pm: use of_device_id array to find the proper shdwc node
    ARM: at91: pm: use SAM9X60 PMC's compatible
    ARM: imx: only select ARM_ERRATA_814220 for ARMv7-A
    ARM: zynq: use physical cpuid in zynq_slcr_cpu_stop/start
    ARM: tegra: Use clk_m CPU on Tegra124 LP1 resume
    ARM: tegra: Modify reshift divider during LP1
    ARM: tegra: Enable PLLP bypass during Tegra124 LP1
    ARM: samsung: Rename Samsung and Exynos to lowercase
    ARM: exynos: Correct the help text for platform Kconfig option
    ARM: bcm: Select ARM_AMBA for ARCH_BRCMSTB
    ARM: brcmstb: Add debug UART entry for 7216
    ...

    Linus Torvalds
     
  • Pull vfs file system parameter updates from Al Viro:
    "Saner fs_parser.c guts and data structures. The system-wide registry
    of syntax types (string/enum/int32/oct32/.../etc.) is gone and so is
    the horror switch() in fs_parse() that would have to grow another case
    every time something got added to that system-wide registry.

    New syntax types can be added by filesystems easily now, and their
    namespace is that of functions - not of system-wide enum members. IOW,
    they can be shared or kept private and if some turn out to be widely
    useful, we can make them common library helpers, etc., without having
    to do anything whatsoever to fs_parse() itself.

    And we already get that kind of requests - the thing that finally
    pushed me into doing that was "oh, and let's add one for timeouts -
    things like 15s or 2h". If some filesystem really wants that, let them
    do it. Without somebody having to play gatekeeper for the variants
    blessed by direct support in fs_parse(), TYVM.

    Quite a bit of boilerplate is gone. And IMO the data structures make a
    lot more sense now. -200LoC, while we are at it"

    * 'merge.nfs-fs_parse.1' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (25 commits)
    tmpfs: switch to use of invalfc()
    cgroup1: switch to use of errorfc() et.al.
    procfs: switch to use of invalfc()
    hugetlbfs: switch to use of invalfc()
    cramfs: switch to use of errofc() et.al.
    gfs2: switch to use of errorfc() et.al.
    fuse: switch to use errorfc() et.al.
    ceph: use errorfc() and friends instead of spelling the prefix out
    prefix-handling analogues of errorf() and friends
    turn fs_param_is_... into functions
    fs_parse: handle optional arguments sanely
    fs_parse: fold fs_parameter_desc/fs_parameter_spec
    fs_parser: remove fs_parameter_description name field
    add prefix to fs_context->log
    ceph_parse_param(), ceph_parse_mon_ips(): switch to passing fc_log
    new primitive: __fs_parse()
    switch rbd and libceph to p_log-based primitives
    struct p_log, variants of warnf() et.al. taking that one instead
    teach logfc() to handle prefices, give it saner calling conventions
    get rid of cg_invalf()
    ...

    Linus Torvalds
     

08 Feb, 2020

8 commits

  • …/maz/arm-platforms into irq/urgent

    Pull irqchip fixes for 5.6, take #1 from Marc Zyngier:

    - Guarantee allocation of L2 vPE table for GICv4.1
    - Fix GICv4.1 VPROPBASER programming
    - Numerous GICv4.1 tidy ups
    - Fix disabled GICv3 redistributor provisioning with ACPI
    - KConfig cleanup for C-SKY

    Thomas Gleixner
     
  • When CONFIG_PROVE_LOCKING is selected together with (now default)
    CONFIG_VMAP_STACK, kernel enter deadlock during boot.

    At the point of checking whether interrupts are enabled or not, the
    value of MSR saved on stack is read using the physical address of the
    stack. But at this point, when using VMAP stack the DATA MMU
    translation has already been re-enabled, leading to deadlock.

    Don't use the physical address of the stack when
    CONFIG_VMAP_STACK is set.

    Signed-off-by: Christophe Leroy
    Reported-by: Guenter Roeck
    Fixes: 028474876f47 ("powerpc/32: prepare for CONFIG_VMAP_STACK")
    Tested-by: Guenter Roeck
    Signed-off-by: Michael Ellerman
    Link: https://lore.kernel.org/r/daeacdc0dec0416d1c587cc9f9e7191ad3068dc0.1581095957.git.christophe.leroy@c-s.fr

    Christophe Leroy
     
  • The early versions of our kernel user access prevention (KUAP) were
    written by Russell and Christophe, and didn't have separate
    read/write access.

    At some point I picked up the series and added the read/write access,
    but I failed to update the usages in futex.h to correctly allow read
    and write.

    However we didn't notice because of another bug which was causing the
    low-level code to always enable read and write. That bug was fixed
    recently in commit 1d8f739b07bd ("powerpc/kuap: Fix set direction in
    allow/prevent_user_access()").

    futex_atomic_cmpxchg_inatomic() is passed the user address as %3 and
    does:

    1: lwarx %1, 0, %3
    cmpw 0, %1, %4
    bne- 3f
    2: stwcx. %5, 0, %3

    Which clearly loads and stores from/to %3. The logic in
    arch_futex_atomic_op_inuser() is similar, so fix both of them to use
    allow_read_write_user().

    Without this fix, and with PPC_KUAP_DEBUG=y, we see eg:

    Bug: Read fault blocked by AMR!
    WARNING: CPU: 94 PID: 149215 at arch/powerpc/include/asm/book3s/64/kup-radix.h:126 __do_page_fault+0x600/0xf30
    CPU: 94 PID: 149215 Comm: futex_requeue_p Tainted: G W 5.5.0-rc7-gcc9x-g4c25df5640ae #1
    ...
    NIP [c000000000070680] __do_page_fault+0x600/0xf30
    LR [c00000000007067c] __do_page_fault+0x5fc/0xf30
    Call Trace:
    [c00020138e5637e0] [c00000000007067c] __do_page_fault+0x5fc/0xf30 (unreliable)
    [c00020138e5638c0] [c00000000000ada8] handle_page_fault+0x10/0x30
    --- interrupt: 301 at cmpxchg_futex_value_locked+0x68/0xd0
    LR = futex_lock_pi_atomic+0xe0/0x1f0
    [c00020138e563bc0] [c000000000217b50] futex_lock_pi_atomic+0x80/0x1f0 (unreliable)
    [c00020138e563c30] [c00000000021b668] futex_requeue+0x438/0xb60
    [c00020138e563d60] [c00000000021c6cc] do_futex+0x1ec/0x2b0
    [c00020138e563d90] [c00000000021c8b8] sys_futex+0x128/0x200
    [c00020138e563e20] [c00000000000b7ac] system_call+0x5c/0x68

    Fixes: de78a9c42a79 ("powerpc: Add a framework for Kernel Userspace Access Protection")
    Cc: stable@vger.kernel.org # v5.2+
    Reported-by: syzbot+e808452bad7c375cbee6@syzkaller-ppc64.appspotmail.com
    Signed-off-by: Michael Ellerman
    Reviewed-by: Christophe Leroy
    Link: https://lore.kernel.org/r/20200207122145.11928-1-mpe@ellerman.id.au

    Michael Ellerman
     
  • V{PEND,PROP}BASER registers are actually located in VLPI_base frame
    of the *redistributor*. Rename their accessors to reflect this fact.

    No functional changes.

    Signed-off-by: Zenghui Yu
    Signed-off-by: Marc Zyngier
    Link: https://lore.kernel.org/r/20200206075711.1275-7-yuzenghui@huawei.com

    Zenghui Yu
     
  • Pull virtio updates from Michael Tsirkin:
    "Some bug fixes/cleanups.

    The deprecated scsi passthrough for virtio_blk is removed"

    * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
    virtio_balloon: Fix memory leaks on errors in virtballoon_probe()
    virtio-balloon: Fix memory leak when unloading while hinting is in progress
    virtio_balloon: prevent pfn array overflow
    virtio-blk: remove VIRTIO_BLK_F_SCSI support
    virtio-pci: check name when counting MSI-X vectors
    virtio-balloon: initialize all vq callbacks
    virtio-mmio: convert to devm_platform_ioremap_resource

    Linus Torvalds
     
  • Pull xtensa updates from Max Filippov:

    - reorganize exception vectors placement

    - small cleanups (drop unused functions/headers/defconfig entries,
    spelling fixes)

    * tag 'xtensa-20200206' of git://github.com/jcmvbkbc/linux-xtensa:
    xtensa: ISS: improve simcall assembly
    xtensa: reorganize vectors placement
    xtensa: separate SMP and XIP support
    xtensa: move fast exception handlers close to vectors
    arch/xtensa: fix Kconfig typos for HAVE_SMP
    xtensa: clean up optional XCHAL_* definitions
    xtensa: drop unused function fast_coprocessor_double
    xtensa: drop empty platform_* functions from platforms
    xtensa: clean up platform headers
    xtensa: drop set_except_vector declaration
    xtensa: configs: Cleanup old Kconfig IO scheduler options

    Linus Torvalds
     
  • The former contains nothing but a pointer to an array of the latter...

    Signed-off-by: Al Viro

    Al Viro
     
  • Unused now.

    Signed-off-by: Eric Sandeen
    Acked-by: David Howells
    Signed-off-by: Al Viro

    Eric Sandeen
     

07 Feb, 2020

2 commits

  • When a system suspends, the local APIC is disabled in the suspend sequence,
    but the IOAPIC is left in the current state. This means unmasked interrupt
    lines stay unmasked. This is usually the case for IOAPIC pin 9 to which the
    ACPI interrupt is connected.

    That means that in suspended state the IOAPIC can respond to an external
    interrupt, e.g. the wakeup via keyboard/RTC/ACPI, but the interrupt message
    cannot be handled by the disabled local APIC. As a consequence the Remote
    IRR bit is set, but the local APIC does not send an EOI to acknowledge
    it. This causes the affected interrupt line to become stale and the stale
    Remote IRR bit will cause a hang when __synchronize_hardirq() is invoked
    for that interrupt line.

    To prevent this, mask all IOAPIC entries before disabling the local
    APIC. The resume code already has the unmask operation inside.

    [ tglx: Massaged changelog ]

    Signed-off-by: Tony W Wang-oc
    Signed-off-by: Thomas Gleixner
    Link: https://lore.kernel.org/r/1579076539-7267-1-git-send-email-TonyWWang-oc@zhaoxin.com

    Tony W Wang-oc
     
  • Pull more KVM updates from Paolo Bonzini:
    "s390:
    - fix register corruption
    - ENOTSUPP/EOPNOTSUPP mixed
    - reset cleanups/fixes
    - selftests

    x86:
    - Bug fixes and cleanups
    - AMD support for APIC virtualization even in combination with
    in-kernel PIT or IOAPIC.

    MIPS:
    - Compilation fix.

    Generic:
    - Fix refcount overflow for zero page"

    * tag 'kvm-5.6-2' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (42 commits)
    KVM: vmx: delete meaningless vmx_decache_cr0_guest_bits() declaration
    KVM: x86: Mark CR4.UMIP as reserved based on associated CPUID bit
    x86: vmxfeatures: rename features for consistency with KVM and manual
    KVM: SVM: relax conditions for allowing MSR_IA32_SPEC_CTRL accesses
    KVM: x86: Fix perfctr WRMSR for running counters
    x86/kvm/hyper-v: don't allow to turn on unsupported VMX controls for nested guests
    x86/kvm/hyper-v: move VMX controls sanitization out of nested_enable_evmcs()
    kvm: mmu: Separate generating and setting mmio ptes
    kvm: mmu: Replace unsigned with unsigned int for PTE access
    KVM: nVMX: Remove stale comment from nested_vmx_load_cr3()
    KVM: MIPS: Fold comparecount_func() into comparecount_wakeup()
    KVM: MIPS: Fix a build error due to referencing not-yet-defined function
    x86/kvm: do not setup pv tlb flush when not paravirtualized
    KVM: fix overflow of zero page refcount with ksm running
    KVM: x86: Take a u64 when checking for a valid dr7 value
    KVM: x86: use raw clock values consistently
    KVM: x86: reorganize pvclock_gtod_data members
    KVM: nVMX: delete meaningless nested_vmx_run() declaration
    KVM: SVM: allow AVIC without split irqchip
    kvm: ioapic: Lazy update IOAPIC EOI
    ...

    Linus Torvalds
     

06 Feb, 2020

4 commits

  • Pull PCI fixes from Bjorn Helgaas:

    - Define to_pci_sysdata() always to fix build breakage when !CONFIG_PCI
    (Jason A. Donenfeld)

    - Use PF PASID for VFs to fix VF IOMMU bind failures (Kuppuswamy
    Sathyanarayanan)

    * tag 'pci-v5.6-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
    PCI/ATS: Use PF PASID for VFs
    x86/PCI: Define to_pci_sysdata() even when !CONFIG_PCI

    Linus Torvalds
     
  • Since the need for a special flag to support SCSI passthrough on a
    block device was added in May 2017 the SCSI passthrough support in
    virtio-blk has been disabled. It has always been a bad idea
    (just ask the original author..) and we have virtio-scsi for proper
    passthrough. The feature also never made it into the virtio 1.0
    or later specifications.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Michael S. Tsirkin
    Reviewed-by: Hannes Reinecke
    Reviewed-by: Stefan Hajnoczi

    Christoph Hellwig
     
  • Pull m68knommu updates from Greg Ungerer:
    "A couple of changes:

    - remove old CONFIG options from the m68knommu defconfig files

    - fix a warning in the m68k non-MMU get_user() macro"

    * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu:
    m68knommu: fix memcpy() out of bounds warning in get_user()
    m68k: configs: Cleanup old Kconfig IO scheduler options

    Linus Torvalds
     
  • Pull more s390 updates from Vasily Gorbik:
    "The second round of s390 fixes and features for 5.6:

    - Add KPROBES_ON_FTRACE support

    - Add EP11 AES secure keys support

    - PAES rework and prerequisites for paes-s390 ciphers selftests

    - Fix page table upgrade for hugetlbfs"

    * tag 's390-5.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/pkey/zcrypt: Support EP11 AES secure keys
    s390/zcrypt: extend EP11 card and queue sysfs attributes
    s390/zcrypt: add new low level ep11 functions support file
    s390/zcrypt: ep11 structs rework, export zcrypt_send_ep11_cprb
    s390/zcrypt: enable card/domain autoselect on ep11 cprbs
    s390/crypto: enable clear key values for paes ciphers
    s390/pkey: Add support for key blob with clear key value
    s390/crypto: Rework on paes implementation
    s390: support KPROBES_ON_FTRACE
    s390/mm: fix dynamic pagetable upgrade for hugetlbfs

    Linus Torvalds
     

05 Feb, 2020

9 commits

  • The function vmx_decache_cr0_guest_bits() is only called below its
    implementation. So this is meaningless and should be removed.

    Signed-off-by: Miaohe Lin
    Signed-off-by: Paolo Bonzini

    Miaohe Lin
     
  • Re-add code to mark CR4.UMIP as reserved if UMIP is not supported by the
    host. The UMIP handling was unintentionally dropped during a recent
    refactoring.

    Not flagging CR4.UMIP allows the guest to set its CR4.UMIP regardless of
    host support or userspace desires. On CPUs with UMIP support, including
    emulated UMIP, this allows the guest to enable UMIP against the wishes
    of the userspace VMM. On CPUs without any form of UMIP, this results in
    a failed VM-Enter due to invalid guest state.

    Fixes: 345599f9a2928 ("KVM: x86: Add macro to ensure reserved cr4 bits checks stay in sync")
    Signed-off-by: Sean Christopherson
    Reviewed-by: Vitaly Kuznetsov
    Signed-off-by: Paolo Bonzini

    Sean Christopherson
     
  • Three of the feature bits in vmxfeatures.h have names that are different
    from the Intel SDM. The names have been adjusted recently in KVM but they
    were using the old name in the tip tree's x86/cpu branch. Adjust for
    consistency.

    Signed-off-by: Paolo Bonzini

    Paolo Bonzini
     
  • …/kvms390/linux into HEAD

    KVM: s390: Fixes and cleanups for 5.6
    - fix register corruption
    - ENOTSUPP/EOPNOTSUPP mixed
    - reset cleanups/fixes
    - selftests

    Paolo Bonzini
     
  • Userspace that does not know about the AMD_IBRS bit might still
    allow the guest to protect itself with MSR_IA32_SPEC_CTRL using
    the Intel SPEC_CTRL bit. However, svm.c disallows this and will
    cause a #GP in the guest when writing to the MSR. Fix this by
    loosening the test and allowing the Intel CPUID bit, and in fact
    allow the AMD_STIBP bit as well since it allows writing to
    MSR_IA32_SPEC_CTRL too.

    Reported-by: Zhiyi Guo
    Analyzed-by: Dr. David Alan Gilbert
    Analyzed-by: Laszlo Ersek
    Signed-off-by: Paolo Bonzini

    Paolo Bonzini
     
  • Correct the logic in intel_pmu_set_msr() for fixed and general purpose
    counters. This was recently changed to set pmc->counter without taking
    in to account the value of pmc_read_counter() which will be incorrect if
    the counter is currently running and non-zero; this changes back to the
    old logic which accounted for the value of currently running counters.

    Signed-off-by: Eric Hankland
    Signed-off-by: Paolo Bonzini

    Eric Hankland
     
  • Sane L1 hypervisors are not supposed to turn any of the unsupported VMX
    controls on for its guests and nested_vmx_check_controls() checks for
    that. This is, however, not the case for the controls which are supported
    on the host but are missing in enlightened VMCS and when eVMCS is in use.

    It would certainly be possible to add these missing checks to
    nested_check_vm_execution_controls()/_vm_exit_controls()/.. but it seems
    preferable to keep eVMCS-specific stuff in eVMCS and reduce the impact on
    non-eVMCS guests by doing less unrelated checks. Create a separate
    nested_evmcs_check_controls() for this purpose.

    Signed-off-by: Vitaly Kuznetsov
    Signed-off-by: Paolo Bonzini

    Vitaly Kuznetsov
     
  • With fine grained VMX feature enablement QEMU>=4.2 tries to do KVM_SET_MSRS
    with default (matching CPU model) values and in case eVMCS is also enabled,
    fails.

    It would be possible to drop VMX feature filtering completely and make
    this a guest's responsibility: if it decides to use eVMCS it should know
    which fields are available and which are not. Hyper-V mostly complies to
    this, however, there are some problematic controls:
    SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES
    VM_{ENTRY,EXIT}_LOAD_IA32_PERF_GLOBAL_CTRL

    which Hyper-V enables. As there are no corresponding fields in eVMCS, we
    can't handle this properly in KVM. This is a Hyper-V issue.

    Move VMX controls sanitization from nested_enable_evmcs() to vmx_get_msr(),
    and do the bare minimum (only clear controls which are known to cause issues).
    This allows userspace to keep setting controls it wants and at the same
    time hides them from the guest.

    Signed-off-by: Vitaly Kuznetsov
    Signed-off-by: Paolo Bonzini

    Vitaly Kuznetsov
     
  • Separate the functions for generating MMIO page table entries from the
    function that inserts them into the paging structure. This refactoring
    will facilitate changes to the MMU sychronization model to use atomic
    compare / exchanges (which are not guaranteed to succeed) instead of a
    monolithic MMU lock.

    No functional change expected.

    Tested by running kvm-unit-tests on an Intel Haswell machine. This
    commit introduced no new failures.

    Signed-off-by: Ben Gardon
    Reviewed-by: Oliver Upton
    Reviewed-by: Peter Shier
    Signed-off-by: Paolo Bonzini

    Ben Gardon