[PATCH 2/7] kvm tools: Use compat message per device instead of per instance

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This prevents multiple messages for the same type of device.

Suggested-by: Ingo Molnar <mingo@xxxxxxx>
Signed-off-by: Sasha Levin <levinsasha928@xxxxxxxxx>
---
 tools/kvm/include/kvm/virtio-9p.h |    1 -
 tools/kvm/virtio/9p.c             |    6 ++++--
 tools/kvm/virtio/balloon.c        |    7 ++++---
 tools/kvm/virtio/blk.c            |    7 ++++---
 tools/kvm/virtio/console.c        |    8 +++++---
 tools/kvm/virtio/net.c            |    7 ++++---
 tools/kvm/virtio/rng.c            |    7 ++++---
 7 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/tools/kvm/include/kvm/virtio-9p.h b/tools/kvm/include/kvm/virtio-9p.h
index 07084c3..3096df2 100644
--- a/tools/kvm/include/kvm/virtio-9p.h
+++ b/tools/kvm/include/kvm/virtio-9p.h
@@ -45,7 +45,6 @@ struct p9_dev {
 	struct virtio_pci	vpci;
 
 	struct virtio_9p_config	*config;
-	int			compat_id;
 	u32			features;
 
 	/* virtio queue */
diff --git a/tools/kvm/virtio/9p.c b/tools/kvm/virtio/9p.c
index 22a2732..b9b92b8 100644
--- a/tools/kvm/virtio/9p.c
+++ b/tools/kvm/virtio/9p.c
@@ -20,6 +20,7 @@
 #include <net/9p/9p.h>
 
 static LIST_HEAD(devs);
+static int compat_id = -1;
 
 /* Warning: Immediately use value returned from this function */
 static const char *rel_to_abs(struct p9_dev *p9dev,
@@ -1148,7 +1149,7 @@ static int init_vq(struct kvm *kvm, void *dev, u32 vq, u32 pfn)
 	struct virt_queue *queue;
 	void *p;
 
-	compat__remove_message(p9dev->compat_id);
+	compat__remove_message(compat_id);
 
 	queue			= &p9dev->vqs[vq];
 	queue->pfn		= pfn;
@@ -1247,7 +1248,8 @@ int virtio_9p__register(struct kvm *kvm, const char *root, const char *tag_name)
 
 	list_add(&p9dev->list, &devs);
 
-	p9dev->compat_id = compat__add_message("virtio-9p device was not detected",
+	if (compat_id != -1)
+		compat_id = compat__add_message("virtio-9p device was not detected",
 						"While you have requested a virtio-9p device, "
 						"the guest kernel didn't seem to detect it.\n"
 						"Please make sure that the kernel was compiled "
diff --git a/tools/kvm/virtio/balloon.c b/tools/kvm/virtio/balloon.c
index 0b79132..643392b 100644
--- a/tools/kvm/virtio/balloon.c
+++ b/tools/kvm/virtio/balloon.c
@@ -44,12 +44,12 @@ struct bln_dev {
 	u16			stat_count;
 	int			stat_waitfd;
 
-	int			compat_id;
 	struct virtio_balloon_config config;
 };
 
 static struct bln_dev bdev;
 extern struct kvm *kvm;
+static int compat_id = -1;
 
 static bool virtio_bln_do_io_request(struct kvm *kvm, struct bln_dev *bdev, struct virt_queue *queue)
 {
@@ -226,7 +226,7 @@ static int init_vq(struct kvm *kvm, void *dev, u32 vq, u32 pfn)
 	struct virt_queue *queue;
 	void *p;
 
-	compat__remove_message(bdev->compat_id);
+	compat__remove_message(compat_id);
 
 	queue			= &bdev->vqs[vq];
 	queue->pfn		= pfn;
@@ -280,7 +280,8 @@ void virtio_bln__init(struct kvm *kvm)
 		.get_size_vq		= get_size_vq,
 	};
 
-	bdev.compat_id = compat__add_message("virtio-balloon device was not detected",
+	if (compat_id != -1)
+		compat_id = compat__add_message("virtio-balloon device was not detected",
 						"While you have requested a virtio-balloon device, "
 						"the guest kernel didn't seem to detect it.\n"
 						"Please make sure that the kernel was compiled "
diff --git a/tools/kvm/virtio/blk.c b/tools/kvm/virtio/blk.c
index c508123..272613b 100644
--- a/tools/kvm/virtio/blk.c
+++ b/tools/kvm/virtio/blk.c
@@ -44,7 +44,6 @@ struct blk_dev {
 	struct virtio_pci		vpci;
 	struct virtio_blk_config	blk_config;
 	struct disk_image		*disk;
-	int				compat_id;
 	u32				features;
 
 	struct virt_queue		vqs[NUM_VIRT_QUEUES];
@@ -53,6 +52,7 @@ struct blk_dev {
 };
 
 static LIST_HEAD(bdevs);
+static int compat_id;
 
 static void virtio_blk_do_io_request(struct kvm *kvm, void *param)
 {
@@ -154,7 +154,7 @@ static int init_vq(struct kvm *kvm, void *dev, u32 vq, u32 pfn)
 	struct virt_queue *queue;
 	void *p;
 
-	compat__remove_message(bdev->compat_id);
+	compat__remove_message(compat_id);
 
 	queue			= &bdev->vqs[vq];
 	queue->pfn		= pfn;
@@ -220,7 +220,8 @@ void virtio_blk__init(struct kvm *kvm, struct disk_image *disk)
 
 	list_add_tail(&bdev->list, &bdevs);
 
-	bdev->compat_id = compat__add_message("virtio-blk device was not detected",
+	if (compat_id != -1)
+		compat_id = compat__add_message("virtio-blk device was not detected",
 						"While you have requested a virtio-blk device, "
 						"the guest kernel didn't seem to detect it.\n"
 						"Please make sure that the kernel was compiled "
diff --git a/tools/kvm/virtio/console.c b/tools/kvm/virtio/console.c
index b880162..ef1ef0d 100644
--- a/tools/kvm/virtio/console.c
+++ b/tools/kvm/virtio/console.c
@@ -37,7 +37,6 @@ struct con_dev {
 	struct virt_queue		vqs[VIRTIO_CONSOLE_NUM_QUEUES];
 	struct virtio_console_config	config;
 	u32				features;
-	int				compat_id;
 
 	struct thread_pool__job		jobs[VIRTIO_CONSOLE_NUM_QUEUES];
 };
@@ -52,6 +51,8 @@ static struct con_dev cdev = {
 	},
 };
 
+static int compat_id = -1;
+
 /*
  * Interrupts are injected for hvc0 only.
  */
@@ -137,7 +138,7 @@ static int init_vq(struct kvm *kvm, void *dev, u32 vq, u32 pfn)
 
 	assert(vq < VIRTIO_CONSOLE_NUM_QUEUES);
 
-	compat__remove_message(cdev.compat_id);
+	compat__remove_message(compat_id);
 
 	queue			= &cdev.vqs[vq];
 	queue->pfn		= pfn;
@@ -188,7 +189,8 @@ void virtio_console__init(struct kvm *kvm)
 		.get_size_vq		= get_size_vq,
 	};
 
-	cdev.compat_id = compat__add_message("virtio-console device was not detected",
+	if (compat_id != -1)
+		compat_id = compat__add_message("virtio-console device was not detected",
 						"While you have requested a virtio-console device, "
 						"the guest kernel didn't seem to detect it.\n"
 						"Please make sure that the kernel was compiled "
diff --git a/tools/kvm/virtio/net.c b/tools/kvm/virtio/net.c
index b55725d..9c39a87 100644
--- a/tools/kvm/virtio/net.c
+++ b/tools/kvm/virtio/net.c
@@ -48,7 +48,6 @@ struct net_dev {
 	struct virt_queue		vqs[VIRTIO_NET_NUM_QUEUES];
 	struct virtio_net_config	config;
 	u32				features;
-	int				compat_id;
 
 	pthread_t			io_rx_thread;
 	pthread_mutex_t			io_rx_lock;
@@ -69,6 +68,7 @@ struct net_dev {
 };
 
 static LIST_HEAD(ndevs);
+static int compat_id = -1;
 
 static void *virtio_net_rx_thread(void *p)
 {
@@ -327,7 +327,7 @@ static int init_vq(struct kvm *kvm, void *dev, u32 vq, u32 pfn)
 	struct virt_queue *queue;
 	void *p;
 
-	compat__remove_message(ndev->compat_id);
+	compat__remove_message(compat_id);
 
 	queue			= &ndev->vqs[vq];
 	queue->pfn		= pfn;
@@ -413,7 +413,8 @@ void virtio_net__init(const struct virtio_net_params *params)
 
 	virtio_net__io_thread_init(params->kvm, ndev);
 
-	ndev->compat_id = compat__add_message("virtio-net device was not detected",
+	if (compat_id != -1)
+		compat_id = compat__add_message("virtio-net device was not detected",
 						"While you have requested a virtio-net device, "
 						"the guest kernel didn't seem to detect it.\n"
 						"Please make sure that the kernel was compiled "
diff --git a/tools/kvm/virtio/rng.c b/tools/kvm/virtio/rng.c
index 02308c2..17cd492 100644
--- a/tools/kvm/virtio/rng.c
+++ b/tools/kvm/virtio/rng.c
@@ -33,7 +33,6 @@ struct rng_dev {
 	struct virtio_pci	vpci;
 
 	int			fd;
-	int			compat_id;
 
 	/* virtio queue */
 	struct virt_queue	vqs[NUM_VIRT_QUEUES];
@@ -41,6 +40,7 @@ struct rng_dev {
 };
 
 static LIST_HEAD(rdevs);
+static int compat_id = -1;
 
 static void set_config(struct kvm *kvm, void *dev, u8 data, u32 offset)
 {
@@ -97,7 +97,7 @@ static int init_vq(struct kvm *kvm, void *dev, u32 vq, u32 pfn)
 	struct rng_dev_job *job;
 	void *p;
 
-	compat__remove_message(rdev->compat_id);
+	compat__remove_message(compat_id);
 
 	queue			= &rdev->vqs[vq];
 	queue->pfn		= pfn;
@@ -164,7 +164,8 @@ void virtio_rng__init(struct kvm *kvm)
 
 	list_add_tail(&rdev->list, &rdevs);
 
-	rdev->compat_id = compat__add_message("virtio-rng device was not detected",
+	if (compat_id != -1)
+		compat_id = compat__add_message("virtio-rng device was not detected",
 						"While you have requested a virtio-rng device, "
 						"the guest kernel didn't seem to detect it.\n"
 						"Please make sure that the kernel was compiled "
-- 
1.7.7

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux