Rusty Russell wrote:
On Wednesday 21 May 2008 23:13:05 Chris Lalancette wrote:
Author: Chris Lalancette <[EMAIL PROTECTED]>
Date: Thu May 15 09:04:55 2008 -0400
register_virtio_device was doing something silly, in that it was
overwriting what the calling driver stuck into .bus_id" for the name. This
caused problems in the output of /proc/interrupts, since when you
request_irq(), it doesn't actually copy the devname you pass in but just
stores a pointer to the data. The fix is to just not have
register_virtio_device do anything with the bus_id, and assume the higher
level driver set it up properly.
OK, but only one higher-level driver will set it up properly: kvm. Neither
lguest nor s/390 do this, and as a result, they fail to register *any*
devices.
The following patch should fix it for s/390 (it's identical to the lguest
patch), but would prefer testing (S/390-ers cc'd).
It may actually be better for virtio to set this up. The problem is
that if you have multiple transports that are registering virtio
devices, it's impossible at the transport level to guarantee uniqueness
while still using the "virtio%d" naming. Except the current scheme is
no good, we'd have to push the dev_index into virtio too.
Regards,
Anthony Liguori
===
virtio: S/390 set name of virtio devices directly.
Chris has a patch 'Fix silly output for virtio devices in /proc/interrupts'
which requires callers to the virtio driver infrastructure to set the bus_ids
themselves. This does that for s/390.
Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Cc: Christian Borntraeger <[EMAIL PROTECTED]>
Cc: Martin Schwidefsky <[EMAIL PROTECTED]>
Cc: Carsten Otte <[EMAIL PROTECTED]>
Cc: Heiko Carstens <[EMAIL PROTECTED]>
Cc: Chris Lalancette <[EMAIL PROTECTED]>
---
drivers/s390/kvm/kvm_virtio.c | 2 ++
1 file changed, 2 insertions(+)
diff -r c903ef6b391f drivers/s390/kvm/kvm_virtio.c
--- a/drivers/s390/kvm/kvm_virtio.c Thu May 22 22:31:31 2008 +1000
+++ b/drivers/s390/kvm/kvm_virtio.c Thu May 22 22:32:55 2008 +1000
@@ -265,6 +265,8 @@ static void add_kvm_device(struct kvm_de
kdev->vdev.dev.parent = &kvm_root;
kdev->vdev.index = dev_index++;
+ snprintf(kdev->vdev.dev.bus_id, BUS_ID_SIZE, "virtio%d",
+ kdev->vdev.index);
kdev->vdev.id.device = d->type;
kdev->vdev.config = &kvm_vq_configspace_ops;
kdev->desc = d;
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html