1. 17 Jul, 2018 1 commit
    • Linus Torvalds's avatar
      Mark HI and TASKLET softirq synchronous · 3c53776e
      Linus Torvalds authored
      Way back in 4.9, we committed 4cd13c21 ("softirq: Let ksoftirqd do
      its job"), and ever since we've had small nagging issues with it.  For
      example, we've had:
      
        1ff68820 ("watchdog: core: make sure the watchdog_worker is not deferred")
        8d5755b3 ("watchdog: softdog: fire watchdog even if softirqs do not get to run")
        217f6974 ("net: busy-poll: allow preemption in sk_busy_loop()")
      
      all of which worked around some of the effects of that commit.
      
      The DVB people have also complained that the commit causes excessive USB
      URB latencies, which seems to be due to the USB code using tasklets to
      schedule USB traffic.  This seems to be an issue mainly when already
      living on the edge, but waiting for ksoftirqd to handle it really does
      seem to cause excessive latencies.
      
      Now Hanna Hawa reports that this issue isn't just limited to USB URB and
      DVB, but also causes timeout problems for the Marvell SoC team:
      
       "I'm facing kernel panic issue while running raid 5 on sata disks
        connected to Macchiatobin (Marvell community board with Armada-8040
        SoC with 4 ARMv8 cores of CA72) Raid 5 built with Marvell DMA engine
        and async_tx mechanism (ASYNC_TX_DMA [=y]); the DMA driver (mv_xor_v2)
        uses a tasklet to clean the done descriptors from the queue"
      
      The latency problem causes a panic:
      
        mv_xor_v2 f0400000.xor: dma_sync_wait: timeout!
        Kernel panic - not syncing: async_tx_quiesce: DMA error waiting for transaction
      
      We've discussed simply just reverting the original commit entirely, and
      also much more involved solutions (with per-softirq threads etc).  This
      patch is intentionally stupid and fairly limited, because the issue
      still remains, and the other solutions either got sidetracked or had
      other issues.
      
      We should probably also consider the timer softirqs to be synchronous
      and not be delayed to ksoftirqd (since they were the issue with the
      earlier watchdog problems), but that should be done as a separate patch.
      This does only the tasklet cases.
      Reported-and-tested-by: default avatarHanna Hawa <hannah@marvell.com>
      Reported-and-tested-by: default avatarJosef Griebichler <griebichler.josef@gmx.at>
      Reported-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3c53776e
  2. 16 Jul, 2018 4 commits
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v4.18-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · 30b06abf
      Linus Torvalds authored
      Pull pin control fixes from Linus Walleij:
      
       - A slew of driver fixes for Mediatek mt7622
      
       - Fix a direction inversion bug in the Ingenic driver
      
       - Fix unsupported drive strength setting on the PFC r8a77970
      
       - Off by one and NULL dereference fixes in the NSP driver
      
      * tag 'pinctrl-v4.18-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl: nsp: Fix potential NULL dereference
        pinctrl: nsp: off by ones in nsp_pinmux_enable()
        pinctrl: sh-pfc: r8a77970: remove SH_PFC_PIN_CFG_DRIVE_STRENGTH flag
        pinctrl: ingenic: Fix inverted direction for < JZ4770
        pinctrl: mt7622: fix a kernel panic when gpio-hog is being applied
        pinctrl: mt7622: stop using the deprecated pinctrl_add_gpio_range
        pinctrl: mt7622: fix that pinctrl_claim_hogs cannot work
        pinctrl: mt7622: fix initialization sequence between eint and gpiochip
        pinctrl: mt7622: fix error path on failing at groups building
      30b06abf
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2018-07-16-1' of git://anongit.freedesktop.org/drm/drm · 706bf68b
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
      
       - two AGP fixes in here
      
       - a bunch of mostly amdgpu fixes
      
       - sun4i build fix
      
       - two armada fixes
      
       - some tegra fixes
      
       - one i915 core and one i915 gvt fix
      
      * tag 'drm-fixes-2018-07-16-1' of git://anongit.freedesktop.org/drm/drm:
        drm/amdgpu/pp/smu7: use a local variable for toc indexing
        amd/dc/dce100: On dce100, set clocks to 0 on suspend
        drm/amd/display: Convert 10kHz clks from PPLib into kHz for Vega
        drm/amdgpu: Verify root PD is mapped into kernel address space (v4)
        drm/amd/display: fix invalid function table override
        drm/amdgpu: Reserve VM root shared fence slot for command submission (v3)
        Revert "drm/amd/display: Don't return ddc result and read_bytes in same return value"
        char: amd64-agp: Use 64-bit arithmetic instead of 32-bit
        char: agp: Change return type to vm_fault_t
        drm/i915: Fix hotplug irq ack on i965/g4x
        drm/armada: fix irq handling
        drm/armada: fix colorkey mode property
        drm/tegra: Fix comparison operator for buffer size
        gpu: host1x: Check whether size of unpin isn't 0
        gpu: host1x: Skip IOMMU initialization if firewall is enabled
        drm/sun4i: link in front-end code if needed
        drm/i915/gvt: update vreg on inhibit context lri command
      706bf68b
    • Pavel Tatashin's avatar
      mm: don't do zero_resv_unavail if memmap is not allocated · d1b47a7c
      Pavel Tatashin authored
      Moving zero_resv_unavail before memmap_init_zone(), caused a regression on
      x86-32.
      
      The cause is that we access struct pages before they are allocated when
      CONFIG_FLAT_NODE_MEM_MAP is used.
      
      free_area_init_nodes()
        zero_resv_unavail()
          mm_zero_struct_page(pfn_to_page(pfn)); <- struct page is not alloced
        free_area_init_node()
          if CONFIG_FLAT_NODE_MEM_MAP
            alloc_node_mem_map()
              memblock_virt_alloc_node_nopanic() <- struct page alloced here
      
      On the other hand memblock_virt_alloc_node_nopanic() zeroes all the memory
      that it returns, so we do not need to do zero_resv_unavail() here.
      
      Fixes: e181ae0c ("mm: zero unavailable pages before memmap init")
      Signed-off-by: default avatarPavel Tatashin <pasha.tatashin@oracle.com>
      Tested-by: default avatarMatt Hart <matt@mattface.org>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d1b47a7c
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2018-07-12' of... · bf642e3a
      Dave Airlie authored
      Merge tag 'drm-intel-fixes-2018-07-12' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
      
      I already pulled the first fix, pull the GVT fixes.
      
      - GVT fix for KBL vGPU hang to update virtual register from LRI.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180713070922.GA19840@intel.com
      bf642e3a
  3. 15 Jul, 2018 7 commits
  4. 14 Jul, 2018 28 commits