Paul Brook wrote:
On Thursday 04 December 2008, Anthony Liguori wrote:
Hollis Blanchard wrote:
On Thu, 2008-12-04 at 20:33 +0000, Anthony Liguori wrote:
+static void balloon_page(void *addr, int deflate)
+{
+#if defined(__linux__)
+    if (!kvm_enabled() || kvm_has_sync_mmu())
+        madvise(addr, TARGET_PAGE_SIZE,
+                deflate ? MADV_WILLNEED : MADV_DONTNEED);
+#endif
+}
Hmm, I just noticed this... we need to use VIRTIO_BALLOON_PFN_SHIFT like
Rusty did on the kernel side.

However, in general I'm not sure how this is supposed to work. Isn't it
true that madvise() is a no-op if 0 < length < getpagesize()? If so, how
should the guest know the chunk size needed on the host?
We need to pass multiple of TARGET_PAGE_SIZE to madvise()

You mean HOST_PAGE_SIZE?

I change my previous answer :-)

I think we should just pass addr and the appropriate size of the memory the guest is ballooning. Whether the host can handle it is up to it. Worst case scenario, madvise() returns an error and no harm is done.

Regards,

Anthony Liguori

My linux manpage says that the address must be page aligned.

Paul

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to