> On 20/05/2016 11:59, Liang Li wrote: > > + > > + sg_init_table(sg, 5); > > + sg_set_buf(&sg[0], &flags, sizeof(flags)); > > + sg_set_buf(&sg[1], &start_pfn, sizeof(start_pfn)); > > + sg_set_buf(&sg[2], &page_shift, sizeof(page_shift)); > > + sg_set_buf(&sg[3], &bmap_len, sizeof(bmap_len)); > > These four should probably be placed in a single struct and therefore a single > sg entry. It might even be faster to place it together with the bitmap, thus > avoiding the use of indirect descriptors. > Yes, thanks for your suggestion. > You should also test ballooning of a 64GB guest after filling in the page cache, > not just ballooning of a freshly booted 4GB guest. This will give you a much > more sparse bitmap. Still, the improvement in sending PFNs to the host are I will include the test result for that case in next version. Thanks, Liang > impressive. > > Thanks, > > Paolo > > > + sg_set_buf(&sg[4], vb->page_bitmap + > > + (start_pfn / BITS_PER_LONG), bmap_len); > > + virtqueue_add_outbuf(vq, sg, 5, vb, GFP_KERNEL); ��.n��������+%������w��{.n�����o�^n�r������&��z�ޗ�zf���h���~����������_��+v���)ߣ�