mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
drm/i915/gt: Ignore incomplete engines after init failure
Do not expose incomplete engines to the user after we fail to setup the
GT.
Fixes: e6ba764802
("drm/i915: Remove i915->kernel_context")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Andi Shyti <andi.shyti@intel.com>
Acked-by: Andi Shyti <andi.shyti@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191226191237.2654510-1-chris@chris-wilson.co.uk
This commit is contained in:
parent
d03b224f42
commit
b761a7b47b
@ -11,6 +11,7 @@
|
||||
#include "i915_drv.h"
|
||||
#include "intel_engine.h"
|
||||
#include "intel_engine_user.h"
|
||||
#include "intel_gt.h"
|
||||
|
||||
struct intel_engine_cs *
|
||||
intel_engine_lookup_user(struct drm_i915_private *i915, u8 class, u8 instance)
|
||||
@ -200,6 +201,9 @@ void intel_engines_driver_register(struct drm_i915_private *i915)
|
||||
uabi_node);
|
||||
char old[sizeof(engine->name)];
|
||||
|
||||
if (intel_gt_has_init_error(engine->gt))
|
||||
continue; /* ignore incomplete engines */
|
||||
|
||||
GEM_BUG_ON(engine->class >= ARRAY_SIZE(uabi_classes));
|
||||
engine->uabi_class = uabi_classes[engine->class];
|
||||
|
||||
|
@ -58,9 +58,14 @@ static inline u32 intel_gt_scratch_offset(const struct intel_gt *gt,
|
||||
return i915_ggtt_offset(gt->scratch) + field;
|
||||
}
|
||||
|
||||
static inline bool intel_gt_is_wedged(struct intel_gt *gt)
|
||||
static inline bool intel_gt_is_wedged(const struct intel_gt *gt)
|
||||
{
|
||||
return __intel_reset_failed(>->reset);
|
||||
}
|
||||
|
||||
static inline bool intel_gt_has_init_error(const struct intel_gt *gt)
|
||||
{
|
||||
return test_bit(I915_WEDGED_ON_INIT, >->reset.flags);
|
||||
}
|
||||
|
||||
#endif /* __INTEL_GT_H__ */
|
||||
|
@ -1329,10 +1329,10 @@ int intel_gt_terminally_wedged(struct intel_gt *gt)
|
||||
if (!intel_gt_is_wedged(gt))
|
||||
return 0;
|
||||
|
||||
/* Reset still in progress? Maybe we will recover? */
|
||||
if (!test_bit(I915_RESET_BACKOFF, >->reset.flags))
|
||||
if (intel_gt_has_init_error(gt))
|
||||
return -EIO;
|
||||
|
||||
/* Reset still in progress? Maybe we will recover? */
|
||||
if (wait_event_interruptible(gt->reset.queue,
|
||||
!test_bit(I915_RESET_BACKOFF,
|
||||
>->reset.flags)))
|
||||
|
Loading…
Reference in New Issue
Block a user