<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 29, 2019 at 11:09 PM Gerd Hoffmann <<a href="mailto:kraxel@redhat.com">kraxel@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">  Hi,<br>
<br>
>  {<br>
>       if (vbuf->resp_size > MAX_INLINE_RESP_SIZE)<br>
>               kfree(vbuf->resp_buf);<br>
> -     kfree(vbuf->data_buf);<br>
> +     kvfree(vbuf->data_buf);<br>
<br>
if (is_vmalloc_addr(vbuf->data_buf)) ...<br>
<br>
needed here I gues?<br></blockquote><div><br></div><div>kvfree() handles vmalloc/kmalloc/kvmalloc internally by doing that check.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
> +/* Create sg_table from a vmalloc'd buffer. */<br>
> +static struct sg_table *vmalloc_to_sgt(char *data, uint32_t size)<br>
<br>
Hmm, isn't there an existing function for that?<br>
I'd be surprised if virtio-gpu is the first driver needing this ...<br>
<br>
And it case there really isn't one this should probably added to the<br>
vmalloc or scatterlist code, not the virtio-gpu driver.<br></blockquote><div><br></div><div>There's a few other similar ones around:</div><div>- pack_sg_list in net/9p/trans_virtio.c, assumes contiguous array of scatterlist and non-vmalloc</div><div>- videobuf_vmalloc_to_sg in drivers/media/v4l2-core/videobuf-dma-sg.c, assumes contiguous array of scatterlist and that the buffer being converted is page aligned (the l</div><div>- vmalloc_to_sg() in drivers/media/common/saa7146/saa7146_core.c, duplicate of videobuf_vmalloc_to_sg</div><div><br></div><div>None of the existing ones seemed to do what was needed and the convention seemed to pack an sg table as needed for the usage and just keep it in the module so that's what I followed.  I'm not very familiar with these APIs so maybe there's something I missed, but I did look through the helpers in lib/scatterlist.c and didn't see anything.  If you think it is better suited to live in scatterlist I can prepare another change for that.</div><div><br></div><div>Dave</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
cheers,<br>
  Gerd<br>
<br>
</blockquote></div></div>