From nobody Thu Apr 2 18:49:24 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 617A323C512; Wed, 25 Mar 2026 13:31:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774445512; cv=none; b=DiztGS4tZgBUqtOhte5VlLASw3A8w7vxqejfblVa2lrWAZi2hjAn1yXRMYjNX07tHciGDQ5H0aYUyTzwWNXQqQ3X20pwAdYFyvcYB/940djcMl2puCSfGWk9AqtYtzDhR74GGmDCySRTupAfwnNE2niU39DjyAq6671A+lambbc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774445512; c=relaxed/simple; bh=Xp06g/JyrGjiIf6S/4KzRoPbggPcb32EOw0bMnd70mg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fodmscwkS7V9l6JUgu8y9DcQM77Pu+/snSzvDnFWRMrsv/V4AIxON208PPJWcUQrqPUBmG+44qQCZ7SJxihioNbJsEXZn2BH618h2F98pyre4SKPUKr7Wer8UHCfpUhuLMetX1nrPiewKmfntfzZ9eKH0sfhkWQQOcMZhMMJLVk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=P3KKqkrR; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="P3KKqkrR" Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62P7Dgba3395859; Wed, 25 Mar 2026 13:31:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pp1; bh=ws98jf qp8fT8UnB+vgUnR2tXV+A3dsfVNfiI/qBkFX0=; b=P3KKqkrRWmoXkplxF9yQR4 Ol89mEE2aLLQDsOMOiPdyZueaEsH0fnG1FpHr1ZfqINAR7xv2mQYCIsMgYY6H0zr 3Fe7jKQmCzfdmoJRWV65M6rtUsMH69Wh9yp0709Cq+5ugCjCFp9ozIayf/qIn9O4 9KRpsZRZS3x+XqAXObW6lVRabK2PS9o6KHbM2O4p8F765BXPY0/BN5RqG0YNbzBe +YpwVA/4saE9LZlxWeN/vWcxxyFcTKbptxGlQuNsvcJuF4P7tmRcRWkKaKPNcfek ftI7bnXa8A/HXNK+Ki61u0TcbBFQOJgsn2G0hCMpUJ3o6BTNrDZY89dm7xYcxFdg == Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4d1ky07r73-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Mar 2026 13:31:46 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 62PBSWZr011824; Wed, 25 Mar 2026 13:31:45 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4d27vk6g1w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Mar 2026 13:31:45 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62PDVfCO36045292 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Mar 2026 13:31:41 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9628420043; Wed, 25 Mar 2026 13:31:41 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 43B982004D; Wed, 25 Mar 2026 13:31:41 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Mar 2026 13:31:41 +0000 (GMT) From: Julian Ruess Date: Wed, 25 Mar 2026 14:31:23 +0100 Subject: [PATCH v8 1/3] vfio/pci: Rename vfio_config_do_rw() to vfio_pci_config_rw_single() and export it Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-vfio_pci_ism-v8-1-ddc504cde914@linux.ibm.com> References: <20260325-vfio_pci_ism-v8-0-ddc504cde914@linux.ibm.com> In-Reply-To: <20260325-vfio_pci_ism-v8-0-ddc504cde914@linux.ibm.com> To: schnelle@linux.ibm.com, wintera@linux.ibm.com, ts@linux.ibm.com, oberpar@linux.ibm.com, gbayer@linux.ibm.com, Alex Williamson , Jason Gunthorpe , Yishai Hadas , Shameer Kolothum , Kevin Tian Cc: mjrosato@linux.ibm.com, alifm@linux.ibm.com, raspl@linux.ibm.com, hca@linux.ibm.com, agordeev@linux.ibm.com, gor@linux.ibm.com, julianr@linux.ibm.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org, linux-pci@vger.kernel.org X-Mailer: b4 0.14.2 X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI1MDA5NSBTYWx0ZWRfX3Ylqq9b3qI4o ipuWaza0ugWrvCG30qtA+I/5Mf7Q741czyy1Yi/1UJp0hLz3JISJQbQwhOlZTpSZfHE9H1EmOuG vO1Z6oAHIQu2Sa/ge+t1F+Wp53SNQ4LvIA3DfJaqeH0g6790VsKgseQFeSKza4jEhFEOFHGP8DJ x0wc3c95WO0tq5W8yLQBBDIjGnrCuIOZ5UyqXlIr+Gx9Fob7t5VZBl0+ZKdLL4wB2bIRkJwFAlK qQJonYDh/CM0Qjv4M9nqFp5fjdHZrNaQnbtHbW7gmJ0Is0J5WauqrOO+juQVpuHYPM7J09DklIH GOojMpDe9eS2jG8VGxaC5gOuXuvTvE0+be7BN05J+J4+TFJERVLSs4nA7apjnMsjHe+G2jj4aaW 1MvjL5kUP0yhaoPJf9bFrDCW4E6g8DXYJPUL6uJdMofP37kZf6MgN3a7ME6gFt7ebLOxcAZdAn1 cp2gS3OsT9X1hRSNsVA== X-Authority-Analysis: v=2.4 cv=JK42csKb c=1 sm=1 tr=0 ts=69c3e3c2 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=mooU_oynDD9EFzHbF-IA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-ORIG-GUID: rjunKXmwxRwQiY9T4-exEQ1rJLhAMUOZ X-Proofpoint-GUID: rjunKXmwxRwQiY9T4-exEQ1rJLhAMUOZ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-25_04,2026-03-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 adultscore=0 spamscore=0 suspectscore=0 phishscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603250095 A follow-up patch adds a new variant driver for s390 ISM devices. Since this device uses a 256=E2=80=AFTiB BAR 0 that is never mapped, the variant driver needs its own ISM_VFIO_PCI_OFFSET_MASK. To minimally mirror the functionality of vfio_pci_config_rw() with such a custom mask, export vfio_config_do_rw(). To better distinguish the now exported function from vfio_pci_config_rw(), rename it to vfio_pci_config_rw_single() emphasizing that it does a single config space read or write. Reviewed-by: Niklas Schnelle Signed-off-by: Julian Ruess --- drivers/vfio/pci/vfio_pci_config.c | 8 +++++--- drivers/vfio/pci/vfio_pci_priv.h | 4 ++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/vfio/pci/vfio_pci_config.c b/drivers/vfio/pci/vfio_pci= _config.c index b4e39253f98da61a5e2b6dd0089b2f6aef4b85a0..a10ed733f0e3af89c185f8b9319= 2ba6b004f05ed 100644 --- a/drivers/vfio/pci/vfio_pci_config.c +++ b/drivers/vfio/pci/vfio_pci_config.c @@ -1880,8 +1880,9 @@ static size_t vfio_pci_cap_remaining_dword(struct vfi= o_pci_core_device *vdev, return i; } =20 -static ssize_t vfio_config_do_rw(struct vfio_pci_core_device *vdev, char _= _user *buf, - size_t count, loff_t *ppos, bool iswrite) +ssize_t vfio_pci_config_rw_single(struct vfio_pci_core_device *vdev, + char __user *buf, size_t count, loff_t *ppos, + bool iswrite) { struct pci_dev *pdev =3D vdev->pdev; struct perm_bits *perm; @@ -1970,6 +1971,7 @@ static ssize_t vfio_config_do_rw(struct vfio_pci_core= _device *vdev, char __user =20 return ret; } +EXPORT_SYMBOL_GPL(vfio_pci_config_rw_single); =20 ssize_t vfio_pci_config_rw(struct vfio_pci_core_device *vdev, char __user = *buf, size_t count, loff_t *ppos, bool iswrite) @@ -1981,7 +1983,7 @@ ssize_t vfio_pci_config_rw(struct vfio_pci_core_devic= e *vdev, char __user *buf, pos &=3D VFIO_PCI_OFFSET_MASK; =20 while (count) { - ret =3D vfio_config_do_rw(vdev, buf, count, &pos, iswrite); + ret =3D vfio_pci_config_rw_single(vdev, buf, count, &pos, iswrite); if (ret < 0) return ret; =20 diff --git a/drivers/vfio/pci/vfio_pci_priv.h b/drivers/vfio/pci/vfio_pci_p= riv.h index 27ac280f00b975989f6cbc02c11aaca01f9badf3..fca9d0dfac90f8eaaf2d281dd22= 13111c46d76a1 100644 --- a/drivers/vfio/pci/vfio_pci_priv.h +++ b/drivers/vfio/pci/vfio_pci_priv.h @@ -37,6 +37,10 @@ int vfio_pci_set_irqs_ioctl(struct vfio_pci_core_device = *vdev, uint32_t flags, ssize_t vfio_pci_config_rw(struct vfio_pci_core_device *vdev, char __user = *buf, size_t count, loff_t *ppos, bool iswrite); =20 +ssize_t vfio_pci_config_rw_single(struct vfio_pci_core_device *vdev, + char __user *buf, size_t count, loff_t *ppos, + bool iswrite); + ssize_t vfio_pci_bar_rw(struct vfio_pci_core_device *vdev, char __user *bu= f, size_t count, loff_t *ppos, bool iswrite); =20 --=20 2.51.0 From nobody Thu Apr 2 18:49:24 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8E72523E342; Wed, 25 Mar 2026 13:31:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774445513; cv=none; b=Javbid3/52ip2ul6ANRgMyCl10zgv7+3cghgcEEbyN+eV5saXZhwVj0270m91lWXKpcMP2tLFTQA70Cau2kDms3nSAwKNeko/8VDRuIXsrWLmm+EIxw+KqhhOjZkYj3m7jGHG1xV4mBvavolkjhpjXNUOohPF2fzNfsLr2BW5s4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774445513; c=relaxed/simple; bh=e/WHK9eQHqJppvXVumAc5cape4zt0+8UGLMbgKfUplA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EqU76GwoO1HvBOAu7Y1vnppCiDtxEuOxiOCuErhP7BCd+SKLohAbvDekIF5L+wgvYMS49IDU4CSVeL/K0UEZfg66ypxX7WPq5AgTImx+lCtPfGThMSVIaWRNHcU+hLX1hCbhXQ4JOINWsA9U8VJ5hqIpPUKmqx0K3kHSXK+b9dw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=kMtWHNIQ; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="kMtWHNIQ" Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62OLJvAG2477909; Wed, 25 Mar 2026 13:31:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pp1; bh=mi/XJW +UuxDWdQ3UFZILQbyAK8t0jctZSDE0vjfPAdI=; b=kMtWHNIQX5zr4xU93jD6JG gi+e8Nk6QxtS5pXD4Z5JS+aN5D5NHs/NNnxKVg9r7MtnB94uz2bVsRo2a7RW2t1m XNC63JSa/1vDhTjvRo+3voZej4mqi3fub7avmqSuhfklgRLMjzZoqjwwKSDAbf19 pqUo5u8lMVBGDVheNQlEPeoOz6u8sMg4y2icxI9SHaasI5SxLDLsGXwWMnAoUCFB Df52CjDHGRTbxTyyoeQQUE4DZ46WHHHZeC5EiF69S0kgsfIUvkrihJi9xhUASU64 6YAn5nRri+LjRQoR48x0RxUfeNH1NzbHMvQJ8WxGI699i6rZDXMMsw+Zu2uH6+Kg == Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4d1kumquff-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Mar 2026 13:31:46 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 62PAoUX7008732; Wed, 25 Mar 2026 13:31:46 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4d26nnpq86-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Mar 2026 13:31:45 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62PDVgEF51904894 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Mar 2026 13:31:42 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0B7182004E; Wed, 25 Mar 2026 13:31:42 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9BE9B2004B; Wed, 25 Mar 2026 13:31:41 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Mar 2026 13:31:41 +0000 (GMT) From: Julian Ruess Date: Wed, 25 Mar 2026 14:31:24 +0100 Subject: [PATCH v8 2/3] vfio/ism: Implement vfio_pci driver for ISM devices Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-vfio_pci_ism-v8-2-ddc504cde914@linux.ibm.com> References: <20260325-vfio_pci_ism-v8-0-ddc504cde914@linux.ibm.com> In-Reply-To: <20260325-vfio_pci_ism-v8-0-ddc504cde914@linux.ibm.com> To: schnelle@linux.ibm.com, wintera@linux.ibm.com, ts@linux.ibm.com, oberpar@linux.ibm.com, gbayer@linux.ibm.com, Alex Williamson , Jason Gunthorpe , Yishai Hadas , Shameer Kolothum , Kevin Tian Cc: mjrosato@linux.ibm.com, alifm@linux.ibm.com, raspl@linux.ibm.com, hca@linux.ibm.com, agordeev@linux.ibm.com, gor@linux.ibm.com, julianr@linux.ibm.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org, linux-pci@vger.kernel.org X-Mailer: b4 0.14.2 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: r3iXgog0fNFNFWffXWS7fGfnQjfkarHs X-Proofpoint-ORIG-GUID: r3iXgog0fNFNFWffXWS7fGfnQjfkarHs X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI1MDA5NSBTYWx0ZWRfX3/SMhv93HUEe pCKzYxUbUW/+q6H9EbVSpSjJMRBN3DKU1lWIkq9/OQwz4U03n11UeFmf7FbppaWQUr8ANQ1/+nL /2rg6JBGjYhX3KEto3DLI6bFwlIppVDWxiEPlFwLkBi528amBB/UIxJFKO6LOHB1mgGaWKTY8cS 7hvQ7eTtTeF7M+vo7Rb3CjrKzwk6xdSc8uMHOgRZklyNgngYa+aOBQQYiLXBpk5LkRxGYHGd1zf JGveD61nonCzgu2M7PqkcGDp7LZ1hETNOhbwfOOEQXllesRCjlYnrV6GEUlhk1Btw9Q+qpOF9jk 4fKwboYGfKrRl5KCd45kKOp7lQ92idjs8aqZZW7YRxuCm1TJxl5Wc9hPiKk1cG9u4EyfybnAdVz KNRtD7nYoX4GRw5eMgS+fQOrM2T1GH9uXqzHQkgH30Pff3pDWF0axfbj5kgJcd9RTQct8NWlk+J S2LruIkpmMfCf/Mb0Gw== X-Authority-Analysis: v=2.4 cv=KbXfcAYD c=1 sm=1 tr=0 ts=69c3e3c2 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=XdfKsd1DaXcHZAhJ8BgA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-25_04,2026-03-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 malwarescore=0 adultscore=0 clxscore=1015 priorityscore=1501 bulkscore=0 lowpriorityscore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603250095 Add a vfio_pci variant driver for the s390-specific Internal Shared Memory (ISM) devices used for inter-VM communication. This enables the development of vfio-pci-based user space drivers for ISM devices. On s390, kernel primitives such as ioread() and iowrite() are switched over from function-handle-based PCI load/stores instructions to PCI memory-I/O (MIO) loads/stores when these are available and not explicitly disabled. Since these instructions cannot be used with ISM devices, ensure that classic function-handle-based PCI instructions are used instead. The driver is still required even when MIO instructions are disabled, as the ISM device relies on the PCI store block (PCISTB) instruction to perform write operations. Stores are not fragmented, therefore one ioctl corresponds to exactly one PCISTB instruction. User space must ensure to not write more than 4096 bytes at once to an ISM BAR which is the maximum payload of the PCISTB instruction. Reviewed-by: Alexandra Winter Reviewed-by: Niklas Schnelle Signed-off-by: Julian Ruess Reviewed-by: Farhan Ali --- drivers/vfio/pci/Kconfig | 2 + drivers/vfio/pci/Makefile | 2 + drivers/vfio/pci/ism/Kconfig | 10 ++ drivers/vfio/pci/ism/Makefile | 3 + drivers/vfio/pci/ism/main.c | 408 ++++++++++++++++++++++++++++++++++++++= ++++ 5 files changed, 425 insertions(+) diff --git a/drivers/vfio/pci/Kconfig b/drivers/vfio/pci/Kconfig index 1e82b44bda1a0a544e1add7f4b06edecf35aaf81..296bf01e185ecacc388ebc69e92= 706c99e47c814 100644 --- a/drivers/vfio/pci/Kconfig +++ b/drivers/vfio/pci/Kconfig @@ -60,6 +60,8 @@ config VFIO_PCI_DMABUF =20 source "drivers/vfio/pci/mlx5/Kconfig" =20 +source "drivers/vfio/pci/ism/Kconfig" + source "drivers/vfio/pci/hisilicon/Kconfig" =20 source "drivers/vfio/pci/pds/Kconfig" diff --git a/drivers/vfio/pci/Makefile b/drivers/vfio/pci/Makefile index e0a0757dd1d2b0bc69b7e4d79441d5cacf4e1cd8..6138f1bf241df04e7419f196b40= 4abdf9b194050 100644 --- a/drivers/vfio/pci/Makefile +++ b/drivers/vfio/pci/Makefile @@ -11,6 +11,8 @@ obj-$(CONFIG_VFIO_PCI) +=3D vfio-pci.o =20 obj-$(CONFIG_MLX5_VFIO_PCI) +=3D mlx5/ =20 +obj-$(CONFIG_ISM_VFIO_PCI) +=3D ism/ + obj-$(CONFIG_HISI_ACC_VFIO_PCI) +=3D hisilicon/ =20 obj-$(CONFIG_PDS_VFIO_PCI) +=3D pds/ diff --git a/drivers/vfio/pci/ism/Kconfig b/drivers/vfio/pci/ism/Kconfig new file mode 100644 index 0000000000000000000000000000000000000000..02f47d25fed2d34c732b67b3a36= 55b64a7625467 --- /dev/null +++ b/drivers/vfio/pci/ism/Kconfig @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: GPL-2.0 +config ISM_VFIO_PCI + tristate "VFIO support for ISM devices" + depends on S390 + select VFIO_PCI_CORE + help + This provides user space support for IBM Internal Shared Memory (ISM) + Adapter devices using the VFIO framework. + + If you don't know what to do here, say N. diff --git a/drivers/vfio/pci/ism/Makefile b/drivers/vfio/pci/ism/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..32cc3c66dd11395da85a2b6f05b= 3d97036ed8a35 --- /dev/null +++ b/drivers/vfio/pci/ism/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0 +obj-$(CONFIG_ISM_VFIO_PCI) +=3D ism-vfio-pci.o +ism-vfio-pci-y :=3D main.o diff --git a/drivers/vfio/pci/ism/main.c b/drivers/vfio/pci/ism/main.c new file mode 100644 index 0000000000000000000000000000000000000000..00bc81f7225f806eac1b99c4520= ab5a68137885e --- /dev/null +++ b/drivers/vfio/pci/ism/main.c @@ -0,0 +1,408 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * vfio-ISM driver for s390 + * + * Copyright IBM Corp. + */ + +#include "../vfio_pci_priv.h" +#include "linux/slab.h" + +#define ISM_VFIO_PCI_OFFSET_SHIFT 48 +#define ISM_VFIO_PCI_OFFSET_TO_INDEX(off) ((off) >> ISM_VFIO_PCI_OFFSET_SH= IFT) +#define ISM_VFIO_PCI_INDEX_TO_OFFSET(index) ((u64)(index) << ISM_VFIO_PCI_= OFFSET_SHIFT) +#define ISM_VFIO_PCI_OFFSET_MASK (((u64)(1) << ISM_VFIO_PCI_OFFSET_SHIFT) = - 1) + +/* + * Use __zpci_load() to bypass automatic use of + * PCI MIO instructions which are not supported on ISM devices + */ +#define ISM_READ(size) = \ + static int ism_read##size(struct zpci_dev *zdev, int bar, \ + size_t *filled, char __user *buf, \ + loff_t off) \ + { \ + u64 req, tmp; \ + u##size val; \ + int ret; \ + \ + req =3D ZPCI_CREATE_REQ(READ_ONCE(zdev->fh), bar, sizeof(val)); \ + ret =3D __zpci_load(&tmp, req, off); \ + if (ret) \ + return ret; \ + val =3D (u##size)tmp; \ + if (copy_to_user(buf, &val, sizeof(val))) \ + return -EFAULT; \ + *filled =3D sizeof(val); \ + return 0; \ + } + +ISM_READ(64); +ISM_READ(32); +ISM_READ(16); +ISM_READ(8); + +struct ism_vfio_pci_core_device { + struct vfio_pci_core_device core_device; + struct kmem_cache *store_block_cache; +}; + +static int ism_vfio_pci_open_device(struct vfio_device *core_vdev) +{ + struct ism_vfio_pci_core_device *ivpcd; + struct vfio_pci_core_device *vdev; + int ret; + + ivpcd =3D container_of(core_vdev, struct ism_vfio_pci_core_device, + core_device.vdev); + vdev =3D &ivpcd->core_device; + + ret =3D vfio_pci_core_enable(vdev); + if (ret) + return ret; + + vfio_pci_core_finish_enable(vdev); + return 0; +} + +/* + * ism_vfio_pci_do_io_r() + * + * On s390, kernel primitives such as ioread() and iowrite() are switched = over + * from function-handle-based PCI load/stores instructions to PCI memory-I= /O (MIO) + * loads/stores when these are available and not explicitly disabled. Sinc= e these + * instructions cannot be used with ISM devices, ensure that classic + * function-handle-based PCI instructions are used instead. + */ +static ssize_t ism_vfio_pci_do_io_r(struct vfio_pci_core_device *vdev, + char __user *buf, loff_t off, size_t count, + int bar) +{ + struct zpci_dev *zdev =3D to_zpci(vdev->pdev); + ssize_t done =3D 0; + int ret; + + while (count) { + size_t filled; + + if (count >=3D 8 && IS_ALIGNED(off, 8)) { + ret =3D ism_read64(zdev, bar, &filled, buf, off); + if (ret) + return ret; + } else if (count >=3D 4 && IS_ALIGNED(off, 4)) { + ret =3D ism_read32(zdev, bar, &filled, buf, off); + if (ret) + return ret; + } else if (count >=3D 2 && IS_ALIGNED(off, 2)) { + ret =3D ism_read16(zdev, bar, &filled, buf, off); + if (ret) + return ret; + } else { + ret =3D ism_read8(zdev, bar, &filled, buf, off); + if (ret) + return ret; + } + + count -=3D filled; + done +=3D filled; + off +=3D filled; + buf +=3D filled; + } + + return done; +} + +/* + * ism_vfio_pci_do_io_w() + * + * Ensure that the PCI store block (PCISTB) instruction is used as require= d by the + * ISM device. The ISM device also uses a 256 TiB BAR 0 for write operatio= ns, + * which requires a 48bit region address space (ISM_VFIO_PCI_OFFSET_SHIFT). + */ +static ssize_t ism_vfio_pci_do_io_w(struct vfio_pci_core_device *vdev, + char __user *buf, loff_t off, size_t count, + int bar) +{ + struct zpci_dev *zdev =3D to_zpci(vdev->pdev); + struct ism_vfio_pci_core_device *ivpcd; + ssize_t ret; + void *data; + u64 req; + + if (count > zdev->maxstbl) + return -EINVAL; + if (((off % PAGE_SIZE) + count) > PAGE_SIZE) + return -EINVAL; + + ivpcd =3D container_of(vdev, struct ism_vfio_pci_core_device, + core_device); + data =3D kmem_cache_alloc(ivpcd->store_block_cache, GFP_KERNEL); + if (!data) + return -ENOMEM; + + if (copy_from_user(data, buf, count)) { + ret =3D -EFAULT; + goto out_free; + } + + req =3D ZPCI_CREATE_REQ(READ_ONCE(zdev->fh), bar, count); + ret =3D __zpci_store_block(data, req, off); + if (ret) + goto out_free; + + ret =3D count; + +out_free: + kmem_cache_free(ivpcd->store_block_cache, data); + return ret; +} + +static ssize_t ism_vfio_pci_bar_rw(struct vfio_pci_core_device *vdev, + char __user *buf, size_t count, loff_t *ppos, + bool iswrite) +{ + int bar =3D ISM_VFIO_PCI_OFFSET_TO_INDEX(*ppos); + loff_t pos =3D *ppos & ISM_VFIO_PCI_OFFSET_MASK; + resource_size_t end; + ssize_t done =3D 0; + + if (pci_resource_start(vdev->pdev, bar)) + end =3D pci_resource_len(vdev->pdev, bar); + else + return -EINVAL; + + if (pos >=3D end) + return -EINVAL; + + count =3D min(count, (size_t)(end - pos)); + + if (iswrite) + done =3D ism_vfio_pci_do_io_w(vdev, buf, pos, count, bar); + else + done =3D ism_vfio_pci_do_io_r(vdev, buf, pos, count, bar); + + if (done >=3D 0) + *ppos +=3D done; + + return done; +} + +static ssize_t ism_vfio_pci_config_rw(struct vfio_pci_core_device *vdev, + char __user *buf, size_t count, + loff_t *ppos, bool iswrite) +{ + loff_t pos =3D *ppos; + size_t done =3D 0; + int ret =3D 0; + + pos &=3D ISM_VFIO_PCI_OFFSET_MASK; + + while (count) { + /* + * zPCI must not use MIO instructions for config space access, + * so we can use common code path here. + */ + ret =3D vfio_pci_config_rw_single(vdev, buf, count, &pos, iswrite); + if (ret < 0) + return ret; + + count -=3D ret; + done +=3D ret; + buf +=3D ret; + pos +=3D ret; + } + + *ppos +=3D done; + + return done; +} + +static ssize_t ism_vfio_pci_rw(struct vfio_device *core_vdev, char __user = *buf, + size_t count, loff_t *ppos, bool iswrite) +{ + unsigned int index =3D ISM_VFIO_PCI_OFFSET_TO_INDEX(*ppos); + struct vfio_pci_core_device *vdev; + int ret; + + vdev =3D container_of(core_vdev, struct vfio_pci_core_device, vdev); + + if (!count) + return 0; + + switch (index) { + case VFIO_PCI_CONFIG_REGION_INDEX: + ret =3D ism_vfio_pci_config_rw(vdev, buf, count, ppos, iswrite); + break; + + case VFIO_PCI_BAR0_REGION_INDEX ... VFIO_PCI_BAR5_REGION_INDEX: + ret =3D ism_vfio_pci_bar_rw(vdev, buf, count, ppos, iswrite); + break; + + default: + return -EINVAL; + } + + return ret; +} + +static ssize_t ism_vfio_pci_read(struct vfio_device *core_vdev, + char __user *buf, size_t count, loff_t *ppos) +{ + return ism_vfio_pci_rw(core_vdev, buf, count, ppos, false); +} + +static ssize_t ism_vfio_pci_write(struct vfio_device *core_vdev, + const char __user *buf, size_t count, + loff_t *ppos) +{ + return ism_vfio_pci_rw(core_vdev, (char __user *)buf, count, ppos, + true); +} + +static int ism_vfio_pci_ioctl_get_region_info(struct vfio_device *core_vde= v, + struct vfio_region_info *info, + struct vfio_info_cap *caps) +{ + struct vfio_pci_core_device *vdev =3D + container_of(core_vdev, struct vfio_pci_core_device, vdev); + struct pci_dev *pdev =3D vdev->pdev; + + switch (info->index) { + case VFIO_PCI_CONFIG_REGION_INDEX: + info->offset =3D ISM_VFIO_PCI_INDEX_TO_OFFSET(info->index); + info->size =3D pdev->cfg_size; + info->flags =3D VFIO_REGION_INFO_FLAG_READ | + VFIO_REGION_INFO_FLAG_WRITE; + break; + case VFIO_PCI_BAR0_REGION_INDEX ... VFIO_PCI_BAR5_REGION_INDEX: + info->offset =3D ISM_VFIO_PCI_INDEX_TO_OFFSET(info->index); + info->size =3D pci_resource_len(pdev, info->index); + if (!info->size) { + info->flags =3D 0; + break; + } + info->flags =3D VFIO_REGION_INFO_FLAG_READ | + VFIO_REGION_INFO_FLAG_WRITE; + break; + default: + info->offset =3D 0; + info->size =3D 0; + info->flags =3D 0; + return -EINVAL; + } + return 0; +} + +static int ism_vfio_pci_init_dev(struct vfio_device *core_vdev) +{ + struct zpci_dev *zdev =3D to_zpci(to_pci_dev(core_vdev->dev)); + struct ism_vfio_pci_core_device *ivpcd; + char cache_name[20]; + int ret; + + ivpcd =3D container_of(core_vdev, struct ism_vfio_pci_core_device, + core_device.vdev); + + snprintf(cache_name, sizeof(cache_name), "ism_sb_fid_%08x", zdev->fid); + + ivpcd->store_block_cache =3D + kmem_cache_create(cache_name, zdev->maxstbl, + (&(struct kmem_cache_args){ + .align =3D PAGE_SIZE, + .useroffset =3D 0, + .usersize =3D zdev->maxstbl, + }), + (SLAB_RECLAIM_ACCOUNT | SLAB_ACCOUNT)); + if (!ivpcd->store_block_cache) + return -ENOMEM; + + ret =3D vfio_pci_core_init_dev(core_vdev); + if (ret) + kmem_cache_destroy(ivpcd->store_block_cache); + + return ret; +} + +static void ism_vfio_pci_release_dev(struct vfio_device *core_vdev) +{ + struct ism_vfio_pci_core_device *ivpcd =3D container_of( + core_vdev, struct ism_vfio_pci_core_device, core_device.vdev); + + kmem_cache_destroy(ivpcd->store_block_cache); + vfio_pci_core_release_dev(core_vdev); +} + +static const struct vfio_device_ops ism_pci_ops =3D { + .name =3D "ism-vfio-pci", + .init =3D ism_vfio_pci_init_dev, + .release =3D ism_vfio_pci_release_dev, + .open_device =3D ism_vfio_pci_open_device, + .close_device =3D vfio_pci_core_close_device, + .ioctl =3D vfio_pci_core_ioctl, + .get_region_info_caps =3D ism_vfio_pci_ioctl_get_region_info, + .device_feature =3D vfio_pci_core_ioctl_feature, + .read =3D ism_vfio_pci_read, + .write =3D ism_vfio_pci_write, + .request =3D vfio_pci_core_request, + .match =3D vfio_pci_core_match, + .match_token_uuid =3D vfio_pci_core_match_token_uuid, + .bind_iommufd =3D vfio_iommufd_physical_bind, + .unbind_iommufd =3D vfio_iommufd_physical_unbind, + .attach_ioas =3D vfio_iommufd_physical_attach_ioas, + .detach_ioas =3D vfio_iommufd_physical_detach_ioas, +}; + +static int ism_vfio_pci_probe(struct pci_dev *pdev, + const struct pci_device_id *id) +{ + struct ism_vfio_pci_core_device *ivpcd; + int ret; + + ivpcd =3D vfio_alloc_device(ism_vfio_pci_core_device, core_device.vdev, + &pdev->dev, &ism_pci_ops); + if (IS_ERR(ivpcd)) + return PTR_ERR(ivpcd); + + dev_set_drvdata(&pdev->dev, &ivpcd->core_device); + + ret =3D vfio_pci_core_register_device(&ivpcd->core_device); + if (ret) + vfio_put_device(&ivpcd->core_device.vdev); + + return ret; +} + +static void ism_vfio_pci_remove(struct pci_dev *pdev) +{ + struct vfio_pci_core_device *core_device; + struct ism_vfio_pci_core_device *ivpcd; + + core_device =3D dev_get_drvdata(&pdev->dev); + ivpcd =3D container_of(core_device, struct ism_vfio_pci_core_device, + core_device); + + vfio_pci_core_unregister_device(&ivpcd->core_device); + vfio_put_device(&ivpcd->core_device.vdev); +} + +static const struct pci_device_id ism_device_table[] =3D { + { PCI_DRIVER_OVERRIDE_DEVICE_VFIO(PCI_VENDOR_ID_IBM, + PCI_DEVICE_ID_IBM_ISM) }, + {} +}; +MODULE_DEVICE_TABLE(pci, ism_device_table); + +static struct pci_driver ism_vfio_pci_driver =3D { + .name =3D KBUILD_MODNAME, + .id_table =3D ism_device_table, + .probe =3D ism_vfio_pci_probe, + .remove =3D ism_vfio_pci_remove, + .err_handler =3D &vfio_pci_core_err_handlers, + .driver_managed_dma =3D true, +}; + +module_pci_driver(ism_vfio_pci_driver); + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("vfio-pci variant driver for the IBM Internal Shared Me= mory (ISM) device"); +MODULE_AUTHOR("IBM Corporation"); --=20 2.51.0 From nobody Thu Apr 2 18:49:24 2026 Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8402123D297; Wed, 25 Mar 2026 13:31:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774445512; cv=none; b=eOOLyVWweLwl/fIoMONnVu0CFbqSiHZMnWmciGh9wvXl49d5EEu/In1knPe9sBYQlyBtGrBYeHmlrAtQEtqjsqsoMM966y8PPcohMFe8sIxh6hOQMTAqFQDGySaeJ1yxGlZkm+aAKeHzYoKPvBv6CmzwRM2cyUnhBK6Cuptf4sU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774445512; c=relaxed/simple; bh=tVXzc3TZ4XXEho6yf6ZcstI8WffvhcP9cbTZPPwmM0U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=u2ADjX8aVcJd/fMwqgrq8s585zfwCNUJvTtNXETD6cUZrC2Ejs+ZvFWKA4QvLVpAQWl+jV5Q8XLPlsr986oQH0PzlcPw1ZjdZ9dTL4QgA7PqUHuYAdN8tkSrAGofvnqB9bLRVpzU06KsbWq2H0O11+u8hP8YRRN1Ye2pNkVp82o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=XQvz8qns; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="XQvz8qns" Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62P0lWIn2808047; Wed, 25 Mar 2026 13:31:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pp1; bh=768lj2 UP4Q5lJI10ZC9GKEZTGjBOEkuSn54mj3bw9aA=; b=XQvz8qnsMXCQ4vIvy6LrOF lV/1zo3o+APKuSCUwYNNdFlkTkvx3nBl/oQG7ywT42R2IMAxho7GSmlb50GnN4hy WBPGXPL1NqrOht2eM+2PRaNFsJHm50iz/4dA8CO26M59miAekrZ9uJOtMsAVd4ri p6jULJA0nvAtxeJjZPsVsFtH4aR+uq9kKft05KNnQLLbPf28Lj/dNlA+iU9EiYYJ 6uOt1zNkmcB2GtoQauu2v77g1NOMd50YpMs9opji2ZUtDUfxKSx5U6+F2THIBBq2 pPDnIrCQ6TMUyO4+ecDZ7qxu3ubI9Od3yH+9lC5/3p0GGLS4xi4+XuUyJ7+Zo60g == Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4d1ky07r77-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Mar 2026 13:31:46 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 62PA5Ct4031598; Wed, 25 Mar 2026 13:31:46 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4d25nsxtr3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Mar 2026 13:31:46 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62PDVgjf51904896 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Mar 2026 13:31:42 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5CCC32005A; Wed, 25 Mar 2026 13:31:42 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 11F7B2004F; Wed, 25 Mar 2026 13:31:42 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Mar 2026 13:31:42 +0000 (GMT) From: Julian Ruess Date: Wed, 25 Mar 2026 14:31:25 +0100 Subject: [PATCH v8 3/3] MAINTAINERS: add VFIO ISM PCI DRIVER section Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-vfio_pci_ism-v8-3-ddc504cde914@linux.ibm.com> References: <20260325-vfio_pci_ism-v8-0-ddc504cde914@linux.ibm.com> In-Reply-To: <20260325-vfio_pci_ism-v8-0-ddc504cde914@linux.ibm.com> To: schnelle@linux.ibm.com, wintera@linux.ibm.com, ts@linux.ibm.com, oberpar@linux.ibm.com, gbayer@linux.ibm.com, Alex Williamson , Jason Gunthorpe , Yishai Hadas , Shameer Kolothum , Kevin Tian Cc: mjrosato@linux.ibm.com, alifm@linux.ibm.com, raspl@linux.ibm.com, hca@linux.ibm.com, agordeev@linux.ibm.com, gor@linux.ibm.com, julianr@linux.ibm.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org, linux-pci@vger.kernel.org X-Mailer: b4 0.14.2 X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI1MDA5NSBTYWx0ZWRfX4ONqm67yLW0U NDIW/dPVD6FLes+nox9xwGIO3XhkCGKTicLL5mCp+gR0m4bJH8HEOyzDc0i6JlwvBdH7sIJ2n3T gp5RErYb8+Cf1QdmAkSsg48KCuzQxBzVJ0Zza/LzgMaVTEmkicBDfaxvUxVLibbn/rxoj7NS0Tk uiJaAbOPsFJ/DzxYaZzppVnOnCzG+pW80JosQbOAICcmKKXmJQJmnaWrfFbK2U5DcSaOAG1ze8f cDIcrFt7yLcmtflOQDXhLCFyYJSj/bbWqGm+vHpqo7m1A9nfu+y6yGUqb7pCVAYSZEDIpd3/h5B jlJZzLoej/73N0xcok7WlUNmuzFsKYPa7BEo1DUdTWhMxvmPHgJ+oHHVINPbigEm2mN58ei3wI2 4WogUBycNU8hcLJ6vMetgZsdfoDhxTIQWvzx3JmNORUDjKn0DpTUttzBsRUJr47+Z271XTSUxFn ZlQj4QPQKxo3GWYfYCw== X-Authority-Analysis: v=2.4 cv=JK42csKb c=1 sm=1 tr=0 ts=69c3e3c3 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=VwQbUJbxAAAA:8 a=Ikd4Dj_1AAAA:8 a=jBZh5NATpTL4zB9YInYA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-ORIG-GUID: 14imqRo-gxUuki3BF-AriP5GTNrFmurV X-Proofpoint-GUID: 14imqRo-gxUuki3BF-AriP5GTNrFmurV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-25_04,2026-03-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 adultscore=0 spamscore=0 suspectscore=0 phishscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603250095 ism_vfio_pci is a new kernel component that allows to use the ISM device from userspace. Add myself as a maintainer. Reviewed-by: Niklas Schnelle Signed-off-by: Julian Ruess --- MAINTAINERS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 7d10988cbc62b77515aa1a1fee1c7d3e594869fa..4784a2514c0e057fded12364c68= 0c928bde5876c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -27704,6 +27704,12 @@ L: kvm@vger.kernel.org S: Maintained F: drivers/vfio/pci/hisilicon/ =20 +VFIO ISM PCI DRIVER +M: Julian Ruess +L: kvm@vger.kernel.org +S: Maintained +F: drivers/vfio/pci/ism/ + VFIO MEDIATED DEVICE DRIVERS M: Kirti Wankhede L: kvm@vger.kernel.org --=20 2.51.0