From nobody Mon Apr 6 23:23:28 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 34C6E3C661B; Tue, 17 Mar 2026 12:59:13 +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=1773752354; cv=none; b=CgsGNrdpVGgJZPq8lDj3rDkJB5BeE5lGDqhvF7vp0TuTHnd/5FNiZdJTn5x2lF4s9Dy/p5rbMkNk7Ad79zeXxSTbjuV+TcQ23Zfh7YvD2oZRO5H3wNh93SU3ACL/qrLI3MSddzc2L20gQvRE3r9DIvZwjgGAdvME1n5072ufkGA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773752354; c=relaxed/simple; bh=fa+UCbtwReJTJptJMdx/NTEP96lWAeW85C7bH3Iv6iA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EqiWrmOj79tudF9QKTAlo9C/hevJdmJ8PRbtrjrvBVPdGQlxbMQFakd4yXuQ2ITh+I+CecdeeIRHNS6cK0F9BdXvK/W8rnmVdJsLFTOdXIPLoGLYIYUxIK9DUpNazNimBdbx4bHBSxPLOhO3pB71PPvUGaSA+2NxEtpCU1ski5s= 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=cntabcQn; 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="cntabcQn" 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 62H7hmBl857314; Tue, 17 Mar 2026 12:59:08 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=DLefWu Qx1WI+Y5vD2GhByCm3kkB0v+kz8E76A14iFbs=; b=cntabcQnWDTSI8gHacK8ln J+v5JCiN7rRG6oMjc4cy2Ia8FAvzpu0ek/U52PVwVeFF3JqQpl5M59LNJ3wn8N4H yqkBIhvkQFjiwQYjUjaWRKXbBcwAsH1L3qGPDI3GNIjCen7HrAofATOH7js7PdFJ vfw7tv2bVAzq2ibBV8/5oTXeIokqRT1RYLQBzTEMh33UFWn0VNu76clkM5UXZIl0 XLF1dLprflTeOjgbsJLKP/iX5ESmBoWstIngqH+cwXf3G5gwbYSwOVUVQ25Q+EJp OFripxE5grs31g8GOpJzeCv1WwdIuMbM6ViDE76L5M4vlb2DI+onbF4d6dG6Q+Cw == Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4cvx3cvb25-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 17 Mar 2026 12:59:08 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 62HBLoku014113; Tue, 17 Mar 2026 12:59:07 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4cwjcy19fm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 17 Mar 2026 12:59:07 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62HCx3L615073596 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:59:03 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6338F20043; Tue, 17 Mar 2026 12:59:03 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 119FC2004F; Tue, 17 Mar 2026 12:59:03 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 17 Mar 2026 12:59:03 +0000 (GMT) From: Julian Ruess Date: Tue, 17 Mar 2026 13:58:49 +0100 Subject: [PATCH v5 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: <20260317-vfio_pci_ism-v5-1-b73248b4e576@linux.ibm.com> References: <20260317-vfio_pci_ism-v5-0-b73248b4e576@linux.ibm.com> In-Reply-To: <20260317-vfio_pci_ism-v5-0-b73248b4e576@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-Authority-Analysis: v=2.4 cv=arO/yCZV c=1 sm=1 tr=0 ts=69b9501c cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==: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-Spam-Details-Enc: AW1haW4tMjYwMzE3MDExMiBTYWx0ZWRfX8i03ZuIQ9XxL +8foNVf0Rzs198zCShlFtyqjt7BxhBxfN+9iLgs7blEjSZPZdoD3ofiLrMU0urIMhU8SLtqdDVF vMN6QQ5Qp8eSwwpxySe0bxELRZNiuVQFeT6P4PG9BpB3YSkQ8aa68aZxRJiHP74z+DfHj8v12Z+ mX9P6zUHlNrm/bELD8H9T2VyVHlnIVm/zUF2VoSffaYtq09cuHlUDcWo1Ax8yTlLxjSkJ4dPa6b tUR4q7HDt5fCu8s87YBrqQQzadTW7H3e4Pck8Jc1iH5eB+hn5iYgwv8QSnUfWsDj6iMDv9WkYZB f+9FGwsTFxty+Ejy1fT6Et+Ysh80NdNC3LOUnc11WTTP2XCHTzFIYatROks0nibVZIs9eG71Nvn LMJsSjoomJ4TkKk1Lt+ST2L3+LzCA5+1EH00fWY0KToy82W7zDoAzp+inX+E4AoVe4XJF5jfHzI vXrvjuXzpB4Ml9dXWsA== X-Proofpoint-GUID: gCSg3scU304Zoo3kCWz-53A5wgvrqXxD X-Proofpoint-ORIG-GUID: gCSg3scU304Zoo3kCWz-53A5wgvrqXxD 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-17_01,2026-03-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 lowpriorityscore=0 impostorscore=0 adultscore=0 bulkscore=0 suspectscore=0 malwarescore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603170112 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..fbb47b4ddb43d42b758b16778e6= e701379d7e7db 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..28a3edf65aeecfa06cd1856637c= d33eec1fa3006 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 Mon Apr 6 23:23:28 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 063413C6A34; Tue, 17 Mar 2026 12:59:13 +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=1773752355; cv=none; b=j4IVlgFfzFUhzHuyHxIaMVXxYDj3GYiYGvId9/S8lYz8PySk0OHWqalCr6fRkSHAs/LUN+Hmfzn2eK4WY6lqi1+N/fU1aTOUWB1vc7VJ+3/ccqt9/v+1v6+TlKxijcyXL7g3m/XwWNiBnf0L62HhnmAvrg4W0MUrwoz5+AL7BtI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773752355; c=relaxed/simple; bh=Tf84yf/gnBYFSYoHHRb+EoiliRaA3jW9KajQhmyuwuw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eFIMfClJq0jIxNVjF6pD5yvcATLDT1If/8p4YI6noUJEsdZycZyA9Ljpb35YzCfN3PwFwC6DMtqBr5IYCGIs7wSDK54ZSgMVqiKv0HukbdOp3Rq1gwqRxwIQHkp8N4WtFVdfdBysuh5CUBI45saX26dy9nfcVPwx4Uz1m004jUE= 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=jjnI4ok3; 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="jjnI4ok3" 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 62H8GYwC967663; Tue, 17 Mar 2026 12:59:08 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=TXndoh DDD/bg7PTmdiZ/Gb+ohaex4Q01Gto83XdCAqM=; b=jjnI4ok3U1UFtdbavAlA+c 3SZ10UAUoNBvlCFOXg9wX/HM0FU+Xviyg4LujpGPNvSb5OpizT04yGtOc3dJ/FW0 Zi2F/1YqLxaXdgJ+MAGib57jg8tVb+Ib9lu0YTpLlOOW5b1uDmhWW7ncS+9s+pcj saPPMTp6c52AMt6pW/tNA2wu4YLmzUNNRicSO52rWJbfyaXwsWEY3db7RiFDA68q 5oPC/MT81HGJ3vkoKOaBPJFI0O6tAY3TsK0n8858XaSNoYlY/fZQWK4IDWP68oz2 FLVfbU8q+4wVEM+k3kLX5l/bfoUHjYytBMtQW95aW7OvDC8pkU4OfurkpvPl+m6A == 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 4cvx3cvb24-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 17 Mar 2026 12:59:08 +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 62HCD6jq032333; Tue, 17 Mar 2026 12:59:07 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4cwm7js224-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 17 Mar 2026 12:59:07 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62HCx3Ep15073598 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:59:03 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C29CD20043; Tue, 17 Mar 2026 12:59:03 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 68C8720040; Tue, 17 Mar 2026 12:59:03 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 17 Mar 2026 12:59:03 +0000 (GMT) From: Julian Ruess Date: Tue, 17 Mar 2026 13:58:50 +0100 Subject: [PATCH v5 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: <20260317-vfio_pci_ism-v5-2-b73248b4e576@linux.ibm.com> References: <20260317-vfio_pci_ism-v5-0-b73248b4e576@linux.ibm.com> In-Reply-To: <20260317-vfio_pci_ism-v5-0-b73248b4e576@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-Authority-Analysis: v=2.4 cv=arO/yCZV c=1 sm=1 tr=0 ts=69b9501c 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=qDoQYVglVPIJUuxkhcQA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDExMiBTYWx0ZWRfX24HskeuCXo8X OqxO8QeOqQ5YC22L0pldxq3s5Y96ipHl82fxuJu5YWPBX5xCylZm7pwoQXYwTEcbR+bgF9fND5E fXg70J55m2I23766GOqf1NG4Z0yFeRbPNDlBBbUgHotqogjzAKxktPKUyeaBbMSyQ9x19+z81ik WVDpDn4EYBf9iZ0MxkLEyk9UjxQ8EyUObg3OjGhGvRWYANs251JIJzi8fCCsD2esQqkj91jXUkR dJx3NBkA2hTDFEc0K42SEfOLZV5TW/JVcMyikjOMWH7KpPMgtURh6U63CUttqpujgk9GoyjKjvJ BAKnrcR98s0d2RT2uPOS+r4rRIuvnx2tbbTRyh4h4xUaAdPaNmejAQKId/Z3G3YeKPWIG5Yipbn NnRJGP1Ty42mxiJxsxEWtYASWeEEIPhA1GsvkczJ/gwDw2R9LzYhCYjvKCAt5VKarkFu/G8VSV8 tubLU6EYzUtHXSkkFXg== X-Proofpoint-GUID: KTY9m_62K_D8I7hcEkQoUynvufatn0Af X-Proofpoint-ORIG-GUID: KTY9m_62K_D8I7hcEkQoUynvufatn0Af 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-17_01,2026-03-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 lowpriorityscore=0 impostorscore=0 adultscore=0 bulkscore=0 suspectscore=0 malwarescore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603170112 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. Signed-off-by: Julian Ruess --- 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 | 379 ++++++++++++++++++++++++++++++++++++++= ++++ 5 files changed, 396 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..da8fedb2dcd7756814f97608312= e1726a622bdf5 --- /dev/null +++ b/drivers/vfio/pci/ism/main.c @@ -0,0 +1,379 @@ +// 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_SHIF= T) +#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, \ + ssize_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); \ + val =3D (u##size)tmp; \ + if (copy_to_user(buf, &val, sizeof(val))) \ + return -EFAULT; \ + *filled =3D sizeof(val); \ + return ret; \ + } + +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_pci_open_device(struct vfio_device *core_vdev) +{ + struct ism_vfio_pci_core_device *ivdev; + struct vfio_pci_core_device *vdev; + int ret; + + ivdev =3D container_of(core_vdev, struct ism_vfio_pci_core_device, + core_device.vdev); + vdev =3D &ivdev->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 funct= ion + * 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_zalloc(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 0; +} + +static const struct vfio_device_ops ism_pci_ops =3D { + .name =3D "ism-vfio-pci", + .init =3D vfio_pci_core_init_dev, + .release =3D vfio_pci_core_release_dev, + .open_device =3D ism_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; + struct zpci_dev *zdev =3D to_zpci(pdev); + char cache_name[20]; + 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); + + snprintf(cache_name, sizeof(cache_name), "ism_sb_fid_%08x", zdev->fid); + ivpcd->store_block_cache =3D + kmem_cache_create(cache_name, zdev->maxstbl, 0, 0, NULL); + if (!ivpcd->store_block_cache) { + vfio_put_device(&ivpcd->core_device.vdev); + return -ENOMEM; + } + + dev_set_drvdata(&pdev->dev, &ivpcd->core_device); + ret =3D vfio_pci_core_register_device(&ivpcd->core_device); + if (ret) { + kmem_cache_destroy(ivpcd->store_block_cache); + 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); + + kmem_cache_destroy(ivpcd->store_block_cache); +} + +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 Mon Apr 6 23:23:28 2026 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (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 CE2743C73C0; Tue, 17 Mar 2026 12:59:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773752356; cv=none; b=X6H30JMOcdtI9keP5DoYmpP31JrLKinKCxRZbDvyZYnoQgGpN9B+L/RjxbveDI93ABLokcwgCeE/zfPH/HNUpuZ0OY6i7nP5PmeKdUZbzS+nLmeeCbT0GAOjV06ThXpvxUZesEiSZW6k1Hf8oJgJs6EqSvcaeD12HmISvcTp6ms= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773752356; c=relaxed/simple; bh=jTHy7bZk/lBcDrCNabXe1lccncbLd7AFrROwYxPImAE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pA0ty2iGmtJWp51SgBEKrbvwlmLgpAReNNdKT197SHf3ARuTOeYbi+mjqppNaObs7qjpojuWI5ssLcPB8d+Y0a48/RtdTpPSh8a3Q3Jew7Zm1I3p3bR2Or25F73GAMjEJ1ulEwiCsXDDx+X1kZ/lNBwkKZ5Sfd8TfmkN0AsW2pk= 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=ec0otFMf; arc=none smtp.client-ip=148.163.156.1 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="ec0otFMf" Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62H6dO8W231841; Tue, 17 Mar 2026 12:59:09 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=FkvWgc hnxowkB0BQQ4EmGr14eFi/swA/WlNLu1QTrYs=; b=ec0otFMfe2CTKoFX5h1CVW 9C1x9HcKX1ao/YNpjjzxjQzVJ9eAaKOX7Zs26xWCoeclFP2Lw4x+UgzQRTqfPnxU zixbxqm1EqbSnh0syG06BDG0MDWQx4VpkzqETORsnaztHaXSDwLrp90/CABX50Dv JWPkX0UqdZpXQUTFO4cJJwi30hZc7wcddkUYNo2fKRMLp3OdXwJnm5A3nFbrYAFh TQLvXiUz7knEgbt+JXf/pXn2z3k2Q1kdxCU1RxaelJAkIYYoEhrTtSiB5q7Rp7kt vw3O4OBWOp0YNw+QJbZvnJ/HWaYA3clUZdcOx3u0qDGBrf2p5qcD3vB8/gdLikWg == Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4cvybs4sku-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 17 Mar 2026 12:59:09 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 62HAxjMG028708; Tue, 17 Mar 2026 12:59:08 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4cwkgk963d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 17 Mar 2026 12:59:08 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62HCx4nH45678952 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 17 Mar 2026 12:59:04 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2416D20043; Tue, 17 Mar 2026 12:59:04 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C9B512005A; Tue, 17 Mar 2026 12:59:03 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.87.85.9]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 17 Mar 2026 12:59:03 +0000 (GMT) From: Julian Ruess Date: Tue, 17 Mar 2026 13:58:51 +0100 Subject: [PATCH v5 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: <20260317-vfio_pci_ism-v5-3-b73248b4e576@linux.ibm.com> References: <20260317-vfio_pci_ism-v5-0-b73248b4e576@linux.ibm.com> In-Reply-To: <20260317-vfio_pci_ism-v5-0-b73248b4e576@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-Authority-Analysis: v=2.4 cv=MMttWcZl c=1 sm=1 tr=0 ts=69b9501d cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=VwQbUJbxAAAA:8 a=Ikd4Dj_1AAAA:8 a=jBZh5NATpTL4zB9YInYA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-ORIG-GUID: TjRW62KM84P2KMPldasju9rnrjSIv3q6 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDExMiBTYWx0ZWRfX9LEBqxaboi1H 5VzVpsxIERQAd8jQ3NPrF0nAQDiLiLb9QDC9RUJuBDlTyURMloby00JHWAV3ugOOCeU5BAhgt4/ VVNS8zdCoPffAYlMiVXB2018kO93Ov6Cr0uZMSMeg9uvZ9S8aoJ1KzSHASmzBfCL+JLOCaodBCz bcDuSFtIMOFzPYIS9+IYL/cabPy1uoFbjDmrc9oF3VHwGUpB/a8K7IJCfjpApyMWG/kMjs4D2tD +6nkG1tF2GQjRV1Tlb020DAbjGmlgLLNzCWSLef3fCt7U/vS7PARhvFs48bZQb11HYqKkA3G6tI mKF/epFRNoDxfR+EjahINT0+vGb5kAeZxQR1qYXK5+4naKjMYY65pbnxvAgL4PXznKTaGMRQ7fv soQvVHdXbTqj3G4XDCw2YdnfgkTQqTAaGz13k7xEjOFcUarV/yc7TCiL2PUXJ8P/JRS8CRvGgrA DSmbQ+APFojKtW86MBw== X-Proofpoint-GUID: TjRW62KM84P2KMPldasju9rnrjSIv3q6 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-17_01,2026-03-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 priorityscore=1501 impostorscore=0 adultscore=0 phishscore=0 clxscore=1015 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603170112 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 96ea84948d76aff5e07579911d0f370ae13f481b..bae18582e71f7a17a949b1ed3d5= e9689775e98ac 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -27702,6 +27702,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