get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2227468,
    "url": "http://patchwork.ozlabs.org/api/patches/2227468/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260423191958.1440-20-farosas@suse.de/",
    "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": "<20260423191958.1440-20-farosas@suse.de>",
    "list_archive_url": null,
    "date": "2026-04-23T19:19:33",
    "name": "[PULL,19/43] migration: drop VMStateField.err_hint",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "03cc35d85cc4ac7dbc9772499218e89c4f103fa8",
    "submitter": {
        "id": 85343,
        "url": "http://patchwork.ozlabs.org/api/people/85343/?format=api",
        "name": "Fabiano Rosas",
        "email": "farosas@suse.de"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260423191958.1440-20-farosas@suse.de/mbox/",
    "series": [
        {
            "id": 501236,
            "url": "http://patchwork.ozlabs.org/api/series/501236/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=501236",
            "date": "2026-04-23T19:19:14",
            "name": "[PULL,01/43] checkpatch: Allow spaces after all coroutine annotations",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/501236/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2227468/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2227468/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 (1024-bit key;\n unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256\n header.s=susede2_rsa header.b=xb6yACTe;\n\tdkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=9Gw/GePn;\n\tdkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.a=rsa-sha256 header.s=susede2_rsa header.b=xb6yACTe;\n\tdkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=9Gw/GePn;\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=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)",
            "smtp-out1.suse.de;\n dkim=pass header.d=suse.de header.s=susede2_rsa header.b=xb6yACTe;\n dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=\"9Gw/GePn\""
        ],
        "Received": [
            "from lists1p.gnu.org (lists1p.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 4g1mH74VVhz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 05:24:03 +1000 (AEST)",
            "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wFzcb-00048P-VH; Thu, 23 Apr 2026 15:21:58 -0400",
            "from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <farosas@suse.de>) id 1wFzcN-0003P8-Sy\n for qemu-devel@nongnu.org; Thu, 23 Apr 2026 15:21:45 -0400",
            "from smtp-out1.suse.de ([2a07:de40:b251:101:10:150:64:1])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <farosas@suse.de>) id 1wFzcJ-00027L-BG\n for qemu-devel@nongnu.org; Thu, 23 Apr 2026 15:21:43 -0400",
            "from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org\n [IPv6:2a07:de40:b281:104:10:150:64:97])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by smtp-out1.suse.de (Postfix) with ESMTPS id 4F6F16A8AA;\n Thu, 23 Apr 2026 19:20:29 +0000 (UTC)",
            "from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id DBEE1593A3;\n Thu, 23 Apr 2026 19:20:27 +0000 (UTC)",
            "from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])\n by imap1.dmz-prg2.suse.org with ESMTPSA id AIa+Kftw6mlJCwAAD6G6ig\n (envelope-from <farosas@suse.de>); Thu, 23 Apr 2026 19:20:27 +0000"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n t=1776972029;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=ueTjPgmSW7EvLie0P/K66Rj7p5HsTRZ1DFjF4HaBNKE=;\n b=xb6yACTeFWMGD5IrtZ0Qqe2l3Y/BoZCfJzwXIRRvWtuQdkcyrnFsqxEGL38J5OZuLODZIL\n 1s4ZIg2LaJfWwGLGEVP2BFaM1x8Yc+W7I+h2foBbFdvT98NBymX6u34DrfxRYPBPrcge2A\n f2b7tUP0xkJPV/Dn4jUaWjlA5fuorc4=",
            "v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_ed25519; t=1776972029;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=ueTjPgmSW7EvLie0P/K66Rj7p5HsTRZ1DFjF4HaBNKE=;\n b=9Gw/GePneQPoIEMQTpcAh2pYt7gnW/JZ+YzMUllr6l0xEDLP+EOlII6kelY4BdS47eE4CP\n 6xYDLFvWDkG1DFAA==",
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n t=1776972029;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=ueTjPgmSW7EvLie0P/K66Rj7p5HsTRZ1DFjF4HaBNKE=;\n b=xb6yACTeFWMGD5IrtZ0Qqe2l3Y/BoZCfJzwXIRRvWtuQdkcyrnFsqxEGL38J5OZuLODZIL\n 1s4ZIg2LaJfWwGLGEVP2BFaM1x8Yc+W7I+h2foBbFdvT98NBymX6u34DrfxRYPBPrcge2A\n f2b7tUP0xkJPV/Dn4jUaWjlA5fuorc4=",
            "v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_ed25519; t=1776972029;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=ueTjPgmSW7EvLie0P/K66Rj7p5HsTRZ1DFjF4HaBNKE=;\n b=9Gw/GePneQPoIEMQTpcAh2pYt7gnW/JZ+YzMUllr6l0xEDLP+EOlII6kelY4BdS47eE4CP\n 6xYDLFvWDkG1DFAA=="
        ],
        "From": "Fabiano Rosas <farosas@suse.de>",
        "To": "qemu-devel@nongnu.org",
        "Cc": "Peter Xu <peterx@redhat.com>,\n Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,\n Eric Farman <farman@linux.ibm.com>,\n Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>",
        "Subject": "[PULL 19/43] migration: drop VMStateField.err_hint",
        "Date": "Thu, 23 Apr 2026 16:19:33 -0300",
        "Message-ID": "<20260423191958.1440-20-farosas@suse.de>",
        "X-Mailer": "git-send-email 2.51.0",
        "In-Reply-To": "<20260423191958.1440-1-farosas@suse.de>",
        "References": "<20260423191958.1440-1-farosas@suse.de>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-Rspamd-Action": "no action",
        "X-Rspamd-Server": "rspamd2.dmz-prg2.suse.org",
        "X-Spamd-Result": "default: False [-3.01 / 50.00]; BAYES_HAM(-3.00)[100.00%];\n NEURAL_HAM_LONG(-1.00)[-1.000]; MID_CONTAINS_FROM(1.00)[];\n R_MISSING_CHARSET(0.50)[];\n R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];\n NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain];\n MX_GOOD(-0.01)[]; ARC_NA(0.00)[];\n FUZZY_RATELIMITED(0.00)[rspamd.com]; RCVD_COUNT_TWO(0.00)[2];\n MIME_TRACE(0.00)[0:+]; RCVD_VIA_SMTP_AUTH(0.00)[];\n SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];\n TO_DN_SOME(0.00)[];\n RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];\n RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];\n FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[];\n DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim,suse.de:mid,suse.de:email,imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns];\n RCVD_TLS_ALL(0.00)[]; FROM_EQ_ENVFROM(0.00)[];\n RCPT_COUNT_FIVE(0.00)[5];\n DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];\n DKIM_TRACE(0.00)[suse.de:+]",
        "X-Rspamd-Queue-Id": "4F6F16A8AA",
        "X-Spam-Score": "-3.01",
        "Received-SPF": "pass client-ip=2a07:de40:b251:101:10:150:64:1;\n envelope-from=farosas@suse.de; helo=smtp-out1.suse.de",
        "X-Spam_score_int": "-20",
        "X-Spam_score": "-2.1",
        "X-Spam_bar": "--",
        "X-Spam_report": "(-2.1 / 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, 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": "From: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>\n\nThe field is unused, all users of VMSTATE_*_EQUAL pass _err_hint=NULL.\n\nSigned-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>\nAcked-by: Eric Farman <farman@linux.ibm.com>  # s390\nReviewed-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>\nReviewed-by: Peter Xu <peterx@redhat.com>\nLink: https://lore.kernel.org/qemu-devel/20260304212303.667141-18-vsementsov@yandex-team.ru\nSigned-off-by: Fabiano Rosas <farosas@suse.de>\n---\n hw/block/fdc.c              |  2 +-\n hw/display/qxl.c            |  4 ++--\n hw/display/vga.c            |  2 +-\n hw/display/virtio-gpu.c     |  2 +-\n hw/display/vmware_vga.c     |  2 +-\n hw/i386/vmmouse.c           |  2 +-\n hw/ide/ahci.c               |  2 +-\n hw/intc/openpic.c           |  2 +-\n hw/intc/spapr_xive.c        |  2 +-\n hw/intc/xics.c              |  2 +-\n hw/intc/xive.c              |  2 +-\n hw/nvram/eeprom93xx.c       |  2 +-\n hw/pci/pci.c                |  2 +-\n hw/pci/pcie_aer.c           |  2 +-\n hw/ppc/spapr_iommu.c        |  2 +-\n hw/ppc/spapr_pci.c          |  4 ++--\n hw/ppc/spapr_vio.c          |  4 ++--\n hw/s390x/css.c              |  6 +++---\n hw/usb/hcd-uhci.c           |  2 +-\n include/migration/vmstate.h | 36 +++++++++++++++++-------------------\n migration/vmstate-types.c   | 15 ---------------\n target/ppc/machine.c        |  6 +++---\n 22 files changed, 44 insertions(+), 61 deletions(-)",
    "diff": "diff --git a/hw/block/fdc.c b/hw/block/fdc.c\nindex 4585640af9..2c1681b7d0 100644\n--- a/hw/block/fdc.c\n+++ b/hw/block/fdc.c\n@@ -1051,7 +1051,7 @@ const VMStateDescription vmstate_fdc = {\n         VMSTATE_UINT8(config, FDCtrl),\n         VMSTATE_UINT8(lock, FDCtrl),\n         VMSTATE_UINT8(pwrd, FDCtrl),\n-        VMSTATE_UINT8_EQUAL(num_floppies, FDCtrl, NULL),\n+        VMSTATE_UINT8_EQUAL(num_floppies, FDCtrl),\n         VMSTATE_STRUCT_ARRAY(drives, FDCtrl, MAX_FD, 1,\n                              vmstate_fdrive, FDrive),\n         VMSTATE_END_OF_LIST()\ndiff --git a/hw/display/qxl.c b/hw/display/qxl.c\nindex 3d4b563556..f8fd7ee069 100644\n--- a/hw/display/qxl.c\n+++ b/hw/display/qxl.c\n@@ -2442,12 +2442,12 @@ static const VMStateDescription qxl_vmstate = {\n         VMSTATE_UINT32(last_release_offset, PCIQXLDevice),\n         VMSTATE_UINT32(mode, PCIQXLDevice),\n         VMSTATE_UINT32(ssd.unique, PCIQXLDevice),\n-        VMSTATE_INT32_EQUAL(num_memslots, PCIQXLDevice, NULL),\n+        VMSTATE_INT32_EQUAL(num_memslots, PCIQXLDevice),\n         VMSTATE_STRUCT_ARRAY(guest_slots, PCIQXLDevice, NUM_MEMSLOTS, 0,\n                              qxl_memslot, struct guest_slots),\n         VMSTATE_STRUCT(guest_primary.surface, PCIQXLDevice, 0,\n                        qxl_surface, QXLSurfaceCreate),\n-        VMSTATE_INT32_EQUAL(ssd.num_surfaces, PCIQXLDevice, NULL),\n+        VMSTATE_INT32_EQUAL(ssd.num_surfaces, PCIQXLDevice),\n         VMSTATE_VARRAY_INT32(guest_surfaces.cmds, PCIQXLDevice,\n                              ssd.num_surfaces, 0,\n                              vmstate_info_uint64, uint64_t),\ndiff --git a/hw/display/vga.c b/hw/display/vga.c\nindex ee7d97b5c2..0d69a53f27 100644\n--- a/hw/display/vga.c\n+++ b/hw/display/vga.c\n@@ -2160,7 +2160,7 @@ const VMStateDescription vmstate_vga_common = {\n         VMSTATE_BUFFER(palette, VGACommonState),\n \n         VMSTATE_INT32(bank_offset, VGACommonState),\n-        VMSTATE_UINT8_EQUAL(is_vbe_vmstate, VGACommonState, NULL),\n+        VMSTATE_UINT8_EQUAL(is_vbe_vmstate, VGACommonState),\n         VMSTATE_UINT16(vbe_index, VGACommonState),\n         VMSTATE_UINT16_ARRAY(vbe_regs, VGACommonState, VBE_DISPI_INDEX_NB),\n         VMSTATE_UINT32(vbe_start_addr, VGACommonState),\ndiff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c\nindex b998ce8324..dbb72bbb22 100644\n--- a/hw/display/virtio-gpu.c\n+++ b/hw/display/virtio-gpu.c\n@@ -1223,7 +1223,7 @@ static const VMStateDescription vmstate_virtio_gpu_scanouts = {\n     .fields = (const VMStateField[]) {\n         VMSTATE_INT32(parent_obj.enable, struct VirtIOGPU),\n         VMSTATE_UINT32_EQUAL(parent_obj.conf.max_outputs,\n-                             struct VirtIOGPU, NULL),\n+                             struct VirtIOGPU),\n         VMSTATE_STRUCT_VARRAY_UINT32(parent_obj.scanout, struct VirtIOGPU,\n                                      parent_obj.conf.max_outputs, 1,\n                                      vmstate_virtio_gpu_scanout,\ndiff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c\nindex c2c6bc76e9..2b95787ddf 100644\n--- a/hw/display/vmware_vga.c\n+++ b/hw/display/vmware_vga.c\n@@ -1209,7 +1209,7 @@ static const VMStateDescription vmstate_vmware_vga_internal = {\n     .minimum_version_id = 0,\n     .post_load = vmsvga_post_load,\n     .fields = (const VMStateField[]) {\n-        VMSTATE_INT32_EQUAL(new_depth, struct vmsvga_state_s, NULL),\n+        VMSTATE_INT32_EQUAL(new_depth, struct vmsvga_state_s),\n         VMSTATE_INT32(enable, struct vmsvga_state_s),\n         VMSTATE_INT32(config, struct vmsvga_state_s),\n         VMSTATE_INT32(cursor.id, struct vmsvga_state_s),\ndiff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c\nindex c1aeeca0c9..417c3aecb9 100644\n--- a/hw/i386/vmmouse.c\n+++ b/hw/i386/vmmouse.c\n@@ -278,7 +278,7 @@ static const VMStateDescription vmstate_vmmouse = {\n     .minimum_version_id = 0,\n     .post_load = vmmouse_post_load,\n     .fields = (const VMStateField[]) {\n-        VMSTATE_INT32_EQUAL(queue_size, VMMouseState, NULL),\n+        VMSTATE_INT32_EQUAL(queue_size, VMMouseState),\n         VMSTATE_UINT32_ARRAY(queue, VMMouseState, VMMOUSE_QUEUE_SIZE),\n         VMSTATE_UINT16(nb_queue, VMMouseState),\n         VMSTATE_UINT16(status, VMMouseState),\ndiff --git a/hw/ide/ahci.c b/hw/ide/ahci.c\nindex 08f51c8e36..c2b4432b94 100644\n--- a/hw/ide/ahci.c\n+++ b/hw/ide/ahci.c\n@@ -1795,7 +1795,7 @@ const VMStateDescription vmstate_ahci = {\n         VMSTATE_UINT32(control_regs.impl, AHCIState),\n         VMSTATE_UINT32(control_regs.version, AHCIState),\n         VMSTATE_UINT32(idp_index, AHCIState),\n-        VMSTATE_UINT32_EQUAL(ports, AHCIState, NULL),\n+        VMSTATE_UINT32_EQUAL(ports, AHCIState),\n         VMSTATE_END_OF_LIST()\n     },\n };\ndiff --git a/hw/intc/openpic.c b/hw/intc/openpic.c\nindex cd353a04f5..99d2a1e65e 100644\n--- a/hw/intc/openpic.c\n+++ b/hw/intc/openpic.c\n@@ -1477,7 +1477,7 @@ static const VMStateDescription vmstate_openpic = {\n         VMSTATE_UINT32(max_irq, OpenPICState),\n         VMSTATE_STRUCT_VARRAY_UINT32(src, OpenPICState, max_irq, 0,\n                                      vmstate_openpic_irqsource, IRQSource),\n-        VMSTATE_UINT32_EQUAL(nb_cpus, OpenPICState, NULL),\n+        VMSTATE_UINT32_EQUAL(nb_cpus, OpenPICState),\n         VMSTATE_STRUCT_VARRAY_UINT32(dst, OpenPICState, nb_cpus, 0,\n                                      vmstate_openpic_irqdest, IRQDest),\n         VMSTATE_STRUCT_ARRAY(timers, OpenPICState, OPENPIC_MAX_TMR, 0,\ndiff --git a/hw/intc/spapr_xive.c b/hw/intc/spapr_xive.c\nindex 76ab476f59..c30dace4e2 100644\n--- a/hw/intc/spapr_xive.c\n+++ b/hw/intc/spapr_xive.c\n@@ -578,7 +578,7 @@ static const VMStateDescription vmstate_spapr_xive = {\n     .pre_save = vmstate_spapr_xive_pre_save,\n     .post_load = NULL, /* handled at the machine level */\n     .fields = (const VMStateField[]) {\n-        VMSTATE_UINT32_EQUAL(nr_irqs, SpaprXive, NULL),\n+        VMSTATE_UINT32_EQUAL(nr_irqs, SpaprXive),\n         VMSTATE_STRUCT_VARRAY_POINTER_UINT32(eat, SpaprXive, nr_irqs,\n                                      vmstate_spapr_xive_eas, XiveEAS),\n         VMSTATE_STRUCT_VARRAY_POINTER_UINT32(endt, SpaprXive, nr_ends,\ndiff --git a/hw/intc/xics.c b/hw/intc/xics.c\nindex 1d40c4386d..c0a252d051 100644\n--- a/hw/intc/xics.c\n+++ b/hw/intc/xics.c\n@@ -668,7 +668,7 @@ static const VMStateDescription vmstate_ics = {\n     .post_load = ics_post_load,\n     .fields = (const VMStateField[]) {\n         /* Sanity check */\n-        VMSTATE_UINT32_EQUAL(nr_irqs, ICSState, NULL),\n+        VMSTATE_UINT32_EQUAL(nr_irqs, ICSState),\n \n         VMSTATE_STRUCT_VARRAY_POINTER_UINT32(irqs, ICSState, nr_irqs,\n                                              vmstate_ics_irq,\ndiff --git a/hw/intc/xive.c b/hw/intc/xive.c\nindex d702b58bd0..f473e6ac77 100644\n--- a/hw/intc/xive.c\n+++ b/hw/intc/xive.c\n@@ -1565,7 +1565,7 @@ static const VMStateDescription vmstate_xive_source = {\n     .version_id = 1,\n     .minimum_version_id = 1,\n     .fields = (const VMStateField[]) {\n-        VMSTATE_UINT32_EQUAL(nr_irqs, XiveSource, NULL),\n+        VMSTATE_UINT32_EQUAL(nr_irqs, XiveSource),\n         VMSTATE_VBUFFER_UINT32(status, XiveSource, 1, NULL, nr_irqs),\n         VMSTATE_END_OF_LIST()\n     },\ndiff --git a/hw/nvram/eeprom93xx.c b/hw/nvram/eeprom93xx.c\nindex a8fd60a8fb..73b3d248d4 100644\n--- a/hw/nvram/eeprom93xx.c\n+++ b/hw/nvram/eeprom93xx.c\n@@ -144,7 +144,7 @@ static const VMStateDescription vmstate_eeprom = {\n         VMSTATE_UINT8(addrbits, eeprom_t),\n         VMSTATE_UINT16_HACK_TEST(size, eeprom_t, is_old_eeprom_version),\n         VMSTATE_UNUSED_TEST(is_old_eeprom_version, 1),\n-        VMSTATE_UINT16_EQUAL_V(size, eeprom_t, EEPROM_VERSION, NULL),\n+        VMSTATE_UINT16_EQUAL_V(size, eeprom_t, EEPROM_VERSION),\n         VMSTATE_UINT16(data, eeprom_t),\n         VMSTATE_VARRAY_UINT16_UNSAFE(contents, eeprom_t, size, 0,\n                                      vmstate_info_uint16, uint16_t),\ndiff --git a/hw/pci/pci.c b/hw/pci/pci.c\nindex 2c3657d00d..a0dbb81fd9 100644\n--- a/hw/pci/pci.c\n+++ b/hw/pci/pci.c\n@@ -105,7 +105,7 @@ static const VMStateDescription vmstate_pcibus = {\n     .version_id = 1,\n     .minimum_version_id = 1,\n     .fields = (const VMStateField[]) {\n-        VMSTATE_INT32_EQUAL(nirq, PCIBus, NULL),\n+        VMSTATE_INT32_EQUAL(nirq, PCIBus),\n         VMSTATE_VARRAY_INT32(irq_count, PCIBus,\n                              nirq, 0, vmstate_info_int32,\n                              int32_t),\ndiff --git a/hw/pci/pcie_aer.c b/hw/pci/pcie_aer.c\nindex 2c85a78fcd..22497b1fd6 100644\n--- a/hw/pci/pcie_aer.c\n+++ b/hw/pci/pcie_aer.c\n@@ -820,7 +820,7 @@ const VMStateDescription vmstate_pcie_aer_log = {\n     .minimum_version_id = 1,\n     .fields = (const VMStateField[]) {\n         VMSTATE_UINT16(log_num, PCIEAERLog),\n-        VMSTATE_UINT16_EQUAL(log_max, PCIEAERLog, NULL),\n+        VMSTATE_UINT16_EQUAL(log_max, PCIEAERLog),\n         VMSTATE_VALIDATE(\"log_num <= log_max\", pcie_aer_state_log_num_valid),\n         VMSTATE_STRUCT_VARRAY_POINTER_UINT16(log, PCIEAERLog, log_num,\n                               vmstate_pcie_aer_err, PCIEAERErr),\ndiff --git a/hw/ppc/spapr_iommu.c b/hw/ppc/spapr_iommu.c\nindex c2432a0c00..e6264b0785 100644\n--- a/hw/ppc/spapr_iommu.c\n+++ b/hw/ppc/spapr_iommu.c\n@@ -285,7 +285,7 @@ static const VMStateDescription vmstate_spapr_tce_table = {\n     .post_load = spapr_tce_table_post_load,\n     .fields = (const VMStateField []) {\n         /* Sanity check */\n-        VMSTATE_UINT32_EQUAL(liobn, SpaprTceTable, NULL),\n+        VMSTATE_UINT32_EQUAL(liobn, SpaprTceTable),\n \n         /* IOMMU state */\n         VMSTATE_UINT32(mig_nb_table, SpaprTceTable),\ndiff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c\nindex 1dc3b02659..c1d4b7806e 100644\n--- a/hw/ppc/spapr_pci.c\n+++ b/hw/ppc/spapr_pci.c\n@@ -2051,7 +2051,7 @@ static const VMStateDescription vmstate_spapr_pci_lsi = {\n     .version_id = 1,\n     .minimum_version_id = 1,\n     .fields = (const VMStateField[]) {\n-        VMSTATE_UINT32_EQUAL(irq, SpaprPciLsi, NULL),\n+        VMSTATE_UINT32_EQUAL(irq, SpaprPciLsi),\n \n         VMSTATE_END_OF_LIST()\n     },\n@@ -2129,7 +2129,7 @@ static const VMStateDescription vmstate_spapr_pci = {\n     .post_save = spapr_pci_post_save,\n     .post_load = spapr_pci_post_load,\n     .fields = (const VMStateField[]) {\n-        VMSTATE_UINT64_EQUAL(buid, SpaprPhbState, NULL),\n+        VMSTATE_UINT64_EQUAL(buid, SpaprPhbState),\n         VMSTATE_STRUCT_ARRAY(lsi_table, SpaprPhbState, PCI_NUM_PINS, 0,\n                              vmstate_spapr_pci_lsi, SpaprPciLsi),\n         VMSTATE_INT32(msi_devs_num, SpaprPhbState),\ndiff --git a/hw/ppc/spapr_vio.c b/hw/ppc/spapr_vio.c\nindex 501e82a766..3f05081bad 100644\n--- a/hw/ppc/spapr_vio.c\n+++ b/hw/ppc/spapr_vio.c\n@@ -609,8 +609,8 @@ const VMStateDescription vmstate_spapr_vio = {\n     .minimum_version_id = 1,\n     .fields = (const VMStateField[]) {\n         /* Sanity check */\n-        VMSTATE_UINT32_EQUAL(reg, SpaprVioDevice, NULL),\n-        VMSTATE_UINT32_EQUAL(irq, SpaprVioDevice, NULL),\n+        VMSTATE_UINT32_EQUAL(reg, SpaprVioDevice),\n+        VMSTATE_UINT32_EQUAL(irq, SpaprVioDevice),\n \n         /* General VIO device state */\n         VMSTATE_UINT64(signal_state, SpaprVioDevice),\ndiff --git a/hw/s390x/css.c b/hw/s390x/css.c\nindex df5f0bc27f..ecd28fed5c 100644\n--- a/hw/s390x/css.c\n+++ b/hw/s390x/css.c\n@@ -199,15 +199,15 @@ const VMStateDescription vmstate_subch_dev = {\n     .post_load = subch_dev_post_load,\n     .pre_save = subch_dev_pre_save,\n     .fields = (const VMStateField[]) {\n-        VMSTATE_UINT8_EQUAL(cssid, SubchDev, NULL),\n-        VMSTATE_UINT8_EQUAL(ssid, SubchDev, NULL),\n+        VMSTATE_UINT8_EQUAL(cssid, SubchDev),\n+        VMSTATE_UINT8_EQUAL(ssid, SubchDev),\n         VMSTATE_UINT16(migrated_schid, SubchDev),\n         /*\n          * If devno mismatch on target, it may be due to some\n          * sequences of plug and unplug breaks migration for\n          * machine versions prior to 2.7 (known design flaw).\n          */\n-        VMSTATE_UINT16_EQUAL(devno, SubchDev, NULL),\n+        VMSTATE_UINT16_EQUAL(devno, SubchDev),\n         VMSTATE_BOOL(thinint_active, SubchDev),\n         VMSTATE_STRUCT(curr_status, SubchDev, 0, vmstate_schib, SCHIB),\n         VMSTATE_UINT8_ARRAY(sense_data, SubchDev, 32),\ndiff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c\nindex b2224c7f76..a7b9fe1317 100644\n--- a/hw/usb/hcd-uhci.c\n+++ b/hw/usb/hcd-uhci.c\n@@ -364,7 +364,7 @@ static const VMStateDescription vmstate_uhci = {\n     .post_load = uhci_post_load,\n     .fields = (const VMStateField[]) {\n         VMSTATE_PCI_DEVICE(dev, UHCIState),\n-        VMSTATE_UINT8_EQUAL(num_ports_vmstate, UHCIState, NULL),\n+        VMSTATE_UINT8_EQUAL(num_ports_vmstate, UHCIState),\n         VMSTATE_STRUCT_ARRAY(ports, UHCIState, UHCI_PORTS, 1,\n                              vmstate_uhci_port, UHCIPort),\n         VMSTATE_UINT16(cmd, UHCIState),\ndiff --git a/include/migration/vmstate.h b/include/migration/vmstate.h\nindex 66c2e87bd3..d4a39aa794 100644\n--- a/include/migration/vmstate.h\n+++ b/include/migration/vmstate.h\n@@ -182,7 +182,6 @@ typedef enum {\n \n struct VMStateField {\n     const char *name;\n-    const char *err_hint;\n     size_t offset;\n     size_t size;\n     size_t start;\n@@ -358,9 +357,8 @@ extern const VMStateInfo vmstate_info_qlist;\n }\n \n #define VMSTATE_SINGLE_FULL(_field, _state, _test, _version, _info,  \\\n-                            _type, _err_hint) {                      \\\n+                            _type) {                      \\\n     .name         = (stringify(_field)),                             \\\n-    .err_hint     = (_err_hint),                                     \\\n     .version_id   = (_version),                                      \\\n     .field_exists = (_test),                                         \\\n     .size         = sizeof(_type),                                   \\\n@@ -1022,35 +1020,35 @@ extern const VMStateInfo vmstate_info_qlist;\n \n #endif\n \n-#define VMSTATE_UINT8_EQUAL(_f, _s, _err_hint)                        \\\n+#define VMSTATE_UINT8_EQUAL(_f, _s)                                   \\\n     VMSTATE_SINGLE_FULL(_f, _s, 0, 0,                                 \\\n-                        vmstate_info_uint8_equal, uint8_t, _err_hint)\n+                        vmstate_info_uint8_equal, uint8_t)\n \n-#define VMSTATE_UINT16_EQUAL(_f, _s, _err_hint)                       \\\n+#define VMSTATE_UINT16_EQUAL(_f, _s)                                  \\\n     VMSTATE_SINGLE_FULL(_f, _s, 0, 0,                                 \\\n-                        vmstate_info_uint16_equal, uint16_t, _err_hint)\n+                        vmstate_info_uint16_equal, uint16_t)\n \n-#define VMSTATE_UINT16_EQUAL_V(_f, _s, _v, _err_hint)                 \\\n+#define VMSTATE_UINT16_EQUAL_V(_f, _s, _v)                            \\\n     VMSTATE_SINGLE_FULL(_f, _s, 0,  _v,                               \\\n-                        vmstate_info_uint16_equal, uint16_t, _err_hint)\n+                        vmstate_info_uint16_equal, uint16_t)\n \n-#define VMSTATE_INT32_EQUAL(_f, _s, _err_hint)                        \\\n+#define VMSTATE_INT32_EQUAL(_f, _s)                                   \\\n     VMSTATE_SINGLE_FULL(_f, _s, 0, 0,                                 \\\n-                        vmstate_info_int32_equal, int32_t, _err_hint)\n+                        vmstate_info_int32_equal, int32_t)\n \n-#define VMSTATE_UINT32_EQUAL_V(_f, _s, _v, _err_hint)                 \\\n+#define VMSTATE_UINT32_EQUAL_V(_f, _s, _v)                            \\\n     VMSTATE_SINGLE_FULL(_f, _s, 0,  _v,                               \\\n-                        vmstate_info_uint32_equal, uint32_t, _err_hint)\n+                        vmstate_info_uint32_equal, uint32_t)\n \n-#define VMSTATE_UINT32_EQUAL(_f, _s, _err_hint)                       \\\n-    VMSTATE_UINT32_EQUAL_V(_f, _s, 0, _err_hint)\n+#define VMSTATE_UINT32_EQUAL(_f, _s)                                  \\\n+    VMSTATE_UINT32_EQUAL_V(_f, _s, 0)\n \n-#define VMSTATE_UINT64_EQUAL_V(_f, _s, _v, _err_hint)                 \\\n+#define VMSTATE_UINT64_EQUAL_V(_f, _s, _v)                            \\\n     VMSTATE_SINGLE_FULL(_f, _s, 0,  _v,                               \\\n-                        vmstate_info_uint64_equal, uint64_t, _err_hint)\n+                        vmstate_info_uint64_equal, uint64_t)\n \n-#define VMSTATE_UINT64_EQUAL(_f, _s, _err_hint)                       \\\n-    VMSTATE_UINT64_EQUAL_V(_f, _s, 0, _err_hint)\n+#define VMSTATE_UINT64_EQUAL(_f, _s)                                  \\\n+    VMSTATE_UINT64_EQUAL_V(_f, _s, 0)\n \n #define VMSTATE_INT32_POSITIVE_LE(_f, _s)                             \\\n     VMSTATE_SINGLE(_f, _s, 0, vmstate_info_int32_le, int32_t)\ndiff --git a/migration/vmstate-types.c b/migration/vmstate-types.c\nindex 89cb211472..033a2685c8 100644\n--- a/migration/vmstate-types.c\n+++ b/migration/vmstate-types.c\n@@ -131,9 +131,6 @@ static int get_int32_equal(QEMUFile *f, void *pv, size_t size,\n         return 0;\n     }\n     error_report(\"%\" PRIx32 \" != %\" PRIx32, *v, v2);\n-    if (field->err_hint) {\n-        error_printf(\"%s\\n\", field->err_hint);\n-    }\n     return -EINVAL;\n }\n \n@@ -280,9 +277,6 @@ static int get_uint32_equal(QEMUFile *f, void *pv, size_t size,\n         return 0;\n     }\n     error_report(\"%\" PRIx32 \" != %\" PRIx32, *v, v2);\n-    if (field->err_hint) {\n-        error_printf(\"%s\\n\", field->err_hint);\n-    }\n     return -EINVAL;\n }\n \n@@ -391,9 +385,6 @@ static int get_uint64_equal(QEMUFile *f, void *pv, size_t size,\n         return 0;\n     }\n     error_report(\"%\" PRIx64 \" != %\" PRIx64, *v, v2);\n-    if (field->err_hint) {\n-        error_printf(\"%s\\n\", field->err_hint);\n-    }\n     return -EINVAL;\n }\n \n@@ -417,9 +408,6 @@ static int get_uint8_equal(QEMUFile *f, void *pv, size_t size,\n         return 0;\n     }\n     error_report(\"%x != %x\", *v, v2);\n-    if (field->err_hint) {\n-        error_printf(\"%s\\n\", field->err_hint);\n-    }\n     return -EINVAL;\n }\n \n@@ -443,9 +431,6 @@ static int get_uint16_equal(QEMUFile *f, void *pv, size_t size,\n         return 0;\n     }\n     error_report(\"%x != %x\", *v, v2);\n-    if (field->err_hint) {\n-        error_printf(\"%s\\n\", field->err_hint);\n-    }\n     return -EINVAL;\n }\n \ndiff --git a/target/ppc/machine.c b/target/ppc/machine.c\nindex 49cfdc6d67..9eae0ff647 100644\n--- a/target/ppc/machine.c\n+++ b/target/ppc/machine.c\n@@ -564,7 +564,7 @@ static const VMStateDescription vmstate_tlb6xx = {\n     .minimum_version_id = 1,\n     .needed = tlb6xx_needed,\n     .fields = (const VMStateField[]) {\n-        VMSTATE_INT32_EQUAL(env.nb_tlb, PowerPCCPU, NULL),\n+        VMSTATE_INT32_EQUAL(env.nb_tlb, PowerPCCPU),\n         VMSTATE_STRUCT_VARRAY_POINTER_INT32(env.tlb.tlb6, PowerPCCPU,\n                                             env.nb_tlb,\n                                             vmstate_tlb6xx_entry,\n@@ -603,7 +603,7 @@ static const VMStateDescription vmstate_tlbemb = {\n     .minimum_version_id = 1,\n     .needed = tlbemb_needed,\n     .fields = (const VMStateField[]) {\n-        VMSTATE_INT32_EQUAL(env.nb_tlb, PowerPCCPU, NULL),\n+        VMSTATE_INT32_EQUAL(env.nb_tlb, PowerPCCPU),\n         VMSTATE_STRUCT_VARRAY_POINTER_INT32(env.tlb.tlbe, PowerPCCPU,\n                                             env.nb_tlb,\n                                             vmstate_tlbemb_entry,\n@@ -639,7 +639,7 @@ static const VMStateDescription vmstate_tlbmas = {\n     .minimum_version_id = 1,\n     .needed = tlbmas_needed,\n     .fields = (const VMStateField[]) {\n-        VMSTATE_INT32_EQUAL(env.nb_tlb, PowerPCCPU, NULL),\n+        VMSTATE_INT32_EQUAL(env.nb_tlb, PowerPCCPU),\n         VMSTATE_STRUCT_VARRAY_POINTER_INT32(env.tlb.tlbm, PowerPCCPU,\n                                             env.nb_tlb,\n                                             vmstate_tlbmas_entry,\n",
    "prefixes": [
        "PULL",
        "19/43"
    ]
}