On Wed, Mar 27, 2024 at 03:14:25PM +0500, Muhammad Usama Anjum wrote: > On 3/26/24 8:03 PM, Jason Gunthorpe wrote: > > On Tue, Mar 26, 2024 at 06:09:34PM +0500, Muhammad Usama Anjum wrote: > >> Even after applying this config patch and following snippet (which doesn't > >> terminate the program if mmap doesn't allocate exactly as the hint), I'm > >> finding failed tests. > >> > >> @@ -1746,7 +1748,7 @@ FIXTURE_SETUP(iommufd_dirty_tracking) > >> assert((uintptr_t)self->buffer % HUGEPAGE_SIZE == 0); > >> vrc = mmap(self->buffer, variant->buffer_size, PROT_READ | PROT_WRITE, > >> mmap_flags, -1, 0); > >> - assert(vrc == self->buffer); > >> + assert(vrc == self->buffer);// ??? > >> > >> On x86: > >> # Totals: pass:176 fail:4 xfail:0 xpass:0 skip:0 error:0 > >> On ARM64: > >> # Totals: pass:166 fail:14 xfail:0 xpass:0 skip:0 error:0 > >> > >> The log files are attached. > > > > You probably don't have enough transparent huge pages available to the process > > > > echo 1024 > /proc/sys/vm/nr_hugepages > After making huge pages available, the iommufd test always passed on x86. > But there are still failures on arm64. I'm looking into the failures. Oh that is really strange. Joao? Nicolin? > # RUN iommufd_dirty_tracking.domain_dirty128k.get_dirty_bitmap ... > # iommufd_utils.h:374:get_dirty_bitmap:Expected j < npte (1) == test_bit(i + j, (unsigned long *)bitmap) (0) > # get_dirty_bitmap: Test terminated by assertion > # FAIL iommufd_dirty_tracking.domain_dirty128k.get_dirty_bitmap > not ok 139 iommufd_dirty_tracking.domain_dirty128k.get_dirty_bitmap > # RUN iommufd_dirty_tracking.domain_dirty128k.get_dirty_bitmap_no_clear ... > # iommufd_utils.h:374:get_dirty_bitmap_no_clear:Expected j < npte (1) == test_bit(i + j, (unsigned long *)bitmap) (0) > # get_dirty_bitmap_no_clear: Test terminated by assertion > # FAIL iommufd_dirty_tracking.domain_dirty128k.get_dirty_bitmap_no_clear > not ok 140 iommufd_dirty_tracking.domain_dirty128k.get_dirty_bitmap_no_clear > # RUN iommufd_dirty_tracking.domain_dirty256k.get_dirty_bitmap ... > # iommufd_utils.h:374:get_dirty_bitmap:Expected j < npte (1) == test_bit(i + j, (unsigned long *)bitmap) (0) > # get_dirty_bitmap: Test terminated by assertion > # FAIL iommufd_dirty_tracking.domain_dirty256k.get_dirty_bitmap > not ok 144 iommufd_dirty_tracking.domain_dirty256k.get_dirty_bitmap > # RUN iommufd_dirty_tracking.domain_dirty256k.get_dirty_bitmap_no_clear ... > # iommufd_utils.h:374:get_dirty_bitmap_no_clear:Expected j < npte (1) == test_bit(i + j, (unsigned long *)bitmap) (0) > # get_dirty_bitmap_no_clear: Test terminated by assertion > # FAIL iommufd_dirty_tracking.domain_dirty256k.get_dirty_bitmap_no_clear > not ok 145 iommufd_dirty_tracking.domain_dirty256k.get_dirty_bitmap_no_clear > # RUN iommufd_dirty_tracking.domain_dirty640k.get_dirty_bitmap ... > # iommufd_utils.h:374:get_dirty_bitmap:Expected j < npte (1) == test_bit(i + j, (unsigned long *)bitmap) (0) > # get_dirty_bitmap: Test terminated by assertion > # FAIL iommufd_dirty_tracking.domain_dirty640k.get_dirty_bitmap > not ok 149 iommufd_dirty_tracking.domain_dirty640k.get_dirty_bitmap > # RUN iommufd_dirty_tracking.domain_dirty640k.get_dirty_bitmap_no_clear ... > # iommufd_utils.h:374:get_dirty_bitmap_no_clear:Expected j < npte (1) == test_bit(i + j, (unsigned long *)bitmap) (0) > # get_dirty_bitmap_no_clear: Test terminated by assertion > # FAIL iommufd_dirty_tracking.domain_dirty640k.get_dirty_bitmap_no_clear > not ok 150 iommufd_dirty_tracking.domain_dirty640k.get_dirty_bitmap_no_clear > # RUN iommufd_dirty_tracking.domain_dirty128M_huge.get_dirty_bitmap ... > # iommufd_utils.h:374:get_dirty_bitmap:Expected j < npte (1) == test_bit(i + j, (unsigned long *)bitmap) (0) > # get_dirty_bitmap: Test terminated by assertion > # FAIL iommufd_dirty_tracking.domain_dirty128M_huge.get_dirty_bitmap > not ok 159 iommufd_dirty_tracking.domain_dirty128M_huge.get_dirty_bitmap > # RUN iommufd_dirty_tracking.domain_dirty128M_huge.get_dirty_bitmap_no_clear ... > # iommufd_utils.h:374:get_dirty_bitmap_no_clear:Expected j < npte (1) == test_bit(i + j, (unsigned long *)bitmap) (0) > # get_dirty_bitmap_no_clear: Test terminated by assertion > # FAIL iommufd_dirty_tracking.domain_dirty128M_huge.get_dirty_bitmap_no_clear > not ok 160 iommufd_dirty_tracking.domain_dirty128M_huge.get_dirty_bitmap_no_clear > # RUN iommufd_dirty_tracking.domain_dirty256M.get_dirty_bitmap ... > # iommufd_utils.h:374:get_dirty_bitmap:Expected j < npte (1) == test_bit(i + j, (unsigned long *)bitmap) (0) > # get_dirty_bitmap: Test terminated by assertion > # FAIL iommufd_dirty_tracking.domain_dirty256M.get_dirty_bitmap > not ok 164 iommufd_dirty_tracking.domain_dirty256M.get_dirty_bitmap > # RUN iommufd_dirty_tracking.domain_dirty256M.get_dirty_bitmap_no_clear ... > # iommufd_utils.h:374:get_dirty_bitmap_no_clear:Expected j < npte (1) == test_bit(i + j, (unsigned long *)bitmap) (0) > # get_dirty_bitmap_no_clear: Test terminated by assertion > # FAIL iommufd_dirty_tracking.domain_dirty256M.get_dirty_bitmap_no_clear > not ok 165 iommufd_dirty_tracking.domain_dirty256M.get_dirty_bitmap_no_clear > # RUN iommufd_dirty_tracking.domain_dirty256M_huge.get_dirty_bitmap ... > # iommufd_utils.h:374:get_dirty_bitmap:Expected j < npte (1) == test_bit(i + j, (unsigned long *)bitmap) (0) > # get_dirty_bitmap: Test terminated by assertion > # FAIL iommufd_dirty_tracking.domain_dirty256M_huge.get_dirty_bitmap > not ok 169 iommufd_dirty_tracking.domain_dirty256M_huge.get_dirty_bitmap > # RUN iommufd_dirty_tracking.domain_dirty256M_huge.get_dirty_bitmap_no_clear ... > # iommufd_utils.h:374:get_dirty_bitmap_no_clear:Expected j < npte (1) == test_bit(i + j, (unsigned long *)bitmap) (0) > # get_dirty_bitmap_no_clear: Test terminated by assertion > # FAIL iommufd_dirty_tracking.domain_dirty256M_huge.get_dirty_bitmap_no_clear > not ok 170 iommufd_dirty_tracking.domain_dirty256M_huge.get_dirty_bitmap_no_clear