On 11.08.2017 23:00, Nitesh Narayan Lal wrote: > Hi, > > In my project of "Guest Page Hinting"[1], I have a list of pages which > are supposed to be passed to the host. Now I am trying to figure out the > changes which I should make in QEMU in order to pass this request to the > host. Will you only inform about "this page is free" or also about "I will reuse this page" if you agree? (relevant because of VIRTIO_BALLOON_F_MUST_TELL_HOST) > > Unlike virtio balloon where the request to deflate/inflate is derived > from the host, in my case, I need to figure out how the request which is > generated in the guest could be received in QEMU. One way to go about > this is to have my own function pointer pointing a to a function > qemu_page_hinting() in virtio-balloon.c under QEMU. Now the part where I > am not sure is how exactly I will ensure that when virtqueue_kick > arrives in QEMU this function is invoked. (I am planning to use the same > deflate_vq for my use-case). Requests to inflate/deflate are always communicated via config updates. The inflate queue is always guest->host controlled: tell_host() waits until control is handed back. On the QEMU side, virtio_balloon_handle_output() will simply MADV_DONTNEED, independent of any requested config changes if I am not mistaking. > > Another way could be to make changes in the existing > "virtio_balloon_handle_output" and may add another flag in the virtqueue > structure using which I could distinguish if it's a guest page hinting > request. But even in this case, I am not sure how will it work because > from what I understood when a user sends a deflate request then this > function gets invoked and after all the processing it notifies the > guest. (Which is opposite of what I am trying to achieve). Can you elaborate what exactly the problem is with virtio_balloon_handle_output()? >From what I recap: 1. the queue is completely guest->host controlled 2. after every inflate/deflate request, control is given back to the guest > > Any suggestion what should be the right way to go forward? > > [1] https://www.spinics.net/lists/kvm/msg153666.html > -- Thanks, David