From nobody Fri Jun 19 22:16:30 2026 Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com [67.231.145.42]) (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 8A33031B130; Tue, 21 Apr 2026 17:42:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=67.231.145.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776793324; cv=none; b=DDXXsV88/UuigTlMHkuv0hcljgcFXGDe/ClbEJoBkEMlHXWX5lN9Sj76x1zfm5jHaEsyyC/bLEfgbGKmjBcmUacgD73uEMhoAW3OCyYkBiD4ZB+iJN+3O7Mg+xjQy1g0ctlPEpGSNg9gBHT0KrBQMTvYGhr+VHaRZ5Kx0vPFRk8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776793324; c=relaxed/simple; bh=xUPasgzAbSUFDqqGtA58yvPl7VH549yECNW2GD83JH0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=dHKlDPzE7hHIXfR5yjr8msuo7B3eKGrkYu8A/bN9hKODWThsJfN6dbuZZVlFSGpxxYOC6Igv3hgmVxat1pRXyOIKpTspQGC6Y+/EahV6PtwTgly0YBgKeoSpBxQZSqu8StOMnrPHTtIkcpF9BvX6pDtwHBortSZ+/bu3AMKlByE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com; spf=pass smtp.mailfrom=meta.com; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b=nXmLfUQc; arc=none smtp.client-ip=67.231.145.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=meta.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b="nXmLfUQc" Received: from pps.filterd (m0528008.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63L3inl52484155; Tue, 21 Apr 2026 10:41:52 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=s2048-2025-q2; bh=J4MxSxqjSZPP1i+2/Eh5i040MZ0tJP6IK9L1r31WPfU=; b=nXmLfUQcFem6 /9d7jdznV8p+KtlSszaJ2CRp4NKw5beyHbwhRIfkkcIywBpIiTgYEp+KYnGsnO/1 s3ANoLTmfQQLecg2VKti4djgBkhrOU01okwBl4D81HEX/XmHwBn4fFYNSEOw0Mp6 eDKHWFdDsNAIZMnpttKSOEMg2stId4r40z6rASahl/u5+u4n7sveBy65PEZR5Ku5 UJFaSoK64e7YPLW0X+908pOFeq7kXvGl6wH9NUc0QAdvFYIp8+fixUG2BAV4caaU lywhj5xBPxZMuTzqbCTy0baE46ak99I7BgGdyxTCJvTM4tfJVc2XDGZUy7RjYUuN e0pfIdMq+Q== Received: from maileast.thefacebook.com ([163.114.135.16]) by mx0a-00082601.pphosted.com (PPS) with ESMTPS id 4dmxjgwr56-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Tue, 21 Apr 2026 10:41:51 -0700 (PDT) Received: from localhost (2620:10d:c0a8:fe::f072) by mail.thefacebook.com (2620:10d:c0a9:6f::8fd4) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.37; Tue, 21 Apr 2026 17:41:50 +0000 From: Matt Evans To: Alex Williamson , Kevin Tian , Jason Gunthorpe , Ankit Agrawal , Alistair Popple , Leon Romanovsky , Kees Cook , Shameer Kolothum , Yishai Hadas CC: Alexey Kardashevskiy , Eric Auger , Peter Xu , Vivek Kasireddy , Zhi Wang , , , Subject: [PATCH 1/2] vfio/pci: Set up barmap in vfio_pci_core_enable() Date: Tue, 21 Apr 2026 10:41:40 -0700 Message-ID: <20260421174143.3883579-2-mattev@meta.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260421174143.3883579-1-mattev@meta.com> References: <20260421174143.3883579-1-mattev@meta.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: QWD-JWFoEOpiUsH1febIw1I4o5c29Ogq X-Authority-Analysis: v=2.4 cv=WsIb99fv c=1 sm=1 tr=0 ts=69e7b6df cx=c_pps a=MfjaFnPeirRr97d5FC5oHw==:117 a=MfjaFnPeirRr97d5FC5oHw==:17 a=A5OVakUREuEA:10 a=VkNPw1HP01LnGYTKEx00:22 a=7x6HtfJdh03M6CCDgxCd:22 a=_1IyUuN4QrATX339ibzo:22 a=VabnemYjAAAA:8 a=Vr1h0zdZU8zjlzJ6jfEA:9 a=gKebqoRLp9LExxC7YDUY:22 X-Proofpoint-GUID: QWD-JWFoEOpiUsH1febIw1I4o5c29Ogq X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDIxMDE3NiBTYWx0ZWRfX4NTpRM+Jwe1L sXtuswAjloPwjuIloKMv7vV+H7vprk+w6AtiDiTfvuPCnwzi9AhK0zPQLNrojWxYaVzNyYpg2dE gH21JoxBD1mnRUnnWDcIgH/7YLkt9tiEfifXrm2uYVUIbdBTPDp40hcKKkdUKC39fUA49u+pAyr MiE0D2nklv3Kzo9D+z8a3KDIFO7i43mNKTErxBSaMNTIVzol+/NT6WuMz5uqtQxxJJIM24SOHHf RsomlAlhU2vilUAUHe1ho7oTdtEb34mSxq0Vd6nuXsmiFVpSHoKha64V0us4xrvjJMcKJjfv0EV cZhxWixRdISWmsjqftcfh/a1P7W9oBU43Uzcyh9ReX4gJdvjH4bYKm4UBqtLvPoucxgqR85hw3V fkJCWPhkpVUSmNUJON4HNaJSJFOHxef8LJtN398/YGVlsuHwDjJjwWgs1vnk3w5etMyWVjV95NV J6KJ+Xz3UB54fGIH4Sw== 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-04-21_03,2026-04-21_02,2025-10-01_01 Content-Type: text/plain; charset="utf-8" The previous lazy-setup of the barmaps provided opportunities to forget to do it (for example, DMABUF export). Since all users will ultimately require BAR resources to have been requested, request them in vfio_pci_core_enable. Existing calls to vfio_pci_core_setup_barmap() are now benign, but remain because some callers use it to validate a BAR index. This fixes at least the case where DMABUF export could succeed before resources were requested. This keeps resource request and ioremap() done at the same time, but in future the ioremap() could be done on-demand (not all VFIO users need it). Fixes: 7f5764e179c6 ("vfio: use vfio_pci_core_setup_barmap to map bar in mm= ap") Fixes: 0d77ed3589ac0 ("vfio/pci: Pull BAR mapping setup from read-write pat= h") Signed-off-by: Matt Evans --- drivers/vfio/pci/vfio_pci_core.c | 63 +++++++++++++++++++++++++++----- drivers/vfio/pci/vfio_pci_rdwr.c | 25 +++---------- 2 files changed, 60 insertions(+), 28 deletions(-) diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_c= ore.c index 3f8d093aacf8..4a314213f3ae 100644 --- a/drivers/vfio/pci/vfio_pci_core.c +++ b/drivers/vfio/pci/vfio_pci_core.c @@ -482,6 +482,55 @@ static int vfio_pci_core_runtime_resume(struct device = *dev) } #endif /* CONFIG_PM */ =20 +static void __vfio_pci_core_unmap_bars(struct vfio_pci_core_device *vdev) +{ + struct pci_dev *pdev =3D vdev->pdev; + int i; + + for (i =3D 0; i < PCI_STD_NUM_BARS; i++) { + int bar =3D i + PCI_STD_RESOURCES; + + if (!vdev->barmap[i]) + continue; + pci_iounmap(pdev, vdev->barmap[bar]); + pci_release_selected_regions(pdev, 1 << bar); + vdev->barmap[bar] =3D NULL; + } +} + +static int __vfio_pci_core_map_bars(struct vfio_pci_core_device *vdev) +{ + struct pci_dev *pdev =3D vdev->pdev; + int ret =3D 0; + int i; + + /* Eager-request BAR resources (and iomap) */ + for (i =3D 0; i < PCI_STD_NUM_BARS; i++) { + int bar =3D i + PCI_STD_RESOURCES; + void __iomem *io; + + if (pci_resource_len(pdev, i) =3D=3D 0) + continue; + + ret =3D pci_request_selected_regions(pdev, 1 << bar, "vfio"); + if (ret) + goto err_free_barmap; + + io =3D pci_iomap(pdev, bar, 0); + if (!io) { + pci_release_selected_regions(pdev, 1 << bar); + ret =3D -ENOMEM; + goto err_free_barmap; + } + vdev->barmap[bar] =3D io; + } + return 0; + +err_free_barmap: + __vfio_pci_core_unmap_bars(vdev); + return ret; +} + /* * The pci-driver core runtime PM routines always save the device state * before going into suspended state. If the device is going into low power @@ -568,6 +617,9 @@ int vfio_pci_core_enable(struct vfio_pci_core_device *v= dev) if (!vfio_vga_disabled() && vfio_pci_is_vga(pdev)) vdev->has_vga =3D true; =20 + ret =3D __vfio_pci_core_map_bars(vdev); + if (ret) + goto out_free_zdev; =20 return 0; =20 @@ -591,7 +643,7 @@ void vfio_pci_core_disable(struct vfio_pci_core_device = *vdev) struct pci_dev *pdev =3D vdev->pdev; struct vfio_pci_dummy_resource *dummy_res, *tmp; struct vfio_pci_ioeventfd *ioeventfd, *ioeventfd_tmp; - int i, bar; + int i; =20 /* For needs_reset */ lockdep_assert_held(&vdev->vdev.dev_set->lock); @@ -646,14 +698,7 @@ void vfio_pci_core_disable(struct vfio_pci_core_device= *vdev) =20 vfio_config_free(vdev); =20 - for (i =3D 0; i < PCI_STD_NUM_BARS; i++) { - bar =3D i + PCI_STD_RESOURCES; - if (!vdev->barmap[bar]) - continue; - pci_iounmap(pdev, vdev->barmap[bar]); - pci_release_selected_regions(pdev, 1 << bar); - vdev->barmap[bar] =3D NULL; - } + __vfio_pci_core_unmap_bars(vdev); =20 list_for_each_entry_safe(dummy_res, tmp, &vdev->dummy_resources_list, res_next) { diff --git a/drivers/vfio/pci/vfio_pci_rdwr.c b/drivers/vfio/pci/vfio_pci_r= dwr.c index 4251ee03e146..d1386a31a3a3 100644 --- a/drivers/vfio/pci/vfio_pci_rdwr.c +++ b/drivers/vfio/pci/vfio_pci_rdwr.c @@ -200,26 +200,13 @@ EXPORT_SYMBOL_GPL(vfio_pci_core_do_io_rw); =20 int vfio_pci_core_setup_barmap(struct vfio_pci_core_device *vdev, int bar) { - struct pci_dev *pdev =3D vdev->pdev; - int ret; - void __iomem *io; - - if (vdev->barmap[bar]) - return 0; - - ret =3D pci_request_selected_regions(pdev, 1 << bar, "vfio"); - if (ret) - return ret; - - io =3D pci_iomap(pdev, bar, 0); - if (!io) { - pci_release_selected_regions(pdev, 1 << bar); - return -ENOMEM; - } - - vdev->barmap[bar] =3D io; + /* + * The barmap is now always set up in vfio_pci_core_enable(). + * Some legacy callers use this function to check if the BAR + * is legitimate, so maintain that: + */ =20 - return 0; + return vdev->barmap[bar] ? 0 : -EBUSY; } EXPORT_SYMBOL_GPL(vfio_pci_core_setup_barmap); =20 --=20 2.47.3 From nobody Fri Jun 19 22:16:30 2026 Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com [67.231.145.42]) (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 97D7531B130; Tue, 21 Apr 2026 17:42:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=67.231.145.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776793334; cv=none; b=Ue+c8f/Cq7uwM3fUHonJ9FVCS3ooqyo/auHrRt2EwwB0kB+hcAl5mFTjzIwU1tIxXffHVDOG4AlRzD/XOqi9x04rtuJI1Xfyg3lvuwDmHBMzlK+M/N6sUhFwB8FZv68/IdV3HhKuxD3wcriCZ2FBXRwEBm+gq/wyI3O7DwRCMVk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776793334; c=relaxed/simple; bh=llIY7xSaOkEj+G+PT2pLcrAq94SlFlIN/oRet/cVjqY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=YWuYMj3eaThgpkENRxTFHFehiTqXa4CYG4sMNJr3rCosagchWtKE0+w0c0CGS5/AEZWfdTGFLPPRJ0/NiaZ/m36RWdKOz9xZpDlY89hGaBOSoyxLC9aqHOhCaY3qej5HJqGA3ieMXOOspS3SZbhFiJoKiuong43gy7mR8MntARM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com; spf=pass smtp.mailfrom=meta.com; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b=nJDuv8VX; arc=none smtp.client-ip=67.231.145.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meta.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=meta.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=meta.com header.i=@meta.com header.b="nJDuv8VX" Received: from pps.filterd (m0528008.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63LHKw8I3579011; Tue, 21 Apr 2026 10:42:02 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=s2048-2025-q2; bh=WevERmmtCvd8InNrpuwVz010uP+4eFXvtcbOI8hMzCU=; b=nJDuv8VXGRD5 9p9adk4N0t2P9ZhvQNdeV6IagLtgqnOz+xGPkM5uhWMKVCBSechwGCgUtbA9K9Ka obYFX7NYZHb9ov1dm/mgOZ3p1UXUVisEzMV8rk3KYnDIz8o9i2UXVygcG3wD+LWn NzmZkvLjtDTspSuodaL4dRf9a8JY5I4Ubl0mIeUDJ0Pyce5fqOnuHybGgF3wWKfY mlzvhoFCb0f9N9Y1pfhRoeEv8U9mNj+OInpEOM+SYBE0lG6mf2al0V+AUZFXcAtw emOpMLjMd0+QSPZVo9rk6J1w3IhQI3bOsBUbVOIWtxvTvs6JsAA4GgV8WNfVQ9n3 oBC4p8QFiA== Received: from mail.thefacebook.com ([163.114.134.16]) by mx0a-00082601.pphosted.com (PPS) with ESMTPS id 4dmxjgwr6d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Tue, 21 Apr 2026 10:42:01 -0700 (PDT) Received: from localhost (2620:10d:c085:208::7cb7) by mail.thefacebook.com (2620:10d:c08b:78::c78f) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.2562.37; Tue, 21 Apr 2026 17:41:54 +0000 From: Matt Evans To: Alex Williamson , Kevin Tian , Jason Gunthorpe , Ankit Agrawal , Alistair Popple , Leon Romanovsky , Kees Cook , Shameer Kolothum , Yishai Hadas CC: Alexey Kardashevskiy , Eric Auger , Peter Xu , Vivek Kasireddy , Zhi Wang , , , Subject: [PATCH 2/2] vfio/pci: Remove vfio_pci_core_setup_barmap() Date: Tue, 21 Apr 2026 10:41:41 -0700 Message-ID: <20260421174143.3883579-3-mattev@meta.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260421174143.3883579-1-mattev@meta.com> References: <20260421174143.3883579-1-mattev@meta.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: oy2likjbj8ZzDPf_DsOTqvdW70Z8ymyK X-Authority-Analysis: v=2.4 cv=WsIb99fv c=1 sm=1 tr=0 ts=69e7b6ea cx=c_pps a=CB4LiSf2rd0gKozIdrpkBw==:117 a=CB4LiSf2rd0gKozIdrpkBw==:17 a=A5OVakUREuEA:10 a=VkNPw1HP01LnGYTKEx00:22 a=7x6HtfJdh03M6CCDgxCd:22 a=_1IyUuN4QrATX339ibzo:22 a=VabnemYjAAAA:8 a=hddtpw1Fc0ytyWcZ_ioA:9 a=gKebqoRLp9LExxC7YDUY:22 X-Proofpoint-GUID: oy2likjbj8ZzDPf_DsOTqvdW70Z8ymyK X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDIxMDE3NiBTYWx0ZWRfXw3Wdcj/gKDAt dtIGiqnQKWJWdPv87YDmdDBR0jXuxZfkKWvMjknH2zlIGGjNcGLGBrPBcms7DPntBSxG4nW8+DZ 7qraDezbtr51jrXAtMSiHMEiHU9LrDUyfVV4UPT/5qvKGi0pNFLckMQmsfVYgr0j/tPTTEt9DSf aPNBwd+WJqooGvgwWQ04ztx9JbVF7S8LD29/uL+aeOnPA5GSV/fe9aIrO1i1yGjPhDhYDOzSYOn IbIpe3HxiikvOzaZhyFly2GT2BSJOUa4rcUPW9KoppaH5NdA/vxpX8UJtv+kymCcgVSX1fh199w /Kkdo5fcyiPnFmoQ6ygIpMNqJ+gva9lLEZfUxDyQYry0c6p5O3fHTgwGoz5igLnq51Ho8/VQTQv cOaQHbv6WkO/t+iq8JUDg5CnVUfVZN1Pq/NIWdDaij29TXEoAnDjdNLED7Cg36utOYbk9TWrrT4 LLyJtekDM9eitM2OjZg== 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-04-21_03,2026-04-21_02,2025-10-01_01 Content-Type: text/plain; charset="utf-8" Since "vfio/pci: Set up barmap in vfio_pci_core_enable()", the BAR mapping and resource acquisition are done at setup time, and most uses of vfio_pci_core_setup_barmap() are now unnecessary. Remove the callers, and the function. Some callers used it to also test if a mapping is present before a direct access, and these places now do a simple test of vdev->barmap[]. Signed-off-by: Matt Evans --- drivers/vfio/pci/nvgrace-gpu/main.c | 11 +++++------ drivers/vfio/pci/vfio_pci_core.c | 8 -------- drivers/vfio/pci/vfio_pci_rdwr.c | 22 ++++------------------ drivers/vfio/pci/virtio/legacy_io.c | 5 ++--- 4 files changed, 11 insertions(+), 35 deletions(-) diff --git a/drivers/vfio/pci/nvgrace-gpu/main.c b/drivers/vfio/pci/nvgrace= -gpu/main.c index fa056b69f899..3712f6b54d46 100644 --- a/drivers/vfio/pci/nvgrace-gpu/main.c +++ b/drivers/vfio/pci/nvgrace-gpu/main.c @@ -184,14 +184,13 @@ static int nvgrace_gpu_open_device(struct vfio_device= *core_vdev) =20 /* * GPU readiness is checked by reading the BAR0 registers. - * - * ioremap BAR0 to ensure that the BAR0 mapping is present before - * register reads on first fault before establishing any GPU - * memory mapping. + * BARs should have been mapped at device enable, but it's + * good to assert they're present before the access: */ - ret =3D vfio_pci_core_setup_barmap(vdev, 0); - if (ret) + if (!vdev->barmap[0]) { + ret =3D -EINVAL; goto error_exit; + } =20 if (nvdev->resmem.memlength) { ret =3D nvgrace_gpu_vfio_pci_register_pfn_range(core_vdev, &nvdev->resme= m); diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_c= ore.c index 4a314213f3ae..228d92ce61d1 100644 --- a/drivers/vfio/pci/vfio_pci_core.c +++ b/drivers/vfio/pci/vfio_pci_core.c @@ -1805,14 +1805,6 @@ int vfio_pci_core_mmap(struct vfio_device *core_vdev= , struct vm_area_struct *vma if (req_start + req_len > phys_len) return -EINVAL; =20 - /* - * Even though we don't make use of the barmap for the mmap, - * we need to request the region and the barmap tracks that. - */ - ret =3D vfio_pci_core_setup_barmap(vdev, index); - if (ret) - return ret; - vma->vm_private_data =3D vdev; vma->vm_page_prot =3D pgprot_noncached(vma->vm_page_prot); vma->vm_page_prot =3D pgprot_decrypted(vma->vm_page_prot); diff --git a/drivers/vfio/pci/vfio_pci_rdwr.c b/drivers/vfio/pci/vfio_pci_r= dwr.c index d1386a31a3a3..21e19ed48bf5 100644 --- a/drivers/vfio/pci/vfio_pci_rdwr.c +++ b/drivers/vfio/pci/vfio_pci_rdwr.c @@ -198,18 +198,6 @@ ssize_t vfio_pci_core_do_io_rw(struct vfio_pci_core_de= vice *vdev, bool test_mem, } EXPORT_SYMBOL_GPL(vfio_pci_core_do_io_rw); =20 -int vfio_pci_core_setup_barmap(struct vfio_pci_core_device *vdev, int bar) -{ - /* - * The barmap is now always set up in vfio_pci_core_enable(). - * Some legacy callers use this function to check if the BAR - * is legitimate, so maintain that: - */ - - return vdev->barmap[bar] ? 0 : -EBUSY; -} -EXPORT_SYMBOL_GPL(vfio_pci_core_setup_barmap); - ssize_t vfio_pci_bar_rw(struct vfio_pci_core_device *vdev, char __user *bu= f, size_t count, loff_t *ppos, bool iswrite) { @@ -261,9 +249,8 @@ ssize_t vfio_pci_bar_rw(struct vfio_pci_core_device *vd= ev, char __user *buf, */ max_width =3D VFIO_PCI_IO_WIDTH_4; } else { - int ret =3D vfio_pci_core_setup_barmap(vdev, bar); - if (ret) { - done =3D ret; + if (!vdev->barmap[bar]) { + done =3D -EINVAL; goto out; } =20 @@ -439,9 +426,8 @@ int vfio_pci_ioeventfd(struct vfio_pci_core_device *vde= v, loff_t offset, if (count =3D=3D 8) return -EINVAL; =20 - ret =3D vfio_pci_core_setup_barmap(vdev, bar); - if (ret) - return ret; + if (!vdev->barmap[bar]) + return -EINVAL; =20 mutex_lock(&vdev->ioeventfds_lock); =20 diff --git a/drivers/vfio/pci/virtio/legacy_io.c b/drivers/vfio/pci/virtio/= legacy_io.c index 1ed349a55629..67f93b96c099 100644 --- a/drivers/vfio/pci/virtio/legacy_io.c +++ b/drivers/vfio/pci/virtio/legacy_io.c @@ -305,9 +305,8 @@ static int virtiovf_set_notify_addr(struct virtiovf_pci= _core_device *virtvdev) * Setup the BAR where the 'notify' exists to be used by vfio as well * This will let us mmap it only once and use it when needed. */ - ret =3D vfio_pci_core_setup_barmap(core_device, - virtvdev->notify_bar); - if (ret) + if (virtvdev->notify_bar >=3D PCI_STD_NUM_BARS || + !core_device->barmap[virtvdev->notify_bar]) return ret; =20 virtvdev->notify_addr =3D core_device->barmap[virtvdev->notify_bar] + --=20 2.47.3