[Intel-gfx] [PATCH i-g-t 4/4] lib/kms: Check usage of for_each_*

Daniel Vetter daniel.vetter at ffwll.ch
Mon Aug 14 09:32:07 UTC 2017


Except for for_each_pipe_static they cannot be used outside of
fixtures/subtest. Assert this.

This will make the broken version of kms_ccs assert when run, which
also would have made $make check fail.

Cc: Daniel Stone <daniels at collabora.com>
Cc: Jason Ekstrand <jason at jlekstrand.net>
Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
---
 lib/igt_kms.h | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index b28fe8c564c5..96713c24b624 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -31,6 +31,7 @@
 #include <stdbool.h>
 #include <stdint.h>
 #include <stddef.h>
+#include <assert.h>
 
 #include <xf86drmMode.h>
 
@@ -457,7 +458,7 @@ static inline bool igt_output_is_connected(igt_output_t *output)
  * This for loop iterates over all outputs.
  */
 #define for_each_connected_output(display, output)		\
-	for (int i__ = 0;  i__ < (display)->n_outputs; i__++)	\
+	for (int i__ = 0;  assert(igt_can_fail()), i__ < (display)->n_outputs; i__++)	\
 		for_each_if (((output = &(display)->outputs[i__]), \
 			      igt_output_is_connected(output)))
 
@@ -485,7 +486,7 @@ static inline bool igt_output_is_connected(igt_output_t *output)
  * Used #for_each_pipe_static instead.
  */
 #define for_each_pipe(display, pipe)					\
-	for (pipe = 0; pipe < igt_display_get_n_pipes(display); pipe++)
+	for (pipe = 0; assert(igt_can_fail()), pipe < igt_display_get_n_pipes(display); pipe++)
 
 /**
  * for_each_pipe_with_valid_output:
@@ -498,7 +499,7 @@ static inline bool igt_output_is_connected(igt_output_t *output)
  */
 #define for_each_pipe_with_valid_output(display, pipe, output) \
 	for (int con__ = pipe = 0; \
-	     pipe < igt_display_get_n_pipes((display)) && con__ < (display)->n_outputs; \
+	     assert(igt_can_fail()), pipe < igt_display_get_n_pipes((display)) && con__ < (display)->n_outputs; \
 	     con__ = (con__ + 1 < (display)->n_outputs) ? con__ + 1 : (pipe = pipe + 1, 0)) \
 		for_each_if (((output = &(display)->outputs[con__]), \
 			     igt_pipe_connector_valid(pipe, output)))
@@ -518,7 +519,7 @@ static inline bool igt_output_is_connected(igt_output_t *output)
 		for_each_if (igt_pipe_connector_valid(pipe, output))
 
 #define for_each_plane_on_pipe(display, pipe, plane)			\
-	for (int j__ = 0; (plane) = &(display)->pipes[(pipe)].planes[j__], \
+	for (int j__ = 0; assert(igt_can_fail()), (plane) = &(display)->pipes[(pipe)].planes[j__], \
 		     j__ < (display)->pipes[(pipe)].n_planes; j__++)
 
 #define IGT_FIXED(i,f)	((i) << 16 | (f))
-- 
2.5.5



More information about the Intel-gfx mailing list