diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2019-02-28 15:19:17 +0100 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2019-03-28 10:08:21 +0100 |
commit | 2fe56af9d20ef504d8aa1bc511267225d8d0c0c3 (patch) | |
tree | ae21b4b7fdf54a5b2ebecd2115282e4f7801d5d4 | |
parent | 70a6467b3615f49934a528a1eb6c96d0686e9f17 (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>
-rw-r--r-- | tests/kms_lease.c | 17 |
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); } |