From: Kirti Wankhede <kwankhede@nvidia.com> To: <alex.williamson@redhat.com>, <cjia@nvidia.com> Cc: <kevin.tian@intel.com>, <ziye.yang@intel.com>, <changpeng.liu@intel.com>, <yi.l.liu@intel.com>, <mlevitsk@redhat.com>, <eskultet@redhat.com>, <cohuck@redhat.com>, <dgilbert@redhat.com>, <jonathan.davies@nutanix.com>, <eauger@redhat.com>, <aik@ozlabs.ru>, <pasic@linux.ibm.com>, <felipe@nutanix.com>, <Zhengxiao.zx@Alibaba-inc.com>, <shuangtai.tst@alibaba-inc.com>, <Ken.Xue@amd.com>, <zhi.a.wang@intel.com>, <yan.y.zhao@intel.com>, <qemu-devel@nongnu.org>, <kvm@vger.kernel.org>, "Kirti Wankhede" <kwankhede@nvidia.com> Subject: [PATCH Kernel v22 2/8] vfio iommu: Remove atomicity of ref_count of pinned pages Date: Mon, 18 May 2020 11:26:31 +0530 [thread overview] Message-ID: <1589781397-28368-3-git-send-email-kwankhede@nvidia.com> (raw) In-Reply-To: <1589781397-28368-1-git-send-email-kwankhede@nvidia.com> vfio_pfn.ref_count is always updated while holding iommu->lock, using atomic variable is overkill. Signed-off-by: Kirti Wankhede <kwankhede@nvidia.com> Reviewed-by: Neo Jia <cjia@nvidia.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> --- drivers/vfio/vfio_iommu_type1.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c index a0c60f895b24..fa735047b04d 100644 --- a/drivers/vfio/vfio_iommu_type1.c +++ b/drivers/vfio/vfio_iommu_type1.c @@ -112,7 +112,7 @@ struct vfio_pfn { struct rb_node node; dma_addr_t iova; /* Device address */ unsigned long pfn; /* Host pfn */ - atomic_t ref_count; + unsigned int ref_count; }; struct vfio_regions { @@ -233,7 +233,7 @@ static int vfio_add_to_pfn_list(struct vfio_dma *dma, dma_addr_t iova, vpfn->iova = iova; vpfn->pfn = pfn; - atomic_set(&vpfn->ref_count, 1); + vpfn->ref_count = 1; vfio_link_pfn(dma, vpfn); return 0; } @@ -251,7 +251,7 @@ static struct vfio_pfn *vfio_iova_get_vfio_pfn(struct vfio_dma *dma, struct vfio_pfn *vpfn = vfio_find_vpfn(dma, iova); if (vpfn) - atomic_inc(&vpfn->ref_count); + vpfn->ref_count++; return vpfn; } @@ -259,7 +259,8 @@ static int vfio_iova_put_vfio_pfn(struct vfio_dma *dma, struct vfio_pfn *vpfn) { int ret = 0; - if (atomic_dec_and_test(&vpfn->ref_count)) { + vpfn->ref_count--; + if (!vpfn->ref_count) { ret = put_pfn(vpfn->pfn, dma->prot); vfio_remove_from_pfn_list(dma, vpfn); } -- 2.7.0
WARNING: multiple messages have this Message-ID (diff)
From: Kirti Wankhede <kwankhede@nvidia.com> To: <alex.williamson@redhat.com>, <cjia@nvidia.com> Cc: Zhengxiao.zx@Alibaba-inc.com, kevin.tian@intel.com, yi.l.liu@intel.com, yan.y.zhao@intel.com, kvm@vger.kernel.org, eskultet@redhat.com, ziye.yang@intel.com, qemu-devel@nongnu.org, cohuck@redhat.com, shuangtai.tst@alibaba-inc.com, dgilbert@redhat.com, zhi.a.wang@intel.com, mlevitsk@redhat.com, pasic@linux.ibm.com, aik@ozlabs.ru, Kirti Wankhede <kwankhede@nvidia.com>, eauger@redhat.com, felipe@nutanix.com, jonathan.davies@nutanix.com, changpeng.liu@intel.com, Ken.Xue@amd.com Subject: [PATCH Kernel v22 2/8] vfio iommu: Remove atomicity of ref_count of pinned pages Date: Mon, 18 May 2020 11:26:31 +0530 [thread overview] Message-ID: <1589781397-28368-3-git-send-email-kwankhede@nvidia.com> (raw) In-Reply-To: <1589781397-28368-1-git-send-email-kwankhede@nvidia.com> vfio_pfn.ref_count is always updated while holding iommu->lock, using atomic variable is overkill. Signed-off-by: Kirti Wankhede <kwankhede@nvidia.com> Reviewed-by: Neo Jia <cjia@nvidia.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> --- drivers/vfio/vfio_iommu_type1.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c index a0c60f895b24..fa735047b04d 100644 --- a/drivers/vfio/vfio_iommu_type1.c +++ b/drivers/vfio/vfio_iommu_type1.c @@ -112,7 +112,7 @@ struct vfio_pfn { struct rb_node node; dma_addr_t iova; /* Device address */ unsigned long pfn; /* Host pfn */ - atomic_t ref_count; + unsigned int ref_count; }; struct vfio_regions { @@ -233,7 +233,7 @@ static int vfio_add_to_pfn_list(struct vfio_dma *dma, dma_addr_t iova, vpfn->iova = iova; vpfn->pfn = pfn; - atomic_set(&vpfn->ref_count, 1); + vpfn->ref_count = 1; vfio_link_pfn(dma, vpfn); return 0; } @@ -251,7 +251,7 @@ static struct vfio_pfn *vfio_iova_get_vfio_pfn(struct vfio_dma *dma, struct vfio_pfn *vpfn = vfio_find_vpfn(dma, iova); if (vpfn) - atomic_inc(&vpfn->ref_count); + vpfn->ref_count++; return vpfn; } @@ -259,7 +259,8 @@ static int vfio_iova_put_vfio_pfn(struct vfio_dma *dma, struct vfio_pfn *vpfn) { int ret = 0; - if (atomic_dec_and_test(&vpfn->ref_count)) { + vpfn->ref_count--; + if (!vpfn->ref_count) { ret = put_pfn(vpfn->pfn, dma->prot); vfio_remove_from_pfn_list(dma, vpfn); } -- 2.7.0
next prev parent reply other threads:[~2020-05-18 6:30 UTC|newest] Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-05-18 5:56 [PATCH Kernel v22 0/8] Add UAPIs to support migration for VFIO devices Kirti Wankhede 2020-05-18 5:56 ` Kirti Wankhede 2020-05-18 5:56 ` [PATCH Kernel v22 1/8] vfio: UAPI for migration interface for device state Kirti Wankhede 2020-05-18 5:56 ` Kirti Wankhede 2020-05-18 5:56 ` Kirti Wankhede [this message] 2020-05-18 5:56 ` [PATCH Kernel v22 2/8] vfio iommu: Remove atomicity of ref_count of pinned pages Kirti Wankhede 2020-05-18 5:56 ` [PATCH Kernel v22 3/8] vfio iommu: Cache pgsize_bitmap in struct vfio_iommu Kirti Wankhede 2020-05-18 5:56 ` Kirti Wankhede 2020-05-20 10:08 ` Cornelia Huck 2020-05-20 10:08 ` Cornelia Huck 2020-05-20 14:46 ` Kirti Wankhede 2020-05-20 14:46 ` Kirti Wankhede 2020-05-18 5:56 ` [PATCH Kernel v22 4/8] vfio iommu: Add ioctl definition for dirty pages tracking Kirti Wankhede 2020-05-18 5:56 ` Kirti Wankhede 2020-05-18 5:56 ` [PATCH Kernel v22 5/8] vfio iommu: Implementation of ioctl " Kirti Wankhede 2020-05-18 5:56 ` Kirti Wankhede 2020-05-18 21:53 ` Alex Williamson 2020-05-18 21:53 ` Alex Williamson 2020-05-19 7:11 ` Kirti Wankhede 2020-05-19 7:11 ` Kirti Wankhede 2020-05-19 6:52 ` Kirti Wankhede 2020-05-19 6:52 ` Kirti Wankhede 2020-05-18 5:56 ` [PATCH Kernel v22 6/8] vfio iommu: Update UNMAP_DMA ioctl to get dirty bitmap before unmap Kirti Wankhede 2020-05-18 5:56 ` Kirti Wankhede 2020-05-19 6:54 ` Kirti Wankhede 2020-05-19 6:54 ` Kirti Wankhede 2020-05-20 10:27 ` Cornelia Huck 2020-05-20 10:27 ` Cornelia Huck 2020-05-20 15:16 ` Kirti Wankhede 2020-05-20 15:16 ` Kirti Wankhede 2020-05-18 5:56 ` [PATCH Kernel v22 7/8] vfio iommu: Add migration capability to report supported features Kirti Wankhede 2020-05-18 5:56 ` Kirti Wankhede 2020-05-20 10:42 ` Cornelia Huck 2020-05-20 10:42 ` Cornelia Huck 2020-05-20 15:23 ` Kirti Wankhede 2020-05-20 15:23 ` Kirti Wankhede 2020-05-18 5:56 ` [PATCH Kernel v22 8/8] vfio: Selective dirty page tracking if IOMMU backed device pins pages Kirti Wankhede 2020-05-18 5:56 ` Kirti Wankhede 2020-05-19 6:54 ` Kirti Wankhede 2020-05-19 6:54 ` Kirti Wankhede 2020-05-19 16:58 ` [PATCH Kernel v22 0/8] Add UAPIs to support migration for VFIO devices Alex Williamson 2020-05-19 16:58 ` Alex Williamson 2020-05-20 2:55 ` Yan Zhao 2020-05-20 2:55 ` Yan Zhao 2020-05-20 13:40 ` Kirti Wankhede 2020-05-20 13:40 ` Kirti Wankhede 2020-05-20 16:46 ` Alex Williamson 2020-05-20 16:46 ` Alex Williamson 2020-05-21 5:08 ` Yan Zhao 2020-05-21 5:08 ` Yan Zhao 2020-05-21 7:09 ` Kirti Wankhede 2020-05-21 7:09 ` Kirti Wankhede 2020-05-21 7:04 ` Yan Zhao 2020-05-21 7:04 ` Yan Zhao 2020-05-21 7:28 ` Kirti Wankhede 2020-05-21 7:28 ` Kirti Wankhede 2020-05-21 7:32 ` Kirti Wankhede 2020-05-21 7:32 ` Kirti Wankhede 2020-05-25 6:59 ` Yan Zhao 2020-05-25 6:59 ` Yan Zhao 2020-05-25 13:20 ` Kirti Wankhede 2020-05-25 13:20 ` Kirti Wankhede 2020-05-26 20:19 ` Alex Williamson 2020-05-26 20:19 ` Alex Williamson 2020-05-27 6:23 ` Yan Zhao 2020-05-27 6:23 ` Yan Zhao 2020-05-27 8:48 ` Dr. David Alan Gilbert 2020-05-27 8:48 ` Dr. David Alan Gilbert 2020-05-28 8:01 ` Yan Zhao 2020-05-28 8:01 ` Yan Zhao 2020-05-28 22:53 ` Alex Williamson 2020-05-28 22:53 ` Alex Williamson 2020-05-29 11:12 ` Dr. David Alan Gilbert 2020-05-29 11:12 ` Dr. David Alan Gilbert 2020-05-28 22:59 ` Alex Williamson 2020-05-28 22:59 ` Alex Williamson 2020-05-29 4:15 ` Yan Zhao 2020-05-29 4:15 ` Yan Zhao 2020-05-29 17:57 ` Kirti Wankhede 2020-05-29 17:57 ` Kirti Wankhede
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=1589781397-28368-3-git-send-email-kwankhede@nvidia.com \ --to=kwankhede@nvidia.com \ --cc=Ken.Xue@amd.com \ --cc=Zhengxiao.zx@Alibaba-inc.com \ --cc=aik@ozlabs.ru \ --cc=alex.williamson@redhat.com \ --cc=changpeng.liu@intel.com \ --cc=cjia@nvidia.com \ --cc=cohuck@redhat.com \ --cc=dgilbert@redhat.com \ --cc=eauger@redhat.com \ --cc=eskultet@redhat.com \ --cc=felipe@nutanix.com \ --cc=jonathan.davies@nutanix.com \ --cc=kevin.tian@intel.com \ --cc=kvm@vger.kernel.org \ --cc=mlevitsk@redhat.com \ --cc=pasic@linux.ibm.com \ --cc=qemu-devel@nongnu.org \ --cc=shuangtai.tst@alibaba-inc.com \ --cc=yan.y.zhao@intel.com \ --cc=yi.l.liu@intel.com \ --cc=zhi.a.wang@intel.com \ --cc=ziye.yang@intel.com \ /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.