From: Yishai Hadas <yishaih@nvidia.com> To: <alex.williamson@redhat.com>, <mst@redhat.com>, <jasowang@redhat.com>, <jgg@nvidia.com> Cc: <kvm@vger.kernel.org>, <virtualization@lists.linux-foundation.org>, <parav@nvidia.com>, <feliu@nvidia.com>, <jiri@nvidia.com>, <kevin.tian@intel.com>, <joao.m.martins@oracle.com>, <si-wei.liu@oracle.com>, <leonro@nvidia.com>, <yishaih@nvidia.com>, <maorg@nvidia.com> Subject: [PATCH V1 vfio 7/9] vfio/pci: Expose vfio_pci_core_setup_barmap() Date: Tue, 17 Oct 2023 16:42:15 +0300 [thread overview] Message-ID: <20231017134217.82497-8-yishaih@nvidia.com> (raw) In-Reply-To: <20231017134217.82497-1-yishaih@nvidia.com> Expose vfio_pci_core_setup_barmap() to be used by drivers. This will let drivers to mmap a BAR and re-use it from both vfio and the driver when it's applicable. This API will be used in the next patches by the vfio/virtio coming driver. Signed-off-by: Yishai Hadas <yishaih@nvidia.com> --- drivers/vfio/pci/vfio_pci_core.c | 25 +++++++++++++++++++++++++ drivers/vfio/pci/vfio_pci_rdwr.c | 28 ++-------------------------- include/linux/vfio_pci_core.h | 1 + 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c index 1929103ee59a..ebea39836dd9 100644 --- a/drivers/vfio/pci/vfio_pci_core.c +++ b/drivers/vfio/pci/vfio_pci_core.c @@ -684,6 +684,31 @@ void vfio_pci_core_disable(struct vfio_pci_core_device *vdev) } EXPORT_SYMBOL_GPL(vfio_pci_core_disable); +int vfio_pci_core_setup_barmap(struct vfio_pci_core_device *vdev, int bar) +{ + struct pci_dev *pdev = vdev->pdev; + void __iomem *io; + int ret; + + if (vdev->barmap[bar]) + return 0; + + ret = pci_request_selected_regions(pdev, 1 << bar, "vfio"); + if (ret) + return ret; + + io = pci_iomap(pdev, bar, 0); + if (!io) { + pci_release_selected_regions(pdev, 1 << bar); + return -ENOMEM; + } + + vdev->barmap[bar] = io; + + return 0; +} +EXPORT_SYMBOL_GPL(vfio_pci_core_setup_barmap); + void vfio_pci_core_close_device(struct vfio_device *core_vdev) { struct vfio_pci_core_device *vdev = diff --git a/drivers/vfio/pci/vfio_pci_rdwr.c b/drivers/vfio/pci/vfio_pci_rdwr.c index e27de61ac9fe..6f08b3ecbb89 100644 --- a/drivers/vfio/pci/vfio_pci_rdwr.c +++ b/drivers/vfio/pci/vfio_pci_rdwr.c @@ -200,30 +200,6 @@ static ssize_t do_io_rw(struct vfio_pci_core_device *vdev, bool test_mem, return done; } -static int vfio_pci_setup_barmap(struct vfio_pci_core_device *vdev, int bar) -{ - struct pci_dev *pdev = vdev->pdev; - int ret; - void __iomem *io; - - if (vdev->barmap[bar]) - return 0; - - ret = pci_request_selected_regions(pdev, 1 << bar, "vfio"); - if (ret) - return ret; - - io = pci_iomap(pdev, bar, 0); - if (!io) { - pci_release_selected_regions(pdev, 1 << bar); - return -ENOMEM; - } - - vdev->barmap[bar] = io; - - return 0; -} - ssize_t vfio_pci_bar_rw(struct vfio_pci_core_device *vdev, char __user *buf, size_t count, loff_t *ppos, bool iswrite) { @@ -262,7 +238,7 @@ ssize_t vfio_pci_bar_rw(struct vfio_pci_core_device *vdev, char __user *buf, } x_end = end; } else { - int ret = vfio_pci_setup_barmap(vdev, bar); + int ret = vfio_pci_core_setup_barmap(vdev, bar); if (ret) { done = ret; goto out; @@ -438,7 +414,7 @@ int vfio_pci_ioeventfd(struct vfio_pci_core_device *vdev, loff_t offset, return -EINVAL; #endif - ret = vfio_pci_setup_barmap(vdev, bar); + ret = vfio_pci_core_setup_barmap(vdev, bar); if (ret) return ret; diff --git a/include/linux/vfio_pci_core.h b/include/linux/vfio_pci_core.h index 562e8754869d..67ac58e20e1d 100644 --- a/include/linux/vfio_pci_core.h +++ b/include/linux/vfio_pci_core.h @@ -127,6 +127,7 @@ int vfio_pci_core_match(struct vfio_device *core_vdev, char *buf); int vfio_pci_core_enable(struct vfio_pci_core_device *vdev); void vfio_pci_core_disable(struct vfio_pci_core_device *vdev); void vfio_pci_core_finish_enable(struct vfio_pci_core_device *vdev); +int vfio_pci_core_setup_barmap(struct vfio_pci_core_device *vdev, int bar); pci_ers_result_t vfio_pci_core_aer_err_detected(struct pci_dev *pdev, pci_channel_state_t state); -- 2.27.0
WARNING: multiple messages have this Message-ID (diff)
From: Yishai Hadas via Virtualization <virtualization@lists.linux-foundation.org> To: <alex.williamson@redhat.com>, <mst@redhat.com>, <jasowang@redhat.com>, <jgg@nvidia.com> Cc: kvm@vger.kernel.org, maorg@nvidia.com, virtualization@lists.linux-foundation.org, jiri@nvidia.com, leonro@nvidia.com Subject: [PATCH V1 vfio 7/9] vfio/pci: Expose vfio_pci_core_setup_barmap() Date: Tue, 17 Oct 2023 16:42:15 +0300 [thread overview] Message-ID: <20231017134217.82497-8-yishaih@nvidia.com> (raw) In-Reply-To: <20231017134217.82497-1-yishaih@nvidia.com> Expose vfio_pci_core_setup_barmap() to be used by drivers. This will let drivers to mmap a BAR and re-use it from both vfio and the driver when it's applicable. This API will be used in the next patches by the vfio/virtio coming driver. Signed-off-by: Yishai Hadas <yishaih@nvidia.com> --- drivers/vfio/pci/vfio_pci_core.c | 25 +++++++++++++++++++++++++ drivers/vfio/pci/vfio_pci_rdwr.c | 28 ++-------------------------- include/linux/vfio_pci_core.h | 1 + 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c index 1929103ee59a..ebea39836dd9 100644 --- a/drivers/vfio/pci/vfio_pci_core.c +++ b/drivers/vfio/pci/vfio_pci_core.c @@ -684,6 +684,31 @@ void vfio_pci_core_disable(struct vfio_pci_core_device *vdev) } EXPORT_SYMBOL_GPL(vfio_pci_core_disable); +int vfio_pci_core_setup_barmap(struct vfio_pci_core_device *vdev, int bar) +{ + struct pci_dev *pdev = vdev->pdev; + void __iomem *io; + int ret; + + if (vdev->barmap[bar]) + return 0; + + ret = pci_request_selected_regions(pdev, 1 << bar, "vfio"); + if (ret) + return ret; + + io = pci_iomap(pdev, bar, 0); + if (!io) { + pci_release_selected_regions(pdev, 1 << bar); + return -ENOMEM; + } + + vdev->barmap[bar] = io; + + return 0; +} +EXPORT_SYMBOL_GPL(vfio_pci_core_setup_barmap); + void vfio_pci_core_close_device(struct vfio_device *core_vdev) { struct vfio_pci_core_device *vdev = diff --git a/drivers/vfio/pci/vfio_pci_rdwr.c b/drivers/vfio/pci/vfio_pci_rdwr.c index e27de61ac9fe..6f08b3ecbb89 100644 --- a/drivers/vfio/pci/vfio_pci_rdwr.c +++ b/drivers/vfio/pci/vfio_pci_rdwr.c @@ -200,30 +200,6 @@ static ssize_t do_io_rw(struct vfio_pci_core_device *vdev, bool test_mem, return done; } -static int vfio_pci_setup_barmap(struct vfio_pci_core_device *vdev, int bar) -{ - struct pci_dev *pdev = vdev->pdev; - int ret; - void __iomem *io; - - if (vdev->barmap[bar]) - return 0; - - ret = pci_request_selected_regions(pdev, 1 << bar, "vfio"); - if (ret) - return ret; - - io = pci_iomap(pdev, bar, 0); - if (!io) { - pci_release_selected_regions(pdev, 1 << bar); - return -ENOMEM; - } - - vdev->barmap[bar] = io; - - return 0; -} - ssize_t vfio_pci_bar_rw(struct vfio_pci_core_device *vdev, char __user *buf, size_t count, loff_t *ppos, bool iswrite) { @@ -262,7 +238,7 @@ ssize_t vfio_pci_bar_rw(struct vfio_pci_core_device *vdev, char __user *buf, } x_end = end; } else { - int ret = vfio_pci_setup_barmap(vdev, bar); + int ret = vfio_pci_core_setup_barmap(vdev, bar); if (ret) { done = ret; goto out; @@ -438,7 +414,7 @@ int vfio_pci_ioeventfd(struct vfio_pci_core_device *vdev, loff_t offset, return -EINVAL; #endif - ret = vfio_pci_setup_barmap(vdev, bar); + ret = vfio_pci_core_setup_barmap(vdev, bar); if (ret) return ret; diff --git a/include/linux/vfio_pci_core.h b/include/linux/vfio_pci_core.h index 562e8754869d..67ac58e20e1d 100644 --- a/include/linux/vfio_pci_core.h +++ b/include/linux/vfio_pci_core.h @@ -127,6 +127,7 @@ int vfio_pci_core_match(struct vfio_device *core_vdev, char *buf); int vfio_pci_core_enable(struct vfio_pci_core_device *vdev); void vfio_pci_core_disable(struct vfio_pci_core_device *vdev); void vfio_pci_core_finish_enable(struct vfio_pci_core_device *vdev); +int vfio_pci_core_setup_barmap(struct vfio_pci_core_device *vdev, int bar); pci_ers_result_t vfio_pci_core_aer_err_detected(struct pci_dev *pdev, pci_channel_state_t state); -- 2.27.0 _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2023-10-17 13:43 UTC|newest] Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-10-17 13:42 [PATCH V1 vfio 0/9] Introduce a vfio driver over virtio devices Yishai Hadas 2023-10-17 13:42 ` Yishai Hadas via Virtualization 2023-10-17 13:42 ` [PATCH V1 vfio 1/9] virtio-pci: Fix common config map for modern device Yishai Hadas 2023-10-17 13:42 ` Yishai Hadas via Virtualization 2023-10-17 13:42 ` [PATCH V1 vfio 2/9] virtio: Define feature bit for administration virtqueue Yishai Hadas 2023-10-17 13:42 ` Yishai Hadas via Virtualization 2023-10-17 13:42 ` [PATCH V1 vfio 3/9] virtio-pci: Introduce admin virtqueue Yishai Hadas 2023-10-17 13:42 ` Yishai Hadas via Virtualization 2023-10-17 13:42 ` [PATCH V1 vfio 4/9] virtio-pci: Introduce admin command sending function Yishai Hadas 2023-10-17 13:42 ` Yishai Hadas via Virtualization 2023-10-17 13:42 ` [PATCH V1 vfio 5/9] virtio-pci: Introduce admin commands Yishai Hadas 2023-10-17 13:42 ` Yishai Hadas via Virtualization 2023-10-17 13:42 ` [PATCH V1 vfio 6/9] virtio-pci: Introduce APIs to execute legacy IO " Yishai Hadas 2023-10-17 13:42 ` Yishai Hadas via Virtualization 2023-10-17 20:33 ` kernel test robot 2023-10-17 20:33 ` kernel test robot 2023-10-22 1:14 ` kernel test robot 2023-10-22 1:14 ` kernel test robot 2023-10-24 21:01 ` Michael S. Tsirkin 2023-10-24 21:01 ` Michael S. Tsirkin 2023-10-25 9:18 ` Yishai Hadas via Virtualization 2023-10-25 10:17 ` Michael S. Tsirkin 2023-10-25 10:17 ` Michael S. Tsirkin 2023-10-25 13:00 ` Yishai Hadas 2023-10-25 13:00 ` Yishai Hadas via Virtualization 2023-10-25 13:04 ` Michael S. Tsirkin 2023-10-25 13:04 ` Michael S. Tsirkin 2023-10-25 13:44 ` Michael S. Tsirkin 2023-10-25 13:44 ` Michael S. Tsirkin 2023-10-25 14:03 ` Yishai Hadas 2023-10-25 14:03 ` Yishai Hadas via Virtualization 2023-10-25 16:31 ` Michael S. Tsirkin 2023-10-25 16:31 ` Michael S. Tsirkin 2023-10-25 9:36 ` Yishai Hadas 2023-10-25 9:36 ` Yishai Hadas via Virtualization 2023-10-17 13:42 ` Yishai Hadas [this message] 2023-10-17 13:42 ` [PATCH V1 vfio 7/9] vfio/pci: Expose vfio_pci_core_setup_barmap() Yishai Hadas via Virtualization 2023-10-17 13:42 ` [PATCH V1 vfio 8/9] vfio/pci: Expose vfio_pci_iowrite/read##size() Yishai Hadas 2023-10-17 13:42 ` Yishai Hadas via Virtualization 2023-10-17 13:42 ` [PATCH V1 vfio 9/9] vfio/virtio: Introduce a vfio driver over virtio devices Yishai Hadas 2023-10-17 13:42 ` Yishai Hadas via Virtualization 2023-10-17 20:24 ` Alex Williamson 2023-10-17 20:24 ` Alex Williamson 2023-10-18 9:01 ` Yishai Hadas 2023-10-18 9:01 ` Yishai Hadas via Virtualization 2023-10-18 12:51 ` Alex Williamson 2023-10-18 12:51 ` Alex Williamson 2023-10-18 13:06 ` Parav Pandit 2023-10-18 13:06 ` Parav Pandit via Virtualization 2023-10-18 16:33 ` Jason Gunthorpe 2023-10-18 18:29 ` Alex Williamson 2023-10-18 18:29 ` Alex Williamson 2023-10-18 19:28 ` Jason Gunthorpe 2023-10-24 19:57 ` Alex Williamson 2023-10-24 19:57 ` Alex Williamson 2023-10-25 14:35 ` Yishai Hadas 2023-10-25 14:35 ` Yishai Hadas via Virtualization 2023-10-25 16:28 ` Michael S. Tsirkin 2023-10-25 16:28 ` Michael S. Tsirkin 2023-10-25 19:13 ` Alex Williamson 2023-10-25 19:13 ` Alex Williamson 2023-10-26 12:08 ` Yishai Hadas 2023-10-26 12:08 ` Yishai Hadas via Virtualization 2023-10-26 12:12 ` Michael S. Tsirkin 2023-10-26 12:12 ` Michael S. Tsirkin 2023-10-26 12:40 ` Parav Pandit 2023-10-26 12:40 ` Parav Pandit via Virtualization 2023-10-26 13:15 ` Michael S. Tsirkin 2023-10-26 13:15 ` Michael S. Tsirkin 2023-10-26 13:28 ` Parav Pandit 2023-10-26 13:28 ` Parav Pandit via Virtualization 2023-10-26 15:06 ` Michael S. Tsirkin 2023-10-26 15:06 ` Michael S. Tsirkin 2023-10-26 15:09 ` Parav Pandit 2023-10-26 15:09 ` Parav Pandit via Virtualization 2023-10-26 15:46 ` Michael S. Tsirkin 2023-10-26 15:46 ` Michael S. Tsirkin 2023-10-26 15:56 ` Parav Pandit 2023-10-26 15:56 ` Parav Pandit via Virtualization 2023-10-26 17:55 ` Alex Williamson 2023-10-26 17:55 ` Alex Williamson 2023-10-26 19:49 ` Michael S. Tsirkin 2023-10-26 19:49 ` Michael S. Tsirkin 2023-10-29 16:13 ` Yishai Hadas via Virtualization 2023-10-29 16:13 ` Yishai Hadas 2023-10-22 8:20 ` [PATCH V1 vfio 0/9] " Yishai Hadas 2023-10-22 8:20 ` Yishai Hadas via Virtualization 2023-10-22 9:12 ` Michael S. Tsirkin 2023-10-22 9:12 ` Michael S. Tsirkin 2023-10-23 15:33 ` Alex Williamson 2023-10-23 15:33 ` Alex Williamson 2023-10-23 15:42 ` Jason Gunthorpe 2023-10-23 16:09 ` Alex Williamson 2023-10-23 16:09 ` Alex Williamson 2023-10-23 16:20 ` Jason Gunthorpe 2023-10-23 16:45 ` Alex Williamson 2023-10-23 16:45 ` Alex Williamson 2023-10-23 17:27 ` Jason Gunthorpe 2023-10-25 8:34 ` Tian, Kevin 2023-10-25 8:34 ` Tian, Kevin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20231017134217.82497-8-yishaih@nvidia.com \ --to=yishaih@nvidia.com \ --cc=alex.williamson@redhat.com \ --cc=feliu@nvidia.com \ --cc=jasowang@redhat.com \ --cc=jgg@nvidia.com \ --cc=jiri@nvidia.com \ --cc=joao.m.martins@oracle.com \ --cc=kevin.tian@intel.com \ --cc=kvm@vger.kernel.org \ --cc=leonro@nvidia.com \ --cc=maorg@nvidia.com \ --cc=mst@redhat.com \ --cc=parav@nvidia.com \ --cc=si-wei.liu@oracle.com \ --cc=virtualization@lists.linux-foundation.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.