summaryrefslogtreecommitdiff
path: root/tests/kms_lease.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2019-02-28 15:19:17 +0100
committerDaniel Vetter <daniel.vetter@ffwll.ch>2019-03-28 10:08:21 +0100
commit2fe56af9d20ef504d8aa1bc511267225d8d0c0c3 (patch)
treeae21b4b7fdf54a5b2ebecd2115282e4f7801d5d4 /tests/kms_lease.c
parent70a6467b3615f49934a528a1eb6c96d0686e9f17 (diff)
tests/kms_lease: Handle new errno from idr/xa double insert
The conversion from idr to xarray will change the errno for already inserted object ids from ENOSPC to EBUSY. Allow both. Cc: Matthew Wilcox <willy@infradead.org> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Diffstat (limited to 'tests/kms_lease.c')
-rw-r--r--tests/kms_lease.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/tests/kms_lease.c b/tests/kms_lease.c
index c2671d57..676daa16 100644
--- a/tests/kms_lease.c
+++ b/tests/kms_lease.c
@@ -798,12 +798,16 @@ static void run_test(data_t *data, void (*testfunc)(data_t *))
"no valid crtc/connector combinations found\n");
}
+#define assert_double_id_err(ret) \
+ igt_assert_f((ret) == -EBUSY || (ret) == -ENOSPC, \
+ "wrong return code %i, %s\n", ret, \
+ strerror(ret))
static void invalid_create_leases(data_t *data)
{
uint32_t object_ids[4];
struct local_drm_mode_create_lease mcl;
drmModeRes *resources;
- int tmp_fd;
+ int tmp_fd, ret;
/* empty lease */
mcl.object_ids = 0;
@@ -882,7 +886,8 @@ static void invalid_create_leases(data_t *data)
object_ids[3] = object_ids[2];
mcl.object_count = 4;
/* Note: the ENOSPC is from idr double-insertion failing */
- igt_assert_eq(create_lease(data->master.fd, &mcl), -ENOSPC);
+ ret = create_lease(data->master.fd, &mcl);
+ assert_double_id_err(ret);
/* no encoder leasing */
resources = drmModeGetResources(data->master.fd);
@@ -1095,7 +1100,7 @@ static void implicit_plane_lease(data_t *data)
uint32_t object_ids[3];
struct local_drm_mode_create_lease mcl;
struct local_drm_mode_get_lease mgl;
-
+ int ret;
uint32_t cursor_id = igt_pipe_get_plane_type(&data->master.display.pipes[0],
DRM_PLANE_TYPE_CURSOR)->drm_plane->plane_id;
@@ -1128,11 +1133,13 @@ static void implicit_plane_lease(data_t *data)
/* check that implicit lease doesn't lead to confusion when
* explicitly adding primary plane */
mcl.object_count = 3;
- igt_assert_eq(create_lease(data->master.fd, &mcl), -ENOSPC);
+ ret = create_lease(data->master.fd, &mcl);
+ assert_double_id_err(ret);
/* same for the cursor */
object_ids[2] = cursor_id;
- igt_assert_eq(create_lease(data->master.fd, &mcl), -ENOSPC);
+ ret = create_lease(data->master.fd, &mcl);
+ assert_double_id_err(ret);
drmSetClientCap(data->master.fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1);
}