| /linux/drivers/gpu/drm/xe/ |
| H A D | xe_hw_engine.c | 277 struct xe_hw_engine *hwe = arg; in hw_engine_fini() local 279 if (hwe->exl_port) in hw_engine_fini() 280 xe_execlist_port_destroy(hwe->exl_port); in hw_engine_fini() 282 hwe->gt = NULL; in hw_engine_fini() 295 void xe_hw_engine_mmio_write32(struct xe_hw_engine *hwe, in xe_hw_engine_mmio_write32() argument 298 xe_gt_assert(hwe->gt, !(reg.addr & hwe->mmio_base)); in xe_hw_engine_mmio_write32() 299 xe_force_wake_assert_held(gt_to_fw(hwe->gt), hwe->domain); in xe_hw_engine_mmio_write32() 301 reg.addr += hwe->mmio_base; in xe_hw_engine_mmio_write32() 303 xe_mmio_write32(&hwe->gt->mmio, reg, val); in xe_hw_engine_mmio_write32() 316 u32 xe_hw_engine_mmio_read32(struct xe_hw_engine *hwe, struct xe_reg reg) in xe_hw_engine_mmio_read32() argument [all …]
|
| H A D | xe_execlist.c | 43 static void __start_lrc(struct xe_hw_engine *hwe, struct xe_lrc *lrc, in __start_lrc() argument 46 struct xe_gt *gt = hwe->gt; in __start_lrc() 55 xe_gt_assert(hwe->gt, FIELD_FIT(XEHP_SW_CTX_ID, ctx_id)); in __start_lrc() 58 xe_gt_assert(hwe->gt, FIELD_FIT(SW_CTX_ID, ctx_id)); in __start_lrc() 62 if (hwe->class == XE_ENGINE_CLASS_COMPUTE) in __start_lrc() 81 xe_mmio_write32(mmio, RING_HWS_PGA(hwe->mmio_base), in __start_lrc() 82 xe_bo_ggtt_addr(hwe->hwsp)); in __start_lrc() 83 xe_mmio_read32(mmio, RING_HWS_PGA(hwe->mmio_base)); in __start_lrc() 85 if (xe_device_has_msix(gt_to_xe(hwe->gt))) in __start_lrc() 87 xe_mmio_write32(mmio, RING_MODE(hwe->mmio_base), ring_mode); in __start_lrc() [all …]
|
| H A D | xe_hw_engine.h | 54 void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec); 55 void xe_hw_engine_enable_ring(struct xe_hw_engine *hwe); 59 xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_exec_queue *q); 61 void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p); 62 void xe_hw_engine_setup_default_lrc_state(struct xe_hw_engine *hwe); 64 bool xe_hw_engine_is_reserved(struct xe_hw_engine *hwe); 70 static inline bool xe_hw_engine_is_valid(struct xe_hw_engine *hwe) in xe_hw_engine_is_valid() argument 72 return hwe->name; in xe_hw_engine_is_valid() 76 u64 xe_hw_engine_read_timestamp(struct xe_hw_engine *hwe); 77 enum xe_force_wake_domains xe_hw_engine_to_fw_domain(struct xe_hw_engine *hwe); [all …]
|
| H A D | xe_gt.c | 218 struct xe_hw_engine *hwe = q->hwe; in emit_wa_job() local 219 struct xe_reg_sr *sr = &hwe->reg_lrc; in emit_wa_job() 261 if (hwe->class == XE_ENGINE_CLASS_RENDER) in emit_wa_job() 266 bb_len += xe_gt_lrc_size(gt, hwe->class) / sizeof(u32); in emit_wa_job() 268 xe_gt_dbg(gt, "LRC %s WA job: %zu dwords\n", hwe->name, bb_len); in emit_wa_job() 314 *cs++ = CS_MMIO_GROUP_INSTANCE_SELECT(hwe->mmio_base).addr; in emit_wa_job() 363 *cs++ = CS_MMIO_GROUP_INSTANCE_SELECT(q->hwe->mmio_base).addr; in emit_wa_job() 382 struct xe_hw_engine *hwe; in xe_gt_record_default_lrcs() local 386 for_each_hw_engine(hwe, gt, id) { in xe_gt_record_default_lrcs() 390 if (gt->default_lrc[hwe->class]) in xe_gt_record_default_lrcs() [all …]
|
| H A D | xe_lrc.c | 177 const struct xe_hw_engine *hwe) in set_offsets() argument 187 const u32 base = hwe->mmio_base; in set_offsets() 208 xe_gt_assert(hwe->gt, count); in set_offsets() 638 static void set_context_control(u32 *regs, struct xe_hw_engine *hwe) in set_context_control() argument 643 if (xe_gt_has_indirect_ring_state(hwe->gt)) in set_context_control() 648 static void set_memory_based_intr(u32 *regs, struct xe_hw_engine *hwe) in set_memory_based_intr() argument 650 struct xe_memirq *memirq = >_to_tile(hwe->gt)->memirq; in set_memory_based_intr() 651 struct xe_device *xe = gt_to_xe(hwe->gt); in set_memory_based_intr() 666 regs[CTX_INT_STATUS_REPORT_PTR] = xe_memirq_status_ptr(memirq, hwe); in set_memory_based_intr() 668 regs[CTX_INT_SRC_REPORT_PTR] = xe_memirq_source_ptr(memirq, hwe); in set_memory_based_intr() [all …]
|
| H A D | xe_guc_engine_activity.c | 25 static struct iosys_map engine_activity_map(struct xe_guc *guc, struct xe_hw_engine *hwe, in engine_activity_map() argument 30 u16 guc_class = xe_engine_class_to_guc_class(hwe->class); in engine_activity_map() 42 engine_activity[guc_class][hwe->logical_instance]); in engine_activity_map() 148 static struct engine_activity *hw_engine_to_engine_activity(struct xe_hw_engine *hwe, in hw_engine_to_engine_activity() argument 151 struct xe_guc *guc = &hwe->gt->uc.guc; in hw_engine_to_engine_activity() 153 u16 guc_class = xe_engine_class_to_guc_class(hwe->class); in hw_engine_to_engine_activity() 155 return &eag->engine[guc_class][hwe->logical_instance]; in hw_engine_to_engine_activity() 169 static u64 get_engine_active_ticks(struct xe_guc *guc, struct xe_hw_engine *hwe, in get_engine_active_ticks() argument 172 struct engine_activity *ea = hw_engine_to_engine_activity(hwe, index); in get_engine_active_ticks() 183 activity_map = engine_activity_map(guc, hwe, index); in get_engine_active_ticks() [all …]
|
| H A D | xe_drm_client.c | 279 struct xe_hw_engine *hwe = xe_gt_any_hw_engine(gt); in any_engine() local 281 if (hwe) in any_engine() 282 return hwe; in any_engine() 298 struct xe_hw_engine *hwe; in force_wake_get_any_engine() local 302 hwe = any_engine(xe); in force_wake_get_any_engine() 303 if (!hwe) in force_wake_get_any_engine() 306 domain = xe_hw_engine_to_fw_domain(hwe); in force_wake_get_any_engine() 308 fw_ref = xe_force_wake_constructor(gt_to_fw(hwe->gt), domain); in force_wake_get_any_engine() 310 *phwe = hwe; /* valid forcewake */ in force_wake_get_any_engine() 321 struct xe_hw_engine *hwe; in show_run_ticks() local [all …]
|
| H A D | xe_exec_queue.c | 201 u16 width, struct xe_hw_engine *hwe, in __xe_exec_queue_alloc() argument 205 struct xe_gt *gt = hwe->gt; in __xe_exec_queue_alloc() 217 q->hwe = hwe; in __xe_exec_queue_alloc() 219 q->class = hwe->class; in __xe_exec_queue_alloc() 223 q->fence_irq = >->fence_irq[hwe->class]; in __xe_exec_queue_alloc() 224 q->ring_ops = gt->ring_ops[hwe->class]; in __xe_exec_queue_alloc() 232 q->sched_props.timeslice_us = hwe->eclass->sched_props.timeslice_us; in __xe_exec_queue_alloc() 234 hwe->eclass->sched_props.preempt_timeout_us; in __xe_exec_queue_alloc() 236 hwe->eclass->sched_props.job_timeout_ms; in __xe_exec_queue_alloc() 319 lrc = xe_lrc_create(q->hwe, q->vm, q->replay_state, in __xe_exec_queue_init() [all …]
|
| H A D | xe_guc_ads.c | 238 struct xe_hw_engine *hwe; in calculate_regset_size() local 242 for_each_hw_engine(hwe, gt, id) in calculate_regset_size() 243 xa_for_each(&hwe->reg_sr.xa, sr_idx, sr_entry) in calculate_regset_size() 256 struct xe_hw_engine *hwe; in engine_enable_mask() local 260 for_each_hw_engine(hwe, gt, id) in engine_enable_mask() 261 if (hwe->class == class) in engine_enable_mask() 262 mask |= BIT(hwe->instance); in engine_enable_mask() 545 struct xe_hw_engine *hwe; in guc_mapping_table_init() local 550 for_each_hw_engine(hwe, gt, id) { in guc_mapping_table_init() 553 guc_class = xe_engine_class_to_guc_class(hwe->class); in guc_mapping_table_init() [all …]
|
| H A D | xe_query.c | 52 struct xe_hw_engine *hwe; in calc_hw_engine_info_size() local 59 for_each_hw_engine(hwe, gt, id) { in calc_hw_engine_info_size() 60 if (xe_hw_engine_is_reserved(hwe)) in calc_hw_engine_info_size() 93 hwe_read_timestamp(struct xe_hw_engine *hwe, u64 *engine_ts, u64 *cpu_ts, in hwe_read_timestamp() argument 96 struct xe_mmio *mmio = &hwe->gt->mmio; in hwe_read_timestamp() 98 struct xe_reg upper_reg = RING_TIMESTAMP_UDW(hwe->mmio_base), in hwe_read_timestamp() 99 lower_reg = RING_TIMESTAMP(hwe->mmio_base); in hwe_read_timestamp() 123 struct xe_hw_engine *hwe; in query_engine_cycles() local 155 hwe = xe_gt_hw_engine(gt, user_to_xe_engine_class[eci->engine_class], in query_engine_cycles() 157 if (!hwe) in query_engine_cycles() [all …]
|
| H A D | xe_oa.c | 96 struct xe_hw_engine *hwe; member 453 if (stream->hwe->class != XE_ENGINE_CLASS_COMPUTE) in __oa_ccs_select() 456 val = REG_FIELD_PREP(OAG_OACONTROL_OA_CCS_SELECT_MASK, stream->hwe->instance); in __oa_ccs_select() 458 REG_FIELD_GET(OAG_OACONTROL_OA_CCS_SELECT_MASK, val) == stream->hwe->instance); in __oa_ccs_select() 751 OACTXCONTROL(stream->hwe->mmio_base), in xe_oa_configure_oar_context() 759 RING_CONTEXT_CONTROL(stream->hwe->mmio_base), in xe_oa_configure_oar_context() 775 OACTXCONTROL(stream->hwe->mmio_base), in xe_oa_configure_oac_context() 783 RING_CONTEXT_CONTROL(stream->hwe->mmio_base), in xe_oa_configure_oac_context() 799 switch (stream->hwe->class) { in xe_oa_configure_oa_context() 858 struct xe_gt *gt = stream->hwe->gt; in xe_oa_stream_destroy() [all …]
|
| H A D | xe_tuning.c | 191 void xe_tuning_process_engine(struct xe_hw_engine *hwe) in xe_tuning_process_engine() argument 193 struct xe_rtp_process_ctx ctx = XE_RTP_PROCESS_CTX_INITIALIZER(hwe); in xe_tuning_process_engine() 196 hwe->gt->tuning_active.engine, in xe_tuning_process_engine() 199 &hwe->reg_sr); in xe_tuning_process_engine() 211 void xe_tuning_process_lrc(struct xe_hw_engine *hwe) in xe_tuning_process_lrc() argument 213 struct xe_rtp_process_ctx ctx = XE_RTP_PROCESS_CTX_INITIALIZER(hwe); in xe_tuning_process_lrc() 216 hwe->gt->tuning_active.lrc, in xe_tuning_process_lrc() 218 xe_rtp_process_to_sr(&ctx, lrc_tunings, ARRAY_SIZE(lrc_tunings), &hwe->reg_lrc); in xe_tuning_process_lrc()
|
| H A D | xe_gt_ccs_mode.c | 50 struct xe_hw_engine *hwe; in __xe_gt_apply_ccs_mode() local 53 for_each_hw_engine(hwe, gt, id) { in __xe_gt_apply_ccs_mode() 54 if (hwe->class != XE_ENGINE_CLASS_COMPUTE) in __xe_gt_apply_ccs_mode() 57 if (hwe->logical_instance >= num_engines) in __xe_gt_apply_ccs_mode() 60 config |= BIT(hwe->instance) << XE_HW_ENGINE_CCS0; in __xe_gt_apply_ccs_mode() 67 mode |= CCS_MODE_CSLICE(cslice, hwe->instance); in __xe_gt_apply_ccs_mode()
|
| H A D | xe_rtp.h | 451 const struct xe_hw_engine *hwe); 471 const struct xe_hw_engine *hwe); 484 const struct xe_hw_engine *hwe); 488 const struct xe_hw_engine *hwe); 492 const struct xe_hw_engine *hwe); 504 const struct xe_hw_engine *hwe);
|
| H A D | xe_memirq.h | 17 u32 xe_memirq_source_ptr(struct xe_memirq *memirq, struct xe_hw_engine *hwe); 18 u32 xe_memirq_status_ptr(struct xe_memirq *memirq, struct xe_hw_engine *hwe); 23 void xe_memirq_hwe_handler(struct xe_memirq *memirq, struct xe_hw_engine *hwe);
|
| H A D | xe_pxp_submit.c | 39 struct xe_hw_engine *hwe; in allocate_vcs_execution_resources() local 44 hwe = xe_gt_hw_engine(gt, XE_ENGINE_CLASS_VIDEO_DECODE, 0, true); in allocate_vcs_execution_resources() 45 if (!hwe) in allocate_vcs_execution_resources() 48 q = xe_exec_queue_create(xe, NULL, BIT(hwe->logical_instance), 1, hwe, in allocate_vcs_execution_resources() 92 struct xe_hw_engine *hwe; in allocate_gsc_client_resources() local 101 hwe = xe_gt_hw_engine(gt, XE_ENGINE_CLASS_OTHER, 0, true); in allocate_gsc_client_resources() 104 xe_assert(xe, hwe); in allocate_gsc_client_resources() 146 q = xe_exec_queue_create(xe, vm, BIT(hwe->logical_instance), 1, hwe, in allocate_gsc_client_resources() 375 xe_assert(xe, q->hwe->engine_id == XE_HW_ENGINE_GSCCS0); in pxp_pkt_submit()
|
| H A D | xe_pmu.c | 104 struct xe_hw_engine *hwe; in event_to_hwe() local 110 hwe = xe_hw_engine_lookup(xe, eci); in event_to_hwe() 111 if (!hwe || xe_hw_engine_is_reserved(hwe)) in event_to_hwe() 114 return hwe; in event_to_hwe() 278 struct xe_hw_engine *hwe; in read_engine_events() local 285 hwe = event_to_hwe(event); in read_engine_events() 287 val = xe_guc_engine_activity_active_ticks(>->uc.guc, hwe, function_id); in read_engine_events() 289 val = xe_guc_engine_activity_total_ticks(>->uc.guc, hwe, function_id); in read_engine_events()
|
| H A D | xe_lrc.h | 53 struct xe_lrc *xe_lrc_create(struct xe_hw_engine *hwe, struct xe_vm *vm, 110 void xe_default_lrc_update_memirq_regs_with_address(struct xe_hw_engine *hwe); 111 void xe_lrc_update_memirq_regs_with_address(struct xe_lrc *lrc, struct xe_hw_engine *hwe, 151 int xe_lrc_setup_wa_bb_with_scratch(struct xe_lrc *lrc, struct xe_hw_engine *hwe,
|
| H A D | xe_tuning.h | 15 void xe_tuning_process_engine(struct xe_hw_engine *hwe); 16 void xe_tuning_process_lrc(struct xe_hw_engine *hwe);
|
| H A D | xe_guc_engine_activity.h | 18 u64 xe_guc_engine_activity_active_ticks(struct xe_guc *guc, struct xe_hw_engine *hwe, 20 u64 xe_guc_engine_activity_total_ticks(struct xe_guc *guc, struct xe_hw_engine *hwe,
|
| H A D | xe_hw_engine_class_sysfs.c | 626 struct xe_hw_engine *hwe; in xe_hw_engine_class_sysfs_init() local 642 for_each_hw_engine(hwe, gt, id) { in xe_hw_engine_class_sysfs_init() 646 if (hwe->class == XE_ENGINE_CLASS_OTHER || in xe_hw_engine_class_sysfs_init() 647 hwe->class == XE_ENGINE_CLASS_MAX) in xe_hw_engine_class_sysfs_init() 650 if ((class_mask >> hwe->class) & 1) in xe_hw_engine_class_sysfs_init() 653 class_mask |= 1 << hwe->class; in xe_hw_engine_class_sysfs_init() 654 name = xe_hw_engine_class_to_str(hwe->class); in xe_hw_engine_class_sysfs_init() 666 keclass->eclass = hwe->eclass; in xe_hw_engine_class_sysfs_init()
|
| H A D | xe_wa.h | 21 void xe_wa_process_engine(struct xe_hw_engine *hwe); 22 void xe_wa_process_lrc(struct xe_hw_engine *hwe);
|
| H A D | xe_rtp_types.h | 92 const struct xe_hw_engine *hwe); 124 struct xe_hw_engine *hwe; member
|
| /linux/drivers/net/ethernet/airoha/ |
| H A D | airoha_ppe_debugfs.c | 67 struct airoha_foe_entry *hwe; in airoha_ppe_debugfs_foe_show() local 71 hwe = airoha_ppe_foe_get_entry(ppe, i); in airoha_ppe_debugfs_foe_show() 72 if (!hwe) in airoha_ppe_debugfs_foe_show() 75 state = FIELD_GET(AIROHA_FOE_IB1_BIND_STATE, hwe->ib1); in airoha_ppe_debugfs_foe_show() 83 type = FIELD_GET(AIROHA_FOE_IB1_BIND_PACKET_TYPE, hwe->ib1); in airoha_ppe_debugfs_foe_show() 92 src_port = &hwe->ipv4.orig_tuple.src_port; in airoha_ppe_debugfs_foe_show() 93 dest_port = &hwe->ipv4.orig_tuple.dest_port; in airoha_ppe_debugfs_foe_show() 96 src_addr = &hwe->ipv4.orig_tuple.src_ip; in airoha_ppe_debugfs_foe_show() 97 dest_addr = &hwe->ipv4.orig_tuple.dest_ip; in airoha_ppe_debugfs_foe_show() 100 src_port = &hwe->ipv6.src_port; in airoha_ppe_debugfs_foe_show() [all …]
|
| /linux/drivers/net/ethernet/mediatek/ |
| H A D | mtk_ppe.c | 518 struct mtk_foe_entry *hwe = mtk_foe_get_entry(ppe, entry->hash); in __mtk_foe_entry_clear() local 520 hwe->ib1 &= ~MTK_FOE_IB1_STATE; in __mtk_foe_entry_clear() 521 hwe->ib1 |= FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_INVALID); in __mtk_foe_entry_clear() 559 struct mtk_foe_entry *hwe; in mtk_flow_entry_update_l2() local 568 hwe = mtk_foe_get_entry(ppe, cur->hash); in mtk_flow_entry_update_l2() 569 ib1 = READ_ONCE(hwe->ib1); in mtk_flow_entry_update_l2() 591 struct mtk_foe_entry *hwe; in mtk_flow_entry_update() local 603 hwe = mtk_foe_get_entry(ppe, entry->hash); in mtk_flow_entry_update() 604 memcpy(&foe, hwe, ppe->eth->soc->foe_entry_size); in mtk_flow_entry_update() 622 struct mtk_foe_entry *hwe; in __mtk_foe_entry_commit() local [all …]
|