10 Oct, 2017

3 commits

  • David S. Miller
     
  • Merge powerpc transactional memory fixes from Michael Ellerman:
    "I figured I'd still send you the commits using a bundle to make sure
    it works in case I need to do it again in future"

    This fixes transactional memory state restore for powerpc.

    * bundle'd patches from Michael Ellerman:
    powerpc/tm: Fix illegal TM state in signal handler
    powerpc/64s: Use emergency stack for kernel TM Bad Thing program checks

    Linus Torvalds
     
  • Pull networking fixes from David Miller:

    1) Fix object leak on IPSEC offload failure, from Steffen Klassert.

    2) Fix range checks in ipset address range addition operations, from
    Jozsef Kadlecsik.

    3) Fix pernet ops unregistration order in ipset, from Florian Westphal.

    4) Add missing netlink attribute policy for nl80211 packet pattern
    attrs, from Peng Xu.

    5) Fix PPP device destruction race, from Guillaume Nault.

    6) Write marks get lost when BPF verifier processes R1=R2 register
    assignments, causing incorrect liveness information and less state
    pruning. Fix from Alexei Starovoitov.

    7) Fix blockhole routes so that they are marked dead and therefore not
    cached in sockets, otherwise IPSEC stops working. From Steffen
    Klassert.

    8) Fix broadcast handling of UDP socket early demux, from Paolo Abeni.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (37 commits)
    cdc_ether: flag the u-blox TOBY-L2 and SARA-U2 as wwan
    net: thunderx: mark expected switch fall-throughs in nicvf_main()
    udp: fix bcast packet reception
    netlink: do not set cb_running if dump's start() errs
    ipv4: Fix traffic triggered IPsec connections.
    ipv6: Fix traffic triggered IPsec connections.
    ixgbe: incorrect XDP ring accounting in ethtool tx_frame param
    net: ixgbe: Use new PCI_DEV_FLAGS_NO_RELAXED_ORDERING flag
    Revert commit 1a8b6d76dc5b ("net:add one common config...")
    ixgbe: fix masking of bits read from IXGBE_VXLANCTRL register
    ixgbe: Return error when getting PHY address if PHY access is not supported
    netfilter: xt_bpf: Fix XT_BPF_MODE_FD_PINNED mode of 'xt_bpf_info_v1'
    netfilter: SYNPROXY: skip non-tcp packet in {ipv4, ipv6}_synproxy_hook
    tipc: Unclone message at secondary destination lookup
    tipc: correct initialization of skb list
    gso: fix payload length when gso_size is zero
    mlxsw: spectrum_router: Avoid expensive lookup during route removal
    bpf: fix liveness marking
    doc: Fix typo "8023.ad" in bonding documentation
    ipv6: fix net.ipv6.conf.all.accept_dad behaviour for real
    ...

    Linus Torvalds
     

09 Oct, 2017

1 commit

  • The new flag PCI_DEV_FLAGS_NO_RELAXED_ORDERING has been added
    to indicate that Relaxed Ordering Attributes (RO) should not
    be used for Transaction Layer Packets (TLP) targeted toward
    these affected Root Port, it will clear the bit4 in the PCIe
    Device Control register, so the PCIe device drivers could
    query PCIe configuration space to determine if it can send
    TLPs to Root Port with the Relaxed Ordering Attributes set.

    With this new flag we don't need the config ARCH_WANT_RELAX_ORDER
    to control the Relaxed Ordering Attributes for the ixgbe drivers
    just like the commit 1a8b6d76dc5b ("net:add one common config...") did,
    so revert this commit.

    Signed-off-by: Ding Tianhong
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Ding Tianhong
     

07 Oct, 2017

3 commits

  • Pull ARC udpates from Vineet Gupta:

    - updates for various platforms

    - boot log updates for upcoming HS48 family of cores (dual issue)

    * tag 'arc-4.14-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
    ARC: [plat-hsdk]: Add reset controller node to manage ethernet reset
    ARC: [plat-hsdk]: Temporary fix to set CPU frequency to 1GHz
    ARC: fix allnoconfig build warning
    ARCv2: boot log: identify HS48 cores (dual issue)
    ARC: boot log: decontaminate ARCv2 ISA_CONFIG register
    arc: remove redundant UTS_MACHINE define in arch/arc/Makefile
    ARC: [plat-eznps] Update platform maintainer as Noam left
    ARC: [plat-hsdk] use actual clk driver to manage cpu clk
    ARC: [*defconfig] Reenable soft lock-up detector
    ARC: [plat-axs10x] sdio: Temporary fix of sdio ciu frequency
    ARC: [plat-hsdk] sdio: Temporary fix of sdio ciu frequency
    ARC: [plat-axs103] Add temporary quirk to reset ethernet IP

    Linus Torvalds
     
  • Pull arm64 fixes from Catalin Marinas:

    - Bring initialisation of user space undefined instruction handling
    early (core_initcall) since late_initcall() happens after modprobe in
    initramfs is invoked. Similar fix for fpsimd initialisation

    - Increase the kernel stack when KASAN is enabled

    - Bring the PCI ACS enabling earlier via the
    iort_init_platform_devices()

    - Fix misleading data abort address printing (decimal vs hex)

    * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
    arm64: Ensure fpsimd support is ready before userspace is active
    arm64: Ensure the instruction emulation is ready for userspace
    arm64: Use larger stacks when KASAN is selected
    ACPI/IORT: Fix PCI ACS enablement
    arm64: fix misleading data abort decoding

    Linus Torvalds
     
  • Pull KVM fixes from Radim Krčmář:

    - fix PPC XIVE interrupt delivery

    - fix x86 RCU breakage from asynchronous page faults when built without
    PREEMPT_COUNT

    - fix x86 build with -frecord-gcc-switches

    - fix x86 build without X86_LOCAL_APIC

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: add X86_LOCAL_APIC dependency
    x86/kvm: Move kvm_fastop_exception to .fixup section
    kvm/x86: Avoid async PF preempting the kernel incorrectly
    KVM: PPC: Book3S: Fix server always zero from kvmppc_xive_get_xive()

    Linus Torvalds
     

06 Oct, 2017

10 commits

  • DW ethernet controller on HSDK hangs sometimes after SW reset, so
    add reset node to make possible to reset DW ethernet controller HW.

    Signed-off-by: Eugeniy Paltsev
    Signed-off-by: Vineet Gupta

    Eugeniy Paltsev
     
  • Pull powerpc fixes from Michael Ellerman:
    "Nine small fixes, really nothing that stands out.

    A work-around for a spurious MCE on Power9. A CXL fault handling fix,
    some fixes to the new XIVE code, and a fix to the new 32-bit
    STRICT_KERNEL_RWX code.

    Fixes for old code/stable: an fix to an incorrect TLB flush on boot
    but not on any current machines, a compile error on 4xx and a fix to
    memory hotplug when using radix (Power9).

    Thanks to: Anton Blanchard, Cédric Le Goater, Christian Lamparter,
    Christophe Leroy, Christophe Lombard, Guenter Roeck, Jeremy Kerr,
    Michael Neuling, Nicholas Piggin"

    * tag 'powerpc-4.14-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/powernv: Increase memory block size to 1GB on radix
    powerpc/mm: Call flush_tlb_kernel_range with interrupts enabled
    powerpc/xive: Clear XIVE internal structures when a CPU is removed
    powerpc/xive: Fix IPI reset
    powerpc/4xx: Fix compile error with 64K pages on 40x, 44x
    powerpc: Fix action argument for cpufeatures-based TLB flush
    cxl: Fix memory page not handled
    powerpc: Fix workaround for spurious MCE on POWER9
    powerpc: Handle MCE on POWER9 with only DSISR bit 30 set

    Linus Torvalds
     
  • Pull watchddog clean-up and fixes from Thomas Gleixner:
    "The watchdog (hard/softlockup detector) code is pretty much broken in
    its current state. The patch series addresses this by removing all
    duct tape and refactoring it into a workable state.

    The reasons why I ask for inclusion that late in the cycle are:

    1) The code causes lockdep splats vs. hotplug locking which get
    reported over and over. Unfortunately there is no easy fix.

    2) The risk of breakage is minimal because it's already broken

    3) As 4.14 is a long term stable kernel, I prefer to have working
    watchdog code in that and the lockdep issues resolved. I wouldn't
    ask you to pull if 4.14 wouldn't be a LTS kernel or if the
    solution would be easy to backport.

    4) The series was around before the merge window opened, but then got
    delayed due to the UP failure caused by the for_each_cpu()
    surprise which we discussed recently.

    Changes vs. V1:

    - Addressed your review points

    - Addressed the warning in the powerpc code which was discovered late

    - Changed two function names which made sense up to a certain point
    in the series. Now they match what they do in the end.

    - Fixed a 'unused variable' warning, which got not detected by the
    intel robot. I triggered it when trying all possible related config
    combinations manually. Randconfig testing seems not random enough.

    The changes have been tested by and reviewed by Don Zickus and tested
    and acked by Micheal Ellerman for powerpc"

    * 'core-watchdog-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (36 commits)
    watchdog/core: Put softlockup_threads_initialized under ifdef guard
    watchdog/core: Rename some softlockup_* functions
    powerpc/watchdog: Make use of watchdog_nmi_probe()
    watchdog/core, powerpc: Lock cpus across reconfiguration
    watchdog/core, powerpc: Replace watchdog_nmi_reconfigure()
    watchdog/hardlockup/perf: Fix spelling mistake: "permanetely" -> "permanently"
    watchdog/hardlockup/perf: Cure UP damage
    watchdog/hardlockup: Clean up hotplug locking mess
    watchdog/hardlockup/perf: Simplify deferred event destroy
    watchdog/hardlockup/perf: Use new perf CPU enable mechanism
    watchdog/hardlockup/perf: Implement CPU enable replacement
    watchdog/hardlockup/perf: Implement init time detection of perf
    watchdog/hardlockup/perf: Implement init time perf validation
    watchdog/core: Get rid of the racy update loop
    watchdog/core, powerpc: Make watchdog_nmi_reconfigure() two stage
    watchdog/sysctl: Clean up sysctl variable name space
    watchdog/sysctl: Get rid of the #ifdeffery
    watchdog/core: Clean up header mess
    watchdog/core: Further simplify sysctl handling
    watchdog/core: Get rid of the thread teardown/setup dance
    ...

    Linus Torvalds
     
  • We register the pm/hotplug callbacks for FPSIMD as late_initcall,
    which happens after the userspace is active (from initramfs via
    populate_rootfs, a rootfs_initcall). Make sure we are ready even
    before the userspace could potentially use it, by promoting to
    a core_initcall.

    Cc: Will Deacon
    Cc: Mark Rutland
    Cc: Dave Martin
    Signed-off-by: Suzuki K Poulose
    Signed-off-by: Catalin Marinas

    Suzuki K Poulose
     
  • We trap and emulate some instructions (e.g, mrs, deprecated instructions)
    for the userspace. However the handlers for these are registered as
    late_initcalls and the userspace could be up and running from the initramfs
    by that time (with populate_rootfs, which is a rootfs_initcall()). This
    could cause problems for the early applications ending up in failure
    like :

    [ 11.152061] modprobe[93]: undefined instruction: pc=0000ffff8ca48ff4

    This patch promotes the specific calls to core_initcalls, which are
    guaranteed to be completed before we hit userspace.

    Cc: stable@vger.kernel.org
    Cc: Dave Martin
    Cc: Matthias Brugger
    Cc: James Morse
    Reported-by: Matwey V. Kornilov
    Signed-off-by: Suzuki K Poulose
    Signed-off-by: Catalin Marinas

    Suzuki K Poulose
     
  • Currently it's possible that on returning from the signal handler
    through the restore_tm_sigcontexts() code path (e.g. from a signal
    caught due to a `trap` instruction executed in the middle of an HTM
    block, or a deliberately constructed sigframe) an illegal TM state
    (like TS=10 TM=0, i.e. "T0") is set in SRR1 and when `rfid` sets
    implicitly the MSR register from SRR1 register on return to userspace
    it causes a TM Bad Thing exception.

    That illegal state can be set (a) by a malicious user that disables
    the TM bit by tweaking the bits in uc_mcontext before returning from
    the signal handler or (b) by a sufficient number of context switches
    occurring such that the load_tm counter overflows and TM is disabled
    whilst in the signal handler.

    This commit fixes the illegal TM state by ensuring that TM bit is
    always enabled before we return from restore_tm_sigcontexts(). A small
    comment correction is made as well.

    Fixes: 5d176f751ee3 ("powerpc: tm: Enable transactional memory (TM) lazily for userspace")
    Cc: stable@vger.kernel.org # v4.9+
    Signed-off-by: Gustavo Romero
    Signed-off-by: Breno Leitao
    Signed-off-by: Cyril Bur
    Signed-off-by: Michael Ellerman

    Gustavo Romero
     
  • When using transactional memory (TM), the CPU can be in one of six
    states as far as TM is concerned, encoded in the Machine State
    Register (MSR). Certain state transitions are illegal and if attempted
    trigger a "TM Bad Thing" type program check exception.

    If we ever hit one of these exceptions it's treated as a bug, ie. we
    oops, and kill the process and/or panic, depending on configuration.

    One case where we can trigger a TM Bad Thing, is when returning to
    userspace after a system call or interrupt, using RFID. When this
    happens the CPU first restores the user register state, in particular
    r1 (the stack pointer) and then attempts to update the MSR. However
    the MSR update is not allowed and so we take the program check with
    the user register state, but the kernel MSR.

    This tricks the exception entry code into thinking we have a bad
    kernel stack pointer, because the MSR says we're coming from the
    kernel, but r1 is pointing to userspace.

    To avoid this we instead always switch to the emergency stack if we
    take a TM Bad Thing from the kernel. That way none of the user
    register values are used, other than for printing in the oops message.

    This is the fix for CVE-2017-1000255.

    Fixes: 5d176f751ee3 ("powerpc: tm: Enable transactional memory (TM) lazily for userspace")
    Cc: stable@vger.kernel.org # v4.9+
    Signed-off-by: Cyril Bur
    [mpe: Rewrite change log & comments, tweak asm slightly]
    Signed-off-by: Michael Ellerman

    Cyril Bur
     
  • Memory hot unplug on PowerNV radix hosts is broken. Our memory block
    size is 256MB but since we map the linear region with very large
    pages, each pte we tear down maps 1GB.

    A hot unplug of one 256MB memory block results in 768MB of memory
    getting unintentionally unmapped. At this point we are likely to oops.

    Fix this by increasing our memory block size to 1GB on PowerNV radix
    hosts.

    Fixes: 4b5d62ca17a1 ("powerpc/mm: add radix__remove_section_mapping()")
    Cc: stable@vger.kernel.org # v4.11+
    Signed-off-by: Anton Blanchard
    Signed-off-by: Michael Ellerman

    Anton Blanchard
     
  • Just simple overlapping changes.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • The rework of the posted interrupt handling broke building without
    support for the local APIC:

    ERROR: "boot_cpu_physical_apicid" [arch/x86/kvm/kvm-intel.ko] undefined!

    That configuration is probably not particularly useful anyway, so
    we can avoid the randconfig failures by adding a Kconfig dependency.

    Fixes: 8b306e2f3c41 ("KVM: VMX: avoid double list add with VT-d posted interrupts")
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Radim Krčmář

    Arnd Bergmann
     

05 Oct, 2017

7 commits

  • Pull networking fixes from David Miller:

    1) Check iwlwifi 9000 reorder buffer out-of-space condition properly,
    from Sara Sharon.

    2) Fix RCU splat in qualcomm rmnet driver, from Subash Abhinov
    Kasiviswanathan.

    3) Fix session and tunnel release races in l2tp, from Guillaume Nault
    and Sabrina Dubroca.

    4) Fix endian bug in sctp_diag_dump(), from Dan Carpenter.

    5) Several mlx5 driver fixes from the Mellanox folks (max flow counters
    cap check, invalid memory access in IPoIB support, etc.)

    6) tun_get_user() should bail if skb->len is zero, from Alexander
    Potapenko.

    7) Fix RCU lookups in inetpeer, from Eric Dumazet.

    8) Fix locking in packet_do_bund().

    9) Handle cb->start() error properly in netlink dump code, from Jason
    A. Donenfeld.

    10) Handle multicast properly in UDP socket early demux code. From Paolo
    Abeni.

    11) Several erspan bug fixes in ip_gre, from Xin Long.

    12) Fix use-after-free in socket filter code, in order to handle the
    fact that listener lock is no longer taken during the three-way TCP
    handshake. From Eric Dumazet.

    13) Fix infoleak in RTM_GETSTATS, from Nikolay Aleksandrov.

    14) Fix tail call generation in x86-64 BPF JIT, from Alexei Starovoitov.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (77 commits)
    net: 8021q: skip packets if the vlan is down
    bpf: fix bpf_tail_call() x64 JIT
    net: stmmac: dwmac-rk: Add RK3128 GMAC support
    rndis_host: support Novatel Verizon USB730L
    net: rtnetlink: fix info leak in RTM_GETSTATS call
    socket, bpf: fix possible use after free
    mlxsw: spectrum_router: Track RIF of IPIP next hops
    mlxsw: spectrum_router: Move VRF refcounting
    net: hns3: Fix an error handling path in 'hclge_rss_init_hw()'
    net: mvpp2: Fix clock resource by adding an optional bus clock
    r8152: add Linksys USB3GIGV1 id
    l2tp: fix l2tp_eth module loading
    ip_gre: erspan device should keep dst
    ip_gre: set tunnel hlen properly in erspan_tunnel_init
    ip_gre: check packet length and mtu correctly in erspan_xmit
    ip_gre: get key from session_id correctly in erspan_rcv
    tipc: use only positive error codes in messages
    ppp: fix __percpu annotation
    udp: perform source validation for mcast early demux
    IPv4: early demux can return an error code
    ...

    Linus Torvalds
     
  • When compiling the kernel with the '-frecord-gcc-switches' flag, objtool
    complains:

    arch/x86/kvm/emulate.o: warning: objtool: .GCC.command.line+0x0: special: can't find new instruction

    And also the kernel fails to link.

    The problem is that the 'kvm_fastop_exception' code gets placed into the
    throwaway '.GCC.command.line' section instead of '.text'.

    Exception fixup code is conventionally placed in the '.fixup' section,
    so put it there where it belongs.

    Reported-and-tested-by: Guenter Roeck
    Signed-off-by: Josh Poimboeuf
    Reviewed-by: Paolo Bonzini
    Signed-off-by: Radim Krčmář

    Josh Poimboeuf
     
  • Pull ARM SoC fixes from Olof Johansson:
    "Our first batch of fixes this release cycle, unfortunately a bit
    noisier than usual. Two major groups stand out:

    - Some pinctril dts/dtsi changes for stm32 due to a new driver being
    merged during the merge window, and this aligns the DT contents
    between the old format and the new. This could arguably be moved to
    the next merge window but it also seemed relatively harmless to
    include now.

    - Amlogic/meson had driver changes merged that required devicetree
    changes to avoid functional/performance regressions. I've already
    asked them to be more careful about this going forward, and making
    sure drivers are compatible with older DTs when they make these
    kind of changes. The platform is actively being upstreamed so
    there's a few things in flight, we've seen this happen before and
    sometimes it's hard to catch in time.

    Besides that there is the usual mix of minor fixes"

    * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (33 commits)
    ARM: dts: stm32: use right pinctrl compatible for stm32f469
    ARM: dts: stm32: Fix STMPE1600 binding on stm32429i-eval board
    ARM: defconfig: update Gemini defconfig
    ARM: defconfig: FRAMEBUFFER_CONSOLE can no longer be =m
    arm64: dts: rockchip: add the grf clk for dw-mipi-dsi on rk3399
    reset: Restrict RESET_HSDK to ARC_SOC_HSDK or COMPILE_TEST
    ARM: dts: da850-evm: add serial and ethernet aliases
    ARM: dts: am43xx-epos-evm: Remove extra CPSW EMAC entry
    ARM: dts: am33xx: Add spi alias to match SOC schematics
    ARM: OMAP2+: hsmmc: fix logic to call either omap_hsmmc_init or omap_hsmmc_late_init but not both
    ARM: dts: dra7: Set a default parent to mcasp3_ahclkx_mux
    ARM: OMAP2+: dra7xx: Set OPT_CLKS_IN_RESET flag for gpio1
    ARM: dts: nokia n900: drop unneeded/undocumented parts of the dts
    arm64: dts: rockchip: Correct MIPI DPHY PLL clock on rk3399
    arm64: dt marvell: Fix AP806 system controller size
    MAINTAINERS: add Macchiatobin maintainers entry
    ARC: reset: remove the misleading v1 suffix all over
    ARC: reset: add missing DT binding documentation for HSDKv1 reset driver
    ARC: reset: Only build on archs that have IOMEM
    ARM: at91: Replace uses of virt_to_phys with __pa_symbol
    ...

    Linus Torvalds
     
  • …l/git/atorgue/stm32 into fixes

    STM32 fixes for v4.14:
    ---------------------

    -Fix STMPE1600 bindings for stm32429i-eval board
    -Use right compatible for stm32f469 pinctrl. It implies to use
    pinctrl dedicated files for F4 SoCs.

    * tag 'stm32-dt-fixes-for-v4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/atorgue/stm32:
    ARM: dts: stm32: use right pinctrl compatible for stm32f469
    ARM: dts: stm32: Fix STMPE1600 binding on stm32429i-eval board

    Signed-off-by: Olof Johansson <olof@lixom.net>

    Olof Johansson
     
  • …man/linux-amlogic into fixes

    Amlogic 64-bit DT updates for v4.14 (round 3)
    - updates for new MMC driver features/fixes
    - support high-speed modes

    * tag 'amlogic-dt64-3' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic:
    ARM64: dts: meson-gxbb: nanopi-k2: enable sdr104 mode
    ARM64: dts: meson-gxbb: nanopi-k2: enable sdcard UHS modes
    ARM64: dts: meson-gxbb: p20x: enable sdcard UHS modes
    ARM64: dts: meson-gxl: libretech-cc: enable high speed modes
    ARM64: dts: meson-gxl: libretech-cc: add card regulator settle times
    ARM64: dts: meson-gxbb: nanopi-k2: add card regulator settle times
    ARM64: dts: meson: add mmc clk gate pins
    ARM64: dts: meson: remove cap-sd-highspeed from emmc nodes
    ARM64: dts: meson-gx: Use correct mmc clock source 0

    Signed-off-by: Olof Johansson <olof@lixom.net>

    Olof Johansson
     
  • AddressSanitizer instrumentation can significantly bloat the stack, and
    with GCC 7 this can result in stack overflows at boot time in some
    configurations.

    We can avoid this by doubling our stack size when KASAN is in use, as is
    already done on x86 (and has been since KASAN was introduced).
    Regardless of other patches to decrease KASAN's stack utilization,
    kernels built with KASAN will always require more stack space than those
    built without, and we should take this into account.

    Signed-off-by: Mark Rutland
    Cc: Will Deacon
    Cc: Suzuki K Poulose
    Signed-off-by: Catalin Marinas

    Mark Rutland
     
  • Currently, in PREEMPT_COUNT=n kernel, kvm_async_pf_task_wait() could call
    schedule() to reschedule in some cases. This could result in
    accidentally ending the current RCU read-side critical section early,
    causing random memory corruption in the guest, or otherwise preempting
    the currently running task inside between preempt_disable and
    preempt_enable.

    The difficulty to handle this well is because we don't know whether an
    async PF delivered in a preemptible section or RCU read-side critical section
    for PREEMPT_COUNT=n, since preempt_disable()/enable() and rcu_read_lock/unlock()
    are both no-ops in that case.

    To cure this, we treat any async PF interrupting a kernel context as one
    that cannot be preempted, preventing kvm_async_pf_task_wait() from choosing
    the schedule() path in that case.

    To do so, a second parameter for kvm_async_pf_task_wait() is introduced,
    so that we know whether it's called from a context interrupting the
    kernel, and the parameter is set properly in all the callsites.

    Cc: "Paul E. McKenney"
    Cc: Peter Zijlstra
    Cc: Wanpeng Li
    Cc: stable@vger.kernel.org
    Signed-off-by: Boqun Feng
    Signed-off-by: Radim Krčmář

    Boqun Feng
     

04 Oct, 2017

16 commits

  • Currently, same stm32f429-pinctrl driver is used for stm32f429 and
    stm32f469. As pin map is different between those 2 MCUs,
    a stm32f469-pinctrl driver has been recently added.
    This patch
    -allows to use stm32f469-pinctrl driver for stm32f469 boards
    -reworks stm32 devicetree files to fit with stm32f429 / stm32f469

    In the same time it fixes an issue when only MACH_STM32F469 flag is
    selected in menuconfig.

    Fixes: d28bcd53fa90 ("ARM: stm32: Introduce MACH_STM32F469 flag")
    Reported-by: Nicolas Pitre
    Signed-off-by: Alexandre Torgue

    Alexandre Torgue
     
  • flush_tlb_kernel_range() may call smp_call_function_many() which expects
    interrupts to be enabled. This results in a traceback.

    WARNING: CPU: 0 PID: 1 at kernel/smp.c:416 smp_call_function_many+0xcc/0x2fc
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.14.0-rc1-00009-g0666f56 #1
    task: cf830000 task.stack: cf82e000
    NIP: c00a93c8 LR: c00a9634 CTR: 00000001
    REGS: cf82fde0 TRAP: 0700 Not tainted (4.14.0-rc1-00009-g0666f56)
    MSR: 00021000 CR: 24000082 XER: 00000000

    GPR00: c00a9634 cf82fe90 cf830000 c050ad3c c0015a54 00000000 00000001 00000001
    GPR08: 00000001 00000000 00000000 cf82e000 24000084 00000000 c0003150 00000000
    GPR16: 00000000 00000000 00000000 00000000 00000000 00000001 00000000 c0510000
    GPR24: 00000000 c0015a54 00000000 c050ad3c c051823c c050ad3c 00000025 00000000
    NIP [c00a93c8] smp_call_function_many+0xcc/0x2fc
    LR [c00a9634] smp_call_function+0x3c/0x50
    Call Trace:
    [cf82fe90] [00000010] 0x10 (unreliable)
    [cf82fed0] [c00a9634] smp_call_function+0x3c/0x50
    [cf82fee0] [c0015d2c] flush_tlb_kernel_range+0x20/0x38
    [cf82fef0] [c001524c] mark_initmem_nx+0x154/0x16c
    [cf82ff20] [c001484c] free_initmem+0x20/0x4c
    [cf82ff30] [c000316c] kernel_init+0x1c/0x108
    [cf82ff40] [c000f3a8] ret_from_kernel_thread+0x5c/0x64
    Instruction dump:
    7c0803a6 7d808120 38210040 4e800020 3d20c052 812981a0 2f890000 40beffac
    3d20c051 8929ac64 2f890000 40beff9c 4bffff94 7fc3f378 7f64db78

    Fixes: 3184cc4b6f6a ("powerpc/mm: Fix kernel RAM protection after freeing ...")
    Fixes: e611939fc8ec ("powerpc/mm: Ensure change_page_attr() doesn't ...")
    Cc: Christophe Leroy
    Signed-off-by: Guenter Roeck
    Reviewed-by: Christophe Leroy
    Signed-off-by: Michael Ellerman

    Guenter Roeck
     
  • Commit eac1e731b59e ("powerpc/xive: guest exploitation of the XIVE
    interrupt controller") introduced support for the XIVE exploitation
    mode of the P9 interrupt controller on the pseries platform.

    At that time, support for CPU removal was not complete on PowerVM and
    CPU hot unplug remained untested. It appears that some cleanups of the
    XIVE internal structures are required before releasing the CPU,
    without which the kernel crashes in a RTAS call doing the CPU
    isolation.

    These changes fix the crash by deconfiguring the IPI interrupt source
    and clearing the event queues of the CPU when it is removed.

    Fixes: eac1e731b59e ("powerpc/xive: guest exploitation of the XIVE interrupt controller")
    Signed-off-by: Cédric Le Goater
    Signed-off-by: Michael Ellerman

    Cédric Le Goater
     
  • When resetting an IPI, hw_ipi should also be set to zero.

    Fixes: eac1e731b59e ("powerpc/xive: guest exploitation of the XIVE interrupt controller")
    Signed-off-by: Cédric Le Goater
    Signed-off-by: Michael Ellerman

    Cédric Le Goater
     
  • To declare gpio interrupt line for STMPE1600, 2 possibilities are offered:
    -use gpio binding (and then the gpiolib interface inside driver)
    -use interrupt binding as each gpio-controller are also interrupt controller
    on stm32f429.

    In STMPE 1600 node both (gpio and interrupt) bindings are defined.
    This patch fixes this issue and use only interrupt binding.

    Fixes: c04b2e72af8d ("ARM: dts: stm32: Enable STMPE1600 gpio expander of STM32F429-EVAL board")
    Signed-off-by: Alexandre Torgue

    Alexandre Torgue
     
  • The rework of the core hotplug code triggers the WARN_ON in start_wd_cpu()
    on powerpc because it is called multiple times for the boot CPU.

    The first call is via:

    start_wd_on_cpu+0x80/0x2f0
    watchdog_nmi_reconfigure+0x124/0x170
    softlockup_reconfigure_threads+0x110/0x130
    lockup_detector_init+0xbc/0xe0
    kernel_init_freeable+0x18c/0x37c
    kernel_init+0x2c/0x160
    ret_from_kernel_thread+0x5c/0xbc

    And then again via the CPU hotplug registration:

    start_wd_on_cpu+0x80/0x2f0
    cpuhp_invoke_callback+0x194/0x620
    cpuhp_thread_fun+0x7c/0x1b0
    smpboot_thread_fn+0x290/0x2a0
    kthread+0x168/0x1b0
    ret_from_kernel_thread+0x5c/0xbc

    This can be avoided by setting up the cpu hotplug state with nocalls and
    move the initialization to the watchdog_nmi_probe() function. That
    initializes the hotplug callbacks without invoking the callback and the
    following core initialization function then configures the watchdog for the
    online CPUs (in this case CPU0) via softlockup_reconfigure_threads().

    Reported-and-tested-by: Michael Ellerman
    Signed-off-by: Thomas Gleixner
    Acked-by: Michael Ellerman
    Cc: Benjamin Herrenschmidt
    Cc: Nicholas Piggin
    Cc: linuxppc-dev@lists.ozlabs.org

    Thomas Gleixner
     
  • Instead of dropping the cpu hotplug lock after stopping NMI watchdog and
    threads and reaquiring for restart, the code and the protection rules
    become more obvious when holding cpu hotplug lock across the full
    reconfiguration.

    Suggested-by: Linus Torvalds
    Signed-off-by: Thomas Gleixner
    Acked-by: Michael Ellerman
    Cc: Peter Zijlstra
    Cc: Don Zickus
    Cc: Benjamin Herrenschmidt
    Cc: Nicholas Piggin
    Cc: linuxppc-dev@lists.ozlabs.org
    Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1710022105570.2114@nanos

    Thomas Gleixner
     
  • The recent cleanup of the watchdog code split watchdog_nmi_reconfigure()
    into two stages. One to stop the NMI and one to restart it after
    reconfiguration. That was done by adding a boolean 'run' argument to the
    code, which is functionally correct but not necessarily a piece of art.

    Replace it by two explicit functions: watchdog_nmi_stop() and
    watchdog_nmi_start().

    Fixes: 6592ad2fcc8f ("watchdog/core, powerpc: Make watchdog_nmi_reconfigure() two stage")
    Requested-by: Linus 'Nursing his pet-peeve' Torvalds
    Signed-off-by: Thomas 'Mopping up garbage' Gleixner
    Acked-by: Michael Ellerman
    Cc: Peter Zijlstra
    Cc: Don Zickus
    Cc: Benjamin Herrenschmidt
    Cc: Nicholas Piggin
    Cc: linuxppc-dev@lists.ozlabs.org
    Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1710021957480.2114@nanos

    Thomas Gleixner
     
  • Add temporary fix to HSDK platform code to setup CPU frequency
    to 1GHz on early boot.
    We can remove this fix when smart hsdk pll driver will be
    introduced, see discussion:
    https://www.mail-archive.com/linux-snps-arc@lists.infradead.org/msg02689.html

    Signed-off-by: Eugeniy Paltsev
    Signed-off-by: Vineet Gupta

    Eugeniy Paltsev
     
  • Reported-by: Dmitrii Kolesnichenko
    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • ARCv2 ISA_CONFIG and ARC700_BUILD build config registers are not
    compatible. cpuinfo_arc had isa info placeholder which was mashup of bits
    form both.

    Untangle this by defining it off of ARCv2 ISA info and it is fine even
    for ARC700 since former is a super set of latter (ARC700 buildonly has 2
    bits for atomics and stack check).

    At runtime, we treat ARCv2 ISA info as a generic placeholder but
    populate it correctly depending on ARC700 or HS.

    This paves way for adding more HS specific bits in isa info which was
    colliding with the extra bits for arc700.

    Signed-off-by: Vineet Gupta

    Vineet Gupta
     
  • The top-level Makefile sets the default of UTS_MACHINE to $(ARCH).

    If ARCH and UTS_MACHINE match, arch/$(ARCH)/Makefile need not specify
    UTS_MACHINE explicitly.

    Signed-off-by: Masahiro Yamada
    Signed-off-by: Vineet Gupta

    Masahiro Yamada
     
  • With corresponding clk driver now merged upstream, switch to it.

    - core_clk now represent the PLL (vs. fixed clk before)
    - input_clk represent the clk signal src for PLL (basically xtal)

    Signed-off-by: Eugeniy Paltsev
    Signed-off-by: Vineet Gupta

    Eugeniy Paltsev
     
  • Commit 92e5aae45778 "kernel/watchdog: split up config options"
    introduced SOFTLOCKUP_DETECTOR which selects LOCKUP_DETECTOR
    instead of the latter to be selected itself.

    We need to adjust our defconfigs accordingly.

    Signed-off-by: Alexey Brodkin
    Signed-off-by: Vineet Gupta

    Alexey Brodkin
     
  • DW sdio controller has external ciu clock divider controlled
    via register in SDIO IP. It divides sdio_ref_clk
    (which comes from CGU) by 16 for default. So default mmcclk
    clock (which comes to sdk_in) is 25000000 Hz.

    So fix wrong current value (50000000 Hz) to actual 25000000 Hz.

    Note this is a preventive fix, in line with similar change for HSDK
    where this was actually needed. see:
    http://lists.infradead.org/pipermail/linux-snps-arc/2017-September/002924.html

    Signed-off-by: Eugeniy Paltsev
    Signed-off-by: Vineet Gupta

    Eugeniy Paltsev