All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 10:55 ` Michael S. Tsirkin
  0 siblings, 0 replies; 60+ messages in thread
From: Michael S. Tsirkin @ 2021-10-13 10:55 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jeff Dike, Richard Weinberger, Anton Ivanov, Jason Wang,
	Paolo Bonzini, Stefan Hajnoczi, Jens Axboe, Marcel Holtmann,
	Johan Hedberg, Luiz Augusto von Dentz, Matt Mackall, Herbert Xu,
	Amit Shah, Arnd Bergmann, Greg Kroah-Hartman, Gonglei,
	David S. Miller, Sudeep Holla, Cristian Marussi, Enrico Weigelt,
	metux IT consult, Viresh Kumar, Linus Walleij,
	Bartosz Golaszewski, David Airlie, Gerd Hoffmann, Daniel Vetter,
	Jie Deng, Jean-Philippe Brucker, Joerg Roedel, Will Deacon,
	Jakub Kicinski, Johannes Berg, Kalle Valo, Dan Williams,
	Vishal Verma, Dave Jiang, Ira Weiny, Ohad Ben-Cohen,
	Bjorn Andersson, Mathieu Poirier, James E.J. Bottomley,
	Martin K. Petersen, David Hildenbrand, Vivek Goyal,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	nvdimm, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

This will enable cleanups down the road.
The idea is to disable cbs, then add "flush_queued_cbs" callback
as a parameter, this way drivers can flush any work
queued after callbacks have been disabled.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 arch/um/drivers/virt-pci.c                 | 2 +-
 drivers/block/virtio_blk.c                 | 4 ++--
 drivers/bluetooth/virtio_bt.c              | 2 +-
 drivers/char/hw_random/virtio-rng.c        | 2 +-
 drivers/char/virtio_console.c              | 4 ++--
 drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
 drivers/firmware/arm_scmi/virtio.c         | 2 +-
 drivers/gpio/gpio-virtio.c                 | 2 +-
 drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
 drivers/i2c/busses/i2c-virtio.c            | 2 +-
 drivers/iommu/virtio-iommu.c               | 2 +-
 drivers/net/caif/caif_virtio.c             | 2 +-
 drivers/net/virtio_net.c                   | 4 ++--
 drivers/net/wireless/mac80211_hwsim.c      | 2 +-
 drivers/nvdimm/virtio_pmem.c               | 2 +-
 drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
 drivers/scsi/virtio_scsi.c                 | 2 +-
 drivers/virtio/virtio.c                    | 5 +++++
 drivers/virtio/virtio_balloon.c            | 2 +-
 drivers/virtio/virtio_input.c              | 2 +-
 drivers/virtio/virtio_mem.c                | 2 +-
 fs/fuse/virtio_fs.c                        | 4 ++--
 include/linux/virtio.h                     | 1 +
 net/9p/trans_virtio.c                      | 2 +-
 net/vmw_vsock/virtio_transport.c           | 4 ++--
 sound/virtio/virtio_card.c                 | 4 ++--
 26 files changed, 39 insertions(+), 33 deletions(-)

diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
index c08066633023..22c4d87c9c15 100644
--- a/arch/um/drivers/virt-pci.c
+++ b/arch/um/drivers/virt-pci.c
@@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
 	int i;
 
         /* Stop all virtqueues */
-        vdev->config->reset(vdev);
+        virtio_reset_device(vdev);
         vdev->config->del_vqs(vdev);
 
 	device_set_wakeup_enable(&vdev->dev, false);
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 303caf2d17d0..83d0af3fbf30 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -910,7 +910,7 @@ static void virtblk_remove(struct virtio_device *vdev)
 	mutex_lock(&vblk->vdev_mutex);
 
 	/* Stop all the virtqueues. */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	/* Virtqueues are stopped, nothing can use vblk->vdev anymore. */
 	vblk->vdev = NULL;
@@ -929,7 +929,7 @@ static int virtblk_freeze(struct virtio_device *vdev)
 	struct virtio_blk *vblk = vdev->priv;
 
 	/* Ensure we don't receive any more interrupts */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	/* Make sure no work handler is accessing the device. */
 	flush_work(&vblk->config_work);
diff --git a/drivers/bluetooth/virtio_bt.c b/drivers/bluetooth/virtio_bt.c
index 57908ce4fae8..24a9258962fa 100644
--- a/drivers/bluetooth/virtio_bt.c
+++ b/drivers/bluetooth/virtio_bt.c
@@ -364,7 +364,7 @@ static void virtbt_remove(struct virtio_device *vdev)
 	struct hci_dev *hdev = vbt->hdev;
 
 	hci_unregister_dev(hdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	hci_free_dev(hdev);
 	vbt->hdev = NULL;
diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c
index a90001e02bf7..95980489514b 100644
--- a/drivers/char/hw_random/virtio-rng.c
+++ b/drivers/char/hw_random/virtio-rng.c
@@ -134,7 +134,7 @@ static void remove_common(struct virtio_device *vdev)
 	vi->hwrng_removed = true;
 	vi->data_avail = 0;
 	complete(&vi->have_data);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vi->busy = false;
 	if (vi->hwrng_register_done)
 		hwrng_unregister(&vi->hwrng);
diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
index 7eaf303a7a86..08bbd693436f 100644
--- a/drivers/char/virtio_console.c
+++ b/drivers/char/virtio_console.c
@@ -1957,7 +1957,7 @@ static void virtcons_remove(struct virtio_device *vdev)
 	spin_unlock_irq(&pdrvdata_lock);
 
 	/* Disable interrupts for vqs */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	/* Finish up work that's lined up */
 	if (use_multiport(portdev))
 		cancel_work_sync(&portdev->control_work);
@@ -2139,7 +2139,7 @@ static int virtcons_freeze(struct virtio_device *vdev)
 
 	portdev = vdev->priv;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	if (use_multiport(portdev))
 		virtqueue_disable_cb(portdev->c_ivq);
diff --git a/drivers/crypto/virtio/virtio_crypto_core.c b/drivers/crypto/virtio/virtio_crypto_core.c
index e2375d992308..8e977b7627cb 100644
--- a/drivers/crypto/virtio/virtio_crypto_core.c
+++ b/drivers/crypto/virtio/virtio_crypto_core.c
@@ -404,7 +404,7 @@ static int virtcrypto_probe(struct virtio_device *vdev)
 free_engines:
 	virtcrypto_clear_crypto_engines(vcrypto);
 free_vqs:
-	vcrypto->vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_del_vqs(vcrypto);
 free_dev:
 	virtcrypto_devmgr_rm_dev(vcrypto);
@@ -436,7 +436,7 @@ static void virtcrypto_remove(struct virtio_device *vdev)
 
 	if (virtcrypto_dev_started(vcrypto))
 		virtcrypto_dev_stop(vcrypto);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_free_unused_reqs(vcrypto);
 	virtcrypto_clear_crypto_engines(vcrypto);
 	virtcrypto_del_vqs(vcrypto);
@@ -456,7 +456,7 @@ static int virtcrypto_freeze(struct virtio_device *vdev)
 {
 	struct virtio_crypto *vcrypto = vdev->priv;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_free_unused_reqs(vcrypto);
 	if (virtcrypto_dev_started(vcrypto))
 		virtcrypto_dev_stop(vcrypto);
@@ -492,7 +492,7 @@ static int virtcrypto_restore(struct virtio_device *vdev)
 free_engines:
 	virtcrypto_clear_crypto_engines(vcrypto);
 free_vqs:
-	vcrypto->vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_del_vqs(vcrypto);
 	return err;
 }
diff --git a/drivers/firmware/arm_scmi/virtio.c b/drivers/firmware/arm_scmi/virtio.c
index 11e8efb71375..6b8d93fe8848 100644
--- a/drivers/firmware/arm_scmi/virtio.c
+++ b/drivers/firmware/arm_scmi/virtio.c
@@ -452,7 +452,7 @@ static void scmi_vio_remove(struct virtio_device *vdev)
 	 * outstanding message on any vqueue to be ignored by complete_cb: now
 	 * we can just stop processing buffers and destroy the vqueues.
 	 */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 	/* Ensure scmi_vdev is visible as NULL */
 	smp_store_mb(scmi_vdev, NULL);
diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c
index d24f1c9264bc..5029f01966f4 100644
--- a/drivers/gpio/gpio-virtio.c
+++ b/drivers/gpio/gpio-virtio.c
@@ -203,7 +203,7 @@ static void virtio_gpio_request_vq(struct virtqueue *vq)
 
 static void virtio_gpio_free_vqs(struct virtio_device *vdev)
 {
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 }
 
diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c b/drivers/gpu/drm/virtio/virtgpu_kms.c
index f3379059f324..6aa605b8d3a1 100644
--- a/drivers/gpu/drm/virtio/virtgpu_kms.c
+++ b/drivers/gpu/drm/virtio/virtgpu_kms.c
@@ -257,7 +257,7 @@ void virtio_gpu_deinit(struct drm_device *dev)
 	flush_work(&vgdev->ctrlq.dequeue_work);
 	flush_work(&vgdev->cursorq.dequeue_work);
 	flush_work(&vgdev->config_changed_work);
-	vgdev->vdev->config->reset(vgdev->vdev);
+	virtio_reset_device(vgdev->vdev);
 	vgdev->vdev->config->del_vqs(vgdev->vdev);
 }
 
diff --git a/drivers/i2c/busses/i2c-virtio.c b/drivers/i2c/busses/i2c-virtio.c
index f10a603b13fb..eb3261ac64dc 100644
--- a/drivers/i2c/busses/i2c-virtio.c
+++ b/drivers/i2c/busses/i2c-virtio.c
@@ -177,7 +177,7 @@ static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
 
 static void virtio_i2c_del_vqs(struct virtio_device *vdev)
 {
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 }
 
diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c
index 80930ce04a16..1d4e1e7cf175 100644
--- a/drivers/iommu/virtio-iommu.c
+++ b/drivers/iommu/virtio-iommu.c
@@ -1115,7 +1115,7 @@ static void viommu_remove(struct virtio_device *vdev)
 	iommu_device_unregister(&viommu->iommu);
 
 	/* Stop all virtqueues */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 
 	dev_info(&vdev->dev, "device removed\n");
diff --git a/drivers/net/caif/caif_virtio.c b/drivers/net/caif/caif_virtio.c
index 91230894692d..444ef6a342f6 100644
--- a/drivers/net/caif/caif_virtio.c
+++ b/drivers/net/caif/caif_virtio.c
@@ -754,7 +754,7 @@ static void cfv_remove(struct virtio_device *vdev)
 	debugfs_remove_recursive(cfv->debugfs);
 
 	vringh_kiov_cleanup(&cfv->ctx.riov);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->vringh_config->del_vrhs(cfv->vdev);
 	cfv->vr_rx = NULL;
 	vdev->config->del_vqs(cfv->vdev);
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 79bd2585ec6b..8c10fcad73a4 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -3274,7 +3274,7 @@ static int virtnet_probe(struct virtio_device *vdev)
 	return 0;
 
 free_unregister_netdev:
-	vi->vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	unregister_netdev(dev);
 free_failover:
@@ -3290,7 +3290,7 @@ static int virtnet_probe(struct virtio_device *vdev)
 
 static void remove_vq_common(struct virtnet_info *vi)
 {
-	vi->vdev->config->reset(vi->vdev);
+	virtio_reset_device(vi->vdev);
 
 	/* Free unused buffers in both send and recv, if any. */
 	free_unused_bufs(vi);
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index 0adae76eb8df..9ee430c1d4a2 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -4369,7 +4369,7 @@ static void remove_vqs(struct virtio_device *vdev)
 {
 	int i;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	for (i = 0; i < ARRAY_SIZE(hwsim_vqs); i++) {
 		struct virtqueue *vq = hwsim_vqs[i];
diff --git a/drivers/nvdimm/virtio_pmem.c b/drivers/nvdimm/virtio_pmem.c
index 726c7354d465..995b6cdc67ed 100644
--- a/drivers/nvdimm/virtio_pmem.c
+++ b/drivers/nvdimm/virtio_pmem.c
@@ -105,7 +105,7 @@ static void virtio_pmem_remove(struct virtio_device *vdev)
 
 	nvdimm_bus_unregister(nvdimm_bus);
 	vdev->config->del_vqs(vdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 }
 
 static struct virtio_driver virtio_pmem_driver = {
diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
index 8e49a3bacfc7..6a11952822df 100644
--- a/drivers/rpmsg/virtio_rpmsg_bus.c
+++ b/drivers/rpmsg/virtio_rpmsg_bus.c
@@ -1015,7 +1015,7 @@ static void rpmsg_remove(struct virtio_device *vdev)
 	size_t total_buf_space = vrp->num_bufs * vrp->buf_size;
 	int ret;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	ret = device_for_each_child(&vdev->dev, NULL, rpmsg_remove_device);
 	if (ret)
diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
index 07d0250f17c3..f2502a8a5213 100644
--- a/drivers/scsi/virtio_scsi.c
+++ b/drivers/scsi/virtio_scsi.c
@@ -778,7 +778,7 @@ static void virtscsi_init_vq(struct virtio_scsi_vq *virtscsi_vq,
 static void virtscsi_remove_vqs(struct virtio_device *vdev)
 {
 	/* Stop all the virtqueues. */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 }
 
diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
index 0a5b54034d4b..a67dd0eca578 100644
--- a/drivers/virtio/virtio.c
+++ b/drivers/virtio/virtio.c
@@ -204,6 +204,11 @@ int virtio_finalize_features(struct virtio_device *dev)
 }
 EXPORT_SYMBOL_GPL(virtio_finalize_features);
 
+static void virtio_reset_device(struct virtio_device *dev)
+{
+	dev->config->reset(dev);
+}
+
 static int virtio_dev_probe(struct device *_d)
 {
 	int err, i;
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index c22ff0117b46..f4c34a2a6b8e 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -1056,7 +1056,7 @@ static void remove_common(struct virtio_balloon *vb)
 		return_free_pages_to_mm(vb, ULONG_MAX);
 
 	/* Now we reset the device so we can clean up the queues. */
-	vb->vdev->config->reset(vb->vdev);
+	virtio_reset_device(vb->vdev);
 
 	vb->vdev->config->del_vqs(vb->vdev);
 }
diff --git a/drivers/virtio/virtio_input.c b/drivers/virtio/virtio_input.c
index ce51ae165943..3aa46703872d 100644
--- a/drivers/virtio/virtio_input.c
+++ b/drivers/virtio/virtio_input.c
@@ -347,7 +347,7 @@ static void virtinput_remove(struct virtio_device *vdev)
 	spin_unlock_irqrestore(&vi->lock, flags);
 
 	input_unregister_device(vi->idev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	while ((buf = virtqueue_detach_unused_buf(vi->sts)) != NULL)
 		kfree(buf);
 	vdev->config->del_vqs(vdev);
diff --git a/drivers/virtio/virtio_mem.c b/drivers/virtio/virtio_mem.c
index bef8ad6bf466..3bab0a625a4b 100644
--- a/drivers/virtio/virtio_mem.c
+++ b/drivers/virtio/virtio_mem.c
@@ -2722,7 +2722,7 @@ static void virtio_mem_remove(struct virtio_device *vdev)
 	}
 
 	/* reset the device and cleanup the queues */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 
 	kfree(vm);
diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
index 0ad89c6629d7..27c3b74070a2 100644
--- a/fs/fuse/virtio_fs.c
+++ b/fs/fuse/virtio_fs.c
@@ -895,7 +895,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)
 	return 0;
 
 out_vqs:
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtio_fs_cleanup_vqs(vdev, fs);
 	kfree(fs->vqs);
 
@@ -927,7 +927,7 @@ static void virtio_fs_remove(struct virtio_device *vdev)
 	list_del_init(&fs->list);
 	virtio_fs_stop_all_queues(fs);
 	virtio_fs_drain_all_queues_locked(fs);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtio_fs_cleanup_vqs(vdev, fs);
 
 	vdev->priv = NULL;
diff --git a/include/linux/virtio.h b/include/linux/virtio.h
index 41edbc01ffa4..72292a62cd90 100644
--- a/include/linux/virtio.h
+++ b/include/linux/virtio.h
@@ -138,6 +138,7 @@ int virtio_finalize_features(struct virtio_device *dev);
 int virtio_device_freeze(struct virtio_device *dev);
 int virtio_device_restore(struct virtio_device *dev);
 #endif
+void virtio_reset_device(struct virtio_device *dev);
 
 size_t virtio_max_dma_size(struct virtio_device *vdev);
 
diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
index 490a4c900339..19c69821dd04 100644
--- a/net/9p/trans_virtio.c
+++ b/net/9p/trans_virtio.c
@@ -721,7 +721,7 @@ static void p9_virtio_remove(struct virtio_device *vdev)
 
 	mutex_unlock(&virtio_9p_lock);
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 
 	sysfs_remove_file(&(vdev->dev.kobj), &dev_attr_mount_tag.attr);
diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c
index 4f7c99dfd16c..fb3302fff627 100644
--- a/net/vmw_vsock/virtio_transport.c
+++ b/net/vmw_vsock/virtio_transport.c
@@ -665,7 +665,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
 	vsock_for_each_connected_socket(virtio_vsock_reset_sock);
 
 	/* Stop all work handlers to make sure no one is accessing the device,
-	 * so we can safely call vdev->config->reset().
+	 * so we can safely call virtio_reset_device().
 	 */
 	mutex_lock(&vsock->rx_lock);
 	vsock->rx_run = false;
@@ -682,7 +682,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
 	/* Flush all device writes and interrupts, device will not use any
 	 * more buffers.
 	 */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	mutex_lock(&vsock->rx_lock);
 	while ((pkt = virtqueue_detach_unused_buf(vsock->vqs[VSOCK_VQ_RX])))
diff --git a/sound/virtio/virtio_card.c b/sound/virtio/virtio_card.c
index 150ab3e37013..e2847c040f75 100644
--- a/sound/virtio/virtio_card.c
+++ b/sound/virtio/virtio_card.c
@@ -350,7 +350,7 @@ static void virtsnd_remove(struct virtio_device *vdev)
 		snd_card_free(snd->card);
 
 	vdev->config->del_vqs(vdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	for (i = 0; snd->substreams && i < snd->nsubstreams; ++i) {
 		struct virtio_pcm_substream *vss = &snd->substreams[i];
@@ -379,7 +379,7 @@ static int virtsnd_freeze(struct virtio_device *vdev)
 	virtsnd_ctl_msg_cancel_all(snd);
 
 	vdev->config->del_vqs(vdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	for (i = 0; i < snd->nsubstreams; ++i)
 		cancel_work_sync(&snd->substreams[i].elapsed_period);
-- 
MST


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 10:55 ` Michael S. Tsirkin
  0 siblings, 0 replies; 60+ messages in thread
From: Michael S. Tsirkin @ 2021-10-13 10:55 UTC (permalink / raw)
  To: linux-kernel
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar,
	Linus Walleij, linux-remoteproc, alsa-devel, dri-devel, netdev,
	Gerd Hoffmann, linux-scsi, Will Deacon, v9fs-developer,
	Anton Ivanov, Jean-Philippe Brucker, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Gonglei, Kalle Valo, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Marcel Holtmann, Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	Jeff Dike, linux-um, linux-crypto, linux-block, Vishal Verma,
	Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Jaroslav Kysela, Cristian Marussi, Jens Axboe, Jie Deng,
	Mathieu Poirier, linux-gpio, Greg Kroah-Hartman, Jason Wang,
	linux-wireless, Takashi Iwai, linux-i2c, linux-bluetooth, iommu,
	Anton Yakovlev, Daniel Vetter, Sudeep Holla, linux-fsdevel,
	Paolo Bonzini, Johannes Berg, Enrico Weigelt, metux IT consult,
	David S. Miller

This will enable cleanups down the road.
The idea is to disable cbs, then add "flush_queued_cbs" callback
as a parameter, this way drivers can flush any work
queued after callbacks have been disabled.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 arch/um/drivers/virt-pci.c                 | 2 +-
 drivers/block/virtio_blk.c                 | 4 ++--
 drivers/bluetooth/virtio_bt.c              | 2 +-
 drivers/char/hw_random/virtio-rng.c        | 2 +-
 drivers/char/virtio_console.c              | 4 ++--
 drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
 drivers/firmware/arm_scmi/virtio.c         | 2 +-
 drivers/gpio/gpio-virtio.c                 | 2 +-
 drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
 drivers/i2c/busses/i2c-virtio.c            | 2 +-
 drivers/iommu/virtio-iommu.c               | 2 +-
 drivers/net/caif/caif_virtio.c             | 2 +-
 drivers/net/virtio_net.c                   | 4 ++--
 drivers/net/wireless/mac80211_hwsim.c      | 2 +-
 drivers/nvdimm/virtio_pmem.c               | 2 +-
 drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
 drivers/scsi/virtio_scsi.c                 | 2 +-
 drivers/virtio/virtio.c                    | 5 +++++
 drivers/virtio/virtio_balloon.c            | 2 +-
 drivers/virtio/virtio_input.c              | 2 +-
 drivers/virtio/virtio_mem.c                | 2 +-
 fs/fuse/virtio_fs.c                        | 4 ++--
 include/linux/virtio.h                     | 1 +
 net/9p/trans_virtio.c                      | 2 +-
 net/vmw_vsock/virtio_transport.c           | 4 ++--
 sound/virtio/virtio_card.c                 | 4 ++--
 26 files changed, 39 insertions(+), 33 deletions(-)

diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
index c08066633023..22c4d87c9c15 100644
--- a/arch/um/drivers/virt-pci.c
+++ b/arch/um/drivers/virt-pci.c
@@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
 	int i;
 
         /* Stop all virtqueues */
-        vdev->config->reset(vdev);
+        virtio_reset_device(vdev);
         vdev->config->del_vqs(vdev);
 
 	device_set_wakeup_enable(&vdev->dev, false);
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 303caf2d17d0..83d0af3fbf30 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -910,7 +910,7 @@ static void virtblk_remove(struct virtio_device *vdev)
 	mutex_lock(&vblk->vdev_mutex);
 
 	/* Stop all the virtqueues. */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	/* Virtqueues are stopped, nothing can use vblk->vdev anymore. */
 	vblk->vdev = NULL;
@@ -929,7 +929,7 @@ static int virtblk_freeze(struct virtio_device *vdev)
 	struct virtio_blk *vblk = vdev->priv;
 
 	/* Ensure we don't receive any more interrupts */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	/* Make sure no work handler is accessing the device. */
 	flush_work(&vblk->config_work);
diff --git a/drivers/bluetooth/virtio_bt.c b/drivers/bluetooth/virtio_bt.c
index 57908ce4fae8..24a9258962fa 100644
--- a/drivers/bluetooth/virtio_bt.c
+++ b/drivers/bluetooth/virtio_bt.c
@@ -364,7 +364,7 @@ static void virtbt_remove(struct virtio_device *vdev)
 	struct hci_dev *hdev = vbt->hdev;
 
 	hci_unregister_dev(hdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	hci_free_dev(hdev);
 	vbt->hdev = NULL;
diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c
index a90001e02bf7..95980489514b 100644
--- a/drivers/char/hw_random/virtio-rng.c
+++ b/drivers/char/hw_random/virtio-rng.c
@@ -134,7 +134,7 @@ static void remove_common(struct virtio_device *vdev)
 	vi->hwrng_removed = true;
 	vi->data_avail = 0;
 	complete(&vi->have_data);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vi->busy = false;
 	if (vi->hwrng_register_done)
 		hwrng_unregister(&vi->hwrng);
diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
index 7eaf303a7a86..08bbd693436f 100644
--- a/drivers/char/virtio_console.c
+++ b/drivers/char/virtio_console.c
@@ -1957,7 +1957,7 @@ static void virtcons_remove(struct virtio_device *vdev)
 	spin_unlock_irq(&pdrvdata_lock);
 
 	/* Disable interrupts for vqs */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	/* Finish up work that's lined up */
 	if (use_multiport(portdev))
 		cancel_work_sync(&portdev->control_work);
@@ -2139,7 +2139,7 @@ static int virtcons_freeze(struct virtio_device *vdev)
 
 	portdev = vdev->priv;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	if (use_multiport(portdev))
 		virtqueue_disable_cb(portdev->c_ivq);
diff --git a/drivers/crypto/virtio/virtio_crypto_core.c b/drivers/crypto/virtio/virtio_crypto_core.c
index e2375d992308..8e977b7627cb 100644
--- a/drivers/crypto/virtio/virtio_crypto_core.c
+++ b/drivers/crypto/virtio/virtio_crypto_core.c
@@ -404,7 +404,7 @@ static int virtcrypto_probe(struct virtio_device *vdev)
 free_engines:
 	virtcrypto_clear_crypto_engines(vcrypto);
 free_vqs:
-	vcrypto->vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_del_vqs(vcrypto);
 free_dev:
 	virtcrypto_devmgr_rm_dev(vcrypto);
@@ -436,7 +436,7 @@ static void virtcrypto_remove(struct virtio_device *vdev)
 
 	if (virtcrypto_dev_started(vcrypto))
 		virtcrypto_dev_stop(vcrypto);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_free_unused_reqs(vcrypto);
 	virtcrypto_clear_crypto_engines(vcrypto);
 	virtcrypto_del_vqs(vcrypto);
@@ -456,7 +456,7 @@ static int virtcrypto_freeze(struct virtio_device *vdev)
 {
 	struct virtio_crypto *vcrypto = vdev->priv;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_free_unused_reqs(vcrypto);
 	if (virtcrypto_dev_started(vcrypto))
 		virtcrypto_dev_stop(vcrypto);
@@ -492,7 +492,7 @@ static int virtcrypto_restore(struct virtio_device *vdev)
 free_engines:
 	virtcrypto_clear_crypto_engines(vcrypto);
 free_vqs:
-	vcrypto->vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_del_vqs(vcrypto);
 	return err;
 }
diff --git a/drivers/firmware/arm_scmi/virtio.c b/drivers/firmware/arm_scmi/virtio.c
index 11e8efb71375..6b8d93fe8848 100644
--- a/drivers/firmware/arm_scmi/virtio.c
+++ b/drivers/firmware/arm_scmi/virtio.c
@@ -452,7 +452,7 @@ static void scmi_vio_remove(struct virtio_device *vdev)
 	 * outstanding message on any vqueue to be ignored by complete_cb: now
 	 * we can just stop processing buffers and destroy the vqueues.
 	 */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 	/* Ensure scmi_vdev is visible as NULL */
 	smp_store_mb(scmi_vdev, NULL);
diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c
index d24f1c9264bc..5029f01966f4 100644
--- a/drivers/gpio/gpio-virtio.c
+++ b/drivers/gpio/gpio-virtio.c
@@ -203,7 +203,7 @@ static void virtio_gpio_request_vq(struct virtqueue *vq)
 
 static void virtio_gpio_free_vqs(struct virtio_device *vdev)
 {
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 }
 
diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c b/drivers/gpu/drm/virtio/virtgpu_kms.c
index f3379059f324..6aa605b8d3a1 100644
--- a/drivers/gpu/drm/virtio/virtgpu_kms.c
+++ b/drivers/gpu/drm/virtio/virtgpu_kms.c
@@ -257,7 +257,7 @@ void virtio_gpu_deinit(struct drm_device *dev)
 	flush_work(&vgdev->ctrlq.dequeue_work);
 	flush_work(&vgdev->cursorq.dequeue_work);
 	flush_work(&vgdev->config_changed_work);
-	vgdev->vdev->config->reset(vgdev->vdev);
+	virtio_reset_device(vgdev->vdev);
 	vgdev->vdev->config->del_vqs(vgdev->vdev);
 }
 
diff --git a/drivers/i2c/busses/i2c-virtio.c b/drivers/i2c/busses/i2c-virtio.c
index f10a603b13fb..eb3261ac64dc 100644
--- a/drivers/i2c/busses/i2c-virtio.c
+++ b/drivers/i2c/busses/i2c-virtio.c
@@ -177,7 +177,7 @@ static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
 
 static void virtio_i2c_del_vqs(struct virtio_device *vdev)
 {
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 }
 
diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c
index 80930ce04a16..1d4e1e7cf175 100644
--- a/drivers/iommu/virtio-iommu.c
+++ b/drivers/iommu/virtio-iommu.c
@@ -1115,7 +1115,7 @@ static void viommu_remove(struct virtio_device *vdev)
 	iommu_device_unregister(&viommu->iommu);
 
 	/* Stop all virtqueues */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 
 	dev_info(&vdev->dev, "device removed\n");
diff --git a/drivers/net/caif/caif_virtio.c b/drivers/net/caif/caif_virtio.c
index 91230894692d..444ef6a342f6 100644
--- a/drivers/net/caif/caif_virtio.c
+++ b/drivers/net/caif/caif_virtio.c
@@ -754,7 +754,7 @@ static void cfv_remove(struct virtio_device *vdev)
 	debugfs_remove_recursive(cfv->debugfs);
 
 	vringh_kiov_cleanup(&cfv->ctx.riov);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->vringh_config->del_vrhs(cfv->vdev);
 	cfv->vr_rx = NULL;
 	vdev->config->del_vqs(cfv->vdev);
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 79bd2585ec6b..8c10fcad73a4 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -3274,7 +3274,7 @@ static int virtnet_probe(struct virtio_device *vdev)
 	return 0;
 
 free_unregister_netdev:
-	vi->vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	unregister_netdev(dev);
 free_failover:
@@ -3290,7 +3290,7 @@ static int virtnet_probe(struct virtio_device *vdev)
 
 static void remove_vq_common(struct virtnet_info *vi)
 {
-	vi->vdev->config->reset(vi->vdev);
+	virtio_reset_device(vi->vdev);
 
 	/* Free unused buffers in both send and recv, if any. */
 	free_unused_bufs(vi);
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index 0adae76eb8df..9ee430c1d4a2 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -4369,7 +4369,7 @@ static void remove_vqs(struct virtio_device *vdev)
 {
 	int i;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	for (i = 0; i < ARRAY_SIZE(hwsim_vqs); i++) {
 		struct virtqueue *vq = hwsim_vqs[i];
diff --git a/drivers/nvdimm/virtio_pmem.c b/drivers/nvdimm/virtio_pmem.c
index 726c7354d465..995b6cdc67ed 100644
--- a/drivers/nvdimm/virtio_pmem.c
+++ b/drivers/nvdimm/virtio_pmem.c
@@ -105,7 +105,7 @@ static void virtio_pmem_remove(struct virtio_device *vdev)
 
 	nvdimm_bus_unregister(nvdimm_bus);
 	vdev->config->del_vqs(vdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 }
 
 static struct virtio_driver virtio_pmem_driver = {
diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
index 8e49a3bacfc7..6a11952822df 100644
--- a/drivers/rpmsg/virtio_rpmsg_bus.c
+++ b/drivers/rpmsg/virtio_rpmsg_bus.c
@@ -1015,7 +1015,7 @@ static void rpmsg_remove(struct virtio_device *vdev)
 	size_t total_buf_space = vrp->num_bufs * vrp->buf_size;
 	int ret;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	ret = device_for_each_child(&vdev->dev, NULL, rpmsg_remove_device);
 	if (ret)
diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
index 07d0250f17c3..f2502a8a5213 100644
--- a/drivers/scsi/virtio_scsi.c
+++ b/drivers/scsi/virtio_scsi.c
@@ -778,7 +778,7 @@ static void virtscsi_init_vq(struct virtio_scsi_vq *virtscsi_vq,
 static void virtscsi_remove_vqs(struct virtio_device *vdev)
 {
 	/* Stop all the virtqueues. */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 }
 
diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
index 0a5b54034d4b..a67dd0eca578 100644
--- a/drivers/virtio/virtio.c
+++ b/drivers/virtio/virtio.c
@@ -204,6 +204,11 @@ int virtio_finalize_features(struct virtio_device *dev)
 }
 EXPORT_SYMBOL_GPL(virtio_finalize_features);
 
+static void virtio_reset_device(struct virtio_device *dev)
+{
+	dev->config->reset(dev);
+}
+
 static int virtio_dev_probe(struct device *_d)
 {
 	int err, i;
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index c22ff0117b46..f4c34a2a6b8e 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -1056,7 +1056,7 @@ static void remove_common(struct virtio_balloon *vb)
 		return_free_pages_to_mm(vb, ULONG_MAX);
 
 	/* Now we reset the device so we can clean up the queues. */
-	vb->vdev->config->reset(vb->vdev);
+	virtio_reset_device(vb->vdev);
 
 	vb->vdev->config->del_vqs(vb->vdev);
 }
diff --git a/drivers/virtio/virtio_input.c b/drivers/virtio/virtio_input.c
index ce51ae165943..3aa46703872d 100644
--- a/drivers/virtio/virtio_input.c
+++ b/drivers/virtio/virtio_input.c
@@ -347,7 +347,7 @@ static void virtinput_remove(struct virtio_device *vdev)
 	spin_unlock_irqrestore(&vi->lock, flags);
 
 	input_unregister_device(vi->idev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	while ((buf = virtqueue_detach_unused_buf(vi->sts)) != NULL)
 		kfree(buf);
 	vdev->config->del_vqs(vdev);
diff --git a/drivers/virtio/virtio_mem.c b/drivers/virtio/virtio_mem.c
index bef8ad6bf466..3bab0a625a4b 100644
--- a/drivers/virtio/virtio_mem.c
+++ b/drivers/virtio/virtio_mem.c
@@ -2722,7 +2722,7 @@ static void virtio_mem_remove(struct virtio_device *vdev)
 	}
 
 	/* reset the device and cleanup the queues */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 
 	kfree(vm);
diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
index 0ad89c6629d7..27c3b74070a2 100644
--- a/fs/fuse/virtio_fs.c
+++ b/fs/fuse/virtio_fs.c
@@ -895,7 +895,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)
 	return 0;
 
 out_vqs:
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtio_fs_cleanup_vqs(vdev, fs);
 	kfree(fs->vqs);
 
@@ -927,7 +927,7 @@ static void virtio_fs_remove(struct virtio_device *vdev)
 	list_del_init(&fs->list);
 	virtio_fs_stop_all_queues(fs);
 	virtio_fs_drain_all_queues_locked(fs);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtio_fs_cleanup_vqs(vdev, fs);
 
 	vdev->priv = NULL;
diff --git a/include/linux/virtio.h b/include/linux/virtio.h
index 41edbc01ffa4..72292a62cd90 100644
--- a/include/linux/virtio.h
+++ b/include/linux/virtio.h
@@ -138,6 +138,7 @@ int virtio_finalize_features(struct virtio_device *dev);
 int virtio_device_freeze(struct virtio_device *dev);
 int virtio_device_restore(struct virtio_device *dev);
 #endif
+void virtio_reset_device(struct virtio_device *dev);
 
 size_t virtio_max_dma_size(struct virtio_device *vdev);
 
diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
index 490a4c900339..19c69821dd04 100644
--- a/net/9p/trans_virtio.c
+++ b/net/9p/trans_virtio.c
@@ -721,7 +721,7 @@ static void p9_virtio_remove(struct virtio_device *vdev)
 
 	mutex_unlock(&virtio_9p_lock);
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 
 	sysfs_remove_file(&(vdev->dev.kobj), &dev_attr_mount_tag.attr);
diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c
index 4f7c99dfd16c..fb3302fff627 100644
--- a/net/vmw_vsock/virtio_transport.c
+++ b/net/vmw_vsock/virtio_transport.c
@@ -665,7 +665,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
 	vsock_for_each_connected_socket(virtio_vsock_reset_sock);
 
 	/* Stop all work handlers to make sure no one is accessing the device,
-	 * so we can safely call vdev->config->reset().
+	 * so we can safely call virtio_reset_device().
 	 */
 	mutex_lock(&vsock->rx_lock);
 	vsock->rx_run = false;
@@ -682,7 +682,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
 	/* Flush all device writes and interrupts, device will not use any
 	 * more buffers.
 	 */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	mutex_lock(&vsock->rx_lock);
 	while ((pkt = virtqueue_detach_unused_buf(vsock->vqs[VSOCK_VQ_RX])))
diff --git a/sound/virtio/virtio_card.c b/sound/virtio/virtio_card.c
index 150ab3e37013..e2847c040f75 100644
--- a/sound/virtio/virtio_card.c
+++ b/sound/virtio/virtio_card.c
@@ -350,7 +350,7 @@ static void virtsnd_remove(struct virtio_device *vdev)
 		snd_card_free(snd->card);
 
 	vdev->config->del_vqs(vdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	for (i = 0; snd->substreams && i < snd->nsubstreams; ++i) {
 		struct virtio_pcm_substream *vss = &snd->substreams[i];
@@ -379,7 +379,7 @@ static int virtsnd_freeze(struct virtio_device *vdev)
 	virtsnd_ctl_msg_cancel_all(snd);
 
 	vdev->config->del_vqs(vdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	for (i = 0; i < snd->nsubstreams; ++i)
 		cancel_work_sync(&snd->substreams[i].elapsed_period);
-- 
MST

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 10:55 ` Michael S. Tsirkin
  0 siblings, 0 replies; 60+ messages in thread
From: Michael S. Tsirkin @ 2021-10-13 10:55 UTC (permalink / raw)
  To: linux-kernel
  Cc: nvdimm, Stefan Hajnoczi, kvm, David Airlie, Viresh Kumar,
	Linus Walleij, linux-remoteproc, alsa-devel, dri-devel,
	Bjorn Andersson, netdev, linux-scsi, Will Deacon, v9fs-developer,
	Anton Ivanov, Jean-Philippe Brucker, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Kalle Valo, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Marcel Holtmann, Vivek Goyal, Ohad Ben-Cohen, Johan Hedberg,
	Arnd Bergmann, Amit Shah, Eric Van Hensbergen, Jeff Dike,
	linux-um, linux-crypto, linux-block, Vishal Verma,
	Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Jaroslav Kysela, Cristian Marussi, Jens Axboe, Mathieu Poirier,
	linux-gpio, Greg Kroah-Hartman, linux-wireless, Takashi Iwai,
	linux-i2c, linux-bluetooth, iommu, Daniel Vetter, Sudeep Holla,
	linux-fsdevel, Paolo Bonzini, Johannes Berg, Enrico Weigelt,
	metux IT consult, David S. Miller, Joerg Roedel

This will enable cleanups down the road.
The idea is to disable cbs, then add "flush_queued_cbs" callback
as a parameter, this way drivers can flush any work
queued after callbacks have been disabled.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 arch/um/drivers/virt-pci.c                 | 2 +-
 drivers/block/virtio_blk.c                 | 4 ++--
 drivers/bluetooth/virtio_bt.c              | 2 +-
 drivers/char/hw_random/virtio-rng.c        | 2 +-
 drivers/char/virtio_console.c              | 4 ++--
 drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
 drivers/firmware/arm_scmi/virtio.c         | 2 +-
 drivers/gpio/gpio-virtio.c                 | 2 +-
 drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
 drivers/i2c/busses/i2c-virtio.c            | 2 +-
 drivers/iommu/virtio-iommu.c               | 2 +-
 drivers/net/caif/caif_virtio.c             | 2 +-
 drivers/net/virtio_net.c                   | 4 ++--
 drivers/net/wireless/mac80211_hwsim.c      | 2 +-
 drivers/nvdimm/virtio_pmem.c               | 2 +-
 drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
 drivers/scsi/virtio_scsi.c                 | 2 +-
 drivers/virtio/virtio.c                    | 5 +++++
 drivers/virtio/virtio_balloon.c            | 2 +-
 drivers/virtio/virtio_input.c              | 2 +-
 drivers/virtio/virtio_mem.c                | 2 +-
 fs/fuse/virtio_fs.c                        | 4 ++--
 include/linux/virtio.h                     | 1 +
 net/9p/trans_virtio.c                      | 2 +-
 net/vmw_vsock/virtio_transport.c           | 4 ++--
 sound/virtio/virtio_card.c                 | 4 ++--
 26 files changed, 39 insertions(+), 33 deletions(-)

diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
index c08066633023..22c4d87c9c15 100644
--- a/arch/um/drivers/virt-pci.c
+++ b/arch/um/drivers/virt-pci.c
@@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
 	int i;
 
         /* Stop all virtqueues */
-        vdev->config->reset(vdev);
+        virtio_reset_device(vdev);
         vdev->config->del_vqs(vdev);
 
 	device_set_wakeup_enable(&vdev->dev, false);
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 303caf2d17d0..83d0af3fbf30 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -910,7 +910,7 @@ static void virtblk_remove(struct virtio_device *vdev)
 	mutex_lock(&vblk->vdev_mutex);
 
 	/* Stop all the virtqueues. */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	/* Virtqueues are stopped, nothing can use vblk->vdev anymore. */
 	vblk->vdev = NULL;
@@ -929,7 +929,7 @@ static int virtblk_freeze(struct virtio_device *vdev)
 	struct virtio_blk *vblk = vdev->priv;
 
 	/* Ensure we don't receive any more interrupts */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	/* Make sure no work handler is accessing the device. */
 	flush_work(&vblk->config_work);
diff --git a/drivers/bluetooth/virtio_bt.c b/drivers/bluetooth/virtio_bt.c
index 57908ce4fae8..24a9258962fa 100644
--- a/drivers/bluetooth/virtio_bt.c
+++ b/drivers/bluetooth/virtio_bt.c
@@ -364,7 +364,7 @@ static void virtbt_remove(struct virtio_device *vdev)
 	struct hci_dev *hdev = vbt->hdev;
 
 	hci_unregister_dev(hdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	hci_free_dev(hdev);
 	vbt->hdev = NULL;
diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c
index a90001e02bf7..95980489514b 100644
--- a/drivers/char/hw_random/virtio-rng.c
+++ b/drivers/char/hw_random/virtio-rng.c
@@ -134,7 +134,7 @@ static void remove_common(struct virtio_device *vdev)
 	vi->hwrng_removed = true;
 	vi->data_avail = 0;
 	complete(&vi->have_data);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vi->busy = false;
 	if (vi->hwrng_register_done)
 		hwrng_unregister(&vi->hwrng);
diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
index 7eaf303a7a86..08bbd693436f 100644
--- a/drivers/char/virtio_console.c
+++ b/drivers/char/virtio_console.c
@@ -1957,7 +1957,7 @@ static void virtcons_remove(struct virtio_device *vdev)
 	spin_unlock_irq(&pdrvdata_lock);
 
 	/* Disable interrupts for vqs */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	/* Finish up work that's lined up */
 	if (use_multiport(portdev))
 		cancel_work_sync(&portdev->control_work);
@@ -2139,7 +2139,7 @@ static int virtcons_freeze(struct virtio_device *vdev)
 
 	portdev = vdev->priv;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	if (use_multiport(portdev))
 		virtqueue_disable_cb(portdev->c_ivq);
diff --git a/drivers/crypto/virtio/virtio_crypto_core.c b/drivers/crypto/virtio/virtio_crypto_core.c
index e2375d992308..8e977b7627cb 100644
--- a/drivers/crypto/virtio/virtio_crypto_core.c
+++ b/drivers/crypto/virtio/virtio_crypto_core.c
@@ -404,7 +404,7 @@ static int virtcrypto_probe(struct virtio_device *vdev)
 free_engines:
 	virtcrypto_clear_crypto_engines(vcrypto);
 free_vqs:
-	vcrypto->vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_del_vqs(vcrypto);
 free_dev:
 	virtcrypto_devmgr_rm_dev(vcrypto);
@@ -436,7 +436,7 @@ static void virtcrypto_remove(struct virtio_device *vdev)
 
 	if (virtcrypto_dev_started(vcrypto))
 		virtcrypto_dev_stop(vcrypto);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_free_unused_reqs(vcrypto);
 	virtcrypto_clear_crypto_engines(vcrypto);
 	virtcrypto_del_vqs(vcrypto);
@@ -456,7 +456,7 @@ static int virtcrypto_freeze(struct virtio_device *vdev)
 {
 	struct virtio_crypto *vcrypto = vdev->priv;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_free_unused_reqs(vcrypto);
 	if (virtcrypto_dev_started(vcrypto))
 		virtcrypto_dev_stop(vcrypto);
@@ -492,7 +492,7 @@ static int virtcrypto_restore(struct virtio_device *vdev)
 free_engines:
 	virtcrypto_clear_crypto_engines(vcrypto);
 free_vqs:
-	vcrypto->vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_del_vqs(vcrypto);
 	return err;
 }
diff --git a/drivers/firmware/arm_scmi/virtio.c b/drivers/firmware/arm_scmi/virtio.c
index 11e8efb71375..6b8d93fe8848 100644
--- a/drivers/firmware/arm_scmi/virtio.c
+++ b/drivers/firmware/arm_scmi/virtio.c
@@ -452,7 +452,7 @@ static void scmi_vio_remove(struct virtio_device *vdev)
 	 * outstanding message on any vqueue to be ignored by complete_cb: now
 	 * we can just stop processing buffers and destroy the vqueues.
 	 */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 	/* Ensure scmi_vdev is visible as NULL */
 	smp_store_mb(scmi_vdev, NULL);
diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c
index d24f1c9264bc..5029f01966f4 100644
--- a/drivers/gpio/gpio-virtio.c
+++ b/drivers/gpio/gpio-virtio.c
@@ -203,7 +203,7 @@ static void virtio_gpio_request_vq(struct virtqueue *vq)
 
 static void virtio_gpio_free_vqs(struct virtio_device *vdev)
 {
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 }
 
diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c b/drivers/gpu/drm/virtio/virtgpu_kms.c
index f3379059f324..6aa605b8d3a1 100644
--- a/drivers/gpu/drm/virtio/virtgpu_kms.c
+++ b/drivers/gpu/drm/virtio/virtgpu_kms.c
@@ -257,7 +257,7 @@ void virtio_gpu_deinit(struct drm_device *dev)
 	flush_work(&vgdev->ctrlq.dequeue_work);
 	flush_work(&vgdev->cursorq.dequeue_work);
 	flush_work(&vgdev->config_changed_work);
-	vgdev->vdev->config->reset(vgdev->vdev);
+	virtio_reset_device(vgdev->vdev);
 	vgdev->vdev->config->del_vqs(vgdev->vdev);
 }
 
diff --git a/drivers/i2c/busses/i2c-virtio.c b/drivers/i2c/busses/i2c-virtio.c
index f10a603b13fb..eb3261ac64dc 100644
--- a/drivers/i2c/busses/i2c-virtio.c
+++ b/drivers/i2c/busses/i2c-virtio.c
@@ -177,7 +177,7 @@ static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
 
 static void virtio_i2c_del_vqs(struct virtio_device *vdev)
 {
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 }
 
diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c
index 80930ce04a16..1d4e1e7cf175 100644
--- a/drivers/iommu/virtio-iommu.c
+++ b/drivers/iommu/virtio-iommu.c
@@ -1115,7 +1115,7 @@ static void viommu_remove(struct virtio_device *vdev)
 	iommu_device_unregister(&viommu->iommu);
 
 	/* Stop all virtqueues */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 
 	dev_info(&vdev->dev, "device removed\n");
diff --git a/drivers/net/caif/caif_virtio.c b/drivers/net/caif/caif_virtio.c
index 91230894692d..444ef6a342f6 100644
--- a/drivers/net/caif/caif_virtio.c
+++ b/drivers/net/caif/caif_virtio.c
@@ -754,7 +754,7 @@ static void cfv_remove(struct virtio_device *vdev)
 	debugfs_remove_recursive(cfv->debugfs);
 
 	vringh_kiov_cleanup(&cfv->ctx.riov);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->vringh_config->del_vrhs(cfv->vdev);
 	cfv->vr_rx = NULL;
 	vdev->config->del_vqs(cfv->vdev);
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 79bd2585ec6b..8c10fcad73a4 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -3274,7 +3274,7 @@ static int virtnet_probe(struct virtio_device *vdev)
 	return 0;
 
 free_unregister_netdev:
-	vi->vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	unregister_netdev(dev);
 free_failover:
@@ -3290,7 +3290,7 @@ static int virtnet_probe(struct virtio_device *vdev)
 
 static void remove_vq_common(struct virtnet_info *vi)
 {
-	vi->vdev->config->reset(vi->vdev);
+	virtio_reset_device(vi->vdev);
 
 	/* Free unused buffers in both send and recv, if any. */
 	free_unused_bufs(vi);
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index 0adae76eb8df..9ee430c1d4a2 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -4369,7 +4369,7 @@ static void remove_vqs(struct virtio_device *vdev)
 {
 	int i;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	for (i = 0; i < ARRAY_SIZE(hwsim_vqs); i++) {
 		struct virtqueue *vq = hwsim_vqs[i];
diff --git a/drivers/nvdimm/virtio_pmem.c b/drivers/nvdimm/virtio_pmem.c
index 726c7354d465..995b6cdc67ed 100644
--- a/drivers/nvdimm/virtio_pmem.c
+++ b/drivers/nvdimm/virtio_pmem.c
@@ -105,7 +105,7 @@ static void virtio_pmem_remove(struct virtio_device *vdev)
 
 	nvdimm_bus_unregister(nvdimm_bus);
 	vdev->config->del_vqs(vdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 }
 
 static struct virtio_driver virtio_pmem_driver = {
diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
index 8e49a3bacfc7..6a11952822df 100644
--- a/drivers/rpmsg/virtio_rpmsg_bus.c
+++ b/drivers/rpmsg/virtio_rpmsg_bus.c
@@ -1015,7 +1015,7 @@ static void rpmsg_remove(struct virtio_device *vdev)
 	size_t total_buf_space = vrp->num_bufs * vrp->buf_size;
 	int ret;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	ret = device_for_each_child(&vdev->dev, NULL, rpmsg_remove_device);
 	if (ret)
diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
index 07d0250f17c3..f2502a8a5213 100644
--- a/drivers/scsi/virtio_scsi.c
+++ b/drivers/scsi/virtio_scsi.c
@@ -778,7 +778,7 @@ static void virtscsi_init_vq(struct virtio_scsi_vq *virtscsi_vq,
 static void virtscsi_remove_vqs(struct virtio_device *vdev)
 {
 	/* Stop all the virtqueues. */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 }
 
diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
index 0a5b54034d4b..a67dd0eca578 100644
--- a/drivers/virtio/virtio.c
+++ b/drivers/virtio/virtio.c
@@ -204,6 +204,11 @@ int virtio_finalize_features(struct virtio_device *dev)
 }
 EXPORT_SYMBOL_GPL(virtio_finalize_features);
 
+static void virtio_reset_device(struct virtio_device *dev)
+{
+	dev->config->reset(dev);
+}
+
 static int virtio_dev_probe(struct device *_d)
 {
 	int err, i;
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index c22ff0117b46..f4c34a2a6b8e 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -1056,7 +1056,7 @@ static void remove_common(struct virtio_balloon *vb)
 		return_free_pages_to_mm(vb, ULONG_MAX);
 
 	/* Now we reset the device so we can clean up the queues. */
-	vb->vdev->config->reset(vb->vdev);
+	virtio_reset_device(vb->vdev);
 
 	vb->vdev->config->del_vqs(vb->vdev);
 }
diff --git a/drivers/virtio/virtio_input.c b/drivers/virtio/virtio_input.c
index ce51ae165943..3aa46703872d 100644
--- a/drivers/virtio/virtio_input.c
+++ b/drivers/virtio/virtio_input.c
@@ -347,7 +347,7 @@ static void virtinput_remove(struct virtio_device *vdev)
 	spin_unlock_irqrestore(&vi->lock, flags);
 
 	input_unregister_device(vi->idev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	while ((buf = virtqueue_detach_unused_buf(vi->sts)) != NULL)
 		kfree(buf);
 	vdev->config->del_vqs(vdev);
diff --git a/drivers/virtio/virtio_mem.c b/drivers/virtio/virtio_mem.c
index bef8ad6bf466..3bab0a625a4b 100644
--- a/drivers/virtio/virtio_mem.c
+++ b/drivers/virtio/virtio_mem.c
@@ -2722,7 +2722,7 @@ static void virtio_mem_remove(struct virtio_device *vdev)
 	}
 
 	/* reset the device and cleanup the queues */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 
 	kfree(vm);
diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
index 0ad89c6629d7..27c3b74070a2 100644
--- a/fs/fuse/virtio_fs.c
+++ b/fs/fuse/virtio_fs.c
@@ -895,7 +895,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)
 	return 0;
 
 out_vqs:
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtio_fs_cleanup_vqs(vdev, fs);
 	kfree(fs->vqs);
 
@@ -927,7 +927,7 @@ static void virtio_fs_remove(struct virtio_device *vdev)
 	list_del_init(&fs->list);
 	virtio_fs_stop_all_queues(fs);
 	virtio_fs_drain_all_queues_locked(fs);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtio_fs_cleanup_vqs(vdev, fs);
 
 	vdev->priv = NULL;
diff --git a/include/linux/virtio.h b/include/linux/virtio.h
index 41edbc01ffa4..72292a62cd90 100644
--- a/include/linux/virtio.h
+++ b/include/linux/virtio.h
@@ -138,6 +138,7 @@ int virtio_finalize_features(struct virtio_device *dev);
 int virtio_device_freeze(struct virtio_device *dev);
 int virtio_device_restore(struct virtio_device *dev);
 #endif
+void virtio_reset_device(struct virtio_device *dev);
 
 size_t virtio_max_dma_size(struct virtio_device *vdev);
 
diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
index 490a4c900339..19c69821dd04 100644
--- a/net/9p/trans_virtio.c
+++ b/net/9p/trans_virtio.c
@@ -721,7 +721,7 @@ static void p9_virtio_remove(struct virtio_device *vdev)
 
 	mutex_unlock(&virtio_9p_lock);
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 
 	sysfs_remove_file(&(vdev->dev.kobj), &dev_attr_mount_tag.attr);
diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c
index 4f7c99dfd16c..fb3302fff627 100644
--- a/net/vmw_vsock/virtio_transport.c
+++ b/net/vmw_vsock/virtio_transport.c
@@ -665,7 +665,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
 	vsock_for_each_connected_socket(virtio_vsock_reset_sock);
 
 	/* Stop all work handlers to make sure no one is accessing the device,
-	 * so we can safely call vdev->config->reset().
+	 * so we can safely call virtio_reset_device().
 	 */
 	mutex_lock(&vsock->rx_lock);
 	vsock->rx_run = false;
@@ -682,7 +682,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
 	/* Flush all device writes and interrupts, device will not use any
 	 * more buffers.
 	 */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	mutex_lock(&vsock->rx_lock);
 	while ((pkt = virtqueue_detach_unused_buf(vsock->vqs[VSOCK_VQ_RX])))
diff --git a/sound/virtio/virtio_card.c b/sound/virtio/virtio_card.c
index 150ab3e37013..e2847c040f75 100644
--- a/sound/virtio/virtio_card.c
+++ b/sound/virtio/virtio_card.c
@@ -350,7 +350,7 @@ static void virtsnd_remove(struct virtio_device *vdev)
 		snd_card_free(snd->card);
 
 	vdev->config->del_vqs(vdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	for (i = 0; snd->substreams && i < snd->nsubstreams; ++i) {
 		struct virtio_pcm_substream *vss = &snd->substreams[i];
@@ -379,7 +379,7 @@ static int virtsnd_freeze(struct virtio_device *vdev)
 	virtsnd_ctl_msg_cancel_all(snd);
 
 	vdev->config->del_vqs(vdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	for (i = 0; i < snd->nsubstreams; ++i)
 		cancel_work_sync(&snd->substreams[i].elapsed_period);
-- 
MST

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply related	[flat|nested] 60+ messages in thread

* [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 10:55 ` Michael S. Tsirkin
  0 siblings, 0 replies; 60+ messages in thread
From: Michael S. Tsirkin @ 2021-10-13 10:55 UTC (permalink / raw)
  To: linux-kernel
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar,
	Linus Walleij, linux-remoteproc, alsa-devel, dri-devel,
	Bjorn Andersson, netdev, Gerd Hoffmann, linux-scsi, Will Deacon,
	v9fs-developer, Anton Ivanov, Jean-Philippe Brucker, Dave Jiang,
	Herbert Xu, linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Gonglei, Kalle Valo, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Marcel Holtmann, Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	Jeff Dike, linux-um, linux-crypto, linux-block, Vishal Verma,
	Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Cristian Marussi, Jens Axboe, Jie Deng, Mathieu Poirier,
	linux-gpio, Greg Kroah-Hartman, Jason Wang, linux-wireless,
	Takashi Iwai, linux-i2c, linux-bluetooth, iommu, Anton Yakovlev,
	Daniel Vetter, Sudeep Holla, linux-fsdevel, Paolo Bonzini,
	Johannes Berg, Enrico Weigelt, metux IT consult, David S. Miller,
	Joerg Roedel

This will enable cleanups down the road.
The idea is to disable cbs, then add "flush_queued_cbs" callback
as a parameter, this way drivers can flush any work
queued after callbacks have been disabled.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 arch/um/drivers/virt-pci.c                 | 2 +-
 drivers/block/virtio_blk.c                 | 4 ++--
 drivers/bluetooth/virtio_bt.c              | 2 +-
 drivers/char/hw_random/virtio-rng.c        | 2 +-
 drivers/char/virtio_console.c              | 4 ++--
 drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
 drivers/firmware/arm_scmi/virtio.c         | 2 +-
 drivers/gpio/gpio-virtio.c                 | 2 +-
 drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
 drivers/i2c/busses/i2c-virtio.c            | 2 +-
 drivers/iommu/virtio-iommu.c               | 2 +-
 drivers/net/caif/caif_virtio.c             | 2 +-
 drivers/net/virtio_net.c                   | 4 ++--
 drivers/net/wireless/mac80211_hwsim.c      | 2 +-
 drivers/nvdimm/virtio_pmem.c               | 2 +-
 drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
 drivers/scsi/virtio_scsi.c                 | 2 +-
 drivers/virtio/virtio.c                    | 5 +++++
 drivers/virtio/virtio_balloon.c            | 2 +-
 drivers/virtio/virtio_input.c              | 2 +-
 drivers/virtio/virtio_mem.c                | 2 +-
 fs/fuse/virtio_fs.c                        | 4 ++--
 include/linux/virtio.h                     | 1 +
 net/9p/trans_virtio.c                      | 2 +-
 net/vmw_vsock/virtio_transport.c           | 4 ++--
 sound/virtio/virtio_card.c                 | 4 ++--
 26 files changed, 39 insertions(+), 33 deletions(-)

diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
index c08066633023..22c4d87c9c15 100644
--- a/arch/um/drivers/virt-pci.c
+++ b/arch/um/drivers/virt-pci.c
@@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
 	int i;
 
         /* Stop all virtqueues */
-        vdev->config->reset(vdev);
+        virtio_reset_device(vdev);
         vdev->config->del_vqs(vdev);
 
 	device_set_wakeup_enable(&vdev->dev, false);
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 303caf2d17d0..83d0af3fbf30 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -910,7 +910,7 @@ static void virtblk_remove(struct virtio_device *vdev)
 	mutex_lock(&vblk->vdev_mutex);
 
 	/* Stop all the virtqueues. */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	/* Virtqueues are stopped, nothing can use vblk->vdev anymore. */
 	vblk->vdev = NULL;
@@ -929,7 +929,7 @@ static int virtblk_freeze(struct virtio_device *vdev)
 	struct virtio_blk *vblk = vdev->priv;
 
 	/* Ensure we don't receive any more interrupts */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	/* Make sure no work handler is accessing the device. */
 	flush_work(&vblk->config_work);
diff --git a/drivers/bluetooth/virtio_bt.c b/drivers/bluetooth/virtio_bt.c
index 57908ce4fae8..24a9258962fa 100644
--- a/drivers/bluetooth/virtio_bt.c
+++ b/drivers/bluetooth/virtio_bt.c
@@ -364,7 +364,7 @@ static void virtbt_remove(struct virtio_device *vdev)
 	struct hci_dev *hdev = vbt->hdev;
 
 	hci_unregister_dev(hdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	hci_free_dev(hdev);
 	vbt->hdev = NULL;
diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c
index a90001e02bf7..95980489514b 100644
--- a/drivers/char/hw_random/virtio-rng.c
+++ b/drivers/char/hw_random/virtio-rng.c
@@ -134,7 +134,7 @@ static void remove_common(struct virtio_device *vdev)
 	vi->hwrng_removed = true;
 	vi->data_avail = 0;
 	complete(&vi->have_data);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vi->busy = false;
 	if (vi->hwrng_register_done)
 		hwrng_unregister(&vi->hwrng);
diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
index 7eaf303a7a86..08bbd693436f 100644
--- a/drivers/char/virtio_console.c
+++ b/drivers/char/virtio_console.c
@@ -1957,7 +1957,7 @@ static void virtcons_remove(struct virtio_device *vdev)
 	spin_unlock_irq(&pdrvdata_lock);
 
 	/* Disable interrupts for vqs */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	/* Finish up work that's lined up */
 	if (use_multiport(portdev))
 		cancel_work_sync(&portdev->control_work);
@@ -2139,7 +2139,7 @@ static int virtcons_freeze(struct virtio_device *vdev)
 
 	portdev = vdev->priv;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	if (use_multiport(portdev))
 		virtqueue_disable_cb(portdev->c_ivq);
diff --git a/drivers/crypto/virtio/virtio_crypto_core.c b/drivers/crypto/virtio/virtio_crypto_core.c
index e2375d992308..8e977b7627cb 100644
--- a/drivers/crypto/virtio/virtio_crypto_core.c
+++ b/drivers/crypto/virtio/virtio_crypto_core.c
@@ -404,7 +404,7 @@ static int virtcrypto_probe(struct virtio_device *vdev)
 free_engines:
 	virtcrypto_clear_crypto_engines(vcrypto);
 free_vqs:
-	vcrypto->vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_del_vqs(vcrypto);
 free_dev:
 	virtcrypto_devmgr_rm_dev(vcrypto);
@@ -436,7 +436,7 @@ static void virtcrypto_remove(struct virtio_device *vdev)
 
 	if (virtcrypto_dev_started(vcrypto))
 		virtcrypto_dev_stop(vcrypto);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_free_unused_reqs(vcrypto);
 	virtcrypto_clear_crypto_engines(vcrypto);
 	virtcrypto_del_vqs(vcrypto);
@@ -456,7 +456,7 @@ static int virtcrypto_freeze(struct virtio_device *vdev)
 {
 	struct virtio_crypto *vcrypto = vdev->priv;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_free_unused_reqs(vcrypto);
 	if (virtcrypto_dev_started(vcrypto))
 		virtcrypto_dev_stop(vcrypto);
@@ -492,7 +492,7 @@ static int virtcrypto_restore(struct virtio_device *vdev)
 free_engines:
 	virtcrypto_clear_crypto_engines(vcrypto);
 free_vqs:
-	vcrypto->vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtcrypto_del_vqs(vcrypto);
 	return err;
 }
diff --git a/drivers/firmware/arm_scmi/virtio.c b/drivers/firmware/arm_scmi/virtio.c
index 11e8efb71375..6b8d93fe8848 100644
--- a/drivers/firmware/arm_scmi/virtio.c
+++ b/drivers/firmware/arm_scmi/virtio.c
@@ -452,7 +452,7 @@ static void scmi_vio_remove(struct virtio_device *vdev)
 	 * outstanding message on any vqueue to be ignored by complete_cb: now
 	 * we can just stop processing buffers and destroy the vqueues.
 	 */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 	/* Ensure scmi_vdev is visible as NULL */
 	smp_store_mb(scmi_vdev, NULL);
diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c
index d24f1c9264bc..5029f01966f4 100644
--- a/drivers/gpio/gpio-virtio.c
+++ b/drivers/gpio/gpio-virtio.c
@@ -203,7 +203,7 @@ static void virtio_gpio_request_vq(struct virtqueue *vq)
 
 static void virtio_gpio_free_vqs(struct virtio_device *vdev)
 {
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 }
 
diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c b/drivers/gpu/drm/virtio/virtgpu_kms.c
index f3379059f324..6aa605b8d3a1 100644
--- a/drivers/gpu/drm/virtio/virtgpu_kms.c
+++ b/drivers/gpu/drm/virtio/virtgpu_kms.c
@@ -257,7 +257,7 @@ void virtio_gpu_deinit(struct drm_device *dev)
 	flush_work(&vgdev->ctrlq.dequeue_work);
 	flush_work(&vgdev->cursorq.dequeue_work);
 	flush_work(&vgdev->config_changed_work);
-	vgdev->vdev->config->reset(vgdev->vdev);
+	virtio_reset_device(vgdev->vdev);
 	vgdev->vdev->config->del_vqs(vgdev->vdev);
 }
 
diff --git a/drivers/i2c/busses/i2c-virtio.c b/drivers/i2c/busses/i2c-virtio.c
index f10a603b13fb..eb3261ac64dc 100644
--- a/drivers/i2c/busses/i2c-virtio.c
+++ b/drivers/i2c/busses/i2c-virtio.c
@@ -177,7 +177,7 @@ static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
 
 static void virtio_i2c_del_vqs(struct virtio_device *vdev)
 {
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 }
 
diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c
index 80930ce04a16..1d4e1e7cf175 100644
--- a/drivers/iommu/virtio-iommu.c
+++ b/drivers/iommu/virtio-iommu.c
@@ -1115,7 +1115,7 @@ static void viommu_remove(struct virtio_device *vdev)
 	iommu_device_unregister(&viommu->iommu);
 
 	/* Stop all virtqueues */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 
 	dev_info(&vdev->dev, "device removed\n");
diff --git a/drivers/net/caif/caif_virtio.c b/drivers/net/caif/caif_virtio.c
index 91230894692d..444ef6a342f6 100644
--- a/drivers/net/caif/caif_virtio.c
+++ b/drivers/net/caif/caif_virtio.c
@@ -754,7 +754,7 @@ static void cfv_remove(struct virtio_device *vdev)
 	debugfs_remove_recursive(cfv->debugfs);
 
 	vringh_kiov_cleanup(&cfv->ctx.riov);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->vringh_config->del_vrhs(cfv->vdev);
 	cfv->vr_rx = NULL;
 	vdev->config->del_vqs(cfv->vdev);
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 79bd2585ec6b..8c10fcad73a4 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -3274,7 +3274,7 @@ static int virtnet_probe(struct virtio_device *vdev)
 	return 0;
 
 free_unregister_netdev:
-	vi->vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	unregister_netdev(dev);
 free_failover:
@@ -3290,7 +3290,7 @@ static int virtnet_probe(struct virtio_device *vdev)
 
 static void remove_vq_common(struct virtnet_info *vi)
 {
-	vi->vdev->config->reset(vi->vdev);
+	virtio_reset_device(vi->vdev);
 
 	/* Free unused buffers in both send and recv, if any. */
 	free_unused_bufs(vi);
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index 0adae76eb8df..9ee430c1d4a2 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -4369,7 +4369,7 @@ static void remove_vqs(struct virtio_device *vdev)
 {
 	int i;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	for (i = 0; i < ARRAY_SIZE(hwsim_vqs); i++) {
 		struct virtqueue *vq = hwsim_vqs[i];
diff --git a/drivers/nvdimm/virtio_pmem.c b/drivers/nvdimm/virtio_pmem.c
index 726c7354d465..995b6cdc67ed 100644
--- a/drivers/nvdimm/virtio_pmem.c
+++ b/drivers/nvdimm/virtio_pmem.c
@@ -105,7 +105,7 @@ static void virtio_pmem_remove(struct virtio_device *vdev)
 
 	nvdimm_bus_unregister(nvdimm_bus);
 	vdev->config->del_vqs(vdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 }
 
 static struct virtio_driver virtio_pmem_driver = {
diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
index 8e49a3bacfc7..6a11952822df 100644
--- a/drivers/rpmsg/virtio_rpmsg_bus.c
+++ b/drivers/rpmsg/virtio_rpmsg_bus.c
@@ -1015,7 +1015,7 @@ static void rpmsg_remove(struct virtio_device *vdev)
 	size_t total_buf_space = vrp->num_bufs * vrp->buf_size;
 	int ret;
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	ret = device_for_each_child(&vdev->dev, NULL, rpmsg_remove_device);
 	if (ret)
diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
index 07d0250f17c3..f2502a8a5213 100644
--- a/drivers/scsi/virtio_scsi.c
+++ b/drivers/scsi/virtio_scsi.c
@@ -778,7 +778,7 @@ static void virtscsi_init_vq(struct virtio_scsi_vq *virtscsi_vq,
 static void virtscsi_remove_vqs(struct virtio_device *vdev)
 {
 	/* Stop all the virtqueues. */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 }
 
diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
index 0a5b54034d4b..a67dd0eca578 100644
--- a/drivers/virtio/virtio.c
+++ b/drivers/virtio/virtio.c
@@ -204,6 +204,11 @@ int virtio_finalize_features(struct virtio_device *dev)
 }
 EXPORT_SYMBOL_GPL(virtio_finalize_features);
 
+static void virtio_reset_device(struct virtio_device *dev)
+{
+	dev->config->reset(dev);
+}
+
 static int virtio_dev_probe(struct device *_d)
 {
 	int err, i;
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index c22ff0117b46..f4c34a2a6b8e 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -1056,7 +1056,7 @@ static void remove_common(struct virtio_balloon *vb)
 		return_free_pages_to_mm(vb, ULONG_MAX);
 
 	/* Now we reset the device so we can clean up the queues. */
-	vb->vdev->config->reset(vb->vdev);
+	virtio_reset_device(vb->vdev);
 
 	vb->vdev->config->del_vqs(vb->vdev);
 }
diff --git a/drivers/virtio/virtio_input.c b/drivers/virtio/virtio_input.c
index ce51ae165943..3aa46703872d 100644
--- a/drivers/virtio/virtio_input.c
+++ b/drivers/virtio/virtio_input.c
@@ -347,7 +347,7 @@ static void virtinput_remove(struct virtio_device *vdev)
 	spin_unlock_irqrestore(&vi->lock, flags);
 
 	input_unregister_device(vi->idev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	while ((buf = virtqueue_detach_unused_buf(vi->sts)) != NULL)
 		kfree(buf);
 	vdev->config->del_vqs(vdev);
diff --git a/drivers/virtio/virtio_mem.c b/drivers/virtio/virtio_mem.c
index bef8ad6bf466..3bab0a625a4b 100644
--- a/drivers/virtio/virtio_mem.c
+++ b/drivers/virtio/virtio_mem.c
@@ -2722,7 +2722,7 @@ static void virtio_mem_remove(struct virtio_device *vdev)
 	}
 
 	/* reset the device and cleanup the queues */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 
 	kfree(vm);
diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
index 0ad89c6629d7..27c3b74070a2 100644
--- a/fs/fuse/virtio_fs.c
+++ b/fs/fuse/virtio_fs.c
@@ -895,7 +895,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)
 	return 0;
 
 out_vqs:
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtio_fs_cleanup_vqs(vdev, fs);
 	kfree(fs->vqs);
 
@@ -927,7 +927,7 @@ static void virtio_fs_remove(struct virtio_device *vdev)
 	list_del_init(&fs->list);
 	virtio_fs_stop_all_queues(fs);
 	virtio_fs_drain_all_queues_locked(fs);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	virtio_fs_cleanup_vqs(vdev, fs);
 
 	vdev->priv = NULL;
diff --git a/include/linux/virtio.h b/include/linux/virtio.h
index 41edbc01ffa4..72292a62cd90 100644
--- a/include/linux/virtio.h
+++ b/include/linux/virtio.h
@@ -138,6 +138,7 @@ int virtio_finalize_features(struct virtio_device *dev);
 int virtio_device_freeze(struct virtio_device *dev);
 int virtio_device_restore(struct virtio_device *dev);
 #endif
+void virtio_reset_device(struct virtio_device *dev);
 
 size_t virtio_max_dma_size(struct virtio_device *vdev);
 
diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
index 490a4c900339..19c69821dd04 100644
--- a/net/9p/trans_virtio.c
+++ b/net/9p/trans_virtio.c
@@ -721,7 +721,7 @@ static void p9_virtio_remove(struct virtio_device *vdev)
 
 	mutex_unlock(&virtio_9p_lock);
 
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 	vdev->config->del_vqs(vdev);
 
 	sysfs_remove_file(&(vdev->dev.kobj), &dev_attr_mount_tag.attr);
diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c
index 4f7c99dfd16c..fb3302fff627 100644
--- a/net/vmw_vsock/virtio_transport.c
+++ b/net/vmw_vsock/virtio_transport.c
@@ -665,7 +665,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
 	vsock_for_each_connected_socket(virtio_vsock_reset_sock);
 
 	/* Stop all work handlers to make sure no one is accessing the device,
-	 * so we can safely call vdev->config->reset().
+	 * so we can safely call virtio_reset_device().
 	 */
 	mutex_lock(&vsock->rx_lock);
 	vsock->rx_run = false;
@@ -682,7 +682,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
 	/* Flush all device writes and interrupts, device will not use any
 	 * more buffers.
 	 */
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	mutex_lock(&vsock->rx_lock);
 	while ((pkt = virtqueue_detach_unused_buf(vsock->vqs[VSOCK_VQ_RX])))
diff --git a/sound/virtio/virtio_card.c b/sound/virtio/virtio_card.c
index 150ab3e37013..e2847c040f75 100644
--- a/sound/virtio/virtio_card.c
+++ b/sound/virtio/virtio_card.c
@@ -350,7 +350,7 @@ static void virtsnd_remove(struct virtio_device *vdev)
 		snd_card_free(snd->card);
 
 	vdev->config->del_vqs(vdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	for (i = 0; snd->substreams && i < snd->nsubstreams; ++i) {
 		struct virtio_pcm_substream *vss = &snd->substreams[i];
@@ -379,7 +379,7 @@ static int virtsnd_freeze(struct virtio_device *vdev)
 	virtsnd_ctl_msg_cancel_all(snd);
 
 	vdev->config->del_vqs(vdev);
-	vdev->config->reset(vdev);
+	virtio_reset_device(vdev);
 
 	for (i = 0; i < snd->nsubstreams; ++i)
 		cancel_work_sync(&snd->substreams[i].elapsed_period);
-- 
MST


^ permalink raw reply related	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
  2021-10-13 10:55 ` Michael S. Tsirkin
  (?)
  (?)
@ 2021-10-13 11:00   ` Viresh Kumar
  -1 siblings, 0 replies; 60+ messages in thread
From: Viresh Kumar @ 2021-10-13 11:00 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Stefan Hajnoczi, Jens Axboe,
	Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
	Matt Mackall, Herbert Xu, Amit Shah, Arnd Bergmann,
	Greg Kroah-Hartman, Gonglei, David S. Miller, Sudeep Holla,
	Cristian Marussi, Enrico Weigelt, metux IT consult, Viresh Kumar,
	Linus Walleij, Bartosz Golaszewski, David Airlie, Gerd Hoffmann,
	Daniel Vetter, Jie Deng, Jean-Philippe Brucker, Joerg Roedel,
	Will Deacon, Jakub Kicinski, Johannes Berg, Kalle Valo,
	Dan Williams, Vishal Verma, Dave Jiang, Ira Weiny,
	Ohad Ben-Cohen, Bjorn Andersson, Mathieu Poirier,
	James E.J. Bottomley, Martin K. Petersen, David Hildenbrand,
	Vivek Goyal, Miklos Szeredi, Eric Van Hensbergen,
	Latchesar Ionkov, Dominique Martinet, Stefano Garzarella,
	Anton Yakovlev, Jaroslav Kysela, Takashi Iwai, linux-um,
	virtualization, linux-block, linux-bluetooth, linux-crypto,
	linux-arm-kernel, linux-gpio, dri-devel, linux-i2c, iommu,
	netdev, linux-wireless, nvdimm, linux-remoteproc, linux-scsi,
	linux-fsdevel, v9fs-developer, kvm, alsa-devel

On 13-10-21, 06:55, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-

Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>

-- 
viresh

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 11:00   ` Viresh Kumar
  0 siblings, 0 replies; 60+ messages in thread
From: Viresh Kumar @ 2021-10-13 11:00 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, netdev, Gerd Hoffmann,
	linux-scsi, Will Deacon, v9fs-developer, Anton Ivanov,
	Jean-Philippe Brucker, Linus Walleij, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Gonglei, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Vivek Goyal,
	Stefano Garzarella, Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann,
	Amit Shah, Eric Van Hensbergen, Marcel Holtmann, linux-um,
	linux-crypto, linux-block, Vishal Verma, Luiz Augusto von Dentz,
	Matt Mackall, Dan Williams, Jaroslav Kysela, Cristian Marussi,
	Jens Axboe, Jie Deng, Mathieu Poirier, linux-gpio,
	Greg Kroah-Hartman, linux-wireless, linux-kernel, linux-i2c,
	linux-bluetooth, iommu, Anton Yakovlev, Daniel Vetter,
	Sudeep Holla, linux-fsdevel, Paolo Bonzini, Johannes Berg,
	Enrico Weigelt, metux IT consult, David S. Miller

On 13-10-21, 06:55, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-

Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>

-- 
viresh
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 11:00   ` Viresh Kumar
  0 siblings, 0 replies; 60+ messages in thread
From: Viresh Kumar @ 2021-10-13 11:00 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: nvdimm, Stefan Hajnoczi, kvm, David Airlie, Viresh Kumar,
	linux-remoteproc, alsa-devel, dri-devel, Bjorn Andersson, netdev,
	linux-scsi, Will Deacon, v9fs-developer, Anton Ivanov,
	Jean-Philippe Brucker, Linus Walleij, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Vivek Goyal,
	Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann, Amit Shah,
	Eric Van Hensbergen, Marcel Holtmann, linux-um, linux-crypto,
	linux-block, Vishal Verma, Luiz Augusto von Dentz, Matt Mackall,
	Dan Williams, Jaroslav Kysela, Cristian Marussi, Jens Axboe,
	Mathieu Poirier, linux-gpio, Greg Kroah-Hartman, linux-wireless,
	linux-kernel, linux-i2c, linux-bluetooth, iommu, Daniel Vetter,
	Sudeep Holla, linux-fsdevel, Paolo Bonzini, Johannes Berg,
	Enrico Weigelt, metux IT consult, David S. Miller, Joerg Roedel

On 13-10-21, 06:55, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-

Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>

-- 
viresh
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 11:00   ` Viresh Kumar
  0 siblings, 0 replies; 60+ messages in thread
From: Viresh Kumar @ 2021-10-13 11:00 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, Bjorn Andersson, netdev,
	Gerd Hoffmann, linux-scsi, Will Deacon, v9fs-developer,
	Anton Ivanov, Jean-Philippe Brucker, Linus Walleij, Dave Jiang,
	Herbert Xu, linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Gonglei, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Vivek Goyal,
	Stefano Garzarella, Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann,
	Amit Shah, Eric Van Hensbergen, Marcel Holtmann, linux-um,
	linux-crypto, linux-block, Vishal Verma, Luiz Augusto von Dentz,
	Matt Mackall, Dan Williams, Cristian Marussi, Jens Axboe,
	Jie Deng, Mathieu Poirier, linux-gpio, Greg Kroah-Hartman,
	linux-wireless, linux-kernel, linux-i2c, linux-bluetooth, iommu,
	Anton Yakovlev, Daniel Vetter, Sudeep Holla, linux-fsdevel,
	Paolo Bonzini, Johannes Berg, Enrico Weigelt, metux IT consult,
	David S. Miller, Joerg Roedel

On 13-10-21, 06:55, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-

Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>

-- 
viresh

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
  2021-10-13 10:55 ` Michael S. Tsirkin
  (?)
  (?)
@ 2021-10-13 11:03   ` David Hildenbrand
  -1 siblings, 0 replies; 60+ messages in thread
From: David Hildenbrand @ 2021-10-13 11:03 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel
  Cc: Jeff Dike, Richard Weinberger, Anton Ivanov, Jason Wang,
	Paolo Bonzini, Stefan Hajnoczi, Jens Axboe, Marcel Holtmann,
	Johan Hedberg, Luiz Augusto von Dentz, Matt Mackall, Herbert Xu,
	Amit Shah, Arnd Bergmann, Greg Kroah-Hartman, Gonglei,
	David S. Miller, Sudeep Holla, Cristian Marussi, Enrico Weigelt,
	metux IT consult, Viresh Kumar, Linus Walleij,
	Bartosz Golaszewski, David Airlie, Gerd Hoffmann, Daniel Vetter,
	Jie Deng, Jean-Philippe Brucker, Joerg Roedel, Will Deacon,
	Jakub Kicinski, Johannes Berg, Kalle Valo, Dan Williams,
	Vishal Verma, Dave Jiang, Ira Weiny, Ohad Ben-Cohen,
	Bjorn Andersson, Mathieu Poirier, James E.J. Bottomley,
	Martin K. Petersen, Vivek Goyal, Miklos Szeredi,
	Eric Van Hensbergen, Latchesar Ionkov, Dominique Martinet,
	Stefano Garzarella, Anton Yakovlev, Jaroslav Kysela,
	Takashi Iwai, linux-um, virtualization, linux-block,
	linux-bluetooth, linux-crypto, linux-arm-kernel, linux-gpio,
	dri-devel, linux-i2c, iommu, netdev, linux-wireless, nvdimm,
	linux-remoteproc, linux-scsi, linux-fsdevel, v9fs-developer, kvm,
	alsa-devel

On 13.10.21 12:55, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>   arch/um/drivers/virt-pci.c                 | 2 +-
>   drivers/block/virtio_blk.c                 | 4 ++--
>   drivers/bluetooth/virtio_bt.c              | 2 +-
>   drivers/char/hw_random/virtio-rng.c        | 2 +-
>   drivers/char/virtio_console.c              | 4 ++--
>   drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>   drivers/firmware/arm_scmi/virtio.c         | 2 +-
>   drivers/gpio/gpio-virtio.c                 | 2 +-
>   drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>   drivers/i2c/busses/i2c-virtio.c            | 2 +-
>   drivers/iommu/virtio-iommu.c               | 2 +-
>   drivers/net/caif/caif_virtio.c             | 2 +-
>   drivers/net/virtio_net.c                   | 4 ++--
>   drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>   drivers/nvdimm/virtio_pmem.c               | 2 +-
>   drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>   drivers/scsi/virtio_scsi.c                 | 2 +-
>   drivers/virtio/virtio.c                    | 5 +++++
>   drivers/virtio/virtio_balloon.c            | 2 +-
>   drivers/virtio/virtio_input.c              | 2 +-
>   drivers/virtio/virtio_mem.c                | 2 +-
>   fs/fuse/virtio_fs.c                        | 4 ++--
>   include/linux/virtio.h                     | 1 +
>   net/9p/trans_virtio.c                      | 2 +-
>   net/vmw_vsock/virtio_transport.c           | 4 ++--
>   sound/virtio/virtio_card.c                 | 4 ++--
>   26 files changed, 39 insertions(+), 33 deletions(-)
> 
> diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
> index c08066633023..22c4d87c9c15 100644
> --- a/arch/um/drivers/virt-pci.c
> +++ b/arch/um/drivers/virt-pci.c
> @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
>   	int i;
>   
>           /* Stop all virtqueues */
> -        vdev->config->reset(vdev);
> +        virtio_reset_device(vdev);
>           vdev->config->del_vqs(vdev);

Nit: virtio_device_reset()?

Because I see:

int virtio_device_freeze(struct virtio_device *dev);
int virtio_device_restore(struct virtio_device *dev);
void virtio_device_ready(struct virtio_device *dev)

But well, there is:
void virtio_break_device(struct virtio_device *dev);

-- 
Thanks,

David / dhildenb


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 11:03   ` David Hildenbrand
  0 siblings, 0 replies; 60+ messages in thread
From: David Hildenbrand @ 2021-10-13 11:03 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel
  Cc: Latchesar Ionkov, nvdimm, v9fs-developer, Stefan Hajnoczi, kvm,
	Dominique Martinet, David Airlie, Viresh Kumar, Linus Walleij,
	linux-remoteproc, alsa-devel, dri-devel, netdev, Gerd Hoffmann,
	linux-scsi, Will Deacon, Anton Ivanov, Jean-Philippe Brucker,
	Dave Jiang, Herbert Xu, linux-arm-kernel, Miklos Szeredi,
	Richard Weinberger, Bartosz Golaszewski, Gonglei, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Marcel Holtmann, Vivek Goyal,
	Stefano Garzarella, Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann,
	Amit Shah, Eric Van Hensbergen, Jeff Dike, linux-um,
	linux-crypto, linux-block, Vishal Verma, Luiz Augusto von Dentz,
	Matt Mackall, Dan Williams, Jaroslav Kysela, Cristian Marussi,
	Jens Axboe, Jie Deng, Mathieu Poirier, linux-gpio,
	Greg Kroah-Hartman, Jason Wang, linux-wireless, Takashi Iwai,
	linux-i2c, linux-bluetooth, iommu, Anton Yakovlev, Daniel Vetter,
	Sudeep Holla, linux-fsdevel, Paolo Bonzini, Johannes Berg,
	Enrico Weigelt, metux IT consult, David S. Miller

On 13.10.21 12:55, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>   arch/um/drivers/virt-pci.c                 | 2 +-
>   drivers/block/virtio_blk.c                 | 4 ++--
>   drivers/bluetooth/virtio_bt.c              | 2 +-
>   drivers/char/hw_random/virtio-rng.c        | 2 +-
>   drivers/char/virtio_console.c              | 4 ++--
>   drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>   drivers/firmware/arm_scmi/virtio.c         | 2 +-
>   drivers/gpio/gpio-virtio.c                 | 2 +-
>   drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>   drivers/i2c/busses/i2c-virtio.c            | 2 +-
>   drivers/iommu/virtio-iommu.c               | 2 +-
>   drivers/net/caif/caif_virtio.c             | 2 +-
>   drivers/net/virtio_net.c                   | 4 ++--
>   drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>   drivers/nvdimm/virtio_pmem.c               | 2 +-
>   drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>   drivers/scsi/virtio_scsi.c                 | 2 +-
>   drivers/virtio/virtio.c                    | 5 +++++
>   drivers/virtio/virtio_balloon.c            | 2 +-
>   drivers/virtio/virtio_input.c              | 2 +-
>   drivers/virtio/virtio_mem.c                | 2 +-
>   fs/fuse/virtio_fs.c                        | 4 ++--
>   include/linux/virtio.h                     | 1 +
>   net/9p/trans_virtio.c                      | 2 +-
>   net/vmw_vsock/virtio_transport.c           | 4 ++--
>   sound/virtio/virtio_card.c                 | 4 ++--
>   26 files changed, 39 insertions(+), 33 deletions(-)
> 
> diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
> index c08066633023..22c4d87c9c15 100644
> --- a/arch/um/drivers/virt-pci.c
> +++ b/arch/um/drivers/virt-pci.c
> @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
>   	int i;
>   
>           /* Stop all virtqueues */
> -        vdev->config->reset(vdev);
> +        virtio_reset_device(vdev);
>           vdev->config->del_vqs(vdev);

Nit: virtio_device_reset()?

Because I see:

int virtio_device_freeze(struct virtio_device *dev);
int virtio_device_restore(struct virtio_device *dev);
void virtio_device_ready(struct virtio_device *dev)

But well, there is:
void virtio_break_device(struct virtio_device *dev);

-- 
Thanks,

David / dhildenb

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 11:03   ` David Hildenbrand
  0 siblings, 0 replies; 60+ messages in thread
From: David Hildenbrand @ 2021-10-13 11:03 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel
  Cc: nvdimm, v9fs-developer, Stefan Hajnoczi, kvm, David Airlie,
	Viresh Kumar, Linus Walleij, linux-remoteproc, alsa-devel,
	dri-devel, Bjorn Andersson, netdev, linux-scsi, Will Deacon,
	Anton Ivanov, Jean-Philippe Brucker, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Kalle Valo, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Marcel Holtmann, Vivek Goyal, Ohad Ben-Cohen, Johan Hedberg,
	Arnd Bergmann, Amit Shah, Eric Van Hensbergen, Jeff Dike,
	linux-um, linux-crypto, linux-block, Vishal Verma,
	Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Jaroslav Kysela, Cristian Marussi, Jens Axboe, Mathieu Poirier,
	linux-gpio, Greg Kroah-Hartman, linux-wireless, Takashi Iwai,
	linux-i2c, linux-bluetooth, iommu, Daniel Vetter, Sudeep Holla,
	linux-fsdevel, Paolo Bonzini, Johannes Berg, Enrico Weigelt,
	metux IT consult, David S. Miller, Joerg Roedel

On 13.10.21 12:55, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>   arch/um/drivers/virt-pci.c                 | 2 +-
>   drivers/block/virtio_blk.c                 | 4 ++--
>   drivers/bluetooth/virtio_bt.c              | 2 +-
>   drivers/char/hw_random/virtio-rng.c        | 2 +-
>   drivers/char/virtio_console.c              | 4 ++--
>   drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>   drivers/firmware/arm_scmi/virtio.c         | 2 +-
>   drivers/gpio/gpio-virtio.c                 | 2 +-
>   drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>   drivers/i2c/busses/i2c-virtio.c            | 2 +-
>   drivers/iommu/virtio-iommu.c               | 2 +-
>   drivers/net/caif/caif_virtio.c             | 2 +-
>   drivers/net/virtio_net.c                   | 4 ++--
>   drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>   drivers/nvdimm/virtio_pmem.c               | 2 +-
>   drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>   drivers/scsi/virtio_scsi.c                 | 2 +-
>   drivers/virtio/virtio.c                    | 5 +++++
>   drivers/virtio/virtio_balloon.c            | 2 +-
>   drivers/virtio/virtio_input.c              | 2 +-
>   drivers/virtio/virtio_mem.c                | 2 +-
>   fs/fuse/virtio_fs.c                        | 4 ++--
>   include/linux/virtio.h                     | 1 +
>   net/9p/trans_virtio.c                      | 2 +-
>   net/vmw_vsock/virtio_transport.c           | 4 ++--
>   sound/virtio/virtio_card.c                 | 4 ++--
>   26 files changed, 39 insertions(+), 33 deletions(-)
> 
> diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
> index c08066633023..22c4d87c9c15 100644
> --- a/arch/um/drivers/virt-pci.c
> +++ b/arch/um/drivers/virt-pci.c
> @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
>   	int i;
>   
>           /* Stop all virtqueues */
> -        vdev->config->reset(vdev);
> +        virtio_reset_device(vdev);
>           vdev->config->del_vqs(vdev);

Nit: virtio_device_reset()?

Because I see:

int virtio_device_freeze(struct virtio_device *dev);
int virtio_device_restore(struct virtio_device *dev);
void virtio_device_ready(struct virtio_device *dev)

But well, there is:
void virtio_break_device(struct virtio_device *dev);

-- 
Thanks,

David / dhildenb

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 11:03   ` David Hildenbrand
  0 siblings, 0 replies; 60+ messages in thread
From: David Hildenbrand @ 2021-10-13 11:03 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel
  Cc: Latchesar Ionkov, nvdimm, v9fs-developer, Stefan Hajnoczi, kvm,
	Dominique Martinet, David Airlie, Viresh Kumar, Linus Walleij,
	linux-remoteproc, alsa-devel, dri-devel, Bjorn Andersson, netdev,
	Gerd Hoffmann, linux-scsi, Will Deacon, Anton Ivanov,
	Jean-Philippe Brucker, Dave Jiang, Herbert Xu, linux-arm-kernel,
	Miklos Szeredi, Richard Weinberger, Bartosz Golaszewski, Gonglei,
	Kalle Valo, Martin K. Petersen, James E.J. Bottomley,
	Jakub Kicinski, Ira Weiny, virtualization, Marcel Holtmann,
	Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen, Johan Hedberg,
	Arnd Bergmann, Amit Shah, Eric Van Hensbergen, Jeff Dike,
	linux-um, linux-crypto, linux-block, Vishal Verma,
	Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Cristian Marussi, Jens Axboe, Jie Deng, Mathieu Poirier,
	linux-gpio, Greg Kroah-Hartman, Jason Wang, linux-wireless,
	Takashi Iwai, linux-i2c, linux-bluetooth, iommu, Anton Yakovlev,
	Daniel Vetter, Sudeep Holla, linux-fsdevel, Paolo Bonzini,
	Johannes Berg, Enrico Weigelt, metux IT consult, David S. Miller,
	Joerg Roedel

On 13.10.21 12:55, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>   arch/um/drivers/virt-pci.c                 | 2 +-
>   drivers/block/virtio_blk.c                 | 4 ++--
>   drivers/bluetooth/virtio_bt.c              | 2 +-
>   drivers/char/hw_random/virtio-rng.c        | 2 +-
>   drivers/char/virtio_console.c              | 4 ++--
>   drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>   drivers/firmware/arm_scmi/virtio.c         | 2 +-
>   drivers/gpio/gpio-virtio.c                 | 2 +-
>   drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>   drivers/i2c/busses/i2c-virtio.c            | 2 +-
>   drivers/iommu/virtio-iommu.c               | 2 +-
>   drivers/net/caif/caif_virtio.c             | 2 +-
>   drivers/net/virtio_net.c                   | 4 ++--
>   drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>   drivers/nvdimm/virtio_pmem.c               | 2 +-
>   drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>   drivers/scsi/virtio_scsi.c                 | 2 +-
>   drivers/virtio/virtio.c                    | 5 +++++
>   drivers/virtio/virtio_balloon.c            | 2 +-
>   drivers/virtio/virtio_input.c              | 2 +-
>   drivers/virtio/virtio_mem.c                | 2 +-
>   fs/fuse/virtio_fs.c                        | 4 ++--
>   include/linux/virtio.h                     | 1 +
>   net/9p/trans_virtio.c                      | 2 +-
>   net/vmw_vsock/virtio_transport.c           | 4 ++--
>   sound/virtio/virtio_card.c                 | 4 ++--
>   26 files changed, 39 insertions(+), 33 deletions(-)
> 
> diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
> index c08066633023..22c4d87c9c15 100644
> --- a/arch/um/drivers/virt-pci.c
> +++ b/arch/um/drivers/virt-pci.c
> @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
>   	int i;
>   
>           /* Stop all virtqueues */
> -        vdev->config->reset(vdev);
> +        virtio_reset_device(vdev);
>           vdev->config->del_vqs(vdev);

Nit: virtio_device_reset()?

Because I see:

int virtio_device_freeze(struct virtio_device *dev);
int virtio_device_restore(struct virtio_device *dev);
void virtio_device_ready(struct virtio_device *dev)

But well, there is:
void virtio_break_device(struct virtio_device *dev);

-- 
Thanks,

David / dhildenb


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
  2021-10-13 11:03   ` David Hildenbrand
  (?)
  (?)
@ 2021-10-13 12:17     ` Michael S. Tsirkin
  -1 siblings, 0 replies; 60+ messages in thread
From: Michael S. Tsirkin @ 2021-10-13 12:17 UTC (permalink / raw)
  To: David Hildenbrand
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Stefan Hajnoczi, Jens Axboe,
	Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
	Matt Mackall, Herbert Xu, Amit Shah, Arnd Bergmann,
	Greg Kroah-Hartman, Gonglei, David S. Miller, Sudeep Holla,
	Cristian Marussi, Enrico Weigelt, metux IT consult, Viresh Kumar,
	Linus Walleij, Bartosz Golaszewski, David Airlie, Gerd Hoffmann,
	Daniel Vetter, Jie Deng, Jean-Philippe Brucker, Joerg Roedel,
	Will Deacon, Jakub Kicinski, Johannes Berg, Kalle Valo,
	Dan Williams, Vishal Verma, Dave Jiang, Ira Weiny,
	Ohad Ben-Cohen, Bjorn Andersson, Mathieu Poirier,
	James E.J. Bottomley, Martin K. Petersen, Vivek Goyal,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	nvdimm, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

On Wed, Oct 13, 2021 at 01:03:46PM +0200, David Hildenbrand wrote:
> On 13.10.21 12:55, Michael S. Tsirkin wrote:
> > This will enable cleanups down the road.
> > The idea is to disable cbs, then add "flush_queued_cbs" callback
> > as a parameter, this way drivers can flush any work
> > queued after callbacks have been disabled.
> > 
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > ---
> >   arch/um/drivers/virt-pci.c                 | 2 +-
> >   drivers/block/virtio_blk.c                 | 4 ++--
> >   drivers/bluetooth/virtio_bt.c              | 2 +-
> >   drivers/char/hw_random/virtio-rng.c        | 2 +-
> >   drivers/char/virtio_console.c              | 4 ++--
> >   drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
> >   drivers/firmware/arm_scmi/virtio.c         | 2 +-
> >   drivers/gpio/gpio-virtio.c                 | 2 +-
> >   drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
> >   drivers/i2c/busses/i2c-virtio.c            | 2 +-
> >   drivers/iommu/virtio-iommu.c               | 2 +-
> >   drivers/net/caif/caif_virtio.c             | 2 +-
> >   drivers/net/virtio_net.c                   | 4 ++--
> >   drivers/net/wireless/mac80211_hwsim.c      | 2 +-
> >   drivers/nvdimm/virtio_pmem.c               | 2 +-
> >   drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
> >   drivers/scsi/virtio_scsi.c                 | 2 +-
> >   drivers/virtio/virtio.c                    | 5 +++++
> >   drivers/virtio/virtio_balloon.c            | 2 +-
> >   drivers/virtio/virtio_input.c              | 2 +-
> >   drivers/virtio/virtio_mem.c                | 2 +-
> >   fs/fuse/virtio_fs.c                        | 4 ++--
> >   include/linux/virtio.h                     | 1 +
> >   net/9p/trans_virtio.c                      | 2 +-
> >   net/vmw_vsock/virtio_transport.c           | 4 ++--
> >   sound/virtio/virtio_card.c                 | 4 ++--
> >   26 files changed, 39 insertions(+), 33 deletions(-)
> > 
> > diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
> > index c08066633023..22c4d87c9c15 100644
> > --- a/arch/um/drivers/virt-pci.c
> > +++ b/arch/um/drivers/virt-pci.c
> > @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
> >   	int i;
> >           /* Stop all virtqueues */
> > -        vdev->config->reset(vdev);
> > +        virtio_reset_device(vdev);
> >           vdev->config->del_vqs(vdev);
> 
> Nit: virtio_device_reset()?
> 
> Because I see:
> 
> int virtio_device_freeze(struct virtio_device *dev);
> int virtio_device_restore(struct virtio_device *dev);
> void virtio_device_ready(struct virtio_device *dev)
> 
> But well, there is:
> void virtio_break_device(struct virtio_device *dev);

Exactly. I don't know what's best, so I opted for plain english :)


> -- 
> Thanks,
> 
> David / dhildenb


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 12:17     ` Michael S. Tsirkin
  0 siblings, 0 replies; 60+ messages in thread
From: Michael S. Tsirkin @ 2021-10-13 12:17 UTC (permalink / raw)
  To: David Hildenbrand
  Cc: Latchesar Ionkov, nvdimm, v9fs-developer, Stefan Hajnoczi, kvm,
	Dominique Martinet, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, netdev, Gerd Hoffmann,
	linux-scsi, Will Deacon, Anton Ivanov, Jean-Philippe Brucker,
	Linus Walleij, Dave Jiang, Herbert Xu, linux-arm-kernel,
	Miklos Szeredi, Richard Weinberger, Bartosz Golaszewski,
	Takashi Iwai, Gonglei, Kalle Valo, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Jeff Dike, Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	Marcel Holtmann, linux-um, linux-crypto, linux-block,
	Vishal Verma, Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Jaroslav Kysela, Cristian Marussi, Jens Axboe, Jie Deng,
	Mathieu Poirier, linux-gpio, Greg Kroah-Hartman, linux-wireless,
	linux-kernel, linux-i2c, linux-bluetooth, iommu, Anton Yakovlev,
	Daniel Vetter, Sudeep Holla, linux-fsdevel, Paolo Bonzini,
	Johannes Berg, Enrico Weigelt, metux IT consult, David S. Miller

On Wed, Oct 13, 2021 at 01:03:46PM +0200, David Hildenbrand wrote:
> On 13.10.21 12:55, Michael S. Tsirkin wrote:
> > This will enable cleanups down the road.
> > The idea is to disable cbs, then add "flush_queued_cbs" callback
> > as a parameter, this way drivers can flush any work
> > queued after callbacks have been disabled.
> > 
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > ---
> >   arch/um/drivers/virt-pci.c                 | 2 +-
> >   drivers/block/virtio_blk.c                 | 4 ++--
> >   drivers/bluetooth/virtio_bt.c              | 2 +-
> >   drivers/char/hw_random/virtio-rng.c        | 2 +-
> >   drivers/char/virtio_console.c              | 4 ++--
> >   drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
> >   drivers/firmware/arm_scmi/virtio.c         | 2 +-
> >   drivers/gpio/gpio-virtio.c                 | 2 +-
> >   drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
> >   drivers/i2c/busses/i2c-virtio.c            | 2 +-
> >   drivers/iommu/virtio-iommu.c               | 2 +-
> >   drivers/net/caif/caif_virtio.c             | 2 +-
> >   drivers/net/virtio_net.c                   | 4 ++--
> >   drivers/net/wireless/mac80211_hwsim.c      | 2 +-
> >   drivers/nvdimm/virtio_pmem.c               | 2 +-
> >   drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
> >   drivers/scsi/virtio_scsi.c                 | 2 +-
> >   drivers/virtio/virtio.c                    | 5 +++++
> >   drivers/virtio/virtio_balloon.c            | 2 +-
> >   drivers/virtio/virtio_input.c              | 2 +-
> >   drivers/virtio/virtio_mem.c                | 2 +-
> >   fs/fuse/virtio_fs.c                        | 4 ++--
> >   include/linux/virtio.h                     | 1 +
> >   net/9p/trans_virtio.c                      | 2 +-
> >   net/vmw_vsock/virtio_transport.c           | 4 ++--
> >   sound/virtio/virtio_card.c                 | 4 ++--
> >   26 files changed, 39 insertions(+), 33 deletions(-)
> > 
> > diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
> > index c08066633023..22c4d87c9c15 100644
> > --- a/arch/um/drivers/virt-pci.c
> > +++ b/arch/um/drivers/virt-pci.c
> > @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
> >   	int i;
> >           /* Stop all virtqueues */
> > -        vdev->config->reset(vdev);
> > +        virtio_reset_device(vdev);
> >           vdev->config->del_vqs(vdev);
> 
> Nit: virtio_device_reset()?
> 
> Because I see:
> 
> int virtio_device_freeze(struct virtio_device *dev);
> int virtio_device_restore(struct virtio_device *dev);
> void virtio_device_ready(struct virtio_device *dev)
> 
> But well, there is:
> void virtio_break_device(struct virtio_device *dev);

Exactly. I don't know what's best, so I opted for plain english :)


> -- 
> Thanks,
> 
> David / dhildenb

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 12:17     ` Michael S. Tsirkin
  0 siblings, 0 replies; 60+ messages in thread
From: Michael S. Tsirkin @ 2021-10-13 12:17 UTC (permalink / raw)
  To: David Hildenbrand
  Cc: nvdimm, v9fs-developer, Stefan Hajnoczi, kvm, David Airlie,
	Viresh Kumar, linux-remoteproc, alsa-devel, dri-devel,
	Bjorn Andersson, netdev, linux-scsi, Will Deacon, Anton Ivanov,
	Jean-Philippe Brucker, Linus Walleij, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Vivek Goyal,
	Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann, Amit Shah,
	Eric Van Hensbergen, Marcel Holtmann, linux-um, linux-crypto,
	linux-block, Vishal Verma, Luiz Augusto von Dentz, Matt Mackall,
	Dan Williams, Jaroslav Kysela, Cristian Marussi, Jens Axboe,
	Mathieu Poirier, linux-gpio, Greg Kroah-Hartman, linux-wireless,
	linux-kernel, linux-i2c, linux-bluetooth, iommu, Daniel Vetter,
	Sudeep Holla, linux-fsdevel, Paolo Bonzini, Johannes Berg,
	Enrico Weigelt, metux IT consult, David S. Miller, Joerg Roedel

On Wed, Oct 13, 2021 at 01:03:46PM +0200, David Hildenbrand wrote:
> On 13.10.21 12:55, Michael S. Tsirkin wrote:
> > This will enable cleanups down the road.
> > The idea is to disable cbs, then add "flush_queued_cbs" callback
> > as a parameter, this way drivers can flush any work
> > queued after callbacks have been disabled.
> > 
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > ---
> >   arch/um/drivers/virt-pci.c                 | 2 +-
> >   drivers/block/virtio_blk.c                 | 4 ++--
> >   drivers/bluetooth/virtio_bt.c              | 2 +-
> >   drivers/char/hw_random/virtio-rng.c        | 2 +-
> >   drivers/char/virtio_console.c              | 4 ++--
> >   drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
> >   drivers/firmware/arm_scmi/virtio.c         | 2 +-
> >   drivers/gpio/gpio-virtio.c                 | 2 +-
> >   drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
> >   drivers/i2c/busses/i2c-virtio.c            | 2 +-
> >   drivers/iommu/virtio-iommu.c               | 2 +-
> >   drivers/net/caif/caif_virtio.c             | 2 +-
> >   drivers/net/virtio_net.c                   | 4 ++--
> >   drivers/net/wireless/mac80211_hwsim.c      | 2 +-
> >   drivers/nvdimm/virtio_pmem.c               | 2 +-
> >   drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
> >   drivers/scsi/virtio_scsi.c                 | 2 +-
> >   drivers/virtio/virtio.c                    | 5 +++++
> >   drivers/virtio/virtio_balloon.c            | 2 +-
> >   drivers/virtio/virtio_input.c              | 2 +-
> >   drivers/virtio/virtio_mem.c                | 2 +-
> >   fs/fuse/virtio_fs.c                        | 4 ++--
> >   include/linux/virtio.h                     | 1 +
> >   net/9p/trans_virtio.c                      | 2 +-
> >   net/vmw_vsock/virtio_transport.c           | 4 ++--
> >   sound/virtio/virtio_card.c                 | 4 ++--
> >   26 files changed, 39 insertions(+), 33 deletions(-)
> > 
> > diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
> > index c08066633023..22c4d87c9c15 100644
> > --- a/arch/um/drivers/virt-pci.c
> > +++ b/arch/um/drivers/virt-pci.c
> > @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
> >   	int i;
> >           /* Stop all virtqueues */
> > -        vdev->config->reset(vdev);
> > +        virtio_reset_device(vdev);
> >           vdev->config->del_vqs(vdev);
> 
> Nit: virtio_device_reset()?
> 
> Because I see:
> 
> int virtio_device_freeze(struct virtio_device *dev);
> int virtio_device_restore(struct virtio_device *dev);
> void virtio_device_ready(struct virtio_device *dev)
> 
> But well, there is:
> void virtio_break_device(struct virtio_device *dev);

Exactly. I don't know what's best, so I opted for plain english :)


> -- 
> Thanks,
> 
> David / dhildenb

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 12:17     ` Michael S. Tsirkin
  0 siblings, 0 replies; 60+ messages in thread
From: Michael S. Tsirkin @ 2021-10-13 12:17 UTC (permalink / raw)
  To: David Hildenbrand
  Cc: Latchesar Ionkov, nvdimm, v9fs-developer, Stefan Hajnoczi, kvm,
	Dominique Martinet, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, Bjorn Andersson, netdev,
	Gerd Hoffmann, linux-scsi, Will Deacon, Anton Ivanov,
	Jean-Philippe Brucker, Linus Walleij, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Gonglei, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Vivek Goyal,
	Stefano Garzarella, Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann,
	Amit Shah, Eric Van Hensbergen, Marcel Holtmann, linux-um,
	linux-crypto, linux-block, Vishal Verma, Luiz Augusto von Dentz,
	Matt Mackall, Dan Williams, Cristian Marussi, Jens Axboe,
	Jie Deng, Mathieu Poirier, linux-gpio, Greg Kroah-Hartman,
	linux-wireless, linux-kernel, linux-i2c, linux-bluetooth, iommu,
	Anton Yakovlev, Daniel Vetter, Sudeep Holla, linux-fsdevel,
	Paolo Bonzini, Johannes Berg, Enrico Weigelt, metux IT consult,
	David S. Miller, Joerg Roedel

On Wed, Oct 13, 2021 at 01:03:46PM +0200, David Hildenbrand wrote:
> On 13.10.21 12:55, Michael S. Tsirkin wrote:
> > This will enable cleanups down the road.
> > The idea is to disable cbs, then add "flush_queued_cbs" callback
> > as a parameter, this way drivers can flush any work
> > queued after callbacks have been disabled.
> > 
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > ---
> >   arch/um/drivers/virt-pci.c                 | 2 +-
> >   drivers/block/virtio_blk.c                 | 4 ++--
> >   drivers/bluetooth/virtio_bt.c              | 2 +-
> >   drivers/char/hw_random/virtio-rng.c        | 2 +-
> >   drivers/char/virtio_console.c              | 4 ++--
> >   drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
> >   drivers/firmware/arm_scmi/virtio.c         | 2 +-
> >   drivers/gpio/gpio-virtio.c                 | 2 +-
> >   drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
> >   drivers/i2c/busses/i2c-virtio.c            | 2 +-
> >   drivers/iommu/virtio-iommu.c               | 2 +-
> >   drivers/net/caif/caif_virtio.c             | 2 +-
> >   drivers/net/virtio_net.c                   | 4 ++--
> >   drivers/net/wireless/mac80211_hwsim.c      | 2 +-
> >   drivers/nvdimm/virtio_pmem.c               | 2 +-
> >   drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
> >   drivers/scsi/virtio_scsi.c                 | 2 +-
> >   drivers/virtio/virtio.c                    | 5 +++++
> >   drivers/virtio/virtio_balloon.c            | 2 +-
> >   drivers/virtio/virtio_input.c              | 2 +-
> >   drivers/virtio/virtio_mem.c                | 2 +-
> >   fs/fuse/virtio_fs.c                        | 4 ++--
> >   include/linux/virtio.h                     | 1 +
> >   net/9p/trans_virtio.c                      | 2 +-
> >   net/vmw_vsock/virtio_transport.c           | 4 ++--
> >   sound/virtio/virtio_card.c                 | 4 ++--
> >   26 files changed, 39 insertions(+), 33 deletions(-)
> > 
> > diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
> > index c08066633023..22c4d87c9c15 100644
> > --- a/arch/um/drivers/virt-pci.c
> > +++ b/arch/um/drivers/virt-pci.c
> > @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
> >   	int i;
> >           /* Stop all virtqueues */
> > -        vdev->config->reset(vdev);
> > +        virtio_reset_device(vdev);
> >           vdev->config->del_vqs(vdev);
> 
> Nit: virtio_device_reset()?
> 
> Because I see:
> 
> int virtio_device_freeze(struct virtio_device *dev);
> int virtio_device_restore(struct virtio_device *dev);
> void virtio_device_ready(struct virtio_device *dev)
> 
> But well, there is:
> void virtio_break_device(struct virtio_device *dev);

Exactly. I don't know what's best, so I opted for plain english :)


> -- 
> Thanks,
> 
> David / dhildenb


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
  2021-10-13 10:55 ` Michael S. Tsirkin
  (?)
  (?)
@ 2021-10-13 13:16   ` Vivek Goyal
  -1 siblings, 0 replies; 60+ messages in thread
From: Vivek Goyal @ 2021-10-13 13:16 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Stefan Hajnoczi, Jens Axboe,
	Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
	Matt Mackall, Herbert Xu, Amit Shah, Arnd Bergmann,
	Greg Kroah-Hartman, Gonglei, David S. Miller, Sudeep Holla,
	Cristian Marussi, Enrico Weigelt, metux IT consult, Viresh Kumar,
	Linus Walleij, Bartosz Golaszewski, David Airlie, Gerd Hoffmann,
	Daniel Vetter, Jie Deng, Jean-Philippe Brucker, Joerg Roedel,
	Will Deacon, Jakub Kicinski, Johannes Berg, Kalle Valo,
	Dan Williams, Vishal Verma, Dave Jiang, Ira Weiny,
	Ohad Ben-Cohen, Bjorn Andersson, Mathieu Poirier,
	James E.J. Bottomley, Martin K. Petersen, David Hildenbrand,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	nvdimm, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--

fs/fuse/virtio_fs.c changes look good to me.

Reviewed-by: Vivek Goyal <vgoyal@redhat.com>

Vivek

[..]
> diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
> index 0ad89c6629d7..27c3b74070a2 100644
> --- a/fs/fuse/virtio_fs.c
> +++ b/fs/fuse/virtio_fs.c
> @@ -895,7 +895,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)
>  	return 0;
>  
>  out_vqs:
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
>  	virtio_fs_cleanup_vqs(vdev, fs);
>  	kfree(fs->vqs);
>  
> @@ -927,7 +927,7 @@ static void virtio_fs_remove(struct virtio_device *vdev)
>  	list_del_init(&fs->list);
>  	virtio_fs_stop_all_queues(fs);
>  	virtio_fs_drain_all_queues_locked(fs);
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
>  	virtio_fs_cleanup_vqs(vdev, fs);
>  
>  	vdev->priv = NULL;


Thanks
Vivek


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 13:16   ` Vivek Goyal
  0 siblings, 0 replies; 60+ messages in thread
From: Vivek Goyal @ 2021-10-13 13:16 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, v9fs-developer, Stefan Hajnoczi, kvm,
	David Hildenbrand, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, netdev, Gerd Hoffmann,
	linux-scsi, Will Deacon, Anton Ivanov, Jean-Philippe Brucker,
	Linus Walleij, Dave Jiang, Herbert Xu, linux-arm-kernel,
	Miklos Szeredi, Richard Weinberger, Bartosz Golaszewski,
	Takashi Iwai, Gonglei, Kalle Valo, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Jeff Dike, Dominique Martinet, Stefano Garzarella,
	Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann, Amit Shah,
	Eric Van Hensbergen, Marcel Holtmann, linux-um, linux-crypto,
	linux-block, Vishal Verma, Luiz Augusto von Dentz, Matt Mackall,
	Dan Williams, Jaroslav Kysela, Cristian Marussi, Jens Axboe,
	Jie Deng, Mathieu Poirier, linux-gpio, Greg Kroah-Hartman,
	linux-wireless, linux-kernel, linux-i2c, linux-bluetooth, iommu,
	Anton Yakovlev, Daniel Vetter, Sudeep Holla, linux-fsdevel,
	Paolo Bonzini, Johannes Berg, Enrico Weigelt, metux IT consult,
	David S. Miller

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--

fs/fuse/virtio_fs.c changes look good to me.

Reviewed-by: Vivek Goyal <vgoyal@redhat.com>

Vivek

[..]
> diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
> index 0ad89c6629d7..27c3b74070a2 100644
> --- a/fs/fuse/virtio_fs.c
> +++ b/fs/fuse/virtio_fs.c
> @@ -895,7 +895,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)
>  	return 0;
>  
>  out_vqs:
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
>  	virtio_fs_cleanup_vqs(vdev, fs);
>  	kfree(fs->vqs);
>  
> @@ -927,7 +927,7 @@ static void virtio_fs_remove(struct virtio_device *vdev)
>  	list_del_init(&fs->list);
>  	virtio_fs_stop_all_queues(fs);
>  	virtio_fs_drain_all_queues_locked(fs);
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
>  	virtio_fs_cleanup_vqs(vdev, fs);
>  
>  	vdev->priv = NULL;


Thanks
Vivek

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 13:16   ` Vivek Goyal
  0 siblings, 0 replies; 60+ messages in thread
From: Vivek Goyal @ 2021-10-13 13:16 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: nvdimm, v9fs-developer, Stefan Hajnoczi, kvm, David Airlie,
	Viresh Kumar, linux-remoteproc, alsa-devel, dri-devel,
	Bjorn Andersson, netdev, linux-scsi, Will Deacon, Anton Ivanov,
	Jean-Philippe Brucker, Linus Walleij, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	Marcel Holtmann, linux-um, linux-crypto, linux-block,
	Vishal Verma, Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Jaroslav Kysela, Cristian Marussi, Jens Axboe, Mathieu Poirier,
	linux-gpio, Greg Kroah-Hartman, linux-wireless, linux-kernel,
	linux-i2c, linux-bluetooth, iommu, Daniel Vetter, Sudeep Holla,
	linux-fsdevel, Paolo Bonzini, Johannes Berg, Enrico Weigelt,
	metux IT consult, David S. Miller, Joerg Roedel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--

fs/fuse/virtio_fs.c changes look good to me.

Reviewed-by: Vivek Goyal <vgoyal@redhat.com>

Vivek

[..]
> diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
> index 0ad89c6629d7..27c3b74070a2 100644
> --- a/fs/fuse/virtio_fs.c
> +++ b/fs/fuse/virtio_fs.c
> @@ -895,7 +895,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)
>  	return 0;
>  
>  out_vqs:
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
>  	virtio_fs_cleanup_vqs(vdev, fs);
>  	kfree(fs->vqs);
>  
> @@ -927,7 +927,7 @@ static void virtio_fs_remove(struct virtio_device *vdev)
>  	list_del_init(&fs->list);
>  	virtio_fs_stop_all_queues(fs);
>  	virtio_fs_drain_all_queues_locked(fs);
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
>  	virtio_fs_cleanup_vqs(vdev, fs);
>  
>  	vdev->priv = NULL;


Thanks
Vivek

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 13:16   ` Vivek Goyal
  0 siblings, 0 replies; 60+ messages in thread
From: Vivek Goyal @ 2021-10-13 13:16 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, v9fs-developer, Stefan Hajnoczi, kvm,
	David Hildenbrand, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, Bjorn Andersson, netdev,
	Gerd Hoffmann, linux-scsi, Will Deacon, Anton Ivanov,
	Jean-Philippe Brucker, Linus Walleij, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Gonglei, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Dominique Martinet,
	Stefano Garzarella, Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann,
	Amit Shah, Eric Van Hensbergen, Marcel Holtmann, linux-um,
	linux-crypto, linux-block, Vishal Verma, Luiz Augusto von Dentz,
	Matt Mackall, Dan Williams, Cristian Marussi, Jens Axboe,
	Jie Deng, Mathieu Poirier, linux-gpio, Greg Kroah-Hartman,
	linux-wireless, linux-kernel, linux-i2c, linux-bluetooth, iommu,
	Anton Yakovlev, Daniel Vetter, Sudeep Holla, linux-fsdevel,
	Paolo Bonzini, Johannes Berg, Enrico Weigelt, metux IT consult,
	David S. Miller, Joerg Roedel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--

fs/fuse/virtio_fs.c changes look good to me.

Reviewed-by: Vivek Goyal <vgoyal@redhat.com>

Vivek

[..]
> diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
> index 0ad89c6629d7..27c3b74070a2 100644
> --- a/fs/fuse/virtio_fs.c
> +++ b/fs/fuse/virtio_fs.c
> @@ -895,7 +895,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)
>  	return 0;
>  
>  out_vqs:
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
>  	virtio_fs_cleanup_vqs(vdev, fs);
>  	kfree(fs->vqs);
>  
> @@ -927,7 +927,7 @@ static void virtio_fs_remove(struct virtio_device *vdev)
>  	list_del_init(&fs->list);
>  	virtio_fs_stop_all_queues(fs);
>  	virtio_fs_drain_all_queues_locked(fs);
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
>  	virtio_fs_cleanup_vqs(vdev, fs);
>  
>  	vdev->priv = NULL;


Thanks
Vivek


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
  2021-10-13 10:55 ` Michael S. Tsirkin
  (?)
  (?)
@ 2021-10-13 15:46   ` Mathieu Poirier
  -1 siblings, 0 replies; 60+ messages in thread
From: Mathieu Poirier @ 2021-10-13 15:46 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Stefan Hajnoczi, Jens Axboe,
	Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
	Matt Mackall, Herbert Xu, Amit Shah, Arnd Bergmann,
	Greg Kroah-Hartman, Gonglei, David S. Miller, Sudeep Holla,
	Cristian Marussi, Enrico Weigelt, metux IT consult, Viresh Kumar,
	Linus Walleij, Bartosz Golaszewski, David Airlie, Gerd Hoffmann,
	Daniel Vetter, Jie Deng, Jean-Philippe Brucker, Joerg Roedel,
	Will Deacon, Jakub Kicinski, Johannes Berg, Kalle Valo,
	Dan Williams, Vishal Verma, Dave Jiang, Ira Weiny,
	Ohad Ben-Cohen, Bjorn Andersson, James E.J. Bottomley,
	Martin K. Petersen, David Hildenbrand, Vivek Goyal,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	nvdimm, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)
> 
>  static struct virtio_driver virtio_pmem_driver = {
> diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
> index 8e49a3bacfc7..6a11952822df 100644
> --- a/drivers/rpmsg/virtio_rpmsg_bus.c
> +++ b/drivers/rpmsg/virtio_rpmsg_bus.c
> @@ -1015,7 +1015,7 @@ static void rpmsg_remove(struct virtio_device *vdev)
>  	size_t total_buf_space = vrp->num_bufs * vrp->buf_size;
>  	int ret;
>  
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
> 

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

>  	ret = device_for_each_child(&vdev->dev, NULL, rpmsg_remove_device);
>  	if (ret)

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 15:46   ` Mathieu Poirier
  0 siblings, 0 replies; 60+ messages in thread
From: Mathieu Poirier @ 2021-10-13 15:46 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, netdev, Gerd Hoffmann,
	linux-scsi, Will Deacon, v9fs-developer, Anton Ivanov,
	Jean-Philippe Brucker, Linus Walleij, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Gonglei, Kalle Valo,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Jeff Dike, Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	Marcel Holtmann, linux-um, linux-crypto, linux-block,
	Vishal Verma, Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Jaroslav Kysela, Cristian Marussi, Jens Axboe, Jie Deng,
	Martin K. Petersen, linux-gpio, Greg Kroah-Hartman,
	linux-wireless, linux-kernel, linux-i2c, linux-bluetooth, iommu,
	Anton Yakovlev, Daniel Vetter, Sudeep Holla, linux-fsdevel,
	Paolo Bonzini, Johannes Berg, Enrico Weigelt, metux IT consult,
	David S. Miller

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)
> 
>  static struct virtio_driver virtio_pmem_driver = {
> diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
> index 8e49a3bacfc7..6a11952822df 100644
> --- a/drivers/rpmsg/virtio_rpmsg_bus.c
> +++ b/drivers/rpmsg/virtio_rpmsg_bus.c
> @@ -1015,7 +1015,7 @@ static void rpmsg_remove(struct virtio_device *vdev)
>  	size_t total_buf_space = vrp->num_bufs * vrp->buf_size;
>  	int ret;
>  
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
> 

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

>  	ret = device_for_each_child(&vdev->dev, NULL, rpmsg_remove_device);
>  	if (ret)
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 15:46   ` Mathieu Poirier
  0 siblings, 0 replies; 60+ messages in thread
From: Mathieu Poirier @ 2021-10-13 15:46 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, Bjorn Andersson, netdev,
	Gerd Hoffmann, linux-scsi, Will Deacon, v9fs-developer,
	Anton Ivanov, Jean-Philippe Brucker, Linus Walleij, Dave Jiang,
	Herbert Xu, linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Gonglei, Kalle Valo,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Jeff Dike, Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	Marcel Holtmann, linux-um, linux-crypto, linux-block,
	Vishal Verma, Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Cristian Marussi, Jens Axboe, Jie Deng, Martin K. Petersen,
	linux-gpio, Greg Kroah-Hartman, linux-wireless, linux-kernel,
	linux-i2c, linux-bluetooth, iommu, Anton Yakovlev, Daniel Vetter,
	Sudeep Holla, linux-fsdevel, Paolo Bonzini, Johannes Berg,
	Enrico Weigelt, metux IT consult, David S. Miller, Joerg Roedel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)
> 
>  static struct virtio_driver virtio_pmem_driver = {
> diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
> index 8e49a3bacfc7..6a11952822df 100644
> --- a/drivers/rpmsg/virtio_rpmsg_bus.c
> +++ b/drivers/rpmsg/virtio_rpmsg_bus.c
> @@ -1015,7 +1015,7 @@ static void rpmsg_remove(struct virtio_device *vdev)
>  	size_t total_buf_space = vrp->num_bufs * vrp->buf_size;
>  	int ret;
>  
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
> 

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

>  	ret = device_for_each_child(&vdev->dev, NULL, rpmsg_remove_device);
>  	if (ret)

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 15:46   ` Mathieu Poirier
  0 siblings, 0 replies; 60+ messages in thread
From: Mathieu Poirier @ 2021-10-13 15:46 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Stefan Hajnoczi, Jens Axboe,
	Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
	Matt Mackall, Herbert Xu, Amit Shah, Arnd Bergmann,
	Greg Kroah-Hartman, Gonglei, David S. Miller, Sudeep Holla,
	Cristian Marussi, Enrico Weigelt, metux IT consult, Viresh Kumar,
	Linus Walleij, Bartosz Golaszewski, David Airlie, Gerd Hoffmann,
	Daniel Vetter, Jie Deng, Jean-Philippe Brucker, Joerg Roedel,
	Will Deacon, Jakub Kicinski, Johannes Berg, Kalle Valo,
	Dan Williams, Vishal Verma, Dave Jiang, Ira Weiny,
	Ohad Ben-Cohen, Bjorn Andersson, James E.J. Bottomley,
	Martin K. Petersen, David Hildenbrand, Vivek Goyal,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	nvdimm, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)
> 
>  static struct virtio_driver virtio_pmem_driver = {
> diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
> index 8e49a3bacfc7..6a11952822df 100644
> --- a/drivers/rpmsg/virtio_rpmsg_bus.c
> +++ b/drivers/rpmsg/virtio_rpmsg_bus.c
> @@ -1015,7 +1015,7 @@ static void rpmsg_remove(struct virtio_device *vdev)
>  	size_t total_buf_space = vrp->num_bufs * vrp->buf_size;
>  	int ret;
>  
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
> 

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

>  	ret = device_for_each_child(&vdev->dev, NULL, rpmsg_remove_device);
>  	if (ret)

_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
  2021-10-13 12:17     ` Michael S. Tsirkin
  (?)
  (?)
@ 2021-10-13 16:00       ` David Hildenbrand
  -1 siblings, 0 replies; 60+ messages in thread
From: David Hildenbrand @ 2021-10-13 16:00 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Stefan Hajnoczi, Jens Axboe,
	Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
	Matt Mackall, Herbert Xu, Amit Shah, Arnd Bergmann,
	Greg Kroah-Hartman, Gonglei, David S. Miller, Sudeep Holla,
	Cristian Marussi, Enrico Weigelt, metux IT consult, Viresh Kumar,
	Linus Walleij, Bartosz Golaszewski, David Airlie, Gerd Hoffmann,
	Daniel Vetter, Jie Deng, Jean-Philippe Brucker, Joerg Roedel,
	Will Deacon, Jakub Kicinski, Johannes Berg, Kalle Valo,
	Dan Williams, Vishal Verma, Dave Jiang, Ira Weiny,
	Ohad Ben-Cohen, Bjorn Andersson, Mathieu Poirier,
	James E.J. Bottomley, Martin K. Petersen, Vivek Goyal,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	nvdimm, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

On 13.10.21 14:17, Michael S. Tsirkin wrote:
> On Wed, Oct 13, 2021 at 01:03:46PM +0200, David Hildenbrand wrote:
>> On 13.10.21 12:55, Michael S. Tsirkin wrote:
>>> This will enable cleanups down the road.
>>> The idea is to disable cbs, then add "flush_queued_cbs" callback
>>> as a parameter, this way drivers can flush any work
>>> queued after callbacks have been disabled.
>>>
>>> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>>> ---
>>>   arch/um/drivers/virt-pci.c                 | 2 +-
>>>   drivers/block/virtio_blk.c                 | 4 ++--
>>>   drivers/bluetooth/virtio_bt.c              | 2 +-
>>>   drivers/char/hw_random/virtio-rng.c        | 2 +-
>>>   drivers/char/virtio_console.c              | 4 ++--
>>>   drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>>>   drivers/firmware/arm_scmi/virtio.c         | 2 +-
>>>   drivers/gpio/gpio-virtio.c                 | 2 +-
>>>   drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>>>   drivers/i2c/busses/i2c-virtio.c            | 2 +-
>>>   drivers/iommu/virtio-iommu.c               | 2 +-
>>>   drivers/net/caif/caif_virtio.c             | 2 +-
>>>   drivers/net/virtio_net.c                   | 4 ++--
>>>   drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>>>   drivers/nvdimm/virtio_pmem.c               | 2 +-
>>>   drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>>>   drivers/scsi/virtio_scsi.c                 | 2 +-
>>>   drivers/virtio/virtio.c                    | 5 +++++
>>>   drivers/virtio/virtio_balloon.c            | 2 +-
>>>   drivers/virtio/virtio_input.c              | 2 +-
>>>   drivers/virtio/virtio_mem.c                | 2 +-
>>>   fs/fuse/virtio_fs.c                        | 4 ++--
>>>   include/linux/virtio.h                     | 1 +
>>>   net/9p/trans_virtio.c                      | 2 +-
>>>   net/vmw_vsock/virtio_transport.c           | 4 ++--
>>>   sound/virtio/virtio_card.c                 | 4 ++--
>>>   26 files changed, 39 insertions(+), 33 deletions(-)
>>>
>>> diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
>>> index c08066633023..22c4d87c9c15 100644
>>> --- a/arch/um/drivers/virt-pci.c
>>> +++ b/arch/um/drivers/virt-pci.c
>>> @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
>>>   	int i;
>>>           /* Stop all virtqueues */
>>> -        vdev->config->reset(vdev);
>>> +        virtio_reset_device(vdev);
>>>           vdev->config->del_vqs(vdev);
>>
>> Nit: virtio_device_reset()?
>>
>> Because I see:
>>
>> int virtio_device_freeze(struct virtio_device *dev);
>> int virtio_device_restore(struct virtio_device *dev);
>> void virtio_device_ready(struct virtio_device *dev)
>>
>> But well, there is:
>> void virtio_break_device(struct virtio_device *dev);
> 
> Exactly. I don't know what's best, so I opted for plain english :)

Fair enough, LGTM

Reviewed-by: David Hildenbrand <david@redhat.com>


-- 
Thanks,

David / dhildenb


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 16:00       ` David Hildenbrand
  0 siblings, 0 replies; 60+ messages in thread
From: David Hildenbrand @ 2021-10-13 16:00 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, v9fs-developer, Stefan Hajnoczi, kvm,
	Dominique Martinet, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, netdev, Gerd Hoffmann,
	linux-scsi, Will Deacon, Anton Ivanov, Jean-Philippe Brucker,
	Linus Walleij, Dave Jiang, Herbert Xu, linux-arm-kernel,
	Miklos Szeredi, Richard Weinberger, Bartosz Golaszewski,
	Takashi Iwai, Gonglei, Kalle Valo, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Jeff Dike, Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	Marcel Holtmann, linux-um, linux-crypto, linux-block,
	Vishal Verma, Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Jaroslav Kysela, Cristian Marussi, Jens Axboe, Jie Deng,
	Mathieu Poirier, linux-gpio, Greg Kroah-Hartman, linux-wireless,
	linux-kernel, linux-i2c, linux-bluetooth, iommu, Anton Yakovlev,
	Daniel Vetter, Sudeep Holla, linux-fsdevel, Paolo Bonzini,
	Johannes Berg, Enrico Weigelt, metux IT consult, David S. Miller

On 13.10.21 14:17, Michael S. Tsirkin wrote:
> On Wed, Oct 13, 2021 at 01:03:46PM +0200, David Hildenbrand wrote:
>> On 13.10.21 12:55, Michael S. Tsirkin wrote:
>>> This will enable cleanups down the road.
>>> The idea is to disable cbs, then add "flush_queued_cbs" callback
>>> as a parameter, this way drivers can flush any work
>>> queued after callbacks have been disabled.
>>>
>>> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>>> ---
>>>   arch/um/drivers/virt-pci.c                 | 2 +-
>>>   drivers/block/virtio_blk.c                 | 4 ++--
>>>   drivers/bluetooth/virtio_bt.c              | 2 +-
>>>   drivers/char/hw_random/virtio-rng.c        | 2 +-
>>>   drivers/char/virtio_console.c              | 4 ++--
>>>   drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>>>   drivers/firmware/arm_scmi/virtio.c         | 2 +-
>>>   drivers/gpio/gpio-virtio.c                 | 2 +-
>>>   drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>>>   drivers/i2c/busses/i2c-virtio.c            | 2 +-
>>>   drivers/iommu/virtio-iommu.c               | 2 +-
>>>   drivers/net/caif/caif_virtio.c             | 2 +-
>>>   drivers/net/virtio_net.c                   | 4 ++--
>>>   drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>>>   drivers/nvdimm/virtio_pmem.c               | 2 +-
>>>   drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>>>   drivers/scsi/virtio_scsi.c                 | 2 +-
>>>   drivers/virtio/virtio.c                    | 5 +++++
>>>   drivers/virtio/virtio_balloon.c            | 2 +-
>>>   drivers/virtio/virtio_input.c              | 2 +-
>>>   drivers/virtio/virtio_mem.c                | 2 +-
>>>   fs/fuse/virtio_fs.c                        | 4 ++--
>>>   include/linux/virtio.h                     | 1 +
>>>   net/9p/trans_virtio.c                      | 2 +-
>>>   net/vmw_vsock/virtio_transport.c           | 4 ++--
>>>   sound/virtio/virtio_card.c                 | 4 ++--
>>>   26 files changed, 39 insertions(+), 33 deletions(-)
>>>
>>> diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
>>> index c08066633023..22c4d87c9c15 100644
>>> --- a/arch/um/drivers/virt-pci.c
>>> +++ b/arch/um/drivers/virt-pci.c
>>> @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
>>>   	int i;
>>>           /* Stop all virtqueues */
>>> -        vdev->config->reset(vdev);
>>> +        virtio_reset_device(vdev);
>>>           vdev->config->del_vqs(vdev);
>>
>> Nit: virtio_device_reset()?
>>
>> Because I see:
>>
>> int virtio_device_freeze(struct virtio_device *dev);
>> int virtio_device_restore(struct virtio_device *dev);
>> void virtio_device_ready(struct virtio_device *dev)
>>
>> But well, there is:
>> void virtio_break_device(struct virtio_device *dev);
> 
> Exactly. I don't know what's best, so I opted for plain english :)

Fair enough, LGTM

Reviewed-by: David Hildenbrand <david@redhat.com>


-- 
Thanks,

David / dhildenb

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 16:00       ` David Hildenbrand
  0 siblings, 0 replies; 60+ messages in thread
From: David Hildenbrand @ 2021-10-13 16:00 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: nvdimm, v9fs-developer, Stefan Hajnoczi, kvm, David Airlie,
	Viresh Kumar, linux-remoteproc, alsa-devel, dri-devel,
	Bjorn Andersson, netdev, linux-scsi, Will Deacon, Anton Ivanov,
	Jean-Philippe Brucker, Linus Walleij, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Vivek Goyal,
	Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann, Amit Shah,
	Eric Van Hensbergen, Marcel Holtmann, linux-um, linux-crypto,
	linux-block, Vishal Verma, Luiz Augusto von Dentz, Matt Mackall,
	Dan Williams, Jaroslav Kysela, Cristian Marussi, Jens Axboe,
	Mathieu Poirier, linux-gpio, Greg Kroah-Hartman, linux-wireless,
	linux-kernel, linux-i2c, linux-bluetooth, iommu, Daniel Vetter,
	Sudeep Holla, linux-fsdevel, Paolo Bonzini, Johannes Berg,
	Enrico Weigelt, metux IT consult, David S. Miller, Joerg Roedel

On 13.10.21 14:17, Michael S. Tsirkin wrote:
> On Wed, Oct 13, 2021 at 01:03:46PM +0200, David Hildenbrand wrote:
>> On 13.10.21 12:55, Michael S. Tsirkin wrote:
>>> This will enable cleanups down the road.
>>> The idea is to disable cbs, then add "flush_queued_cbs" callback
>>> as a parameter, this way drivers can flush any work
>>> queued after callbacks have been disabled.
>>>
>>> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>>> ---
>>>   arch/um/drivers/virt-pci.c                 | 2 +-
>>>   drivers/block/virtio_blk.c                 | 4 ++--
>>>   drivers/bluetooth/virtio_bt.c              | 2 +-
>>>   drivers/char/hw_random/virtio-rng.c        | 2 +-
>>>   drivers/char/virtio_console.c              | 4 ++--
>>>   drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>>>   drivers/firmware/arm_scmi/virtio.c         | 2 +-
>>>   drivers/gpio/gpio-virtio.c                 | 2 +-
>>>   drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>>>   drivers/i2c/busses/i2c-virtio.c            | 2 +-
>>>   drivers/iommu/virtio-iommu.c               | 2 +-
>>>   drivers/net/caif/caif_virtio.c             | 2 +-
>>>   drivers/net/virtio_net.c                   | 4 ++--
>>>   drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>>>   drivers/nvdimm/virtio_pmem.c               | 2 +-
>>>   drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>>>   drivers/scsi/virtio_scsi.c                 | 2 +-
>>>   drivers/virtio/virtio.c                    | 5 +++++
>>>   drivers/virtio/virtio_balloon.c            | 2 +-
>>>   drivers/virtio/virtio_input.c              | 2 +-
>>>   drivers/virtio/virtio_mem.c                | 2 +-
>>>   fs/fuse/virtio_fs.c                        | 4 ++--
>>>   include/linux/virtio.h                     | 1 +
>>>   net/9p/trans_virtio.c                      | 2 +-
>>>   net/vmw_vsock/virtio_transport.c           | 4 ++--
>>>   sound/virtio/virtio_card.c                 | 4 ++--
>>>   26 files changed, 39 insertions(+), 33 deletions(-)
>>>
>>> diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
>>> index c08066633023..22c4d87c9c15 100644
>>> --- a/arch/um/drivers/virt-pci.c
>>> +++ b/arch/um/drivers/virt-pci.c
>>> @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
>>>   	int i;
>>>           /* Stop all virtqueues */
>>> -        vdev->config->reset(vdev);
>>> +        virtio_reset_device(vdev);
>>>           vdev->config->del_vqs(vdev);
>>
>> Nit: virtio_device_reset()?
>>
>> Because I see:
>>
>> int virtio_device_freeze(struct virtio_device *dev);
>> int virtio_device_restore(struct virtio_device *dev);
>> void virtio_device_ready(struct virtio_device *dev)
>>
>> But well, there is:
>> void virtio_break_device(struct virtio_device *dev);
> 
> Exactly. I don't know what's best, so I opted for plain english :)

Fair enough, LGTM

Reviewed-by: David Hildenbrand <david@redhat.com>


-- 
Thanks,

David / dhildenb

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 16:00       ` David Hildenbrand
  0 siblings, 0 replies; 60+ messages in thread
From: David Hildenbrand @ 2021-10-13 16:00 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, v9fs-developer, Stefan Hajnoczi, kvm,
	Dominique Martinet, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, Bjorn Andersson, netdev,
	Gerd Hoffmann, linux-scsi, Will Deacon, Anton Ivanov,
	Jean-Philippe Brucker, Linus Walleij, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Gonglei, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Vivek Goyal,
	Stefano Garzarella, Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann,
	Amit Shah, Eric Van Hensbergen, Marcel Holtmann, linux-um,
	linux-crypto, linux-block, Vishal Verma, Luiz Augusto von Dentz,
	Matt Mackall, Dan Williams, Cristian Marussi, Jens Axboe,
	Jie Deng, Mathieu Poirier, linux-gpio, Greg Kroah-Hartman,
	linux-wireless, linux-kernel, linux-i2c, linux-bluetooth, iommu,
	Anton Yakovlev, Daniel Vetter, Sudeep Holla, linux-fsdevel,
	Paolo Bonzini, Johannes Berg, Enrico Weigelt, metux IT consult,
	David S. Miller, Joerg Roedel

On 13.10.21 14:17, Michael S. Tsirkin wrote:
> On Wed, Oct 13, 2021 at 01:03:46PM +0200, David Hildenbrand wrote:
>> On 13.10.21 12:55, Michael S. Tsirkin wrote:
>>> This will enable cleanups down the road.
>>> The idea is to disable cbs, then add "flush_queued_cbs" callback
>>> as a parameter, this way drivers can flush any work
>>> queued after callbacks have been disabled.
>>>
>>> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>>> ---
>>>   arch/um/drivers/virt-pci.c                 | 2 +-
>>>   drivers/block/virtio_blk.c                 | 4 ++--
>>>   drivers/bluetooth/virtio_bt.c              | 2 +-
>>>   drivers/char/hw_random/virtio-rng.c        | 2 +-
>>>   drivers/char/virtio_console.c              | 4 ++--
>>>   drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>>>   drivers/firmware/arm_scmi/virtio.c         | 2 +-
>>>   drivers/gpio/gpio-virtio.c                 | 2 +-
>>>   drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>>>   drivers/i2c/busses/i2c-virtio.c            | 2 +-
>>>   drivers/iommu/virtio-iommu.c               | 2 +-
>>>   drivers/net/caif/caif_virtio.c             | 2 +-
>>>   drivers/net/virtio_net.c                   | 4 ++--
>>>   drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>>>   drivers/nvdimm/virtio_pmem.c               | 2 +-
>>>   drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>>>   drivers/scsi/virtio_scsi.c                 | 2 +-
>>>   drivers/virtio/virtio.c                    | 5 +++++
>>>   drivers/virtio/virtio_balloon.c            | 2 +-
>>>   drivers/virtio/virtio_input.c              | 2 +-
>>>   drivers/virtio/virtio_mem.c                | 2 +-
>>>   fs/fuse/virtio_fs.c                        | 4 ++--
>>>   include/linux/virtio.h                     | 1 +
>>>   net/9p/trans_virtio.c                      | 2 +-
>>>   net/vmw_vsock/virtio_transport.c           | 4 ++--
>>>   sound/virtio/virtio_card.c                 | 4 ++--
>>>   26 files changed, 39 insertions(+), 33 deletions(-)
>>>
>>> diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
>>> index c08066633023..22c4d87c9c15 100644
>>> --- a/arch/um/drivers/virt-pci.c
>>> +++ b/arch/um/drivers/virt-pci.c
>>> @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
>>>   	int i;
>>>           /* Stop all virtqueues */
>>> -        vdev->config->reset(vdev);
>>> +        virtio_reset_device(vdev);
>>>           vdev->config->del_vqs(vdev);
>>
>> Nit: virtio_device_reset()?
>>
>> Because I see:
>>
>> int virtio_device_freeze(struct virtio_device *dev);
>> int virtio_device_restore(struct virtio_device *dev);
>> void virtio_device_ready(struct virtio_device *dev)
>>
>> But well, there is:
>> void virtio_break_device(struct virtio_device *dev);
> 
> Exactly. I don't know what's best, so I opted for plain english :)

Fair enough, LGTM

Reviewed-by: David Hildenbrand <david@redhat.com>


-- 
Thanks,

David / dhildenb


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
  2021-10-13 10:55 ` Michael S. Tsirkin
  (?)
  (?)
@ 2021-10-13 16:18   ` Cristian Marussi
  -1 siblings, 0 replies; 60+ messages in thread
From: Cristian Marussi @ 2021-10-13 16:18 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Stefan Hajnoczi, Jens Axboe,
	Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
	Matt Mackall, Herbert Xu, Amit Shah, Arnd Bergmann,
	Greg Kroah-Hartman, Gonglei, David S. Miller, Sudeep Holla,
	Enrico Weigelt, metux IT consult, Viresh Kumar, Linus Walleij,
	Bartosz Golaszewski, David Airlie, Gerd Hoffmann, Daniel Vetter,
	Jie Deng, Jean-Philippe Brucker, Joerg Roedel, Will Deacon,
	Jakub Kicinski, Johannes Berg, Kalle Valo, Dan Williams,
	Vishal Verma, Dave Jiang, Ira Weiny, Ohad Ben-Cohen,
	Bjorn Andersson, Mathieu Poirier, James E.J. Bottomley,
	Martin K. Petersen, David Hildenbrand, Vivek Goyal,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	nvdimm, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)
> 
[snip]
> diff --git a/drivers/firmware/arm_scmi/virtio.c b/drivers/firmware/arm_scmi/virtio.c
> index 11e8efb71375..6b8d93fe8848 100644
> --- a/drivers/firmware/arm_scmi/virtio.c
> +++ b/drivers/firmware/arm_scmi/virtio.c
> @@ -452,7 +452,7 @@ static void scmi_vio_remove(struct virtio_device *vdev)
>  	 * outstanding message on any vqueue to be ignored by complete_cb: now
>  	 * we can just stop processing buffers and destroy the vqueues.
>  	 */
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
>  	vdev->config->del_vqs(vdev);
>  	/* Ensure scmi_vdev is visible as NULL */
>  	smp_store_mb(scmi_vdev, NULL);


Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>

Thanks,
Cristian


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 16:18   ` Cristian Marussi
  0 siblings, 0 replies; 60+ messages in thread
From: Cristian Marussi @ 2021-10-13 16:18 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar,
	Linus Walleij, Jeff Dike, alsa-devel, dri-devel, netdev,
	Gerd Hoffmann, Will Deacon, v9fs-developer, Anton Ivanov,
	Jean-Philippe Brucker, Dave Jiang, Herbert Xu, linux-scsi,
	Miklos Szeredi, Richard Weinberger, Bartosz Golaszewski,
	Takashi Iwai, Gonglei, linux-arm-kernel, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Jason Wang, Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	linux-remoteproc, Marcel Holtmann, linux-um, linux-crypto,
	linux-block, Vishal Verma, Luiz Augusto von Dentz, Matt Mackall,
	Dan Williams, Jaroslav Kysela, Kalle Valo, Jens Axboe, Jie Deng,
	Mathieu Poirier, linux-gpio, Greg Kroah-Hartman, linux-wireless,
	linux-kernel, linux-i2c, linux-bluetooth, iommu, Anton Yakovlev,
	Daniel Vetter, Sudeep Holla, linux-fsdevel, Paolo Bonzini,
	Johannes Berg, Enrico Weigelt, metux IT consult, David S. Miller

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)
> 
[snip]
> diff --git a/drivers/firmware/arm_scmi/virtio.c b/drivers/firmware/arm_scmi/virtio.c
> index 11e8efb71375..6b8d93fe8848 100644
> --- a/drivers/firmware/arm_scmi/virtio.c
> +++ b/drivers/firmware/arm_scmi/virtio.c
> @@ -452,7 +452,7 @@ static void scmi_vio_remove(struct virtio_device *vdev)
>  	 * outstanding message on any vqueue to be ignored by complete_cb: now
>  	 * we can just stop processing buffers and destroy the vqueues.
>  	 */
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
>  	vdev->config->del_vqs(vdev);
>  	/* Ensure scmi_vdev is visible as NULL */
>  	smp_store_mb(scmi_vdev, NULL);


Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>

Thanks,
Cristian

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 16:18   ` Cristian Marussi
  0 siblings, 0 replies; 60+ messages in thread
From: Cristian Marussi @ 2021-10-13 16:18 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar,
	Linus Walleij, Jeff Dike, alsa-devel, dri-devel, Bjorn Andersson,
	netdev, Gerd Hoffmann, Will Deacon, v9fs-developer, Anton Ivanov,
	Jean-Philippe Brucker, Dave Jiang, Herbert Xu, linux-scsi,
	Miklos Szeredi, Richard Weinberger, Bartosz Golaszewski,
	Takashi Iwai, Gonglei, linux-arm-kernel, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Jason Wang, Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	linux-remoteproc, Marcel Holtmann, linux-um, linux-crypto,
	linux-block, Vishal Verma, Luiz Augusto von Dentz, Matt Mackall,
	Dan Williams, Kalle Valo, Jens Axboe, Jie Deng, Mathieu Poirier,
	linux-gpio, Greg Kroah-Hartman, linux-wireless, linux-kernel,
	linux-i2c, linux-bluetooth, iommu, Anton Yakovlev, Daniel Vetter,
	Sudeep Holla, linux-fsdevel, Paolo Bonzini, Johannes Berg,
	Enrico Weigelt, metux IT consult, David S. Miller, Joerg Roedel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)
> 
[snip]
> diff --git a/drivers/firmware/arm_scmi/virtio.c b/drivers/firmware/arm_scmi/virtio.c
> index 11e8efb71375..6b8d93fe8848 100644
> --- a/drivers/firmware/arm_scmi/virtio.c
> +++ b/drivers/firmware/arm_scmi/virtio.c
> @@ -452,7 +452,7 @@ static void scmi_vio_remove(struct virtio_device *vdev)
>  	 * outstanding message on any vqueue to be ignored by complete_cb: now
>  	 * we can just stop processing buffers and destroy the vqueues.
>  	 */
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
>  	vdev->config->del_vqs(vdev);
>  	/* Ensure scmi_vdev is visible as NULL */
>  	smp_store_mb(scmi_vdev, NULL);


Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>

Thanks,
Cristian


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 16:18   ` Cristian Marussi
  0 siblings, 0 replies; 60+ messages in thread
From: Cristian Marussi @ 2021-10-13 16:18 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Stefan Hajnoczi, Jens Axboe,
	Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
	Matt Mackall, Herbert Xu, Amit Shah, Arnd Bergmann,
	Greg Kroah-Hartman, Gonglei, David S. Miller, Sudeep Holla,
	Enrico Weigelt, metux IT consult, Viresh Kumar, Linus Walleij,
	Bartosz Golaszewski, David Airlie, Gerd Hoffmann, Daniel Vetter,
	Jie Deng, Jean-Philippe Brucker, Joerg Roedel, Will Deacon,
	Jakub Kicinski, Johannes Berg, Kalle Valo, Dan Williams,
	Vishal Verma, Dave Jiang, Ira Weiny, Ohad Ben-Cohen,
	Bjorn Andersson, Mathieu Poirier, James E.J. Bottomley,
	Martin K. Petersen, David Hildenbrand, Vivek Goyal,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	nvdimm, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)
> 
[snip]
> diff --git a/drivers/firmware/arm_scmi/virtio.c b/drivers/firmware/arm_scmi/virtio.c
> index 11e8efb71375..6b8d93fe8848 100644
> --- a/drivers/firmware/arm_scmi/virtio.c
> +++ b/drivers/firmware/arm_scmi/virtio.c
> @@ -452,7 +452,7 @@ static void scmi_vio_remove(struct virtio_device *vdev)
>  	 * outstanding message on any vqueue to be ignored by complete_cb: now
>  	 * we can just stop processing buffers and destroy the vqueues.
>  	 */
> -	vdev->config->reset(vdev);
> +	virtio_reset_device(vdev);
>  	vdev->config->del_vqs(vdev);
>  	/* Ensure scmi_vdev is visible as NULL */
>  	smp_store_mb(scmi_vdev, NULL);


Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>

Thanks,
Cristian


_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
  2021-10-13 10:55 ` Michael S. Tsirkin
  (?)
  (?)
@ 2021-10-13 16:26   ` Pankaj Gupta
  -1 siblings, 0 replies; 60+ messages in thread
From: Pankaj Gupta @ 2021-10-13 16:26 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: LKML, Jeff Dike, Richard Weinberger, Anton Ivanov, Jason Wang,
	Paolo Bonzini, Stefan Hajnoczi, Jens Axboe, Marcel Holtmann,
	Johan Hedberg, Luiz Augusto von Dentz, Matt Mackall, Herbert Xu,
	Amit Shah, Arnd Bergmann, Greg Kroah-Hartman, Gonglei,
	David S. Miller, Sudeep Holla, Cristian Marussi, Enrico Weigelt,
	metux IT consult, Viresh Kumar, Linus Walleij,
	Bartosz Golaszewski, David Airlie, Gerd Hoffmann, Daniel Vetter,
	Jie Deng, Jean-Philippe Brucker, Joerg Roedel, Will Deacon,
	Jakub Kicinski, Johannes Berg, Kalle Valo, Dan Williams,
	Vishal Verma, Dave Jiang, Ira Weiny, Ohad Ben-Cohen,
	Bjorn Andersson, Mathieu Poirier, James E.J. Bottomley,
	Martin K. Petersen, David Hildenbrand, Vivek Goyal,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	Linux NVDIMM, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)
>
> diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
> index c08066633023..22c4d87c9c15 100644
> --- a/arch/um/drivers/virt-pci.c
> +++ b/arch/um/drivers/virt-pci.c
> @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
>         int i;
>
>          /* Stop all virtqueues */
> -        vdev->config->reset(vdev);
> +        virtio_reset_device(vdev);
>          vdev->config->del_vqs(vdev);
>
>         device_set_wakeup_enable(&vdev->dev, false);
> diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
> index 303caf2d17d0..83d0af3fbf30 100644
> --- a/drivers/block/virtio_blk.c
> +++ b/drivers/block/virtio_blk.c
> @@ -910,7 +910,7 @@ static void virtblk_remove(struct virtio_device *vdev)
>         mutex_lock(&vblk->vdev_mutex);
>
>         /* Stop all the virtqueues. */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         /* Virtqueues are stopped, nothing can use vblk->vdev anymore. */
>         vblk->vdev = NULL;
> @@ -929,7 +929,7 @@ static int virtblk_freeze(struct virtio_device *vdev)
>         struct virtio_blk *vblk = vdev->priv;
>
>         /* Ensure we don't receive any more interrupts */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         /* Make sure no work handler is accessing the device. */
>         flush_work(&vblk->config_work);
> diff --git a/drivers/bluetooth/virtio_bt.c b/drivers/bluetooth/virtio_bt.c
> index 57908ce4fae8..24a9258962fa 100644
> --- a/drivers/bluetooth/virtio_bt.c
> +++ b/drivers/bluetooth/virtio_bt.c
> @@ -364,7 +364,7 @@ static void virtbt_remove(struct virtio_device *vdev)
>         struct hci_dev *hdev = vbt->hdev;
>
>         hci_unregister_dev(hdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         hci_free_dev(hdev);
>         vbt->hdev = NULL;
> diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c
> index a90001e02bf7..95980489514b 100644
> --- a/drivers/char/hw_random/virtio-rng.c
> +++ b/drivers/char/hw_random/virtio-rng.c
> @@ -134,7 +134,7 @@ static void remove_common(struct virtio_device *vdev)
>         vi->hwrng_removed = true;
>         vi->data_avail = 0;
>         complete(&vi->have_data);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vi->busy = false;
>         if (vi->hwrng_register_done)
>                 hwrng_unregister(&vi->hwrng);
> diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
> index 7eaf303a7a86..08bbd693436f 100644
> --- a/drivers/char/virtio_console.c
> +++ b/drivers/char/virtio_console.c
> @@ -1957,7 +1957,7 @@ static void virtcons_remove(struct virtio_device *vdev)
>         spin_unlock_irq(&pdrvdata_lock);
>
>         /* Disable interrupts for vqs */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         /* Finish up work that's lined up */
>         if (use_multiport(portdev))
>                 cancel_work_sync(&portdev->control_work);
> @@ -2139,7 +2139,7 @@ static int virtcons_freeze(struct virtio_device *vdev)
>
>         portdev = vdev->priv;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         if (use_multiport(portdev))
>                 virtqueue_disable_cb(portdev->c_ivq);
> diff --git a/drivers/crypto/virtio/virtio_crypto_core.c b/drivers/crypto/virtio/virtio_crypto_core.c
> index e2375d992308..8e977b7627cb 100644
> --- a/drivers/crypto/virtio/virtio_crypto_core.c
> +++ b/drivers/crypto/virtio/virtio_crypto_core.c
> @@ -404,7 +404,7 @@ static int virtcrypto_probe(struct virtio_device *vdev)
>  free_engines:
>         virtcrypto_clear_crypto_engines(vcrypto);
>  free_vqs:
> -       vcrypto->vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_del_vqs(vcrypto);
>  free_dev:
>         virtcrypto_devmgr_rm_dev(vcrypto);
> @@ -436,7 +436,7 @@ static void virtcrypto_remove(struct virtio_device *vdev)
>
>         if (virtcrypto_dev_started(vcrypto))
>                 virtcrypto_dev_stop(vcrypto);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_free_unused_reqs(vcrypto);
>         virtcrypto_clear_crypto_engines(vcrypto);
>         virtcrypto_del_vqs(vcrypto);
> @@ -456,7 +456,7 @@ static int virtcrypto_freeze(struct virtio_device *vdev)
>  {
>         struct virtio_crypto *vcrypto = vdev->priv;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_free_unused_reqs(vcrypto);
>         if (virtcrypto_dev_started(vcrypto))
>                 virtcrypto_dev_stop(vcrypto);
> @@ -492,7 +492,7 @@ static int virtcrypto_restore(struct virtio_device *vdev)
>  free_engines:
>         virtcrypto_clear_crypto_engines(vcrypto);
>  free_vqs:
> -       vcrypto->vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_del_vqs(vcrypto);
>         return err;
>  }
> diff --git a/drivers/firmware/arm_scmi/virtio.c b/drivers/firmware/arm_scmi/virtio.c
> index 11e8efb71375..6b8d93fe8848 100644
> --- a/drivers/firmware/arm_scmi/virtio.c
> +++ b/drivers/firmware/arm_scmi/virtio.c
> @@ -452,7 +452,7 @@ static void scmi_vio_remove(struct virtio_device *vdev)
>          * outstanding message on any vqueue to be ignored by complete_cb: now
>          * we can just stop processing buffers and destroy the vqueues.
>          */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>         /* Ensure scmi_vdev is visible as NULL */
>         smp_store_mb(scmi_vdev, NULL);
> diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c
> index d24f1c9264bc..5029f01966f4 100644
> --- a/drivers/gpio/gpio-virtio.c
> +++ b/drivers/gpio/gpio-virtio.c
> @@ -203,7 +203,7 @@ static void virtio_gpio_request_vq(struct virtqueue *vq)
>
>  static void virtio_gpio_free_vqs(struct virtio_device *vdev)
>  {
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>  }
>
> diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c b/drivers/gpu/drm/virtio/virtgpu_kms.c
> index f3379059f324..6aa605b8d3a1 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_kms.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_kms.c
> @@ -257,7 +257,7 @@ void virtio_gpu_deinit(struct drm_device *dev)
>         flush_work(&vgdev->ctrlq.dequeue_work);
>         flush_work(&vgdev->cursorq.dequeue_work);
>         flush_work(&vgdev->config_changed_work);
> -       vgdev->vdev->config->reset(vgdev->vdev);
> +       virtio_reset_device(vgdev->vdev);
>         vgdev->vdev->config->del_vqs(vgdev->vdev);
>  }
>
> diff --git a/drivers/i2c/busses/i2c-virtio.c b/drivers/i2c/busses/i2c-virtio.c
> index f10a603b13fb..eb3261ac64dc 100644
> --- a/drivers/i2c/busses/i2c-virtio.c
> +++ b/drivers/i2c/busses/i2c-virtio.c
> @@ -177,7 +177,7 @@ static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
>
>  static void virtio_i2c_del_vqs(struct virtio_device *vdev)
>  {
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>  }
>
> diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c
> index 80930ce04a16..1d4e1e7cf175 100644
> --- a/drivers/iommu/virtio-iommu.c
> +++ b/drivers/iommu/virtio-iommu.c
> @@ -1115,7 +1115,7 @@ static void viommu_remove(struct virtio_device *vdev)
>         iommu_device_unregister(&viommu->iommu);
>
>         /* Stop all virtqueues */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>
>         dev_info(&vdev->dev, "device removed\n");
> diff --git a/drivers/net/caif/caif_virtio.c b/drivers/net/caif/caif_virtio.c
> index 91230894692d..444ef6a342f6 100644
> --- a/drivers/net/caif/caif_virtio.c
> +++ b/drivers/net/caif/caif_virtio.c
> @@ -754,7 +754,7 @@ static void cfv_remove(struct virtio_device *vdev)
>         debugfs_remove_recursive(cfv->debugfs);
>
>         vringh_kiov_cleanup(&cfv->ctx.riov);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->vringh_config->del_vrhs(cfv->vdev);
>         cfv->vr_rx = NULL;
>         vdev->config->del_vqs(cfv->vdev);
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index 79bd2585ec6b..8c10fcad73a4 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -3274,7 +3274,7 @@ static int virtnet_probe(struct virtio_device *vdev)
>         return 0;
>
>  free_unregister_netdev:
> -       vi->vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         unregister_netdev(dev);
>  free_failover:
> @@ -3290,7 +3290,7 @@ static int virtnet_probe(struct virtio_device *vdev)
>
>  static void remove_vq_common(struct virtnet_info *vi)
>  {
> -       vi->vdev->config->reset(vi->vdev);
> +       virtio_reset_device(vi->vdev);
>
>         /* Free unused buffers in both send and recv, if any. */
>         free_unused_bufs(vi);
> diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
> index 0adae76eb8df..9ee430c1d4a2 100644
> --- a/drivers/net/wireless/mac80211_hwsim.c
> +++ b/drivers/net/wireless/mac80211_hwsim.c
> @@ -4369,7 +4369,7 @@ static void remove_vqs(struct virtio_device *vdev)
>  {
>         int i;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         for (i = 0; i < ARRAY_SIZE(hwsim_vqs); i++) {
>                 struct virtqueue *vq = hwsim_vqs[i];
> diff --git a/drivers/nvdimm/virtio_pmem.c b/drivers/nvdimm/virtio_pmem.c
> index 726c7354d465..995b6cdc67ed 100644
> --- a/drivers/nvdimm/virtio_pmem.c
> +++ b/drivers/nvdimm/virtio_pmem.c
> @@ -105,7 +105,7 @@ static void virtio_pmem_remove(struct virtio_device *vdev)
>
>         nvdimm_bus_unregister(nvdimm_bus);
>         vdev->config->del_vqs(vdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>  }
>
>  static struct virtio_driver virtio_pmem_driver = {
> diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
> index 8e49a3bacfc7..6a11952822df 100644
> --- a/drivers/rpmsg/virtio_rpmsg_bus.c
> +++ b/drivers/rpmsg/virtio_rpmsg_bus.c
> @@ -1015,7 +1015,7 @@ static void rpmsg_remove(struct virtio_device *vdev)
>         size_t total_buf_space = vrp->num_bufs * vrp->buf_size;
>         int ret;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         ret = device_for_each_child(&vdev->dev, NULL, rpmsg_remove_device);
>         if (ret)
> diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
> index 07d0250f17c3..f2502a8a5213 100644
> --- a/drivers/scsi/virtio_scsi.c
> +++ b/drivers/scsi/virtio_scsi.c
> @@ -778,7 +778,7 @@ static void virtscsi_init_vq(struct virtio_scsi_vq *virtscsi_vq,
>  static void virtscsi_remove_vqs(struct virtio_device *vdev)
>  {
>         /* Stop all the virtqueues. */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>  }
>
> diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
> index 0a5b54034d4b..a67dd0eca578 100644
> --- a/drivers/virtio/virtio.c
> +++ b/drivers/virtio/virtio.c
> @@ -204,6 +204,11 @@ int virtio_finalize_features(struct virtio_device *dev)
>  }
>  EXPORT_SYMBOL_GPL(virtio_finalize_features);
>
> +static void virtio_reset_device(struct virtio_device *dev)
> +{
> +       dev->config->reset(dev);
> +}
> +
>  static int virtio_dev_probe(struct device *_d)
>  {
>         int err, i;
> diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
> index c22ff0117b46..f4c34a2a6b8e 100644
> --- a/drivers/virtio/virtio_balloon.c
> +++ b/drivers/virtio/virtio_balloon.c
> @@ -1056,7 +1056,7 @@ static void remove_common(struct virtio_balloon *vb)
>                 return_free_pages_to_mm(vb, ULONG_MAX);
>
>         /* Now we reset the device so we can clean up the queues. */
> -       vb->vdev->config->reset(vb->vdev);
> +       virtio_reset_device(vb->vdev);
>
>         vb->vdev->config->del_vqs(vb->vdev);
>  }
> diff --git a/drivers/virtio/virtio_input.c b/drivers/virtio/virtio_input.c
> index ce51ae165943..3aa46703872d 100644
> --- a/drivers/virtio/virtio_input.c
> +++ b/drivers/virtio/virtio_input.c
> @@ -347,7 +347,7 @@ static void virtinput_remove(struct virtio_device *vdev)
>         spin_unlock_irqrestore(&vi->lock, flags);
>
>         input_unregister_device(vi->idev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         while ((buf = virtqueue_detach_unused_buf(vi->sts)) != NULL)
>                 kfree(buf);
>         vdev->config->del_vqs(vdev);
> diff --git a/drivers/virtio/virtio_mem.c b/drivers/virtio/virtio_mem.c
> index bef8ad6bf466..3bab0a625a4b 100644
> --- a/drivers/virtio/virtio_mem.c
> +++ b/drivers/virtio/virtio_mem.c
> @@ -2722,7 +2722,7 @@ static void virtio_mem_remove(struct virtio_device *vdev)
>         }
>
>         /* reset the device and cleanup the queues */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>
>         kfree(vm);
> diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
> index 0ad89c6629d7..27c3b74070a2 100644
> --- a/fs/fuse/virtio_fs.c
> +++ b/fs/fuse/virtio_fs.c
> @@ -895,7 +895,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)
>         return 0;
>
>  out_vqs:
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtio_fs_cleanup_vqs(vdev, fs);
>         kfree(fs->vqs);
>
> @@ -927,7 +927,7 @@ static void virtio_fs_remove(struct virtio_device *vdev)
>         list_del_init(&fs->list);
>         virtio_fs_stop_all_queues(fs);
>         virtio_fs_drain_all_queues_locked(fs);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtio_fs_cleanup_vqs(vdev, fs);
>
>         vdev->priv = NULL;
> diff --git a/include/linux/virtio.h b/include/linux/virtio.h
> index 41edbc01ffa4..72292a62cd90 100644
> --- a/include/linux/virtio.h
> +++ b/include/linux/virtio.h
> @@ -138,6 +138,7 @@ int virtio_finalize_features(struct virtio_device *dev);
>  int virtio_device_freeze(struct virtio_device *dev);
>  int virtio_device_restore(struct virtio_device *dev);
>  #endif
> +void virtio_reset_device(struct virtio_device *dev);
>
>  size_t virtio_max_dma_size(struct virtio_device *vdev);
>
> diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
> index 490a4c900339..19c69821dd04 100644
> --- a/net/9p/trans_virtio.c
> +++ b/net/9p/trans_virtio.c
> @@ -721,7 +721,7 @@ static void p9_virtio_remove(struct virtio_device *vdev)
>
>         mutex_unlock(&virtio_9p_lock);
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>
>         sysfs_remove_file(&(vdev->dev.kobj), &dev_attr_mount_tag.attr);
> diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c
> index 4f7c99dfd16c..fb3302fff627 100644
> --- a/net/vmw_vsock/virtio_transport.c
> +++ b/net/vmw_vsock/virtio_transport.c
> @@ -665,7 +665,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
>         vsock_for_each_connected_socket(virtio_vsock_reset_sock);
>
>         /* Stop all work handlers to make sure no one is accessing the device,
> -        * so we can safely call vdev->config->reset().
> +        * so we can safely call virtio_reset_device().
>          */
>         mutex_lock(&vsock->rx_lock);
>         vsock->rx_run = false;
> @@ -682,7 +682,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
>         /* Flush all device writes and interrupts, device will not use any
>          * more buffers.
>          */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         mutex_lock(&vsock->rx_lock);
>         while ((pkt = virtqueue_detach_unused_buf(vsock->vqs[VSOCK_VQ_RX])))
> diff --git a/sound/virtio/virtio_card.c b/sound/virtio/virtio_card.c
> index 150ab3e37013..e2847c040f75 100644
> --- a/sound/virtio/virtio_card.c
> +++ b/sound/virtio/virtio_card.c
> @@ -350,7 +350,7 @@ static void virtsnd_remove(struct virtio_device *vdev)
>                 snd_card_free(snd->card);
>
>         vdev->config->del_vqs(vdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         for (i = 0; snd->substreams && i < snd->nsubstreams; ++i) {
>                 struct virtio_pcm_substream *vss = &snd->substreams[i];
> @@ -379,7 +379,7 @@ static int virtsnd_freeze(struct virtio_device *vdev)
>         virtsnd_ctl_msg_cancel_all(snd);
>
>         vdev->config->del_vqs(vdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         for (i = 0; i < snd->nsubstreams; ++i)
>                 cancel_work_sync(&snd->substreams[i].elapsed_period);

Reviewed-by: Pankaj Gupta <pankaj.gupta.linux@gmail.com>

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 16:26   ` Pankaj Gupta
  0 siblings, 0 replies; 60+ messages in thread
From: Pankaj Gupta @ 2021-10-13 16:26 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, Linux NVDIMM, Dominique Martinet,
	Stefan Hajnoczi, kvm, David Hildenbrand, David Airlie,
	Viresh Kumar, Jason Wang, linux-remoteproc, alsa-devel,
	dri-devel, netdev, Gerd Hoffmann, linux-scsi, Will Deacon,
	v9fs-developer, Anton Ivanov, Jean-Philippe Brucker,
	Linus Walleij, Dave Jiang, Herbert Xu, linux-arm-kernel,
	Miklos Szeredi, Richard Weinberger, Bartosz Golaszewski,
	Takashi Iwai, Gonglei, Kalle Valo, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Jeff Dike, Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	Marcel Holtmann, linux-um, linux-crypto, linux-block,
	Vishal Verma, Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Jaroslav Kysela, Cristian Marussi, Jens Axboe, Jie Deng,
	Mathieu Poirier, linux-gpio, Greg Kroah-Hartman, linux-wireless,
	LKML, linux-i2c, linux-bluetooth, iommu, Anton Yakovlev,
	Daniel Vetter, Sudeep Holla, linux-fsdevel, Paolo Bonzini,
	Johannes Berg, Enrico Weigelt, metux IT consult, David S. Miller

> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)
>
> diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
> index c08066633023..22c4d87c9c15 100644
> --- a/arch/um/drivers/virt-pci.c
> +++ b/arch/um/drivers/virt-pci.c
> @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
>         int i;
>
>          /* Stop all virtqueues */
> -        vdev->config->reset(vdev);
> +        virtio_reset_device(vdev);
>          vdev->config->del_vqs(vdev);
>
>         device_set_wakeup_enable(&vdev->dev, false);
> diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
> index 303caf2d17d0..83d0af3fbf30 100644
> --- a/drivers/block/virtio_blk.c
> +++ b/drivers/block/virtio_blk.c
> @@ -910,7 +910,7 @@ static void virtblk_remove(struct virtio_device *vdev)
>         mutex_lock(&vblk->vdev_mutex);
>
>         /* Stop all the virtqueues. */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         /* Virtqueues are stopped, nothing can use vblk->vdev anymore. */
>         vblk->vdev = NULL;
> @@ -929,7 +929,7 @@ static int virtblk_freeze(struct virtio_device *vdev)
>         struct virtio_blk *vblk = vdev->priv;
>
>         /* Ensure we don't receive any more interrupts */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         /* Make sure no work handler is accessing the device. */
>         flush_work(&vblk->config_work);
> diff --git a/drivers/bluetooth/virtio_bt.c b/drivers/bluetooth/virtio_bt.c
> index 57908ce4fae8..24a9258962fa 100644
> --- a/drivers/bluetooth/virtio_bt.c
> +++ b/drivers/bluetooth/virtio_bt.c
> @@ -364,7 +364,7 @@ static void virtbt_remove(struct virtio_device *vdev)
>         struct hci_dev *hdev = vbt->hdev;
>
>         hci_unregister_dev(hdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         hci_free_dev(hdev);
>         vbt->hdev = NULL;
> diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c
> index a90001e02bf7..95980489514b 100644
> --- a/drivers/char/hw_random/virtio-rng.c
> +++ b/drivers/char/hw_random/virtio-rng.c
> @@ -134,7 +134,7 @@ static void remove_common(struct virtio_device *vdev)
>         vi->hwrng_removed = true;
>         vi->data_avail = 0;
>         complete(&vi->have_data);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vi->busy = false;
>         if (vi->hwrng_register_done)
>                 hwrng_unregister(&vi->hwrng);
> diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
> index 7eaf303a7a86..08bbd693436f 100644
> --- a/drivers/char/virtio_console.c
> +++ b/drivers/char/virtio_console.c
> @@ -1957,7 +1957,7 @@ static void virtcons_remove(struct virtio_device *vdev)
>         spin_unlock_irq(&pdrvdata_lock);
>
>         /* Disable interrupts for vqs */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         /* Finish up work that's lined up */
>         if (use_multiport(portdev))
>                 cancel_work_sync(&portdev->control_work);
> @@ -2139,7 +2139,7 @@ static int virtcons_freeze(struct virtio_device *vdev)
>
>         portdev = vdev->priv;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         if (use_multiport(portdev))
>                 virtqueue_disable_cb(portdev->c_ivq);
> diff --git a/drivers/crypto/virtio/virtio_crypto_core.c b/drivers/crypto/virtio/virtio_crypto_core.c
> index e2375d992308..8e977b7627cb 100644
> --- a/drivers/crypto/virtio/virtio_crypto_core.c
> +++ b/drivers/crypto/virtio/virtio_crypto_core.c
> @@ -404,7 +404,7 @@ static int virtcrypto_probe(struct virtio_device *vdev)
>  free_engines:
>         virtcrypto_clear_crypto_engines(vcrypto);
>  free_vqs:
> -       vcrypto->vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_del_vqs(vcrypto);
>  free_dev:
>         virtcrypto_devmgr_rm_dev(vcrypto);
> @@ -436,7 +436,7 @@ static void virtcrypto_remove(struct virtio_device *vdev)
>
>         if (virtcrypto_dev_started(vcrypto))
>                 virtcrypto_dev_stop(vcrypto);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_free_unused_reqs(vcrypto);
>         virtcrypto_clear_crypto_engines(vcrypto);
>         virtcrypto_del_vqs(vcrypto);
> @@ -456,7 +456,7 @@ static int virtcrypto_freeze(struct virtio_device *vdev)
>  {
>         struct virtio_crypto *vcrypto = vdev->priv;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_free_unused_reqs(vcrypto);
>         if (virtcrypto_dev_started(vcrypto))
>                 virtcrypto_dev_stop(vcrypto);
> @@ -492,7 +492,7 @@ static int virtcrypto_restore(struct virtio_device *vdev)
>  free_engines:
>         virtcrypto_clear_crypto_engines(vcrypto);
>  free_vqs:
> -       vcrypto->vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_del_vqs(vcrypto);
>         return err;
>  }
> diff --git a/drivers/firmware/arm_scmi/virtio.c b/drivers/firmware/arm_scmi/virtio.c
> index 11e8efb71375..6b8d93fe8848 100644
> --- a/drivers/firmware/arm_scmi/virtio.c
> +++ b/drivers/firmware/arm_scmi/virtio.c
> @@ -452,7 +452,7 @@ static void scmi_vio_remove(struct virtio_device *vdev)
>          * outstanding message on any vqueue to be ignored by complete_cb: now
>          * we can just stop processing buffers and destroy the vqueues.
>          */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>         /* Ensure scmi_vdev is visible as NULL */
>         smp_store_mb(scmi_vdev, NULL);
> diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c
> index d24f1c9264bc..5029f01966f4 100644
> --- a/drivers/gpio/gpio-virtio.c
> +++ b/drivers/gpio/gpio-virtio.c
> @@ -203,7 +203,7 @@ static void virtio_gpio_request_vq(struct virtqueue *vq)
>
>  static void virtio_gpio_free_vqs(struct virtio_device *vdev)
>  {
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>  }
>
> diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c b/drivers/gpu/drm/virtio/virtgpu_kms.c
> index f3379059f324..6aa605b8d3a1 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_kms.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_kms.c
> @@ -257,7 +257,7 @@ void virtio_gpu_deinit(struct drm_device *dev)
>         flush_work(&vgdev->ctrlq.dequeue_work);
>         flush_work(&vgdev->cursorq.dequeue_work);
>         flush_work(&vgdev->config_changed_work);
> -       vgdev->vdev->config->reset(vgdev->vdev);
> +       virtio_reset_device(vgdev->vdev);
>         vgdev->vdev->config->del_vqs(vgdev->vdev);
>  }
>
> diff --git a/drivers/i2c/busses/i2c-virtio.c b/drivers/i2c/busses/i2c-virtio.c
> index f10a603b13fb..eb3261ac64dc 100644
> --- a/drivers/i2c/busses/i2c-virtio.c
> +++ b/drivers/i2c/busses/i2c-virtio.c
> @@ -177,7 +177,7 @@ static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
>
>  static void virtio_i2c_del_vqs(struct virtio_device *vdev)
>  {
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>  }
>
> diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c
> index 80930ce04a16..1d4e1e7cf175 100644
> --- a/drivers/iommu/virtio-iommu.c
> +++ b/drivers/iommu/virtio-iommu.c
> @@ -1115,7 +1115,7 @@ static void viommu_remove(struct virtio_device *vdev)
>         iommu_device_unregister(&viommu->iommu);
>
>         /* Stop all virtqueues */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>
>         dev_info(&vdev->dev, "device removed\n");
> diff --git a/drivers/net/caif/caif_virtio.c b/drivers/net/caif/caif_virtio.c
> index 91230894692d..444ef6a342f6 100644
> --- a/drivers/net/caif/caif_virtio.c
> +++ b/drivers/net/caif/caif_virtio.c
> @@ -754,7 +754,7 @@ static void cfv_remove(struct virtio_device *vdev)
>         debugfs_remove_recursive(cfv->debugfs);
>
>         vringh_kiov_cleanup(&cfv->ctx.riov);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->vringh_config->del_vrhs(cfv->vdev);
>         cfv->vr_rx = NULL;
>         vdev->config->del_vqs(cfv->vdev);
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index 79bd2585ec6b..8c10fcad73a4 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -3274,7 +3274,7 @@ static int virtnet_probe(struct virtio_device *vdev)
>         return 0;
>
>  free_unregister_netdev:
> -       vi->vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         unregister_netdev(dev);
>  free_failover:
> @@ -3290,7 +3290,7 @@ static int virtnet_probe(struct virtio_device *vdev)
>
>  static void remove_vq_common(struct virtnet_info *vi)
>  {
> -       vi->vdev->config->reset(vi->vdev);
> +       virtio_reset_device(vi->vdev);
>
>         /* Free unused buffers in both send and recv, if any. */
>         free_unused_bufs(vi);
> diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
> index 0adae76eb8df..9ee430c1d4a2 100644
> --- a/drivers/net/wireless/mac80211_hwsim.c
> +++ b/drivers/net/wireless/mac80211_hwsim.c
> @@ -4369,7 +4369,7 @@ static void remove_vqs(struct virtio_device *vdev)
>  {
>         int i;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         for (i = 0; i < ARRAY_SIZE(hwsim_vqs); i++) {
>                 struct virtqueue *vq = hwsim_vqs[i];
> diff --git a/drivers/nvdimm/virtio_pmem.c b/drivers/nvdimm/virtio_pmem.c
> index 726c7354d465..995b6cdc67ed 100644
> --- a/drivers/nvdimm/virtio_pmem.c
> +++ b/drivers/nvdimm/virtio_pmem.c
> @@ -105,7 +105,7 @@ static void virtio_pmem_remove(struct virtio_device *vdev)
>
>         nvdimm_bus_unregister(nvdimm_bus);
>         vdev->config->del_vqs(vdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>  }
>
>  static struct virtio_driver virtio_pmem_driver = {
> diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
> index 8e49a3bacfc7..6a11952822df 100644
> --- a/drivers/rpmsg/virtio_rpmsg_bus.c
> +++ b/drivers/rpmsg/virtio_rpmsg_bus.c
> @@ -1015,7 +1015,7 @@ static void rpmsg_remove(struct virtio_device *vdev)
>         size_t total_buf_space = vrp->num_bufs * vrp->buf_size;
>         int ret;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         ret = device_for_each_child(&vdev->dev, NULL, rpmsg_remove_device);
>         if (ret)
> diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
> index 07d0250f17c3..f2502a8a5213 100644
> --- a/drivers/scsi/virtio_scsi.c
> +++ b/drivers/scsi/virtio_scsi.c
> @@ -778,7 +778,7 @@ static void virtscsi_init_vq(struct virtio_scsi_vq *virtscsi_vq,
>  static void virtscsi_remove_vqs(struct virtio_device *vdev)
>  {
>         /* Stop all the virtqueues. */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>  }
>
> diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
> index 0a5b54034d4b..a67dd0eca578 100644
> --- a/drivers/virtio/virtio.c
> +++ b/drivers/virtio/virtio.c
> @@ -204,6 +204,11 @@ int virtio_finalize_features(struct virtio_device *dev)
>  }
>  EXPORT_SYMBOL_GPL(virtio_finalize_features);
>
> +static void virtio_reset_device(struct virtio_device *dev)
> +{
> +       dev->config->reset(dev);
> +}
> +
>  static int virtio_dev_probe(struct device *_d)
>  {
>         int err, i;
> diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
> index c22ff0117b46..f4c34a2a6b8e 100644
> --- a/drivers/virtio/virtio_balloon.c
> +++ b/drivers/virtio/virtio_balloon.c
> @@ -1056,7 +1056,7 @@ static void remove_common(struct virtio_balloon *vb)
>                 return_free_pages_to_mm(vb, ULONG_MAX);
>
>         /* Now we reset the device so we can clean up the queues. */
> -       vb->vdev->config->reset(vb->vdev);
> +       virtio_reset_device(vb->vdev);
>
>         vb->vdev->config->del_vqs(vb->vdev);
>  }
> diff --git a/drivers/virtio/virtio_input.c b/drivers/virtio/virtio_input.c
> index ce51ae165943..3aa46703872d 100644
> --- a/drivers/virtio/virtio_input.c
> +++ b/drivers/virtio/virtio_input.c
> @@ -347,7 +347,7 @@ static void virtinput_remove(struct virtio_device *vdev)
>         spin_unlock_irqrestore(&vi->lock, flags);
>
>         input_unregister_device(vi->idev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         while ((buf = virtqueue_detach_unused_buf(vi->sts)) != NULL)
>                 kfree(buf);
>         vdev->config->del_vqs(vdev);
> diff --git a/drivers/virtio/virtio_mem.c b/drivers/virtio/virtio_mem.c
> index bef8ad6bf466..3bab0a625a4b 100644
> --- a/drivers/virtio/virtio_mem.c
> +++ b/drivers/virtio/virtio_mem.c
> @@ -2722,7 +2722,7 @@ static void virtio_mem_remove(struct virtio_device *vdev)
>         }
>
>         /* reset the device and cleanup the queues */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>
>         kfree(vm);
> diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
> index 0ad89c6629d7..27c3b74070a2 100644
> --- a/fs/fuse/virtio_fs.c
> +++ b/fs/fuse/virtio_fs.c
> @@ -895,7 +895,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)
>         return 0;
>
>  out_vqs:
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtio_fs_cleanup_vqs(vdev, fs);
>         kfree(fs->vqs);
>
> @@ -927,7 +927,7 @@ static void virtio_fs_remove(struct virtio_device *vdev)
>         list_del_init(&fs->list);
>         virtio_fs_stop_all_queues(fs);
>         virtio_fs_drain_all_queues_locked(fs);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtio_fs_cleanup_vqs(vdev, fs);
>
>         vdev->priv = NULL;
> diff --git a/include/linux/virtio.h b/include/linux/virtio.h
> index 41edbc01ffa4..72292a62cd90 100644
> --- a/include/linux/virtio.h
> +++ b/include/linux/virtio.h
> @@ -138,6 +138,7 @@ int virtio_finalize_features(struct virtio_device *dev);
>  int virtio_device_freeze(struct virtio_device *dev);
>  int virtio_device_restore(struct virtio_device *dev);
>  #endif
> +void virtio_reset_device(struct virtio_device *dev);
>
>  size_t virtio_max_dma_size(struct virtio_device *vdev);
>
> diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
> index 490a4c900339..19c69821dd04 100644
> --- a/net/9p/trans_virtio.c
> +++ b/net/9p/trans_virtio.c
> @@ -721,7 +721,7 @@ static void p9_virtio_remove(struct virtio_device *vdev)
>
>         mutex_unlock(&virtio_9p_lock);
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>
>         sysfs_remove_file(&(vdev->dev.kobj), &dev_attr_mount_tag.attr);
> diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c
> index 4f7c99dfd16c..fb3302fff627 100644
> --- a/net/vmw_vsock/virtio_transport.c
> +++ b/net/vmw_vsock/virtio_transport.c
> @@ -665,7 +665,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
>         vsock_for_each_connected_socket(virtio_vsock_reset_sock);
>
>         /* Stop all work handlers to make sure no one is accessing the device,
> -        * so we can safely call vdev->config->reset().
> +        * so we can safely call virtio_reset_device().
>          */
>         mutex_lock(&vsock->rx_lock);
>         vsock->rx_run = false;
> @@ -682,7 +682,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
>         /* Flush all device writes and interrupts, device will not use any
>          * more buffers.
>          */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         mutex_lock(&vsock->rx_lock);
>         while ((pkt = virtqueue_detach_unused_buf(vsock->vqs[VSOCK_VQ_RX])))
> diff --git a/sound/virtio/virtio_card.c b/sound/virtio/virtio_card.c
> index 150ab3e37013..e2847c040f75 100644
> --- a/sound/virtio/virtio_card.c
> +++ b/sound/virtio/virtio_card.c
> @@ -350,7 +350,7 @@ static void virtsnd_remove(struct virtio_device *vdev)
>                 snd_card_free(snd->card);
>
>         vdev->config->del_vqs(vdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         for (i = 0; snd->substreams && i < snd->nsubstreams; ++i) {
>                 struct virtio_pcm_substream *vss = &snd->substreams[i];
> @@ -379,7 +379,7 @@ static int virtsnd_freeze(struct virtio_device *vdev)
>         virtsnd_ctl_msg_cancel_all(snd);
>
>         vdev->config->del_vqs(vdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         for (i = 0; i < snd->nsubstreams; ++i)
>                 cancel_work_sync(&snd->substreams[i].elapsed_period);

Reviewed-by: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 16:26   ` Pankaj Gupta
  0 siblings, 0 replies; 60+ messages in thread
From: Pankaj Gupta @ 2021-10-13 16:26 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, Linux NVDIMM, Dominique Martinet,
	Stefan Hajnoczi, kvm, David Hildenbrand, David Airlie,
	Viresh Kumar, Jason Wang, linux-remoteproc, alsa-devel,
	dri-devel, Bjorn Andersson, netdev, Gerd Hoffmann, linux-scsi,
	Will Deacon, v9fs-developer, Anton Ivanov, Jean-Philippe Brucker,
	Linus Walleij, Dave Jiang, Herbert Xu, linux-arm-kernel,
	Miklos Szeredi, Richard Weinberger, Bartosz Golaszewski,
	Takashi Iwai, Gonglei, Kalle Valo, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Jeff Dike, Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	Marcel Holtmann, linux-um, linux-crypto, linux-block,
	Vishal Verma, Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Cristian Marussi, Jens Axboe, Jie Deng, Mathieu Poirier,
	linux-gpio, Greg Kroah-Hartman, linux-wireless, LKML, linux-i2c,
	linux-bluetooth, iommu, Anton Yakovlev, Daniel Vetter,
	Sudeep Holla, linux-fsdevel, Paolo Bonzini, Johannes Berg,
	Enrico Weigelt, metux IT consult, David S. Miller, Joerg Roedel

> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)
>
> diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
> index c08066633023..22c4d87c9c15 100644
> --- a/arch/um/drivers/virt-pci.c
> +++ b/arch/um/drivers/virt-pci.c
> @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
>         int i;
>
>          /* Stop all virtqueues */
> -        vdev->config->reset(vdev);
> +        virtio_reset_device(vdev);
>          vdev->config->del_vqs(vdev);
>
>         device_set_wakeup_enable(&vdev->dev, false);
> diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
> index 303caf2d17d0..83d0af3fbf30 100644
> --- a/drivers/block/virtio_blk.c
> +++ b/drivers/block/virtio_blk.c
> @@ -910,7 +910,7 @@ static void virtblk_remove(struct virtio_device *vdev)
>         mutex_lock(&vblk->vdev_mutex);
>
>         /* Stop all the virtqueues. */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         /* Virtqueues are stopped, nothing can use vblk->vdev anymore. */
>         vblk->vdev = NULL;
> @@ -929,7 +929,7 @@ static int virtblk_freeze(struct virtio_device *vdev)
>         struct virtio_blk *vblk = vdev->priv;
>
>         /* Ensure we don't receive any more interrupts */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         /* Make sure no work handler is accessing the device. */
>         flush_work(&vblk->config_work);
> diff --git a/drivers/bluetooth/virtio_bt.c b/drivers/bluetooth/virtio_bt.c
> index 57908ce4fae8..24a9258962fa 100644
> --- a/drivers/bluetooth/virtio_bt.c
> +++ b/drivers/bluetooth/virtio_bt.c
> @@ -364,7 +364,7 @@ static void virtbt_remove(struct virtio_device *vdev)
>         struct hci_dev *hdev = vbt->hdev;
>
>         hci_unregister_dev(hdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         hci_free_dev(hdev);
>         vbt->hdev = NULL;
> diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c
> index a90001e02bf7..95980489514b 100644
> --- a/drivers/char/hw_random/virtio-rng.c
> +++ b/drivers/char/hw_random/virtio-rng.c
> @@ -134,7 +134,7 @@ static void remove_common(struct virtio_device *vdev)
>         vi->hwrng_removed = true;
>         vi->data_avail = 0;
>         complete(&vi->have_data);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vi->busy = false;
>         if (vi->hwrng_register_done)
>                 hwrng_unregister(&vi->hwrng);
> diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
> index 7eaf303a7a86..08bbd693436f 100644
> --- a/drivers/char/virtio_console.c
> +++ b/drivers/char/virtio_console.c
> @@ -1957,7 +1957,7 @@ static void virtcons_remove(struct virtio_device *vdev)
>         spin_unlock_irq(&pdrvdata_lock);
>
>         /* Disable interrupts for vqs */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         /* Finish up work that's lined up */
>         if (use_multiport(portdev))
>                 cancel_work_sync(&portdev->control_work);
> @@ -2139,7 +2139,7 @@ static int virtcons_freeze(struct virtio_device *vdev)
>
>         portdev = vdev->priv;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         if (use_multiport(portdev))
>                 virtqueue_disable_cb(portdev->c_ivq);
> diff --git a/drivers/crypto/virtio/virtio_crypto_core.c b/drivers/crypto/virtio/virtio_crypto_core.c
> index e2375d992308..8e977b7627cb 100644
> --- a/drivers/crypto/virtio/virtio_crypto_core.c
> +++ b/drivers/crypto/virtio/virtio_crypto_core.c
> @@ -404,7 +404,7 @@ static int virtcrypto_probe(struct virtio_device *vdev)
>  free_engines:
>         virtcrypto_clear_crypto_engines(vcrypto);
>  free_vqs:
> -       vcrypto->vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_del_vqs(vcrypto);
>  free_dev:
>         virtcrypto_devmgr_rm_dev(vcrypto);
> @@ -436,7 +436,7 @@ static void virtcrypto_remove(struct virtio_device *vdev)
>
>         if (virtcrypto_dev_started(vcrypto))
>                 virtcrypto_dev_stop(vcrypto);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_free_unused_reqs(vcrypto);
>         virtcrypto_clear_crypto_engines(vcrypto);
>         virtcrypto_del_vqs(vcrypto);
> @@ -456,7 +456,7 @@ static int virtcrypto_freeze(struct virtio_device *vdev)
>  {
>         struct virtio_crypto *vcrypto = vdev->priv;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_free_unused_reqs(vcrypto);
>         if (virtcrypto_dev_started(vcrypto))
>                 virtcrypto_dev_stop(vcrypto);
> @@ -492,7 +492,7 @@ static int virtcrypto_restore(struct virtio_device *vdev)
>  free_engines:
>         virtcrypto_clear_crypto_engines(vcrypto);
>  free_vqs:
> -       vcrypto->vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_del_vqs(vcrypto);
>         return err;
>  }
> diff --git a/drivers/firmware/arm_scmi/virtio.c b/drivers/firmware/arm_scmi/virtio.c
> index 11e8efb71375..6b8d93fe8848 100644
> --- a/drivers/firmware/arm_scmi/virtio.c
> +++ b/drivers/firmware/arm_scmi/virtio.c
> @@ -452,7 +452,7 @@ static void scmi_vio_remove(struct virtio_device *vdev)
>          * outstanding message on any vqueue to be ignored by complete_cb: now
>          * we can just stop processing buffers and destroy the vqueues.
>          */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>         /* Ensure scmi_vdev is visible as NULL */
>         smp_store_mb(scmi_vdev, NULL);
> diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c
> index d24f1c9264bc..5029f01966f4 100644
> --- a/drivers/gpio/gpio-virtio.c
> +++ b/drivers/gpio/gpio-virtio.c
> @@ -203,7 +203,7 @@ static void virtio_gpio_request_vq(struct virtqueue *vq)
>
>  static void virtio_gpio_free_vqs(struct virtio_device *vdev)
>  {
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>  }
>
> diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c b/drivers/gpu/drm/virtio/virtgpu_kms.c
> index f3379059f324..6aa605b8d3a1 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_kms.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_kms.c
> @@ -257,7 +257,7 @@ void virtio_gpu_deinit(struct drm_device *dev)
>         flush_work(&vgdev->ctrlq.dequeue_work);
>         flush_work(&vgdev->cursorq.dequeue_work);
>         flush_work(&vgdev->config_changed_work);
> -       vgdev->vdev->config->reset(vgdev->vdev);
> +       virtio_reset_device(vgdev->vdev);
>         vgdev->vdev->config->del_vqs(vgdev->vdev);
>  }
>
> diff --git a/drivers/i2c/busses/i2c-virtio.c b/drivers/i2c/busses/i2c-virtio.c
> index f10a603b13fb..eb3261ac64dc 100644
> --- a/drivers/i2c/busses/i2c-virtio.c
> +++ b/drivers/i2c/busses/i2c-virtio.c
> @@ -177,7 +177,7 @@ static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
>
>  static void virtio_i2c_del_vqs(struct virtio_device *vdev)
>  {
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>  }
>
> diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c
> index 80930ce04a16..1d4e1e7cf175 100644
> --- a/drivers/iommu/virtio-iommu.c
> +++ b/drivers/iommu/virtio-iommu.c
> @@ -1115,7 +1115,7 @@ static void viommu_remove(struct virtio_device *vdev)
>         iommu_device_unregister(&viommu->iommu);
>
>         /* Stop all virtqueues */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>
>         dev_info(&vdev->dev, "device removed\n");
> diff --git a/drivers/net/caif/caif_virtio.c b/drivers/net/caif/caif_virtio.c
> index 91230894692d..444ef6a342f6 100644
> --- a/drivers/net/caif/caif_virtio.c
> +++ b/drivers/net/caif/caif_virtio.c
> @@ -754,7 +754,7 @@ static void cfv_remove(struct virtio_device *vdev)
>         debugfs_remove_recursive(cfv->debugfs);
>
>         vringh_kiov_cleanup(&cfv->ctx.riov);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->vringh_config->del_vrhs(cfv->vdev);
>         cfv->vr_rx = NULL;
>         vdev->config->del_vqs(cfv->vdev);
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index 79bd2585ec6b..8c10fcad73a4 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -3274,7 +3274,7 @@ static int virtnet_probe(struct virtio_device *vdev)
>         return 0;
>
>  free_unregister_netdev:
> -       vi->vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         unregister_netdev(dev);
>  free_failover:
> @@ -3290,7 +3290,7 @@ static int virtnet_probe(struct virtio_device *vdev)
>
>  static void remove_vq_common(struct virtnet_info *vi)
>  {
> -       vi->vdev->config->reset(vi->vdev);
> +       virtio_reset_device(vi->vdev);
>
>         /* Free unused buffers in both send and recv, if any. */
>         free_unused_bufs(vi);
> diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
> index 0adae76eb8df..9ee430c1d4a2 100644
> --- a/drivers/net/wireless/mac80211_hwsim.c
> +++ b/drivers/net/wireless/mac80211_hwsim.c
> @@ -4369,7 +4369,7 @@ static void remove_vqs(struct virtio_device *vdev)
>  {
>         int i;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         for (i = 0; i < ARRAY_SIZE(hwsim_vqs); i++) {
>                 struct virtqueue *vq = hwsim_vqs[i];
> diff --git a/drivers/nvdimm/virtio_pmem.c b/drivers/nvdimm/virtio_pmem.c
> index 726c7354d465..995b6cdc67ed 100644
> --- a/drivers/nvdimm/virtio_pmem.c
> +++ b/drivers/nvdimm/virtio_pmem.c
> @@ -105,7 +105,7 @@ static void virtio_pmem_remove(struct virtio_device *vdev)
>
>         nvdimm_bus_unregister(nvdimm_bus);
>         vdev->config->del_vqs(vdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>  }
>
>  static struct virtio_driver virtio_pmem_driver = {
> diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
> index 8e49a3bacfc7..6a11952822df 100644
> --- a/drivers/rpmsg/virtio_rpmsg_bus.c
> +++ b/drivers/rpmsg/virtio_rpmsg_bus.c
> @@ -1015,7 +1015,7 @@ static void rpmsg_remove(struct virtio_device *vdev)
>         size_t total_buf_space = vrp->num_bufs * vrp->buf_size;
>         int ret;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         ret = device_for_each_child(&vdev->dev, NULL, rpmsg_remove_device);
>         if (ret)
> diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
> index 07d0250f17c3..f2502a8a5213 100644
> --- a/drivers/scsi/virtio_scsi.c
> +++ b/drivers/scsi/virtio_scsi.c
> @@ -778,7 +778,7 @@ static void virtscsi_init_vq(struct virtio_scsi_vq *virtscsi_vq,
>  static void virtscsi_remove_vqs(struct virtio_device *vdev)
>  {
>         /* Stop all the virtqueues. */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>  }
>
> diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
> index 0a5b54034d4b..a67dd0eca578 100644
> --- a/drivers/virtio/virtio.c
> +++ b/drivers/virtio/virtio.c
> @@ -204,6 +204,11 @@ int virtio_finalize_features(struct virtio_device *dev)
>  }
>  EXPORT_SYMBOL_GPL(virtio_finalize_features);
>
> +static void virtio_reset_device(struct virtio_device *dev)
> +{
> +       dev->config->reset(dev);
> +}
> +
>  static int virtio_dev_probe(struct device *_d)
>  {
>         int err, i;
> diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
> index c22ff0117b46..f4c34a2a6b8e 100644
> --- a/drivers/virtio/virtio_balloon.c
> +++ b/drivers/virtio/virtio_balloon.c
> @@ -1056,7 +1056,7 @@ static void remove_common(struct virtio_balloon *vb)
>                 return_free_pages_to_mm(vb, ULONG_MAX);
>
>         /* Now we reset the device so we can clean up the queues. */
> -       vb->vdev->config->reset(vb->vdev);
> +       virtio_reset_device(vb->vdev);
>
>         vb->vdev->config->del_vqs(vb->vdev);
>  }
> diff --git a/drivers/virtio/virtio_input.c b/drivers/virtio/virtio_input.c
> index ce51ae165943..3aa46703872d 100644
> --- a/drivers/virtio/virtio_input.c
> +++ b/drivers/virtio/virtio_input.c
> @@ -347,7 +347,7 @@ static void virtinput_remove(struct virtio_device *vdev)
>         spin_unlock_irqrestore(&vi->lock, flags);
>
>         input_unregister_device(vi->idev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         while ((buf = virtqueue_detach_unused_buf(vi->sts)) != NULL)
>                 kfree(buf);
>         vdev->config->del_vqs(vdev);
> diff --git a/drivers/virtio/virtio_mem.c b/drivers/virtio/virtio_mem.c
> index bef8ad6bf466..3bab0a625a4b 100644
> --- a/drivers/virtio/virtio_mem.c
> +++ b/drivers/virtio/virtio_mem.c
> @@ -2722,7 +2722,7 @@ static void virtio_mem_remove(struct virtio_device *vdev)
>         }
>
>         /* reset the device and cleanup the queues */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>
>         kfree(vm);
> diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
> index 0ad89c6629d7..27c3b74070a2 100644
> --- a/fs/fuse/virtio_fs.c
> +++ b/fs/fuse/virtio_fs.c
> @@ -895,7 +895,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)
>         return 0;
>
>  out_vqs:
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtio_fs_cleanup_vqs(vdev, fs);
>         kfree(fs->vqs);
>
> @@ -927,7 +927,7 @@ static void virtio_fs_remove(struct virtio_device *vdev)
>         list_del_init(&fs->list);
>         virtio_fs_stop_all_queues(fs);
>         virtio_fs_drain_all_queues_locked(fs);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtio_fs_cleanup_vqs(vdev, fs);
>
>         vdev->priv = NULL;
> diff --git a/include/linux/virtio.h b/include/linux/virtio.h
> index 41edbc01ffa4..72292a62cd90 100644
> --- a/include/linux/virtio.h
> +++ b/include/linux/virtio.h
> @@ -138,6 +138,7 @@ int virtio_finalize_features(struct virtio_device *dev);
>  int virtio_device_freeze(struct virtio_device *dev);
>  int virtio_device_restore(struct virtio_device *dev);
>  #endif
> +void virtio_reset_device(struct virtio_device *dev);
>
>  size_t virtio_max_dma_size(struct virtio_device *vdev);
>
> diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
> index 490a4c900339..19c69821dd04 100644
> --- a/net/9p/trans_virtio.c
> +++ b/net/9p/trans_virtio.c
> @@ -721,7 +721,7 @@ static void p9_virtio_remove(struct virtio_device *vdev)
>
>         mutex_unlock(&virtio_9p_lock);
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>
>         sysfs_remove_file(&(vdev->dev.kobj), &dev_attr_mount_tag.attr);
> diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c
> index 4f7c99dfd16c..fb3302fff627 100644
> --- a/net/vmw_vsock/virtio_transport.c
> +++ b/net/vmw_vsock/virtio_transport.c
> @@ -665,7 +665,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
>         vsock_for_each_connected_socket(virtio_vsock_reset_sock);
>
>         /* Stop all work handlers to make sure no one is accessing the device,
> -        * so we can safely call vdev->config->reset().
> +        * so we can safely call virtio_reset_device().
>          */
>         mutex_lock(&vsock->rx_lock);
>         vsock->rx_run = false;
> @@ -682,7 +682,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
>         /* Flush all device writes and interrupts, device will not use any
>          * more buffers.
>          */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         mutex_lock(&vsock->rx_lock);
>         while ((pkt = virtqueue_detach_unused_buf(vsock->vqs[VSOCK_VQ_RX])))
> diff --git a/sound/virtio/virtio_card.c b/sound/virtio/virtio_card.c
> index 150ab3e37013..e2847c040f75 100644
> --- a/sound/virtio/virtio_card.c
> +++ b/sound/virtio/virtio_card.c
> @@ -350,7 +350,7 @@ static void virtsnd_remove(struct virtio_device *vdev)
>                 snd_card_free(snd->card);
>
>         vdev->config->del_vqs(vdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         for (i = 0; snd->substreams && i < snd->nsubstreams; ++i) {
>                 struct virtio_pcm_substream *vss = &snd->substreams[i];
> @@ -379,7 +379,7 @@ static int virtsnd_freeze(struct virtio_device *vdev)
>         virtsnd_ctl_msg_cancel_all(snd);
>
>         vdev->config->del_vqs(vdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         for (i = 0; i < snd->nsubstreams; ++i)
>                 cancel_work_sync(&snd->substreams[i].elapsed_period);

Reviewed-by: Pankaj Gupta <pankaj.gupta.linux@gmail.com>

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-13 16:26   ` Pankaj Gupta
  0 siblings, 0 replies; 60+ messages in thread
From: Pankaj Gupta @ 2021-10-13 16:26 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: LKML, Jeff Dike, Richard Weinberger, Anton Ivanov, Jason Wang,
	Paolo Bonzini, Stefan Hajnoczi, Jens Axboe, Marcel Holtmann,
	Johan Hedberg, Luiz Augusto von Dentz, Matt Mackall, Herbert Xu,
	Amit Shah, Arnd Bergmann, Greg Kroah-Hartman, Gonglei,
	David S. Miller, Sudeep Holla, Cristian Marussi, Enrico Weigelt,
	metux IT consult, Viresh Kumar, Linus Walleij,
	Bartosz Golaszewski, David Airlie, Gerd Hoffmann, Daniel Vetter,
	Jie Deng, Jean-Philippe Brucker, Joerg Roedel, Will Deacon,
	Jakub Kicinski, Johannes Berg, Kalle Valo, Dan Williams,
	Vishal Verma, Dave Jiang, Ira Weiny, Ohad Ben-Cohen,
	Bjorn Andersson, Mathieu Poirier, James E.J. Bottomley,
	Martin K. Petersen, David Hildenbrand, Vivek Goyal,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	Linux NVDIMM, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)
>
> diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
> index c08066633023..22c4d87c9c15 100644
> --- a/arch/um/drivers/virt-pci.c
> +++ b/arch/um/drivers/virt-pci.c
> @@ -616,7 +616,7 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)
>         int i;
>
>          /* Stop all virtqueues */
> -        vdev->config->reset(vdev);
> +        virtio_reset_device(vdev);
>          vdev->config->del_vqs(vdev);
>
>         device_set_wakeup_enable(&vdev->dev, false);
> diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
> index 303caf2d17d0..83d0af3fbf30 100644
> --- a/drivers/block/virtio_blk.c
> +++ b/drivers/block/virtio_blk.c
> @@ -910,7 +910,7 @@ static void virtblk_remove(struct virtio_device *vdev)
>         mutex_lock(&vblk->vdev_mutex);
>
>         /* Stop all the virtqueues. */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         /* Virtqueues are stopped, nothing can use vblk->vdev anymore. */
>         vblk->vdev = NULL;
> @@ -929,7 +929,7 @@ static int virtblk_freeze(struct virtio_device *vdev)
>         struct virtio_blk *vblk = vdev->priv;
>
>         /* Ensure we don't receive any more interrupts */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         /* Make sure no work handler is accessing the device. */
>         flush_work(&vblk->config_work);
> diff --git a/drivers/bluetooth/virtio_bt.c b/drivers/bluetooth/virtio_bt.c
> index 57908ce4fae8..24a9258962fa 100644
> --- a/drivers/bluetooth/virtio_bt.c
> +++ b/drivers/bluetooth/virtio_bt.c
> @@ -364,7 +364,7 @@ static void virtbt_remove(struct virtio_device *vdev)
>         struct hci_dev *hdev = vbt->hdev;
>
>         hci_unregister_dev(hdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         hci_free_dev(hdev);
>         vbt->hdev = NULL;
> diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c
> index a90001e02bf7..95980489514b 100644
> --- a/drivers/char/hw_random/virtio-rng.c
> +++ b/drivers/char/hw_random/virtio-rng.c
> @@ -134,7 +134,7 @@ static void remove_common(struct virtio_device *vdev)
>         vi->hwrng_removed = true;
>         vi->data_avail = 0;
>         complete(&vi->have_data);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vi->busy = false;
>         if (vi->hwrng_register_done)
>                 hwrng_unregister(&vi->hwrng);
> diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
> index 7eaf303a7a86..08bbd693436f 100644
> --- a/drivers/char/virtio_console.c
> +++ b/drivers/char/virtio_console.c
> @@ -1957,7 +1957,7 @@ static void virtcons_remove(struct virtio_device *vdev)
>         spin_unlock_irq(&pdrvdata_lock);
>
>         /* Disable interrupts for vqs */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         /* Finish up work that's lined up */
>         if (use_multiport(portdev))
>                 cancel_work_sync(&portdev->control_work);
> @@ -2139,7 +2139,7 @@ static int virtcons_freeze(struct virtio_device *vdev)
>
>         portdev = vdev->priv;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         if (use_multiport(portdev))
>                 virtqueue_disable_cb(portdev->c_ivq);
> diff --git a/drivers/crypto/virtio/virtio_crypto_core.c b/drivers/crypto/virtio/virtio_crypto_core.c
> index e2375d992308..8e977b7627cb 100644
> --- a/drivers/crypto/virtio/virtio_crypto_core.c
> +++ b/drivers/crypto/virtio/virtio_crypto_core.c
> @@ -404,7 +404,7 @@ static int virtcrypto_probe(struct virtio_device *vdev)
>  free_engines:
>         virtcrypto_clear_crypto_engines(vcrypto);
>  free_vqs:
> -       vcrypto->vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_del_vqs(vcrypto);
>  free_dev:
>         virtcrypto_devmgr_rm_dev(vcrypto);
> @@ -436,7 +436,7 @@ static void virtcrypto_remove(struct virtio_device *vdev)
>
>         if (virtcrypto_dev_started(vcrypto))
>                 virtcrypto_dev_stop(vcrypto);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_free_unused_reqs(vcrypto);
>         virtcrypto_clear_crypto_engines(vcrypto);
>         virtcrypto_del_vqs(vcrypto);
> @@ -456,7 +456,7 @@ static int virtcrypto_freeze(struct virtio_device *vdev)
>  {
>         struct virtio_crypto *vcrypto = vdev->priv;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_free_unused_reqs(vcrypto);
>         if (virtcrypto_dev_started(vcrypto))
>                 virtcrypto_dev_stop(vcrypto);
> @@ -492,7 +492,7 @@ static int virtcrypto_restore(struct virtio_device *vdev)
>  free_engines:
>         virtcrypto_clear_crypto_engines(vcrypto);
>  free_vqs:
> -       vcrypto->vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtcrypto_del_vqs(vcrypto);
>         return err;
>  }
> diff --git a/drivers/firmware/arm_scmi/virtio.c b/drivers/firmware/arm_scmi/virtio.c
> index 11e8efb71375..6b8d93fe8848 100644
> --- a/drivers/firmware/arm_scmi/virtio.c
> +++ b/drivers/firmware/arm_scmi/virtio.c
> @@ -452,7 +452,7 @@ static void scmi_vio_remove(struct virtio_device *vdev)
>          * outstanding message on any vqueue to be ignored by complete_cb: now
>          * we can just stop processing buffers and destroy the vqueues.
>          */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>         /* Ensure scmi_vdev is visible as NULL */
>         smp_store_mb(scmi_vdev, NULL);
> diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c
> index d24f1c9264bc..5029f01966f4 100644
> --- a/drivers/gpio/gpio-virtio.c
> +++ b/drivers/gpio/gpio-virtio.c
> @@ -203,7 +203,7 @@ static void virtio_gpio_request_vq(struct virtqueue *vq)
>
>  static void virtio_gpio_free_vqs(struct virtio_device *vdev)
>  {
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>  }
>
> diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c b/drivers/gpu/drm/virtio/virtgpu_kms.c
> index f3379059f324..6aa605b8d3a1 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_kms.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_kms.c
> @@ -257,7 +257,7 @@ void virtio_gpu_deinit(struct drm_device *dev)
>         flush_work(&vgdev->ctrlq.dequeue_work);
>         flush_work(&vgdev->cursorq.dequeue_work);
>         flush_work(&vgdev->config_changed_work);
> -       vgdev->vdev->config->reset(vgdev->vdev);
> +       virtio_reset_device(vgdev->vdev);
>         vgdev->vdev->config->del_vqs(vgdev->vdev);
>  }
>
> diff --git a/drivers/i2c/busses/i2c-virtio.c b/drivers/i2c/busses/i2c-virtio.c
> index f10a603b13fb..eb3261ac64dc 100644
> --- a/drivers/i2c/busses/i2c-virtio.c
> +++ b/drivers/i2c/busses/i2c-virtio.c
> @@ -177,7 +177,7 @@ static int virtio_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
>
>  static void virtio_i2c_del_vqs(struct virtio_device *vdev)
>  {
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>  }
>
> diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c
> index 80930ce04a16..1d4e1e7cf175 100644
> --- a/drivers/iommu/virtio-iommu.c
> +++ b/drivers/iommu/virtio-iommu.c
> @@ -1115,7 +1115,7 @@ static void viommu_remove(struct virtio_device *vdev)
>         iommu_device_unregister(&viommu->iommu);
>
>         /* Stop all virtqueues */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>
>         dev_info(&vdev->dev, "device removed\n");
> diff --git a/drivers/net/caif/caif_virtio.c b/drivers/net/caif/caif_virtio.c
> index 91230894692d..444ef6a342f6 100644
> --- a/drivers/net/caif/caif_virtio.c
> +++ b/drivers/net/caif/caif_virtio.c
> @@ -754,7 +754,7 @@ static void cfv_remove(struct virtio_device *vdev)
>         debugfs_remove_recursive(cfv->debugfs);
>
>         vringh_kiov_cleanup(&cfv->ctx.riov);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->vringh_config->del_vrhs(cfv->vdev);
>         cfv->vr_rx = NULL;
>         vdev->config->del_vqs(cfv->vdev);
> diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
> index 79bd2585ec6b..8c10fcad73a4 100644
> --- a/drivers/net/virtio_net.c
> +++ b/drivers/net/virtio_net.c
> @@ -3274,7 +3274,7 @@ static int virtnet_probe(struct virtio_device *vdev)
>         return 0;
>
>  free_unregister_netdev:
> -       vi->vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         unregister_netdev(dev);
>  free_failover:
> @@ -3290,7 +3290,7 @@ static int virtnet_probe(struct virtio_device *vdev)
>
>  static void remove_vq_common(struct virtnet_info *vi)
>  {
> -       vi->vdev->config->reset(vi->vdev);
> +       virtio_reset_device(vi->vdev);
>
>         /* Free unused buffers in both send and recv, if any. */
>         free_unused_bufs(vi);
> diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
> index 0adae76eb8df..9ee430c1d4a2 100644
> --- a/drivers/net/wireless/mac80211_hwsim.c
> +++ b/drivers/net/wireless/mac80211_hwsim.c
> @@ -4369,7 +4369,7 @@ static void remove_vqs(struct virtio_device *vdev)
>  {
>         int i;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         for (i = 0; i < ARRAY_SIZE(hwsim_vqs); i++) {
>                 struct virtqueue *vq = hwsim_vqs[i];
> diff --git a/drivers/nvdimm/virtio_pmem.c b/drivers/nvdimm/virtio_pmem.c
> index 726c7354d465..995b6cdc67ed 100644
> --- a/drivers/nvdimm/virtio_pmem.c
> +++ b/drivers/nvdimm/virtio_pmem.c
> @@ -105,7 +105,7 @@ static void virtio_pmem_remove(struct virtio_device *vdev)
>
>         nvdimm_bus_unregister(nvdimm_bus);
>         vdev->config->del_vqs(vdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>  }
>
>  static struct virtio_driver virtio_pmem_driver = {
> diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
> index 8e49a3bacfc7..6a11952822df 100644
> --- a/drivers/rpmsg/virtio_rpmsg_bus.c
> +++ b/drivers/rpmsg/virtio_rpmsg_bus.c
> @@ -1015,7 +1015,7 @@ static void rpmsg_remove(struct virtio_device *vdev)
>         size_t total_buf_space = vrp->num_bufs * vrp->buf_size;
>         int ret;
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         ret = device_for_each_child(&vdev->dev, NULL, rpmsg_remove_device);
>         if (ret)
> diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c
> index 07d0250f17c3..f2502a8a5213 100644
> --- a/drivers/scsi/virtio_scsi.c
> +++ b/drivers/scsi/virtio_scsi.c
> @@ -778,7 +778,7 @@ static void virtscsi_init_vq(struct virtio_scsi_vq *virtscsi_vq,
>  static void virtscsi_remove_vqs(struct virtio_device *vdev)
>  {
>         /* Stop all the virtqueues. */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>  }
>
> diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
> index 0a5b54034d4b..a67dd0eca578 100644
> --- a/drivers/virtio/virtio.c
> +++ b/drivers/virtio/virtio.c
> @@ -204,6 +204,11 @@ int virtio_finalize_features(struct virtio_device *dev)
>  }
>  EXPORT_SYMBOL_GPL(virtio_finalize_features);
>
> +static void virtio_reset_device(struct virtio_device *dev)
> +{
> +       dev->config->reset(dev);
> +}
> +
>  static int virtio_dev_probe(struct device *_d)
>  {
>         int err, i;
> diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
> index c22ff0117b46..f4c34a2a6b8e 100644
> --- a/drivers/virtio/virtio_balloon.c
> +++ b/drivers/virtio/virtio_balloon.c
> @@ -1056,7 +1056,7 @@ static void remove_common(struct virtio_balloon *vb)
>                 return_free_pages_to_mm(vb, ULONG_MAX);
>
>         /* Now we reset the device so we can clean up the queues. */
> -       vb->vdev->config->reset(vb->vdev);
> +       virtio_reset_device(vb->vdev);
>
>         vb->vdev->config->del_vqs(vb->vdev);
>  }
> diff --git a/drivers/virtio/virtio_input.c b/drivers/virtio/virtio_input.c
> index ce51ae165943..3aa46703872d 100644
> --- a/drivers/virtio/virtio_input.c
> +++ b/drivers/virtio/virtio_input.c
> @@ -347,7 +347,7 @@ static void virtinput_remove(struct virtio_device *vdev)
>         spin_unlock_irqrestore(&vi->lock, flags);
>
>         input_unregister_device(vi->idev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         while ((buf = virtqueue_detach_unused_buf(vi->sts)) != NULL)
>                 kfree(buf);
>         vdev->config->del_vqs(vdev);
> diff --git a/drivers/virtio/virtio_mem.c b/drivers/virtio/virtio_mem.c
> index bef8ad6bf466..3bab0a625a4b 100644
> --- a/drivers/virtio/virtio_mem.c
> +++ b/drivers/virtio/virtio_mem.c
> @@ -2722,7 +2722,7 @@ static void virtio_mem_remove(struct virtio_device *vdev)
>         }
>
>         /* reset the device and cleanup the queues */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>
>         kfree(vm);
> diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
> index 0ad89c6629d7..27c3b74070a2 100644
> --- a/fs/fuse/virtio_fs.c
> +++ b/fs/fuse/virtio_fs.c
> @@ -895,7 +895,7 @@ static int virtio_fs_probe(struct virtio_device *vdev)
>         return 0;
>
>  out_vqs:
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtio_fs_cleanup_vqs(vdev, fs);
>         kfree(fs->vqs);
>
> @@ -927,7 +927,7 @@ static void virtio_fs_remove(struct virtio_device *vdev)
>         list_del_init(&fs->list);
>         virtio_fs_stop_all_queues(fs);
>         virtio_fs_drain_all_queues_locked(fs);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         virtio_fs_cleanup_vqs(vdev, fs);
>
>         vdev->priv = NULL;
> diff --git a/include/linux/virtio.h b/include/linux/virtio.h
> index 41edbc01ffa4..72292a62cd90 100644
> --- a/include/linux/virtio.h
> +++ b/include/linux/virtio.h
> @@ -138,6 +138,7 @@ int virtio_finalize_features(struct virtio_device *dev);
>  int virtio_device_freeze(struct virtio_device *dev);
>  int virtio_device_restore(struct virtio_device *dev);
>  #endif
> +void virtio_reset_device(struct virtio_device *dev);
>
>  size_t virtio_max_dma_size(struct virtio_device *vdev);
>
> diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
> index 490a4c900339..19c69821dd04 100644
> --- a/net/9p/trans_virtio.c
> +++ b/net/9p/trans_virtio.c
> @@ -721,7 +721,7 @@ static void p9_virtio_remove(struct virtio_device *vdev)
>
>         mutex_unlock(&virtio_9p_lock);
>
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>         vdev->config->del_vqs(vdev);
>
>         sysfs_remove_file(&(vdev->dev.kobj), &dev_attr_mount_tag.attr);
> diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c
> index 4f7c99dfd16c..fb3302fff627 100644
> --- a/net/vmw_vsock/virtio_transport.c
> +++ b/net/vmw_vsock/virtio_transport.c
> @@ -665,7 +665,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
>         vsock_for_each_connected_socket(virtio_vsock_reset_sock);
>
>         /* Stop all work handlers to make sure no one is accessing the device,
> -        * so we can safely call vdev->config->reset().
> +        * so we can safely call virtio_reset_device().
>          */
>         mutex_lock(&vsock->rx_lock);
>         vsock->rx_run = false;
> @@ -682,7 +682,7 @@ static void virtio_vsock_remove(struct virtio_device *vdev)
>         /* Flush all device writes and interrupts, device will not use any
>          * more buffers.
>          */
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         mutex_lock(&vsock->rx_lock);
>         while ((pkt = virtqueue_detach_unused_buf(vsock->vqs[VSOCK_VQ_RX])))
> diff --git a/sound/virtio/virtio_card.c b/sound/virtio/virtio_card.c
> index 150ab3e37013..e2847c040f75 100644
> --- a/sound/virtio/virtio_card.c
> +++ b/sound/virtio/virtio_card.c
> @@ -350,7 +350,7 @@ static void virtsnd_remove(struct virtio_device *vdev)
>                 snd_card_free(snd->card);
>
>         vdev->config->del_vqs(vdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         for (i = 0; snd->substreams && i < snd->nsubstreams; ++i) {
>                 struct virtio_pcm_substream *vss = &snd->substreams[i];
> @@ -379,7 +379,7 @@ static int virtsnd_freeze(struct virtio_device *vdev)
>         virtsnd_ctl_msg_cancel_all(snd);
>
>         vdev->config->del_vqs(vdev);
> -       vdev->config->reset(vdev);
> +       virtio_reset_device(vdev);
>
>         for (i = 0; i < snd->nsubstreams; ++i)
>                 cancel_work_sync(&snd->substreams[i].elapsed_period);

Reviewed-by: Pankaj Gupta <pankaj.gupta.linux@gmail.com>

_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
  2021-10-13 10:55 ` Michael S. Tsirkin
                   ` (8 preceding siblings ...)
  (?)
@ 2021-10-13 17:15 ` kernel test robot
  -1 siblings, 0 replies; 60+ messages in thread
From: kernel test robot @ 2021-10-13 17:15 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 2844 bytes --]

Hi "Michael,

[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on axboe-block/for-next]
[also build test ERROR on linus/master v5.15-rc5 next-20211013]
[cannot apply to char-misc/char-misc-testing linux/master rw-uml/linux-next bluetooth-next/master herbert-cryptodev-2.6/master herbert-crypto-2.6/master bluetooth/master linusw-gpio/for-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Michael-S-Tsirkin/virtio-wrap-config-reset-calls/20211013-185724
base:   https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next
config: powerpc-allyesconfig (attached as .config)
compiler: powerpc-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/161cce1f8fc4812f5ce58f9c9a6815bd95594259
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Michael-S-Tsirkin/virtio-wrap-config-reset-calls/20211013-185724
        git checkout 161cce1f8fc4812f5ce58f9c9a6815bd95594259
        # save the attached .config to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=powerpc SHELL=/bin/bash drivers/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/virtio/virtio.c:207:13: error: static declaration of 'virtio_reset_device' follows non-static declaration
     207 | static void virtio_reset_device(struct virtio_device *dev)
         |             ^~~~~~~~~~~~~~~~~~~
   In file included from drivers/virtio/virtio.c:2:
   include/linux/virtio.h:141:6: note: previous declaration of 'virtio_reset_device' with type 'void(struct virtio_device *)'
     141 | void virtio_reset_device(struct virtio_device *dev);
         |      ^~~~~~~~~~~~~~~~~~~
>> drivers/virtio/virtio.c:207:13: error: 'virtio_reset_device' defined but not used [-Werror=unused-function]
     207 | static void virtio_reset_device(struct virtio_device *dev)
         |             ^~~~~~~~~~~~~~~~~~~
   cc1: all warnings being treated as errors


vim +/virtio_reset_device +207 drivers/virtio/virtio.c

   206	
 > 207	static void virtio_reset_device(struct virtio_device *dev)
   208	{
   209		dev->config->reset(dev);
   210	}
   211	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 72457 bytes --]

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
  2021-10-13 10:55 ` Michael S. Tsirkin
  (?)
  (?)
@ 2021-10-14  6:11   ` Anton Yakovlev
  -1 siblings, 0 replies; 60+ messages in thread
From: Anton Yakovlev @ 2021-10-14  6:11 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel
  Cc: Jeff Dike, Richard Weinberger, Anton Ivanov, Jason Wang,
	Paolo Bonzini, Stefan Hajnoczi, Jens Axboe, Marcel Holtmann,
	Johan Hedberg, Luiz Augusto von Dentz, Matt Mackall, Herbert Xu,
	Amit Shah, Arnd Bergmann, Greg Kroah-Hartman, Gonglei,
	David S. Miller, Sudeep Holla, Cristian Marussi, Enrico Weigelt,
	metux IT consult, Viresh Kumar, Linus Walleij,
	Bartosz Golaszewski, David Airlie, Gerd Hoffmann, Daniel Vetter,
	Jie Deng, Jean-Philippe Brucker, Joerg Roedel, Will Deacon,
	Jakub Kicinski, Johannes Berg, Kalle Valo, Dan Williams,
	Vishal Verma, Dave Jiang, Ira Weiny, Ohad Ben-Cohen,
	Bjorn Andersson, Mathieu Poirier, James E.J. Bottomley,
	Martin K. Petersen, David Hildenbrand, Vivek Goyal,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Jaroslav Kysela,
	Takashi Iwai, linux-um, virtualization, linux-block,
	linux-bluetooth, linux-crypto, linux-arm-kernel, linux-gpio,
	dri-devel, linux-i2c, iommu, netdev, linux-wireless, nvdimm,
	linux-remoteproc, linux-scsi, linux-fsdevel, v9fs-developer, kvm,
	alsa-devel

On 13.10.2021 12:55, Michael S. Tsirkin wrote:

> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>   sound/virtio/virtio_card.c                 | 4 ++--
> 

Reviewed-by: Anton Yakovlev <anton.yakovlev@opensynergy.com>

-- 
Anton Yakovlev
Senior Software Engineer

OpenSynergy GmbH
Rotherstr. 20, 10245 Berlin

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-14  6:11   ` Anton Yakovlev
  0 siblings, 0 replies; 60+ messages in thread
From: Anton Yakovlev @ 2021-10-14  6:11 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel
  Cc: nvdimm, Stefan Hajnoczi, kvm, David Airlie, Viresh Kumar,
	Linus Walleij, linux-remoteproc, alsa-devel, dri-devel,
	Bjorn Andersson, netdev, linux-scsi, Will Deacon, v9fs-developer,
	Anton Ivanov, Jean-Philippe Brucker, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Kalle Valo, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Marcel Holtmann, Vivek Goyal, Ohad Ben-Cohen, Johan Hedberg,
	Arnd Bergmann, Amit Shah, Eric Van Hensbergen, Jeff Dike,
	linux-um, linux-block, Vishal Verma, Luiz Augusto von Dentz,
	Matt Mackall, Dan Williams, Jaroslav Kysela, Cristian Marussi,
	Jens Axboe, Mathieu Poirier, linux-gpio, Greg Kroah-Hartman,
	linux-wireless, Takashi Iwai, linux-i2c, linux-bluetooth, iommu,
	linux-crypto, Daniel Vetter, Sudeep Holla, linux-fsdevel,
	Paolo Bonzini, Johannes Berg, Enrico Weigelt, metux IT consult,
	David S. Miller, Joerg Roedel

On 13.10.2021 12:55, Michael S. Tsirkin wrote:

> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>   sound/virtio/virtio_card.c                 | 4 ++--
> 

Reviewed-by: Anton Yakovlev <anton.yakovlev@opensynergy.com>

-- 
Anton Yakovlev
Senior Software Engineer

OpenSynergy GmbH
Rotherstr. 20, 10245 Berlin
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-14  6:11   ` Anton Yakovlev
  0 siblings, 0 replies; 60+ messages in thread
From: Anton Yakovlev @ 2021-10-14  6:11 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar,
	Linus Walleij, linux-remoteproc, alsa-devel, dri-devel, netdev,
	Gerd Hoffmann, linux-scsi, Will Deacon, v9fs-developer,
	Anton Ivanov, Jean-Philippe Brucker, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Gonglei, Kalle Valo, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Marcel Holtmann, Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	Jeff Dike, linux-um, linux-block, Vishal Verma,
	Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Jaroslav Kysela, Cristian Marussi, Jens Axboe, Jie Deng,
	Mathieu Poirier, linux-gpio, Greg Kroah-Hartman, Jason Wang,
	linux-wireless, Takashi Iwai, linux-i2c, linux-bluetooth, iommu,
	linux-crypto, Daniel Vetter, Sudeep Holla, linux-fsdevel,
	Paolo Bonzini, Johannes Berg, Enrico Weigelt, metux IT consult,
	David S. Miller

On 13.10.2021 12:55, Michael S. Tsirkin wrote:

> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>   sound/virtio/virtio_card.c                 | 4 ++--
> 

Reviewed-by: Anton Yakovlev <anton.yakovlev@opensynergy.com>

-- 
Anton Yakovlev
Senior Software Engineer

OpenSynergy GmbH
Rotherstr. 20, 10245 Berlin
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-14  6:11   ` Anton Yakovlev
  0 siblings, 0 replies; 60+ messages in thread
From: Anton Yakovlev @ 2021-10-14  6:11 UTC (permalink / raw)
  To: Michael S. Tsirkin, linux-kernel
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar,
	Linus Walleij, linux-remoteproc, alsa-devel, dri-devel,
	Bjorn Andersson, netdev, Gerd Hoffmann, linux-scsi, Will Deacon,
	v9fs-developer, Anton Ivanov, Jean-Philippe Brucker, Dave Jiang,
	Herbert Xu, linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Gonglei, Kalle Valo, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Marcel Holtmann, Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	Jeff Dike, linux-um, linux-block, Vishal Verma,
	Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Cristian Marussi, Jens Axboe, Jie Deng, Mathieu Poirier,
	linux-gpio, Greg Kroah-Hartman, Jason Wang, linux-wireless,
	Takashi Iwai, linux-i2c, linux-bluetooth, iommu, linux-crypto,
	Daniel Vetter, Sudeep Holla, linux-fsdevel, Paolo Bonzini,
	Johannes Berg, Enrico Weigelt, metux IT consult, David S. Miller,
	Joerg Roedel

On 13.10.2021 12:55, Michael S. Tsirkin wrote:

> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>   sound/virtio/virtio_card.c                 | 4 ++--
> 

Reviewed-by: Anton Yakovlev <anton.yakovlev@opensynergy.com>

-- 
Anton Yakovlev
Senior Software Engineer

OpenSynergy GmbH
Rotherstr. 20, 10245 Berlin

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
  2021-10-13 10:55 ` Michael S. Tsirkin
                     ` (2 preceding siblings ...)
  (?)
@ 2021-10-14  8:36   ` Jean-Philippe Brucker
  -1 siblings, 0 replies; 60+ messages in thread
From: Jean-Philippe Brucker @ 2021-10-14  8:36 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Stefan Hajnoczi, Jens Axboe,
	Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
	Matt Mackall, Herbert Xu, Amit Shah, Arnd Bergmann,
	Greg Kroah-Hartman, Gonglei, David S. Miller, Sudeep Holla,
	Cristian Marussi, Enrico Weigelt, metux IT consult, Viresh Kumar,
	Linus Walleij, Bartosz Golaszewski, David Airlie, Gerd Hoffmann,
	Daniel Vetter, Jie Deng, Joerg Roedel, Will Deacon,
	Jakub Kicinski, Johannes Berg, Kalle Valo, Dan Williams,
	Vishal Verma, Dave Jiang, Ira Weiny, Ohad Ben-Cohen,
	Bjorn Andersson, Mathieu Poirier, James E.J. Bottomley,
	Martin K. Petersen, David Hildenbrand, Vivek Goyal,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	nvdimm, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---

>  drivers/iommu/virtio-iommu.c               | 2 +-

Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-14  8:36   ` Jean-Philippe Brucker
  0 siblings, 0 replies; 60+ messages in thread
From: Jean-Philippe Brucker @ 2021-10-14  8:36 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, netdev, Gerd Hoffmann,
	linux-scsi, Will Deacon, v9fs-developer, Anton Ivanov,
	Linus Walleij, Dave Jiang, Herbert Xu, linux-arm-kernel,
	Miklos Szeredi, Richard Weinberger, Bartosz Golaszewski,
	Takashi Iwai, Gonglei, Kalle Valo, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Jeff Dike, Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	Marcel Holtmann, linux-um, linux-crypto, linux-block,
	Vishal Verma, Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Jaroslav Kysela, Cristian Marussi, Jens Axboe, Jie Deng,
	Mathieu Poirier, linux-gpio, Greg Kroah-Hartman, linux-wireless,
	linux-kernel, linux-i2c, linux-bluetooth, iommu, Anton Yakovlev,
	Daniel Vetter, Sudeep Holla, linux-fsdevel, Paolo Bonzini,
	Johannes Berg, Enrico Weigelt, metux IT consult, David S. Miller

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---

>  drivers/iommu/virtio-iommu.c               | 2 +-

Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-14  8:36   ` Jean-Philippe Brucker
  0 siblings, 0 replies; 60+ messages in thread
From: Jean-Philippe Brucker @ 2021-10-14  8:36 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: nvdimm, Stefan Hajnoczi, kvm, David Airlie, Viresh Kumar,
	linux-remoteproc, alsa-devel, dri-devel, Bjorn Andersson, netdev,
	linux-scsi, Will Deacon, v9fs-developer, Anton Ivanov,
	Linus Walleij, Dave Jiang, Herbert Xu, linux-arm-kernel,
	Miklos Szeredi, Richard Weinberger, Bartosz Golaszewski,
	Takashi Iwai, Kalle Valo, Martin K. Petersen,
	James E.J. Bottomley, Jakub Kicinski, Ira Weiny, virtualization,
	Jeff Dike, Vivek Goyal, Ohad Ben-Cohen, Johan Hedberg,
	Arnd Bergmann, Amit Shah, Eric Van Hensbergen, Marcel Holtmann,
	linux-um, linux-crypto, linux-block, Vishal Verma,
	Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Jaroslav Kysela, Cristian Marussi, Jens Axboe, Mathieu Poirier,
	linux-gpio, Greg Kroah-Hartman, linux-wireless, linux-kernel,
	linux-i2c, linux-bluetooth, iommu, Daniel Vetter, Sudeep Holla,
	linux-fsdevel, Paolo Bonzini, Johannes Berg, Enrico Weigelt,
	metux IT consult, David S. Miller, Joerg Roedel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---

>  drivers/iommu/virtio-iommu.c               | 2 +-

Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-14  8:36   ` Jean-Philippe Brucker
  0 siblings, 0 replies; 60+ messages in thread
From: Jean-Philippe Brucker @ 2021-10-14  8:36 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, Bjorn Andersson, netdev,
	Gerd Hoffmann, linux-scsi, Will Deacon, v9fs-developer,
	Anton Ivanov, Linus Walleij, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Gonglei, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Vivek Goyal,
	Stefano Garzarella, Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann,
	Amit Shah, Eric Van Hensbergen, Marcel Holtmann, linux-um,
	linux-crypto, linux-block, Vishal Verma, Luiz Augusto von Dentz,
	Matt Mackall, Dan Williams, Cristian Marussi, Jens Axboe,
	Jie Deng, Mathieu Poirier, linux-gpio, Greg Kroah-Hartman,
	linux-wireless, linux-kernel, linux-i2c, linux-bluetooth, iommu,
	Anton Yakovlev, Daniel Vetter, Sudeep Holla, linux-fsdevel,
	Paolo Bonzini, Johannes Berg, Enrico Weigelt, metux IT consult,
	David S. Miller, Joerg Roedel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---

>  drivers/iommu/virtio-iommu.c               | 2 +-

Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-14  8:36   ` Jean-Philippe Brucker
  0 siblings, 0 replies; 60+ messages in thread
From: Jean-Philippe Brucker @ 2021-10-14  8:36 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Stefan Hajnoczi, Jens Axboe,
	Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
	Matt Mackall, Herbert Xu, Amit Shah, Arnd Bergmann,
	Greg Kroah-Hartman, Gonglei, David S. Miller, Sudeep Holla,
	Cristian Marussi, Enrico Weigelt, metux IT consult, Viresh Kumar,
	Linus Walleij, Bartosz Golaszewski, David Airlie, Gerd Hoffmann,
	Daniel Vetter, Jie Deng, Joerg Roedel, Will Deacon,
	Jakub Kicinski, Johannes Berg, Kalle Valo, Dan Williams,
	Vishal Verma, Dave Jiang, Ira Weiny, Ohad Ben-Cohen,
	Bjorn Andersson, Mathieu Poirier, James E.J. Bottomley,
	Martin K. Petersen, David Hildenbrand, Vivek Goyal,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	nvdimm, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---

>  drivers/iommu/virtio-iommu.c               | 2 +-

Reviewed-by: Jean-Philippe Brucker <jean-philippe@linaro.org>

_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
  2021-10-13 10:55 ` Michael S. Tsirkin
  (?)
  (?)
@ 2021-10-17 14:12   ` Wolfram Sang
  -1 siblings, 0 replies; 60+ messages in thread
From: Wolfram Sang @ 2021-10-17 14:12 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Stefan Hajnoczi, Jens Axboe,
	Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
	Matt Mackall, Herbert Xu, Amit Shah, Arnd Bergmann,
	Greg Kroah-Hartman, Gonglei, David S. Miller, Sudeep Holla,
	Cristian Marussi, Enrico Weigelt, metux IT consult, Viresh Kumar,
	Linus Walleij, Bartosz Golaszewski, David Airlie, Gerd Hoffmann,
	Daniel Vetter, Jie Deng, Jean-Philippe Brucker, Joerg Roedel,
	Will Deacon, Jakub Kicinski, Johannes Berg, Kalle Valo,
	Dan Williams, Vishal Verma, Dave Jiang, Ira Weiny,
	Ohad Ben-Cohen, Bjorn Andersson, Mathieu Poirier,
	James E.J. Bottomley, Martin K. Petersen, David Hildenbrand,
	Vivek Goyal, Miklos Szeredi, Eric Van Hensbergen,
	Latchesar Ionkov, Dominique Martinet, Stefano Garzarella,
	Anton Yakovlev, Jaroslav Kysela, Takashi Iwai, linux-um,
	virtualization, linux-block, linux-bluetooth, linux-crypto,
	linux-arm-kernel, linux-gpio, dri-devel, linux-i2c, iommu,
	netdev, linux-wireless, nvdimm, linux-remoteproc, linux-scsi,
	linux-fsdevel, v9fs-developer, kvm, alsa-devel

[-- Attachment #1: Type: text/plain, Size: 403 bytes --]

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

Acked-by: Wolfram Sang <wsa@kernel.org> # for I2C changes


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-17 14:12   ` Wolfram Sang
  0 siblings, 0 replies; 60+ messages in thread
From: Wolfram Sang @ 2021-10-17 14:12 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, netdev, Gerd Hoffmann,
	linux-scsi, Will Deacon, v9fs-developer, Anton Ivanov,
	Jean-Philippe Brucker, Linus Walleij, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Gonglei, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Vivek Goyal,
	Stefano Garzarella, Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann,
	Amit Shah, Eric Van Hensbergen, Marcel Holtmann, linux-um,
	linux-crypto, linux-block, Vishal Verma, Luiz Augusto von Dentz,
	Matt Mackall, Dan Williams, Jaroslav Kysela, Cristian Marussi,
	Jens Axboe, Jie Deng, Mathieu Poirier, linux-gpio,
	Greg Kroah-Hartman, linux-wireless, linux-kernel, linux-i2c,
	linux-bluetooth, iommu, Anton Yakovlev, Daniel Vetter,
	Sudeep Holla, linux-fsdevel, Paolo Bonzini, Johannes Berg,
	Enrico Weigelt, metux IT consult, David S. Miller


[-- Attachment #1.1: Type: text/plain, Size: 403 bytes --]

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

Acked-by: Wolfram Sang <wsa@kernel.org> # for I2C changes


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

[-- Attachment #2: Type: text/plain, Size: 156 bytes --]

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-17 14:12   ` Wolfram Sang
  0 siblings, 0 replies; 60+ messages in thread
From: Wolfram Sang @ 2021-10-17 14:12 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, Bjorn Andersson, netdev,
	Gerd Hoffmann, linux-scsi, Will Deacon, v9fs-developer,
	Anton Ivanov, Jean-Philippe Brucker, Linus Walleij, Dave Jiang,
	Herbert Xu, linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Gonglei, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Vivek Goyal,
	Stefano Garzarella, Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann,
	Amit Shah, Eric Van Hensbergen, Marcel Holtmann, linux-um,
	linux-crypto, linux-block, Vishal Verma, Luiz Augusto von Dentz,
	Matt Mackall, Dan Williams, Cristian Marussi, Jens Axboe,
	Jie Deng, Mathieu Poirier, linux-gpio, Greg Kroah-Hartman,
	linux-wireless, linux-kernel, linux-i2c, linux-bluetooth, iommu,
	Anton Yakovlev, Daniel Vetter, Sudeep Holla, linux-fsdevel,
	Paolo Bonzini, Johannes Berg, Enrico Weigelt, metux IT consult,
	David S. Miller, Joerg Roedel

[-- Attachment #1: Type: text/plain, Size: 403 bytes --]

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

Acked-by: Wolfram Sang <wsa@kernel.org> # for I2C changes


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-17 14:12   ` Wolfram Sang
  0 siblings, 0 replies; 60+ messages in thread
From: Wolfram Sang @ 2021-10-17 14:12 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Stefan Hajnoczi, Jens Axboe,
	Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
	Matt Mackall, Herbert Xu, Amit Shah, Arnd Bergmann,
	Greg Kroah-Hartman, Gonglei, David S. Miller, Sudeep Holla,
	Cristian Marussi, Enrico Weigelt, metux IT consult, Viresh Kumar,
	Linus Walleij, Bartosz Golaszewski, David Airlie, Gerd Hoffmann,
	Daniel Vetter, Jie Deng, Jean-Philippe Brucker, Joerg Roedel,
	Will Deacon, Jakub Kicinski, Johannes Berg, Kalle Valo,
	Dan Williams, Vishal Verma, Dave Jiang, Ira Weiny,
	Ohad Ben-Cohen, Bjorn Andersson, Mathieu Poirier,
	James E.J. Bottomley, Martin K. Petersen, David Hildenbrand,
	Vivek Goyal, Miklos Szeredi, Eric Van Hensbergen,
	Latchesar Ionkov, Dominique Martinet, Stefano Garzarella,
	Anton Yakovlev, Jaroslav Kysela, Takashi Iwai, linux-um,
	virtualization, linux-block, linux-bluetooth, linux-crypto,
	linux-arm-kernel, linux-gpio, dri-devel, linux-i2c, iommu,
	netdev, linux-wireless, nvdimm, linux-remoteproc, linux-scsi,
	linux-fsdevel, v9fs-developer, kvm, alsa-devel


[-- Attachment #1.1: Type: text/plain, Size: 403 bytes --]

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

Acked-by: Wolfram Sang <wsa@kernel.org> # for I2C changes


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

[-- Attachment #2: Type: text/plain, Size: 152 bytes --]

_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
  2021-10-13 10:55 ` Michael S. Tsirkin
                     ` (2 preceding siblings ...)
  (?)
@ 2021-10-18  9:11   ` Stefan Hajnoczi
  -1 siblings, 0 replies; 60+ messages in thread
From: Stefan Hajnoczi @ 2021-10-18  9:11 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Jens Axboe, Marcel Holtmann,
	Johan Hedberg, Luiz Augusto von Dentz, Matt Mackall, Herbert Xu,
	Amit Shah, Arnd Bergmann, Greg Kroah-Hartman, Gonglei,
	David S. Miller, Sudeep Holla, Cristian Marussi, Enrico Weigelt,
	metux IT consult, Viresh Kumar, Linus Walleij,
	Bartosz Golaszewski, David Airlie, Gerd Hoffmann, Daniel Vetter,
	Jie Deng, Jean-Philippe Brucker, Joerg Roedel, Will Deacon,
	Jakub Kicinski, Johannes Berg, Kalle Valo, Dan Williams,
	Vishal Verma, Dave Jiang, Ira Weiny, Ohad Ben-Cohen,
	Bjorn Andersson, Mathieu Poirier, James E.J. Bottomley,
	Martin K. Petersen, David Hildenbrand, Vivek Goyal,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	nvdimm, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

[-- Attachment #1: Type: text/plain, Size: 1881 bytes --]

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-18  9:11   ` Stefan Hajnoczi
  0 siblings, 0 replies; 60+ messages in thread
From: Stefan Hajnoczi @ 2021-10-18  9:11 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, kvm,
	David Hildenbrand, David Airlie, Linus Walleij, Jeff Dike,
	alsa-devel, dri-devel, netdev, Gerd Hoffmann, linux-scsi,
	Will Deacon, v9fs-developer, Anton Ivanov, Jean-Philippe Brucker,
	Dave Jiang, Herbert Xu, linux-arm-kernel, Miklos Szeredi,
	Viresh Kumar, Bartosz Golaszewski, Takashi Iwai, Gonglei,
	Kalle Valo, Martin K. Petersen, James E.J. Bottomley,
	Jakub Kicinski, Ira Weiny, virtualization, Jason Wang,
	Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen, Johan Hedberg,
	Arnd Bergmann, Amit Shah, Eric Van Hensbergen, linux-remoteproc,
	Marcel Holtmann, Sudeep Holla, linux-um, linux-crypto,
	linux-block, Vishal Verma, Luiz Augusto von Dentz, Matt Mackall,
	Dan Williams, Jaroslav Kysela, Cristian Marussi, Jens Axboe,
	Jie Deng, Mathieu Poirier, linux-gpio, Greg Kroah-Hartman,
	linux-wireless, linux-kernel, linux-i2c, linux-bluetooth, iommu,
	Anton Yakovlev, Daniel Vetter, Richard Weinberger, linux-fsdevel,
	Paolo Bonzini, Johannes Berg, Enrico Weigelt, metux IT consult,
	David S. Miller


[-- Attachment #1.1: Type: text/plain, Size: 1881 bytes --]

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 156 bytes --]

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-18  9:11   ` Stefan Hajnoczi
  0 siblings, 0 replies; 60+ messages in thread
From: Stefan Hajnoczi @ 2021-10-18  9:11 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: nvdimm, kvm, David Airlie, Linus Walleij, Jeff Dike, alsa-devel,
	dri-devel, Bjorn Andersson, netdev, linux-scsi, Will Deacon,
	v9fs-developer, Anton Ivanov, Jean-Philippe Brucker, Dave Jiang,
	Herbert Xu, linux-arm-kernel, Miklos Szeredi, Viresh Kumar,
	Bartosz Golaszewski, Takashi Iwai, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Vivek Goyal, Ohad Ben-Cohen,
	Johan Hedberg, Arnd Bergmann, Amit Shah, Eric Van Hensbergen,
	linux-remoteproc, Marcel Holtmann, Sudeep Holla, linux-um,
	linux-crypto, linux-block, Vishal Verma, Luiz Augusto von Dentz,
	Matt Mackall, Dan Williams, Jaroslav Kysela, Cristian Marussi,
	Jens Axboe, Mathieu Poirier, linux-gpio, Greg Kroah-Hartman,
	linux-wireless, linux-kernel, linux-i2c, linux-bluetooth, iommu,
	Daniel Vetter, Richard Weinberger, linux-fsdevel, Paolo Bonzini,
	Johannes Berg, Enrico Weigelt, metux IT consult, David S. Miller,
	Joerg Roedel


[-- Attachment #1.1: Type: text/plain, Size: 1881 bytes --]

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 183 bytes --]

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-18  9:11   ` Stefan Hajnoczi
  0 siblings, 0 replies; 60+ messages in thread
From: Stefan Hajnoczi @ 2021-10-18  9:11 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, kvm,
	David Hildenbrand, David Airlie, Linus Walleij, Jeff Dike,
	alsa-devel, dri-devel, Bjorn Andersson, netdev, Gerd Hoffmann,
	linux-scsi, Will Deacon, v9fs-developer, Anton Ivanov,
	Jean-Philippe Brucker, Dave Jiang, Herbert Xu, linux-arm-kernel,
	Miklos Szeredi, Viresh Kumar, Bartosz Golaszewski, Takashi Iwai,
	Gonglei, Kalle Valo, Martin K. Petersen, James E.J. Bottomley,
	Jakub Kicinski, Ira Weiny, virtualization, Jason Wang,
	Vivek Goyal, Stefano Garzarella, Ohad Ben-Cohen, Johan Hedberg,
	Arnd Bergmann, Amit Shah, Eric Van Hensbergen, linux-remoteproc,
	Marcel Holtmann, Sudeep Holla, linux-um, linux-crypto,
	linux-block, Vishal Verma, Luiz Augusto von Dentz, Matt Mackall,
	Dan Williams, Cristian Marussi, Jens Axboe, Jie Deng,
	Mathieu Poirier, linux-gpio, Greg Kroah-Hartman, linux-wireless,
	linux-kernel, linux-i2c, linux-bluetooth, iommu, Anton Yakovlev,
	Daniel Vetter, Richard Weinberger, linux-fsdevel, Paolo Bonzini,
	Johannes Berg, Enrico Weigelt, metux IT consult, David S. Miller,
	Joerg Roedel

[-- Attachment #1: Type: text/plain, Size: 1881 bytes --]

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-18  9:11   ` Stefan Hajnoczi
  0 siblings, 0 replies; 60+ messages in thread
From: Stefan Hajnoczi @ 2021-10-18  9:11 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Jens Axboe, Marcel Holtmann,
	Johan Hedberg, Luiz Augusto von Dentz, Matt Mackall, Herbert Xu,
	Amit Shah, Arnd Bergmann, Greg Kroah-Hartman, Gonglei,
	David S. Miller, Sudeep Holla, Cristian Marussi, Enrico Weigelt,
	metux IT consult, Viresh Kumar, Linus Walleij,
	Bartosz Golaszewski, David Airlie, Gerd Hoffmann, Daniel Vetter,
	Jie Deng, Jean-Philippe Brucker, Joerg Roedel, Will Deacon,
	Jakub Kicinski, Johannes Berg, Kalle Valo, Dan Williams,
	Vishal Verma, Dave Jiang, Ira Weiny, Ohad Ben-Cohen,
	Bjorn Andersson, Mathieu Poirier, James E.J. Bottomley,
	Martin K. Petersen, David Hildenbrand, Vivek Goyal,
	Miklos Szeredi, Eric Van Hensbergen, Latchesar Ionkov,
	Dominique Martinet, Stefano Garzarella, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	nvdimm, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel


[-- Attachment #1.1: Type: text/plain, Size: 1881 bytes --]

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
> This will enable cleanups down the road.
> The idea is to disable cbs, then add "flush_queued_cbs" callback
> as a parameter, this way drivers can flush any work
> queued after callbacks have been disabled.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  arch/um/drivers/virt-pci.c                 | 2 +-
>  drivers/block/virtio_blk.c                 | 4 ++--
>  drivers/bluetooth/virtio_bt.c              | 2 +-
>  drivers/char/hw_random/virtio-rng.c        | 2 +-
>  drivers/char/virtio_console.c              | 4 ++--
>  drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
>  drivers/firmware/arm_scmi/virtio.c         | 2 +-
>  drivers/gpio/gpio-virtio.c                 | 2 +-
>  drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
>  drivers/i2c/busses/i2c-virtio.c            | 2 +-
>  drivers/iommu/virtio-iommu.c               | 2 +-
>  drivers/net/caif/caif_virtio.c             | 2 +-
>  drivers/net/virtio_net.c                   | 4 ++--
>  drivers/net/wireless/mac80211_hwsim.c      | 2 +-
>  drivers/nvdimm/virtio_pmem.c               | 2 +-
>  drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
>  drivers/scsi/virtio_scsi.c                 | 2 +-
>  drivers/virtio/virtio.c                    | 5 +++++
>  drivers/virtio/virtio_balloon.c            | 2 +-
>  drivers/virtio/virtio_input.c              | 2 +-
>  drivers/virtio/virtio_mem.c                | 2 +-
>  fs/fuse/virtio_fs.c                        | 4 ++--
>  include/linux/virtio.h                     | 1 +
>  net/9p/trans_virtio.c                      | 2 +-
>  net/vmw_vsock/virtio_transport.c           | 4 ++--
>  sound/virtio/virtio_card.c                 | 4 ++--
>  26 files changed, 39 insertions(+), 33 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 152 bytes --]

_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
  2021-10-13 10:55 ` Michael S. Tsirkin
                     ` (2 preceding siblings ...)
  (?)
@ 2021-10-18  9:24   ` Stefano Garzarella
  -1 siblings, 0 replies; 60+ messages in thread
From: Stefano Garzarella @ 2021-10-18  9:24 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Stefan Hajnoczi, Jens Axboe,
	Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
	Matt Mackall, Herbert Xu, Amit Shah, Arnd Bergmann,
	Greg Kroah-Hartman, Gonglei, David S. Miller, Sudeep Holla,
	Cristian Marussi, Enrico Weigelt, metux IT consult, Viresh Kumar,
	Linus Walleij, Bartosz Golaszewski, David Airlie, Gerd Hoffmann,
	Daniel Vetter, Jie Deng, Jean-Philippe Brucker, Joerg Roedel,
	Will Deacon, Jakub Kicinski, Johannes Berg, Kalle Valo,
	Dan Williams, Vishal Verma, Dave Jiang, Ira Weiny,
	Ohad Ben-Cohen, Bjorn Andersson, Mathieu Poirier,
	James E.J. Bottomley, Martin K. Petersen, David Hildenbrand,
	Vivek Goyal, Miklos Szeredi, Eric Van Hensbergen,
	Latchesar Ionkov, Dominique Martinet, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	nvdimm, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
>This will enable cleanups down the road.
>The idea is to disable cbs, then add "flush_queued_cbs" callback
>as a parameter, this way drivers can flush any work
>queued after callbacks have been disabled.
>
>Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>---
> arch/um/drivers/virt-pci.c                 | 2 +-
> drivers/block/virtio_blk.c                 | 4 ++--
> drivers/bluetooth/virtio_bt.c              | 2 +-
> drivers/char/hw_random/virtio-rng.c        | 2 +-
> drivers/char/virtio_console.c              | 4 ++--
> drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
> drivers/firmware/arm_scmi/virtio.c         | 2 +-
> drivers/gpio/gpio-virtio.c                 | 2 +-
> drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
> drivers/i2c/busses/i2c-virtio.c            | 2 +-
> drivers/iommu/virtio-iommu.c               | 2 +-
> drivers/net/caif/caif_virtio.c             | 2 +-
> drivers/net/virtio_net.c                   | 4 ++--
> drivers/net/wireless/mac80211_hwsim.c      | 2 +-
> drivers/nvdimm/virtio_pmem.c               | 2 +-
> drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
> drivers/scsi/virtio_scsi.c                 | 2 +-
> drivers/virtio/virtio.c                    | 5 +++++
> drivers/virtio/virtio_balloon.c            | 2 +-
> drivers/virtio/virtio_input.c              | 2 +-
> drivers/virtio/virtio_mem.c                | 2 +-
> fs/fuse/virtio_fs.c                        | 4 ++--
> include/linux/virtio.h                     | 1 +
> net/9p/trans_virtio.c                      | 2 +-
> net/vmw_vsock/virtio_transport.c           | 4 ++--

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-18  9:24   ` Stefano Garzarella
  0 siblings, 0 replies; 60+ messages in thread
From: Stefano Garzarella @ 2021-10-18  9:24 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, netdev, Gerd Hoffmann,
	linux-scsi, Will Deacon, v9fs-developer, Anton Ivanov,
	Jean-Philippe Brucker, Linus Walleij, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Gonglei, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Vivek Goyal, linux-crypto,
	Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann, Amit Shah,
	Eric Van Hensbergen, Marcel Holtmann, linux-um, linux-block,
	Vishal Verma, Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Jaroslav Kysela, Cristian Marussi, Jens Axboe, Jie Deng,
	Mathieu Poirier, linux-gpio, Greg Kroah-Hartman, linux-wireless,
	linux-kernel, linux-i2c, linux-bluetooth, iommu, Anton Yakovlev,
	Daniel Vetter, Sudeep Holla, linux-fsdevel, Paolo Bonzini,
	Johannes Berg, Enrico Weigelt, metux IT consult, David S. Miller

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
>This will enable cleanups down the road.
>The idea is to disable cbs, then add "flush_queued_cbs" callback
>as a parameter, this way drivers can flush any work
>queued after callbacks have been disabled.
>
>Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>---
> arch/um/drivers/virt-pci.c                 | 2 +-
> drivers/block/virtio_blk.c                 | 4 ++--
> drivers/bluetooth/virtio_bt.c              | 2 +-
> drivers/char/hw_random/virtio-rng.c        | 2 +-
> drivers/char/virtio_console.c              | 4 ++--
> drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
> drivers/firmware/arm_scmi/virtio.c         | 2 +-
> drivers/gpio/gpio-virtio.c                 | 2 +-
> drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
> drivers/i2c/busses/i2c-virtio.c            | 2 +-
> drivers/iommu/virtio-iommu.c               | 2 +-
> drivers/net/caif/caif_virtio.c             | 2 +-
> drivers/net/virtio_net.c                   | 4 ++--
> drivers/net/wireless/mac80211_hwsim.c      | 2 +-
> drivers/nvdimm/virtio_pmem.c               | 2 +-
> drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
> drivers/scsi/virtio_scsi.c                 | 2 +-
> drivers/virtio/virtio.c                    | 5 +++++
> drivers/virtio/virtio_balloon.c            | 2 +-
> drivers/virtio/virtio_input.c              | 2 +-
> drivers/virtio/virtio_mem.c                | 2 +-
> fs/fuse/virtio_fs.c                        | 4 ++--
> include/linux/virtio.h                     | 1 +
> net/9p/trans_virtio.c                      | 2 +-
> net/vmw_vsock/virtio_transport.c           | 4 ++--

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-18  9:24   ` Stefano Garzarella
  0 siblings, 0 replies; 60+ messages in thread
From: Stefano Garzarella @ 2021-10-18  9:24 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: nvdimm, Stefan Hajnoczi, kvm, David Airlie, Viresh Kumar,
	linux-remoteproc, alsa-devel, dri-devel, Bjorn Andersson, netdev,
	linux-scsi, Will Deacon, v9fs-developer, Anton Ivanov,
	Jean-Philippe Brucker, Linus Walleij, Dave Jiang, Herbert Xu,
	linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Vivek Goyal, linux-crypto,
	Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann, Amit Shah,
	Eric Van Hensbergen, Marcel Holtmann, linux-um, linux-block,
	Vishal Verma, Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Jaroslav Kysela, Cristian Marussi, Jens Axboe, Mathieu Poirier,
	linux-gpio, Greg Kroah-Hartman, linux-wireless, linux-kernel,
	linux-i2c, linux-bluetooth, iommu, Daniel Vetter, Sudeep Holla,
	linux-fsdevel, Paolo Bonzini, Johannes Berg, Enrico Weigelt,
	metux IT consult, David S. Miller, Joerg Roedel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
>This will enable cleanups down the road.
>The idea is to disable cbs, then add "flush_queued_cbs" callback
>as a parameter, this way drivers can flush any work
>queued after callbacks have been disabled.
>
>Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>---
> arch/um/drivers/virt-pci.c                 | 2 +-
> drivers/block/virtio_blk.c                 | 4 ++--
> drivers/bluetooth/virtio_bt.c              | 2 +-
> drivers/char/hw_random/virtio-rng.c        | 2 +-
> drivers/char/virtio_console.c              | 4 ++--
> drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
> drivers/firmware/arm_scmi/virtio.c         | 2 +-
> drivers/gpio/gpio-virtio.c                 | 2 +-
> drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
> drivers/i2c/busses/i2c-virtio.c            | 2 +-
> drivers/iommu/virtio-iommu.c               | 2 +-
> drivers/net/caif/caif_virtio.c             | 2 +-
> drivers/net/virtio_net.c                   | 4 ++--
> drivers/net/wireless/mac80211_hwsim.c      | 2 +-
> drivers/nvdimm/virtio_pmem.c               | 2 +-
> drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
> drivers/scsi/virtio_scsi.c                 | 2 +-
> drivers/virtio/virtio.c                    | 5 +++++
> drivers/virtio/virtio_balloon.c            | 2 +-
> drivers/virtio/virtio_input.c              | 2 +-
> drivers/virtio/virtio_mem.c                | 2 +-
> fs/fuse/virtio_fs.c                        | 4 ++--
> include/linux/virtio.h                     | 1 +
> net/9p/trans_virtio.c                      | 2 +-
> net/vmw_vsock/virtio_transport.c           | 4 ++--

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-18  9:24   ` Stefano Garzarella
  0 siblings, 0 replies; 60+ messages in thread
From: Stefano Garzarella @ 2021-10-18  9:24 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Latchesar Ionkov, nvdimm, Dominique Martinet, Stefan Hajnoczi,
	kvm, David Hildenbrand, David Airlie, Viresh Kumar, Jason Wang,
	linux-remoteproc, alsa-devel, dri-devel, Bjorn Andersson, netdev,
	Gerd Hoffmann, linux-scsi, Will Deacon, v9fs-developer,
	Anton Ivanov, Jean-Philippe Brucker, Linus Walleij, Dave Jiang,
	Herbert Xu, linux-arm-kernel, Miklos Szeredi, Richard Weinberger,
	Bartosz Golaszewski, Takashi Iwai, Gonglei, Kalle Valo,
	Martin K. Petersen, James E.J. Bottomley, Jakub Kicinski,
	Ira Weiny, virtualization, Jeff Dike, Vivek Goyal, linux-crypto,
	Ohad Ben-Cohen, Johan Hedberg, Arnd Bergmann, Amit Shah,
	Eric Van Hensbergen, Marcel Holtmann, linux-um, linux-block,
	Vishal Verma, Luiz Augusto von Dentz, Matt Mackall, Dan Williams,
	Cristian Marussi, Jens Axboe, Jie Deng, Mathieu Poirier,
	linux-gpio, Greg Kroah-Hartman, linux-wireless, linux-kernel,
	linux-i2c, linux-bluetooth, iommu, Anton Yakovlev, Daniel Vetter,
	Sudeep Holla, linux-fsdevel, Paolo Bonzini, Johannes Berg,
	Enrico Weigelt, metux IT consult, David S. Miller, Joerg Roedel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
>This will enable cleanups down the road.
>The idea is to disable cbs, then add "flush_queued_cbs" callback
>as a parameter, this way drivers can flush any work
>queued after callbacks have been disabled.
>
>Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>---
> arch/um/drivers/virt-pci.c                 | 2 +-
> drivers/block/virtio_blk.c                 | 4 ++--
> drivers/bluetooth/virtio_bt.c              | 2 +-
> drivers/char/hw_random/virtio-rng.c        | 2 +-
> drivers/char/virtio_console.c              | 4 ++--
> drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
> drivers/firmware/arm_scmi/virtio.c         | 2 +-
> drivers/gpio/gpio-virtio.c                 | 2 +-
> drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
> drivers/i2c/busses/i2c-virtio.c            | 2 +-
> drivers/iommu/virtio-iommu.c               | 2 +-
> drivers/net/caif/caif_virtio.c             | 2 +-
> drivers/net/virtio_net.c                   | 4 ++--
> drivers/net/wireless/mac80211_hwsim.c      | 2 +-
> drivers/nvdimm/virtio_pmem.c               | 2 +-
> drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
> drivers/scsi/virtio_scsi.c                 | 2 +-
> drivers/virtio/virtio.c                    | 5 +++++
> drivers/virtio/virtio_balloon.c            | 2 +-
> drivers/virtio/virtio_input.c              | 2 +-
> drivers/virtio/virtio_mem.c                | 2 +-
> fs/fuse/virtio_fs.c                        | 4 ++--
> include/linux/virtio.h                     | 1 +
> net/9p/trans_virtio.c                      | 2 +-
> net/vmw_vsock/virtio_transport.c           | 4 ++--

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>


^ permalink raw reply	[flat|nested] 60+ messages in thread

* Re: [PATCH RFC] virtio: wrap config->reset calls
@ 2021-10-18  9:24   ` Stefano Garzarella
  0 siblings, 0 replies; 60+ messages in thread
From: Stefano Garzarella @ 2021-10-18  9:24 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: linux-kernel, Jeff Dike, Richard Weinberger, Anton Ivanov,
	Jason Wang, Paolo Bonzini, Stefan Hajnoczi, Jens Axboe,
	Marcel Holtmann, Johan Hedberg, Luiz Augusto von Dentz,
	Matt Mackall, Herbert Xu, Amit Shah, Arnd Bergmann,
	Greg Kroah-Hartman, Gonglei, David S. Miller, Sudeep Holla,
	Cristian Marussi, Enrico Weigelt, metux IT consult, Viresh Kumar,
	Linus Walleij, Bartosz Golaszewski, David Airlie, Gerd Hoffmann,
	Daniel Vetter, Jie Deng, Jean-Philippe Brucker, Joerg Roedel,
	Will Deacon, Jakub Kicinski, Johannes Berg, Kalle Valo,
	Dan Williams, Vishal Verma, Dave Jiang, Ira Weiny,
	Ohad Ben-Cohen, Bjorn Andersson, Mathieu Poirier,
	James E.J. Bottomley, Martin K. Petersen, David Hildenbrand,
	Vivek Goyal, Miklos Szeredi, Eric Van Hensbergen,
	Latchesar Ionkov, Dominique Martinet, Anton Yakovlev,
	Jaroslav Kysela, Takashi Iwai, linux-um, virtualization,
	linux-block, linux-bluetooth, linux-crypto, linux-arm-kernel,
	linux-gpio, dri-devel, linux-i2c, iommu, netdev, linux-wireless,
	nvdimm, linux-remoteproc, linux-scsi, linux-fsdevel,
	v9fs-developer, kvm, alsa-devel

On Wed, Oct 13, 2021 at 06:55:31AM -0400, Michael S. Tsirkin wrote:
>This will enable cleanups down the road.
>The idea is to disable cbs, then add "flush_queued_cbs" callback
>as a parameter, this way drivers can flush any work
>queued after callbacks have been disabled.
>
>Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
>---
> arch/um/drivers/virt-pci.c                 | 2 +-
> drivers/block/virtio_blk.c                 | 4 ++--
> drivers/bluetooth/virtio_bt.c              | 2 +-
> drivers/char/hw_random/virtio-rng.c        | 2 +-
> drivers/char/virtio_console.c              | 4 ++--
> drivers/crypto/virtio/virtio_crypto_core.c | 8 ++++----
> drivers/firmware/arm_scmi/virtio.c         | 2 +-
> drivers/gpio/gpio-virtio.c                 | 2 +-
> drivers/gpu/drm/virtio/virtgpu_kms.c       | 2 +-
> drivers/i2c/busses/i2c-virtio.c            | 2 +-
> drivers/iommu/virtio-iommu.c               | 2 +-
> drivers/net/caif/caif_virtio.c             | 2 +-
> drivers/net/virtio_net.c                   | 4 ++--
> drivers/net/wireless/mac80211_hwsim.c      | 2 +-
> drivers/nvdimm/virtio_pmem.c               | 2 +-
> drivers/rpmsg/virtio_rpmsg_bus.c           | 2 +-
> drivers/scsi/virtio_scsi.c                 | 2 +-
> drivers/virtio/virtio.c                    | 5 +++++
> drivers/virtio/virtio_balloon.c            | 2 +-
> drivers/virtio/virtio_input.c              | 2 +-
> drivers/virtio/virtio_mem.c                | 2 +-
> fs/fuse/virtio_fs.c                        | 4 ++--
> include/linux/virtio.h                     | 1 +
> net/9p/trans_virtio.c                      | 2 +-
> net/vmw_vsock/virtio_transport.c           | 4 ++--

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>


_______________________________________________
linux-um mailing list
linux-um@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-um


^ permalink raw reply	[flat|nested] 60+ messages in thread

end of thread, other threads:[~2021-10-19  8:14 UTC | newest]

Thread overview: 60+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-13 10:55 [PATCH RFC] virtio: wrap config->reset calls Michael S. Tsirkin
2021-10-13 10:55 ` Michael S. Tsirkin
2021-10-13 10:55 ` Michael S. Tsirkin
2021-10-13 10:55 ` Michael S. Tsirkin
2021-10-13 11:00 ` Viresh Kumar
2021-10-13 11:00   ` Viresh Kumar
2021-10-13 11:00   ` Viresh Kumar
2021-10-13 11:00   ` Viresh Kumar
2021-10-13 11:03 ` David Hildenbrand
2021-10-13 11:03   ` David Hildenbrand
2021-10-13 11:03   ` David Hildenbrand
2021-10-13 11:03   ` David Hildenbrand
2021-10-13 12:17   ` Michael S. Tsirkin
2021-10-13 12:17     ` Michael S. Tsirkin
2021-10-13 12:17     ` Michael S. Tsirkin
2021-10-13 12:17     ` Michael S. Tsirkin
2021-10-13 16:00     ` David Hildenbrand
2021-10-13 16:00       ` David Hildenbrand
2021-10-13 16:00       ` David Hildenbrand
2021-10-13 16:00       ` David Hildenbrand
2021-10-13 13:16 ` Vivek Goyal
2021-10-13 13:16   ` Vivek Goyal
2021-10-13 13:16   ` Vivek Goyal
2021-10-13 13:16   ` Vivek Goyal
2021-10-13 15:46 ` Mathieu Poirier
2021-10-13 15:46   ` Mathieu Poirier
2021-10-13 15:46   ` Mathieu Poirier
2021-10-13 15:46   ` Mathieu Poirier
2021-10-13 16:18 ` Cristian Marussi
2021-10-13 16:18   ` Cristian Marussi
2021-10-13 16:18   ` Cristian Marussi
2021-10-13 16:18   ` Cristian Marussi
2021-10-13 16:26 ` Pankaj Gupta
2021-10-13 16:26   ` Pankaj Gupta
2021-10-13 16:26   ` Pankaj Gupta
2021-10-13 16:26   ` Pankaj Gupta
2021-10-13 17:15 ` kernel test robot
2021-10-14  6:11 ` Anton Yakovlev
2021-10-14  6:11   ` Anton Yakovlev
2021-10-14  6:11   ` Anton Yakovlev
2021-10-14  6:11   ` Anton Yakovlev
2021-10-14  8:36 ` Jean-Philippe Brucker
2021-10-14  8:36   ` Jean-Philippe Brucker
2021-10-14  8:36   ` Jean-Philippe Brucker
2021-10-14  8:36   ` Jean-Philippe Brucker
2021-10-14  8:36   ` Jean-Philippe Brucker
2021-10-17 14:12 ` Wolfram Sang
2021-10-17 14:12   ` Wolfram Sang
2021-10-17 14:12   ` Wolfram Sang
2021-10-17 14:12   ` Wolfram Sang
2021-10-18  9:11 ` Stefan Hajnoczi
2021-10-18  9:11   ` Stefan Hajnoczi
2021-10-18  9:11   ` Stefan Hajnoczi
2021-10-18  9:11   ` Stefan Hajnoczi
2021-10-18  9:11   ` Stefan Hajnoczi
2021-10-18  9:24 ` Stefano Garzarella
2021-10-18  9:24   ` Stefano Garzarella
2021-10-18  9:24   ` Stefano Garzarella
2021-10-18  9:24   ` Stefano Garzarella
2021-10-18  9:24   ` Stefano Garzarella

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.