From: Muhammad Usama Anjum <usama.anjum@collabora.com>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Muhammad Usama Anjum <usama.anjum@collabora.com>,
kernel@collabora.com, iommu@lists.linux.dev,
linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org,
Kevin Tian <kevin.tian@intel.com>, Shuah Khan <shuah@kernel.org>
Subject: Re: [PATCH] selftests: iommu: add config needed for iommufd_fail_nth
Date: Wed, 27 Mar 2024 15:14:25 +0500 [thread overview]
Message-ID: <56cc8b9e-c1cf-4520-ba45-b1237e8b7b64@collabora.com> (raw)
In-Reply-To: <20240326150340.GE8419@ziepe.ca>
[-- Attachment #1: Type: text/plain, Size: 1246 bytes --]
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
[-- Attachment #2: iommufd_arm.log --]
[-- Type: text/x-log, Size: 34970 bytes --]
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
next prev parent reply other threads:[~2024-03-27 10:14 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-25 9:00 [PATCH] selftests: iommu: add config needed for iommufd_fail_nth Muhammad Usama Anjum
2024-03-25 9:11 ` Muhammad Usama Anjum
2024-04-05 0:10 ` Jason Gunthorpe
2024-04-14 14:39 ` Muhammad Usama Anjum
2024-04-15 16:09 ` Jason Gunthorpe
2024-03-26 13:09 ` Muhammad Usama Anjum
2024-03-26 15:03 ` Jason Gunthorpe
2024-03-27 10:14 ` Muhammad Usama Anjum [this message]
2024-03-27 11:49 ` Jason Gunthorpe
2024-03-27 14:59 ` Joao Martins
2024-03-27 17:49 ` Muhammad Usama Anjum
2024-03-27 18:09 ` Joao Martins
2024-03-27 18:17 ` Muhammad Usama Anjum
2024-03-27 18:33 ` Joao Martins
2024-03-27 18:20 ` Jason Gunthorpe
2024-03-27 18:34 ` Joao Martins
2024-03-27 20:13 ` Muhammad Usama Anjum
2024-04-04 11:48 ` Muhammad Usama Anjum
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=56cc8b9e-c1cf-4520-ba45-b1237e8b7b64@collabora.com \
--to=usama.anjum@collabora.com \
--cc=iommu@lists.linux.dev \
--cc=jgg@ziepe.ca \
--cc=kernel@collabora.com \
--cc=kevin.tian@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=shuah@kernel.org \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox