Commit 0181f8c8 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull virtio updates from Michael Tsirkin:
 "Several new features here:

   - virtio-balloon supports new stats

   - vdpa supports setting mac address

   - vdpa/mlx5 suspend/resume as well as MKEY ops are now faster

   - virtio_fs supports new sysfs entries for queue info

   - virtio/vsock performance has been improved

  And fixes, cleanups all over the place"

* tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost: (34 commits)
  vsock/virtio: avoid queuing packets when intermediate queue is empty
  vsock/virtio: refactor virtio_transport_send_pkt_work
  fw_cfg: Constify struct kobj_type
  vdpa/mlx5: Postpone MR deletion
  vdpa/mlx5: Introduce init/destroy for MR resources
  vdpa/mlx5: Rename mr_mtx -> lock
  vdpa/mlx5: Extract mr members in own resource struct
  vdpa/mlx5: Rename function
  vdpa/mlx5: Delete direct MKEYs in parallel
  vdpa/mlx5: Create direct MKEYs in parallel
  MAINTAINERS: add virtio-vsock driver in the VIRTIO CORE section
  virtio_fs: add sysfs entries for queue information
  virtio_fs: introduce virtio_fs_put_locked helper
  vdpa: Remove unused declarations
  vdpa/mlx5: Parallelize VQ suspend/resume for CVQ MQ command
  vdpa/mlx5: Small improvement for change_num_qps()
  vdpa/mlx5: Keep notifiers during suspend but ignore
  vdpa/mlx5: Parallelize device resume
  vdpa/mlx5: Parallelize device suspend
  vdpa/mlx5: Use async API for vq modify commands
  ...
parents 11a299a7 efcd71af
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -24464,6 +24464,7 @@ F: include/linux/vdpa.h
F:	include/linux/virtio*.h
F:	include/linux/vringh.h
F:	include/uapi/linux/virtio_*.h
F:	net/vmw_vsock/virtio*
F:	tools/virtio/
F:	tools/testing/selftests/drivers/net/virtio_net/
+1 −1
Original line number Diff line number Diff line
@@ -452,7 +452,7 @@ static void fw_cfg_sysfs_release_entry(struct kobject *kobj)
}

/* kobj_type: ties together all properties required to register an entry */
static struct kobj_type fw_cfg_sysfs_entry_ktype = {
static const struct kobj_type fw_cfg_sysfs_entry_ktype = {
	.default_groups = fw_cfg_sysfs_entry_groups,
	.sysfs_ops = &fw_cfg_sysfs_attr_ops,
	.release = fw_cfg_sysfs_release_entry,
+16 −5
Original line number Diff line number Diff line
@@ -1887,11 +1887,13 @@ static int cmd_exec(struct mlx5_core_dev *dev, void *in, int in_size, void *out,

	throttle_op = mlx5_cmd_is_throttle_opcode(opcode);
	if (throttle_op) {
		/* atomic context may not sleep */
		if (callback)
			return -EINVAL;
		if (callback) {
			if (down_trylock(&dev->cmd.vars.throttle_sem))
				return -EBUSY;
		} else {
			down(&dev->cmd.vars.throttle_sem);
		}
	}

	pages_queue = is_manage_pages(in);
	gfp = callback ? GFP_ATOMIC : GFP_KERNEL;
@@ -2096,10 +2098,19 @@ static void mlx5_cmd_exec_cb_handler(int status, void *_work)
{
	struct mlx5_async_work *work = _work;
	struct mlx5_async_ctx *ctx;
	struct mlx5_core_dev *dev;
	u16 opcode;

	ctx = work->ctx;
	status = cmd_status_err(ctx->dev, status, work->opcode, work->op_mod, work->out);
	dev = ctx->dev;
	opcode = work->opcode;
	status = cmd_status_err(dev, status, work->opcode, work->op_mod, work->out);
	work->user_callback(status, work);
	/* Can't access "work" from this point on. It could have been freed in
	 * the callback.
	 */
	if (mlx5_cmd_is_throttle_opcode(opcode))
		up(&dev->cmd.vars.throttle_sem);
	if (atomic_dec_and_test(&ctx->num_inflight))
		complete(&ctx->inflight_done);
}
+9 −0
Original line number Diff line number Diff line
@@ -44,6 +44,15 @@ static int virtio_pmem_flush(struct nd_region *nd_region)
	unsigned long flags;
	int err, err1;

	/*
	 * Don't bother to submit the request to the device if the device is
	 * not activated.
	 */
	if (vdev->config->get_status(vdev) & VIRTIO_CONFIG_S_NEEDS_RESET) {
		dev_info(&vdev->dev, "virtio pmem device needs a reset\n");
		return -EIO;
	}

	might_sleep();
	req_data = kmalloc(sizeof(*req_data), GFP_KERNEL);
	if (!req_data)
+0 −3
Original line number Diff line number Diff line
@@ -112,15 +112,12 @@ void ifcvf_write_dev_config(struct ifcvf_hw *hw, u64 offset,
			    const void *src, int length);
u8 ifcvf_get_status(struct ifcvf_hw *hw);
void ifcvf_set_status(struct ifcvf_hw *hw, u8 status);
void io_write64_twopart(u64 val, u32 *lo, u32 *hi);
void ifcvf_reset(struct ifcvf_hw *hw);
u64 ifcvf_get_dev_features(struct ifcvf_hw *hw);
u64 ifcvf_get_hw_features(struct ifcvf_hw *hw);
int ifcvf_verify_min_features(struct ifcvf_hw *hw, u64 features);
u16 ifcvf_get_vq_state(struct ifcvf_hw *hw, u16 qid);
int ifcvf_set_vq_state(struct ifcvf_hw *hw, u16 qid, u16 num);
struct ifcvf_adapter *vf_to_adapter(struct ifcvf_hw *hw);
int ifcvf_probed_virtio_net(struct ifcvf_hw *hw);
u32 ifcvf_get_config_size(struct ifcvf_hw *hw);
u16 ifcvf_set_vq_vector(struct ifcvf_hw *hw, u16 qid, int vector);
u16 ifcvf_set_config_vector(struct ifcvf_hw *hw, int vector);
Loading