Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.2/patches/2231978/?format=api
{ "id": 2231978, "url": "http://patchwork.ozlabs.org/api/1.2/patches/2231978/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260501200026.22784-6-oelghoul@linux.ibm.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": "<20260501200026.22784-6-oelghoul@linux.ibm.com>", "list_archive_url": null, "date": "2026-05-01T20:00:26", "name": "[RFC,v1,5/5] hw/s390x: Report FMB passthrough and/or FMB DMA counters to the guest", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "439e2493f6f5a2c5f5e665064ce0da0c55dc086a", "submitter": { "id": 93299, "url": "http://patchwork.ozlabs.org/api/1.2/people/93299/?format=api", "name": "Omar Elghoul", "email": "oelghoul@linux.ibm.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260501200026.22784-6-oelghoul@linux.ibm.com/mbox/", "series": [ { "id": 502493, "url": "http://patchwork.ozlabs.org/api/1.2/series/502493/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=502493", "date": "2026-05-01T20:00:21", "name": "s390x/pci: Improved zPCI Function Measurement Support", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/502493/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2231978/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2231978/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=ibm.com header.i=@ibm.com header.a=rsa-sha256\n header.s=pp1 header.b=NcmrTnxX;\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 4g6hpT00S8z1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 02 May 2026 06:04:48 +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 1wIu6E-0001r3-Fh; Fri, 01 May 2026 16:04:35 -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 <oelghoul@linux.ibm.com>)\n id 1wIu6B-0001k6-FS; Fri, 01 May 2026 16:04:31 -0400", "from mx0b-001b2d01.pphosted.com ([148.163.158.5])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <oelghoul@linux.ibm.com>)\n id 1wIu69-0001ei-NF; Fri, 01 May 2026 16:04:31 -0400", "from pps.filterd (m0360072.ppops.net [127.0.0.1])\n by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 641EjivY2840313; Fri, 1 May 2026 20:04:26 GMT", "from ppma11.dal12v.mail.ibm.com\n (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219])\n by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4drn8vv63q-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n Fri, 01 May 2026 20:04:26 +0000 (GMT)", "from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1])\n by ppma11.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id\n 641JcjSM023096;\n Fri, 1 May 2026 20:04:25 GMT", "from smtprelay06.wdc07v.mail.ibm.com ([172.16.1.73])\n by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4dsamyrqrd-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n Fri, 01 May 2026 20:04:25 +0000 (GMT)", "from smtpav06.dal12v.mail.ibm.com (smtpav06.dal12v.mail.ibm.com\n [10.241.53.105])\n by smtprelay06.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n 641K4MFf32244260\n (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n Fri, 1 May 2026 20:04:22 GMT", "from smtpav06.dal12v.mail.ibm.com (unknown [127.0.0.1])\n by IMSVA (Postfix) with ESMTP id 5714B58043;\n Fri, 1 May 2026 20:04:22 +0000 (GMT)", "from smtpav06.dal12v.mail.ibm.com (unknown [127.0.0.1])\n by IMSVA (Postfix) with ESMTP id 399CA58059;\n Fri, 1 May 2026 20:04:21 +0000 (GMT)", "from Mac.ibm.com (unknown [9.61.247.25])\n by smtpav06.dal12v.mail.ibm.com (Postfix) with ESMTP;\n Fri, 1 May 2026 20:04:21 +0000 (GMT)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc\n :content-transfer-encoding:date:from:in-reply-to:message-id\n :mime-version:references:subject:to; s=pp1; bh=1Mthas14dUCzArtmP\n BHd0kOVwbr1CPycXWbV3rNFn9E=; b=NcmrTnxXIgN0jgRp5cZSBR3nZyFXHcebN\n Mjw/N3W6mr+NbZOaeH8giEGDuHC1s41DGeTRxC8vcBorX49rZ1IYLvKuqJ+MD8Af\n sSYwyUDn+uIrf3wCUvpPFWRbnLnaak1tMYVijm0I7HTSA38AZX7L9/rVUZ66AXuI\n lI8D5pZprW8wq9aUCbTCypwWCnrBrOM4jPcZiMocjXFrkSAOKp7k7fy/LoOtEV6e\n /zkpW8oWcicGqCzOikdWz+COQ697wNr68no6w7+r6NvL07mURgmySb1N7wsLUu0J\n L9wF5dizI/CIJKYnCjifgmB2v6b/5Pkh++N4KsTjVGQfmcC2ofAzw==", "From": "Omar Elghoul <oelghoul@linux.ibm.com>", "To": "qemu-devel@nongnu.org, qemu-s390x@nongnu.org", "Cc": "oelghoul@linux.ibm.com, mjrosato@linux.ibm.com, alifm@linux.ibm.com,\n farman@linux.ibm.com, pasic@linux.ibm.com, borntraeger@linux.ibm.com,\n richard.henderson@linaro.org, iii@linux.ibm.com, david@kernel.org,\n cohuck@redhat.com, mst@redhat.com, pbonzini@redhat.com, clg@redhat.com", "Subject": "[RFC PATCH v1 5/5] hw/s390x: Report FMB passthrough and/or FMB DMA\n counters to the guest", "Date": "Fri, 1 May 2026 16:00:26 -0400", "Message-ID": "<20260501200026.22784-6-oelghoul@linux.ibm.com>", "X-Mailer": "git-send-email 2.52.0", "In-Reply-To": "<20260501200026.22784-1-oelghoul@linux.ibm.com>", "References": "<20260501200026.22784-1-oelghoul@linux.ibm.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-TM-AS-GCONF": "00", "X-Authority-Analysis": "v=2.4 cv=CIIamxrD c=1 sm=1 tr=0 ts=69f5074a cx=c_pps\n a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17\n a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22\n a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=i_3ZhW82j95uuV7xZWQA:9", "X-Proofpoint-ORIG-GUID": "X75OfkJzypko5NRi3CMG-1B3je4RkAGK", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNTAxMDE5NSBTYWx0ZWRfXz4H/9MW1LOHI\n HnII2MpVDCK8yl6GGUuwxFVBEh/qDKLD4vhlEsnUGJtgehJ7LQ5LYipm1+Ir3xUBCetxmgR7V8F\n e4DbDVEuY0jpcPlwOrtHjRYhHj9252oREg2cdsq3fpbu/nrMlH1064P0zfKRzQBHPyDfCiLfKTs\n 3AJ2vH2zE24zimcAqMdC2nWEcsBD1yu0sYpYTJCPACAnD4Go1OhrOiir4TDFRiWSB8g5bexfSkl\n VpK521WaXOQMbB8ccKyZBhKaMiAE5SshVfL9QrdQJSBtQ5B2HsK4wDnb2wVBG0xnROmf94/tJm9\n Otzrh8D4qfuFP/uYJBRt7mwabkJGq/bJ1Ar1VEAQYfByJ5b4KGFgLtvrOqgG8dTf/sGpuLYAwH2\n cmswwdLzeLNCZXA92E/zS6VS4cW8cADNneTc0gbe/TdRz92uNIAXQI+Hhd4mZF+3aojIkZBc5o2\n zpDmvtc8zj5/spejWNA==", "X-Proofpoint-GUID": "X75OfkJzypko5NRi3CMG-1B3je4RkAGK", "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-05-01_05,2026-04-30_02,2025-10-01_01", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n spamscore=0 phishscore=0 malwarescore=0 suspectscore=0 adultscore=0\n impostorscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0\n priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc=\n route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000\n definitions=main-2605010195", "Received-SPF": "pass client-ip=148.163.158.5;\n envelope-from=oelghoul@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com", "X-Spam_score_int": "-26", "X-Spam_score": "-2.7", "X-Spam_bar": "--", "X-Spam_report": "(-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7,\n RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, 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": "Report the correct FMB length to the guest and report a more accurate\nsnapshot of the FMB using the VFIO feature in the PCI passthrough case or\nthe emulated counters in the emulated case. To preserve the behavior of\nearlier QEMU versions, do not report the PFT or the FMB length to the guest\nin the case where FMB passthrough is unavailable.\n\nSigned-off-by: Omar Elghoul <oelghoul@linux.ibm.com>\n---\n hw/s390x/s390-pci-inst.c | 58 +++++++++++++++++++++++++++++++++++++---\n hw/s390x/s390-pci-vfio.c | 5 ++--\n 2 files changed, 57 insertions(+), 6 deletions(-)", "diff": "diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c\nindex b22144751e..767c5b5cef 100644\n--- a/hw/s390x/s390-pci-inst.c\n+++ b/hw/s390x/s390-pci-inst.c\n@@ -20,6 +20,7 @@\n #include \"system/hw_accel.h\"\n #include \"hw/core/boards.h\"\n #include \"hw/pci/pci_device.h\"\n+#include \"hw/vfio/pci.h\"\n #include \"hw/s390x/s390-pci-inst.h\"\n #include \"hw/s390x/s390-pci-bus.h\"\n #include \"hw/s390x/s390-pci-kvm.h\"\n@@ -296,8 +297,13 @@ int clp_service_call(S390CPU *cpu, uint8_t r2, uintptr_t ra)\n stw_be_p(&resquery->vfn, pbdev->zpci_fn.vfn);\n resquery->flags = pbdev->zpci_fn.flags;\n resquery->pfgid = pbdev->zpci_fn.pfgid;\n- resquery->pft = pbdev->zpci_fn.pft;\n- resquery->fmbl = pbdev->zpci_fn.fmbl;\n+ if (pbdev->has_vfio_fmb) {\n+ resquery->pft = pbdev->zpci_fn.pft;\n+ resquery->fmbl = pbdev->zpci_fn.fmbl >> 2;\n+ } else {\n+ resquery->pft = 0;\n+ resquery->fmbl = 0;\n+ }\n stl_be_p(&resquery->fid, pbdev->zpci_fn.fid);\n stl_be_p(&resquery->uid, pbdev->zpci_fn.uid);\n memcpy(resquery->pfip, pbdev->zpci_fn.pfip, CLP_PFIP_NR_SEGMENTS);\n@@ -1096,6 +1102,9 @@ static void fmb_update(void *opaque)\n {\n S390PCIBusDevice *pbdev = opaque;\n int64_t t = qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL);\n+ VFIOPCIDevice *vpdev;\n+ PCIDevice *pci = pbdev->pdev;\n+ uint8_t format = ZPCI_FMB_FORMAT(pbdev->fmb.format);\n int i;\n \n /* Update U bit */\n@@ -1107,6 +1116,48 @@ static void fmb_update(void *opaque)\n return;\n }\n \n+ /* Check for VFIO device */\n+ vpdev = (VFIOPCIDevice *) object_dynamic_cast(OBJECT(pbdev->pdev),\n+ TYPE_VFIO_PCI_DEVICE);\n+\n+ if (vpdev && pbdev->has_vfio_fmb) {\n+ s390_pci_update_vfio_fmb(pbdev);\n+ goto update_timer;\n+ }\n+\n+ /* Update FMB format-specific counters */\n+ switch (format) {\n+ case 0:\n+ if (pci->dma_rbytes || pci->dma_wbytes) {\n+ pbdev->fmb.fmt0.dma_rbytes = pci->dma_rbytes;\n+ pbdev->fmb.fmt0.dma_wbytes = pci->dma_wbytes;\n+ pbdev->fmb.format |= ZPCI_FMB_DMA_COUNTER_VALID;\n+ }\n+\n+ if (fmb_do_update(pbdev,\n+ offsetof(ZpciFmbFmt0, dma_rbytes) + offsetof(ZpciFmb, fmt0),\n+ pbdev->fmb.fmt0.dma_rbytes,\n+ sizeof(pbdev->fmb.fmt0.dma_rbytes))) {\n+ return;\n+ }\n+\n+ if (fmb_do_update(pbdev,\n+ offsetof(ZpciFmbFmt0, dma_wbytes) + offsetof(ZpciFmb, fmt0),\n+ pbdev->fmb.fmt0.dma_wbytes,\n+ sizeof(pbdev->fmb.fmt0.dma_wbytes))) {\n+ return;\n+ }\n+ default:\n+ break;\n+ }\n+\n+ /* Update format and DMA validity bit */\n+ if (fmb_do_update(pbdev, offsetof(ZpciFmb, format),\n+ pbdev->fmb.format,\n+ sizeof(pbdev->fmb.format))) {\n+ return;\n+ }\n+\n /* Update FMB sample count */\n if (fmb_do_update(pbdev, offsetof(ZpciFmb, sample),\n pbdev->fmb.sample++,\n@@ -1114,7 +1165,7 @@ static void fmb_update(void *opaque)\n return;\n }\n \n- /* Update FMB counters */\n+ /* Update FMB generic counters */\n for (i = 0; i < ZPCI_FMB_CNT_MAX; i++) {\n if (fmb_do_update(pbdev, offsetof(ZpciFmb, counter[i]),\n pbdev->fmb.counter[i],\n@@ -1123,6 +1174,7 @@ static void fmb_update(void *opaque)\n }\n }\n \n+update_timer:\n /* Clear U bit and update the time */\n pbdev->fmb.last_update = time2tod(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL));\n pbdev->fmb.last_update *= 2;\ndiff --git a/hw/s390x/s390-pci-vfio.c b/hw/s390x/s390-pci-vfio.c\nindex d749c8c80a..da630b23be 100644\n--- a/hw/s390x/s390-pci-vfio.c\n+++ b/hw/s390x/s390-pci-vfio.c\n@@ -127,9 +127,8 @@ static void s390_pci_read_base(S390PCIBusDevice *pbdev,\n pbdev->zpci_fn.pchid = cap->pchid;\n pbdev->zpci_fn.vfn = cap->vfn;\n pbdev->zpci_fn.pfgid = cap->gid;\n- /* The following values remain 0 until we support other FMB formats */\n- pbdev->zpci_fn.fmbl = 0;\n- pbdev->zpci_fn.pft = 0;\n+ pbdev->zpci_fn.fmbl = cap->fmb_length;\n+ pbdev->zpci_fn.pft = cap->pft;\n /* Store function type separately for type-specific behavior */\n pbdev->pft = cap->pft;\n \n", "prefixes": [ "RFC", "v1", "5/5" ] }