{"id":2233168,"url":"http://patchwork.ozlabs.org/api/1.2/patches/2233168/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-pci/patch/20260505200510.2954-3-alifm@linux.ibm.com/","project":{"id":28,"url":"http://patchwork.ozlabs.org/api/1.2/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,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260505200510.2954-3-alifm@linux.ibm.com>","list_archive_url":null,"date":"2026-05-05T20:05:05","name":"[v15,2/7] PCI: Avoid saving config space state if inaccessible","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"dd417dd477b85e14a6e298c0a47a81afb4d136c9","submitter":{"id":73785,"url":"http://patchwork.ozlabs.org/api/1.2/people/73785/?format=json","name":"Farhan Ali","email":"alifm@linux.ibm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-pci/patch/20260505200510.2954-3-alifm@linux.ibm.com/mbox/","series":[{"id":502892,"url":"http://patchwork.ozlabs.org/api/1.2/series/502892/?format=json","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/patches/2233168/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2233168/checks/","tags":{},"related":[],"headers":{"Return-Path":"\n <linux-pci+bounces-53782-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=RDRytMSA;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-53782-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=\"RDRytMSA\"","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 [172.234.253.10])\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 4g98nt0XHRz1yJV\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 06 May 2026 06:12:50 +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 C879B3108D21\n\tfor <incoming@patchwork.ozlabs.org>; Tue,  5 May 2026 20:05:46 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 404FC3D9DB2;\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 E68373D16E8;\n\tTue,  5 May 2026 20:05:19 +0000 (UTC)","from pps.filterd (m0356517.ppops.net [127.0.0.1])\n\tby mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 645JZ2sl2503246;\n\tTue, 5 May 2026 20:05:16 GMT","from ppma13.dal12v.mail.ibm.com\n (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221])\n\tby mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4dw9y1djc1-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n\tTue, 05 May 2026 20:05:15 +0000 (GMT)","from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1])\n\tby ppma13.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id\n 645JsQHC014200;\n\tTue, 5 May 2026 20:05:14 GMT","from smtprelay06.wdc07v.mail.ibm.com ([172.16.1.73])\n\tby ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4dwwtgb3a7-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n\tTue, 05 May 2026 20:05:14 +0000 (GMT)","from smtpav06.dal12v.mail.ibm.com (smtpav06.dal12v.mail.ibm.com\n [10.241.53.105])\n\tby smtprelay06.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n 645K5D7Y6095480\n\t(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n\tTue, 5 May 2026 20:05:13 GMT","from smtpav06.dal12v.mail.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id F264D58055;\n\tTue,  5 May 2026 20:05:12 +0000 (GMT)","from smtpav06.dal12v.mail.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id 412D358043;\n\tTue,  5 May 2026 20:05:12 +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:12 +0000 (GMT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1778011521; cv=none;\n b=bzzPBtwN04PAIiyP5+Ll1gJt+2Jquehh9vxDSx2qvzgKgvPX+ZrCvL1yTLFpTFCnkVAZW2B+vjxcIB1rq8BRCseQUm9ajqcZFP4uBDxtSQoYIpfF5larwGRBTxK2VYVHBCarPWm7r9cX46b8XYyhOTFmni5PBQMQlUpI1qf/ITo=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1778011521; c=relaxed/simple;\n\tbh=POORsXRkk4nOKnrZRpviXSsULTny9Rnzj8bxogy/6pk=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=ohC2ExqeuFpA2X4CmWCQllO5K4PyWIdOatOujHs8M4JcBDA4x2sKq0djr296BxifkkuIdW7rjHWI9+DgrCV/FkOOL+IKkz7UmFTM/e+Kqv3uhFzaA+hdELkVrmOkggrafx8a0XaKkULO5BgJK0h32am2NNN6JvbsZ0NMo+OQqKc=","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=RDRytMSA; 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=B03ES7Gw4vOtbWqO6\n\tB3bh3UMTVIWbkYsdM5+gP6DaHk=; b=RDRytMSADtZzrrCs+czNYBnEwOCh5/izY\n\tsK9l21+5xyfambjShaP4sPfmzAhO2tStR9xM30nhu1ZM3RfyugKDukrGZt2X+vuS\n\tDGTXmBhtSQKTSICGKLbIoDokdn570AHOu4zcEPVHh2n/VUKbAf/449EIha9j8pS8\n\t+St1FBWYQI48PqjVYcg7vlMhfxSLGU8kZ3PpZEjikA9DaJvj1LpQvRBRZ7z2rA0N\n\t81kqG2w+mW1XM6kHBe+sk+1D7h258TriDPnVxbX9TYl9MzJ06qtjygeKGAUKVq/v\n\t3jalBsj/Rl3B7/OsuSgRnbNQPyiT50oTouTOnBpvzc07tY37lgq9Q==","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,\n        Bjorn Helgaas <bhelgaas@google.com>","Subject":"[PATCH v15 2/7] PCI: Avoid saving config space state if inaccessible","Date":"Tue,  5 May 2026 13:05:05 -0700","Message-ID":"<20260505200510.2954-3-alifm@linux.ibm.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<20260505200510.2954-1-alifm@linux.ibm.com>","References":"<20260505200510.2954-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-Reinject":"loops=2 maxloops=12","X-Proofpoint-ORIG-GUID":"OlQFPTi-dFiVRUYeV-TvfQmb6J1Zuig4","X-Proofpoint-GUID":"0xxM-q5CxHDTfDTNwc7tIXdg-KpWYxSO","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNTA1MDE5MSBTYWx0ZWRfX52DbAk3jKuaB\n PhpgAZYe2FxCjNkOfOSIygzYP2L4UbgZMLFWGD+NxYKCbzIk3nI7LtPrkBxSGO41VzCIIT42CSO\n yP2mTMpdpmdbmfa/W3Y5vU2YWkpjT/SEutXlpvuGBK+lYZ5+GGM+gKpOr6zIh2A5Ygm3sLtpYKt\n QLvS5dV+ofglw0+54Hc47Yyu1qMJ0a6/KYebpiLuZs233KU0JuBoE4D+1KY/fm/Wl9k1cWft0i2\n DvEYiV9dBijmM5TQFAidqMAZkDs50Y2xy7vTaTwLSiwsBVzXzVD0FGiK3jp3oxaeEM1vO4qtqVf\n /Wn5sKtGTWKeHnK1lI/9UMXT2qdUHkQnVXX8lnBGvEzVEtt5mH8il5cjTQCV0dhnJeKs1QliDlG\n XS/ahPHPi7ijpT3BHPXQcI8fjQdLtWsfr4PVNQ+NaAZXtnZLMucp7yw/69XMxqehXydVK3ycSCz\n izbmcb0t9JlIdIRZQWg==","X-Authority-Analysis":"v=2.4 cv=UbFhjqSN c=1 sm=1 tr=0 ts=69fa4d7b cx=c_pps\n a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17\n a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22\n a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=1XWaLZrsAAAA:8\n a=qS04rNcGil1I7-YeviAA:9","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 clxscore=1015 spamscore=0 lowpriorityscore=0 malwarescore=0 suspectscore=0\n adultscore=0 priorityscore=1501 bulkscore=0 phishscore=0 impostorscore=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":"The current reset process saves the device's config space state before\nreset and restores it afterward. However errors may occur unexpectedly and\nit may then be impossible to save config space because the device may be\ninaccessible (e.g. DPC). This results in saving invalid values that get\nwritten back to the device during state restoration.\n\nWith a reset we want to recover/restore the device into a functional state.\nSo avoid saving the state of the config space when the device config space\nis inaccessible.\n\nReviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>\nReviewed-by: Bjorn Helgaas <bhelgaas@google.com>\nSigned-off-by: Farhan Ali <alifm@linux.ibm.com>\n---\n drivers/pci/pci.c | 24 ++++++++++++++++++++++++\n 1 file changed, 24 insertions(+)","diff":"diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c\nindex d0c9f0166af5..e71b81415392 100644\n--- a/drivers/pci/pci.c\n+++ b/drivers/pci/pci.c\n@@ -722,6 +722,27 @@ u16 pci_find_dvsec_capability(struct pci_dev *dev, u16 vendor, u16 dvsec)\n }\n EXPORT_SYMBOL_GPL(pci_find_dvsec_capability);\n \n+static bool pci_dev_config_accessible(struct pci_dev *dev, char *msg)\n+{\n+\tu32 val;\n+\n+\t/*\n+\t * If device's config space is inaccessible it can return ~0 for\n+\t * any reads. Since VFs can also return ~0 for Device and Vendor ID\n+\t * check Command and Status registers. Note that this is racy\n+\t * because the device may become inaccessible partway through\n+\t * next access.\n+\t */\n+\tpci_read_config_dword(dev, PCI_COMMAND, &val);\n+\tif (PCI_POSSIBLE_ERROR(val)) {\n+\t\tpci_warn(dev, \"Device config space inaccessible; unable to %s\\n\",\n+\t\t\t\tmsg);\n+\t\treturn false;\n+\t}\n+\n+\treturn true;\n+}\n+\n /**\n  * pci_find_parent_resource - return resource region of parent bus of given\n  *\t\t\t      region\n@@ -5027,6 +5048,9 @@ static void pci_dev_save_and_disable(struct pci_dev *dev)\n \t */\n \tpci_set_power_state(dev, PCI_D0);\n \n+\tif (!pci_dev_config_accessible(dev, \"save state\"))\n+\t\treturn;\n+\n \tpci_save_state(dev);\n \t/*\n \t * Disable the device by clearing the Command register, except for\n","prefixes":["v15","2/7"]}