vfio iommu: Use shift operation for 64-bit integer division
authorKirti Wankhede <kwankhede@nvidia.com>
Tue, 2 Jun 2020 18:42:36 +0000 (00:12 +0530)
committerAlex Williamson <alex.williamson@redhat.com>
Tue, 2 Jun 2020 19:38:21 +0000 (13:38 -0600)
Fixes compilation error with ARCH=i386.

Error fixed by this commit:
ld: drivers/vfio/vfio_iommu_type1.o: in function `vfio_dma_populate_bitmap':
>> vfio_iommu_type1.c:(.text+0x666): undefined reference to `__udivdi3'

Fixes: d6a4c185660c ("vfio iommu: Implementation of ioctl for dirty pages tracking")
Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Kirti Wankhede <kwankhede@nvidia.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/vfio_iommu_type1.c

index a6d632d..0e4e717 100644 (file)
@@ -227,11 +227,12 @@ static void vfio_dma_bitmap_free(struct vfio_dma *dma)
 static void vfio_dma_populate_bitmap(struct vfio_dma *dma, size_t pgsize)
 {
        struct rb_node *p;
+       unsigned long pgshift = __ffs(pgsize);
 
        for (p = rb_first(&dma->pfn_list); p; p = rb_next(p)) {
                struct vfio_pfn *vpfn = rb_entry(p, struct vfio_pfn, node);
 
-               bitmap_set(dma->bitmap, (vpfn->iova - dma->iova) / pgsize, 1);
+               bitmap_set(dma->bitmap, (vpfn->iova - dma->iova) >> pgshift, 1);
        }
 }