1. 22 May, 2024 10 commits
    • Mike Christie's avatar
      vhost_task: Handle SIGKILL by flushing work and exiting · db5247d9
      Mike Christie authored
      Instead of lingering until the device is closed, this has us handle
      SIGKILL by:
      
      1. marking the worker as killed so we no longer try to use it with
         new virtqueues and new flush operations.
      2. setting the virtqueue to worker mapping so no new works are queued.
      3. running all the exiting works.
      Suggested-by: default avatarEdward Adam Davis <eadavis@qq.com>
      Reported-and-tested-by: syzbot+98edc2df894917b3431f@syzkaller.appspotmail.com
      Message-Id: <tencent_546DA49414E876EEBECF2C78D26D242EE50A@qq.com>
      Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
      Message-Id: <20240316004707.45557-9-michael.christie@oracle.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      db5247d9
    • Mike Christie's avatar
      vhost: Release worker mutex during flushes · ba704ff4
      Mike Christie authored
      In the next patches where the worker can be killed while in use, we
      need to be able to take the worker mutex and kill queued works for
      new IO and flushes, and set some new flags to prevent new
      __vhost_vq_attach_worker calls from swapping in/out killed workers.
      
      If we are holding the worker mutex during a flush and the flush's work
      is still in the queue, the worker code that will handle the SIGKILL
      cleanup won't be able to take the mutex and perform it's cleanup. So
      this patch has us drop the worker mutex while waiting for the flush
      to complete.
      Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
      Message-Id: <20240316004707.45557-8-michael.christie@oracle.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      ba704ff4
    • Mike Christie's avatar
      vhost: Use virtqueue mutex for swapping worker · 34cf9ba5
      Mike Christie authored
      __vhost_vq_attach_worker uses the vhost_dev mutex to serialize the
      swapping of a virtqueue's worker. This was done for simplicity because
      we are already holding that mutex.
      
      In the next patches where the worker can be killed while in use, we need
      finer grained locking because some drivers will hold the vhost_dev mutex
      while flushing. However in the SIGKILL handler in the next patches, we
      will need to be able to swap workers (set current one to NULL), kill
      queued works and stop new flushes while flushes are in progress.
      
      To prepare us, this has us use the virtqueue mutex for swapping workers
      instead of the vhost_dev one.
      Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
      Message-Id: <20240316004707.45557-7-michael.christie@oracle.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      34cf9ba5
    • Mike Christie's avatar
      vhost_scsi: Handle vhost_vq_work_queue failures for TMFs · 0352c961
      Mike Christie authored
      vhost_vq_work_queue will never fail when queueing the TMF's response
      handling because a guest can only send us TMFs when the device is fully
      setup so there is always a worker at that time. In the next patches we
      will modify the worker code so it handles SIGKILL by exiting before
      outstanding commands/TMFs have sent their responses. In that case
      vhost_vq_work_queue can fail when we try to send a response.
      
      This has us just free the TMF's resources since at this time the guest
      won't be able to get a response even if we could send it.
      Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
      Message-Id: <20240316004707.45557-6-michael.christie@oracle.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      0352c961
    • Mike Christie's avatar
      vhost: Remove vhost_vq_flush · d9e59eec
      Mike Christie authored
      vhost_vq_flush is no longer used so remove it.
      Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
      Message-Id: <20240316004707.45557-5-michael.christie@oracle.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      d9e59eec
    • Mike Christie's avatar
      vhost-scsi: Use system wq to flush dev for TMFs · 59b701b9
      Mike Christie authored
      We flush all the workers that are not also used by the ctl vq to make
      sure that responses queued by LIO before the TMF response are sent
      before the TMF response. This requires a special vhost_vq_flush
      function which, in the next patches where we handle SIGKILL killing
      workers while in use, will require extra locking/complexity. To avoid
      that, this patch has us flush the entire device from the system work
      queue, then queue up sending the response from there.
      
      This is a little less optimal since we now flush all workers but this
      will be ok since commands have already timed out and perf is not a
      concern.
      Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
      Message-Id: <20240316004707.45557-4-michael.christie@oracle.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      59b701b9
    • Mike Christie's avatar
      vhost-scsi: Handle vhost_vq_work_queue failures for cmds · 1eceddee
      Mike Christie authored
      In the next patches we will support the vhost_task being killed while in
      use. The problem for vhost-scsi is that we can't free some structs until
      we get responses for commands we have submitted to the target layer and
      we currently process the responses from the vhost_task.
      
      This has just drop the responses and free the command's resources. When
      all commands have completed then operations like flush will be woken up
      and we can complete device release and endpoint cleanup.
      Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
      Message-Id: <20240316004707.45557-3-michael.christie@oracle.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      1eceddee
    • Mike Christie's avatar
      vhost-scsi: Handle vhost_vq_work_queue failures for events · b1b2ce58
      Mike Christie authored
      Currently, we can try to queue an event's work before the vhost_task is
      created. When this happens we just drop it in vhost_scsi_do_plug before
      even calling vhost_vq_work_queue. During a device shutdown we do the
      same thing after vhost_scsi_clear_endpoint has cleared the backends.
      
      In the next patches we will be able to kill the vhost_task before we
      have cleared the endpoint. In that case, vhost_vq_work_queue can fail
      and we will leak the event's memory. This has handle the failure by
      just freeing the event. This is safe to do, because
      vhost_vq_work_queue will only return failure for us when the vhost_task
      is killed and so userspace will not be able to handle events if we
      sent them.
      Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
      Message-Id: <20240316004707.45557-2-michael.christie@oracle.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      b1b2ce58
    • Li Zhijian's avatar
      vdpa: Convert sprintf/snprintf to sysfs_emit · 7b1b5c7f
      Li Zhijian authored
      Per filesystems/sysfs.rst, show() should only use sysfs_emit()
      or sysfs_emit_at() when formatting the value to be returned to user space.
      
      coccinelle complains that there are still a couple of functions that use
      snprintf(). Convert them to sysfs_emit().
      
      sprintf() will be converted as weel if they have.
      
      Generally, this patch is generated by
      make coccicheck M=<path/to/file> MODE=patch \
      COCCI=scripts/coccinelle/api/device_attr_show.cocci
      
      No functional change intended
      
      CC: "Michael S. Tsirkin" <mst@redhat.com>
      CC: Jason Wang <jasowang@redhat.com>
      CC: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
      CC: virtualization@lists.linux.dev
      Signed-off-by: default avatarLi Zhijian <lizhijian@fujitsu.com>
      Message-Id: <20240314095853.1326111-1-lizhijian@fujitsu.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      7b1b5c7f
    • Yuxue Liu's avatar
      vp_vdpa: Fix return value check vp_vdpa_request_irq · f181a373
      Yuxue Liu authored
      In the vp_vdpa_set_status function, when setting the device status to
      VIRTIO_CONFIG_S_DRIVER_OK, the vp_vdpa_request_irq function may fail.
      In such cases, the device status should not be set to DRIVER_OK. Add
      exception printing to remind the user.
      Signed-off-by: default avatarYuxue Liu <yuxue.liu@jaguarmicro.com>
      Message-Id: <20240325105448.235-1-gavin.liu@jaguarmicro.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      f181a373
  2. 01 May, 2024 2 commits
  3. 30 Apr, 2024 5 commits
  4. 29 Apr, 2024 11 commits
  5. 28 Apr, 2024 9 commits
  6. 27 Apr, 2024 3 commits
    • Linus Torvalds's avatar
      Merge tag 'rust-fixes-6.9' of https://github.com/Rust-for-Linux/linux · 2c815938
      Linus Torvalds authored
      Pull Rust fixes from Miguel Ojeda:
      
       - Soundness: make internal functions generated by the 'module!' macro
         inaccessible, do not implement 'Zeroable' for 'Infallible' and
         require 'Send' for the 'Module' trait.
      
       - Build: avoid errors with "empty" files and workaround 'rustdoc' ICE.
      
       - Kconfig: depend on '!CFI_CLANG' and avoid selecting 'CONSTRUCTORS'.
      
       - Code docs: remove non-existing key from 'module!' macro example.
      
       - Docs: trivial rendering fix in arch table.
      
      * tag 'rust-fixes-6.9' of https://github.com/Rust-for-Linux/linux:
        rust: remove `params` from `module` macro example
        kbuild: rust: force `alloc` extern to allow "empty" Rust files
        kbuild: rust: remove unneeded `@rustc_cfg` to avoid ICE
        rust: kernel: require `Send` for `Module` implementations
        rust: phy: implement `Send` for `Registration`
        rust: make mutually exclusive with CFI_CLANG
        rust: macros: fix soundness issue in `module!` macro
        rust: init: remove impl Zeroable for Infallible
        docs: rust: fix improper rendering in Arch Support page
        rust: don't select CONSTRUCTORS
      2c815938
    • Linus Torvalds's avatar
      Merge tag 'riscv-for-linus-6.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux · 57865f39
      Linus Torvalds authored
      Pull RISC-V fixes from Palmer Dabbelt:
      
       - A fix for TASK_SIZE on rv64/NOMMU, to reflect the lack of user/kernel
         separation
      
       - A fix to avoid loading rv64/NOMMU kernel past the start of RAM
      
       - A fix for RISCV_HWPROBE_EXT_ZVFHMIN on ilp32 to avoid signed integer
         overflow in the bitmask
      
       - The sud_test kselftest has been fixed to properly swizzle the syscall
         number into the return register, which are not the same on RISC-V
      
       - A fix for a build warning in the perf tools on rv32
      
       - A fix for the CBO selftests, to avoid non-constants leaking into the
         inline asm
      
       - A pair of fixes for T-Head PBMT errata probing, which has been
         renamed MAE by the vendor
      
      * tag 'riscv-for-linus-6.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
        RISC-V: selftests: cbo: Ensure asm operands match constraints, take 2
        perf riscv: Fix the warning due to the incompatible type
        riscv: T-Head: Test availability bit before enabling MAE errata
        riscv: thead: Rename T-Head PBMT to MAE
        selftests: sud_test: return correct emulated syscall value on RISC-V
        riscv: hwprobe: fix invalid sign extension for RISCV_HWPROBE_EXT_ZVFHMIN
        riscv: Fix loading 64-bit NOMMU kernels past the start of RAM
        riscv: Fix TASK_SIZE on 64-bit NOMMU
      57865f39
    • Linus Torvalds's avatar
      Merge tag '6.9-rc5-cifs-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6 · d43df69f
      Linus Torvalds authored
      Pull smb client fixes from Steve French:
       "Three smb3 client fixes, all also for stable:
      
         - two small locking fixes spotted by Coverity
      
         - FILE_ALL_INFO and network_open_info packing fix"
      
      * tag '6.9-rc5-cifs-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6:
        smb3: fix lock ordering potential deadlock in cifs_sync_mid_result
        smb3: missing lock when picking channel
        smb: client: Fix struct_group() usage in __packed structs
      d43df69f