Skip to content

Commit c92c36e

Browse files
ickledanvet
authored andcommitted
drm/i915/gt: Move submission_method into intel_gt
Since we setup the submission method for the engines once, it is easy to assign an enum and use that instead of probing into the backends. Signed-off-by: Matthew Brost <[email protected]> Signed-off-by: Chris Wilson <[email protected]> Cc: Tvrtko Ursulin <[email protected]> Reviewed-by: Matthew Brost <[email protected]> Signed-off-by: Daniel Vetter <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 0db3633 commit c92c36e

11 files changed

+32
-33
lines changed

drivers/gpu/drm/i915/gt/intel_engine.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@
1313
#include "i915_reg.h"
1414
#include "i915_request.h"
1515
#include "i915_selftest.h"
16-
#include "gt/intel_timeline.h"
1716
#include "intel_engine_types.h"
17+
#include "intel_gt_types.h"
18+
#include "intel_timeline.h"
1819
#include "intel_workarounds.h"
1920

2021
struct drm_printer;
@@ -262,6 +263,11 @@ void intel_engine_init_active(struct intel_engine_cs *engine,
262263
#define ENGINE_MOCK 1
263264
#define ENGINE_VIRTUAL 2
264265

266+
static inline bool intel_engine_uses_guc(const struct intel_engine_cs *engine)
267+
{
268+
return engine->gt->submission_method >= INTEL_SUBMISSION_GUC;
269+
}
270+
265271
static inline bool
266272
intel_engine_has_preempt_reset(const struct intel_engine_cs *engine)
267273
{

drivers/gpu/drm/i915/gt/intel_engine_cs.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -909,12 +909,16 @@ int intel_engines_init(struct intel_gt *gt)
909909
enum intel_engine_id id;
910910
int err;
911911

912-
if (intel_uc_uses_guc_submission(&gt->uc))
912+
if (intel_uc_uses_guc_submission(&gt->uc)) {
913+
gt->submission_method = INTEL_SUBMISSION_GUC;
913914
setup = intel_guc_submission_setup;
914-
else if (HAS_EXECLISTS(gt->i915))
915+
} else if (HAS_EXECLISTS(gt->i915)) {
916+
gt->submission_method = INTEL_SUBMISSION_ELSP;
915917
setup = intel_execlists_submission_setup;
916-
else
918+
} else {
919+
gt->submission_method = INTEL_SUBMISSION_RING;
917920
setup = intel_ring_submission_setup;
921+
}
918922

919923
for_each_engine(engine, gt, id) {
920924
err = engine_setup_common(engine);
@@ -1479,7 +1483,7 @@ static void intel_engine_print_registers(struct intel_engine_cs *engine,
14791483
drm_printf(m, "\tIPEHR: 0x%08x\n", ENGINE_READ(engine, IPEHR));
14801484
}
14811485

1482-
if (intel_engine_in_guc_submission_mode(engine)) {
1486+
if (intel_engine_uses_guc(engine)) {
14831487
/* nothing to print yet */
14841488
} else if (HAS_EXECLISTS(dev_priv)) {
14851489
struct i915_request * const *port, *rq;

drivers/gpu/drm/i915/gt/intel_execlists_submission.c

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1768,7 +1768,6 @@ process_csb(struct intel_engine_cs *engine, struct i915_request **inactive)
17681768
*/
17691769
GEM_BUG_ON(!tasklet_is_locked(&execlists->tasklet) &&
17701770
!reset_in_progress(execlists));
1771-
GEM_BUG_ON(!intel_engine_in_execlists_submission_mode(engine));
17721771

17731772
/*
17741773
* Note that csb_write, csb_status may be either in HWSP or mmio.
@@ -3884,13 +3883,6 @@ void intel_execlists_show_requests(struct intel_engine_cs *engine,
38843883
spin_unlock_irqrestore(&engine->active.lock, flags);
38853884
}
38863885

3887-
bool
3888-
intel_engine_in_execlists_submission_mode(const struct intel_engine_cs *engine)
3889-
{
3890-
return engine->set_default_submission ==
3891-
execlists_set_default_submission;
3892-
}
3893-
38943886
#if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
38953887
#include "selftest_execlists.c"
38963888
#endif

drivers/gpu/drm/i915/gt/intel_execlists_submission.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,4 @@ int intel_virtual_engine_attach_bond(struct intel_engine_cs *engine,
4343
const struct intel_engine_cs *master,
4444
const struct intel_engine_cs *sibling);
4545

46-
bool
47-
intel_engine_in_execlists_submission_mode(const struct intel_engine_cs *engine);
48-
4946
#endif /* __INTEL_EXECLISTS_SUBMISSION_H__ */

drivers/gpu/drm/i915/gt/intel_gt_types.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ struct i915_ggtt;
3131
struct intel_engine_cs;
3232
struct intel_uncore;
3333

34+
enum intel_submission_method {
35+
INTEL_SUBMISSION_RING,
36+
INTEL_SUBMISSION_ELSP,
37+
INTEL_SUBMISSION_GUC,
38+
};
39+
3440
struct intel_gt {
3541
struct drm_i915_private *i915;
3642
struct intel_uncore *uncore;
@@ -118,6 +124,7 @@ struct intel_gt {
118124
struct intel_engine_cs *engine[I915_NUM_ENGINES];
119125
struct intel_engine_cs *engine_class[MAX_ENGINE_CLASS + 1]
120126
[MAX_ENGINE_INSTANCE + 1];
127+
enum intel_submission_method submission_method;
121128

122129
/*
123130
* Default address space (either GGTT or ppGTT depending on arch).

drivers/gpu/drm/i915/gt/intel_reset.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1118,7 +1118,6 @@ static int intel_gt_reset_engine(struct intel_engine_cs *engine)
11181118
int __intel_engine_reset_bh(struct intel_engine_cs *engine, const char *msg)
11191119
{
11201120
struct intel_gt *gt = engine->gt;
1121-
bool uses_guc = intel_engine_in_guc_submission_mode(engine);
11221121
int ret;
11231122

11241123
ENGINE_TRACE(engine, "flags=%lx\n", gt->reset.flags);
@@ -1134,10 +1133,10 @@ int __intel_engine_reset_bh(struct intel_engine_cs *engine, const char *msg)
11341133
"Resetting %s for %s\n", engine->name, msg);
11351134
atomic_inc(&engine->i915->gpu_error.reset_engine_count[engine->uabi_class]);
11361135

1137-
if (!uses_guc)
1138-
ret = intel_gt_reset_engine(engine);
1139-
else
1136+
if (intel_engine_uses_guc(engine))
11401137
ret = intel_guc_reset_engine(&engine->gt->uc.guc, engine);
1138+
else
1139+
ret = intel_gt_reset_engine(engine);
11411140
if (ret) {
11421141
/* If we fail here, we expect to fallback to a global reset */
11431142
ENGINE_TRACE(engine, "Failed to reset, err: %d\n", ret);

drivers/gpu/drm/i915/gt/selftest_execlists.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4716,7 +4716,7 @@ int intel_execlists_live_selftests(struct drm_i915_private *i915)
47164716
SUBTEST(live_virtual_reset),
47174717
};
47184718

4719-
if (!HAS_EXECLISTS(i915))
4719+
if (i915->gt.submission_method != INTEL_SUBMISSION_ELSP)
47204720
return 0;
47214721

47224722
if (intel_gt_is_wedged(&i915->gt))

drivers/gpu/drm/i915/gt/selftest_ring_submission.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ int intel_ring_submission_live_selftests(struct drm_i915_private *i915)
291291
SUBTEST(live_ctx_switch_wa),
292292
};
293293

294-
if (HAS_EXECLISTS(i915))
294+
if (i915->gt.submission_method > INTEL_SUBMISSION_RING)
295295
return 0;
296296

297297
return intel_gt_live_subtests(tests, &i915->gt);

drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -745,8 +745,3 @@ void intel_guc_submission_init_early(struct intel_guc *guc)
745745
{
746746
guc->submission_selected = __guc_submission_selected(guc);
747747
}
748-
749-
bool intel_engine_in_guc_submission_mode(const struct intel_engine_cs *engine)
750-
{
751-
return engine->set_default_submission == guc_set_default_submission;
752-
}

drivers/gpu/drm/i915/gt/uc/intel_guc_submission.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ void intel_guc_submission_fini(struct intel_guc *guc);
2020
int intel_guc_preempt_work_create(struct intel_guc *guc);
2121
void intel_guc_preempt_work_destroy(struct intel_guc *guc);
2222
int intel_guc_submission_setup(struct intel_engine_cs *engine);
23-
bool intel_engine_in_guc_submission_mode(const struct intel_engine_cs *engine);
2423

2524
static inline bool intel_guc_submission_is_supported(struct intel_guc *guc)
2625
{

0 commit comments

Comments
 (0)