25 Feb, 2017

9 commits

  • The generic memcpy routine provided in kernel does only byte copies.
    Using word copies we can lower boot time and cycles spend in memcpy
    quite significantly.

    Booting on my de0 nano I see boot times go from 7.2 to 5.6 seconds.
    The avg cycles in memcpy during boot go from 6467 to 1887.

    I tested several algorithms (see code in previous patch mails)

    The implementations I tested and avg cycles:
    - Word Copies + Loop Unrolls + Non Aligned 1882
    - Word Copies + Loop Unrolls 1887
    - Word Copies 2441
    - Byte Copies + Loop Unrolls 6467
    - Byte Copies 7600

    In the end I ended up going with Word Copies + Loop Unrolls as it
    provides best tradeoff between simplicity and boot speedups.

    Signed-off-by: Stafford Horne

    Stafford Horne
     
  • This adds a hand-optimized assembler version of memset and sets
    __HAVE_ARCH_MEMSET to use this version instead of the generic C
    routine

    Signed-off-by: Olof Kindgren
    Signed-off-by: Stafford Horne

    Olof Kindgren
     
  • This patch adds basic support for the idle state of the cpu.
    The patch overrides the regular idle function, enables the interupts,
    checks for the power management unit and enables the cpu doze mode
    if available.

    Signed-off-by: Sebastian Macke
    [shorne@gmail.com: Fixed checkpatch, blankline after declarations]
    Signed-off-by: Stafford Horne

    Sebastian Macke
     
  • The bits were swapped, as per spec and processor implementation the
    power management present bit is 9 and PIC bit is 8. This patch brings
    the definitions into spec.

    Signed-off-by: Sebastian Macke
    [shorne@gmail.com: Added commit body]
    Signed-off-by: Stafford Horne

    Sebastian Macke
     
  • This causes the build to fail when building with the or1k-musl-linux-
    toolchain and it is not needed.

    Signed-off-by: Stafford Horne

    Stefan Kristiansson
     
  • Support for the futex_atomic_* operations by using the
    load-link/store-conditional l.lwa/l.swa instructions.
    Most openrisc cores provide these instructions now if not available,
    emulation is provided.

    Acked-by: Peter Zijlstra (Intel)
    Cc: Peter Zijlstra
    Signed-off-by: Stefan Kristiansson
    [shorne@gmail.com: remove OPENRISC_HAVE_INST_LWA_SWA config suggesed by
    Alan Cox https://lkml.org/lkml/2014/7/23/666]
    Signed-off-by: Stafford Horne

    Stefan Kristiansson
     
  • Using the l.lwa and l.swa atomic instruction pair.
    Most openrisc processor cores provide these instructions now. If the
    instructions are not available emulation is provided.

    Acked-by: Peter Zijlstra (Intel)
    Cc: Peter Zijlstra
    Signed-off-by: Stefan Kristiansson
    [shorne@gmail.com: remove OPENRISC_HAVE_INST_LWA_SWA config suggesed by
    Alan Cox https://lkml.org/lkml/2014/7/23/666]
    [shorne@gmail.com: expand to implement all ops suggested by Peter
    Zijlstra https://lkml.org/lkml/2017/2/20/317]
    Signed-off-by: Stafford Horne

    Stefan Kristiansson
     
  • Optimized version that make use of the l.lwa and l.swa atomic instruction
    pair.
    Most openrisc cores provide these instructions now, if not available
    emulation is provided.

    Acked-by: Peter Zijlstra (Intel)
    Cc: Peter Zijlstra
    Signed-off-by: Stefan Kristiansson
    [shorne@gmail.com: remove OPENRISC_HAVE_INST_LWA_SWA config suggesed by
    Alan Cox https://lkml.org/lkml/2014/7/23/666]
    [shorne@gmail.com: fixed unused calculated value compiler warning in
    define cmpxchg]
    Signed-off-by: Stafford Horne

    Stefan Kristiansson
     
  • This utilize the load-link/store-conditional l.lwa and l.swa
    instructions to implement the atomic bitops.
    When those instructions are not available emulation is provided.

    Acked-by: Peter Zijlstra (Intel)
    Cc: Peter Zijlstra
    Signed-off-by: Stefan Kristiansson
    [shorne@gmail.com: remove OPENRISC_HAVE_INST_LWA_SWA config suggesed by
    Alan Cox https://lkml.org/lkml/2014/7/23/666, implement
    test_and_change_bit]
    Signed-off-by: Stafford Horne

    Stefan Kristiansson
     

06 Feb, 2017

7 commits


05 Feb, 2017

5 commits

  • Pull irq fixes from Thomas Gleixner:

    - Prevent double activation of interrupt lines, which causes problems
    on certain interrupt controllers

    - Handle the fallout of the above because x86 (ab)uses the activation
    function to reconfigure interrupts under the hood.

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/irq: Make irq activate operations symmetric
    irqdomain: Avoid activating interrupts more than once

    Linus Torvalds
     
  • Pull KVM fix from Radim Krčmář:
    "Fix a regression that prevented migration between hosts with different
    XSAVE features even if the missing features were not used by the guest
    (for stable)"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: x86: do not save guest-unsupported XSAVE state

    Linus Torvalds
     
  • Pull char/misc driver fixes from Greg KH:
    "Here are two bugfixes that resolve some reported issues. One in the
    firmware loader, that should fix the much-reported problem of crashes
    with it. The other is a hyperv fix for a reported regression.

    Both have been in linux-next for a week or so with no reported issues"

    * tag 'char-misc-4.10-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    Drivers: hv: vmbus: finally fix hv_need_to_signal_on_read()
    firmware: fix NULL pointer dereference in __fw_load_abort()

    Linus Torvalds
     
  • Pull staging/IIO fixes from Greg KH:
    "Here are a few small IIO and one staging driver fix for 4.10-rc7. They
    fix some reported issues with the drivers.

    All of them have been in linux-next for a week or so with no reported
    issues"

    * tag 'staging-4.10-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    staging: greybus: timesync: validate platform state callback
    iio: dht11: Use usleep_range instead of msleep for start signal
    iio: adc: palmas_gpadc: retrieve a valid iio_dev in suspend/resume
    iio: health: max30100: fixed parenthesis around FIFO count check
    iio: health: afe4404: retrieve a valid iio_dev in suspend/resume
    iio: health: afe4403: retrieve a valid iio_dev in suspend/resume

    Linus Torvalds
     
  • Pull USB fixes from Greg KH:
    "Here are some small USB fixes for some reported issues, and the usual
    number of new device ids for 4.10-rc7.

    All of these, except the last new device id, have been in linux-next
    for a while with no reported issues"

    * tag 'usb-4.10-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
    USB: serial: pl2303: add ATEN device ID
    usb: gadget: f_fs: Assorted buffer overflow checks.
    USB: Add quirk for WORLDE easykey.25 MIDI keyboard
    usb: musb: Fix external abort on non-linefetch for musb_irq_work()
    usb: musb: Fix host mode error -71 regression
    USB: serial: option: add device ID for HP lt2523 (Novatel E371)
    USB: serial: qcserial: add Dell DW5570 QDL

    Linus Torvalds
     

04 Feb, 2017

19 commits

  • Pull SCSI fix from James Bottomley:
    "A single fix this time: a fix for a virtqueue removal bug which only
    appears to affect S390, but which results in the queue hanging forever
    thus causing the machine to fail shutdown"

    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    scsi: virtio_scsi: Reject commands when virtqueue is broken

    Linus Torvalds
     
  • Pull virtio/vhost fixes from Michael S. Tsirkin:
    "Last minute fixes:

    - ARM DMA fix revert

    - vhost endian-ness fix

    - MAINTAINERS: email address change for Amit"

    * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
    MAINTAINERS: update email address for Amit Shah
    vhost: fix initialization for vq->is_le
    Revert "vring: Force use of DMA API for ARM-based systems with legacy devices"

    Linus Torvalds
     
  • Pull VFIO fix from Alex Williamson:
    "Fix an error path in SPAPR IOMMU backend (Alexey Kardashevskiy)"

    * tag 'vfio-v4.10-rc7' of git://github.com/awilliam/linux-vfio:
    vfio/spapr: Fix missing mutex unlock when creating a window

    Linus Torvalds
     
  • Merge fixes from Andrew Morton:
    "8 fixes"

    * emailed patches from Andrew Morton :
    mm, fs: check for fatal signals in do_generic_file_read()
    fs: break out of iomap_file_buffered_write on fatal signals
    base/memory, hotplug: fix a kernel oops in show_valid_zones()
    mm/memory_hotplug.c: check start_pfn in test_pages_in_a_zone()
    jump label: pass kbuild_cflags when checking for asm goto support
    shmem: fix sleeping from atomic context
    kasan: respect /proc/sys/kernel/traceoff_on_warning
    zswap: disable changing params if init fails

    Linus Torvalds
     
  • do_generic_file_read() can be told to perform a large request from
    userspace. If the system is under OOM and the reading task is the OOM
    victim then it has an access to memory reserves and finishing the full
    request can lead to the full memory depletion which is dangerous. Make
    sure we rather go with a short read and allow the killed task to
    terminate.

    Link: http://lkml.kernel.org/r/20170201092706.9966-3-mhocko@kernel.org
    Signed-off-by: Michal Hocko
    Reviewed-by: Christoph Hellwig
    Cc: Tetsuo Handa
    Cc: Al Viro
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Hocko
     
  • Tetsuo has noticed that an OOM stress test which performs large write
    requests can cause the full memory reserves depletion. He has tracked
    this down to the following path

    __alloc_pages_nodemask+0x436/0x4d0
    alloc_pages_current+0x97/0x1b0
    __page_cache_alloc+0x15d/0x1a0 mm/filemap.c:728
    pagecache_get_page+0x5a/0x2b0 mm/filemap.c:1331
    grab_cache_page_write_begin+0x23/0x40 mm/filemap.c:2773
    iomap_write_begin+0x50/0xd0 fs/iomap.c:118
    iomap_write_actor+0xb5/0x1a0 fs/iomap.c:190
    ? iomap_write_end+0x80/0x80 fs/iomap.c:150
    iomap_apply+0xb3/0x130 fs/iomap.c:79
    iomap_file_buffered_write+0x68/0xa0 fs/iomap.c:243
    ? iomap_write_end+0x80/0x80
    xfs_file_buffered_aio_write+0x132/0x390 [xfs]
    ? remove_wait_queue+0x59/0x60
    xfs_file_write_iter+0x90/0x130 [xfs]
    __vfs_write+0xe5/0x140
    vfs_write+0xc7/0x1f0
    ? syscall_trace_enter+0x1d0/0x380
    SyS_write+0x58/0xc0
    do_syscall_64+0x6c/0x200
    entry_SYSCALL64_slow_path+0x25/0x25

    the oom victim has access to all memory reserves to make a forward
    progress to exit easier. But iomap_file_buffered_write and other
    callers of iomap_apply loop to complete the full request. We need to
    check for fatal signals and back off with a short write instead.

    As the iomap_apply delegates all the work down to the actor we have to
    hook into those. All callers that work with the page cache are calling
    iomap_write_begin so we will check for signals there. dax_iomap_actor
    has to handle the situation explicitly because it copies data to the
    userspace directly. Other callers like iomap_page_mkwrite work on a
    single page or iomap_fiemap_actor do not allocate memory based on the
    given len.

    Fixes: 68a9f5e7007c ("xfs: implement iomap based buffered write path")
    Link: http://lkml.kernel.org/r/20170201092706.9966-2-mhocko@kernel.org
    Signed-off-by: Michal Hocko
    Reported-by: Tetsuo Handa
    Reviewed-by: Christoph Hellwig
    Cc: Al Viro
    Cc: [4.8+]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Hocko
     
  • Reading a sysfs "memoryN/valid_zones" file leads to the following oops
    when the first page of a range is not backed by struct page.
    show_valid_zones() assumes that 'start_pfn' is always valid for
    page_zone().

    BUG: unable to handle kernel paging request at ffffea017a000000
    IP: show_valid_zones+0x6f/0x160

    This issue may happen on x86-64 systems with 64GiB or more memory since
    their memory block size is bumped up to 2GiB. [1] An example of such
    systems is desribed below. 0x3240000000 is only aligned by 1GiB and
    this memory block starts from 0x3200000000, which is not backed by
    struct page.

    BIOS-e820: [mem 0x0000003240000000-0x000000603fffffff] usable

    Since test_pages_in_a_zone() already checks holes, fix this issue by
    extending this function to return 'valid_start' and 'valid_end' for a
    given range. show_valid_zones() then proceeds with the valid range.

    [1] 'Commit bdee237c0343 ("x86: mm: Use 2GB memory block size on
    large-memory x86-64 systems")'

    Link: http://lkml.kernel.org/r/20170127222149.30893-3-toshi.kani@hpe.com
    Signed-off-by: Toshi Kani
    Cc: Greg Kroah-Hartman
    Cc: Zhang Zhen
    Cc: Reza Arbab
    Cc: David Rientjes
    Cc: Dan Williams
    Cc: [4.4+]

    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Toshi Kani
     
  • Patch series "fix a kernel oops when reading sysfs valid_zones", v2.

    A sysfs memory file is created for each 2GiB memory block on x86-64 when
    the system has 64GiB or more memory. [1] When the start address of a
    memory block is not backed by struct page, i.e. a memory range is not
    aligned by 2GiB, reading its 'valid_zones' attribute file leads to a
    kernel oops. This issue was observed on multiple x86-64 systems with
    more than 64GiB of memory. This patch-set fixes this issue.

    Patch 1 first fixes an issue in test_pages_in_a_zone(), which does not
    test the start section.

    Patch 2 then fixes the kernel oops by extending test_pages_in_a_zone()
    to return valid [start, end).

    Note for stable kernels: The memory block size change was made by commit
    bdee237c0343 ("x86: mm: Use 2GB memory block size on large-memory x86-64
    systems"), which was accepted to 3.9. However, this patch-set depends
    on (and fixes) the change to test_pages_in_a_zone() made by commit
    5f0f2887f4de ("mm/memory_hotplug.c: check for missing sections in
    test_pages_in_a_zone()"), which was accepted to 4.4.

    So, I recommend that we backport it up to 4.4.

    [1] 'Commit bdee237c0343 ("x86: mm: Use 2GB memory block size on
    large-memory x86-64 systems")'

    This patch (of 2):

    test_pages_in_a_zone() does not check 'start_pfn' when it is aligned by
    section since 'sec_end_pfn' is set equal to 'pfn'. Since this function
    is called for testing the range of a sysfs memory file, 'start_pfn' is
    always aligned by section.

    Fix it by properly setting 'sec_end_pfn' to the next section pfn.

    Also make sure that this function returns 1 only when the range belongs
    to a zone.

    Link: http://lkml.kernel.org/r/20170127222149.30893-2-toshi.kani@hpe.com
    Signed-off-by: Toshi Kani
    Cc: Andrew Banman
    Cc: Reza Arbab
    Cc: Greg KH
    Cc: [4.4+]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Toshi Kani
     
  • Some versions of ARM GCC compiler such as Android toolchain throws in a
    '-fpic' flag by default. This causes the gcc-goto check script to fail
    although some config would have '-fno-pic' flag in the KBUILD_CFLAGS.

    This patch passes the KBUILD_CFLAGS to the check script so that the
    script does not rely on the default config from different compilers.

    Link: http://lkml.kernel.org/r/20170120234329.78868-1-dtwlin@google.com
    Signed-off-by: David Lin
    Acked-by: Steven Rostedt
    Cc: Michal Marek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Lin
     
  • Syzkaller fuzzer managed to trigger this:

    BUG: sleeping function called from invalid context at mm/shmem.c:852
    in_atomic(): 1, irqs_disabled(): 0, pid: 529, name: khugepaged
    3 locks held by khugepaged/529:
    #0: (shrinker_rwsem){++++..}, at: [] shrink_slab.part.59+0x121/0xd30 mm/vmscan.c:451
    #1: (&type->s_umount_key#29){++++..}, at: [] trylock_super+0x20/0x100 fs/super.c:392
    #2: (&(&sbinfo->shrinklist_lock)->rlock){+.+.-.}, at: [] spin_lock include/linux/spinlock.h:302 [inline]
    #2: (&(&sbinfo->shrinklist_lock)->rlock){+.+.-.}, at: [] shmem_unused_huge_shrink+0x28e/0x1490 mm/shmem.c:427
    CPU: 2 PID: 529 Comm: khugepaged Not tainted 4.10.0-rc5+ #201
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Call Trace:
    shmem_undo_range+0xb20/0x2710 mm/shmem.c:852
    shmem_truncate_range+0x27/0xa0 mm/shmem.c:939
    shmem_evict_inode+0x35f/0xca0 mm/shmem.c:1030
    evict+0x46e/0x980 fs/inode.c:553
    iput_final fs/inode.c:1515 [inline]
    iput+0x589/0xb20 fs/inode.c:1542
    shmem_unused_huge_shrink+0xbad/0x1490 mm/shmem.c:446
    shmem_unused_huge_scan+0x10c/0x170 mm/shmem.c:512
    super_cache_scan+0x376/0x450 fs/super.c:106
    do_shrink_slab mm/vmscan.c:378 [inline]
    shrink_slab.part.59+0x543/0xd30 mm/vmscan.c:481
    shrink_slab mm/vmscan.c:2592 [inline]
    shrink_node+0x2c7/0x870 mm/vmscan.c:2592
    shrink_zones mm/vmscan.c:2734 [inline]
    do_try_to_free_pages+0x369/0xc80 mm/vmscan.c:2776
    try_to_free_pages+0x3c6/0x900 mm/vmscan.c:2982
    __perform_reclaim mm/page_alloc.c:3301 [inline]
    __alloc_pages_direct_reclaim mm/page_alloc.c:3322 [inline]
    __alloc_pages_slowpath+0xa24/0x1c30 mm/page_alloc.c:3683
    __alloc_pages_nodemask+0x544/0xae0 mm/page_alloc.c:3848
    __alloc_pages include/linux/gfp.h:426 [inline]
    __alloc_pages_node include/linux/gfp.h:439 [inline]
    khugepaged_alloc_page+0xc2/0x1b0 mm/khugepaged.c:750
    collapse_huge_page+0x182/0x1fe0 mm/khugepaged.c:955
    khugepaged_scan_pmd+0xfdf/0x12a0 mm/khugepaged.c:1208
    khugepaged_scan_mm_slot mm/khugepaged.c:1727 [inline]
    khugepaged_do_scan mm/khugepaged.c:1808 [inline]
    khugepaged+0xe9b/0x1590 mm/khugepaged.c:1853
    kthread+0x326/0x3f0 kernel/kthread.c:227
    ret_from_fork+0x31/0x40 arch/x86/entry/entry_64.S:430

    The iput() from atomic context was a bad idea: if after igrab() somebody
    else calls iput() and we left with the last inode reference, our iput()
    would lead to inode eviction and therefore sleeping.

    This patch should fix the situation.

    Link: http://lkml.kernel.org/r/20170131093141.GA15899@node.shutemov.name
    Signed-off-by: Kirill A. Shutemov
    Reported-by: Dmitry Vyukov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     
  • After much waiting I finally reproduced a KASAN issue, only to find my
    trace-buffer empty of useful information because it got spooled out :/

    Make kasan_report honour the /proc/sys/kernel/traceoff_on_warning
    interface.

    Link: http://lkml.kernel.org/r/20170125164106.3514-1-aryabinin@virtuozzo.com
    Signed-off-by: Peter Zijlstra (Intel)
    Signed-off-by: Andrey Ryabinin
    Acked-by: Alexander Potapenko
    Cc: Dmitry Vyukov
    Cc: Steven Rostedt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Peter Zijlstra
     
  • Add zswap_init_failed bool that prevents changing any of the module
    params, if init_zswap() fails, and set zswap_enabled to false. Change
    'enabled' param to a callback, and check zswap_init_failed before
    allowing any change to 'enabled', 'zpool', or 'compressor' params.

    Any driver that is built-in to the kernel will not be unloaded if its
    init function returns error, and its module params remain accessible for
    users to change via sysfs. Since zswap uses param callbacks, which
    assume that zswap has been initialized, changing the zswap params after
    a failed initialization will result in WARNING due to the param
    callbacks expecting a pool to already exist. This prevents that by
    immediately exiting any of the param callbacks if initialization failed.

    This was reported here:
    https://marc.info/?l=linux-mm&m=147004228125528&w=4

    And fixes this WARNING:
    [ 429.723476] WARNING: CPU: 0 PID: 5140 at mm/zswap.c:503 __zswap_pool_current+0x56/0x60

    The warning is just noise, and not serious. However, when init fails,
    zswap frees all its percpu dstmem pages and its kmem cache. The kmem
    cache might be serious, if kmem_cache_alloc(NULL, gfp) has problems; but
    the percpu dstmem pages are definitely a problem, as they're used as
    temporary buffer for compressed pages before copying into place in the
    zpool.

    If the user does get zswap enabled after an init failure, then zswap
    will likely Oops on the first page it tries to compress (or worse, start
    corrupting memory).

    Fixes: 90b0fc26d5db ("zswap: change zpool/compressor at runtime")
    Link: http://lkml.kernel.org/r/20170124200259.16191-2-ddstreet@ieee.org
    Signed-off-by: Dan Streetman
    Reported-by: Marcin Miroslaw
    Cc: Seth Jennings
    Cc: Michal Hocko
    Cc: Sergey Senozhatsky
    Cc: Minchan Kim
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Streetman
     
  • …/git/broonie/regulator

    Pull regulator fixes from Mark Brown:
    "Three changes here: two run of the mill driver specific fixes and a
    change from Mark Rutland which reverts some new device specific ACPI
    binding code which was added during the merge window as there are
    concerns about this sending the wrong signal about usage of regulators
    in ACPI systems"

    * tag 'regulator-fix-v4.10-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
    regulator: fixed: Revert support for ACPI interface
    regulator: axp20x: AXP806: Fix dcdcb being set instead of dcdce
    regulator: twl6030: fix range comparison, allowing vsel = 59

    Linus Torvalds
     
  • I'm leaving my job at Red Hat, this email address will stop working next week.
    Update it to one that I will have access to later.

    Signed-off-by: Amit Shah
    Signed-off-by: Michael S. Tsirkin

    Amit Shah
     
  • Currently, under certain circumstances vhost_init_is_le does just a part
    of the initialization job, and depends on vhost_reset_is_le being called
    too. For this reason vhost_vq_init_access used to call vhost_reset_is_le
    when vq->private_data is NULL. This is not only counter intuitive, but
    also real a problem because it breaks vhost_net. The bug was introduced to
    vhost_net with commit 2751c9882b94 ("vhost: cross-endian support for
    legacy devices"). The symptom is corruption of the vq's used.idx field
    (virtio) after VHOST_NET_SET_BACKEND was issued as a part of the vhost
    shutdown on a vq with pending descriptors.

    Let us make sure the outcome of vhost_init_is_le never depend on the state
    it is actually supposed to initialize, and fix virtio_net by removing the
    reset from vhost_vq_init_access.

    With the above, there is no reason for vhost_reset_is_le to do just half
    of the job. Let us make vhost_reset_is_le reinitialize is_le.

    Signed-off-by: Halil Pasic
    Reported-by: Michael A. Tebolt
    Reported-by: Dr. David Alan Gilbert
    Fixes: commit 2751c9882b94 ("vhost: cross-endian support for legacy devices")
    Cc:
    Signed-off-by: Michael S. Tsirkin
    Reviewed-by: Greg Kurz
    Tested-by: Michael A. Tebolt

    Halil Pasic
     
  • This reverts commit c7070619f3408d9a0dffbed9149e6f00479cf43b.

    This has been shown to regress on some ARM systems:

    by forcing on DMA API usage for ARM systems, we have inadvertently
    kicked open a hornets' nest in terms of cache-coherency. Namely that
    unless the virtio device is explicitly described as capable of coherent
    DMA by firmware, the DMA APIs on ARM and other DT-based platforms will
    assume it is non-coherent. This turns out to cause a big problem for the
    likes of QEMU and kvmtool, which generate virtio-mmio devices in their
    guest DTs but neglect to add the often-overlooked "dma-coherent"
    property; as a result, we end up with the guest making non-cacheable
    accesses to the vring, the host doing so cacheably, both talking past
    each other and things going horribly wrong.

    We are working on a safer work-around.

    Fixes: c7070619f340 ("vring: Force use of DMA API for ARM-based systems with legacy devices")
    Reported-by: Robin Murphy
    Cc:
    Signed-off-by: Will Deacon
    Signed-off-by: Michael S. Tsirkin
    Acked-by: Marc Zyngier

    Michael S. Tsirkin
     
  • …/johan/usb-serial into usb-linus

    Johan writes:

    USB-serial fixes for v4.10-rc7

    One more device ID for pl2303.

    Signed-off-by: Johan Hovold <johan@kernel.org>

    Greg Kroah-Hartman
     
  • Pull MMC fix from Ulf Hansson:
    "MMC host: sdhci: Avoid hang when receiving spurious CARD_INT
    interrupts"

    * tag 'mmc-v4.10-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
    mmc: sdhci: Ignore unexpected CARD_INT interrupts

    Linus Torvalds
     
  • Pull drm fixes from Dave Airlie:
    "Another fixes pull for v4.10, it's a bit big due to the backport of
    the VMA fixes for i915 that should fix the oops on shutdown problems
    that you've worked around.

    There are also two drm core connector registration fixes, a bunch of
    nouveau regression fixes and two AMD fixes"

    * tag 'drm-fixes-for-v4.10-rc7' of git://people.freedesktop.org/~airlied/linux:
    drm/radeon: Fix vram_size/visible values in DRM_RADEON_GEM_INFO ioctl
    drm/amdgpu/si: fix crash on headless asics
    drm/i915: Track pinned vma in intel_plane_state
    drm/atomic: Unconditionally call prepare_fb.
    drm/atomic: Fix double free in drm_atomic_state_default_clear
    drm/nouveau/kms/nv50: request vblank events for commits that send completion events
    drm/nouveau/nv1a,nv1f/disp: fix memory clock rate retrieval
    drm/nouveau/disp/gt215: Fix HDA ELD handling (thus, HDMI audio) on gt215
    drm/nouveau/nouveau/led: prevent compiling the led-code if nouveau=y and leds=m
    drm/nouveau/disp/mcp7x: disable dptmds workaround
    drm/nouveau: prevent userspace from deleting client object
    drm/nouveau/fence/g84-: protect against concurrent access to semaphore buffers
    drm: Don't race connector registration
    drm: prevent double-(un)registration for connectors

    Linus Torvalds