Will Deacon <will.deacon@xxxxxxx> writes: > On Thu, Oct 18, 2012 at 03:19:06AM +0100, Rusty Russell wrote: >> We do have an alternate solution: masking out __GFP_HIGHMEM from the >> kmalloc of desc. If it fails, we will fall back to laying out the >> virtio request directly inside the ring; if it doesn't fit, we'll wait >> for the device to consume more buffers. > > Hmm, that will probably work for the vring but the zero-copy code for 9p may > just give us an address from userspace if I'm understanding it correctly. In > that case, we really have to do the translation as below (which is actually > much cleaner because everything is page-aligned). > >> > @@ -325,7 +326,7 @@ static int p9_get_mapped_pages(struct virtio_chan *chan, >> > int count = nr_pages; >> > while (nr_pages) { >> > s = rest_of_page(data); >> > - pages[index++] = virt_to_page(data); >> > + pages[index++] = kmap_to_page(data); >> > data += s; >> > nr_pages--; >> > } > > So what do you reckon? How about I leave this hunk as a separate patch and > have a play masking out __GFP_HIGHMEM for the vring descriptor? Yes, I think so. A scathing comment would be nice, too... Thanks, Rusty. _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization