intel_engine_cs.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * SPDX-License-Identifier: GPL-2.0
  3. *
  4. * Copyright © 2018 Intel Corporation
  5. */
  6. #include "../i915_selftest.h"
  7. static int intel_mmio_bases_check(void *arg)
  8. {
  9. int i, j;
  10. for (i = 0; i < ARRAY_SIZE(intel_engines); i++) {
  11. const struct engine_info *info = &intel_engines[i];
  12. char name[INTEL_ENGINE_CS_MAX_NAME];
  13. u8 prev = U8_MAX;
  14. __sprint_engine_name(name, info);
  15. for (j = 0; j < MAX_MMIO_BASES; j++) {
  16. u8 gen = info->mmio_bases[j].gen;
  17. u32 base = info->mmio_bases[j].base;
  18. if (gen >= prev) {
  19. pr_err("%s: %s: mmio base for gen %x "
  20. "is before the one for gen %x\n",
  21. __func__, name, prev, gen);
  22. return -EINVAL;
  23. }
  24. if (gen == 0)
  25. break;
  26. if (!base) {
  27. pr_err("%s: %s: invalid mmio base (%x) "
  28. "for gen %x at entry %u\n",
  29. __func__, name, base, gen, j);
  30. return -EINVAL;
  31. }
  32. prev = gen;
  33. }
  34. pr_info("%s: min gen supported for %s = %d\n",
  35. __func__, name, prev);
  36. }
  37. return 0;
  38. }
  39. int intel_engine_cs_mock_selftests(void)
  40. {
  41. static const struct i915_subtest tests[] = {
  42. SUBTEST(intel_mmio_bases_check),
  43. };
  44. return i915_subtests(tests, NULL);
  45. }