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.
cat /proc/sys/vm/nr_hugepages
1024
./iommufd
...
# Totals: pass:166 fail:14 xfail:0 xpass:0 skip:0 error:0
>
> Jason
>
--
BR,
Muhammad Usama Anjum
TAP version 13
1..180
# Starting 180 tests from 18 test cases.
# RUN iommufd.simple_close ...
# OK iommufd.simple_close
ok 1 iommufd.simple_close
# RUN iommufd.cmd_fail ...
# OK iommufd.cmd_fail
ok 2 iommufd.cmd_fail
# RUN iommufd.cmd_length ...
# OK iommufd.cmd_length
ok 3 iommufd.cmd_length
# RUN iommufd.cmd_ex_fail ...
# OK iommufd.cmd_ex_fail
ok 4 iommufd.cmd_ex_fail
# RUN iommufd.global_options ...
# OK iommufd.global_options
ok 5 iommufd.global_options
# RUN iommufd.simple_ioctls ...
# OK iommufd.simple_ioctls
ok 6 iommufd.simple_ioctls
# RUN iommufd.unmap_cmd ...
# OK iommufd.unmap_cmd
ok 7 iommufd.unmap_cmd
# RUN iommufd.map_cmd ...
# OK iommufd.map_cmd
ok 8 iommufd.map_cmd
# RUN iommufd.info_cmd ...
# OK iommufd.info_cmd
ok 9 iommufd.info_cmd
# RUN iommufd.set_iommu_cmd ...
# OK iommufd.set_iommu_cmd
ok 10 iommufd.set_iommu_cmd
# RUN iommufd.vfio_ioas ...
# OK iommufd.vfio_ioas
ok 11 iommufd.vfio_ioas
# RUN iommufd_ioas.no_domain.ioas_auto_destroy ...
# OK iommufd_ioas.no_domain.ioas_auto_destroy
ok 12 iommufd_ioas.no_domain.ioas_auto_destroy
# RUN iommufd_ioas.no_domain.ioas_destroy ...
# OK iommufd_ioas.no_domain.ioas_destroy
ok 13 iommufd_ioas.no_domain.ioas_destroy
# RUN iommufd_ioas.no_domain.alloc_hwpt_nested ...
# OK iommufd_ioas.no_domain.alloc_hwpt_nested
ok 14 iommufd_ioas.no_domain.alloc_hwpt_nested
# RUN iommufd_ioas.no_domain.hwpt_attach ...
# OK iommufd_ioas.no_domain.hwpt_attach
ok 15 iommufd_ioas.no_domain.hwpt_attach
# RUN iommufd_ioas.no_domain.ioas_area_destroy ...
# OK iommufd_ioas.no_domain.ioas_area_destroy
ok 16 iommufd_ioas.no_domain.ioas_area_destroy
# RUN iommufd_ioas.no_domain.ioas_area_auto_destroy ...
# OK iommufd_ioas.no_domain.ioas_area_auto_destroy
ok 17 iommufd_ioas.no_domain.ioas_area_auto_destroy
# RUN iommufd_ioas.no_domain.get_hw_info ...
# OK iommufd_ioas.no_domain.get_hw_info
ok 18 iommufd_ioas.no_domain.get_hw_info
# RUN iommufd_ioas.no_domain.area ...
# OK iommufd_ioas.no_domain.area
ok 19 iommufd_ioas.no_domain.area
# RUN iommufd_ioas.no_domain.unmap_fully_contained_areas ...
# OK iommufd_ioas.no_domain.unmap_fully_contained_areas
ok 20 iommufd_ioas.no_domain.unmap_fully_contained_areas
# RUN iommufd_ioas.no_domain.area_auto_iova ...
# OK iommufd_ioas.no_domain.area_auto_iova
ok 21 iommufd_ioas.no_domain.area_auto_iova
# RUN iommufd_ioas.no_domain.area_allowed ...
# OK iommufd_ioas.no_domain.area_allowed
ok 22 iommufd_ioas.no_domain.area_allowed
# RUN iommufd_ioas.no_domain.copy_area ...
# OK iommufd_ioas.no_domain.copy_area
ok 23 iommufd_ioas.no_domain.copy_area
# RUN iommufd_ioas.no_domain.iova_ranges ...
# OK iommufd_ioas.no_domain.iova_ranges
ok 24 iommufd_ioas.no_domain.iova_ranges
# RUN iommufd_ioas.no_domain.access_domain_destory ...
# OK iommufd_ioas.no_domain.access_domain_destory
ok 25 iommufd_ioas.no_domain.access_domain_destory
# RUN iommufd_ioas.no_domain.access_pin ...
# OK iommufd_ioas.no_domain.access_pin
ok 26 iommufd_ioas.no_domain.access_pin
# RUN iommufd_ioas.no_domain.access_pin_unmap ...
# OK iommufd_ioas.no_domain.access_pin_unmap
ok 27 iommufd_ioas.no_domain.access_pin_unmap
# RUN iommufd_ioas.no_domain.access_rw ...
# OK iommufd_ioas.no_domain.access_rw
ok 28 iommufd_ioas.no_domain.access_rw
# RUN iommufd_ioas.no_domain.access_rw_unaligned ...
# OK iommufd_ioas.no_domain.access_rw_unaligned
ok 29 iommufd_ioas.no_domain.access_rw_unaligned
# RUN iommufd_ioas.no_domain.fork_gone ...
# OK iommufd_ioas.no_domain.fork_gone
ok 30 iommufd_ioas.no_domain.fork_gone
# RUN iommufd_ioas.no_domain.fork_present ...
# OK iommufd_ioas.no_domain.fork_present
ok 31 iommufd_ioas.no_domain.fork_present
# RUN iommufd_ioas.no_domain.ioas_option_huge_pages ...
# OK iommufd_ioas.no_domain.ioas_option_huge_pages
ok 32 iommufd_ioas.no_domain.ioas_option_huge_pages
# RUN iommufd_ioas.no_domain.ioas_iova_alloc ...
# OK iommufd_ioas.no_domain.ioas_iova_alloc
ok 33 iommufd_ioas.no_domain.ioas_iova_alloc
# RUN iommufd_ioas.no_domain.ioas_align_change ...
# OK iommufd_ioas.no_domain.ioas_align_change
ok 34 iommufd_ioas.no_domain.ioas_align_change
# RUN iommufd_ioas.no_domain.copy_sweep ...
# OK iommufd_ioas.no_domain.copy_sweep
ok 35 iommufd_ioas.no_domain.copy_sweep
# RUN iommufd_ioas.mock_domain.ioas_auto_destroy ...
# OK iommufd_ioas.mock_domain.ioas_auto_destroy
ok 36 iommufd_ioas.mock_domain.ioas_auto_destroy
# RUN iommufd_ioas.mock_domain.ioas_destroy ...
# OK iommufd_ioas.mock_domain.ioas_destroy
ok 37 iommufd_ioas.mock_domain.ioas_destroy
# RUN iommufd_ioas.mock_domain.alloc_hwpt_nested ...
# OK iommufd_ioas.mock_domain.alloc_hwpt_nested
ok 38 iommufd_ioas.mock_domain.alloc_hwpt_nested
# RUN iommufd_ioas.mock_domain.hwpt_attach ...
# OK iommufd_ioas.mock_domain.hwpt_attach
ok 39 iommufd_ioas.mock_domain.hwpt_attach
# RUN iommufd_ioas.mock_domain.ioas_area_destroy ...
# OK iommufd_ioas.mock_domain.ioas_area_destroy
ok 40 iommufd_ioas.mock_domain.ioas_area_destroy
# RUN iommufd_ioas.mock_domain.ioas_area_auto_destroy ...
# OK iommufd_ioas.mock_domain.ioas_area_auto_destroy
ok 41 iommufd_ioas.mock_domain.ioas_area_auto_destroy
# RUN iommufd_ioas.mock_domain.get_hw_info ...
# OK iommufd_ioas.mock_domain.get_hw_info
ok 42 iommufd_ioas.mock_domain.get_hw_info
# RUN iommufd_ioas.mock_domain.area ...
# OK iommufd_ioas.mock_domain.area
ok 43 iommufd_ioas.mock_domain.area
# RUN iommufd_ioas.mock_domain.unmap_fully_contained_areas ...
# OK iommufd_ioas.mock_domain.unmap_fully_contained_areas
ok 44 iommufd_ioas.mock_domain.unmap_fully_contained_areas
# RUN iommufd_ioas.mock_domain.area_auto_iova ...
# OK iommufd_ioas.mock_domain.area_auto_iova
ok 45 iommufd_ioas.mock_domain.area_auto_iova
# RUN iommufd_ioas.mock_domain.area_allowed ...
# OK iommufd_ioas.mock_domain.area_allowed
ok 46 iommufd_ioas.mock_domain.area_allowed
# RUN iommufd_ioas.mock_domain.copy_area ...
# OK iommufd_ioas.mock_domain.copy_area
ok 47 iommufd_ioas.mock_domain.copy_area
# RUN iommufd_ioas.mock_domain.iova_ranges ...
# OK iommufd_ioas.mock_domain.iova_ranges
ok 48 iommufd_ioas.mock_domain.iova_ranges
# RUN iommufd_ioas.mock_domain.access_domain_destory ...
# OK iommufd_ioas.mock_domain.access_domain_destory
ok 49 iommufd_ioas.mock_domain.access_domain_destory
# RUN iommufd_ioas.mock_domain.access_pin ...
# OK iommufd_ioas.mock_domain.access_pin
ok 50 iommufd_ioas.mock_domain.access_pin
# RUN iommufd_ioas.mock_domain.access_pin_unmap ...
# OK iommufd_ioas.mock_domain.access_pin_unmap
ok 51 iommufd_ioas.mock_domain.access_pin_unmap
# RUN iommufd_ioas.mock_domain.access_rw ...
# OK iommufd_ioas.mock_domain.access_rw
ok 52 iommufd_ioas.mock_domain.access_rw
# RUN iommufd_ioas.mock_domain.access_rw_unaligned ...
# OK iommufd_ioas.mock_domain.access_rw_unaligned
ok 53 iommufd_ioas.mock_domain.access_rw_unaligned
# RUN iommufd_ioas.mock_domain.fork_gone ...
# OK iommufd_ioas.mock_domain.fork_gone
ok 54 iommufd_ioas.mock_domain.fork_gone
# RUN iommufd_ioas.mock_domain.fork_present ...
# OK iommufd_ioas.mock_domain.fork_present
ok 55 iommufd_ioas.mock_domain.fork_present
# RUN iommufd_ioas.mock_domain.ioas_option_huge_pages ...
# OK iommufd_ioas.mock_domain.ioas_option_huge_pages
ok 56 iommufd_ioas.mock_domain.ioas_option_huge_pages
# RUN iommufd_ioas.mock_domain.ioas_iova_alloc ...
# OK iommufd_ioas.mock_domain.ioas_iova_alloc
ok 57 iommufd_ioas.mock_domain.ioas_iova_alloc
# RUN iommufd_ioas.mock_domain.ioas_align_change ...
# OK iommufd_ioas.mock_domain.ioas_align_change
ok 58 iommufd_ioas.mock_domain.ioas_align_change
# RUN iommufd_ioas.mock_domain.copy_sweep ...
# OK iommufd_ioas.mock_domain.copy_sweep
ok 59 iommufd_ioas.mock_domain.copy_sweep
# RUN iommufd_ioas.two_mock_domain.ioas_auto_destroy ...
# OK iommufd_ioas.two_mock_domain.ioas_auto_destroy
ok 60 iommufd_ioas.two_mock_domain.ioas_auto_destroy
# RUN iommufd_ioas.two_mock_domain.ioas_destroy ...
# OK iommufd_ioas.two_mock_domain.ioas_destroy
ok 61 iommufd_ioas.two_mock_domain.ioas_destroy
# RUN iommufd_ioas.two_mock_domain.alloc_hwpt_nested ...
# OK iommufd_ioas.two_mock_domain.alloc_hwpt_nested
ok 62 iommufd_ioas.two_mock_domain.alloc_hwpt_nested
# RUN iommufd_ioas.two_mock_domain.hwpt_attach ...
# OK iommufd_ioas.two_mock_domain.hwpt_attach
ok 63 iommufd_ioas.two_mock_domain.hwpt_attach
# RUN iommufd_ioas.two_mock_domain.ioas_area_destroy ...
# OK iommufd_ioas.two_mock_domain.ioas_area_destroy
ok 64 iommufd_ioas.two_mock_domain.ioas_area_destroy
# RUN iommufd_ioas.two_mock_domain.ioas_area_auto_destroy ...
# OK iommufd_ioas.two_mock_domain.ioas_area_auto_destroy
ok 65 iommufd_ioas.two_mock_domain.ioas_area_auto_destroy
# RUN iommufd_ioas.two_mock_domain.get_hw_info ...
# OK iommufd_ioas.two_mock_domain.get_hw_info
ok 66 iommufd_ioas.two_mock_domain.get_hw_info
# RUN iommufd_ioas.two_mock_domain.area ...
# OK iommufd_ioas.two_mock_domain.area
ok 67 iommufd_ioas.two_mock_domain.area
# RUN iommufd_ioas.two_mock_domain.unmap_fully_contained_areas ...
# OK iommufd_ioas.two_mock_domain.unmap_fully_contained_areas
ok 68 iommufd_ioas.two_mock_domain.unmap_fully_contained_areas
# RUN iommufd_ioas.two_mock_domain.area_auto_iova ...
# OK iommufd_ioas.two_mock_domain.area_auto_iova
ok 69 iommufd_ioas.two_mock_domain.area_auto_iova
# RUN iommufd_ioas.two_mock_domain.area_allowed ...
# OK iommufd_ioas.two_mock_domain.area_allowed
ok 70 iommufd_ioas.two_mock_domain.area_allowed
# RUN iommufd_ioas.two_mock_domain.copy_area ...
# OK iommufd_ioas.two_mock_domain.copy_area
ok 71 iommufd_ioas.two_mock_domain.copy_area
# RUN iommufd_ioas.two_mock_domain.iova_ranges ...
# OK iommufd_ioas.two_mock_domain.iova_ranges
ok 72 iommufd_ioas.two_mock_domain.iova_ranges
# RUN iommufd_ioas.two_mock_domain.access_domain_destory ...
# OK iommufd_ioas.two_mock_domain.access_domain_destory
ok 73 iommufd_ioas.two_mock_domain.access_domain_destory
# RUN iommufd_ioas.two_mock_domain.access_pin ...
# OK iommufd_ioas.two_mock_domain.access_pin
ok 74 iommufd_ioas.two_mock_domain.access_pin
# RUN iommufd_ioas.two_mock_domain.access_pin_unmap ...
# OK iommufd_ioas.two_mock_domain.access_pin_unmap
ok 75 iommufd_ioas.two_mock_domain.access_pin_unmap
# RUN iommufd_ioas.two_mock_domain.access_rw ...
# OK iommufd_ioas.two_mock_domain.access_rw
ok 76 iommufd_ioas.two_mock_domain.access_rw
# RUN iommufd_ioas.two_mock_domain.access_rw_unaligned ...
# OK iommufd_ioas.two_mock_domain.access_rw_unaligned
ok 77 iommufd_ioas.two_mock_domain.access_rw_unaligned
# RUN iommufd_ioas.two_mock_domain.fork_gone ...
# OK iommufd_ioas.two_mock_domain.fork_gone
ok 78 iommufd_ioas.two_mock_domain.fork_gone
# RUN iommufd_ioas.two_mock_domain.fork_present ...
# OK iommufd_ioas.two_mock_domain.fork_present
ok 79 iommufd_ioas.two_mock_domain.fork_present
# RUN iommufd_ioas.two_mock_domain.ioas_option_huge_pages ...
# OK iommufd_ioas.two_mock_domain.ioas_option_huge_pages
ok 80 iommufd_ioas.two_mock_domain.ioas_option_huge_pages
# RUN iommufd_ioas.two_mock_domain.ioas_iova_alloc ...
# OK iommufd_ioas.two_mock_domain.ioas_iova_alloc
ok 81 iommufd_ioas.two_mock_domain.ioas_iova_alloc
# RUN iommufd_ioas.two_mock_domain.ioas_align_change ...
# OK iommufd_ioas.two_mock_domain.ioas_align_change
ok 82 iommufd_ioas.two_mock_domain.ioas_align_change
# RUN iommufd_ioas.two_mock_domain.copy_sweep ...
# OK iommufd_ioas.two_mock_domain.copy_sweep
ok 83 iommufd_ioas.two_mock_domain.copy_sweep
# RUN iommufd_ioas.mock_domain_limit.ioas_auto_destroy ...
# OK iommufd_ioas.mock_domain_limit.ioas_auto_destroy
ok 84 iommufd_ioas.mock_domain_limit.ioas_auto_destroy
# RUN iommufd_ioas.mock_domain_limit.ioas_destroy ...
# OK iommufd_ioas.mock_domain_limit.ioas_destroy
ok 85 iommufd_ioas.mock_domain_limit.ioas_destroy
# RUN iommufd_ioas.mock_domain_limit.alloc_hwpt_nested ...
# OK iommufd_ioas.mock_domain_limit.alloc_hwpt_nested
ok 86 iommufd_ioas.mock_domain_limit.alloc_hwpt_nested
# RUN iommufd_ioas.mock_domain_limit.hwpt_attach ...
# OK iommufd_ioas.mock_domain_limit.hwpt_attach
ok 87 iommufd_ioas.mock_domain_limit.hwpt_attach
# RUN iommufd_ioas.mock_domain_limit.ioas_area_destroy ...
# OK iommufd_ioas.mock_domain_limit.ioas_area_destroy
ok 88 iommufd_ioas.mock_domain_limit.ioas_area_destroy
# RUN iommufd_ioas.mock_domain_limit.ioas_area_auto_destroy ...
# OK iommufd_ioas.mock_domain_limit.ioas_area_auto_destroy
ok 89 iommufd_ioas.mock_domain_limit.ioas_area_auto_destroy
# RUN iommufd_ioas.mock_domain_limit.get_hw_info ...
# OK iommufd_ioas.mock_domain_limit.get_hw_info
ok 90 iommufd_ioas.mock_domain_limit.get_hw_info
# RUN iommufd_ioas.mock_domain_limit.area ...
# OK iommufd_ioas.mock_domain_limit.area
ok 91 iommufd_ioas.mock_domain_limit.area
# RUN iommufd_ioas.mock_domain_limit.unmap_fully_contained_areas ...
# OK iommufd_ioas.mock_domain_limit.unmap_fully_contained_areas
ok 92 iommufd_ioas.mock_domain_limit.unmap_fully_contained_areas
# RUN iommufd_ioas.mock_domain_limit.area_auto_iova ...
# OK iommufd_ioas.mock_domain_limit.area_auto_iova
ok 93 iommufd_ioas.mock_domain_limit.area_auto_iova
# RUN iommufd_ioas.mock_domain_limit.area_allowed ...
# OK iommufd_ioas.mock_domain_limit.area_allowed
ok 94 iommufd_ioas.mock_domain_limit.area_allowed
# RUN iommufd_ioas.mock_domain_limit.copy_area ...
# OK iommufd_ioas.mock_domain_limit.copy_area
ok 95 iommufd_ioas.mock_domain_limit.copy_area
# RUN iommufd_ioas.mock_domain_limit.iova_ranges ...
# OK iommufd_ioas.mock_domain_limit.iova_ranges
ok 96 iommufd_ioas.mock_domain_limit.iova_ranges
# RUN iommufd_ioas.mock_domain_limit.access_domain_destory ...
# OK iommufd_ioas.mock_domain_limit.access_domain_destory
ok 97 iommufd_ioas.mock_domain_limit.access_domain_destory
# RUN iommufd_ioas.mock_domain_limit.access_pin ...
# OK iommufd_ioas.mock_domain_limit.access_pin
ok 98 iommufd_ioas.mock_domain_limit.access_pin
# RUN iommufd_ioas.mock_domain_limit.access_pin_unmap ...
# OK iommufd_ioas.mock_domain_limit.access_pin_unmap
ok 99 iommufd_ioas.mock_domain_limit.access_pin_unmap
# RUN iommufd_ioas.mock_domain_limit.access_rw ...
# OK iommufd_ioas.mock_domain_limit.access_rw
ok 100 iommufd_ioas.mock_domain_limit.access_rw
# RUN iommufd_ioas.mock_domain_limit.access_rw_unaligned ...
# OK iommufd_ioas.mock_domain_limit.access_rw_unaligned
ok 101 iommufd_ioas.mock_domain_limit.access_rw_unaligned
# RUN iommufd_ioas.mock_domain_limit.fork_gone ...
# OK iommufd_ioas.mock_domain_limit.fork_gone
ok 102 iommufd_ioas.mock_domain_limit.fork_gone
# RUN iommufd_ioas.mock_domain_limit.fork_present ...
# OK iommufd_ioas.mock_domain_limit.fork_present
ok 103 iommufd_ioas.mock_domain_limit.fork_present
# RUN iommufd_ioas.mock_domain_limit.ioas_option_huge_pages ...
# OK iommufd_ioas.mock_domain_limit.ioas_option_huge_pages
ok 104 iommufd_ioas.mock_domain_limit.ioas_option_huge_pages
# RUN iommufd_ioas.mock_domain_limit.ioas_iova_alloc ...
# OK iommufd_ioas.mock_domain_limit.ioas_iova_alloc
ok 105 iommufd_ioas.mock_domain_limit.ioas_iova_alloc
# RUN iommufd_ioas.mock_domain_limit.ioas_align_change ...
# OK iommufd_ioas.mock_domain_limit.ioas_align_change
ok 106 iommufd_ioas.mock_domain_limit.ioas_align_change
# RUN iommufd_ioas.mock_domain_limit.copy_sweep ...
# OK iommufd_ioas.mock_domain_limit.copy_sweep
ok 107 iommufd_ioas.mock_domain_limit.copy_sweep
# RUN iommufd_mock_domain.one_domain.basic ...
# OK iommufd_mock_domain.one_domain.basic
ok 108 iommufd_mock_domain.one_domain.basic
# RUN iommufd_mock_domain.one_domain.ro_unshare ...
# OK iommufd_mock_domain.one_domain.ro_unshare
ok 109 iommufd_mock_domain.one_domain.ro_unshare
# RUN iommufd_mock_domain.one_domain.all_aligns ...
# OK iommufd_mock_domain.one_domain.all_aligns
ok 110 iommufd_mock_domain.one_domain.all_aligns
# RUN iommufd_mock_domain.one_domain.all_aligns_copy ...
# OK iommufd_mock_domain.one_domain.all_aligns_copy
ok 111 iommufd_mock_domain.one_domain.all_aligns_copy
# RUN iommufd_mock_domain.one_domain.user_copy ...
# OK iommufd_mock_domain.one_domain.user_copy
ok 112 iommufd_mock_domain.one_domain.user_copy
# RUN iommufd_mock_domain.one_domain.replace ...
# OK iommufd_mock_domain.one_domain.replace
ok 113 iommufd_mock_domain.one_domain.replace
# RUN iommufd_mock_domain.one_domain.alloc_hwpt ...
# OK iommufd_mock_domain.one_domain.alloc_hwpt
ok 114 iommufd_mock_domain.one_domain.alloc_hwpt
# RUN iommufd_mock_domain.two_domains.basic ...
# OK iommufd_mock_domain.two_domains.basic
ok 115 iommufd_mock_domain.two_domains.basic
# RUN iommufd_mock_domain.two_domains.ro_unshare ...
# OK iommufd_mock_domain.two_domains.ro_unshare
ok 116 iommufd_mock_domain.two_domains.ro_unshare
# RUN iommufd_mock_domain.two_domains.all_aligns ...
# OK iommufd_mock_domain.two_domains.all_aligns
ok 117 iommufd_mock_domain.two_domains.all_aligns
# RUN iommufd_mock_domain.two_domains.all_aligns_copy ...
# OK iommufd_mock_domain.two_domains.all_aligns_copy
ok 118 iommufd_mock_domain.two_domains.all_aligns_copy
# RUN iommufd_mock_domain.two_domains.user_copy ...
# OK iommufd_mock_domain.two_domains.user_copy
ok 119 iommufd_mock_domain.two_domains.user_copy
# RUN iommufd_mock_domain.two_domains.replace ...
# OK iommufd_mock_domain.two_domains.replace
ok 120 iommufd_mock_domain.two_domains.replace
# RUN iommufd_mock_domain.two_domains.alloc_hwpt ...
# OK iommufd_mock_domain.two_domains.alloc_hwpt
ok 121 iommufd_mock_domain.two_domains.alloc_hwpt
# RUN iommufd_mock_domain.one_domain_hugepage.basic ...
# OK iommufd_mock_domain.one_domain_hugepage.basic
ok 122 iommufd_mock_domain.one_domain_hugepage.basic
# RUN iommufd_mock_domain.one_domain_hugepage.ro_unshare ...
# OK iommufd_mock_domain.one_domain_hugepage.ro_unshare
ok 123 iommufd_mock_domain.one_domain_hugepage.ro_unshare
# RUN iommufd_mock_domain.one_domain_hugepage.all_aligns ...
# OK iommufd_mock_domain.one_domain_hugepage.all_aligns
ok 124 iommufd_mock_domain.one_domain_hugepage.all_aligns
# RUN iommufd_mock_domain.one_domain_hugepage.all_aligns_copy ...
# OK iommufd_mock_domain.one_domain_hugepage.all_aligns_copy
ok 125 iommufd_mock_domain.one_domain_hugepage.all_aligns_copy
# RUN iommufd_mock_domain.one_domain_hugepage.user_copy ...
# OK iommufd_mock_domain.one_domain_hugepage.user_copy
ok 126 iommufd_mock_domain.one_domain_hugepage.user_copy
# RUN iommufd_mock_domain.one_domain_hugepage.replace ...
# OK iommufd_mock_domain.one_domain_hugepage.replace
ok 127 iommufd_mock_domain.one_domain_hugepage.replace
# RUN iommufd_mock_domain.one_domain_hugepage.alloc_hwpt ...
# OK iommufd_mock_domain.one_domain_hugepage.alloc_hwpt
ok 128 iommufd_mock_domain.one_domain_hugepage.alloc_hwpt
# RUN iommufd_mock_domain.two_domains_hugepage.basic ...
# OK iommufd_mock_domain.two_domains_hugepage.basic
ok 129 iommufd_mock_domain.two_domains_hugepage.basic
# RUN iommufd_mock_domain.two_domains_hugepage.ro_unshare ...
# OK iommufd_mock_domain.two_domains_hugepage.ro_unshare
ok 130 iommufd_mock_domain.two_domains_hugepage.ro_unshare
# RUN iommufd_mock_domain.two_domains_hugepage.all_aligns ...
# OK iommufd_mock_domain.two_domains_hugepage.all_aligns
ok 131 iommufd_mock_domain.two_domains_hugepage.all_aligns
# RUN iommufd_mock_domain.two_domains_hugepage.all_aligns_copy ...
# OK iommufd_mock_domain.two_domains_hugepage.all_aligns_copy
ok 132 iommufd_mock_domain.two_domains_hugepage.all_aligns_copy
# RUN iommufd_mock_domain.two_domains_hugepage.user_copy ...
# OK iommufd_mock_domain.two_domains_hugepage.user_copy
ok 133 iommufd_mock_domain.two_domains_hugepage.user_copy
# RUN iommufd_mock_domain.two_domains_hugepage.replace ...
# OK iommufd_mock_domain.two_domains_hugepage.replace
ok 134 iommufd_mock_domain.two_domains_hugepage.replace
# RUN iommufd_mock_domain.two_domains_hugepage.alloc_hwpt ...
# OK iommufd_mock_domain.two_domains_hugepage.alloc_hwpt
ok 135 iommufd_mock_domain.two_domains_hugepage.alloc_hwpt
# RUN iommufd_dirty_tracking.domain_dirty128k.enforce_dirty ...
# OK iommufd_dirty_tracking.domain_dirty128k.enforce_dirty
ok 136 iommufd_dirty_tracking.domain_dirty128k.enforce_dirty
# RUN iommufd_dirty_tracking.domain_dirty128k.set_dirty_tracking ...
# OK iommufd_dirty_tracking.domain_dirty128k.set_dirty_tracking
ok 137 iommufd_dirty_tracking.domain_dirty128k.set_dirty_tracking
# RUN iommufd_dirty_tracking.domain_dirty128k.device_dirty_capability ...
# OK iommufd_dirty_tracking.domain_dirty128k.device_dirty_capability
ok 138 iommufd_dirty_tracking.domain_dirty128k.device_dirty_capability
# 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.enforce_dirty ...
# OK iommufd_dirty_tracking.domain_dirty256k.enforce_dirty
ok 141 iommufd_dirty_tracking.domain_dirty256k.enforce_dirty
# RUN iommufd_dirty_tracking.domain_dirty256k.set_dirty_tracking ...
# OK iommufd_dirty_tracking.domain_dirty256k.set_dirty_tracking
ok 142 iommufd_dirty_tracking.domain_dirty256k.set_dirty_tracking
# RUN iommufd_dirty_tracking.domain_dirty256k.device_dirty_capability ...
# OK iommufd_dirty_tracking.domain_dirty256k.device_dirty_capability
ok 143 iommufd_dirty_tracking.domain_dirty256k.device_dirty_capability
# 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.enforce_dirty ...
# OK iommufd_dirty_tracking.domain_dirty640k.enforce_dirty
ok 146 iommufd_dirty_tracking.domain_dirty640k.enforce_dirty
# RUN iommufd_dirty_tracking.domain_dirty640k.set_dirty_tracking ...
# OK iommufd_dirty_tracking.domain_dirty640k.set_dirty_tracking
ok 147 iommufd_dirty_tracking.domain_dirty640k.set_dirty_tracking
# RUN iommufd_dirty_tracking.domain_dirty640k.device_dirty_capability ...
# OK iommufd_dirty_tracking.domain_dirty640k.device_dirty_capability
ok 148 iommufd_dirty_tracking.domain_dirty640k.device_dirty_capability
# 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.enforce_dirty ...
# OK iommufd_dirty_tracking.domain_dirty128M.enforce_dirty
ok 151 iommufd_dirty_tracking.domain_dirty128M.enforce_dirty
# RUN iommufd_dirty_tracking.domain_dirty128M.set_dirty_tracking ...
# OK iommufd_dirty_tracking.domain_dirty128M.set_dirty_tracking
ok 152 iommufd_dirty_tracking.domain_dirty128M.set_dirty_tracking
# RUN iommufd_dirty_tracking.domain_dirty128M.device_dirty_capability ...
# OK iommufd_dirty_tracking.domain_dirty128M.device_dirty_capability
ok 153 iommufd_dirty_tracking.domain_dirty128M.device_dirty_capability
# RUN iommufd_dirty_tracking.domain_dirty128M.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.get_dirty_bitmap
not ok 154 iommufd_dirty_tracking.domain_dirty128M.get_dirty_bitmap
# RUN iommufd_dirty_tracking.domain_dirty128M.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.get_dirty_bitmap_no_clear
not ok 155 iommufd_dirty_tracking.domain_dirty128M.get_dirty_bitmap_no_clear
# RUN iommufd_dirty_tracking.domain_dirty128M_huge.enforce_dirty ...
# OK iommufd_dirty_tracking.domain_dirty128M_huge.enforce_dirty
ok 156 iommufd_dirty_tracking.domain_dirty128M_huge.enforce_dirty
# RUN iommufd_dirty_tracking.domain_dirty128M_huge.set_dirty_tracking ...
# OK iommufd_dirty_tracking.domain_dirty128M_huge.set_dirty_tracking
ok 157 iommufd_dirty_tracking.domain_dirty128M_huge.set_dirty_tracking
# RUN iommufd_dirty_tracking.domain_dirty128M_huge.device_dirty_capability ...
# OK iommufd_dirty_tracking.domain_dirty128M_huge.device_dirty_capability
ok 158 iommufd_dirty_tracking.domain_dirty128M_huge.device_dirty_capability
# 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.enforce_dirty ...
# OK iommufd_dirty_tracking.domain_dirty256M.enforce_dirty
ok 161 iommufd_dirty_tracking.domain_dirty256M.enforce_dirty
# RUN iommufd_dirty_tracking.domain_dirty256M.set_dirty_tracking ...
# OK iommufd_dirty_tracking.domain_dirty256M.set_dirty_tracking
ok 162 iommufd_dirty_tracking.domain_dirty256M.set_dirty_tracking
# RUN iommufd_dirty_tracking.domain_dirty256M.device_dirty_capability ...
# OK iommufd_dirty_tracking.domain_dirty256M.device_dirty_capability
ok 163 iommufd_dirty_tracking.domain_dirty256M.device_dirty_capability
# 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.enforce_dirty ...
# OK iommufd_dirty_tracking.domain_dirty256M_huge.enforce_dirty
ok 166 iommufd_dirty_tracking.domain_dirty256M_huge.enforce_dirty
# RUN iommufd_dirty_tracking.domain_dirty256M_huge.set_dirty_tracking ...
# OK iommufd_dirty_tracking.domain_dirty256M_huge.set_dirty_tracking
ok 167 iommufd_dirty_tracking.domain_dirty256M_huge.set_dirty_tracking
# RUN iommufd_dirty_tracking.domain_dirty256M_huge.device_dirty_capability ...
# OK iommufd_dirty_tracking.domain_dirty256M_huge.device_dirty_capability
ok 168 iommufd_dirty_tracking.domain_dirty256M_huge.device_dirty_capability
# 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
# RUN vfio_compat_mock_domain.Ver1v2.simple_close ...
# OK vfio_compat_mock_domain.Ver1v2.simple_close
ok 171 vfio_compat_mock_domain.Ver1v2.simple_close
# RUN vfio_compat_mock_domain.Ver1v2.option_huge_pages ...
# OK vfio_compat_mock_domain.Ver1v2.option_huge_pages
ok 172 vfio_compat_mock_domain.Ver1v2.option_huge_pages
# RUN vfio_compat_mock_domain.Ver1v2.get_info ...
# OK vfio_compat_mock_domain.Ver1v2.get_info
ok 173 vfio_compat_mock_domain.Ver1v2.get_info
# RUN vfio_compat_mock_domain.Ver1v2.map ...
# OK vfio_compat_mock_domain.Ver1v2.map
ok 174 vfio_compat_mock_domain.Ver1v2.map
# RUN vfio_compat_mock_domain.Ver1v2.huge_map ...
# OK vfio_compat_mock_domain.Ver1v2.huge_map
ok 175 vfio_compat_mock_domain.Ver1v2.huge_map
# RUN vfio_compat_mock_domain.Ver1v0.simple_close ...
# OK vfio_compat_mock_domain.Ver1v0.simple_close
ok 176 vfio_compat_mock_domain.Ver1v0.simple_close
# RUN vfio_compat_mock_domain.Ver1v0.option_huge_pages ...
# OK vfio_compat_mock_domain.Ver1v0.option_huge_pages
ok 177 vfio_compat_mock_domain.Ver1v0.option_huge_pages
# RUN vfio_compat_mock_domain.Ver1v0.get_info ...
# OK vfio_compat_mock_domain.Ver1v0.get_info
ok 178 vfio_compat_mock_domain.Ver1v0.get_info
# RUN vfio_compat_mock_domain.Ver1v0.map ...
# OK vfio_compat_mock_domain.Ver1v0.map
ok 179 vfio_compat_mock_domain.Ver1v0.map
# RUN vfio_compat_mock_domain.Ver1v0.huge_map ...
# OK vfio_compat_mock_domain.Ver1v0.huge_map
ok 180 vfio_compat_mock_domain.Ver1v0.huge_map
# FAILED: 166 / 180 tests passed.
# Totals: pass:166 fail:14 xfail:0 xpass:0 skip:0 error:0