|
@@ -97,8 +97,14 @@ static int host2guc_action(struct intel_guc *guc, u32 *data, u32 len)
|
|
|
|
|
|
I915_WRITE(HOST2GUC_INTERRUPT, HOST2GUC_TRIGGER);
|
|
|
|
|
|
- /* No HOST2GUC command should take longer than 10ms */
|
|
|
- ret = wait_for_atomic(host2guc_action_response(dev_priv, &status), 10);
|
|
|
+ /*
|
|
|
+ * Fast commands should complete in less than 10us, so sample quickly
|
|
|
+ * up to that length of time, then switch to a slower sleep-wait loop.
|
|
|
+ * No HOST2GUC command should ever take longer than 10ms.
|
|
|
+ */
|
|
|
+ ret = wait_for_us(host2guc_action_response(dev_priv, &status), 10);
|
|
|
+ if (ret)
|
|
|
+ ret = wait_for(host2guc_action_response(dev_priv, &status), 10);
|
|
|
if (status != GUC2HOST_STATUS_SUCCESS) {
|
|
|
/*
|
|
|
* Either the GuC explicitly returned an error (which
|