@@ -58,8 +58,9 @@ static int sanitycheck(void *arg)
5858 return r ;
5959}
6060
61- static int test_signaling (void * arg , enum dma_resv_usage usage )
61+ static int test_signaling (void * arg )
6262{
63+ enum dma_resv_usage usage = (unsigned long )arg ;
6364 struct dma_resv resv ;
6465 struct dma_fence * f ;
6566 int r ;
@@ -81,11 +82,7 @@ static int test_signaling(void *arg, enum dma_resv_usage usage)
8182 goto err_unlock ;
8283 }
8384
84- if (usage >= DMA_RESV_USAGE_READ )
85- dma_resv_add_shared_fence (& resv , f );
86- else
87- dma_resv_add_excl_fence (& resv , f );
88-
85+ dma_resv_add_fence (& resv , f , usage );
8986 if (dma_resv_test_signaled (& resv , usage )) {
9087 pr_err ("Resv unexpectedly signaled\n" );
9188 r = - EINVAL ;
@@ -105,18 +102,9 @@ static int test_signaling(void *arg, enum dma_resv_usage usage)
105102 return r ;
106103}
107104
108- static int test_excl_signaling (void * arg )
109- {
110- return test_signaling (arg , DMA_RESV_USAGE_WRITE );
111- }
112-
113- static int test_shared_signaling (void * arg )
114- {
115- return test_signaling (arg , DMA_RESV_USAGE_READ );
116- }
117-
118- static int test_for_each (void * arg , enum dma_resv_usage usage )
105+ static int test_for_each (void * arg )
119106{
107+ enum dma_resv_usage usage = (unsigned long )arg ;
120108 struct dma_resv_iter cursor ;
121109 struct dma_fence * f , * fence ;
122110 struct dma_resv resv ;
@@ -139,10 +127,7 @@ static int test_for_each(void *arg, enum dma_resv_usage usage)
139127 goto err_unlock ;
140128 }
141129
142- if (usage >= DMA_RESV_USAGE_READ )
143- dma_resv_add_shared_fence (& resv , f );
144- else
145- dma_resv_add_excl_fence (& resv , f );
130+ dma_resv_add_fence (& resv , f , usage );
146131
147132 r = - ENOENT ;
148133 dma_resv_for_each_fence (& cursor , & resv , usage , fence ) {
@@ -156,8 +141,7 @@ static int test_for_each(void *arg, enum dma_resv_usage usage)
156141 r = - EINVAL ;
157142 goto err_unlock ;
158143 }
159- if (dma_resv_iter_is_exclusive (& cursor ) !=
160- (usage >= DMA_RESV_USAGE_READ )) {
144+ if (dma_resv_iter_usage (& cursor ) != usage ) {
161145 pr_err ("Unexpected fence usage\n" );
162146 r = - EINVAL ;
163147 goto err_unlock ;
@@ -177,18 +161,9 @@ static int test_for_each(void *arg, enum dma_resv_usage usage)
177161 return r ;
178162}
179163
180- static int test_excl_for_each (void * arg )
181- {
182- return test_for_each (arg , DMA_RESV_USAGE_WRITE );
183- }
184-
185- static int test_shared_for_each (void * arg )
186- {
187- return test_for_each (arg , DMA_RESV_USAGE_READ );
188- }
189-
190- static int test_for_each_unlocked (void * arg , enum dma_resv_usage usage )
164+ static int test_for_each_unlocked (void * arg )
191165{
166+ enum dma_resv_usage usage = (unsigned long )arg ;
192167 struct dma_resv_iter cursor ;
193168 struct dma_fence * f , * fence ;
194169 struct dma_resv resv ;
@@ -212,10 +187,7 @@ static int test_for_each_unlocked(void *arg, enum dma_resv_usage usage)
212187 goto err_free ;
213188 }
214189
215- if (usage >= DMA_RESV_USAGE_READ )
216- dma_resv_add_shared_fence (& resv , f );
217- else
218- dma_resv_add_excl_fence (& resv , f );
190+ dma_resv_add_fence (& resv , f , usage );
219191 dma_resv_unlock (& resv );
220192
221193 r = - ENOENT ;
@@ -235,8 +207,7 @@ static int test_for_each_unlocked(void *arg, enum dma_resv_usage usage)
235207 r = - EINVAL ;
236208 goto err_iter_end ;
237209 }
238- if (dma_resv_iter_is_exclusive (& cursor ) !=
239- (usage >= DMA_RESV_USAGE_READ )) {
210+ if (dma_resv_iter_usage (& cursor ) != usage ) {
240211 pr_err ("Unexpected fence usage\n" );
241212 r = - EINVAL ;
242213 goto err_iter_end ;
@@ -262,18 +233,9 @@ static int test_for_each_unlocked(void *arg, enum dma_resv_usage usage)
262233 return r ;
263234}
264235
265- static int test_excl_for_each_unlocked (void * arg )
266- {
267- return test_for_each_unlocked (arg , DMA_RESV_USAGE_WRITE );
268- }
269-
270- static int test_shared_for_each_unlocked (void * arg )
271- {
272- return test_for_each_unlocked (arg , DMA_RESV_USAGE_READ );
273- }
274-
275- static int test_get_fences (void * arg , enum dma_resv_usage usage )
236+ static int test_get_fences (void * arg )
276237{
238+ enum dma_resv_usage usage = (unsigned long )arg ;
277239 struct dma_fence * f , * * fences = NULL ;
278240 struct dma_resv resv ;
279241 int r , i ;
@@ -296,10 +258,7 @@ static int test_get_fences(void *arg, enum dma_resv_usage usage)
296258 goto err_resv ;
297259 }
298260
299- if (usage >= DMA_RESV_USAGE_READ )
300- dma_resv_add_shared_fence (& resv , f );
301- else
302- dma_resv_add_excl_fence (& resv , f );
261+ dma_resv_add_fence (& resv , f , usage );
303262 dma_resv_unlock (& resv );
304263
305264 r = dma_resv_get_fences (& resv , usage , & i , & fences );
@@ -324,30 +283,24 @@ static int test_get_fences(void *arg, enum dma_resv_usage usage)
324283 return r ;
325284}
326285
327- static int test_excl_get_fences (void * arg )
328- {
329- return test_get_fences (arg , DMA_RESV_USAGE_WRITE );
330- }
331-
332- static int test_shared_get_fences (void * arg )
333- {
334- return test_get_fences (arg , DMA_RESV_USAGE_READ );
335- }
336-
337286int dma_resv (void )
338287{
339288 static const struct subtest tests [] = {
340289 SUBTEST (sanitycheck ),
341- SUBTEST (test_excl_signaling ),
342- SUBTEST (test_shared_signaling ),
343- SUBTEST (test_excl_for_each ),
344- SUBTEST (test_shared_for_each ),
345- SUBTEST (test_excl_for_each_unlocked ),
346- SUBTEST (test_shared_for_each_unlocked ),
347- SUBTEST (test_excl_get_fences ),
348- SUBTEST (test_shared_get_fences ),
290+ SUBTEST (test_signaling ),
291+ SUBTEST (test_for_each ),
292+ SUBTEST (test_for_each_unlocked ),
293+ SUBTEST (test_get_fences ),
349294 };
295+ enum dma_resv_usage usage ;
296+ int r ;
350297
351298 spin_lock_init (& fence_lock );
352- return subtests (tests , NULL );
299+ for (usage = DMA_RESV_USAGE_WRITE ; usage <= DMA_RESV_USAGE_READ ;
300+ ++ usage ) {
301+ r = subtests (tests , (void * )(unsigned long )usage );
302+ if (r )
303+ return r ;
304+ }
305+ return 0 ;
353306}
0 commit comments