From: Sasha Levin Date: Thu, 13 Oct 2011 09:32:41 +0000 (+0200) Subject: kvm tools: Use compat message per device instead of per instance X-Git-Tag: next-20111014~4^2~5 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=2b6c246215e8f936d2366ef8c4a6eec730b819b2;p=karo-tx-linux.git kvm tools: Use compat message per device instead of per instance This prevents multiple messages for the same type of device. Suggested-by: Ingo Molnar Acked-by: Ingo Molnar Signed-off-by: Sasha Levin Signed-off-by: Pekka Enberg --- diff --git a/tools/kvm/include/kvm/virtio-9p.h b/tools/kvm/include/kvm/virtio-9p.h index 07084c3cd826..3096df27c646 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 22a273219aff..b9b92b859e74 100644 --- a/tools/kvm/virtio/9p.c +++ b/tools/kvm/virtio/9p.c @@ -20,6 +20,7 @@ #include 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 0b791328c113..643392bbd7a6 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 c508123c9b08..272613b445e7 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 b8801622669b..ef1ef0d96f09 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 b55725df9356..9c39a8784ec2 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 02308c29606e..17cd49292a41 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 "