1. 23 Oct, 2020 2 commits
    • James Smart's avatar
      nvme-fc: fix error loop in create_hw_io_queues · 514a6dc9
      James Smart authored
      The loop that backs out of hw io queue creation continues through index
      0, which corresponds to the admin queue as well.
      
      Fix the loop so it only proceeds through indexes 1..n which correspond to
      I/O queues.
      Signed-off-by: default avatarJames Smart <james.smart@broadcom.com>
      Reviewed-by: default avatarHimanshu Madhani <himanshu.madhani@oracle.com>
      Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      514a6dc9
    • James Smart's avatar
      nvme-fc: fix io timeout to abort I/O · 52793d62
      James Smart authored
      Currently, an I/O timeout unconditionally invokes
      nvme_fc_error_recovery() which checks for LIVE or CONNECTING state.  If
      live, the routine resets the controller which initiates a reconnect -
      which is valid.  If CONNECTING, err_work is scheduled.  Err_work then
      calls the terminate_io routine, which also checks for CONNECTING and
      noops any further action on outstanding I/O.  The result is nothing
      happened to the timed out io.  As such, if the command was dropped on
      the wire, it will never timeout / complete, and the connect process
      will hang.
      
      Change the behavior of the io timeout routine to unconditionally abort
      the I/O.  I/O completion handling will note that an io failed due to an
      abort and will terminate the connection / association as needed.  If the
      abort was unable to happen, continue with a call to
      nvme_fc_error_recovery(). To ensure something different happens in
      nvme_fc_error_recovery() rework it so at it will abort all I/Os on the
      association to force a failure.
      
      As I/O aborts now may occur outside of delete_association, counting for
      completion must be wary and only count those aborted during
      delete_association when TERMIO is set on the controller.
      Signed-off-by: default avatarJames Smart <james.smart@broadcom.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      52793d62
  2. 22 Oct, 2020 8 commits
    • Chaitanya Kulkarni's avatar
      nvmet: don't use BLK_MQ_REQ_NOWAIT for passthru · 150dfb6c
      Chaitanya Kulkarni authored
      By default, we set the passthru request allocation flag such that it
      returns the error in the following code path and we fail the I/O when
      BLK_MQ_REQ_NOWAIT is used for request allocation :-
      
      nvme_alloc_request()
       blk_mq_alloc_request()
        blk_mq_queue_enter()
         if (flag & BLK_MQ_REQ_NOWAIT)
              return -EBUSY; <-- return if busy.
      
      On some controllers using BLK_MQ_REQ_NOWAIT ends up in I/O error where
      the controller is perfectly healthy and not in a degraded state.
      
      Block layer request allocation does allow us to wait instead of
      immediately returning the error when we BLK_MQ_REQ_NOWAIT flag is not
      used. This has shown to fix the I/O error problem reported under
      heavy random write workload.
      
      Remove the BLK_MQ_REQ_NOWAIT parameter for passthru request allocation
      which resolves this issue.
      Signed-off-by: default avatarChaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
      Reviewed-by: default avatarLogan Gunthorpe <logang@deltatee.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      150dfb6c
    • Logan Gunthorpe's avatar
      nvmet: cleanup nvmet_passthru_map_sg() · 5e063101
      Logan Gunthorpe authored
      Clean up some confusing elements of nvmet_passthru_map_sg() by returning
      early if the request is greater than the maximum bio size. This allows
      us to drop the sg_cnt variable.
      
      This should not result in any functional change but makes the code
      clearer and more understandable. The original code allocated a truncated
      bio then would return EINVAL when bio_add_pc_page() filled that bio. The
      new code just returns EINVAL early if this would happen.
      
      Fixes: c1fef73f ("nvmet: add passthru code to process commands")
      Signed-off-by: default avatarLogan Gunthorpe <logang@deltatee.com>
      Suggested-by: default avatarDouglas Gilbert <dgilbert@interlog.com>
      Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      5e063101
    • Logan Gunthorpe's avatar
      nvmet: limit passthru MTDS by BIO_MAX_PAGES · df06047d
      Logan Gunthorpe authored
      nvmet_passthru_map_sg() only supports mapping a single BIO, not a chain
      so the effective maximum transfer should also be limitted by
      BIO_MAX_PAGES (presently this works out to 1MB).
      
      For PCI passthru devices the max_sectors would typically be more
      limitting than BIO_MAX_PAGES, but this may not be true for all passthru
      devices.
      
      Fixes: c1fef73f ("nvmet: add passthru code to process commands")
      Suggested-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarLogan Gunthorpe <logang@deltatee.com>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Sagi Grimberg <sagi@grimberg.me>
      Cc: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      df06047d
    • zhenwei pi's avatar
      nvmet: fix uninitialized work for zero kato · 85bd23f3
      zhenwei pi authored
      When connecting a controller with a zero kato value using the following
      command line
      
         nvme connect -t tcp -n NQN -a ADDR -s PORT --keep-alive-tmo=0
      
      the warning below can be reproduced:
      
      WARNING: CPU: 1 PID: 241 at kernel/workqueue.c:1627 __queue_delayed_work+0x6d/0x90
      with trace:
        mod_delayed_work_on+0x59/0x90
        nvmet_update_cc+0xee/0x100 [nvmet]
        nvmet_execute_prop_set+0x72/0x80 [nvmet]
        nvmet_tcp_try_recv_pdu+0x2f7/0x770 [nvmet_tcp]
        nvmet_tcp_io_work+0x63f/0xb2d [nvmet_tcp]
        ...
      
      This is caused by queuing up an uninitialized work.  Althrough the
      keep-alive timer is disabled during allocating the controller (fixed in
      0d3b6a8d), ka_work still has a chance to run (called by
      nvmet_start_ctrl).
      
      Fixes: 0d3b6a8d ("nvmet: Disable keep-alive timer when kato is cleared to 0h")
      Signed-off-by: default avatarzhenwei pi <pizhenwei@bytedance.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      85bd23f3
    • Kai-Heng Feng's avatar
      nvme-pci: disable Write Zeroes on Sandisk Skyhawk · 02ca079c
      Kai-Heng Feng authored
      Like commit 5611ec2b ("nvme-pci: prevent SK hynix PC400 from using
      Write Zeroes command"), Sandisk Skyhawk has the same issue:
      [ 6305.633887] blk_update_request: operation not supported error, dev nvme0n1, sector 340812032 op 0x9:(WRITE_ZEROES) flags 0x0 phys_seg 0 prio class 0
      
      So also disable Write Zeroes command on Sandisk Skyhawk.
      
      BugLink: https://bugs.launchpad.net/bugs/1899503Signed-off-by: default avatarKai-Heng Feng <kai.heng.feng@canonical.com>
      Reviewed-by: default avatarChaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      02ca079c
    • Keith Busch's avatar
      nvme: use queuedata for nvme_req_qid · 643c476d
      Keith Busch authored
      The request's rq_disk isn't set for passthrough IO commands, so tracing
      uses qid 0 for these which incorrectly decodes as an admin command. Use
      the request_queue's queuedata instead since that value is always set for
      the IO queues, and never set for the admin queue.
      Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      643c476d
    • Chao Leng's avatar
      nvme-rdma: fix crash due to incorrect cqe · a87da50f
      Chao Leng authored
      A crash happened due to injecting error test.
      When a CQE has incorrect command id due do an error injection, the host
      may find a request which is already freed.  Dereferencing req->mr->rkey
      causes a crash in nvme_rdma_process_nvme_rsp because the mr is already
      freed.
      
      Add a check for the mr to fix it.
      Signed-off-by: default avatarChao Leng <lengchao@huawei.com>
      Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      a87da50f
    • Chao Leng's avatar
      nvme-rdma: fix crash when connect rejected · 43efdb8e
      Chao Leng authored
      A crash can happened when a connect is rejected.   The host establishes
      the connection after received ConnectReply, and then continues to send
      the fabrics Connect command.  If the controller does not receive the
      ReadyToUse capsule, host may receive a ConnectReject reply.
      
      Call nvme_rdma_destroy_queue_ib after the host received the
      RDMA_CM_EVENT_REJECTED event.  Then when the fabrics Connect command
      times out, nvme_rdma_timeout calls nvme_rdma_complete_rq to fail the
      request.  A crash happenes due to use after free in
      nvme_rdma_complete_rq.
      
      nvme_rdma_destroy_queue_ib is redundant when handling the
      RDMA_CM_EVENT_REJECTED event as nvme_rdma_destroy_queue_ib is already
      called in connection failure handler.
      Signed-off-by: default avatarChao Leng <lengchao@huawei.com>
      Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      43efdb8e
  3. 20 Oct, 2020 2 commits
    • Yufen Yu's avatar
      block: remove unused members for io_context · cb3a92da
      Yufen Yu authored
      After removing blk-sq code, there is no user of nr_batch_requests
      and last_waited in kernel.
      Signed-off-by: default avatarYufen Yu <yuyufen@huawei.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      cb3a92da
    • Xianting Tian's avatar
      blk-mq: remove the calling of local_memory_node() · 576e85c5
      Xianting Tian authored
      We don't need to check whether the node is memoryless numa node before
      calling allocator interface. SLUB(and SLAB,SLOB) relies on the page
      allocator to pick a node. Page allocator should deal with memoryless
      nodes just fine. It has zonelists constructed for each possible nodes.
      And it will automatically fall back into a node which is closest to the
      requested node. As long as __GFP_THISNODE is not enforced of course.
      
      The code comments of kmem_cache_alloc_node() of SLAB also showed this:
       * Fallback to other node is possible if __GFP_THISNODE is not set.
      
      blk-mq code doesn't set __GFP_THISNODE, so we can remove the calling
      of local_memory_node().
      Signed-off-by: default avatarXianting Tian <tian.xianting@h3c.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      576e85c5
  4. 19 Oct, 2020 1 commit
  5. 17 Oct, 2020 1 commit
  6. 16 Oct, 2020 2 commits
  7. 14 Oct, 2020 1 commit
  8. 13 Oct, 2020 23 commits
    • Damien Le Moal's avatar
      scsi: handle zone resources errors · d8f53b0a
      Damien Le Moal authored
      ZBC or ZAC disks that have a limit on the number of open zones may fail
      a zone open command or a write to a zone that is not already implicitly
      or explicitly open if the total number of open zones is already at the
      maximum allowed.
      
      For these operations, instead of returning the generic BLK_STS_IOERR,
      return BLK_STS_ZONE_OPEN_RESOURCE which is returned as -ETOOMANYREFS to
      the I/O issuer, allowing the device user to act appropriately on these
      relatively benign zone resource errors.
      Acked-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
      Signed-off-by: default avatarDamien Le Moal <damien.lemoal@wdc.com>
      Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      d8f53b0a
    • Keith Busch's avatar
      nvme: translate zone resource errors · afaf5c6c
      Keith Busch authored
      Translate zoned resource errors to the appropriate blk_status_t.
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarDamien Le Moal <damien.lemoal@wdc.com>
      Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
      Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      afaf5c6c
    • Keith Busch's avatar
      block: add zone specific block statuses · 3b481d91
      Keith Busch authored
      A zoned device with limited resources to open or activate zones may
      return an error when the host exceeds those limits. The same command may
      be successful if retried later, but the host needs to wait for specific
      zone states before it should expect a retry to succeed. Have the block
      layer provide an appropriate status for these conditions so applications
      can distinuguish this error for special handling.
      
      Cc: linux-api@vger.kernel.org
      Cc: Niklas Cassel <niklas.cassel@wdc.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarDamien Le Moal <damien.lemoal@wdc.com>
      Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
      Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      3b481d91
    • Gioh Kim's avatar
      block/rnbd-clt: send_msg_close if any error occurs after send_msg_open · 47be77c2
      Gioh Kim authored
      After send_msg_open is done, send_msg_close should be done
      if any error occurs and it is necessary to recover
      what has been done.
      Signed-off-by: default avatarGioh Kim <gi-oh.kim@cloud.ionos.com>
      Signed-off-by: default avatarJack Wang <jinpu.wang@cloud.ionos.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      47be77c2
    • Jack Wang's avatar
      block/rnbd-clt: do not cap max_hw_sectors & max_segments with remote device · 050b654b
      Jack Wang authored
      The max_hw_secotrs is only limited by the transport, not remote device,
      block layer on server side will split to the device limit if it's too
      big.
      
      The max_segments, similar, and rtrs server will submit single buffer, so
      no need to cap.
      Signed-off-by: default avatarJack Wang <jinpu.wang@cloud.ionos.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      050b654b
    • Guoqing Jiang's avatar
      block/rnbd-clt: remove nr argument from send_usr_msg · 46a99e0c
      Guoqing Jiang authored
      The argument is not needed since all callers pass 1 for it.
      Signed-off-by: default avatarGuoqing Jiang <guoqing.jiang@cloud.ionos.com>
      Signed-off-by: default avatarJack Wang <jinpu.wang@cloud.ionos.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      46a99e0c
    • Linus Torvalds's avatar
      Merge tag 'x86_asm_for_v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 029f56db
      Linus Torvalds authored
      Pull x86 asm updates from Borislav Petkov:
       "Two asm wrapper fixes:
      
         - Use XORL instead of XORQ to avoid a REX prefix and save some bytes
           in the .fixup section, by Uros Bizjak.
      
         - Replace __force_order dummy variable with a memory clobber to fix
           LLVM requiring a definition for former and to prevent memory
           accesses from still being cached/reordered, by Arvind Sankar"
      
      * tag 'x86_asm_for_v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/asm: Replace __force_order with a memory clobber
        x86/uaccess: Use XORL %0,%0 in __get_user_asm()
      029f56db
    • Linus Torvalds's avatar
      Merge tag 'drivers-5.10-2020-10-12' of git://git.kernel.dk/linux-block · 7cd4ecd9
      Linus Torvalds authored
      Pull block driver updates from Jens Axboe:
       "Here are the driver updates for 5.10.
      
        A few SCSI updates in here too, in coordination with Martin as they
        depend on core block changes for the shared tag bitmap.
      
        This contains:
      
         - NVMe pull requests via Christoph:
            - fix keep alive timer modification (Amit Engel)
            - order the PCI ID list more sensibly (Andy Shevchenko)
            - cleanup the open by controller helper (Chaitanya Kulkarni)
            - use an xarray for the CSE log lookup (Chaitanya Kulkarni)
            - support ZNS in nvmet passthrough mode (Chaitanya Kulkarni)
            - fix nvme_ns_report_zones (Christoph Hellwig)
            - add a sanity check to nvmet-fc (James Smart)
            - fix interrupt allocation when too many polled queues are
              specified (Jeffle Xu)
            - small nvmet-tcp optimization (Mark Wunderlich)
            - fix a controller refcount leak on init failure (Chaitanya
              Kulkarni)
            - misc cleanups (Chaitanya Kulkarni)
            - major refactoring of the scanning code (Christoph Hellwig)
      
         - MD updates via Song:
            - Bug fixes in bitmap code, from Zhao Heming
            - Fix a work queue check, from Guoqing Jiang
            - Fix raid5 oops with reshape, from Song Liu
            - Clean up unused code, from Jason Yan
            - Discard improvements, from Xiao Ni
            - raid5/6 page offset support, from Yufen Yu
      
         - Shared tag bitmap for SCSI/hisi_sas/null_blk (John, Kashyap,
           Hannes)
      
         - null_blk open/active zone limit support (Niklas)
      
         - Set of bcache updates (Coly, Dongsheng, Qinglang)"
      
      * tag 'drivers-5.10-2020-10-12' of git://git.kernel.dk/linux-block: (78 commits)
        md/raid5: fix oops during stripe resizing
        md/bitmap: fix memory leak of temporary bitmap
        md: fix the checking of wrong work queue
        md/bitmap: md_bitmap_get_counter returns wrong blocks
        md/bitmap: md_bitmap_read_sb uses wrong bitmap blocks
        md/raid0: remove unused function is_io_in_chunk_boundary()
        nvme-core: remove extra condition for vwc
        nvme-core: remove extra variable
        nvme: remove nvme_identify_ns_list
        nvme: refactor nvme_validate_ns
        nvme: move nvme_validate_ns
        nvme: query namespace identifiers before adding the namespace
        nvme: revalidate zone bitmaps in nvme_update_ns_info
        nvme: remove nvme_update_formats
        nvme: update the known admin effects
        nvme: set the queue limits in nvme_update_ns_info
        nvme: remove the 0 lba_shift check in nvme_update_ns_info
        nvme: clean up the check for too large logic block sizes
        nvme: freeze the queue over ->lba_shift updates
        nvme: factor out a nvme_configure_metadata helper
        ...
      7cd4ecd9
    • Linus Torvalds's avatar
      Merge tag 'libata-5.10-2020-10-12' of git://git.kernel.dk/linux-block · 79ec6d9c
      Linus Torvalds authored
      Pull libata updates from Jens Axboe:
       "Nothing major in here, just fixes or improvements collected over the
        last few months"
      
      * tag 'libata-5.10-2020-10-12' of git://git.kernel.dk/linux-block:
        ata: ahci: mvebu: Make SATA PHY optional for Armada 3720
        MAINTAINERS: remove LIBATA PATA DRIVERS entry
        pata_cmd64x: Use fallthrough pseudo-keyword
        ahci: qoriq: enable acpi support in qoriq ahci driver
        sata, highbank: simplify the return expression of ahci_highbank_suspend
        ahci: Add Intel Rocket Lake PCH-H RAID PCI IDs
      79ec6d9c
    • Linus Torvalds's avatar
      Merge tag 'io_uring-5.10-2020-10-12' of git://git.kernel.dk/linux-block · 6ad4bf6e
      Linus Torvalds authored
      Pull io_uring updates from Jens Axboe:
      
       - Add blkcg accounting for io-wq offload (Dennis)
      
       - A use-after-free fix for io-wq (Hillf)
      
       - Cancelation fixes and improvements
      
       - Use proper files_struct references for offload
      
       - Cleanup of io_uring_get_socket() since that can now go into our own
         header
      
       - SQPOLL fixes and cleanups, and support for sharing the thread
      
       - Improvement to how page accounting is done for registered buffers and
         huge pages, accounting the real pinned state
      
       - Series cleaning up the xarray code (Willy)
      
       - Various cleanups, refactoring, and improvements (Pavel)
      
       - Use raw spinlock for io-wq (Sebastian)
      
       - Add support for ring restrictions (Stefano)
      
      * tag 'io_uring-5.10-2020-10-12' of git://git.kernel.dk/linux-block: (62 commits)
        io_uring: keep a pointer ref_node in file_data
        io_uring: refactor *files_register()'s error paths
        io_uring: clean file_data access in files_register
        io_uring: don't delay io_init_req() error check
        io_uring: clean leftovers after splitting issue
        io_uring: remove timeout.list after hrtimer cancel
        io_uring: use a separate struct for timeout_remove
        io_uring: improve submit_state.ios_left accounting
        io_uring: simplify io_file_get()
        io_uring: kill extra check in fixed io_file_get()
        io_uring: clean up ->files grabbing
        io_uring: don't io_prep_async_work() linked reqs
        io_uring: Convert advanced XArray uses to the normal API
        io_uring: Fix XArray usage in io_uring_add_task_file
        io_uring: Fix use of XArray in __io_uring_files_cancel
        io_uring: fix break condition for __io_uring_register() waiting
        io_uring: no need to call xa_destroy() on empty xarray
        io_uring: batch account ->req_issue and task struct references
        io_uring: kill callback_head argument for io_req_task_work_add()
        io_uring: move req preps out of io_issue_sqe()
        ...
      6ad4bf6e
    • Linus Torvalds's avatar
      Merge tag 'block-5.10-2020-10-12' of git://git.kernel.dk/linux-block · 3ad11d7a
      Linus Torvalds authored
      Pull block updates from Jens Axboe:
      
       - Series of merge handling cleanups (Baolin, Christoph)
      
       - Series of blk-throttle fixes and cleanups (Baolin)
      
       - Series cleaning up BDI, seperating the block device from the
         backing_dev_info (Christoph)
      
       - Removal of bdget() as a generic API (Christoph)
      
       - Removal of blkdev_get() as a generic API (Christoph)
      
       - Cleanup of is-partition checks (Christoph)
      
       - Series reworking disk revalidation (Christoph)
      
       - Series cleaning up bio flags (Christoph)
      
       - bio crypt fixes (Eric)
      
       - IO stats inflight tweak (Gabriel)
      
       - blk-mq tags fixes (Hannes)
      
       - Buffer invalidation fixes (Jan)
      
       - Allow soft limits for zone append (Johannes)
      
       - Shared tag set improvements (John, Kashyap)
      
       - Allow IOPRIO_CLASS_RT for CAP_SYS_NICE (Khazhismel)
      
       - DM no-wait support (Mike, Konstantin)
      
       - Request allocation improvements (Ming)
      
       - Allow md/dm/bcache to use IO stat helpers (Song)
      
       - Series improving blk-iocost (Tejun)
      
       - Various cleanups (Geert, Damien, Danny, Julia, Tetsuo, Tian, Wang,
         Xianting, Yang, Yufen, yangerkun)
      
      * tag 'block-5.10-2020-10-12' of git://git.kernel.dk/linux-block: (191 commits)
        block: fix uapi blkzoned.h comments
        blk-mq: move cancel of hctx->run_work to the front of blk_exit_queue
        blk-mq: get rid of the dead flush handle code path
        block: get rid of unnecessary local variable
        block: fix comment and add lockdep assert
        blk-mq: use helper function to test hw stopped
        block: use helper function to test queue register
        block: remove redundant mq check
        block: invoke blk_mq_exit_sched no matter whether have .exit_sched
        percpu_ref: don't refer to ref->data if it isn't allocated
        block: ratelimit handle_bad_sector() message
        blk-throttle: Re-use the throtl_set_slice_end()
        blk-throttle: Open code __throtl_de/enqueue_tg()
        blk-throttle: Move service tree validation out of the throtl_rb_first()
        blk-throttle: Move the list operation after list validation
        blk-throttle: Fix IO hang for a corner case
        blk-throttle: Avoid tracking latency if low limit is invalid
        blk-throttle: Avoid getting the current time if tg->last_finish_time is 0
        blk-throttle: Remove a meaningless parameter for throtl_downgrade_state()
        block: Remove redundant 'return' statement
        ...
      3ad11d7a
    • Linus Torvalds's avatar
      Merge tag 'x86_urgent_for_v5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 857d6448
      Linus Torvalds authored
      Pull x86 fixes from Borislav Petkov:
      
       - Fix the #DE oops message string format which confused tools parsing
         crash information (Thomas Gleixner)
      
       - Remove an unused variable in the UV5 code which was triggering a
         build warning with clang (Mike Travis)
      
      * tag 'x86_urgent_for_v5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/platform/uv: Remove unused variable in UV5 NMI handler
        x86/traps: Fix #DE Oops message regression
      857d6448
    • Mike Travis's avatar
    • Thomas Gleixner's avatar
      x86/traps: Fix #DE Oops message regression · 5f1ec1fd
      Thomas Gleixner authored
      The conversion of #DE to the idtentry mechanism introduced a change in the
      Ooops message which confuses tools which parse crash information in dmesg.
      
      Remove the underscore from 'divide_error' to restore previous behaviour.
      
      Fixes: 9d06c402 ("x86/entry: Convert Divide Error to IDTENTRY")
      Reported-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/r/CACT4Y+bTZFkuZd7+bPArowOv-7Die+WZpfOWnEO_Wgs3U59+oA@mail.gmail.com
      5f1ec1fd
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · c4439713
      Linus Torvalds authored
      Pull hwmon updates from Guenter Roeck:
       "New driver and chip support:
         - Moortec MR75203 PVT controller
         - MPS Multi-phase mp2975 controller
         - ADM1266
         - Zen3 CPUs
         - Intel MAX 10 BMC
      
        Enhancements:
         - Support for rated attributes in hwmon core
         - MAX20730:
            - Device monitoring via debugfs
            - VOUT readin adjustment vie devicetree bindings
         - LM75:
            - Devicetree support
            - Regulator support
         - Improved accumulationm logic in amd_energy driver
         - Added fan sensor to gsc-hwmon driver
         - Support for simplified I2C probing
      
        Various other minor fixes and improvements"
      
      * tag 'hwmon-for-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: (64 commits)
        hwmon: (pmbus/max20730) adjust the vout reading given voltage divider
        dt-bindings: hwmon: max20730: adding device tree doc for max20730
        hwmon: Add hardware monitoring driver for Moortec MR75203 PVT controller
        hwmon: Add DT bindings schema for PVT controller
        dt-bindings: hwmon: Add the +vs supply to the lm75 bindings
        dt-bindings: hwmon: Convert lm75 bindings to yaml
        docs: hwmon: (ltc2945) update datasheet link
        hwmon: (mlxreg-fan) Fix double "Mellanox"
        hwmon: (pmbus/max20730) add device monitoring via debugfs
        hwmon: (pmbus/max34440) Fix OC fault limits
        hwmon: (bt1-pvt) Wait for the completion with timeout
        hwmon: (bt1-pvt) Cache current update timeout
        hwmon: (bt1-pvt) Test sensor power supply on probe
        hwmon: (lm75) Add regulator support
        hwmon: Add hwmon driver for Intel MAX 10 BMC
        dt-bindings: Add MP2975 voltage regulator device
        hwmon: (pmbus) Add support for MPS Multi-phase mp2975 controller
        hwmon: (tmp513) fix spelling typo in comments
        hwmon: (amd_energy) Update driver documentation
        hwmon: (amd_energy) Improve the accumulation logic
        ...
      c4439713
    • Linus Torvalds's avatar
      Merge tag 'gpio-v5.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio · 0486beaf
      Linus Torvalds authored
      Pull GPIO updates from Linus Walleij:
       "This time very little driver changes but lots of core changes.
      
        We have some interesting cooperative work for ARM and Intel alike,
        making the GPIO subsystem more and more suitable for industrial
        systems and the like, in addition to the in-kernel users.
      
        We touch driver core (device properties) and lib/* by adding one
        simple string array free function, these are authored by Andy
        Shevchenko who is a well known and recognized core helpers maintainers
        so this should be fine.
      
        We also see some Android GKI-related modularization in the MXC
        drivers.
      
        Core changes:
      
         - The big core change is the updated (v2) userspace character device
           API.
      
           This corrects badly designed 64-bit alignment around the line
           events. We also add the debounce request feature. This echoes the
           often quotes passage from Frederick Brooks "The mythical man-month"
           to always throw one away, which we have seen before in things such
           as V4L2. So we put in a new one and deprecate and obsolete the old
           one.
      
         - All example tools in tools/gpio/* are migrated to the new API to
           set a good example. The libgpiod userspace library has been
           augmented to use this new API pretty much from day 1.
      
         - Some misc API hardening by using strn* function calls has been
           added as well.
      
         - Use the simpler IDA interface for GPIO chip instance enumeration.
      
         - Add device core function for counting string arrays in device
           properties.
      
         - Provide a generic library function kfree_strarray() that can be
           used throughout the kernel.
      
        Driver enhancements:
      
         - The DesignWare dwapb-gpio driver has been enhanced and now uses the
           IRQ handling in the gpiolib core.
      
         - The mockup and aggregator drivers have seen some substantial code
           clean-up and now use more of the core kernel inftrastructure.
      
         - Misc cleanups using dev_err_probe().
      
         - The MXC drivers (Freescale/NXP) can now be built modularized, which
           makes modularized GKI Android kernels happy"
      
      * tag 'gpio-v5.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (73 commits)
        gpiolib: Update header block in gpiolib-cdev.h
        gpiolib: cdev: switch from kstrdup() to kstrndup()
        docs: gpio: add a new document to its index.rst
        gpio: pca953x: Add support for the NXP PCAL9554B/C
        tools: gpio: add debounce support to gpio-event-mon
        tools: gpio: add multi-line monitoring to gpio-event-mon
        tools: gpio: port gpio-event-mon to v2 uAPI
        tools: gpio: port gpio-hammer to v2 uAPI
        tools: gpio: rename nlines to num_lines
        tools: gpio: port gpio-watch to v2 uAPI
        tools: gpio: port lsgpio to v2 uAPI
        gpio: uapi: document uAPI v1 as deprecated
        gpiolib: cdev: support setting debounce
        gpiolib: cdev: support GPIO_V2_LINE_SET_VALUES_IOCTL
        gpiolib: cdev: support GPIO_V2_LINE_SET_CONFIG_IOCTL
        gpiolib: cdev: support edge detection for uAPI v2
        gpiolib: cdev: support GPIO_V2_GET_LINEINFO_IOCTL and GPIO_V2_GET_LINEINFO_WATCH_IOCTL
        gpiolib: cdev: support GPIO_V2_GET_LINE_IOCTL and GPIO_V2_LINE_GET_VALUES_IOCTL
        gpiolib: add build option for CDEV v1 ABI
        gpiolib: make cdev a build option
        ...
      0486beaf
    • Linus Torvalds's avatar
      Merge tag 'spi-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi · a996b9c6
      Linus Torvalds authored
      Pull spi updates from Mark Brown:
       "There's quite a lot of changes for SPI in this release but none in the
        core, they're all mostly small driver updates and additions. Some of
        the more notable changes include:
      
         - A huge set of cleanups, optimizations and improvements for the
           DesignWare driver from Serge Semin finishing up the work started
           last release.
      
         - Conversion of the Zynq gqspi driver to spi-mem.
      
         - Support for Baikal T1, Broadcom BCMSTB 7445, and Renesas R8A7742"
      
      * tag 'spi-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (137 commits)
        spi: cadence: Add SPI transfer delays
        spi: dw: Add Baikal-T1 SPI Controller bindings
        spi: dw: Add Baikal-T1 SPI Controller glue driver
        spi: dw: Add poll-based SPI transfers support
        spi: dw: Introduce max mem-ops SPI bus frequency setting
        spi: dw: Add memory operations support
        spi: dw: Add generic DW SSI status-check method
        spi: dw: Move num-of retries parameter to the header file
        spi: dw: Explicitly de-assert CS on SPI transfer completion
        spi: dw: De-assert chip-select on reset
        spi: dw: Discard chip enabling on DMA setup error
        spi: dw: Unmask IRQs after enabling the chip
        spi: dw: Perform IRQ setup in a dedicated function
        spi: dw: Refactor IRQ-based SPI transfer procedure
        spi: dw: Refactor data IO procedure
        spi: dw: Add DW SPI controller config structure
        spi: dw: Update Rx sample delay in the config function
        spi: dw: Simplify the SPI bus speed config procedure
        spi: dw: Update SPI bus speed in a config function
        spi: dw: Detach SPI device specific CR0 config method
        ...
      a996b9c6
    • Linus Torvalds's avatar
      Merge tag 'regulator-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator · 1724e02e
      Linus Torvalds authored
      Pull regulator updates from Mark Brown:
       "This is a fairly small release for the regulator API, there's quite a
        few new devices supported and some important improvements around
        coupled regulators in the core but mostly just small fixes and
        improvements otherwise.
      
        Summary:
      
         - Fixes and cleanups around the handling of coupled regulators.
      
         - A special driver for some Raspberry Pi panels with some unusually
           custom stuff around them.
      
         - Support for Qualcomm PM660/PM660L, PM8950 and PM8953, Richtek
           RT4801 and RTMV20, Rohm BD9576MUF and BD9573MUF"
      
      * tag 'regulator-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (89 commits)
        regulator: bd9576: Fix print
        regulator: bd9576: fix regulator binfdings dt node names
        dt-bindings: regulator: document pm8950 and pm8953 smd regulators
        regulator: qcom_smd: add pm8953 regulators
        regulator: Make constraint debug processing conditional on DEBUG
        regulator: qcom: labibb: Constify static structs
        regulator: dt-bindings: Document the PM660/PM660L PMICs entries
        regulator: qcom_smd: Add PM660/PM660L regulator support
        regulator: dt-bindings: Document the PM660/660L SPMI PMIC entries
        regulator: qcom_spmi: Add PM660/PM660L regulators
        regulator: qcom_spmi: Add support for new regulator types
        regulator: core: Enlarge max OF property name length to 64 chars
        regulator: tps65910: use regmap accessors
        regulator: rtmv20: Add missing regcache cache only before marked as dirty
        regulator: rtmv20: Update DT binding document and property name parsing
        regulator: rtmv20: Add DT-binding document for Richtek RTMV20
        regulator: rtmv20: Adds support for Richtek RTMV20 load switch regulator
        regulator: resolve supply after creating regulator
        regulator: print symbolic errors in kernel messages
        regulator: print state at boot
        ...
      1724e02e
    • Linus Torvalds's avatar
      Merge tag 'regmap-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap · 57218d7f
      Linus Torvalds authored
      Pull regmap updates from Mark Brown:
       "Quite a busy release for regmap, mostly support for new features
        useful on fairly small subsets of devices. The user visible features
        are:
      
         - A new API for registering large numbers of regmap fields at once.
      
         - Support for Intel AVMM buses connected via SPI.
      
         - Support for 12/20 address/value layouts.
      
         - Support for yet another scheme for acknowledging interrupts used on
           some Qualcomm devices"
      
      * tag 'regmap-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
        regmap: irq: Add support to clear ack registers
        regmap: add support to regmap_field_bulk_alloc/free apis
        regmap: destroy mutex (if used) in regmap_exit()
        regmap: debugfs: use semicolons rather than commas to separate statements
        regmap: debugfs: Fix more error path regressions
        regmap: Add support for 12/20 register formatting
        regmap: Add can_sleep configuration option
        regmap: soundwire: remove unused header mod_devicetable.h
        regmap: Use flexible sleep
        regmap: add Intel SPI Slave to AVMM Bus Bridge support
      57218d7f
    • Linus Torvalds's avatar
      Merge tag 'media/v5.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · fd5c32d8
      Linus Torvalds authored
      Pull media updates from Mauro Carvalho Chehab:
      
       - the usbvision driver was dropped from staging
      
       - the Zoran driver were re-added at staging. It gained lots of
         improvements, and was converted to use videobuf2 API
      
       - a new virtual driver (vidtv) was added in order to allow testing the
         digital TV framework and APIs
      
       - the media uAPI documentation gained a glossary with commonly used
         terms, helping to simplify some parts of the docs
      
       - more cleanups at the atomisp driver
      
       - Mediatek VPU gained support for MT8183
      
       - added support for codecs with supports doing colorspace conversion
         (CSC)
      
       - support for CSC API was added at vivid and rksip1 drivers
      
       - added a helper core support and uAPI for better supporting H.264
         codecs
      
       - added support for Renesas R8A774E1
      
       - use the new SPDX GFDL-1.1-no-invariants-or-later license on media
         uAPI docs, instead of a license text
      
       - Venus driver has gained VP9 codec support
      
       - lots of other cleanups and driver improvements
      
      * tag 'media/v5.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (555 commits)
        media: dvb-frontends/drxk_hard.c: fix uninitialized variable warning
        media: tvp7002: fix uninitialized variable warning
        media: s5k5baf: drop 'data' field in struct s5k5baf_fw
        media: dt-bindings: media: venus: Add an optional power domain for perf voting
        media: rcar-vin: rcar-dma: Fix setting VNIS_REG for RAW8 formats
        media: staging: rkisp1: uapi: Do not use BIT() macro
        media: v4l2-mem2mem: Fix spurious v4l2_m2m_buf_done
        media: usbtv: Fix refcounting mixup
        media: zoran.rst: place it at the right place this time
        media: add Zoran cardlist
        media: admin-guide: update cardlists
        media: siano: rename a duplicated card string
        media: zoran: move documentation file to the right place
        media: atomisp: fixes build breakage for ISP2400 due to a cleanup
        media: zoran: fix mixed case on vars
        media: zoran: get rid of an unused var
        media: zoran: use upper case for card types
        media: zoran: fix sparse warnings
        media: zoran: fix smatch warning
        media: zoran: update TODO
        ...
      fd5c32d8
    • Linus Torvalds's avatar
      Merge tag 'mmc-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · 647412da
      Linus Torvalds authored
      Pull MMC updates from Ulf Hansson:
       "MMC core:
         - Export SDIO revision and info strings to userspace
         - Add support for specifying mmc/mmcblk index via mmc aliases in DT
      
       MMC host:
         - Enable support for async probe for all mmc host drivers
         - Enable compile testing of multiple host drivers
         - dw_mmc: Enable the Synopsys DesignWare driver for RISCV and CSKY
         - mtk-sd: Fixup support for CQHCI
         - owl-mmc: Add support for the actions,s700-mmc variant
         - renesas_sdhi: Fix regression (temporary) for re-insertion of SD cards
         - renesas_sdhi: Add support for the r8a774e1 variant
         - renesas_sdhi/tmio: Improvements for tunings
         - renesas_sdhi/tmio: Rework support for reset of controller
         - sdhci-acpi: Fix HS400 tuning for devices with invalid presets on AMDI0040
         - sdhci_am654: Improve support for tunings
         - sdhci_am654: Add support for input tap delays
         - sdhci_am654: Add workaround for card detect debounce timer
         - sdhci-am654: Add support for the TI's J7200 variants
         - sdhci-esdhc-imx: Fix support for manual tuning
         - sdhci-iproc: Enable support for eMMC DDR 3.3V for bcm2711
         - sdhci-msm: Fix stability issues with HS400 for sc7180
         - sdhci-of-sparx5: Add Sparx5 SoC eMMC driver
         - sdhci-of-esdhc: Fixup reference clock source selection
         - sdhci-pci: Add LTR support for some Intel BYT controllers
         - sdhci-pci-gli: Add CQHCI Support for GL9763E"
      
      * tag 'mmc-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc: (91 commits)
        mmc: sdhci_am654: Fix module autoload
        mmc: renesas_sdhi: workaround a regression when reinserting SD cards
        mmc: sdhci-pci-gli: Add CQHCI Support for GL9763E
        mmc: sdhci-acpi: AMDI0040: Set SDHCI_QUIRK2_PRESET_VALUE_BROKEN
        mmc: sdhci_am654: Enable tuning for SDR50
        mmc: sdhci_am654: Add support for software tuning
        mmc: sdhci_am654: Add support for input tap delay
        mmc: sdhci_am654: Fix hard coded otap delay array size
        dt-bindings: mmc: sdhci-am654: Add documentation for input tap delay
        dt-bindings: mmc: sdhci-am654: Convert sdhci-am654 controller documentation to json schema
        mmc: sdhci-of-esdhc: fix reference clock source selection
        mmc: host: fix depends for MMC_MESON_GX w/ COMPILE_TEST
        mmc: sdhci-s3c: hide forward declaration of of_device_id behind CONFIG_OF
        mmc: sdhci: fix indentation mistakes
        mmc: moxart: remove unneeded check for drvdata
        mmc: renesas_sdhi: drop local flag for tuning
        mmc: rtsx_usb_sdmmc: simplify the return expression of sd_change_phase()
        mmc: core: document mmc_hw_reset()
        mmc: mediatek: Drop pointer to mmc_host from msdc_host
        dt-bindings: mmc: owl: add compatible string actions,s700-mmc
        ...
      647412da
    • Linus Torvalds's avatar
      Merge tag 'erofs-for-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs · dfef313e
      Linus Torvalds authored
      Pull erofs updates from Gao Xiang:
       "This cycle addresses a reported permission issue with overlay due to a
        duplicated permission check for "trusted." xattrs. Also, a REQ_RAHEAD
        flag is added now to all readahead requests in order to trace
        readahead I/Os. The others are random cleanups.
      
        All commits have been tested and have been in linux-next as well.
      
        Summary:
      
         - fix an issue which can cause overlay permission problem due to
           duplicated permission check for "trusted." xattrs;
      
         - add REQ_RAHEAD flag to readahead requests for blktrace;
      
         - several random cleanup"
      
      * tag 'erofs-for-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs:
        erofs: remove unnecessary enum entries
        erofs: add REQ_RAHEAD flag to readahead requests
        erofs: fold in should_decompress_synchronously()
        erofs: avoid unnecessary variable `err'
        erofs: remove unneeded parameter
        erofs: avoid duplicated permission check for "trusted." xattrs
      dfef313e
    • Linus Torvalds's avatar
      Merge tag 'for-5.10-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · 11e3235b
      Linus Torvalds authored
      Pull btrfs updates from David Sterba:
       "Mostly core updates with a few user visible bits and fixes.
      
        Hilights:
      
         - fsync performance improvements
            - less contention of log mutex (throughput +4%, latency -14%,
              dbench with 32 clients)
            - skip unnecessary commits for link and rename (throughput +6%,
              latency -30%, rename latency -75%, dbench with 16 clients)
            - make fast fsync wait only for writeback (throughput +10..40%,
              runtime -1..-20%, dbench with 1 to 64 clients on various
              file/block sizes)
      
         - direct io is now implemented using the iomap infrastructure, that's
           the main part, we still have a workaround that requires an iomap
           API update, coming in 5.10
      
         - new sysfs exports:
            - information about the exclusive filesystem operation status
              (balance, device add/remove/replace, ...)
            - supported send stream version
      
        Core:
      
         - use ticket space reservations for data, fair policy using the same
           infrastructure as metadata
      
         - preparatory work to switch locking from our custom tree locks to
           standard rwsem, now the locking context is propagated to all
           callers, actual switch is expected to happen in the next dev cycle
      
         - seed device structures are now using list API
      
         - extent tracepoints print proper tree id
      
         - unified range checks for extent buffer helpers
      
         - send: avoid using temporary buffer for copying data
      
         - remove unnecessary RCU protection from space infos
      
         - remove unused readpage callback for metadata, enabling several
           cleanups
      
         - replace indirect function calls for end io hooks and remove
           extent_io_ops completely
      
        Fixes:
      
         - more lockdep warning fixes
      
         - fix qgroup reservation for delayed inode and an occasional
           reservation leak for preallocated files
      
         - fix device replace of a seed device
      
         - fix metadata reservation for fallocate that leads to transaction
           aborts
      
         - reschedule if necessary when logging directory items or when
           cloning lots of extents
      
         - tree-checker: fix false alert caused by legacy btrfs root item
      
         - send: fix rename/link conflicts for orphanized inodes
      
         - properly initialize device stats for seed devices
      
         - skip devices without magic signature when mounting
      
        Other:
      
         - error handling improvements, BUG_ONs replaced by proper handling,
           fuzz fixes
      
         - various function parameter cleanups
      
         - various W=1 cleanups
      
         - error/info messages improved
      
        Mishaps:
      
         - commit 62cf5391 ("btrfs: move btrfs_rm_dev_replace_free_srcdev
           outside of all locks") is a rebase leftover after the patch got
           merged to 5.9-rc8 as a466c85e ("btrfs: move
           btrfs_rm_dev_replace_free_srcdev outside of all locks"), the
           remaining part is trivial and the patch is in the middle of the
           series so I'm keeping it there instead of rebasing"
      
      * tag 'for-5.10-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (161 commits)
        btrfs: rename BTRFS_INODE_ORDERED_DATA_CLOSE flag
        btrfs: annotate device name rcu_string with __rcu
        btrfs: skip devices without magic signature when mounting
        btrfs: cleanup cow block on error
        btrfs: remove BTRFS_INODE_READDIO_NEED_LOCK
        fs: remove no longer used dio_end_io()
        btrfs: return error if we're unable to read device stats
        btrfs: init device stats for seed devices
        btrfs: remove struct extent_io_ops
        btrfs: call submit_bio_hook directly for metadata pages
        btrfs: stop calling submit_bio_hook for data inodes
        btrfs: don't opencode is_data_inode in end_bio_extent_readpage
        btrfs: call submit_bio_hook directly in submit_one_bio
        btrfs: remove extent_io_ops::readpage_end_io_hook
        btrfs: replace readpage_end_io_hook with direct calls
        btrfs: send, recompute reference path after orphanization of a directory
        btrfs: send, orphanize first all conflicting inodes when processing references
        btrfs: tree-checker: fix false alert caused by legacy btrfs root item
        btrfs: use unaligned helpers for stack and header set/get helpers
        btrfs: free-space-cache: use unaligned helpers to access data
        ...
      11e3235b