Show a cover letter.

GET /api/covers/806487/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 806487,
    "url": "http://patchwork.ozlabs.org/api/covers/806487/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/cover/1503914913-28893-1-git-send-email-wei.w.wang@intel.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<1503914913-28893-1-git-send-email-wei.w.wang@intel.com>",
    "list_archive_url": null,
    "date": "2017-08-28T10:08:28",
    "name": "[v15,0/5] Virtio-balloon Enhancement",
    "submitter": {
        "id": 69100,
        "url": "http://patchwork.ozlabs.org/api/people/69100/?format=api",
        "name": "Wang, Wei W",
        "email": "wei.w.wang@intel.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/cover/1503914913-28893-1-git-send-email-wei.w.wang@intel.com/mbox/",
    "series": [
        {
            "id": 126,
            "url": "http://patchwork.ozlabs.org/api/series/126/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=126",
            "date": "2017-08-28T10:08:28",
            "name": "Virtio-balloon Enhancement",
            "version": 15,
            "mbox": "http://patchwork.ozlabs.org/series/126/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/806487/comments/",
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)",
        "Received": [
            "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xgnq90s1qz9s8P\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon, 28 Aug 2017 20:21:07 +1000 (AEST)",
            "from localhost ([::1]:37849 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dmHAG-0001xz-Bx\n\tfor incoming@patchwork.ozlabs.org; Mon, 28 Aug 2017 06:21:04 -0400",
            "from eggs.gnu.org ([2001:4830:134:3::10]:57798)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <wei.w.wang@intel.com>) id 1dmH9j-0001xa-6v\n\tfor qemu-devel@nongnu.org; Mon, 28 Aug 2017 06:20:32 -0400",
            "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <wei.w.wang@intel.com>) id 1dmH9f-0005ug-6N\n\tfor qemu-devel@nongnu.org; Mon, 28 Aug 2017 06:20:31 -0400",
            "from mga04.intel.com ([192.55.52.120]:11758)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <wei.w.wang@intel.com>)\n\tid 1dmH9e-0005rT-NR\n\tfor qemu-devel@nongnu.org; Mon, 28 Aug 2017 06:20:27 -0400",
            "from orsmga003.jf.intel.com ([10.7.209.27])\n\tby fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t28 Aug 2017 03:20:23 -0700",
            "from devel-ww.sh.intel.com ([10.239.48.92])\n\tby orsmga003.jf.intel.com with ESMTP; 28 Aug 2017 03:20:19 -0700"
        ],
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos; i=\"5.41,441,1498546800\"; d=\"scan'208\";\n\ta=\"1008318932\"",
        "From": "Wei Wang <wei.w.wang@intel.com>",
        "To": "virtio-dev@lists.oasis-open.org, linux-kernel@vger.kernel.org,\n\tqemu-devel@nongnu.org, virtualization@lists.linux-foundation.org,\n\tkvm@vger.kernel.org, linux-mm@kvack.org, mst@redhat.com,\n\tmhocko@kernel.org, akpm@linux-foundation.org, mawilcox@microsoft.com",
        "Date": "Mon, 28 Aug 2017 18:08:28 +0800",
        "Message-Id": "<1503914913-28893-1-git-send-email-wei.w.wang@intel.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "X-detected-operating-system": "by eggs.gnu.org: Genre and OS details not\n\trecognized.",
        "X-Received-From": "192.55.52.120",
        "Subject": "[Qemu-devel] [PATCH v15 0/5] Virtio-balloon Enhancement",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.21",
        "Precedence": "list",
        "List-Id": "<qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.nongnu.org/archive/html/qemu-devel/>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Cc": "aarcange@redhat.com, yang.zhang.wz@gmail.com, david@redhat.com,\n\tliliang.opensource@gmail.com, willy@infradead.org,\n\tamit.shah@redhat.com, wei.w.wang@intel.com, quan.xu@aliyun.com,\n\tcornelia.huck@de.ibm.com, pbonzini@redhat.com,\n\tmgorman@techsingularity.net",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"
    },
    "content": "This patch series enhances the existing virtio-balloon with the following\nnew features:\n1) fast ballooning: transfer ballooned pages between the guest and host in\nchunks using sgs, instead of one by one; and\n2) free page block reporting: a new virtqueue to report guest free pages\nto the host.\n\nThe second feature can be used to accelerate live migration of VMs. Here\nare some details:\n\nLive migration needs to transfer the VM's memory from the source machine\nto the destination round by round. For the 1st round, all the VM's memory\nis transferred. From the 2nd round, only the pieces of memory that were\nwritten by the guest (after the 1st round) are transferred. One method\nthat is popularly used by the hypervisor to track which part of memory is\nwritten is to write-protect all the guest memory.\n\nThe second feature  enables the optimization of the 1st round memory\ntransfer - the hypervisor can skip the transfer of guest free pages in the\n1st round. It is not concerned that the memory pages are used after they\nare given to the hypervisor as a hint of the free pages, because they will\nbe tracked by the hypervisor and transferred in the next round if they are\nused and written.\n\nChange Log:\nv14->v15:\n1) mm: make the report callback return a bool value - returning 1 to stop\nwalking through the free page list.\n2) virtio-balloon: batching sgs of balloon pages till the vq is full\n3) virtio-balloon: create a new workqueue, rather than using the default\nsystem_wq, to queue the free page reporting work item.\n4) virtio-balloon: add a ctrl_vq to be a central control plane which will\nhandle all the future control related commands between the host and guest.\nAdd free page report as the first feature controlled under ctrl_vq, and\nthe free_page_vq is a data plane vq dedicated to the transmission of free\npage blocks.\n\nv13->v14:\n1) xbitmap: move the code from lib/radix-tree.c to lib/xbitmap.c.\n2) xbitmap: consolidate the implementation of xb_bit_set/clear/test into\none xb_bit_ops.\n3) xbitmap: add documents for the exported APIs.\n4) mm: rewrite the function to walk through free page blocks.\n5) virtio-balloon: when reporting a free page blcok to the device, if the\nvq is full (less likey to happen in practice), just skip reporting this\nblock, instead of busywaiting till an entry gets released.\n6) virtio-balloon: fail the probe function if adding the signal buf in\ninit_vqs fails.\n\nv12->v13:\n1) mm: use a callback function to handle the the free page blocks from the\nreport function. This avoids exposing the zone internal to a kernel\nmodule.\n2) virtio-balloon: send balloon pages or a free page block using a single\nsg each time. This has the benefits of simpler implementation with no new\nAPIs.\n3) virtio-balloon: the free_page_vq is used to report free pages only (no\nmultiple usages interleaving)\n4) virtio-balloon: Balloon pages and free page blocks are sent via input\nsgs, and the completion signal to the host is sent via an output sg.\n\nv11->v12:\n1) xbitmap: use the xbitmap from Matthew Wilcox to record ballooned pages.\n2) virtio-ring: enable the driver to build up a desc chain using vring\ndesc.\n3) virtio-ring: Add locking to the existing START_USE() and END_USE()\nmacro to lock/unlock the vq when a vq operation starts/ends.\n4) virtio-ring: add virtqueue_kick_sync() and virtqueue_kick_async()\n5) virtio-balloon: describe chunks of ballooned pages and free pages\nblocks directly using one or more chains of desc from the vq.\n\nv10->v11:\n1) virtio_balloon: use vring_desc to describe a chunk;\n2) virtio_ring: support to add an indirect desc table to virtqueue;\n3)  virtio_balloon: use cmdq to report guest memory statistics.\n\nv9->v10:\n1) mm: put report_unused_page_block() under CONFIG_VIRTIO_BALLOON;\n2) virtio-balloon: add virtballoon_validate();\n3) virtio-balloon: msg format change;\n4) virtio-balloon: move miscq handling to a task on system_freezable_wq;\n5) virtio-balloon: code cleanup.\n\nv8->v9:\n1) Split the two new features, VIRTIO_BALLOON_F_BALLOON_CHUNKS and\nVIRTIO_BALLOON_F_MISC_VQ, which were mixed together in the previous\nimplementation;\n2) Simpler function to get the free page block.\n\nv7->v8:\n1) Use only one chunk format, instead of two.\n2) re-write the virtio-balloon implementation patch.\n3) commit changes\n4) patch re-org\n\n\nMatthew Wilcox (1):\n  lib/xbitmap: Introduce xbitmap\n\nWei Wang (4):\n  lib/xbitmap: add xb_find_next_bit() and xb_zero()\n  virtio-balloon: VIRTIO_BALLOON_F_SG\n  mm: support reporting free page blocks\n  virtio-balloon: VIRTIO_BALLOON_F_CTRL_VQ\n\n drivers/virtio/virtio_balloon.c     | 418 ++++++++++++++++++++++++++++++++----\n include/linux/mm.h                  |   5 +\n include/linux/radix-tree.h          |   3 +\n include/linux/xbitmap.h             |  64 ++++++\n include/uapi/linux/virtio_balloon.h |  16 ++\n lib/Makefile                        |   2 +-\n lib/radix-tree.c                    |  22 +-\n lib/xbitmap.c                       | 215 +++++++++++++++++++\n mm/page_alloc.c                     |  65 ++++++\n 9 files changed, 769 insertions(+), 41 deletions(-)\n create mode 100644 include/linux/xbitmap.h\n create mode 100644 lib/xbitmap.c"
}