1 /* SPDX-License-Identifier: MIT */ 2 /* 3 * Copyright © 2014-2019 Intel Corporation 4 */ 5 6 #ifndef _INTEL_GUC_SUBMISSION_H_ 7 #define _INTEL_GUC_SUBMISSION_H_ 8 9 #include <linux/types.h> 10 11 #include "intel_guc.h" 12 13 struct drm_printer; 14 struct intel_engine_cs; 15 16 void intel_guc_submission_init_early(struct intel_guc *guc); 17 int intel_guc_submission_init(struct intel_guc *guc); 18 int intel_guc_submission_enable(struct intel_guc *guc); 19 void intel_guc_submission_disable(struct intel_guc *guc); 20 void intel_guc_submission_fini(struct intel_guc *guc); 21 int intel_guc_preempt_work_create(struct intel_guc *guc); 22 void intel_guc_preempt_work_destroy(struct intel_guc *guc); 23 int intel_guc_submission_setup(struct intel_engine_cs *engine); 24 void intel_guc_submission_print_info(struct intel_guc *guc, 25 struct drm_printer *p); 26 void intel_guc_submission_print_context_info(struct intel_guc *guc, 27 struct drm_printer *p); 28 void intel_guc_dump_active_requests(struct intel_engine_cs *engine, 29 struct i915_request *hung_rq, 30 struct drm_printer *m); 31 void intel_guc_busyness_park(struct intel_gt *gt); 32 void intel_guc_busyness_unpark(struct intel_gt *gt); 33 34 bool intel_guc_virtual_engine_has_heartbeat(const struct intel_engine_cs *ve); 35 36 int intel_guc_wait_for_pending_msg(struct intel_guc *guc, 37 atomic_t *wait_var, 38 bool interruptible, 39 long timeout); 40 41 void intel_guc_submission_flush_work(struct intel_guc *guc); 42 43 static inline bool intel_guc_submission_is_supported(struct intel_guc *guc) 44 { 45 return guc->submission_supported; 46 } 47 48 static inline bool intel_guc_submission_is_wanted(struct intel_guc *guc) 49 { 50 return guc->submission_selected; 51 } 52 53 static inline bool intel_guc_submission_is_used(struct intel_guc *guc) 54 { 55 return intel_guc_is_used(guc) && intel_guc_submission_is_wanted(guc); 56 } 57 58 #endif 59