Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2215665/?format=api
{ "id": 2215665, "url": "http://patchwork.ozlabs.org/api/patches/2215665/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260325021236.14574-1-dongli.zhang@oracle.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": "<20260325021236.14574-1-dongli.zhang@oracle.com>", "list_archive_url": null, "date": "2026-03-25T02:12:36", "name": "[1/1] target/i386/kvm: Use logical counter index for AMD PMU getter", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "bb527d470df1b6972a4b8badd54e59044b1c9630", "submitter": { "id": 70292, "url": "http://patchwork.ozlabs.org/api/people/70292/?format=api", "name": "Dongli Zhang", "email": "dongli.zhang@oracle.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260325021236.14574-1-dongli.zhang@oracle.com/mbox/", "series": [ { "id": 497376, "url": "http://patchwork.ozlabs.org/api/series/497376/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=497376", "date": "2026-03-25T02:12:36", "name": "[1/1] target/i386/kvm: Use logical counter index for AMD PMU getter", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/497376/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2215665/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2215665/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=oracle.com header.i=@oracle.com header.a=rsa-sha256\n header.s=corp-2025-04-25 header.b=IRBm6sJV;\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 4fgVns6lQJz1y1G\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 25 Mar 2026 13:13:53 +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 1w5DkU-0004gz-SD; Tue, 24 Mar 2026 22:13:34 -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 <dongli.zhang@oracle.com>)\n id 1w5DkT-0004gl-9J\n for qemu-devel@nongnu.org; Tue, 24 Mar 2026 22:13:33 -0400", "from mx0b-00069f02.pphosted.com ([205.220.177.32])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <dongli.zhang@oracle.com>)\n id 1w5DkR-0006Uh-M6\n for qemu-devel@nongnu.org; Tue, 24 Mar 2026 22:13:33 -0400", "from pps.filterd (m0246632.ppops.net [127.0.0.1])\n by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 62OMBoep2196018; Wed, 25 Mar 2026 02:13:24 GMT", "from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com\n (iadpaimrmta01.appoci.oracle.com [130.35.100.223])\n by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 4d1kgfnfp8-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n Wed, 25 Mar 2026 02:13:24 +0000 (GMT)", "from pps.filterd\n (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1])\n by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2)\n with ESMTP id 62ON6BPm012401; Wed, 25 Mar 2026 02:13:23 GMT", "from pps.reinject (localhost [127.0.0.1])\n by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id\n 4d1hsgt0uu-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n Wed, 25 Mar 2026 02:13:23 +0000", "from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com\n (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1])\n by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 62P2DNwA037166;\n Wed, 25 Mar 2026 02:13:23 GMT", "from localhost.localdomain (ca-dev80.us.oracle.com [10.211.9.80])\n by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTP id\n 4d1hsgt0n9-1; Wed, 25 Mar 2026 02:13:23 +0000" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc\n :content-transfer-encoding:date:from:message-id:mime-version\n :subject:to; s=corp-2025-04-25; bh=LYrFKJz+q9bEfB6XK5DOHNwDk5Yff\n tXOt1uk0Wsg9SU=; b=IRBm6sJV6reDJxgcrz11gnIF5E2NgP9NvxO6w4CHP12mr\n nB4R6s6vCCd+Wu56dVFZCoZXOV88Eej+oTKDm8lzu27C2Uv9gBDILCubn6U0Qz0j\n bEC+J4wGHK+Jr2NJi38rxRDsDNNDJK+I+E/iobmYhubaE6cKzQk9vWAusP88YrZr\n oO8UUgGjvQxfLWOmwovf+W62K583StxI96uUpSkLbc/vhie4v5I8Jf4vom0wxidA\n AJBhbWc5YXK40j5Y9UfZdauVbnGPYVEZRWeAUu+hLFDdd6g7MxwTdmbBG4REB4mI\n PvwsoJhnvKG247+Dzexms9duo/pyDXrnpd9Lahovw==", "From": "Dongli Zhang <dongli.zhang@oracle.com>", "To": "qemu-devel@nongnu.org", "Cc": "kvm@vger.kernel.org, pbonzini@redhat.com, mtosatti@redhat.com,\n dapeng1.mi@linux.intel.com, zhao1.liu@intel.com, sandipan.das@amd.com,\n zide.chen@intel.com, joe.jin@oracle.com", "Subject": "[PATCH 1/1] target/i386/kvm: Use logical counter index for AMD PMU\n getter", "Date": "Tue, 24 Mar 2026 19:12:36 -0700", "Message-ID": "<20260325021236.14574-1-dongli.zhang@oracle.com>", "X-Mailer": "git-send-email 2.43.5", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-03-25_01,2026-03-24_01,2025-10-01_01", "X-Proofpoint-Spam-Details": "rule=notspam policy=default score=0 phishscore=0\n bulkscore=0 suspectscore=0\n malwarescore=0 mlxlogscore=999 spamscore=0 adultscore=0 mlxscore=0\n classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2603050001\n definitions=main-2603250015", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwMzI1MDAxNCBTYWx0ZWRfX7kzJb5azxOc0\n 6o0KQeqE5bzdytkBiWYa/SvUiZOYzRhr0d5hfVeh5IVyr+fJ/JlXt77xaW/rQQNp9hupPqfb7ZB\n Vp3z+zfsS3kuH3en260EaCNbXuF64p/RTLy++B5+/7seGd9PYz2+0ZR0qogBhQp19mU55wv/3IQ\n NRxasQj9TobOqMpTU1ZgfXZtNAELi5Jyjh3HN77N6bnmxqxv0tBhtoPZneM+5O00t7Ruv9EPIbT\n Tadc6xsJNP9Yh/M/GDgxENDRujdGGFvZFSLh29aZT/oCqBKb7TlqCmzlNdQ6jPcujhAgOWZ/rLz\n 0sg9gjBAdvskLccjq01Jpme/ku+o6BPuZ9847K+smeNqwQEj+hG8EK87yiHd2hBF2XFs98tIeMR\n t60rUZW9aDmHCRVJlaJd20o9QDhptZ6FwSTAhitY8n/QAXNAywLfqy/ViYxAI8QYgi+KIxWaMLu\n +aLQI+NSFYKslRaiEzNHtif2K2AC7YdC1gvLi1pY=", "X-Authority-Analysis": "v=2.4 cv=aq+/yCZV c=1 sm=1 tr=0 ts=69c344c4 b=1 cx=c_pps\n a=zPCbziy225d3KhSqZt3L1A==:117\n a=zPCbziy225d3KhSqZt3L1A==:17\n a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=jiCTI4zE5U7BLdzWsZGv:22\n a=3I1J8UUJPc9JN9BFgKH3:22 a=yPCof4ZbAAAA:8 a=1y-OzW91WTj5pHlFRr8A:9 cc=ntf\n awl=host:12272", "X-Proofpoint-ORIG-GUID": "unwITvswENtPoXWq45Zl40YYPNS7rLKl", "X-Proofpoint-GUID": "unwITvswENtPoXWq45Zl40YYPNS7rLKl", "Received-SPF": "pass client-ip=205.220.177.32;\n envelope-from=dongli.zhang@oracle.com; helo=mx0b-00069f02.pphosted.com", "X-Spam_score_int": "-27", "X-Spam_score": "-2.8", "X-Spam_bar": "--", "X-Spam_report": "(-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_MED=-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_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001,\n RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,\n SPF_HELO_NONE=0.001, 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": "For Intel PMU, the counter and selector MSR ranges are disjoint. AMD PMU\nbehaves the same way when PerfCore is unavailable.\n\nHowever, once PerfCore is present, AMD PMU switches to an interleaved\nlayout in which selector and counter MSRs share a single alternating range.\n\nMSR_F15H_PERF_CTL0 = 0xc0010200\nMSR_F15H_PERF_CTR0 = 0xc0010201\n... ...\n... ...\nMSR_F15H_PERF_CTL5 = 0xc001020a\nMSR_F15H_PERF_CTR5 = 0xc001020b\n\nThe commit 4c7f05232c (\"target/i386/kvm: reset AMD PMU registers during VM\nreset\") added the getter/putter pair for AMD PMU MSRs to clear them on\nreset, but it ignored that, without PerfCore, AMD reuses alternating MSR\naddresses for selectors and counters. env->msr_gp_counters[] holds the raw\ncounts and env->msr_gp_evtsel[] holds the selectors, so with the\ninterleaved layout we must translate the MSR address back to the logical\ncounter index instead of treating the interleaved slot as the array index.\n\nThe arrays are sized to MAX_GP_COUNTERS = 18, so the code never writes past\nthe end. And in the reset path QEMU simply zeroes everything, so that use\ncase still works.\n\nHowever, the live migration is broken. The PMU state is stored at the\nwrong indices, so the destination VM reloads mismatched selector/counter\npairs. Fix the getter to use the logical counter index rather than the raw\ninterleaved offset.\n\nFixes: 4c7f05232c (\"target/i386/kvm: reset AMD PMU registers during VM reset\")\nSigned-off-by: Dongli Zhang <dongli.zhang@oracle.com>\n---\n target/i386/kvm/kvm.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)", "diff": "diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c\nindex 9e352882c8..b4e549c62b 100644\n--- a/target/i386/kvm/kvm.c\n+++ b/target/i386/kvm/kvm.c\n@@ -5239,9 +5239,9 @@ static int kvm_get_msrs(X86CPU *cpu)\n MSR_F15H_PERF_CTL0 + AMD64_NUM_COUNTERS_CORE * 2 - 1:\n index = index - MSR_F15H_PERF_CTL0;\n if (index & 0x1) {\n- env->msr_gp_counters[index] = msrs[i].data;\n+ env->msr_gp_counters[index >> 1] = msrs[i].data;\n } else {\n- env->msr_gp_evtsel[index] = msrs[i].data;\n+ env->msr_gp_evtsel[index >> 1] = msrs[i].data;\n }\n break;\n case HV_X64_MSR_HYPERCALL:\n", "prefixes": [ "1/1" ] }