ctx = kernel_context(gt->i915, NULL); if (IS_ERR(ctx)) {
gt_err(gt, "Failed get kernel context: %pe\n", ctx); return PTR_ERR(ctx);
}
wakeref = intel_runtime_pm_get(gt->uncore->rpm);
ce = intel_context_create(engine); if (IS_ERR(ce)) {
ret = PTR_ERR(ce);
gt_err(gt, "Failed to create spinner request: %pe\n", ce); goto err;
}
reset_count = i915_reset_count(global);
old_beat = engine->props.heartbeat_interval_ms;
ret = intel_engine_set_heartbeat(engine, BEAT_INTERVAL); if (ret) {
gt_err(gt, "Failed to boost heartbeat interval: %pe\n", ERR_PTR(ret)); goto err;
}
ret = igt_spinner_init(&spin, engine->gt); if (ret) {
gt_err(gt, "Failed to create spinner: %pe\n", ERR_PTR(ret)); goto err;
}
rq = igt_spinner_create_request(&spin, ce, MI_ARB_CHECK);
intel_context_put(ce); if (IS_ERR(rq)) {
ret = PTR_ERR(rq);
gt_err(gt, "Failed to create spinner request: %pe\n", rq); goto err_spin;
}
ret = request_add_spin(rq, &spin); if (ret) {
i915_request_put(rq);
gt_err(gt, "Failed to add Spinner request: %pe\n", ERR_PTR(ret)); goto err_spin;
}
ret = intel_reset_guc(gt); if (ret) {
i915_request_put(rq);
gt_err(gt, "Failed to reset GuC: %pe\n", ERR_PTR(ret)); goto err_spin;
}
guc_status = intel_uncore_read(gt->uncore, GUC_STATUS); if (!(guc_status & GS_MIA_IN_RESET)) {
i915_request_put(rq);
gt_err(gt, "Failed to reset GuC: status = 0x%08X\n", guc_status);
ret = -EIO; goto err_spin;
}
/* Wait for the heartbeat to cause a reset */
ret = intel_selftest_wait_for_rq(rq);
i915_request_put(rq); if (ret) {
gt_err(gt, "Request failed to complete: %pe\n", ERR_PTR(ret)); goto err_spin;
}
if (i915_reset_count(global) == reset_count) {
gt_err(gt, "Failed to record a GPU reset\n");
ret = -EINVAL; goto err_spin;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.