On Sep 5, 2014 3:55 AM, "Paolo Bonzini" <pbonzini@xxxxxxxxxx> wrote: > > Il 03/09/2014 06:29, Rusty Russell ha scritto: > > + desc = kmalloc(total_sg * sizeof(struct vring_desc), gfp); > > + if (!desc) > > + return NULL; > > > > - return head; > > + for (i = 0; i < total_sg; i++) > > + desc[i].next = i+1; > > + return desc; > > } > > Would it make sense to keep a cache of a few (say) 8- or 16-element > indirect descriptors? You'd only have to do this ugly (and slowish) for > loop on the first allocation. > > Also, since this is mostly an aesthetic patch, > > > + if (indirect) > > + vq->free_head = vq->vring.desc[head].next; > > + else > > + vq->free_head = i; > > I'd move the indirect case above, where the vring.desc[head] is actually > allocated. > Please don't: I'll just have to undo it for the DMA API stuff, since descriptor setup will be able to fail. --Andy _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization