blob: fd6d988b5e63621974dff6c3504f075c0ec2da9a [file] [log] [blame]
Ben Widawskyf7e356d2012-06-14 10:00:57 -07001/*
2 * Copyright © 2012 Intel Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
13 * Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21 * IN THE SOFTWARE.
22 *
23 * Authors:
24 * Ben Widawsky <ben@bwidawsk.net>
25 *
26 */
27
28/*
29 * Negative test cases for destroy contexts
30 */
31
Thomas Wood804e11f2015-08-17 17:57:43 +010032#include "igt.h"
Ben Widawskyf7e356d2012-06-14 10:00:57 -070033#include <stdio.h>
34#include <string.h>
Daniel Vetter254f19b2014-03-22 21:29:01 +010035#include <errno.h>
36
Ben Widawskyf7e356d2012-06-14 10:00:57 -070037
Thomas Woodb2ac2642014-11-28 11:02:44 +000038IGT_TEST_DESCRIPTION("Negative test cases for destroy contexts.");
39
Daniel Vetter7a03ddf2015-02-06 23:06:00 +010040uint32_t ctx_id;
41int fd;
42
43igt_main
Ben Widawskyf7e356d2012-06-14 10:00:57 -070044{
Daniel Vetter7a03ddf2015-02-06 23:06:00 +010045 igt_fixture {
Micah Fedkec81d2932015-07-22 21:54:02 +000046 fd = drm_open_driver_render(DRIVER_INTEL);
Ben Widawskyf7e356d2012-06-14 10:00:57 -070047
Daniel Vetter7a03ddf2015-02-06 23:06:00 +010048 ctx_id = gem_context_create(fd);
49 /* Make sure a proper destroy works first */
50 gem_context_destroy(fd, ctx_id);
51 }
Ben Widawskyf7e356d2012-06-14 10:00:57 -070052
53 /* try double destroy */
Daniel Vetter7a03ddf2015-02-06 23:06:00 +010054 igt_subtest("double-destroy") {
55 ctx_id = gem_context_create(fd);
56 gem_context_destroy(fd, ctx_id);
57 igt_assert(__gem_context_destroy(fd, ctx_id) == -ENOENT);
58 }
Ben Widawskyf7e356d2012-06-14 10:00:57 -070059
Daniel Vetter7a03ddf2015-02-06 23:06:00 +010060 igt_subtest("invalid-ctx")
61 igt_assert(__gem_context_destroy(fd, 2) == -ENOENT);
Ben Widawskyf7e356d2012-06-14 10:00:57 -070062
Daniel Vetter7a03ddf2015-02-06 23:06:00 +010063 igt_subtest("invalid-default-ctx")
64 igt_assert(__gem_context_destroy(fd, 0) == -ENOENT);
Ben Widawskyf7e356d2012-06-14 10:00:57 -070065
Daniel Vetter7a03ddf2015-02-06 23:06:00 +010066 igt_subtest("invalid-pad") {
67 struct drm_i915_gem_context_destroy destroy;
68
69 ctx_id = gem_context_create(fd);
70
71 memset(&destroy, 0, sizeof(destroy));
72 destroy.ctx_id = ctx_id;
73 destroy.pad = 1;
74
75 igt_assert(drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_DESTROY, &destroy) < 0 &&
76 errno == EINVAL);
77 gem_context_destroy(fd, ctx_id);
78 }
79
80 igt_fixture
81 close(fd);
Ben Widawskyf7e356d2012-06-14 10:00:57 -070082}