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 v16 Kernel 2/7] vfio iommu: Remove atomicity of ref_count of pinned pages Date: Wed, 25 Mar 2020 01:02:34 +0530 Message-ID: <1585078359-20124-3-git-send-email-kwankhede@nvidia.com> (raw) In-Reply-To: <1585078359-20124-1-git-send-email-kwankhede@nvidia.com> vfio_pfn.ref_count is always updated by 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> --- 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 9fdfae1cb17a..70aeab921d0f 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 index Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-03-24 19:32 [PATCH v16 Kernel 0/7] KABIs to support migration for VFIO devices Kirti Wankhede 2020-03-24 19:32 ` [PATCH v16 Kernel 1/7] vfio: KABI for migration interface for device state Kirti Wankhede 2020-03-26 10:41 ` Cornelia Huck 2020-03-26 21:39 ` Kirti Wankhede 2020-03-24 19:32 ` Kirti Wankhede [this message] 2020-03-26 10:49 ` [PATCH v16 Kernel 2/7] vfio iommu: Remove atomicity of ref_count of pinned pages Cornelia Huck 2020-03-26 21:45 ` Kirti Wankhede 2020-03-24 19:32 ` [PATCH v16 Kernel 3/7] vfio iommu: Add ioctl definition for dirty pages tracking Kirti Wankhede 2020-03-24 19:32 ` [PATCH v16 Kernel 4/7] vfio iommu: Implementation of ioctl " Kirti Wankhede 2020-03-24 20:37 ` Alex Williamson 2020-03-24 20:45 ` Alex Williamson 2020-03-24 21:48 ` Kirti Wankhede 2020-03-24 19:32 ` [PATCH v16 Kernel 5/7] vfio iommu: Update UNMAP_DMA ioctl to get dirty bitmap before unmap Kirti Wankhede 2020-03-25 2:18 ` Yan Zhao 2020-03-26 21:39 ` Kirti Wankhede 2020-03-27 0:04 ` Yan Zhao 2020-03-27 4:42 ` Kirti Wankhede 2020-03-30 2:15 ` Yan Zhao 2020-04-01 18:04 ` Kirti Wankhede 2020-03-24 19:32 ` [PATCH v16 Kernel 6/7] vfio iommu: Adds flag to indicate dirty pages tracking capability support Kirti Wankhede 2020-03-24 19:32 ` [PATCH v16 Kernel 7/7] vfio: Selective dirty page tracking if IOMMU backed device pins pages 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=1585078359-20124-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: link
KVM Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/kvm/0 kvm/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 kvm kvm/ https://lore.kernel.org/kvm \ kvm@vger.kernel.org public-inbox-index kvm Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.kvm AGPL code for this site: git clone https://public-inbox.org/public-inbox.git