Cover Letter Detail
Show a cover letter.
GET /api/1.2/covers/2233171/?format=api
{ "id": 2233171, "url": "http://patchwork.ozlabs.org/api/1.2/covers/2233171/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/cover/20260505200510.2954-1-alifm@linux.ibm.com/", "project": { "id": 28, "url": "http://patchwork.ozlabs.org/api/1.2/projects/28/?format=api", "name": "Linux PCI development", "link_name": "linux-pci", "list_id": "linux-pci.vger.kernel.org", "list_email": "linux-pci@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260505200510.2954-1-alifm@linux.ibm.com>", "list_archive_url": null, "date": "2026-05-05T20:05:03", "name": "[v15,0/7] Error recovery for vfio-pci devices on s390x", "submitter": { "id": 73785, "url": "http://patchwork.ozlabs.org/api/1.2/people/73785/?format=api", "name": "Farhan Ali", "email": "alifm@linux.ibm.com" }, "mbox": "http://patchwork.ozlabs.org/project/linux-pci/cover/20260505200510.2954-1-alifm@linux.ibm.com/mbox/", "series": [ { "id": 502892, "url": "http://patchwork.ozlabs.org/api/1.2/series/502892/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=502892", "date": "2026-05-05T20:05:06", "name": "Error recovery for vfio-pci devices on s390x", "version": 15, "mbox": "http://patchwork.ozlabs.org/series/502892/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/2233171/comments/", "headers": { "Return-Path": "\n <linux-pci+bounces-53781-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-pci@vger.kernel.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=gS7oJTjU;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-53781-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com\n header.b=\"gS7oJTjU\"", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=148.163.156.1", "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.ibm.com", "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=linux.ibm.com" ], "Received": [ "from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g98rW3XKNz1yJV\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 06 May 2026 06:15:07 +1000 (AEST)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id AFEFF3108A78\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 5 May 2026 20:05:45 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 339323D3315;\n\tTue, 5 May 2026 20:05:21 +0000 (UTC)", "from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com\n [148.163.156.1])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 968F23D6465;\n\tTue, 5 May 2026 20:05:19 +0000 (UTC)", "from pps.filterd (m0360083.ppops.net [127.0.0.1])\n\tby mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 645II9bn2606962;\n\tTue, 5 May 2026 20:05:14 GMT", "from ppma21.wdc07v.mail.ibm.com\n (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91])\n\tby mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4dw9v7dkur-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n\tTue, 05 May 2026 20:05:13 +0000 (GMT)", "from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1])\n\tby ppma21.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id\n 645JsbEI019201;\n\tTue, 5 May 2026 20:05:12 GMT", "from smtprelay04.wdc07v.mail.ibm.com ([172.16.1.71])\n\tby ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4dwvkju83g-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n\tTue, 05 May 2026 20:05:12 +0000 (GMT)", "from smtpav06.dal12v.mail.ibm.com (smtpav06.dal12v.mail.ibm.com\n [10.241.53.105])\n\tby smtprelay04.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n 645K5B8h35979836\n\t(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n\tTue, 5 May 2026 20:05:11 GMT", "from smtpav06.dal12v.mail.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id 49C2C5805D;\n\tTue, 5 May 2026 20:05:11 +0000 (GMT)", "from smtpav06.dal12v.mail.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id 873D358043;\n\tTue, 5 May 2026 20:05:10 +0000 (GMT)", "from IBM-D32RQW3.ibm.com (unknown [9.61.242.219])\n\tby smtpav06.dal12v.mail.ibm.com (Postfix) with ESMTP;\n\tTue, 5 May 2026 20:05:10 +0000 (GMT)" ], "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1778011521; cv=none;\n b=Dnr4OUHLH3CsvAwh6HbqaMnhuNpnIdiDuh9StFu8ngxyrjRiP3xW172sv/CHTKO/1wugd7k0nWemoSFteE+NvWr4EzcdKsR9G+6xuSe152cIPcSmjJmS3xfM5/iBhI+jC6K5OY1grhjE641drpxi2s2x463KAFwXTh5XNVrEomU=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1778011521; c=relaxed/simple;\n\tbh=OxrNVPWMOar/igoc0kzdRKgi2YjXHjsejeCP8GcY6Fo=;\n\th=From:To:Cc:Subject:Date:Message-ID:MIME-Version;\n b=LnhmCJSCnx6+ee2U3uGUpO2OSLIUCqvSgjsZ8afCwP0/7iPi/76nuZwwCHIpdSDz6fvjgy6KFQB+bOWayvHAMsibg6uHaRF8/PQWghvpeeEONH0P6PYvBYBCRZBE5xUONzg36/OWKU/j5tePGbcah5lqegucBD8mAFij/6hoFNc=", "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.ibm.com;\n spf=pass smtp.mailfrom=linux.ibm.com;\n dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com\n header.b=gS7oJTjU; arc=none smtp.client-ip=148.163.156.1", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc\n\t:content-transfer-encoding:date:from:message-id:mime-version\n\t:subject:to; s=pp1; bh=f9m8uZgl60NrXjuBZMnFmGaI9h6MtJWWa2rNTm/Vh\n\t88=; b=gS7oJTjUl1AfloEHTxwkQ85GQbAd640d9VNlaBv604b1H6BJj3Mz/u7vx\n\todbIeuvKttDjsYRH98Y1hp902kLUkdxRJ33dEgI/okJ8yGRtZsm3aaY+n0PlVqsg\n\t9IzmjsOf6Wj5wGu3+pyN84bH4wLhL2YH3LyJM/Mk1eI0+zb8bJAeaxbFl6g3sWZj\n\tujeTZDqxQSpTGzY/7i/oEIkzgxLAQa9nOZJqD/dH8fhPopu4q4BkAvvfYlHKSCQr\n\t0f+WpElFCjZsMe5eDpCB2Ae6xDpFan+GzfztbsNU9d71LYGDLMVV1+VCpEaAe7ZN\n\t5cJ55yAUMMZi6tRPmUyaMENLFffQw==", "From": "Farhan Ali <alifm@linux.ibm.com>", "To": "linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org,\n linux-pci@vger.kernel.org", "Cc": "helgaas@kernel.org, alex@shazbot.org, alifm@linux.ibm.com,\n schnelle@linux.ibm.com, mjrosato@linux.ibm.com", "Subject": "[PATCH v15 0/7] Error recovery for vfio-pci devices on s390x", "Date": "Tue, 5 May 2026 13:05:03 -0700", "Message-ID": "<20260505200510.2954-1-alifm@linux.ibm.com>", "X-Mailer": "git-send-email 2.43.0", "Precedence": "bulk", "X-Mailing-List": "linux-pci@vger.kernel.org", "List-Id": "<linux-pci.vger.kernel.org>", "List-Subscribe": "<mailto:linux-pci+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-pci+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-TM-AS-GCONF": "00", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNTA1MDE5MSBTYWx0ZWRfXwW96ap90qzZn\n 7qbY6tf7wp4hWvQ3nlMJsXgQQVN0a1efZi1vULs6+bkc57f4qPoVwF0lGPNd04ucLNjR6ngN6x1\n LuQGPRpC5GigA4Jtaq4MNBGo5cqUmi5PA2HW256eZQV/0IH9rSdkUb7Qb1/pr8+pxUHoRjN7CKk\n 6BTRyEysMir3Vijc7U4371OKxRcwGlIri2BNXHKTQJmOBHIEBL1nlAt8Gfa3M45tAKA+ZqLZIm+\n BXlsaBQvuXC5zepV5sV65KvsEX2D+aCx/Zdm/daJIAxZ4ZpeNgZvMQdg835xmtyzfvs+NnmVOAa\n ZL4QWcGnjSRGgS9Mv1vB5u5bJ8JfFKt7exGjlgmzT4ZaflCq9o6+4VrHtycDYKOodcSkSc3AVMl\n 1wYYtGSseQDeNdG0asZKKyBoEMPpUt3jTyujP6nq/Fga/m3C8tBcb9G6PLPEd4Mme/cyinmEA8r\n sPL/xWCW3UCif9uZ5fQ==", "X-Proofpoint-GUID": "o03peR38ZGDbbQqZZOUmZbkLthSy_ekV", "X-Proofpoint-ORIG-GUID": "o03peR38ZGDbbQqZZOUmZbkLthSy_ekV", "X-Authority-Analysis": "v=2.4 cv=eu/vCIpX c=1 sm=1 tr=0 ts=69fa4d7a cx=c_pps\n a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17\n a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22\n a=iQ6ETzBq9ecOQQE5vZCe:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8\n a=4zu8aI-QVnT60ftJUTQA:9 a=O8hF6Hzn-FEA:10", "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-05_02,2026-04-30_02,2025-10-01_01", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n priorityscore=1501 phishscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0\n suspectscore=0 malwarescore=0 bulkscore=0 impostorscore=0 spamscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605050191" }, "content": "Hi,\n\nThis Linux kernel patch series introduces support for error recovery for\npassthrough PCI devices on System Z (s390x).\n\nBackground\n----------\nFor PCI devices on s390x an operating system receives platform specific\nerror events from firmware rather than through AER.Today for\npassthrough/userspace devices, we don't attempt any error recovery and\nignore any error events for the devices. The passthrough/userspace devices\nare managed by the vfio-pci driver. The driver does register error handling\ncallbacks (error_detected), and on an error trigger an eventfd to\nuserspace. But we need a mechanism to notify userspace\n(QEMU/guest/userspace drivers) about the error event.\n\nProposal\n--------\nWe can expose this error information (currently only the PCI Error Code)\nvia a device feature. Userspace can then obtain the error information\nvia VFIO_DEVICE_FEATURE ioctl and take appropriate actions such as driving\na device reset.\n\nThis is how a typical flow for passthrough devices to a VM would work:\nFor passthrough devices to a VM, the driver bound to the device on the host\nis vfio-pci. vfio-pci driver does support the error_detected() callback\n(vfio_pci_core_aer_err_detected()), and on an PCI error s390x recovery\ncode on the host will call the vfio-pci error_detected() callback. The\nvfio-pci error_detected() callback will notify userspace/QEMU via an\neventfd, and return PCI_ERS_RESULT_CAN_RECOVER. At this point the s390x\nerror recovery on the host will skip any further action(see patch 4) and\nlet userspace drive the error recovery.\n\nOnce userspace/QEMU is notified, it then injects this error into the VM\nso device drivers in the VM can take recovery actions. For example for a\npassthrough NVMe device, the VM's OS NVMe driver will access the device.\nAt this point the VM's NVMe driver's error_detected() will drive the\nrecovery by returning PCI_ERS_RESULT_NEED_RESET, and the s390x error\nrecovery in the VM's OS will try to do a reset. Resets are privileged\noperations and so the VM will need intervention from QEMU to perform the\nreset. QEMU will invoke the VFIO_DEVICE_RESET ioctl to now notify the\nhost that the VM is requesting a reset of the device. The vfio-pci driver\non the host will then perform the reset on the device to recover it.\n\n\nThanks\nFarhan\n\nChangeLog\n---------\nThis only includes change log from last 5 revision. Older change log is\navailable in v14 cover letter.\n\nv14 https://lore.kernel.org/all/20260421163031.704-1-alifm@linux.ibm.com/\nv14 -> v15\n - Fix issues identified by Sashiko (patch 4).\n\n - Address Niklas feedback (patch 4 and patch 5).\n\n - Rebase on 7.1-rc2.\n\n\nv13 series https://lore.kernel.org/all/20260413210608.2912-1-alifm@linux.ibm.com/\nv13 -> v14\n - Remove version from vfio uAPI struct. Instead reserve additional space\n and add a flags field. The flags will be used to indicate any usage of\n the reserved space (patch 5).\n\n - Remove pending_errors from vfio uAPI struct and instead return an\n error to indicate no more pending error for userspace to handle (patch 5).\n\n - Rebase on recent linux master\n\nv12 series https://lore.kernel.org/all/20260330174011.1161-1-alifm@linux.ibm.com/\nv12 -> v13\n - Add the mediated_recovery flag as part of struct zpci_ccdf_pending\n and protect the struct with pending_errs_lock (patch 4).\n\n - Move dequeing pending error logic to a helper function (patch 5).\n\n - Update device feature number for VFIO_DEVICE_FEATURE_ZPCI_ERROR (patch 5).\n\n - Rebase on linux-next with tag next-20260410\n\n\nv11 series https://lore.kernel.org/all/20260316191544.2279-1-alifm@linux.ibm.com/\n - Address Bjorn's comments from v11 (patches 1-3).\n\n - Create a common function to check config space accessibility\n (patch 2).\n\n - Address Alex's comments from v11 (patches 4, 5, 7).\n\n - Protect the mediated_recovery flag with the pending_errs_lock.\n Doing that it made sense to squash patches 5 and 6 from v11\n (current patch 4). Even though the code didn't change significantly\n I have dropped R-b tags for it. Would appreciate another look at the\n patch (current patch 4).\n\n - Dropped arch specific pcibios_resource_to_bus and\n pcibios_bus_to_resource as its not needed for this series. Will address\n the issue as a standalone patch separate from this series.\n\n - Rebased on pci/next, with head at f8a1c947ccc6 (\"Merge branch 'pci/misc'\")\n\n\nv10 series https://lore.kernel.org/all/20260302203325.3826-1-alifm@linux.ibm.com/\nv10 -> v11\n - Rebase on pci/next to handle merge conflicts with patch 1.\n\n - Typo fixup in commit message (patch 4) and use guard() for mutex\n (patch 6).\n\n\n\nFarhan Ali (7):\n PCI: Allow per function PCI slots to fix slot reset on s390\n PCI: Avoid saving config space state if inaccessible\n PCI: Fail FLR when config space is inaccessible\n s390/pci: Store PCI error information for passthrough devices\n vfio-pci/zdev: Add a device feature for error information\n vfio/pci: Add a reset_done callback for vfio-pci driver\n vfio/pci: Remove the pcie check for VFIO_PCI_ERR_IRQ_INDEX\n\n arch/s390/include/asm/pci.h | 32 +++++++\n arch/s390/pci/pci.c | 1 +\n arch/s390/pci/pci_event.c | 133 ++++++++++++++++++------------\n drivers/pci/hotplug/rpaphp_slot.c | 2 +-\n drivers/pci/pci.c | 32 ++++++-\n drivers/pci/slot.c | 33 ++++++--\n drivers/vfio/pci/vfio_pci_core.c | 22 +++--\n drivers/vfio/pci/vfio_pci_intrs.c | 3 +-\n drivers/vfio/pci/vfio_pci_priv.h | 9 ++\n drivers/vfio/pci/vfio_pci_zdev.c | 57 ++++++++++++-\n include/linux/pci.h | 8 +-\n include/uapi/linux/vfio.h | 30 +++++++\n 12 files changed, 287 insertions(+), 75 deletions(-)" }