112ed2d31a
Start partitioning off the code that talks to the hardware (GT) from the uapi layers and move the device facing code under gt/ One casualty is s/intel_ringbuffer.h/intel_engine.h/ with the plan to subdivide that header and body further (and split out the submission code from the ringbuffer and logical context handling). This patch aims to be simple motion so git can fixup inflight patches with little mess. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Acked-by: Jani Nikula <jani.nikula@intel.com> Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190424174839.7141-1-chris@chris-wilson.co.uk
59 lines
1.1 KiB
C
59 lines
1.1 KiB
C
/*
|
|
* SPDX-License-Identifier: GPL-2.0
|
|
*
|
|
* Copyright © 2018 Intel Corporation
|
|
*/
|
|
|
|
#include "../i915_selftest.h"
|
|
|
|
static int intel_mmio_bases_check(void *arg)
|
|
{
|
|
int i, j;
|
|
|
|
for (i = 0; i < ARRAY_SIZE(intel_engines); i++) {
|
|
const struct engine_info *info = &intel_engines[i];
|
|
char name[INTEL_ENGINE_CS_MAX_NAME];
|
|
u8 prev = U8_MAX;
|
|
|
|
__sprint_engine_name(name, info);
|
|
|
|
for (j = 0; j < MAX_MMIO_BASES; j++) {
|
|
u8 gen = info->mmio_bases[j].gen;
|
|
u32 base = info->mmio_bases[j].base;
|
|
|
|
if (gen >= prev) {
|
|
pr_err("%s: %s: mmio base for gen %x "
|
|
"is before the one for gen %x\n",
|
|
__func__, name, prev, gen);
|
|
return -EINVAL;
|
|
}
|
|
|
|
if (gen == 0)
|
|
break;
|
|
|
|
if (!base) {
|
|
pr_err("%s: %s: invalid mmio base (%x) "
|
|
"for gen %x at entry %u\n",
|
|
__func__, name, base, gen, j);
|
|
return -EINVAL;
|
|
}
|
|
|
|
prev = gen;
|
|
}
|
|
|
|
pr_info("%s: min gen supported for %s = %d\n",
|
|
__func__, name, prev);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int intel_engine_cs_mock_selftests(void)
|
|
{
|
|
static const struct i915_subtest tests[] = {
|
|
SUBTEST(intel_mmio_bases_check),
|
|
};
|
|
|
|
return i915_subtests(tests, NULL);
|
|
}
|