Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.0/patches/2196687/?format=api
{ "id": 2196687, "url": "http://patchwork.ozlabs.org/api/1.0/patches/2196687/?format=api", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/1.0/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": "" }, "msgid": "<20260216034432.23912-10-richard.henderson@linaro.org>", "date": "2026-02-16T03:44:28", "name": "[RFC,09/13] target/arm: Detect SME in kvm_arm_get_host_cpu_features", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "180590e430977fb293445bb480c0f411696ef0e4", "submitter": { "id": 72104, "url": "http://patchwork.ozlabs.org/api/1.0/people/72104/?format=api", "name": "Richard Henderson", "email": "richard.henderson@linaro.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260216034432.23912-10-richard.henderson@linaro.org/mbox/", "series": [ { "id": 492243, "url": "http://patchwork.ozlabs.org/api/1.0/series/492243/?format=api", "date": "2026-02-16T03:44:19", "name": "target/arm: Support SME for KVM", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/492243/mbox/" } ], "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2196687/checks/", "tags": {}, "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=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=rK7foNSm;\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 4fDpb72GNfz1xpl\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 14:45:55 +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 1vrpXi-0002ZZ-Lj; Sun, 15 Feb 2026 22:45:02 -0500", "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 <richard.henderson@linaro.org>)\n id 1vrpXg-0002Z7-8H\n for qemu-devel@nongnu.org; Sun, 15 Feb 2026 22:45:00 -0500", "from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)\n id 1vrpXe-0002SA-9a\n for qemu-devel@nongnu.org; Sun, 15 Feb 2026 22:44:59 -0500", "by mail-pf1-x42d.google.com with SMTP id\n d2e1a72fcca58-824a3ba5222so1458308b3a.2\n for <qemu-devel@nongnu.org>; Sun, 15 Feb 2026 19:44:57 -0800 (PST)", "from stoup.. ([2401:d002:dc0f:2100:4a1:428a:70f2:5844])\n by smtp.gmail.com with ESMTPSA id\n d9443c01a7336-2ad1aadca84sm53294155ad.70.2026.02.15.19.44.55\n for <qemu-devel@nongnu.org>\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Sun, 15 Feb 2026 19:44:56 -0800 (PST)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1771213497; x=1771818297; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:to:from:from:to:cc:subject:date:message-id\n :reply-to; bh=Nr30QrVHuiZUYlgVuaIXnVQfwgC+Xsfy6MjmOV0NUmo=;\n b=rK7foNSmxhZ/btc9aSsGQecveeEJpag92txQ8F4jYGwUZfuxHTsVmXg/7zavIwcMog\n LIxxa3YM9XwnTXG9f8bLntldSLxBVrjRgb+w1b55HdylLyYnpjElICobzQvOY/vtqyXE\n SqBECBuunnn6/yQwed3q82zjbFkt+LrVej7NUSe7yjflHG12DPOUxMilQJmpwfrb32HE\n bOB61ZcphQfoM94hlKmpnfcRLTx8nk1xPOYb6MkWcr7hGm2j2eThPVv6OnoI+8R8L/P+\n Z+iBTorQKdYlePprk0zhIgY3MzPux9WzWQd52N2Lj6a7AKZyecyr8ij85Ns+R7qMOEd0\n dD3w==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1771213497; x=1771818297;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to\n :cc:subject:date:message-id:reply-to;\n bh=Nr30QrVHuiZUYlgVuaIXnVQfwgC+Xsfy6MjmOV0NUmo=;\n b=Pel835DFBztMYqJBBCVIdXjYwD8HxaeAHR6uimRJKthVRlJ48PcTk8ELLDp+jF5yVG\n Y6W9S2evScS9Zx+Eon1hOjf875vg4X2zAfXInYB2Mo0q63aSFVWuOFTgehsUG64tiOWR\n /x6FVsrlJEnptwjAGEWIwIWezLcAFzAzv+212lLDfHMvR0gAysK8BT7mRtFecfWTHgKo\n kmbD3FYp2r/OK82ro4fztJ0eBAEoRKGCBshwyJPSgZCUtxxh7R8ynPZiGtNy5WB7qnsi\n AxgeDSNMhw2ih2x2vCPFXUoAuOPcfBCmiiBneuogxbB2dJPagnPzA+n0BsckqCHiMpcE\n DxlA==", "X-Gm-Message-State": "AOJu0YxVW15muELUGbf1kw6WQ9O9mU04BumvanbZwlUanDKUBGPZP2Vw\n 16PDevxOCqAaY8LD1VfW904eynpbQ1TPSubEaW451oZRmJTcpL2g+UDtzTuSAoMubQvP/1Q7jyZ\n LeYHPbJ4=", "X-Gm-Gg": "AZuq6aLm5GYW3oJZt7FHeEjc/+GQ4c+Z+AuXD5dxQ9Ixg1CSu3SLmil1Tw0NDPdKOjY\n RcB2Rw3rjcN8JTdtXVN2s1M+vpW5REt/lQD0/vVleUiqmd6nZSOS0ZmorJYiTUIfWm1gM7F98r3\n mQk3CO/bdash1AJjpQ32npIewW9EAPZWkCQvjqG4qSXZnconvwZ2/ZagbMeh5q0EK4ZToYad9ep\n J3GLPX03X2I2/mQlm9wZout+RPxB06CrdjM52V9OqLRPOMMYUK+Ps00YTuU4Evn0Uni2J4nIt5z\n 53RDBp4q0EmGgf86hS0bipmfIlukBvEsdsAQr4ci6+TU2rB3LcXSw6NaUXnXXN9wa97iDzQD6HA\n Iktaw6qXyaigMPPr1/tB+UbKhavr6OSEk/CZ3WwEx2HltlHE1iJX/m8eW3BR9kB4K8x7VTfRrvb\n HvpO/lGEMnPpeq5a9YXeWFQMhs4ipMUrgo", "X-Received": "by 2002:a05:6a21:4d8d:b0:35d:7f7:4aac with SMTP id\n adf61e73a8af0-3948398f0b5mr5536808637.47.1771213496754;\n Sun, 15 Feb 2026 19:44:56 -0800 (PST)", "From": "Richard Henderson <richard.henderson@linaro.org>", "To": "qemu-devel@nongnu.org", "Subject": "[RFC PATCH 09/13] target/arm: Detect SME in\n kvm_arm_get_host_cpu_features", "Date": "Mon, 16 Feb 2026 13:44:28 +1000", "Message-ID": "<20260216034432.23912-10-richard.henderson@linaro.org>", "X-Mailer": "git-send-email 2.43.0", "In-Reply-To": "<20260216034432.23912-1-richard.henderson@linaro.org>", "References": "<20260216034432.23912-1-richard.henderson@linaro.org>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=2607:f8b0:4864:20::42d;\n envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.google.com", "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,\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": "Signed-off-by: Richard Henderson <richard.henderson@linaro.org>\n---\n target/arm/kvm.c | 54 +++++++++++++++++++++++++++++++++++++++++++++---\n 1 file changed, 51 insertions(+), 3 deletions(-)", "diff": "diff --git a/target/arm/kvm.c b/target/arm/kvm.c\nindex ccffa40900..979265a810 100644\n--- a/target/arm/kvm.c\n+++ b/target/arm/kvm.c\n@@ -61,6 +61,7 @@ typedef struct ARMHostCPUFeatures {\n uint64_t features;\n uint32_t target;\n uint32_t sve_vq_supported;\n+ uint32_t sme_vq_supported;\n const char *dtb_compatible;\n } ARMHostCPUFeatures;\n \n@@ -273,6 +274,36 @@ 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 uint32_t kvm_arm_sme_get_vls(int fd)\n+{\n+ uint64_t vls[KVM_ARM64_SME_VLS_WORDS];\n+ struct kvm_one_reg reg = {\n+ .id = KVM_REG_ARM64_SME_VLS,\n+ .addr = (uint64_t)&vls[0],\n+ };\n+ uint32_t vq = 0;\n+ int ret;\n+\n+ ret = ioctl(fd, KVM_GET_ONE_REG, ®);\n+ if (ret) {\n+ error_report(\"failed to get KVM_REG_ARM64_SME_VLS: %s\",\n+ strerror(errno));\n+ abort();\n+ }\n+\n+ for (int i = KVM_ARM64_SME_VLS_WORDS - 1; i >= 0; --i) {\n+ if (vls[i]) {\n+ vq = 64 - clz64(vls[i]) + i * 64;\n+ break;\n+ }\n+ }\n+ if (vq > ARM_MAX_VQ) {\n+ warn_report(\"KVM supports vector lengths larger than QEMU can enable\");\n+ }\n+ return vls[0] & MAKE_64BIT_MASK(0, ARM_MAX_VQ);\n+}\n+\n+\n static bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)\n {\n /* Identify the feature bits corresponding to the host CPU, and\n@@ -282,6 +313,7 @@ static bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)\n */\n int fdarray[3];\n bool sve_supported;\n+ bool sme_supported;\n bool el2_supported;\n bool pmu_supported = false;\n uint64_t features = 0;\n@@ -302,9 +334,13 @@ static bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)\n init.features[0] |= 1 << KVM_ARM_VCPU_SVE;\n }\n \n- /*\n- * Ask for EL2 if supported.\n- */\n+ /* Similarly for SME... */\n+ sme_supported = kvm_check_extension(kvm_state, KVM_CAP_ARM_SME);\n+ if (sme_supported) {\n+ init.features[0] |= 1 << KVM_ARM_VCPU_SME;\n+ }\n+\n+ /* ... and EL2. */\n el2_supported = kvm_arm_el2_supported();\n if (el2_supported) {\n init.features[0] |= 1 << KVM_ARM_VCPU_HAS_EL2;\n@@ -449,6 +485,17 @@ static bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)\n /* Read the set of supported vector lengths. */\n arm_host_cpu_features.sve_vq_supported = kvm_arm_sve_get_vls(fd);\n }\n+\n+\tif (sme_supported) {\n+ /*\n+\t * While ID_AA64SMFR0_EL1 is always accessible, if RAZ,\n+\t * it's unused if !sme_supported.\n+\t */\n+ err |= get_host_cpu_reg(fd, ahcf, ID_AA64SMFR0_EL1_IDX);\n+\n+ /* Read the set of supported vector lengths. */\n+ arm_host_cpu_features.sme_vq_supported = kvm_arm_sme_get_vls(fd);\n+ }\n }\n \n kvm_arm_destroy_scratch_host_vcpu(fdarray);\n@@ -496,6 +543,7 @@ void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu)\n cpu->dtb_compatible = arm_host_cpu_features.dtb_compatible;\n cpu->isar = arm_host_cpu_features.isar;\n cpu->sve_vq.supported = arm_host_cpu_features.sve_vq_supported;\n+ cpu->sme_vq.supported = arm_host_cpu_features.sme_vq_supported;\n env->features = arm_host_cpu_features.features;\n }\n \n", "prefixes": [ "RFC", "09/13" ] }