Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2232156/?format=api
{ "id": 2232156, "url": "http://patchwork.ozlabs.org/api/patches/2232156/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260503073541.790215-12-eric.auger@redhat.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": "<20260503073541.790215-12-eric.auger@redhat.com>", "list_archive_url": null, "date": "2026-05-03T07:33:31", "name": "[v4,11/17] arm/kvm: write back modified ID regs to KVM", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "f65d48ab434639eb33f84bb6dfeb5cbb88bd3cd9", "submitter": { "id": 69187, "url": "http://patchwork.ozlabs.org/api/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-12-eric.auger@redhat.com/mbox/", "series": [ { "id": 502569, "url": "http://patchwork.ozlabs.org/api/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/2232156/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2232156/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=NcrkPv+v;\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 4g7c7g4f4Zz1yJV\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 03 May 2026 17:37:51 +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 1wJROI-0000N9-OO; Sun, 03 May 2026 03:37:26 -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 1wJRNx-0008Sl-Dl\n for qemu-devel@nongnu.org; Sun, 03 May 2026 03:37:10 -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 1wJRNv-0003h0-Rd\n for qemu-devel@nongnu.org; Sun, 03 May 2026 03:37:05 -0400", "from mx-prod-mc-03.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-675-jw1-1R8VOLaBWuXaExnpog-1; Sun,\n 03 May 2026 03:36:59 -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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 1CFAC1956046; Sun, 3 May 2026 07:36:56 +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 3A79B1800345; Sun, 3 May 2026 07:36:50 +0000 (UTC)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1777793822;\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=lW1RxLjyBAHEYglWJkPrIno8W4NRQgIUmy0VBomca+0=;\n b=NcrkPv+vYMi7MyT+8XmyOFdavKzzBt4ShK6G5/+2oou8rFdCSB/S27vVqqK5v3eUpWwqXZ\n kbWzTeNhXN0G7/tquYxTO/J/8W8rddXqzrHgZ/AG9vu3DBiVij0S1/n15nHZtzGMIG/Fkn\n VOyi/k3wm/sceNdpqkixQRzGYWiYWy8=", "X-MC-Unique": "jw1-1R8VOLaBWuXaExnpog-1", "X-Mimecast-MFC-AGG-ID": "jw1-1R8VOLaBWuXaExnpog_1777793816", "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 11/17] arm/kvm: write back modified ID regs to KVM", "Date": "Sun, 3 May 2026 09:33:31 +0200", "Message-ID": "<20260503073541.790215-12-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": "We want to give a chance to override the value of host ID regs.\nIn a previous patch we made sure all their values could be fetched\nthrough kvm_get_one_reg() calls before their modification. After\ntheir potential modification we need to make sure we write back\nthe values through kvm_set_one_reg() calls.\n\nMake sure the cpreg_list is modified with updated values and\ntransfer those values back to kvm.\n\nSigned-off-by: Eric Auger <eric.auger@redhat.com>\nSigned-off-by: Cornelia Huck <cohuck@redhat.com>\n---\n target/arm/kvm.c | 59 ++++++++++++++++++++++++++++++++++++++++-\n target/arm/trace-events | 1 +\n 2 files changed, 59 insertions(+), 1 deletion(-)", "diff": "diff --git a/target/arm/kvm.c b/target/arm/kvm.c\nindex 1a9b91bf8a..ca9a7d9439 100644\n--- a/target/arm/kvm.c\n+++ b/target/arm/kvm.c\n@@ -275,6 +275,21 @@ static uint32_t kvm_arm_sve_get_vls(int fd)\n return vls[0] & MAKE_64BIT_MASK(0, ARM_MAX_VQ);\n }\n \n+static int kvm_feature_idx_to_idregs_idx(int kidx)\n+{\n+ int op1, crm, op2;\n+ ARMSysRegs sysreg;\n+\n+ op1 = kidx / 64;\n+ if (op1 == 2) {\n+ op1 = 3;\n+ }\n+ crm = (kidx % 64) / 8;\n+ op2 = kidx % 8;\n+ sysreg = ENCODE_ID_REG(3, op1, 0, crm, op2);\n+ return get_sysreg_idx(sysreg);\n+}\n+\n static int idregs_idx_to_kvm_feature_idx(ARMIDRegisterIdx idx)\n {\n ARMSysRegs sysreg = id_register_sysreg[idx];\n@@ -1197,6 +1212,39 @@ bool kvm_arm_cpu_post_load(ARMCPU *cpu)\n return true;\n }\n \n+static void kvm_arm_writable_idregs_to_cpreg_list(ARMCPU *cpu)\n+{\n+ if (!cpu->writable_map) {\n+ return;\n+ }\n+ for (int i = 0; i < NR_ID_REG_MASKS; i++) {\n+ uint64_t writable_mask = cpu->writable_map->regs[i];\n+ uint64_t *cpreg;\n+\n+ if (writable_mask) {\n+ uint64_t previous, new;\n+ int idx = kvm_feature_idx_to_idregs_idx(i);\n+ ARM64SysReg *sysregdesc;\n+ uint32_t sysreg;\n+\n+ if (idx == -1) {\n+ /* sysreg writable, but we don't know it */\n+ continue;\n+ }\n+ sysregdesc = &arm64_id_regs[idx];\n+ sysreg = sysregdesc->sysreg;\n+ cpreg = kvm_arm_get_cpreg_ptr(cpu, idregs_sysreg_to_kvm_reg(sysreg));\n+ previous = *cpreg;\n+ new = cpu->isar.idregs[idx];\n+ if (previous != new) {\n+ *cpreg = new;\n+ trace_kvm_arm_writable_idregs_to_cpreg_list(sysregdesc->name,\n+ previous, new);\n+ }\n+ }\n+ }\n+}\n+\n void kvm_arm_reset_vcpu(ARMCPU *cpu)\n {\n int ret;\n@@ -2148,7 +2196,16 @@ int kvm_arch_init_vcpu(CPUState *cs)\n }\n cpu->mp_affinity = mpidr & ARM64_AFFINITY_MASK;\n \n- return kvm_arm_init_cpreg_list(cpu);\n+ ret = kvm_arm_init_cpreg_list(cpu);\n+ if (ret) {\n+ return ret;\n+ }\n+ /* overwrite writable ID regs with their updated property values */\n+ kvm_arm_writable_idregs_to_cpreg_list(cpu);\n+\n+ write_list_to_kvmstate(cpu, KVM_PUT_FULL_STATE);\n+\n+ return 0;\n }\n \n int kvm_arch_destroy_vcpu(CPUState *cs)\ndiff --git a/target/arm/trace-events b/target/arm/trace-events\nindex 8c7faf57c7..c25d2a1191 100644\n--- a/target/arm/trace-events\n+++ b/target/arm/trace-events\n@@ -14,6 +14,7 @@ arm_gt_update_irq(int timer, int irqstate) \"gt_update_irq: timer %d irqstate %d\"\n # kvm.c\n kvm_arm_fixup_msi_route(uint64_t iova, uint64_t gpa) \"MSI iova = 0x%\"PRIx64\" is translated into 0x%\"PRIx64\n get_host_cpu_idregs(const char *name, uint64_t value) \"scratch vcpu host value for %s is 0x%\"PRIx64\n+kvm_arm_writable_idregs_to_cpreg_list(const char *name, uint64_t previous, uint64_t new) \"%s overwrite default 0x%\"PRIx64\" with 0x%\"PRIx64\n \n # cpu.c\n arm_cpu_reset(uint64_t mp_aff) \"cpu %\" PRIu64\n", "prefixes": [ "v4", "11/17" ] }