summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2016-04-22 20:47:05 +0200
committerDaniel Vetter <daniel.vetter@ffwll.ch>2016-06-07 15:52:20 +0200
commitec26d970825ad54a69478c65b854879e6aaafc37 (patch)
treecfab7dbb650d476fa61a2f624da47d5d7a0a29ae
parentf5d370cbd6c4fbd3bdf9ec0ea0addb4e42b30c1d (diff)
tests/kms_addfb_basic: Add invalid tests to set fb props
There's no properties on fb modeset objects, bug bugs in the kernel when trying to use those ioctls in such an invalid way. Cc: Dave Airlie <airlied@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--tests/kms_addfb_basic.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
index cdfcd179..29fbe817 100644
--- a/tests/kms_addfb_basic.c
+++ b/tests/kms_addfb_basic.c
@@ -475,6 +475,70 @@ static void addfb25_ytile(int fd)
}
}
+static void prop_tests(int fd)
+{
+ struct drm_mode_fb_cmd2 f = {};
+ struct drm_mode_obj_get_properties get_props = {};
+ struct drm_mode_obj_set_property set_prop = {};
+ uint64_t prop, prop_val;
+
+ f.width = 1024;
+ f.height = 1024;
+ f.pixel_format = DRM_FORMAT_XRGB8888;
+ f.pitches[0] = 1024*4;
+
+ igt_fixture {
+ gem_bo = igt_create_bo_with_dimensions(fd, 1024, 1024,
+ DRM_FORMAT_XRGB8888, 0, 0, NULL, NULL, NULL);
+ igt_assert(gem_bo);
+
+ f.handles[0] = gem_bo;
+
+ igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &f) == 0);
+ }
+
+ get_props.props_ptr = (uintptr_t) &prop;
+ get_props.prop_values_ptr = (uintptr_t) &prop_val;
+ get_props.count_props = 1;
+ get_props.obj_id = f.fb_id;
+
+ igt_subtest("invalid-get-prop-any") {
+ get_props.obj_type = 0; /* DRM_MODE_OBJECT_ANY */
+
+ igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_OBJ_GETPROPERTIES,
+ &get_props) == -1 && errno == EINVAL);
+ }
+
+ igt_subtest("invalid-get-prop") {
+ get_props.obj_type = DRM_MODE_OBJECT_FB;
+
+ igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_OBJ_GETPROPERTIES,
+ &get_props) == -1 && errno == EINVAL);
+ }
+
+ set_prop.value = 0;
+ set_prop.prop_id = 1;
+ set_prop.obj_id = f.fb_id;
+
+ igt_subtest("invalid-set-prop-any") {
+ set_prop.obj_type = 0; /* DRM_MODE_OBJECT_ANY */
+
+ igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_OBJ_SETPROPERTY,
+ &set_prop) == -1 && errno == EINVAL);
+ }
+
+ igt_subtest("invalid-set-prop") {
+ set_prop.obj_type = DRM_MODE_OBJECT_FB;
+
+ igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_OBJ_SETPROPERTY,
+ &set_prop) == -1 && errno == EINVAL);
+ }
+
+ igt_fixture
+ igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_RMFB, &f.fb_id) == 0);
+
+}
+
int fd;
igt_main
@@ -494,6 +558,8 @@ igt_main
tiling_tests(fd);
+ prop_tests(fd);
+
igt_fixture
close(fd);
}