lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 10 May 2012 10:56:09 +0930 From: Rusty Russell <rusty@...tcorp.com.au> To: "Michael S. Tsirkin" <mst@...hat.com>, Paolo Bonzini <pbonzini@...hat.com> Cc: linux-kernel@...r.kernel.org, virtualization@...ts.linux-foundation.org, Amit Shah <amit.shah@...hat.com> Subject: Re: [RFC PATCH] virtio_console: link vq to port with a private pointer in struct virtqueue On Tue, 8 May 2012 13:18:39 +0300, "Michael S. Tsirkin" <mst@...hat.com> wrote: > On Tue, May 08, 2012 at 11:45:55AM +0200, Paolo Bonzini wrote: > > --- a/drivers/virtio/virtio_ring.c > > +++ b/drivers/virtio/virtio_ring.c > > @@ -76,8 +76,6 @@ > > > > struct vring_virtqueue > > { > > - struct virtqueue vq; > > - > > /* Actual memory layout for this queue */ > > struct vring vring; > > > > @@ -106,6 +104,9 @@ struct vring_virtqueue > > /* How to notify other side. FIXME: commonalize hcalls! */ > > void (*notify)(struct virtqueue *vq); > > > > + /* Tokens for callbacks. */ > > + void **data; > > + > > #ifdef DEBUG > > /* They're supposed to lock for us. */ > > unsigned int in_use; > > @@ -115,8 +116,9 @@ struct vring_virtqueue > > ktime_t last_add_time; > > #endif > > > > - /* Tokens for callbacks. */ > > - void *data[]; > > + struct virtqueue vq; > > + > > + /* Bus-specific virtqueue data goes here. */ > > }; > > > > #define to_vvq(_vq) container_of(_vq, struct vring_virtqueue, vq) > > > This moves the data out of line and the bus specific stuff inline. > But bus accesses only happen on io and interrupt which are already > slow, while data accesses happen on fast path. > > >From that POV this looks like a wrong thing to do. (Resend to all) Most of it was on a different cacheline anyway though, so it's probably not measurable. We avoid the pci_vq->vq indirection, but add the vq->data indirection. I share your discomfort with the offset arg method, too. So unless benchmarks show otherwise, let's do it the vanilla way? I think that making vring_virtqueue public looks like the way to go, too. Of course, a nice series would be great as well :) Thanks! Rusty. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists