/openbmc/linux/drivers/gpu/drm/i915/gt/uc/ |
H A D | intel_guc.c | 42 void intel_guc_notify(struct intel_guc *guc) in intel_guc_notify() argument 44 struct intel_gt *gt = guc_to_gt(guc); in intel_guc_notify() 52 intel_uncore_write(gt->uncore, guc->notify_reg, GUC_SEND_TRIGGER); in intel_guc_notify() 55 static inline i915_reg_t guc_send_reg(struct intel_guc *guc, u32 i) in guc_send_reg() argument 57 GEM_BUG_ON(!guc->send_regs.base); in guc_send_reg() 58 GEM_BUG_ON(!guc->send_regs.count); in guc_send_reg() 59 GEM_BUG_ON(i >= guc->send_regs.count); in guc_send_reg() 61 return _MMIO(guc->send_regs.base + 4 * i); in guc_send_reg() 64 void intel_guc_init_send_regs(struct intel_guc *guc) in intel_guc_init_send_regs() argument 66 struct intel_gt *gt = guc_to_gt(guc); in intel_guc_init_send_regs() [all …]
|
H A D | intel_guc.h | 85 void (*reset)(struct intel_guc *guc); 86 void (*enable)(struct intel_guc *guc); 87 void (*disable)(struct intel_guc *guc); 283 #define GUC_SUBMIT_VER(guc) MAKE_GUC_VER_STRUCT((guc)->submission_version) argument 291 inline int intel_guc_send(struct intel_guc *guc, const u32 *action, u32 len) in intel_guc_send() argument 293 return intel_guc_ct_send(&guc->ct, action, len, NULL, 0, 0); in intel_guc_send() 297 inline int intel_guc_send_nb(struct intel_guc *guc, const u32 *action, u32 len, in intel_guc_send_nb() argument 300 return intel_guc_ct_send(&guc->ct, action, len, NULL, 0, in intel_guc_send_nb() 305 intel_guc_send_and_receive(struct intel_guc *guc, const u32 *action, u32 len, in intel_guc_send_and_receive() argument 308 return intel_guc_ct_send(&guc->ct, action, len, in intel_guc_send_and_receive() [all …]
|
H A D | intel_guc_ads.c | 80 static u32 guc_ads_regset_size(struct intel_guc *guc) in guc_ads_regset_size() argument 82 GEM_BUG_ON(!guc->ads_regset_size); in guc_ads_regset_size() 83 return guc->ads_regset_size; in guc_ads_regset_size() 86 static u32 guc_ads_golden_ctxt_size(struct intel_guc *guc) in guc_ads_golden_ctxt_size() argument 88 return PAGE_ALIGN(guc->ads_golden_ctxt_size); in guc_ads_golden_ctxt_size() 91 static u32 guc_ads_capture_size(struct intel_guc *guc) in guc_ads_capture_size() argument 93 return PAGE_ALIGN(guc->ads_capture_size); in guc_ads_capture_size() 96 static u32 guc_ads_private_data_size(struct intel_guc *guc) in guc_ads_private_data_size() argument 98 return PAGE_ALIGN(guc->fw.private_data_size); in guc_ads_private_data_size() 101 static u32 guc_ads_regset_offset(struct intel_guc *guc) in guc_ads_regset_offset() argument [all …]
|
H A D | intel_uc.c | 128 intel_guc_init_early(&uc->guc); in intel_uc_init_early() 142 intel_guc_init_late(&uc->guc); in intel_uc_init_late() 159 intel_guc_init_send_regs(&uc->guc); in intel_uc_init_mmio() 164 struct intel_guc *guc = &uc->guc; in __uc_capture_load_err_log() local 166 if (guc->log.vma && !uc->load_err_log) in __uc_capture_load_err_log() 167 uc->load_err_log = i915_gem_object_get(guc->log.vma->obj); in __uc_capture_load_err_log() 191 static void guc_clear_mmio_msg(struct intel_guc *guc) in guc_clear_mmio_msg() argument 193 intel_uncore_write(guc_to_gt(guc)->uncore, SOFT_SCRATCH(15), 0); in guc_clear_mmio_msg() 196 static void guc_get_mmio_msg(struct intel_guc *guc) in guc_get_mmio_msg() argument 200 spin_lock_irq(&guc->irq_lock); in guc_get_mmio_msg() [all …]
|
H A D | intel_guc_debugfs.c | 19 struct intel_guc *guc = m->private; in guc_info_show() local 22 if (!intel_guc_is_supported(guc)) in guc_info_show() 25 intel_guc_load_status(guc, &p); in guc_info_show() 27 intel_guc_log_info(&guc->log, &p); in guc_info_show() 29 if (!intel_guc_submission_is_used(guc)) in guc_info_show() 32 intel_guc_ct_print_info(&guc->ct, &p); in guc_info_show() 33 intel_guc_submission_print_info(guc, &p); in guc_info_show() 34 intel_guc_ads_print_policy_info(guc, &p); in guc_info_show() 42 struct intel_guc *guc = m->private; in guc_registered_contexts_show() local 45 if (!intel_guc_submission_is_used(guc)) in guc_registered_contexts_show() [all …]
|
H A D | intel_guc_submission.c | 160 #define NUMBER_MULTI_LRC_GUC_ID(guc) \ argument 161 ((guc)->submission_state.num_guc_ids / 16) 393 return &ce->engine->gt->uc.guc; in ce_to_guc() 443 GEM_BUG_ON(!ce->parallel.guc.parent_page); in __get_parent_scratch_offset() 445 return ce->parallel.guc.parent_page * PAGE_SIZE; in __get_parent_scratch_offset() 496 CIRC_SPACE(ce->parallel.guc.wqi_tail, ce->parallel.guc.wqi_head, WQ_SIZE) in get_wq_pointer() 498 ce->parallel.guc.wqi_head = READ_ONCE(*ce->parallel.guc.wq_head); in get_wq_pointer() 505 return &__get_parent_scratch(ce)->wq[ce->parallel.guc.wqi_tail / sizeof(u32)]; in get_wq_pointer() 508 static inline struct intel_context *__get_context(struct intel_guc *guc, u32 id) in __get_context() argument 510 struct intel_context *ce = xa_load(&guc->context_lookup, id); in __get_context() [all …]
|
H A D | intel_guc_rc.c | 13 static bool __guc_rc_supported(struct intel_guc *guc) in __guc_rc_supported() argument 16 return guc->submission_supported && in __guc_rc_supported() 17 GRAPHICS_VER(guc_to_gt(guc)->i915) >= 12; in __guc_rc_supported() 20 static bool __guc_rc_selected(struct intel_guc *guc) in __guc_rc_selected() argument 22 if (!intel_guc_rc_is_supported(guc)) in __guc_rc_selected() 25 return guc->submission_selected; in __guc_rc_selected() 28 void intel_guc_rc_init_early(struct intel_guc *guc) in intel_guc_rc_init_early() argument 30 guc->rc_supported = __guc_rc_supported(guc); in intel_guc_rc_init_early() 31 guc->rc_selected = __guc_rc_selected(guc); in intel_guc_rc_init_early() 34 static int guc_action_control_gucrc(struct intel_guc *guc, bool enable) in guc_action_control_gucrc() argument [all …]
|
H A D | intel_guc_capture.c | 296 guc_capture_alloc_steered_lists(struct intel_guc *guc, in guc_capture_alloc_steered_lists() argument 299 struct intel_gt *gt = guc_to_gt(guc); in guc_capture_alloc_steered_lists() 311 if (!list || guc->capture->extlists) in guc_capture_alloc_steered_lists() 351 guc_dbg(guc, "capture found %d ext-regs.\n", num_tot_regs); in guc_capture_alloc_steered_lists() 352 guc->capture->extlists = extlists; in guc_capture_alloc_steered_lists() 356 guc_capture_get_device_reglist(struct intel_guc *guc) in guc_capture_get_device_reglist() argument 358 struct drm_i915_private *i915 = guc_to_gt(guc)->i915; in guc_capture_get_device_reglist() 372 guc_capture_alloc_steered_lists(guc, lists); in guc_capture_get_device_reglist() 416 guc_capture_list_init(struct intel_guc *guc, u32 owner, u32 type, u32 classid, in guc_capture_list_init() argument 420 const struct __guc_mmio_reg_descr_group *reglists = guc->capture->reglists; in guc_capture_list_init() [all …]
|
H A D | intel_guc_submission.h | 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); 24 void intel_guc_submission_print_info(struct intel_guc *guc, 26 void intel_guc_submission_print_context_info(struct intel_guc *guc, 36 int intel_guc_wait_for_pending_msg(struct intel_guc *guc, [all …]
|
H A D | intel_guc_rc.h | 11 void intel_guc_rc_init_early(struct intel_guc *guc); 13 static inline bool intel_guc_rc_is_supported(struct intel_guc *guc) in intel_guc_rc_is_supported() argument 15 return guc->rc_supported; in intel_guc_rc_is_supported() 18 static inline bool intel_guc_rc_is_wanted(struct intel_guc *guc) in intel_guc_rc_is_wanted() argument 20 return guc->submission_selected && intel_guc_rc_is_supported(guc); in intel_guc_rc_is_wanted() 23 static inline bool intel_guc_rc_is_used(struct intel_guc *guc) in intel_guc_rc_is_used() argument 25 return intel_guc_submission_is_used(guc) && intel_guc_rc_is_wanted(guc); in intel_guc_rc_is_used() 28 int intel_guc_rc_enable(struct intel_guc *guc); 29 int intel_guc_rc_disable(struct intel_guc *guc);
|
H A D | intel_guc_fw.c | 71 struct intel_guc *guc = container_of(guc_fw, struct intel_guc, fw); in guc_xfer_rsa_vma() local 74 intel_guc_ggtt_offset(guc, guc_fw->rsa_data)); in guc_xfer_rsa_vma() 153 static int guc_wait_ucode(struct intel_guc *guc) in guc_wait_ucode() argument 155 struct intel_gt *gt = guc_to_gt(guc); in guc_wait_ucode() 194 guc_dbg(guc, "load still in progress, count = %d, freq = %dMHz, status = 0x%08X [0x%02X/%02X]\n", in guc_wait_ucode() 206 guc_info(guc, "load failed: status = 0x%08X, time = %lldms, freq = %dMHz, ret = %d\n", in guc_wait_ucode() 208 …guc_info(guc, "load failed: status: Reset = %d, BootROM = 0x%02X, UKernel = 0x%02X, MIA = 0x%02X, … in guc_wait_ucode() 216 guc_info(guc, "invalid key requested, header = 0x%08X\n", in guc_wait_ucode() 222 guc_info(guc, "firmware signature verification failed\n"); in guc_wait_ucode() 227 guc_info(guc, "firmware production part check failure\n"); in guc_wait_ucode() [all …]
|
H A D | intel_guc_slpc.c | 33 static bool __detect_slpc_supported(struct intel_guc *guc) in __detect_slpc_supported() argument 36 return guc->submission_supported && in __detect_slpc_supported() 37 GRAPHICS_VER(guc_to_gt(guc)->i915) >= 12; in __detect_slpc_supported() 40 static bool __guc_slpc_selected(struct intel_guc *guc) in __guc_slpc_selected() argument 42 if (!intel_guc_slpc_is_supported(guc)) in __guc_slpc_selected() 45 return guc->submission_selected; in __guc_slpc_selected() 50 struct intel_guc *guc = slpc_to_guc(slpc); in intel_guc_slpc_init_early() local 52 slpc->supported = __detect_slpc_supported(guc); in intel_guc_slpc_init_early() 53 slpc->selected = __guc_slpc_selected(guc); in intel_guc_slpc_init_early() 102 static int guc_action_slpc_set_param_nb(struct intel_guc *guc, u8 id, u32 value) in guc_action_slpc_set_param_nb() argument [all …]
|
H A D | intel_guc_log.c | 42 struct intel_guc *guc = log_to_guc(log); in _guc_log_init_sizes() local 85 guc_err(guc, "Mis-aligned log %s size: 0x%X vs 0x%X!\n", in _guc_log_init_sizes() 90 guc_err(guc, "Zero log %s size!\n", sections[i].name); in _guc_log_init_sizes() 98 guc_err(guc, "log %s size too large: %d vs %d!\n", in _guc_log_init_sizes() 105 guc_err(guc, "Unit mismatch for crash and debug sections: %d vs %d!\n", in _guc_log_init_sizes() 182 static int guc_action_flush_log_complete(struct intel_guc *guc) in guc_action_flush_log_complete() argument 189 return intel_guc_send_nb(guc, action, ARRAY_SIZE(action), 0); in guc_action_flush_log_complete() 192 static int guc_action_flush_log(struct intel_guc *guc) in guc_action_flush_log() argument 199 return intel_guc_send(guc, action, ARRAY_SIZE(action)); in guc_action_flush_log() 202 static int guc_action_control_log(struct intel_guc *guc, bool enable, in guc_action_control_log() argument [all …]
|
H A D | intel_guc_hwconfig.c | 34 static int __guc_action_get_hwconfig(struct intel_guc *guc, in __guc_action_get_hwconfig() argument 45 ret = intel_guc_send_mmio(guc, action, ARRAY_SIZE(action), NULL, 0); in __guc_action_get_hwconfig() 52 static int guc_hwconfig_discover_size(struct intel_guc *guc, struct intel_hwconfig *hwconfig) in guc_hwconfig_discover_size() argument 60 ret = __guc_action_get_hwconfig(guc, 0, 0); in guc_hwconfig_discover_size() 71 static int guc_hwconfig_fill_buffer(struct intel_guc *guc, struct intel_hwconfig *hwconfig) in guc_hwconfig_fill_buffer() argument 80 ret = intel_guc_allocate_and_map_vma(guc, hwconfig->size, &vma, &vaddr); in guc_hwconfig_fill_buffer() 84 ggtt_offset = intel_guc_ggtt_offset(guc, vma); in guc_hwconfig_fill_buffer() 86 ret = __guc_action_get_hwconfig(guc, ggtt_offset, hwconfig->size); in guc_hwconfig_fill_buffer() 114 struct intel_guc *guc = >->uc.guc; in guc_hwconfig_init() local 120 ret = guc_hwconfig_discover_size(guc, hwconfig); in guc_hwconfig_init() [all …]
|
H A D | selftest_guc.c | 147 struct intel_guc *guc = >->uc.guc; in intel_guc_steal_guc_ids() local 154 int number_guc_id_stolen = guc->number_guc_id_stolen; in intel_guc_steal_guc_ids() 158 guc_err(guc, "Context array allocation failed\n"); in intel_guc_steal_guc_ids() 164 sv = guc->submission_state.num_guc_ids; in intel_guc_steal_guc_ids() 165 guc->submission_state.num_guc_ids = 512; in intel_guc_steal_guc_ids() 171 guc_err(guc, "Failed to create context: %pe\n", ce[context_index]); in intel_guc_steal_guc_ids() 177 guc_err(guc, "Failed to create spinner: %pe\n", ERR_PTR(ret)); in intel_guc_steal_guc_ids() 184 guc_err(guc, "Failed to create spinner request: %pe\n", spin_rq); in intel_guc_steal_guc_ids() 189 guc_err(guc, "Failed to add Spinner request: %pe\n", ERR_PTR(ret)); in intel_guc_steal_guc_ids() 198 guc_err(guc, "Failed to create context: %pe\n", ce[context_index]); in intel_guc_steal_guc_ids() [all …]
|
H A D | intel_guc_ads.h | 16 int intel_guc_ads_create(struct intel_guc *guc); 17 void intel_guc_ads_destroy(struct intel_guc *guc); 18 void intel_guc_ads_init_late(struct intel_guc *guc); 19 void intel_guc_ads_reset(struct intel_guc *guc); 20 void intel_guc_ads_print_policy_info(struct intel_guc *guc, 23 u32 intel_guc_engine_usage_offset(struct intel_guc *guc);
|
H A D | intel_guc_slpc.h | 17 static inline bool intel_guc_slpc_is_supported(struct intel_guc *guc) in intel_guc_slpc_is_supported() argument 19 return guc->slpc.supported; in intel_guc_slpc_is_supported() 22 static inline bool intel_guc_slpc_is_wanted(struct intel_guc *guc) in intel_guc_slpc_is_wanted() argument 24 return guc->slpc.selected; in intel_guc_slpc_is_wanted() 27 static inline bool intel_guc_slpc_is_used(struct intel_guc *guc) in intel_guc_slpc_is_used() argument 29 return intel_guc_submission_is_used(guc) && intel_guc_slpc_is_wanted(guc); in intel_guc_slpc_is_used()
|
H A D | intel_guc_capture.h | 26 void intel_guc_capture_process(struct intel_guc *guc); 27 int intel_guc_capture_getlist(struct intel_guc *guc, u32 owner, u32 type, u32 classid, 29 int intel_guc_capture_getlistsize(struct intel_guc *guc, u32 owner, u32 type, u32 classid, 31 int intel_guc_capture_getnullheader(struct intel_guc *guc, void **outptr, size_t *size); 32 void intel_guc_capture_destroy(struct intel_guc *guc); 33 int intel_guc_capture_init(struct intel_guc *guc);
|
H A D | intel_uc.h | 33 struct intel_guc guc; member 89 uc_state_checkers(guc, guc); 91 uc_state_checkers(guc, guc_submission); 92 uc_state_checkers(guc, guc_slpc); 93 uc_state_checkers(guc, guc_rc); 101 return intel_guc_wait_for_idle(&uc->guc, timeout); in intel_uc_wait_for_idle()
|
H A D | intel_guc_log_debugfs.c | 33 struct intel_guc *guc = log_to_guc(log); in guc_log_dump_size() local 35 if (!intel_guc_is_supported(guc)) in guc_log_dump_size() 61 struct intel_guc *guc = log_to_guc(log); in guc_load_err_dump_size() local 62 struct intel_uc *uc = container_of(guc, struct intel_uc, guc); in guc_load_err_dump_size() 64 if (!intel_guc_is_supported(guc)) in guc_load_err_dump_size()
|
H A D | intel_guc_ct.c | 160 static int guc_action_control_ctb(struct intel_guc *guc, u32 control) in guc_action_control_ctb() argument 173 ret = intel_guc_send_mmio(guc, request, ARRAY_SIZE(request), NULL, 0); in guc_action_control_ctb() 232 struct intel_guc *guc = ct_to_guc(ct); in intel_guc_ct_init() local 241 err = i915_inject_probe_error(guc_to_gt(guc)->i915, -ENXIO); in intel_guc_ct_init() 248 err = intel_guc_allocate_and_map_vma(guc, blob_size, &ct->vma, &blob); in intel_guc_ct_init() 255 CT_DEBUG(ct, "base=%#x size=%u\n", intel_guc_ggtt_offset(guc, ct->vma), blob_size); in intel_guc_ct_init() 305 struct intel_guc *guc = ct_to_guc(ct); in intel_guc_ct_enable() local 315 base = intel_guc_ggtt_offset(guc, ct->vma); in intel_guc_ct_enable() 368 struct intel_guc *guc = ct_to_guc(ct); in intel_guc_ct_disable() local 374 if (intel_guc_is_fw_running(guc)) { in intel_guc_ct_disable() [all …]
|
H A D | intel_uc_fw.c | 36 return container_of(uc_fw, struct intel_gt, uc.guc.fw); in ____uc_fw_to_gt() 576 struct intel_guc *guc = container_of(uc_fw, struct intel_guc, fw); in guc_read_css_info() local 595 uc_unpack_css_version(&guc->submission_version, css->vf_version); in guc_read_css_info() 598 guc->submission_version.major = 1; in guc_read_css_info() 599 guc->submission_version.minor = 1; in guc_read_css_info() 600 guc->submission_version.patch = 0; in guc_read_css_info() 603 guc->submission_version.major = 1; in guc_read_css_info() 604 guc->submission_version.minor = 0; in guc_read_css_info() 605 guc->submission_version.patch = 0; in guc_read_css_info() 609 guc->submission_version.major = 0; in guc_read_css_info() [all …]
|
/openbmc/linux/drivers/gpu/drm/i915/gt/ |
H A D | intel_wopcm.c | 237 u32 guc_fw_size = intel_uc_fw_get_upload_size(>->uc.guc.fw); in intel_wopcm_init() 248 GEM_BUG_ON(wopcm->guc.base); in intel_wopcm_init() 249 GEM_BUG_ON(wopcm->guc.size); in intel_wopcm_init() 317 wopcm->guc.base = guc_wopcm_base; in intel_wopcm_init() 318 wopcm->guc.size = guc_wopcm_size; in intel_wopcm_init() 319 GEM_BUG_ON(!wopcm->guc.base); in intel_wopcm_init() 320 GEM_BUG_ON(!wopcm->guc.size); in intel_wopcm_init()
|
H A D | intel_wopcm.h | 24 } guc; member 39 return wopcm->guc.base; in intel_wopcm_guc_base() 54 return wopcm->guc.size; in intel_wopcm_guc_size()
|
/openbmc/linux/drivers/gpu/drm/i915/ |
H A D | i915_gpu_error.c | 696 err_printf(m, "GuC timestamp: 0x%08x\n", error_uc->guc.timestamp); in err_print_uc() 697 intel_gpu_error_print_vma(m, NULL, error_uc->guc.vma_log); in err_print_uc() 698 err_printf(m, "GuC CTB fence: %d\n", error_uc->guc.last_fence); in err_print_uc() 699 err_print_guc_ctb(m, "Send", error_uc->guc.ctb + 0); in err_print_uc() 700 err_print_guc_ctb(m, "Recv", error_uc->guc.ctb + 1); in err_print_uc() 701 intel_gpu_error_print_vma(m, NULL, error_uc->guc.vma_ctb); in err_print_uc() 813 if (gt->uc && gt->uc->guc.is_guc_capture) { in err_print_gt_engines() 881 if (error->gt->uc && error->gt->uc->guc.is_guc_capture) in __err_print_to_sgl() 1038 i915_vma_coredump_free(uc->guc.vma_log); in cleanup_uc() 1039 i915_vma_coredump_free(uc->guc.vma_ctb); in cleanup_uc() [all …]
|