get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.2/patches/812222/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 812222,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/812222/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170911044157.15403-3-haozhong.zhang@intel.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/1.2/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": "<20170911044157.15403-3-haozhong.zhang@intel.com>",
    "list_archive_url": null,
    "date": "2017-09-11T04:41:49",
    "name": "[RFC,QEMU,v3,02/10] hw/xen-hvm: create the hotplug memory region on Xen",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "f7ffd2d60127e5772c5b1b431288f032beda7c42",
    "submitter": {
        "id": 67323,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/67323/?format=api",
        "name": "Haozhong Zhang",
        "email": "haozhong.zhang@intel.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170911044157.15403-3-haozhong.zhang@intel.com/mbox/",
    "series": [
        {
            "id": 2436,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/2436/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=2436",
            "date": "2017-09-11T04:41:49",
            "name": null,
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/2436/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/812222/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/812222/checks/",
    "tags": {},
    "related": [],
    "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 3xrFfp5lQhz9sxR\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon, 11 Sep 2017 14:43:09 +1000 (AEST)",
            "from localhost ([::1]:55353 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 1drGYt-0000tG-4Y\n\tfor incoming@patchwork.ozlabs.org; Mon, 11 Sep 2017 00:43:07 -0400",
            "from eggs.gnu.org ([2001:4830:134:3::10]:56193)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <haozhong.zhang@intel.com>) id 1drGY5-0000rv-1D\n\tfor qemu-devel@nongnu.org; Mon, 11 Sep 2017 00:42:18 -0400",
            "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <haozhong.zhang@intel.com>) id 1drGY1-0004VO-82\n\tfor qemu-devel@nongnu.org; Mon, 11 Sep 2017 00:42:17 -0400",
            "from mga04.intel.com ([192.55.52.120]:23374)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <haozhong.zhang@intel.com>)\n\tid 1drGY0-0004UV-Sk\n\tfor qemu-devel@nongnu.org; Mon, 11 Sep 2017 00:42:13 -0400",
            "from fmsmga002.fm.intel.com ([10.253.24.26])\n\tby fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t10 Sep 2017 21:42:11 -0700",
            "from hz-desktop.sh.intel.com (HELO localhost) ([10.239.159.142])\n\tby fmsmga002.fm.intel.com with ESMTP; 10 Sep 2017 21:42:08 -0700"
        ],
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos; i=\"5.42,376,1500966000\"; d=\"scan'208\";\n\ta=\"1217079098\"",
        "From": "Haozhong Zhang <haozhong.zhang@intel.com>",
        "To": "qemu-devel@nongnu.org,\n\txen-devel@lists.xen.org",
        "Date": "Mon, 11 Sep 2017 12:41:49 +0800",
        "Message-Id": "<20170911044157.15403-3-haozhong.zhang@intel.com>",
        "X-Mailer": "git-send-email 2.11.0",
        "In-Reply-To": "<20170911044157.15403-1-haozhong.zhang@intel.com>",
        "References": "<20170911044157.15403-1-haozhong.zhang@intel.com>",
        "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] [RFC QEMU PATCH v3 02/10] hw/xen-hvm: create the\n\thotplug memory region on Xen",
        "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": "Haozhong Zhang <haozhong.zhang@intel.com>,\n\tStefano Stabellini <sstabellini@kernel.org>,\n\tEduardo Habkost <ehabkost@redhat.com>,\n\tKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>,\n\t\"Michael S. Tsirkin\" <mst@redhat.com>,\n\tPaolo Bonzini <pbonzini@redhat.com>, \n\tAnthony Perard <anthony.perard@citrix.com>,\n\tChao Peng <chao.p.peng@linux.intel.com>,\n\tDan Williams <dan.j.williams@intel.com>,\n\tRichard Henderson <rth@twiddle.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": "The guest physical address of vNVDIMM is allocated from the hotplug\nmemory region, which is not created when QEMU is used as Xen device\nmodel. In order to use vNVDIMM for Xen HVM domains, this commit reuses\nthe code for pc machine type to create the hotplug memory region for\nXen HVM domains.\n\nSigned-off-by: Haozhong Zhang <haozhong.zhang@intel.com>\n---\nCc: Paolo Bonzini <pbonzini@redhat.com>\nCc: Richard Henderson <rth@twiddle.net>\nCC: Eduardo Habkost <ehabkost@redhat.com>\nCc: \"Michael S. Tsirkin\" <mst@redhat.com>\nCc: Stefano Stabellini <sstabellini@kernel.org>\nCc: Anthony Perard <anthony.perard@citrix.com>\n---\n hw/i386/pc.c          | 86 ++++++++++++++++++++++++++++-----------------------\n hw/i386/xen/xen-hvm.c |  2 ++\n include/hw/i386/pc.h  |  1 +\n 3 files changed, 51 insertions(+), 38 deletions(-)",
    "diff": "diff --git a/hw/i386/pc.c b/hw/i386/pc.c\nindex 21081041d5..5cbdce61a7 100644\n--- a/hw/i386/pc.c\n+++ b/hw/i386/pc.c\n@@ -1347,6 +1347,53 @@ void xen_load_linux(PCMachineState *pcms)\n     pcms->fw_cfg = fw_cfg;\n }\n \n+void pc_memory_hotplug_init(PCMachineState *pcms, MemoryRegion *system_memory)\n+{\n+    MachineState *machine = MACHINE(pcms);\n+    PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);\n+    ram_addr_t hotplug_mem_size = machine->maxram_size - machine->ram_size;\n+\n+    if (!pcmc->has_reserved_memory || machine->ram_size >= machine->maxram_size)\n+        return;\n+\n+    if (memory_region_size(&pcms->hotplug_memory.mr)) {\n+        error_report(\"hotplug memory region has been initialized\");\n+        exit(EXIT_FAILURE);\n+    }\n+\n+    if (machine->ram_slots > ACPI_MAX_RAM_SLOTS) {\n+        error_report(\"unsupported amount of memory slots: %\"PRIu64,\n+                     machine->ram_slots);\n+        exit(EXIT_FAILURE);\n+    }\n+\n+    if (QEMU_ALIGN_UP(machine->maxram_size,\n+                      TARGET_PAGE_SIZE) != machine->maxram_size) {\n+        error_report(\"maximum memory size must by aligned to multiple of \"\n+                     \"%d bytes\", TARGET_PAGE_SIZE);\n+        exit(EXIT_FAILURE);\n+    }\n+\n+    pcms->hotplug_memory.base =\n+        ROUND_UP(0x100000000ULL + pcms->above_4g_mem_size, 1ULL << 30);\n+\n+    if (pcmc->enforce_aligned_dimm) {\n+        /* size hotplug region assuming 1G page max alignment per slot */\n+        hotplug_mem_size += (1ULL << 30) * machine->ram_slots;\n+    }\n+\n+    if ((pcms->hotplug_memory.base + hotplug_mem_size) < hotplug_mem_size) {\n+        error_report(\"unsupported amount of maximum memory: \" RAM_ADDR_FMT,\n+                     machine->maxram_size);\n+        exit(EXIT_FAILURE);\n+    }\n+\n+    memory_region_init(&pcms->hotplug_memory.mr, OBJECT(pcms),\n+                       \"hotplug-memory\", hotplug_mem_size);\n+    memory_region_add_subregion(system_memory, pcms->hotplug_memory.base,\n+                                &pcms->hotplug_memory.mr);\n+}\n+\n void pc_memory_init(PCMachineState *pcms,\n                     MemoryRegion *system_memory,\n                     MemoryRegion *rom_memory,\n@@ -1398,44 +1445,7 @@ void pc_memory_init(PCMachineState *pcms,\n     }\n \n     /* initialize hotplug memory address space */\n-    if (pcmc->has_reserved_memory &&\n-        (machine->ram_size < machine->maxram_size)) {\n-        ram_addr_t hotplug_mem_size =\n-            machine->maxram_size - machine->ram_size;\n-\n-        if (machine->ram_slots > ACPI_MAX_RAM_SLOTS) {\n-            error_report(\"unsupported amount of memory slots: %\"PRIu64,\n-                         machine->ram_slots);\n-            exit(EXIT_FAILURE);\n-        }\n-\n-        if (QEMU_ALIGN_UP(machine->maxram_size,\n-                          TARGET_PAGE_SIZE) != machine->maxram_size) {\n-            error_report(\"maximum memory size must by aligned to multiple of \"\n-                         \"%d bytes\", TARGET_PAGE_SIZE);\n-            exit(EXIT_FAILURE);\n-        }\n-\n-        pcms->hotplug_memory.base =\n-            ROUND_UP(0x100000000ULL + pcms->above_4g_mem_size, 1ULL << 30);\n-\n-        if (pcmc->enforce_aligned_dimm) {\n-            /* size hotplug region assuming 1G page max alignment per slot */\n-            hotplug_mem_size += (1ULL << 30) * machine->ram_slots;\n-        }\n-\n-        if ((pcms->hotplug_memory.base + hotplug_mem_size) <\n-            hotplug_mem_size) {\n-            error_report(\"unsupported amount of maximum memory: \" RAM_ADDR_FMT,\n-                         machine->maxram_size);\n-            exit(EXIT_FAILURE);\n-        }\n-\n-        memory_region_init(&pcms->hotplug_memory.mr, OBJECT(pcms),\n-                           \"hotplug-memory\", hotplug_mem_size);\n-        memory_region_add_subregion(system_memory, pcms->hotplug_memory.base,\n-                                    &pcms->hotplug_memory.mr);\n-    }\n+    pc_memory_hotplug_init(pcms, system_memory);\n \n     /* Initialize PC system firmware */\n     pc_system_firmware_init(rom_memory, !pcmc->pci_enabled);\ndiff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c\nindex d9ccd5d0d6..90163e1a1b 100644\n--- a/hw/i386/xen/xen-hvm.c\n+++ b/hw/i386/xen/xen-hvm.c\n@@ -235,6 +235,8 @@ static void xen_ram_init(PCMachineState *pcms,\n                                  pcms->above_4g_mem_size);\n         memory_region_add_subregion(sysmem, 0x100000000ULL, &ram_hi);\n     }\n+\n+    pc_memory_hotplug_init(pcms, sysmem);\n }\n \n void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, MemoryRegion *mr,\ndiff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h\nindex 8226904524..b65c5dd5ec 100644\n--- a/include/hw/i386/pc.h\n+++ b/include/hw/i386/pc.h\n@@ -249,6 +249,7 @@ void pc_memory_init(PCMachineState *pcms,\n                     MemoryRegion *system_memory,\n                     MemoryRegion *rom_memory,\n                     MemoryRegion **ram_memory);\n+void pc_memory_hotplug_init(PCMachineState *pcms, MemoryRegion *system_memory);\n qemu_irq pc_allocate_cpu_irq(void);\n DeviceState *pc_vga_init(ISABus *isa_bus, PCIBus *pci_bus);\n void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi,\n",
    "prefixes": [
        "RFC",
        "QEMU",
        "v3",
        "02/10"
    ]
}