30 Oct, 2020

1 commit

  • Mark flush request as IDLE in its .end_io(), aligning it with how normal
    requests behave. The flush request stays in in-flight tags if we're not
    using an IO scheduler, so we need to change its state into IDLE.
    Otherwise, we will hang in blk_mq_tagset_wait_completed_request() during
    error recovery because flush the request state is kept as COMPLETED.

    Reported-by: Yi Zhang
    Signed-off-by: Ming Lei
    Tested-by: Yi Zhang
    Cc: Chao Leng
    Cc: Sagi Grimberg
    Signed-off-by: Jens Axboe

    Ming Lei
     

29 Oct, 2020

6 commits

  • sg_copy_buffer() returns a size_t with the number of bytes copied.
    Return 0 instead of false if the copy is skipped.

    Signed-off-by: David Disseldorp
    Reviewed-by: Douglas Gilbert
    Reviewed-by: Johannes Thumshirn
    Signed-off-by: Jens Axboe

    David Disseldorp
     
  • Pull NVMe fixes from Christoph:

    "nvme updates for 5.10:

    - improve zone revalidation (Keith Busch)
    - gracefully handle zero length messages in nvme-rdma (zhenwei pi)
    - nvme-fc error handling fixes (James Smart)
    - nvmet tracing NULL pointer dereference fix (Chaitanya Kulkarni)"

    * tag 'nvme-5.10-2020-10-29' of git://git.infradead.org/nvme:
    nvmet: fix a NULL pointer dereference when tracing the flush command
    nvme-fc: remove nvme_fc_terminate_io()
    nvme-fc: eliminate terminate_io use by nvme_fc_error_recovery
    nvme-fc: remove err_work work item
    nvme-fc: track error_recovery while connecting
    nvme-rdma: handle unexpected nvme completion data length
    nvme: ignore zone validate errors on subsequent scans

    Jens Axboe
     
  • Use platform_get_resource() to fetch the memory resource and
    platform_get_irq_optional() to get optional IRQ instead of
    open-coded variants.

    IRQ is not supposed to be changed at runtime, so there is
    no functional change in ace_fsm_yieldirq().

    On the other hand we now take first resources instead of last ones
    to proceed. I can't imagine how broken should be firmware to have
    a garbage in the first resource slots. But if it the case, it needs
    to be documented.

    Signed-off-by: Andy Shevchenko
    Acked-by: Michal Simek
    Signed-off-by: Jens Axboe

    Andy Shevchenko
     
  • When the zoned mode is enabled in null_blk, Serializing read, write
    and zone management operations for each zone is necessary to protect
    device level information for managing zone resources (zone open and
    closed counters) as well as each zone condition and write pointer
    position. Commit 35bc10b2eafb ("null_blk: synchronization fix for
    zoned device") introduced a spinlock to implement this serialization.
    However, when memory backing is also enabled, GFP_NOIO memory
    allocations are executed under the spinlock, resulting in might_sleep()
    warnings. Furthermore, the zone_lock spinlock is locked/unlocked using
    spin_lock_irq/spin_unlock_irq, similarly to the memory backing code with
    the nullb->lock spinlock. This nested use of irq locks wrecks the irq
    enabled/disabled state.

    Fix all this by introducing a bitmap for per-zone lock, with locking
    implemented using wait_on_bit_lock_io() and clear_and_wake_up_bit().
    This locking mechanism allows keeping a zone locked while executing
    null_process_cmd(), serializing all operations to the zone while
    allowing to sleep during memory backing allocation with GFP_NOIO.
    Device level zone resource management information is protected using
    a spinlock which is not held while executing null_process_cmd();

    Fixes: 35bc10b2eafb ("null_blk: synchronization fix for zoned device")
    Signed-off-by: Damien Le Moal
    Signed-off-by: Jens Axboe

    Damien Le Moal
     
  • In the cae of the REQ_OP_ZONE_RESET_ALL operation, the command sector is
    ignored and the operation is applied to all sequential zones. For these
    commands, tracing the effect of the command using the command sector to
    determine the target zone is thus incorrect.

    Fix null_zone_mgmt() zone condition tracing in the case of
    REQ_OP_ZONE_RESET_ALL to apply tracing to all sequential zones that are
    not already empty.

    Fixes: 766c3297d7e1 ("null_blk: add trace in null_blk_zoned.c")
    Signed-off-by: Damien Le Moal
    Cc: stable@vger.kernel.org
    Signed-off-by: Jens Axboe

    Damien Le Moal
     
  • Mounted NBD device can be resized, one use case is rbd-nbd.

    Fix the issue by setting up default block size, then not touch it
    in nbd_size_update() any more. This kind of usage is aligned with loop
    which has same use case too.

    Cc: stable@vger.kernel.org
    Fixes: c8a83a6b54d0 ("nbd: Use set_blocksize() to set device blocksize")
    Reported-by: lining
    Signed-off-by: Ming Lei
    Cc: Josef Bacik
    Cc: Jan Kara
    Tested-by: lining
    Signed-off-by: Jens Axboe

    Ming Lei
     

28 Oct, 2020

2 commits

  • When the bio's size reaches max_append_sectors, bio_add_hw_page returns
    0 then __bio_iov_append_get_pages returns -EINVAL. This is an expected
    result of building a small enough bio not to be split in the IO path.
    However, iov_iter is not advanced in this case, causing the same pages
    are filled for the bio again and again.

    Fix the case by properly advancing the iov_iter for already processed
    pages.

    Fixes: 0512a75b98f8 ("block: Introduce REQ_OP_ZONE_APPEND")
    Cc: stable@vger.kernel.org # 5.8+
    Reviewed-by: Johannes Thumshirn
    Signed-off-by: Naohiro Aota
    Signed-off-by: Jens Axboe

    Naohiro Aota
     
  • Parallel write,read,zone-mgmt operations accessing/altering zone state
    and write-pointer may get into race. Avoid the situation by using a new
    spinlock for zoned device.
    Concurrent zone-appends (on a zone) returning same write-pointer issue
    is also avoided using this lock.

    Cc: stable@vger.kernel.org
    Fixes: e0489ed5daeb ("null_blk: Support REQ_OP_ZONE_APPEND")
    Signed-off-by: Kanchan Joshi
    Reviewed-by: Damien Le Moal
    Signed-off-by: Jens Axboe

    Kanchan Joshi
     

27 Oct, 2020

7 commits

  • When target side trace in turned on and flush command is issued from the
    host it results in the following Oops.

    [ 856.789724] BUG: kernel NULL pointer dereference, address: 0000000000000068
    [ 856.790686] #PF: supervisor read access in kernel mode
    [ 856.791262] #PF: error_code(0x0000) - not-present page
    [ 856.791863] PGD 6d7110067 P4D 6d7110067 PUD 66f0ad067 PMD 0
    [ 856.792527] Oops: 0000 [#1] SMP NOPTI
    [ 856.792950] CPU: 15 PID: 7034 Comm: nvme Tainted: G OE 5.9.0nvme-5.9+ #71
    [ 856.793790] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-59-gc9ba5276e3214
    [ 856.794956] RIP: 0010:trace_event_raw_event_nvmet_req_init+0x13e/0x170 [nvmet]
    [ 856.795734] Code: 41 5c 41 5d c3 31 d2 31 f6 e8 4e 9b b8 e0 e9 0e ff ff ff 49 8b 55 00 48 8b 38 8b 0
    [ 856.797740] RSP: 0018:ffffc90001be3a60 EFLAGS: 00010246
    [ 856.798375] RAX: 0000000000000000 RBX: ffff8887e7d2c01c RCX: 0000000000000000
    [ 856.799234] RDX: 0000000000000020 RSI: 0000000057e70ea2 RDI: ffff8887e7d2c034
    [ 856.800088] RBP: ffff88869f710578 R08: ffff888807500d40 R09: 00000000fffffffe
    [ 856.800951] R10: 0000000064c66670 R11: 00000000ef955201 R12: ffff8887e7d2c034
    [ 856.801807] R13: ffff88869f7105c8 R14: 0000000000000040 R15: ffff88869f710440
    [ 856.802667] FS: 00007f6a22bd8780(0000) GS:ffff888813a00000(0000) knlGS:0000000000000000
    [ 856.803635] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 856.804367] CR2: 0000000000000068 CR3: 00000006d73e0000 CR4: 00000000003506e0
    [ 856.805283] Call Trace:
    [ 856.805613] nvmet_req_init+0x27c/0x480 [nvmet]
    [ 856.806200] nvme_loop_queue_rq+0xcb/0x1d0 [nvme_loop]
    [ 856.806862] blk_mq_dispatch_rq_list+0x123/0x7b0
    [ 856.807459] ? kvm_sched_clock_read+0x14/0x30
    [ 856.808025] __blk_mq_sched_dispatch_requests+0xc7/0x170
    [ 856.808708] blk_mq_sched_dispatch_requests+0x30/0x60
    [ 856.809372] __blk_mq_run_hw_queue+0x70/0x100
    [ 856.809935] __blk_mq_delay_run_hw_queue+0x156/0x170
    [ 856.810574] blk_mq_run_hw_queue+0x86/0xe0
    [ 856.811104] blk_mq_sched_insert_request+0xef/0x160
    [ 856.811733] blk_execute_rq+0x69/0xc0
    [ 856.812212] ? blk_mq_rq_ctx_init+0xd0/0x230
    [ 856.812784] nvme_execute_passthru_rq+0x57/0x130 [nvme_core]
    [ 856.813461] nvme_submit_user_cmd+0xeb/0x300 [nvme_core]
    [ 856.814099] nvme_user_cmd.isra.82+0x11e/0x1a0 [nvme_core]
    [ 856.814752] blkdev_ioctl+0x1dc/0x2c0
    [ 856.815197] block_ioctl+0x3f/0x50
    [ 856.815606] __x64_sys_ioctl+0x84/0xc0
    [ 856.816074] do_syscall_64+0x33/0x40
    [ 856.816533] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [ 856.817168] RIP: 0033:0x7f6a222ed107
    [ 856.817617] Code: 44 00 00 48 8b 05 81 cd 2c 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 2e 8
    [ 856.819901] RSP: 002b:00007ffca848f058 EFLAGS: 00000202 ORIG_RAX: 0000000000000010
    [ 856.820846] RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007f6a222ed107
    [ 856.821726] RDX: 00007ffca848f060 RSI: 00000000c0484e43 RDI: 0000000000000003
    [ 856.822603] RBP: 0000000000000003 R08: 000000000000003f R09: 0000000000000005
    [ 856.823478] R10: 00007ffca848ece0 R11: 0000000000000202 R12: 00007ffca84912d3
    [ 856.824359] R13: 00007ffca848f4d0 R14: 0000000000000002 R15: 000000000067e900
    [ 856.825236] Modules linked in: nvme_loop(OE) nvmet(OE) nvme_fabrics(OE) null_blk nvme(OE) nvme_corel

    Move the nvmet_req_init() tracepoint after we parse the command in
    nvmet_req_init() so that we can get rid of the duplicate
    nvmet_find_namespace() call.
    Rename __assign_disk_name() -> __assign_req_name(). Now that we call
    tracepoint after parsing the command simplify the newly added
    __assign_req_name() which fixes this bug.

    Signed-off-by: Chaitanya Kulkarni
    Signed-off-by: Christoph Hellwig

    Chaitanya Kulkarni
     
  • __nvme_fc_terminate_io() is now called by only 1 place, in reset_work.
    Consoldate and move the functionality of terminate_io into reset_work.

    In reset_work, rather than calling the create_association directly,
    schedule the connect work element to do its thing. After scheduling,
    flush the connect work element to continue with semantic of not
    returning until connect has been attempted at least once.

    Signed-off-by: James Smart
    Signed-off-by: Christoph Hellwig

    James Smart
     
  • nvme_fc_error_recovery() special cases handling when in CONNECTING state
    and calls __nvme_fc_terminate_io(). __nvme_fc_terminate_io() itself
    special cases CONNECTING state and calls the routine to abort outstanding
    ios.

    Simplify the sequence by putting the call to abort outstanding I/Os
    directly in nvme_fc_error_recovery.

    Move the location of __nvme_fc_abort_outstanding_ios(), and
    nvme_fc_terminate_exchange() which is called by it, to avoid adding
    function prototypes for nvme_fc_error_recovery().

    Signed-off-by: James Smart
    Signed-off-by: Christoph Hellwig

    James Smart
     
  • err_work was created to handle errors (mainly I/O timeouts) while in
    CONNECTING state. The flag for err_work_active is also unneeded.

    Remove err_work_active and err_work. The actions to abort I/Os are moved
    inline to nvme_error_recovery().

    Signed-off-by: James Smart
    Signed-off-by: Christoph Hellwig

    James Smart
     
  • Whenever there are errors during CONNECTING, the driver recovers by
    aborting all outstanding ios and counts on the io completion to fail them
    and thus the connection/association they are on. However, the connection
    failure depends on a failure state from the core routines. Not all
    commands that are issued by the core routine are guaranteed to cause a
    failure of the core routine. They may be treated as a failure status and
    the status is then ignored.

    As such, whenever the transport enters error_recovery while CONNECTING,
    it will set a new flag indicating an association failed. The
    create_association routine which creates and initializes the controller,
    will monitor the state of the flag as well as the core routine error
    status and ensure the association fails if there was an error.

    Signed-off-by: James Smart
    Signed-off-by: Christoph Hellwig

    James Smart
     
  • Receiving a zero length message leads to the following warnings because
    the CQE is processed twice:

    refcount_t: underflow; use-after-free.
    WARNING: CPU: 0 PID: 0 at lib/refcount.c:28

    RIP: 0010:refcount_warn_saturate+0xd9/0xe0
    Call Trace:

    nvme_rdma_recv_done+0xf3/0x280 [nvme_rdma]
    __ib_process_cq+0x76/0x150 [ib_core]
    ...

    Sanity check the received data length, to avoids this.

    Thanks to Chao Leng & Sagi for suggestions.

    Signed-off-by: zhenwei pi
    Reviewed-by: Sagi Grimberg
    Signed-off-by: Christoph Hellwig

    zhenwei pi
     
  • Revalidating nvme zoned namespaces requires IO commands, and there are
    controller states that prevent IO. For example, a sanitize in progress
    is required to fail all IO, but we don't want to remove a namespace
    we've previously added just because the controller is in such a state.
    Suppress the error in this case.

    Reported-by: Michael Nguyen
    Signed-off-by: Keith Busch
    Reviewed-by: Chaitanya Kulkarni
    Signed-off-by: Christoph Hellwig

    Keith Busch
     

26 Oct, 2020

18 commits

  • Similarly to commit 457e490f2b741 ("blkcg: allocate struct blkcg_gq
    outside request queue spinlock"), blkg_create can also trigger
    occasional -ENOMEM failures at the radix insertion because any
    allocation inside blkg_create has to be non-blocking, making it more
    likely to fail. This causes trouble for userspace tools trying to
    configure io weights who need to deal with this condition.

    This patch reduces the occurrence of -ENOMEMs on this path by preloading
    the radix tree element on a GFP_KERNEL context, such that we guarantee
    the later non-blocking insertion won't fail.

    A similar solution exists in blkcg_init_queue for the same situation.

    Acked-by: Tejun Heo
    Signed-off-by: Gabriel Krisman Bertazi
    Signed-off-by: Jens Axboe

    Gabriel Krisman Bertazi
     
  • If new_blkg allocation raced with blk_policy change and
    blkg_lookup_check fails, new_blkg is leaked.

    Acked-by: Tejun Heo
    Signed-off-by: Gabriel Krisman Bertazi
    Signed-off-by: Jens Axboe

    Gabriel Krisman Bertazi
     
  • Linus Torvalds
     
  • Use a more generic form for __section that requires quotes to avoid
    complications with clang and gcc differences.

    Remove the quote operator # from compiler_attributes.h __section macro.

    Convert all unquoted __section(foo) uses to quoted __section("foo").
    Also convert __attribute__((section("foo"))) uses to __section("foo")
    even if the __attribute__ has multiple list entry forms.

    Conversion done using the script at:

    https://lore.kernel.org/lkml/75393e5ddc272dc7403de74d645e6c6e0f4e70eb.camel@perches.com/2-convert_section.pl

    Signed-off-by: Joe Perches
    Reviewed-by: Nick Desaulniers
    Reviewed-by: Miguel Ojeda
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • tid_addr is not a "pointer to (pointer to int in userspace)"; it is in
    fact a "pointer to (pointer to int in userspace) in userspace". So
    sparse rightfully complains about passing a kernel pointer to
    put_user().

    Reported-by: kernel test robot
    Signed-off-by: Rasmus Villemoes
    Signed-off-by: Linus Torvalds

    Rasmus Villemoes
     
  • Commit 453431a54934 ("mm, treewide: rename kzfree() to
    kfree_sensitive()") renamed kzfree() to kfree_sensitive(),
    but it left a compatibility definition of kzfree() to avoid
    being too disruptive.

    Since then a few more instances of kzfree() have slipped in.

    Just get rid of them and remove the compatibility definition
    once and for all.

    Signed-off-by: Eric Biggers
    Signed-off-by: Linus Torvalds

    Eric Biggers
     
  • If set, use the environment variable GIT_DIR to change the default .git
    location of the kernel git tree.

    If GIT_DIR is unset, keep using the current ".git" default.

    Link: https://lkml.kernel.org/r/c5e23b45562373d632fccb8bc04e563abba4dd1d.camel@perches.com
    Signed-off-by: Joe Perches
    Tested-by: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Pull timer fixes from Thomas Gleixner:
    "A time namespace fix and a matching selftest. The futex absolute
    timeouts which are based on CLOCK_MONOTONIC require time namespace
    corrected. This was missed in the original time namesapce support"

    * tag 'timers-urgent-2020-10-25' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    selftests/timens: Add a test for futex()
    futex: Adjust absolute futex timeouts with per time namespace offset

    Linus Torvalds
     
  • Pull scheduler fixes from Thomas Gleixner:
    "Two scheduler fixes:

    - A trivial build fix for sched_feat() to compile correctly with
    CONFIG_JUMP_LABEL=n

    - Replace a zero lenght array with a flexible array"

    * tag 'sched-urgent-2020-10-25' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    sched/features: Fix !CONFIG_JUMP_LABEL case
    sched: Replace zero-length array with flexible-array

    Linus Torvalds
     
  • Pull perf fix from Thomas Gleixner:
    "A single fix to compute the field offset of the SNOOPX bit in the data
    source bitmask of perf events correctly"

    * tag 'perf-urgent-2020-10-25' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf: correct SNOOPX field offset

    Linus Torvalds
     
  • Pull locking fix from Thomas Gleixner:
    "Just a trivial fix for kernel-doc warnings"

    * tag 'locking-urgent-2020-10-25' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    locking/seqlocks: Fix kernel-doc warnings

    Linus Torvalds
     
  • Pull NTB fixes from Jon Mason.

    * tag 'ntb-5.10' of git://github.com/jonmason/ntb:
    NTB: Use struct_size() helper in devm_kzalloc()
    ntb: intel: Fix memleak in intel_ntb_pci_probe
    NTB: hw: amd: fix an issue about leak system resources

    Linus Torvalds
     
  • Pull i2c fix from Wolfram Sang:
    "Regression fix for rc1 and stable kernels as well"

    * 'i2c/for-5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
    i2c: core: Restore acpi_walk_dep_device_list() getting called after registering the ACPI i2c devs

    Linus Torvalds
     
  • Pull more cifs updates from Steve French:
    "Add support for stat of various special file types (WSL reparse points
    for char, block, fifo)"

    * tag '5.10-rc-smb3-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6:
    cifs: update internal module version number
    smb3: add some missing definitions from MS-FSCC
    smb3: remove two unused variables
    smb3: add support for stat of WSL reparse points for special file types

    Linus Torvalds
     
  • Pull more parisc updates from Helge Deller:

    - During this merge window O_NONBLOCK was changed to become 000200000,
    but we missed that the syscalls timerfd_create(), signalfd4(),
    eventfd2(), pipe2(), inotify_init1() and userfaultfd() do a strict
    bit-wise check of the flags parameter.

    To provide backward compatibility with existing userspace we
    introduce parisc specific wrappers for those syscalls which filter
    out the old O_NONBLOCK value and replaces it with the new one.

    - Prevent HIL bus driver to get stuck when keyboard or mouse isn't
    attached

    - Improve error return codes when setting rtc time

    - Minor documentation fix in pata_ns87415.c

    * 'parisc-5.10-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
    ata: pata_ns87415.c: Document support on parisc with superio chip
    parisc: Add wrapper syscalls to fix O_NONBLOCK flag usage
    hil/parisc: Disable HIL driver when it gets stuck
    parisc: Improve error return codes when setting rtc time

    Linus Torvalds
     
  • Pull more xen updates from Juergen Gross:

    - a series for the Xen pv block drivers adding module parameters for
    better control of resource usge

    - a cleanup series for the Xen event driver

    * tag 'for-linus-5.10b-rc1c-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
    Documentation: add xen.fifo_events kernel parameter description
    xen/events: unmask a fifo event channel only if it was masked
    xen/events: only register debug interrupt for 2-level events
    xen/events: make struct irq_info private to events_base.c
    xen: remove no longer used functions
    xen-blkfront: Apply changed parameter name to the document
    xen-blkfront: add a parameter for disabling of persistent grants
    xen-blkback: add a parameter for disabling of persistent grants

    Linus Torvalds
     
  • Pull SafeSetID updates from Micah Morton:
    "The changes are mostly contained to within the SafeSetID LSM, with the
    exception of a few 1-line changes to change some ns_capable() calls to
    ns_capable_setid() -- causing a flag (CAP_OPT_INSETID) to be set that
    is examined by SafeSetID code and nothing else in the kernel.

    The changes to SafeSetID internally allow for setting up GID
    transition security policies, as already existed for UIDs"

    * tag 'safesetid-5.10' of git://github.com/micah-morton/linux:
    LSM: SafeSetID: Fix warnings reported by test bot
    LSM: SafeSetID: Add GID security policy handling
    LSM: Signal to SafeSetID when setting group IDs

    Linus Torvalds
     
  • Pull random32 updates from Willy Tarreau:
    "Make prandom_u32() less predictable.

    This is the cleanup of the latest series of prandom_u32
    experimentations consisting in using SipHash instead of Tausworthe to
    produce the randoms used by the network stack.

    The changes to the files were kept minimal, and the controversial
    commit that used to take noise from the fast_pool (f227e3ec3b5c) was
    reverted. Instead, a dedicated "net_rand_noise" per_cpu variable is
    fed from various sources of activities (networking, scheduling) to
    perturb the SipHash state using fast, non-trivially predictable data,
    instead of keeping it fully deterministic. The goal is essentially to
    make any occasional memory leakage or brute-force attempt useless.

    The resulting code was verified to be very slightly faster on x86_64
    than what is was with the controversial commit above, though this
    remains barely above measurement noise. It was also tested on i386 and
    arm, and build- tested only on arm64"

    Link: https://lore.kernel.org/netdev/20200808152628.GA27941@SDF.ORG/

    * tag '20201024-v4-5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/prandom:
    random32: add a selftest for the prandom32 code
    random32: add noise from network and scheduling activity
    random32: make prandom_u32() output unpredictable

    Linus Torvalds
     

25 Oct, 2020

6 commits

  • Commit 21653a4181ff ("i2c: core: Call i2c_acpi_install_space_handler()
    before i2c_acpi_register_devices()")'s intention was to only move the
    acpi_install_address_space_handler() call to the point before where
    the ACPI declared i2c-children of the adapter where instantiated by
    i2c_acpi_register_devices().

    But i2c_acpi_install_space_handler() had a call to
    acpi_walk_dep_device_list() hidden (that is I missed it) at the end
    of it, so as an unwanted side-effect now acpi_walk_dep_device_list()
    was also being called before i2c_acpi_register_devices().

    Move the acpi_walk_dep_device_list() call to the end of
    i2c_acpi_register_devices(), so that it is once again called *after*
    the i2c_client-s hanging of the adapter have been created.

    This fixes the Microsoft Surface Go 2 hanging at boot.

    Fixes: 21653a4181ff ("i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices()")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=209627
    Reported-by: Rainer Finke
    Reported-by: Kieran Bingham
    Suggested-by: Maximilian Luz
    Tested-by: Kieran Bingham
    Signed-off-by: Hans de Goede
    Signed-off-by: Wolfram Sang

    Hans de Goede
     
  • Pull block fixes from Jens Axboe:

    - NVMe pull request from Christoph
    - rdma error handling fixes (Chao Leng)
    - fc error handling and reconnect fixes (James Smart)
    - fix the qid displace when tracing ioctl command (Keith Busch)
    - don't use BLK_MQ_REQ_NOWAIT for passthru (Chaitanya Kulkarni)
    - fix MTDT for passthru (Logan Gunthorpe)
    - blacklist Write Same on more devices (Kai-Heng Feng)
    - fix an uninitialized work struct (zhenwei pi)"

    - lightnvm out-of-bounds fix (Colin)

    - SG allocation leak fix (Doug)

    - rnbd fixes (Gioh, Guoqing, Jack)

    - zone error translation fixes (Keith)

    - kerneldoc markup fix (Mauro)

    - zram lockdep fix (Peter)

    - Kill unused io_context members (Yufen)

    - NUMA memory allocation cleanup (Xianting)

    - NBD config wakeup fix (Xiubo)

    * tag 'block-5.10-2020-10-24' of git://git.kernel.dk/linux-block: (27 commits)
    block: blk-mq: fix a kernel-doc markup
    nvme-fc: shorten reconnect delay if possible for FC
    nvme-fc: wait for queues to freeze before calling update_hr_hw_queues
    nvme-fc: fix error loop in create_hw_io_queues
    nvme-fc: fix io timeout to abort I/O
    null_blk: use zone status for max active/open
    nvmet: don't use BLK_MQ_REQ_NOWAIT for passthru
    nvmet: cleanup nvmet_passthru_map_sg()
    nvmet: limit passthru MTDS by BIO_MAX_PAGES
    nvmet: fix uninitialized work for zero kato
    nvme-pci: disable Write Zeroes on Sandisk Skyhawk
    nvme: use queuedata for nvme_req_qid
    nvme-rdma: fix crash due to incorrect cqe
    nvme-rdma: fix crash when connect rejected
    block: remove unused members for io_context
    blk-mq: remove the calling of local_memory_node()
    zram: Fix __zram_bvec_{read,write}() locking order
    skd_main: remove unused including
    sgl_alloc_order: fix memory leak
    lightnvm: fix out-of-bounds write to array devices->info[]
    ...

    Linus Torvalds
     
  • Pull io_uring fixes from Jens Axboe:

    - fsize was missed in previous unification of work flags

    - Few fixes cleaning up the flags unification creds cases (Pavel)

    - Fix NUMA affinities for completely unplugged/replugged node for io-wq

    - Two fallout fixes from the set_fs changes. One local to io_uring, one
    for the splice entry point that io_uring uses.

    - Linked timeout fixes (Pavel)

    - Removal of ->flush() ->files work-around that we don't need anymore
    with referenced files (Pavel)

    - Various cleanups (Pavel)

    * tag 'io_uring-5.10-2020-10-24' of git://git.kernel.dk/linux-block:
    splice: change exported internal do_splice() helper to take kernel offset
    io_uring: make loop_rw_iter() use original user supplied pointers
    io_uring: remove req cancel in ->flush()
    io-wq: re-set NUMA node affinities if CPUs come online
    io_uring: don't reuse linked_timeout
    io_uring: unify fsize with def->work_flags
    io_uring: fix racy REQ_F_LINK_TIMEOUT clearing
    io_uring: do poll's hash_node init in common code
    io_uring: inline io_poll_task_handler()
    io_uring: remove extra ->file check in poll prep
    io_uring: make cached_cq_overflow non atomic_t
    io_uring: inline io_fail_links()
    io_uring: kill ref get/drop in personality init
    io_uring: flags-based creds init in queue

    Linus Torvalds
     
  • Pull libata fixes from Jens Axboe:
    "Two minor libata fixes:

    - Fix a DMA boundary mask regression for sata_rcar (Geert)

    - kerneldoc markup fix (Mauro)"

    * tag 'libata-5.10-2020-10-24' of git://git.kernel.dk/linux-block:
    ata: fix some kernel-doc markups
    ata: sata_rcar: Fix DMA boundary mask

    Linus Torvalds
     
  • Pull misc vfs updates from Al Viro:
    "Assorted stuff all over the place (the largest group here is
    Christoph's stat cleanups)"

    * 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    fs: remove KSTAT_QUERY_FLAGS
    fs: remove vfs_stat_set_lookup_flags
    fs: move vfs_fstatat out of line
    fs: implement vfs_stat and vfs_lstat in terms of vfs_fstatat
    fs: remove vfs_statx_fd
    fs: omfs: use kmemdup() rather than kmalloc+memcpy
    [PATCH] reduce boilerplate in fsid handling
    fs: Remove duplicated flag O_NDELAY occurring twice in VALID_OPEN_FLAGS
    selftests: mount: add nosymfollow tests
    Add a "nosymfollow" mount option.

    Linus Torvalds
     
  • Pull dma-mapping fixes from Christoph Hellwig:

    - document the new dma_{alloc,free}_pages() API

    - two fixups for the dma-mapping.h split

    * tag 'dma-mapping-5.10-1' of git://git.infradead.org/users/hch/dma-mapping:
    dma-mapping: document dma_{alloc,free}_pages
    dma-mapping: move more functions to dma-map-ops.h
    ARM/sa1111: add a missing include of dma-map-ops.h

    Linus Torvalds