get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2232155,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/2232155/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260503073541.790215-9-eric.auger@redhat.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": "<20260503073541.790215-9-eric.auger@redhat.com>",
    "list_archive_url": null,
    "date": "2026-05-03T07:33:28",
    "name": "[v4,08/17] target/arm/kvm: Introduce kvm_get_writable_id_regs",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "9e4cf924f0346478015381f239356c3d9e0282b8",
    "submitter": {
        "id": 69187,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/69187/?format=api",
        "name": "Eric Auger",
        "email": "eric.auger@redhat.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260503073541.790215-9-eric.auger@redhat.com/mbox/",
    "series": [
        {
            "id": 502569,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/502569/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=502569",
            "date": "2026-05-03T07:33:20",
            "name": "kvm/arm: Introduce a customizable aarch64 KVM host model",
            "version": 4,
            "mbox": "http://patchwork.ozlabs.org/series/502569/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2232155/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2232155/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=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=itB4XTGM;\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)"
        ],
        "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 4g7c7d6KH7z1yJV\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 03 May 2026 17:37:49 +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 1wJROD-0008Uc-N2; Sun, 03 May 2026 03:37:21 -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 <eric.auger@redhat.com>)\n id 1wJRNg-00089p-57\n for qemu-devel@nongnu.org; Sun, 03 May 2026 03:36:49 -0400",
            "from us-smtp-delivery-124.mimecast.com ([170.10.129.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <eric.auger@redhat.com>)\n id 1wJRNe-0003eD-Ms\n for qemu-devel@nongnu.org; Sun, 03 May 2026 03:36:47 -0400",
            "from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-379-WAZhjYBdNre3ZkAMx--iMw-1; Sun,\n 03 May 2026 03:36:40 -0400",
            "from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 370FE195608B; Sun,  3 May 2026 07:36:39 +0000 (UTC)",
            "from laptop.redhat.com (unknown [10.44.48.25])\n by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 552051800480; Sun,  3 May 2026 07:36:34 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1777793806;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=77NAFC9fvHH4KulMWuGgQJVhBzZTjO4Ty/rdASI/oC4=;\n b=itB4XTGMztkdSfuz3re9OV7AIoxvlCdhcDMyQLNkwMXOL2j/eQ97gDP3q1gmoOsjDPFekZ\n fc1XRf7soacbWwNPx94jJOTKfYq+NlHE1uu4OhD1r9CgPyJMCW8Gvj98yu8jKGvMcb38ny\n inkoYktPyYi8KiMtU86Fjikm9MjLSGo=",
        "X-MC-Unique": "WAZhjYBdNre3ZkAMx--iMw-1",
        "X-Mimecast-MFC-AGG-ID": "WAZhjYBdNre3ZkAMx--iMw_1777793799",
        "From": "Eric Auger <eric.auger@redhat.com>",
        "To": "eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org,\n qemu-arm@nongnu.org, kvmarm@lists.linux.dev, peter.maydell@linaro.org,\n richard.henderson@linaro.org, cohuck@redhat.com, sebott@redhat.com,\n skolothumtho@nvidia.com, philmd@linaro.org",
        "Cc": "maz@kernel.org, oliver.upton@linux.dev, pbonzini@redhat.com,\n armbru@redhat.com, berrange@redhat.com, abologna@redhat.com,\n jdenemar@redhat.com",
        "Subject": "[PATCH v4 08/17] target/arm/kvm: Introduce kvm_get_writable_id_regs",
        "Date": "Sun,  3 May 2026 09:33:28 +0200",
        "Message-ID": "<20260503073541.790215-9-eric.auger@redhat.com>",
        "In-Reply-To": "<20260503073541.790215-1-eric.auger@redhat.com>",
        "References": "<20260503073541.790215-1-eric.auger@redhat.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-Scanned-By": "MIMEDefang 3.4.1 on 10.30.177.93",
        "Received-SPF": "pass client-ip=170.10.129.124;\n envelope-from=eric.auger@redhat.com; helo=us-smtp-delivery-124.mimecast.com",
        "X-Spam_score_int": "12",
        "X-Spam_score": "1.2",
        "X-Spam_bar": "+",
        "X-Spam_report": "(1.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001,\n RCVD_IN_SBL_CSS=3.335, SPF_HELO_PASS=-0.001,\n SPF_PASS=-0.001 autolearn=no 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: Cornelia Huck <cohuck@redhat.com>\n\nAdd an helper to retrieve the writable id reg bitmask. The\nstatus of the query is stored in the CPU struct so that an\nan error, if any, can be reported on vcpu realize().\n\nSigned-off-by: Eric Auger <eric.auger@redhat.com>\nSigned-off-by: Cornelia Huck <cohuck@redhat.com>\n---\n target/arm/cpu.h     | 26 ++++++++++++++++++++++++++\n target/arm/kvm.c     | 32 ++++++++++++++++++++++++++++++++\n target/arm/kvm_arm.h |  3 +++\n 3 files changed, 61 insertions(+)",
    "diff": "diff --git a/target/arm/cpu.h b/target/arm/cpu.h\nindex be14a47c35..2aa22360d2 100644\n--- a/target/arm/cpu.h\n+++ b/target/arm/cpu.h\n@@ -866,6 +866,26 @@ typedef struct {\n     uint32_t map, init, supported;\n } ARMVQMap;\n \n+typedef enum ARMIdRegsState {\n+    WRITABLE_ID_REGS_UNKNOWN,\n+    WRITABLE_ID_REGS_NOT_DISCOVERABLE,\n+    WRITABLE_ID_REGS_FAILED,\n+    WRITABLE_ID_REGS_AVAIL,\n+} ARMIdRegsState;\n+\n+/*\n+ * The following structures are for the purpose of mapping the output of\n+ * KVM_ARM_GET_REG_WRITABLE_MASKS that also may cover id registers we do\n+ * not support in QEMU\n+ * ID registers in op0==3, op1=={0,1,3}, crn=0, crm=={0-7}, op2=={0-7},\n+ * as used by the KVM_ARM_GET_REG_WRITABLE_MASKS ioctl call.\n+ */\n+#define NR_ID_REG_MASKS (3 * 8 * 8)\n+\n+typedef struct IdRegMap {\n+    uint64_t regs[NR_ID_REG_MASKS]; /* writable masks for registers */\n+} IdRegMap;\n+\n /* REG is ID_XXX */\n #define FIELD_DP64_IDREG(ISAR, REG, FIELD, VALUE)                       \\\n     ({                                                                  \\\n@@ -1054,6 +1074,12 @@ struct ArchCPU {\n      */\n     bool host_cpu_probe_failed;\n \n+    /*\n+     * state of writable id regs query used to report an error, if any,\n+     * on vcpu model realize\n+     */\n+    ARMIdRegsState writable_id_regs_status;\n+\n     /* QOM property to indicate we should use the back-compat CNTFRQ default */\n     bool backcompat_cntfrq;\n \ndiff --git a/target/arm/kvm.c b/target/arm/kvm.c\nindex d4a68874b8..f06a60804d 100644\n--- a/target/arm/kvm.c\n+++ b/target/arm/kvm.c\n@@ -51,6 +51,7 @@ const KVMCapabilityInfo kvm_arch_required_capabilities[] = {\n static bool cap_has_mp_state;\n static bool cap_has_inject_serror_esr;\n static bool cap_has_inject_ext_dabt;\n+static int cap_writable_id_regs;\n \n /**\n  * ARMHostCPUFeatures: information about the host CPU (identified\n@@ -499,6 +500,37 @@ void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu)\n     env->features = arm_host_cpu_features.features;\n }\n \n+int kvm_arm_get_writable_id_regs(ARMCPU *cpu, IdRegMap *idregmap)\n+{\n+    struct reg_mask_range range = {\n+        .range = 0, /* up to now only a single range is supported */\n+        .addr = (uint64_t)idregmap,\n+    };\n+    int ret;\n+\n+    if (!kvm_enabled()) {\n+        cpu->writable_id_regs_status = WRITABLE_ID_REGS_NOT_DISCOVERABLE;\n+        return -ENOSYS;\n+    }\n+\n+    cap_writable_id_regs =\n+        kvm_check_extension(kvm_state, KVM_CAP_ARM_SUPPORTED_REG_MASK_RANGES);\n+\n+    if (!cap_writable_id_regs ||\n+        !(cap_writable_id_regs & (1 << KVM_ARM_FEATURE_ID_RANGE))) {\n+        cpu->writable_id_regs_status = WRITABLE_ID_REGS_NOT_DISCOVERABLE;\n+        return -ENOSYS;\n+    }\n+\n+    ret = kvm_vm_ioctl(kvm_state, KVM_ARM_GET_REG_WRITABLE_MASKS, &range);\n+    if (ret) {\n+        cpu->writable_id_regs_status = WRITABLE_ID_REGS_FAILED;\n+        return ret;\n+     }\n+    cpu->writable_id_regs_status = WRITABLE_ID_REGS_AVAIL;\n+    return ret;\n+}\n+\n static bool kvm_no_adjvtime_get(Object *obj, Error **errp)\n {\n     return !ARM_CPU(obj)->kvm_adjvtime;\ndiff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h\nindex e7c40fb003..b22a56fc17 100644\n--- a/target/arm/kvm_arm.h\n+++ b/target/arm/kvm_arm.h\n@@ -240,4 +240,7 @@ void arm_gic_cap_kvm_probe(GICCapability *v2, GICCapability *v3);\n  */\n char *kvm_print_register_name(uint64_t regidx);\n \n+typedef struct IdRegMap IdRegMap;\n+int kvm_arm_get_writable_id_regs(ARMCPU *cpu, IdRegMap *idregmap);\n+\n #endif\n",
    "prefixes": [
        "v4",
        "08/17"
    ]
}