Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2217460/?format=api
{ "id": 2217460, "url": "http://patchwork.ozlabs.org/api/patches/2217460/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260329113732.482619-1-vikingtc4@gmail.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": "<20260329113732.482619-1-vikingtc4@gmail.com>", "list_archive_url": null, "date": "2026-03-29T11:37:32", "name": "target/mips: save CP0 timer in vmstate", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "35c16dbb39ac5baa4497325f2fa8c9913c4684af", "submitter": { "id": 92831, "url": "http://patchwork.ozlabs.org/api/people/92831/?format=api", "name": "Trieu Huynh", "email": "vikingtc4@gmail.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260329113732.482619-1-vikingtc4@gmail.com/mbox/", "series": [ { "id": 497915, "url": "http://patchwork.ozlabs.org/api/series/497915/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=497915", "date": "2026-03-29T11:37:32", "name": "target/mips: save CP0 timer in vmstate", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/497915/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2217460/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2217460/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@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=d3j+SEuf;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fkC7f06kHz1xrn\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 29 Mar 2026 22:38:36 +1100 (AEDT)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1w6oSi-0002Mv-74; Sun, 29 Mar 2026 07:37:50 -0400", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <vikingtc4@gmail.com>)\n id 1w6oSe-0002Li-GE\n for qemu-devel@nongnu.org; Sun, 29 Mar 2026 07:37:44 -0400", "from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <vikingtc4@gmail.com>)\n id 1w6oSb-00042A-Ot\n for qemu-devel@nongnu.org; Sun, 29 Mar 2026 07:37:43 -0400", "by mail-pg1-x52d.google.com with SMTP id\n 41be03b00d2f7-c7412b07f22so1849638a12.0\n for <qemu-devel@nongnu.org>; Sun, 29 Mar 2026 04:37:41 -0700 (PDT)", "from trieu2-huynh-trieuhpn-ubuntu24.bee-live.svc.cluster.local\n ([27.122.242.65]) by smtp.gmail.com with ESMTPSA id\n d2e1a72fcca58-82ca8467824sm4353108b3a.17.2026.03.29.04.37.36\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Sun, 29 Mar 2026 04:37:38 -0700 (PDT)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1774784259; x=1775389059; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:from:to:cc:subject:date:message-id:reply-to;\n bh=f6tBx4kE4tawEvFskmw/LuVxmCKqiEYHJXY2wQ9tAY4=;\n b=d3j+SEuf1g7Zd/mTmFZ3+N2QGnMm34su4AkYnVziVKA1vuFVP3qEwfr24ddgKNwikU\n SINCn+wOLZbyPSIkwqvugf08ZWRYkfvGtb+vDx6kQ5upprkqZDvI3zDftI9fcKJRiPrl\n 2Z4QFhAIa5rJnL9/Wv4K07SYrleppyCV19ZiPXYjWfwHFFBIuCEAkpcsqw+7rmRtqpsZ\n 1CCU5xKppfRzbPhQx3efc/riGFQoiB20hEckrcv/Hs9ckUPeBaoyDVDqi2o1Ow9r2cib\n WUv3Aq5TsDRRkiAu6IGM2NcllnsEMf/Npl9Vc1R/5lNg2fwwCEQRGa4QB0cFN5nEccjB\n Deag==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774784259; x=1775389059;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=f6tBx4kE4tawEvFskmw/LuVxmCKqiEYHJXY2wQ9tAY4=;\n b=B1CH5ztCK6w5HZvMbQwJsP90wtD1HxTwOiYhtmAZWQYb8QmzxLLRNadvnliSweZupT\n nn7pbALM1v/hRM3j2P/phF9AVdDVwOywnodD8ZCqqDPSBgG2NpZxhQCxz2Uv3VVnw+z4\n xTXsOiEfCU8VWSudLLE2MAFOrO6xQEkbej5O6RH+/bJOf+n8jdpAL5pT0Asup22kLB71\n G1sj9Su+Pm57J3Fdca/RFUFMDQ4v8Zb6XX0mrWZqFn/q239PRmsswBOSi7Xd3y353AUo\n UuJyRfn8ufMm7r4mMIyhH28M4QAZwkHojMMDmhYZG7XZ7dq7h4jnRXe9VXk0i9cG6YpA\n pldQ==", "X-Gm-Message-State": "AOJu0YxSivVZ7ywNWHZxC16YeQI4lqx4WH6h8tEqKACSrsL4U+4qUGpV\n 7TvqVrAG2oe5WtR/ZYRgE94q8wSLpKJmfA8Zc4W6XGLSlhDaObTbWXPZbR6gALkw2M4=", "X-Gm-Gg": "ATEYQzx1Q0KL/byKI0s0ijH3XcVKmSWshVMekFNu9K+Ehp+/FEcbsdLsmPViLl1djWI\n lSVR6px98bwlDwVV8M6Cphu1ggMXMSOnuDM1Y1ZHlvfowB086XjY4LoC7IX/2xUZ7xxpSO6oINB\n Z5JweiAsGFiGdtmCO3NPz7mgLYaEqZUELYNJlxo321U9G5YoLTHHbQfM7cKPLjD0fGpJy83ep0V\n ZQMAF7JuyF9WECxss3LEBubJkTfgnOK0biKe0BheWjB0zH3QmpRfOe7yYjxwt0Smp5H4ETYMRC0\n wQ0fZgQ1oRImY/FTTA656pt49vmH4+tu4YDnApLlZo3okqW/Oar1bPtalROcwq40SwXAjsbslpH\n ZKkqXPFr63d7BdjYCubw6qE/aLqOG3NZBXGaFL70/S2iY94OA/Wmol83akorU3XbD0xso+xrOKM\n oEDF9LeYnj3/8jUBVCgZ7LhTYS1UAvuv5YAoJ99PKhjWHpdQtTtAKkNyZTYy3Jwzjc9kSAxOX8a\n ij2VzDEDg==", "X-Received": "by 2002:a05:6a20:3d87:b0:39c:373b:3b48 with SMTP id\n adf61e73a8af0-39c8ab9ef24mr8169182637.25.1774784259463;\n Sun, 29 Mar 2026 04:37:39 -0700 (PDT)", "From": "Trieu Huynh <vikingtc4@gmail.com>", "To": "qemu-devel@nongnu.org", "Cc": "Trieu Huynh <vikingtc4@gmail.com>, Huacai Chen <chenhuacai@kernel.org>,\n\t=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,\n Aurelien Jarno <aurelien@aurel32.net>, Jiaxun Yang <jiaxun.yang@flygoat.com>,\n Aleksandar Rikalo <arikalo@gmail.com>", "Subject": "[PATCH] target/mips: save CP0 timer in vmstate", "Date": "Sun, 29 Mar 2026 20:37:32 +0900", "Message-ID": "<20260329113732.482619-1-vikingtc4@gmail.com>", "X-Mailer": "git-send-email 2.43.0", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=2607:f8b0:4864:20::52d;\n envelope-from=vikingtc4@gmail.com; helo=mail-pg1-x52d.google.com", "X-Spam_score_int": "-17", "X-Spam_score": "-1.8", "X-Spam_bar": "-", "X-Spam_report": "(-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no", "X-Spam_action": "no action", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "qemu development <qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<https://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 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org" }, "content": "The MIPS R4K CP0 timer (env->timer) is not included in vmstate_mips_cpu,\nso after loadvm the QEMUTimer has no scheduled expiry. This causes\nqemu_poll_ns() to block indefinitely and the guest to freeze until an\nexternal I/O event (e.g. a keypress) wakes the main loop.\n\nFix by adding an optional vmstate subsection for the timer, following\nthe same pattern used by ARM (gt_timer), RISC-V (env.stimer), SPARC\n(qtimer), and OpenRISC (timer).\n\nThe .needed callback returns false when env->timer is NULL (KVM mode),\nkeeping the subsection optional for backwards compatibility with\nexisting snapshots.\n\nnit: when trying to reproduce of this bug requires savevm to work on\nMIPS Malta. That is currently broken by a separate crash in\nvmsd_can_compress() introduced by commit 7aa563630b (\"pc: Start with\nmodern CPU hotplug interface by default\"), which is being tracked and\nfixed independently [1], [2]. This fix is independent of that crash and\ntouches no shared code.\n\n[1] https://lore.kernel.org/qemu-devel/20260316194759.22672-1-farosas@suse.de/\n[2] https://lore.kernel.org/qemu-devel/87341zsvmc.fsf@suse.de/\n\nResolves: https://gitlab.com/qemu-project/qemu/-/issues/1987\n\nSigned-off-by: Trieu Huynh <vikingtc4@gmail.com>\n---\n target/mips/system/machine.c | 22 ++++++++++++++++++++++\n 1 file changed, 22 insertions(+)", "diff": "diff --git a/target/mips/system/machine.c b/target/mips/system/machine.c\nindex 8af11fd896..473d3ab036 100644\n--- a/target/mips/system/machine.c\n+++ b/target/mips/system/machine.c\n@@ -3,6 +3,7 @@\n #include \"internal.h\"\n #include \"migration/cpu.h\"\n #include \"fpu_helper.h\"\n+#include \"qemu/timer.h\"\n \n static int cpu_post_load(void *opaque, int version_id)\n {\n@@ -219,6 +220,23 @@ static const VMStateDescription vmstate_tlb = {\n \n /* MIPS CPU state */\n \n+static bool mips_timer_needed(void *opaque)\n+{\n+ MIPSCPU *cpu = opaque;\n+ return cpu->env.timer != NULL;\n+}\n+\n+static const VMStateDescription mips_vmstate_timer = {\n+ .name = \"cpu/timer\",\n+ .version_id = 1,\n+ .minimum_version_id = 1,\n+ .needed = mips_timer_needed,\n+ .fields = (const VMStateField[]) {\n+ VMSTATE_TIMER_PTR(env.timer, MIPSCPU),\n+ VMSTATE_END_OF_LIST()\n+ }\n+};\n+\n const VMStateDescription vmstate_mips_cpu = {\n .name = \"cpu\",\n .version_id = 21,\n@@ -333,4 +351,8 @@ const VMStateDescription vmstate_mips_cpu = {\n \n VMSTATE_END_OF_LIST()\n },\n+ .subsections = (const VMStateDescription * const []) {\n+ &mips_vmstate_timer,\n+ NULL\n+ }\n };\n", "prefixes": [] }