Merge tag 'drm-misc-next-2019-05-24' of git://anongit.freedesktop.org/drm/drm-misc...
[linux-2.6-microblaze.git] / drivers / gpu / drm / i915 / selftests / intel_engine_cs.c
1 /*
2  * SPDX-License-Identifier: GPL-2.0
3  *
4  * Copyright © 2018 Intel Corporation
5  */
6
7 #include "../i915_selftest.h"
8
9 static int intel_mmio_bases_check(void *arg)
10 {
11         int i, j;
12
13         for (i = 0; i < ARRAY_SIZE(intel_engines); i++) {
14                 const struct engine_info *info = &intel_engines[i];
15                 char name[INTEL_ENGINE_CS_MAX_NAME];
16                 u8 prev = U8_MAX;
17
18                 __sprint_engine_name(name, info);
19
20                 for (j = 0; j < MAX_MMIO_BASES; j++) {
21                         u8 gen = info->mmio_bases[j].gen;
22                         u32 base = info->mmio_bases[j].base;
23
24                         if (gen >= prev) {
25                                 pr_err("%s: %s: mmio base for gen %x "
26                                         "is before the one for gen %x\n",
27                                        __func__, name, prev, gen);
28                                 return -EINVAL;
29                         }
30
31                         if (gen == 0)
32                                 break;
33
34                         if (!base) {
35                                 pr_err("%s: %s: invalid mmio base (%x) "
36                                         "for gen %x at entry %u\n",
37                                        __func__, name, base, gen, j);
38                                 return -EINVAL;
39                         }
40
41                         prev = gen;
42                 }
43
44                 pr_info("%s: min gen supported for %s = %d\n",
45                         __func__, name, prev);
46         }
47
48         return 0;
49 }
50
51 int intel_engine_cs_mock_selftests(void)
52 {
53         static const struct i915_subtest tests[] = {
54                 SUBTEST(intel_mmio_bases_check),
55         };
56
57         return i915_subtests(tests, NULL);
58 }