{"id":2197373,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2197373/?format=json","project":{"id":28,"url":"http://patchwork.ozlabs.org/api/1.0/projects/28/?format=json","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},"msgid":"<20260217182257.1582-6-alifm@linux.ibm.com>","date":"2026-02-17T18:22:53","name":"[v9,5/9] s390/pci: Update the logic for detecting passthrough device","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"add85c20399ad38dc5e976a85558f3a64f5c0475","submitter":{"id":73785,"url":"http://patchwork.ozlabs.org/api/1.0/people/73785/?format=json","name":"Farhan Ali","email":"alifm@linux.ibm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-pci/patch/20260217182257.1582-6-alifm@linux.ibm.com/mbox/","series":[{"id":492470,"url":"http://patchwork.ozlabs.org/api/1.0/series/492470/?format=json","date":"2026-02-17T18:22:49","name":"Error recovery for vfio-pci devices on s390x","version":9,"mbox":"http://patchwork.ozlabs.org/series/492470/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2197373/checks/","tags":{},"headers":{"Return-Path":"\n <linux-pci+bounces-47501-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=A3MGmbKt;\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-47501-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=\"A3MGmbKt\"","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)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fFp4L4231z1xpY\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 18 Feb 2026 05:26:10 +1100 (AEDT)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 63DBC307C485\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 17 Feb 2026 18:23:25 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 369BB37473A;\n\tTue, 17 Feb 2026 18:23:19 +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 E884C37416B;\n\tTue, 17 Feb 2026 18:23:12 +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 61H8IvE63653168;\n\tTue, 17 Feb 2026 18:23:05 GMT","from ppma11.dal12v.mail.ibm.com\n (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219])\n\tby mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4cajcqwk2k-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n\tTue, 17 Feb 2026 18:23:05 +0000 (GMT)","from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1])\n\tby ppma11.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id\n 61HFjwJK030217;\n\tTue, 17 Feb 2026 18:23:04 GMT","from smtprelay05.dal12v.mail.ibm.com ([172.16.1.7])\n\tby ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4ccb4543c7-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n\tTue, 17 Feb 2026 18:23:04 +0000","from smtpav05.dal12v.mail.ibm.com (smtpav05.dal12v.mail.ibm.com\n [10.241.53.104])\n\tby smtprelay05.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n 61HIN3Ju23069410\n\t(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n\tTue, 17 Feb 2026 18:23:03 GMT","from smtpav05.dal12v.mail.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id BABB358056;\n\tTue, 17 Feb 2026 18:23:03 +0000 (GMT)","from smtpav05.dal12v.mail.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id E782F58052;\n\tTue, 17 Feb 2026 18:23:02 +0000 (GMT)","from IBM-D32RQW3.ibm.com (unknown [9.61.242.249])\n\tby smtpav05.dal12v.mail.ibm.com (Postfix) with ESMTP;\n\tTue, 17 Feb 2026 18:23:02 +0000 (GMT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771352599; cv=none;\n b=kyLPu3zxBygRywXE2T9ms0oVqgXzyNwRoz1Eq7gCiy+Xq+ilMpace+mwIOosKJW0d34yGvop4YK9k83KUd2wXAEAGOFP5GW2C2i3HXX/Dz+RhGAQdD1UEGNm+k8zBJd0tD1aDr5WAVXVlCrO4Ht1ZiSjRrevQz7dpDgMlmt38wA=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771352599; c=relaxed/simple;\n\tbh=YhMjb/UNnC49ZtdnrN3awZkC7cL4VLUUSXKJTq4yGLI=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=SsKvtR7eshdFj3A2NxW7xTBJTpu1y5x2qaZhFwPRzxDHdA1F6yqt+zBrr5Gz2UoJ7We8liHJrM2rE03xZHqFEdn3SLide7oa0lH6Nl4Y66fQG7072xh0HFIZyIk28KLHR7VmiTCtHVQLGG/dUKWa+UPg8kGyVlhGNcvkxTUDkPw=","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=A3MGmbKt; 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:in-reply-to:message-id\n\t:mime-version:references:subject:to; s=pp1; bh=c43eaOrCUMS978Urc\n\tkknSWwXnr7+gE9biC3IcpIolDU=; b=A3MGmbKta1SVpjLqPOu+Gy1QPQDN9cpXR\n\tGks3hBGR0h9eI/ES/PqiSOt+4KhoijSVRofLo2xzRa7sR9lo4Gmw0pmMY025wbLP\n\t7UumVXRULC+qIGQYkCDyIbfzA7UJLK9u7Vu37kwrZ/LdRe12L+iEkUtkvIKUpxsZ\n\t08MqBV8ESQtXisKcI70OrCWTaYn2sK4nQ/7Xo2A6V3YqlKu3L1UU4rWkxh6YYnZj\n\tjD6sr0xOOSsfSwjlELc6ZO1DDk/7afP7NSbFyzDhLpkiUrJ6xNMYMyX1idIHlP8S\n\ttQDYHBTfowct3lpShQsvylWG2BkAmRTHx+zXziPs+4zkxdD5WTLCQ==","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, lukas@wunner.de, alex@shazbot.org, clg@redhat.com,\n        stable@vger.kernel.org, alifm@linux.ibm.com, schnelle@linux.ibm.com,\n        mjrosato@linux.ibm.com","Subject":"[PATCH v9 5/9] s390/pci: Update the logic for detecting passthrough\n device","Date":"Tue, 17 Feb 2026 10:22:53 -0800","Message-ID":"<20260217182257.1582-6-alifm@linux.ibm.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20260217182257.1582-1-alifm@linux.ibm.com>","References":"<20260217182257.1582-1-alifm@linux.ibm.com>","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-GUID":"HIEQR2ZP7QiC9ur3kNBXhj9stfzmRcTa","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwMjE3MDE0OCBTYWx0ZWRfXzj45u3muuLD3\n xWxONfS0+iNmrgWuiz7cYJws6Us0YLnKbmIINxgoaboY2wydfM7jUNT0+uFRPYB5R1OqG027yig\n 3IUZ7iSaj15DFMj89QvW9u5qQxhoFl06suYjckN5xIUt1KVHa8fSVGy3Jzr0/nARWP32BL6CKwE\n VwOE7eXZgPhdqfcXEiXq7BYw2EmZuENkRC7ZUixk9u+aOcupYGUG8yqhl0Hhlu2xfLIqn/Y7z0S\n Uq2IHwNbiHAFmGkCB0kUHQ7xmUgjZtYvNx+yq9eRSo8iV8HRB4/wC8Yz7YPB7wUUYt7ol4iEeSf\n h2ZcFNgQgkMPDEC1askMJV/fJvNyWbvHKQRf4Eod8tIDl+75gKipzxZNRVxvzsBrTCjYG7uI8Nj\n RCpSFW42VskEK74w8YOAdqU00O2/2j4vZHqJHZIaBdD8OM6kgtFN49Zb3lE3A4QK18bkr3wYakt\n 8TizgScdfMGXZaPgxiw==","X-Authority-Analysis":"v=2.4 cv=UPXQ3Sfy c=1 sm=1 tr=0 ts=6994b209 cx=c_pps\n a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17\n a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22\n a=GgsMoib0sEa3-_RKJdDe:22 a=VnNF1IyMAAAA:8 a=MtaQWmmsotiDqj5H3ecA:9","X-Proofpoint-ORIG-GUID":"HIEQR2ZP7QiC9ur3kNBXhj9stfzmRcTa","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-02-17_03,2026-02-16_04,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n malwarescore=0 suspectscore=0 phishscore=0 impostorscore=0 adultscore=0\n bulkscore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 spamscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602170148"},"content":"We can now have userspace drivers (vfio-pci based) on s390x. The userspace\ndrivers will not have any KVM fd and so no kzdev associated with them. So\nwe need to update the logic for detecting passthrough devices to not depend\non struct kvm_zdev.\n\nReviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>\nSigned-off-by: Farhan Ali <alifm@linux.ibm.com>\n---\n arch/s390/include/asm/pci.h      |  1 +\n arch/s390/pci/pci_event.c        | 14 ++++----------\n drivers/vfio/pci/vfio_pci_zdev.c |  9 ++++++++-\n 3 files changed, 13 insertions(+), 11 deletions(-)","diff":"diff --git a/arch/s390/include/asm/pci.h b/arch/s390/include/asm/pci.h\nindex c0ff19dab580..ec8a772bf526 100644\n--- a/arch/s390/include/asm/pci.h\n+++ b/arch/s390/include/asm/pci.h\n@@ -171,6 +171,7 @@ struct zpci_dev {\n \n \tchar res_name[16];\n \tbool mio_capable;\n+\tbool mediated_recovery;\n \tstruct zpci_bar_struct bars[PCI_STD_NUM_BARS];\n \n \tu64\t\tstart_dma;\t/* Start of available DMA addresses */\ndiff --git a/arch/s390/pci/pci_event.c b/arch/s390/pci/pci_event.c\nindex 839bd91c056e..de504925f709 100644\n--- a/arch/s390/pci/pci_event.c\n+++ b/arch/s390/pci/pci_event.c\n@@ -60,16 +60,10 @@ static inline bool ers_result_indicates_abort(pci_ers_result_t ers_res)\n \t}\n }\n \n-static bool is_passed_through(struct pci_dev *pdev)\n+static bool needs_mediated_recovery(struct pci_dev *pdev)\n {\n \tstruct zpci_dev *zdev = to_zpci(pdev);\n-\tbool ret;\n-\n-\tmutex_lock(&zdev->kzdev_lock);\n-\tret = !!zdev->kzdev;\n-\tmutex_unlock(&zdev->kzdev_lock);\n-\n-\treturn ret;\n+\treturn zdev->mediated_recovery;\n }\n \n static bool is_driver_supported(struct pci_driver *driver)\n@@ -194,7 +188,7 @@ static pci_ers_result_t zpci_event_attempt_error_recovery(struct pci_dev *pdev)\n \t}\n \tpdev->error_state = pci_channel_io_frozen;\n \n-\tif (is_passed_through(pdev)) {\n+\tif (needs_mediated_recovery(pdev)) {\n \t\tpr_info(\"%s: Cannot be recovered in the host because it is a pass-through device\\n\",\n \t\t\tpci_name(pdev));\n \t\tstatus_str = \"failed (pass-through)\";\n@@ -279,7 +273,7 @@ static void zpci_event_io_failure(struct pci_dev *pdev, pci_channel_state_t es)\n \t * we will inject the error event and let the guest recover the device\n \t * itself.\n \t */\n-\tif (is_passed_through(pdev))\n+\tif (needs_mediated_recovery(pdev))\n \t\tgoto out;\n \tdriver = to_pci_driver(pdev->dev.driver);\n \tif (driver && driver->err_handler && driver->err_handler->error_detected)\ndiff --git a/drivers/vfio/pci/vfio_pci_zdev.c b/drivers/vfio/pci/vfio_pci_zdev.c\nindex 0990fdb146b7..a7bc23ce8483 100644\n--- a/drivers/vfio/pci/vfio_pci_zdev.c\n+++ b/drivers/vfio/pci/vfio_pci_zdev.c\n@@ -148,6 +148,8 @@ int vfio_pci_zdev_open_device(struct vfio_pci_core_device *vdev)\n \tif (!zdev)\n \t\treturn -ENODEV;\n \n+\tzdev->mediated_recovery = true;\n+\n \tif (!vdev->vdev.kvm)\n \t\treturn 0;\n \n@@ -161,7 +163,12 @@ void vfio_pci_zdev_close_device(struct vfio_pci_core_device *vdev)\n {\n \tstruct zpci_dev *zdev = to_zpci(vdev->pdev);\n \n-\tif (!zdev || !vdev->vdev.kvm)\n+\tif (!zdev)\n+\t\treturn;\n+\n+\tzdev->mediated_recovery = false;\n+\n+\tif (!vdev->vdev.kvm)\n \t\treturn;\n \n \tif (zpci_kvm_hook.kvm_unregister)\n","prefixes":["v9","5/9"]}