On 19/01/2016 13:09, Cornelia Huck wrote: >> > The next patch will make virtqueue_pop/vring_pop allocate memory for a > s/will make/will make it possible for/ > > ?
This patch will actually do that. This patch makes it possible. > I had to spend some time grepping through the code to find that blk and > scsi (and gpu, which already had elem at the beginning of its > structure) are the only ones that work like this and that other devices > do not need any change. > >> > "subclass" of VirtQueueElement. For this to work, VirtQueueElement >> > must be the first field in the containing struct. So... The next patch will make virtqueue_pop/vring_pop allocate memory for the VirtQueueElement. In some cases (blk, scsi, gpu) the device wants to extend VirtQueueElement with device-specific fields and, until now, the place of the VirtQueueElement within the containing struct didn't matter. When allocating the entire block in virtqueue_pop/vring_pop, however, the containing struct must basically be a "subclass" of VirtQueueElement, with the VirtQueueElement as the first field. Make that the case for blk and scsi; gpu is already doing it. Paolo >> > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> >> > --- >> > hw/scsi/virtio-scsi.c | 3 +-- >> > include/hw/virtio/virtio-blk.h | 2 +- >> > include/hw/virtio/virtio-scsi.h | 13 ++++++------- >> > 3 files changed, 8 insertions(+), 10 deletions(-) > Otherwise, > > Reviewed-by: Cornelia Huck <cornelia.h...@de.ibm.com> > > >