Am Dienstag, 18. Dezember 2007 schrieb Rusty Russell: > To me this points to doing interrupt suppression a different way. If we > have a ->disable_cb() virtio function, and call it before we call > netif_rx_schedule, does that fix it?
The fix looks good and I agree with it. There is one problem that I try to find for some days, but the following BUG_ON triggers: static void vring_disable_cb(struct virtqueue *_vq) { struct vring_virtqueue *vq = to_vvq(_vq); START_USE(vq); ----> BUG_ON(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT); vq->vring.avail->flags |= VRING_AVAIL_F_NO_INTERRUPT; END_USE(vq); } The funny thing is, that this bit is correct during probe but changes later before open. It seems that there is still something fishy on s390 and virtio. I looked several times at the virtio_ring code and it really seems to be ok. Any ideas? Christian -------- the oops that I cannot explain ------------- kernel BUG at /space/kvm/drivers/virtio/virtio_ring.c:232! illegal operation: 0001 [#1] Modules linked in: CPU: 0 Not tainted Process ip (pid: 1583, task: 000000000eee7038, ksp: 000000000ec4beb8) Krnl PSW : 0704300180000000 000000000045dcd4 (vring_disable_cb+0x30/0x34) R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:0 CC:3 PM:0 EA:3 Krnl GPRS: 000003ff00000002 0000000000000001 0000000010001800 000000000045dca4 000000000f054800 0000000000595a80 0000000000000000 0000000000000000 0000000000897768 000003ff00001002 000000000f09c920 000000000ec4bbf8 000000000f09c900 0000000000596b20 000000000045c9c6 000000000ec4bbf8 Krnl Code: 000000000045dcc8: e3b0b0700004 lg %r11,112(%r11) 000000000045dcce: 07fe bcr 15,%r14 000000000045dcd0: a7f40001 brc 15,45dcd2 >000000000045dcd4: a7f4fff6 brc 15,45dcc0 000000000045dcd8: eb7ff0500024 stmg %r7,%r15,80(%r15) 000000000045dcde: a7f13e00 tmll %r15,15872 000000000045dce2: b90400ef lgr %r14,%r15 000000000045dce6: a7840001 brc 8,45dce8 Call Trace: ([<000000000045c95e>] virtnet_open+0x32/0x114) [<000000000048cbac>] dev_open+0xb0/0xe8 [<000000000048b6a2>] dev_change_flags+0x156/0x1cc [<00000000004ead02>] devinet_ioctl+0x5ae/0x728 [<00000000004eb564>] inet_ioctl+0xa4/0xf0 [<00000000004798dc>] sock_ioctl+0x90/0x2e4 [<00000000001b8bd2>] do_ioctl+0x4a/0xd4 [<00000000001b8cda>] vfs_ioctl+0x7e/0x3c8 [<00000000001b90b6>] sys_ioctl+0x92/0xa4 [<0000000000112e7c>] sysc_noemu+0x10/0x16 [<000002000012c7e6>] 0x2000012c7e6 ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel