get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 814164,
    "url": "http://patchwork.ozlabs.org/api/patches/814164/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170915084030.40988-2-aik@ozlabs.ru/",
    "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": "<20170915084030.40988-2-aik@ozlabs.ru>",
    "list_archive_url": null,
    "date": "2017-09-15T08:40:18",
    "name": "[qemu,v2,01/13] memory: Postpone flatview and dispatch tree building till all devices are added",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "cbc3563d22f7e89916801b0a42820db08d4d5091",
    "submitter": {
        "id": 7621,
        "url": "http://patchwork.ozlabs.org/api/people/7621/?format=api",
        "name": "Alexey Kardashevskiy",
        "email": "aik@ozlabs.ru"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170915084030.40988-2-aik@ozlabs.ru/mbox/",
    "series": [
        {
            "id": 3250,
            "url": "http://patchwork.ozlabs.org/api/series/3250/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=3250",
            "date": "2017-09-15T08:40:21",
            "name": "memory: Reduce memory use",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/3250/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/814164/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/814164/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 3xtq4x5JCdz9sPr\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 15 Sep 2017 18:56:17 +1000 (AEST)",
            "from localhost ([::1]:52023 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 1dsmQ3-0005yS-Qb\n\tfor incoming@patchwork.ozlabs.org; Fri, 15 Sep 2017 04:56:15 -0400",
            "from eggs.gnu.org ([2001:4830:134:3::10]:38434)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <aik@ozlabs.ru>) id 1dsmBU-0007Jz-1p\n\tfor qemu-devel@nongnu.org; Fri, 15 Sep 2017 04:41:13 -0400",
            "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <aik@ozlabs.ru>) id 1dsmBO-0002df-Dp\n\tfor qemu-devel@nongnu.org; Fri, 15 Sep 2017 04:41:12 -0400",
            "from ozlabs.ru ([107.173.13.209]:44990)\n\tby eggs.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <aik@ozlabs.ru>) id 1dsmBO-0002dY-7S\n\tfor qemu-devel@nongnu.org; Fri, 15 Sep 2017 04:41:06 -0400",
            "from vpl1.ozlabs.ibm.com (localhost [IPv6:::1])\n\tby ozlabs.ru (Postfix) with ESMTP id 38A493A60028;\n\tFri, 15 Sep 2017 04:41:49 -0400 (EDT)"
        ],
        "From": "Alexey Kardashevskiy <aik@ozlabs.ru>",
        "To": "qemu-devel@nongnu.org",
        "Date": "Fri, 15 Sep 2017 18:40:18 +1000",
        "Message-Id": "<20170915084030.40988-2-aik@ozlabs.ru>",
        "X-Mailer": "git-send-email 2.11.0",
        "In-Reply-To": "<20170915084030.40988-1-aik@ozlabs.ru>",
        "References": "<20170915084030.40988-1-aik@ozlabs.ru>",
        "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 3.x [fuzzy]",
        "X-Received-From": "107.173.13.209",
        "Subject": "[Qemu-devel] [PATCH qemu v2 01/13] memory: Postpone flatview and\n\tdispatch tree building till all devices are added",
        "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": "Alexey Kardashevskiy <aik@ozlabs.ru>, Paolo Bonzini <pbonzini@redhat.com>",
        "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": "Most devices use at least one address space and every time a new address\nspace is added, flat views and dispatch trees are rebuild for all address\nspaces. This is not a problem for a relatively small amount of devices but\neven 50 virtio-pci devices use more than 8GB of RAM.\n\nWhat happens that on every flatview/dispatch rebuild, new arrays are\nallocated and old ones release but the release is done via RCU so until\nan entire machine is build, they are not released.\n\nThis wraps devices creation into memory_region_transaction_begin/commit\nto massively reduce amount of flat view/dispatch tree (re)allocations.\n\nSigned-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>\n---\nChanges:\nv2:\n* wrapped qemu_run_machine_init_done_notifiers() as well\n---\n vl.c | 9 +++++++++\n 1 file changed, 9 insertions(+)",
    "diff": "diff --git a/vl.c b/vl.c\nindex fb1f05b937..ee3cc7db48 100644\n--- a/vl.c\n+++ b/vl.c\n@@ -4661,12 +4661,16 @@ int main(int argc, char **argv, char **envp)\n     igd_gfx_passthru();\n \n     /* init generic devices */\n+    memory_region_transaction_begin();\n+\n     rom_set_order_override(FW_CFG_ORDER_OVERRIDE_DEVICE);\n     if (qemu_opts_foreach(qemu_find_opts(\"device\"),\n                           device_init_func, NULL, NULL)) {\n         exit(1);\n     }\n \n+    memory_region_transaction_commit();\n+\n     cpu_synchronize_all_post_init();\n \n     rom_reset_order_override();\n@@ -4749,8 +4753,13 @@ int main(int argc, char **argv, char **envp)\n     /* TODO: once all bus devices are qdevified, this should be done\n      * when bus is created by qdev.c */\n     qemu_register_reset(qbus_reset_all_fn, sysbus_get_default());\n+\n+    memory_region_transaction_begin();\n+\n     qemu_run_machine_init_done_notifiers();\n \n+    memory_region_transaction_commit();\n+\n     if (rom_check_and_register_reset() != 0) {\n         error_report(\"rom check and register reset failed\");\n         exit(1);\n",
    "prefixes": [
        "qemu",
        "v2",
        "01/13"
    ]
}