| /linux-6.15/drivers/gpu/drm/xe/ |
| H A D | xe_hw_engine.c | 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() 318 xe_gt_assert(hwe->gt, !(reg.addr & hwe->mmio_base)); in xe_hw_engine_mmio_read32() 319 xe_force_wake_assert_held(gt_to_fw(hwe->gt), hwe->domain); in xe_hw_engine_mmio_read32() 508 hwe->gt = gt; in hw_engine_init_early() 520 hwe->eclass = >->eclass[hwe->class]; in hw_engine_init_early() 558 hwe->eclass->defaults = hwe->eclass->sched_props; in hw_engine_init_early() 561 xe_reg_sr_init(&hwe->reg_sr, hwe->name, gt_to_xe(gt)); in hw_engine_init_early() 619 hwe->exl_port = xe_execlist_port_create(xe, hwe); in hw_engine_init() 856 hwe->irq_handler(hwe, intr_vec); in xe_hw_engine_handle_irq() [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_rtp.c | 34 struct xe_hw_engine *hwe, in rule_matches() argument 99 if (drm_WARN_ON(&xe->drm, !hwe)) in rule_matches() 111 match = r->match_func(gt, hwe); in rule_matches() 173 mmio_base = hwe->mmio_base; in rtp_process_one_sr() 184 struct xe_hw_engine **hwe, in rtp_get_context() argument 190 *hwe = NULL; in rtp_get_context() 195 *hwe = ctx->hwe; in rtp_get_context() 196 *gt = (*hwe)->gt; in rtp_get_context() 255 struct xe_hw_engine *hwe = NULL; in xe_rtp_process_to_sr() local 301 struct xe_hw_engine *hwe; in xe_rtp_process() local [all …]
|
| H A D | xe_execlist.c | 47 struct xe_gt *gt = hwe->gt; in __start_lrc() 63 if (hwe->class == XE_ENGINE_CLASS_COMPUTE) in __start_lrc() 83 xe_bo_ggtt_addr(hwe->hwsp)); in __start_lrc() 86 if (xe_device_has_msix(gt_to_xe(hwe->gt))) in __start_lrc() 132 __start_lrc(port->hwe, port->lrc, 0); in __xe_execlist_port_idle() 173 struct xe_gt *gt = hwe->gt; in read_execlist_status() 258 struct xe_hw_engine *hwe) in xe_execlist_port_create() argument 270 port->hwe = hwe; in xe_execlist_port_create() 304 port->hwe->irq_handler = NULL; in xe_execlist_port_destroy() 345 .name = q->hwe->name, in execlist_exec_queue_init() [all …]
|
| H A D | xe_reg_whitelist.c | 23 const struct xe_hw_engine *hwe) in match_not_render() argument 25 return hwe->class != XE_ENGINE_CLASS_RENDER; in match_not_render() 93 static void whitelist_apply_to_hwe(struct xe_hw_engine *hwe) in whitelist_apply_to_hwe() argument 95 struct xe_reg_sr *sr = &hwe->reg_whitelist; in whitelist_apply_to_hwe() 102 p = xe_gt_dbg_printer(hwe->gt); in whitelist_apply_to_hwe() 107 .reg = RING_FORCE_TO_NONPRIV(hwe->mmio_base, slot), in whitelist_apply_to_hwe() 114 xe_gt_err(hwe->gt, in whitelist_apply_to_hwe() 116 hwe->name, RING_MAX_NONPRIV_SLOTS); in whitelist_apply_to_hwe() 121 xe_reg_sr_add(&hwe->reg_sr, &hwe_entry, hwe->gt); in whitelist_apply_to_hwe() 140 &hwe->reg_whitelist); in xe_reg_whitelist_process_engine() [all …]
|
| H A D | xe_gt.c | 268 struct xe_hw_engine *hwe; in xe_gt_record_default_lrcs() local 279 xe_reg_sr_init(&hwe->reg_lrc, hwe->name, xe); in xe_gt_record_default_lrcs() 280 xe_wa_process_lrc(hwe); in xe_gt_record_default_lrcs() 295 hwe->name, q); in xe_gt_record_default_lrcs() 312 hwe->name, nop_q); in xe_gt_record_default_lrcs() 656 struct xe_hw_engine *hwe; in xe_gt_record_user_engines() local 716 struct xe_hw_engine *hwe; in do_gt_restart() local 969 return hwe; in xe_gt_hw_engine() 986 return hwe; in xe_gt_any_hw_engine_by_reset_domain() 990 return hwe; in xe_gt_any_hw_engine_by_reset_domain() [all …]
|
| H A D | xe_guc_engine_activity.c | 28 u16 guc_class = xe_engine_class_to_guc_class(hwe->class); in engine_activity_map() 32 engine_activity[guc_class][hwe->logical_instance]); in engine_activity_map() 123 struct xe_guc *guc = &hwe->gt->uc.guc; in hw_engine_to_engine_activity() 125 u16 guc_class = xe_engine_class_to_guc_class(hwe->class); in hw_engine_to_engine_activity() 127 return &eag->engine[guc_class][hwe->logical_instance]; in hw_engine_to_engine_activity() 154 activity_map = engine_activity_map(guc, hwe); in get_engine_active_ticks() 192 trace_xe_guc_engine_activity(xe, ea, hwe->name, hwe->instance); in get_engine_active_ticks() 208 activity_map = engine_activity_map(guc, hwe); in get_engine_total_ticks() 227 trace_xe_guc_engine_activity(xe, ea, hwe->name, hwe->instance); in get_engine_total_ticks() 280 return get_engine_active_ticks(guc, hwe); in xe_guc_engine_activity_active_ticks() [all …]
|
| H A D | xe_exec_queue.c | 60 struct xe_gt *gt = hwe->gt; in __xe_exec_queue_alloc() 72 q->hwe = hwe; in __xe_exec_queue_alloc() 74 q->class = hwe->class; in __xe_exec_queue_alloc() 221 if (hwe->class == class) { in xe_exec_queue_create_class() 224 hwe0 = hwe; in xe_exec_queue_create_class() 265 if (!hwe) { in xe_exec_queue_create_bind() 271 BIT(hwe->logical_instance), 1, hwe, in xe_exec_queue_create_bind() 561 struct xe_hw_engine *hwe; in calc_validate_logical_mask() local 566 if (XE_IOCTL_DBG(xe, !hwe)) in calc_validate_logical_mask() 603 struct xe_hw_engine *hwe; in xe_exec_queue_create_ioctl() local [all …]
|
| H A D | xe_drm_client.c | 281 if (hwe) in any_engine() 282 return hwe; in any_engine() 294 struct xe_hw_engine *hwe; in force_wake_get_any_engine() local 297 hwe = any_engine(xe); in force_wake_get_any_engine() 298 if (!hwe) in force_wake_get_any_engine() 301 domain = xe_hw_engine_to_fw_domain(hwe); in force_wake_get_any_engine() 302 fw = gt_to_fw(hwe->gt); in force_wake_get_any_engine() 310 *phwe = hwe; in force_wake_get_any_engine() 322 struct xe_hw_engine *hwe; in show_run_ticks() local 361 gpu_timestamp = xe_hw_engine_read_timestamp(hwe); in show_run_ticks() [all …]
|
| H A D | xe_memirq.c | 278 return __memirq_source_page(memirq, hwe->instance); in xe_memirq_source_ptr() 304 return __memirq_status_page(memirq, hwe->instance); in xe_memirq_status_ptr() 419 struct xe_hw_engine *hwe) in memirq_dispatch_engine() argument 421 memirq_debug(memirq, "STATUS %s %*ph\n", hwe->name, 16, status->vaddr); in memirq_dispatch_engine() 424 xe_hw_engine_handle_irq(hwe, GT_RENDER_USER_INTERRUPT); in memirq_dispatch_engine() 450 u16 offset = hwe->irq_offset; in xe_memirq_hwe_handler() 451 u16 instance = hw_reports_to_instance_zero(memirq) ? hwe->instance : 0; in xe_memirq_hwe_handler() 459 memirq_dispatch_engine(memirq, &status_offset, hwe); in xe_memirq_hwe_handler() 473 struct xe_hw_engine *hwe; in xe_memirq_handler() local 490 for_each_hw_engine(hwe, gt, id) in xe_memirq_handler() [all …]
|
| H A D | xe_lrc.c | 111 const struct xe_hw_engine *hwe) in set_offsets() argument 121 const u32 base = hwe->mmio_base; in set_offsets() 142 xe_gt_assert(hwe->gt, count); in set_offsets() 626 x = lrc_ring_mi_mode(hwe); in reset_stop_ring() 875 struct xe_gt *gt = hwe->gt; in empty_lrc_data() 885 set_offsets(regs, reg_offsets(gt_to_xe(gt), hwe->class), hwe); in empty_lrc_data() 888 reset_stop_ring(regs, hwe); in empty_lrc_data() 981 struct xe_gt *gt = hwe->gt; in xe_lrc_init() 1024 hwe->fence_irq, hwe->name); in xe_lrc_init() 1912 struct xe_hw_engine *hwe; in get_ctx_timestamp() local [all …]
|
| H A D | xe_guc_ads.c | 239 struct xe_hw_engine *hwe; in calculate_regset_size() local 243 for_each_hw_engine(hwe, gt, id) in calculate_regset_size() 257 struct xe_hw_engine *hwe; in engine_enable_mask() local 261 for_each_hw_engine(hwe, gt, id) in engine_enable_mask() 262 if (hwe->class == class) in engine_enable_mask() 263 mask |= BIT(hwe->instance); in engine_enable_mask() 559 struct xe_hw_engine *hwe; in guc_mapping_table_init() local 570 hwe->instance); in guc_mapping_table_init() 764 .skip = hwe != hwe_rcs_reset_domain || !xe_gt_ccs_mode_enabled(hwe->gt) }, in guc_mmio_regset_write() 780 if (XE_WA(hwe->gt, 1607983814) && hwe->class == XE_ENGINE_CLASS_RENDER) { in guc_mmio_regset_write() [all …]
|
| H A D | xe_tuning.c | 182 void xe_tuning_process_engine(struct xe_hw_engine *hwe) in xe_tuning_process_engine() argument 184 struct xe_rtp_process_ctx ctx = XE_RTP_PROCESS_CTX_INITIALIZER(hwe); in xe_tuning_process_engine() 187 hwe->gt->tuning_active.engine, in xe_tuning_process_engine() 190 &hwe->reg_sr); in xe_tuning_process_engine() 202 void xe_tuning_process_lrc(struct xe_hw_engine *hwe) in xe_tuning_process_lrc() argument 204 struct xe_rtp_process_ctx ctx = XE_RTP_PROCESS_CTX_INITIALIZER(hwe); in xe_tuning_process_lrc() 207 hwe->gt->tuning_active.lrc, in xe_tuning_process_lrc() 209 xe_rtp_process_to_sr(&ctx, lrc_tunings, ARRAY_SIZE(lrc_tunings), &hwe->reg_lrc); in xe_tuning_process_lrc()
|
| H A D | xe_query.c | 50 struct xe_hw_engine *hwe; in calc_hw_engine_info_size() local 57 for_each_hw_engine(hwe, gt, id) { in calc_hw_engine_info_size() 58 if (xe_hw_engine_is_reserved(hwe)) in calc_hw_engine_info_size() 94 struct xe_mmio *mmio = &hwe->gt->mmio; in hwe_read_timestamp() 121 struct xe_hw_engine *hwe; in query_engine_cycles() local 156 if (!hwe) in query_engine_cycles() 192 struct xe_hw_engine *hwe; in query_engines() local 210 for_each_hw_engine(hwe, gt, id) { in query_engines() 211 if (xe_hw_engine_is_reserved(hwe)) in query_engines() 217 hwe->logical_instance; in query_engines() [all …]
|
| H A D | xe_gt_debugfs.c | 92 struct xe_hw_engine *hwe; in hw_engines() local 104 for_each_hw_engine(hwe, gt, id) in hw_engines() 105 xe_hw_engine_print(hwe, p); in hw_engines() 186 struct xe_hw_engine *hwe; in register_save_restore() local 195 for_each_hw_engine(hwe, gt, id) in register_save_restore() 196 xe_reg_sr_dump(&hwe->reg_sr, p); in register_save_restore() 200 for_each_hw_engine(hwe, gt, id) in register_save_restore() 201 xe_reg_sr_dump(&hwe->reg_lrc, p); in register_save_restore() 205 for_each_hw_engine(hwe, gt, id) in register_save_restore() 206 xe_reg_whitelist_dump(&hwe->reg_whitelist, p); in register_save_restore()
|
| H A D | xe_gt_ccs_mode.c | 49 struct xe_hw_engine *hwe; in __xe_gt_apply_ccs_mode() local 52 for_each_hw_engine(hwe, gt, id) { in __xe_gt_apply_ccs_mode() 53 if (hwe->class != XE_ENGINE_CLASS_COMPUTE) in __xe_gt_apply_ccs_mode() 56 if (hwe->logical_instance >= num_engines) in __xe_gt_apply_ccs_mode() 59 config |= BIT(hwe->instance) << XE_HW_ENGINE_CCS0; in __xe_gt_apply_ccs_mode() 66 mode |= CCS_MODE_CSLICE(cslice, hwe->instance); in __xe_gt_apply_ccs_mode()
|
| H A D | xe_guc_capture.c | 408 struct xe_hw_engine *hwe; in guc_capture_alloc_steered_lists() local 767 struct xe_hw_engine *hwe; in guc_capture_output_size_est() local 1580 struct xe_gt *gt = hwe->gt; in xe_engine_manual_capture() 1612 hwe->name); in xe_engine_manual_capture() 1641 new->eng_inst = hwe->instance; in xe_engine_manual_capture() 1801 gt = snapshot->hwe->gt; in xe_engine_snapshot_print() 1855 struct xe_hw_engine *hwe; in xe_guc_capture_get_matching_and_lock() local 1874 if (hwe != q->hwe) in xe_guc_capture_get_matching_and_lock() 1916 struct xe_hw_engine *hwe; in xe_engine_snapshot_capture_for_queue() local 1924 if (hwe->class != q->hwe->class || in xe_engine_snapshot_capture_for_queue() [all …]
|
| H A D | xe_oa.c | 89 struct xe_hw_engine *hwe; member 1687 stream->hwe = param->hwe; in xe_oa_stream_init() 1898 return hwe->oa_unit && hwe->oa_unit->num_engines ? in xe_oa_unit_id() 1912 struct xe_hw_engine *hwe; in xe_oa_assign_hwe() local 1919 param->hwe = hwe; in xe_oa_assign_hwe() 1926 if (!param->hwe || xe_oa_unit_id(param->hwe) != param->oa_unit_id) { in xe_oa_assign_hwe() 2460 xe_gt_WARN_ON(hwe->gt, hwe->gt->info.type != XE_GT_TYPE_MEDIA); in __hwe_oam_unit() 2470 switch (hwe->class) { in __hwe_oa_unit() 2544 struct xe_hw_engine *hwe; in xe_oa_init_gt() local 2555 hwe->oa_unit = NULL; in xe_oa_init_gt() [all …]
|
| 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() 90 struct xe_hw_engine *hwe; in allocate_gsc_client_resources() local 98 hwe = xe_gt_hw_engine(gt, XE_ENGINE_CLASS_OTHER, 0, true); in allocate_gsc_client_resources() 101 xe_assert(xe, hwe); in allocate_gsc_client_resources() 132 q = xe_exec_queue_create(xe, vm, BIT(hwe->logical_instance), 1, hwe, in allocate_gsc_client_resources() 361 xe_assert(xe, q->hwe->engine_id == XE_HW_ENGINE_GSCCS0); in pxp_pkt_submit()
|
| H A D | xe_hw_engine_group.c | 83 struct xe_hw_engine *hwe; in xe_hw_engine_setup_groups() local 107 for_each_hw_engine(hwe, gt, id) { in xe_hw_engine_setup_groups() 108 switch (hwe->class) { in xe_hw_engine_setup_groups() 110 hwe->hw_engine_group = group_bcs; in xe_hw_engine_setup_groups() 114 hwe->hw_engine_group = group_rcs_ccs; in xe_hw_engine_setup_groups() 118 hwe->hw_engine_group = group_vcs_vecs; in xe_hw_engine_setup_groups()
|
| H A D | xe_pmu.c | 93 struct xe_hw_engine *hwe; in event_to_hwe() local 99 hwe = xe_hw_engine_lookup(xe, eci); in event_to_hwe() 100 if (!hwe || xe_hw_engine_is_reserved(hwe)) in event_to_hwe() 103 return hwe; in event_to_hwe() 244 struct xe_hw_engine *hwe; in read_engine_events() local 247 hwe = event_to_hwe(event); in read_engine_events() 249 val = xe_guc_engine_activity_active_ticks(>->uc.guc, hwe); in read_engine_events() 251 val = xe_guc_engine_activity_total_ticks(>->uc.guc, hwe); in read_engine_events()
|
| /linux-6.15/drivers/net/ethernet/airoha/ |
| H A D | airoha_ppe_debugfs.c | 65 struct airoha_foe_entry *hwe; in airoha_ppe_debugfs_foe_show() local 70 if (!hwe) in airoha_ppe_debugfs_foe_show() 98 src_port = &hwe->ipv6.src_port; in airoha_ppe_debugfs_foe_show() 103 src_addr = &hwe->ipv6.src_ip; in airoha_ppe_debugfs_foe_show() 104 dest_addr = &hwe->ipv6.dest_ip; in airoha_ppe_debugfs_foe_show() 136 data = hwe->ipv6.data; in airoha_ppe_debugfs_foe_show() 137 ib2 = hwe->ipv6.ib2; in airoha_ppe_debugfs_foe_show() 138 l2 = &hwe->ipv6.l2; in airoha_ppe_debugfs_foe_show() 140 data = hwe->ipv4.data; in airoha_ppe_debugfs_foe_show() 141 ib2 = hwe->ipv4.ib2; in airoha_ppe_debugfs_foe_show() [all …]
|
| H A D | airoha_ppe.c | 210 memset(hwe, 0, sizeof(*hwe)); in airoha_ppe_foe_entry_prepare() 218 hwe->ib1 = val; in airoha_ppe_foe_entry_prepare() 372 hv1 = hwe->ipv6.src_ip[3] ^ hwe->ipv6.dest_ip[3]; in airoha_ppe_foe_get_entry_hash() 375 hv2 = hwe->ipv6.src_ip[2] ^ hwe->ipv6.dest_ip[2]; in airoha_ppe_foe_get_entry_hash() 378 hv3 = hwe->ipv6.src_ip[1] ^ hwe->ipv6.dest_ip[1]; in airoha_ppe_foe_get_entry_hash() 440 return !memcmp(&e->data.d, &hwe->d, len - sizeof(hwe->ib1)); in airoha_ppe_foe_compare_entry() 447 struct airoha_foe_entry *hwe = ppe->foe + hash * sizeof(*hwe); in airoha_ppe_foe_commit_entry() local 451 memcpy(&hwe->d, &e->d, sizeof(*hwe) - sizeof(hwe->ib1)); in airoha_ppe_foe_commit_entry() 456 hwe->ib1 = e->ib1; in airoha_ppe_foe_commit_entry() 489 if (!hwe) in airoha_ppe_foe_insert_entry() [all …]
|
| /linux-6.15/drivers/net/ethernet/mediatek/ |
| H A D | mtk_ppe.c | 520 hwe->ib1 &= ~MTK_FOE_IB1_STATE; in __mtk_foe_entry_clear() 559 struct mtk_foe_entry *hwe; in mtk_flow_entry_update_l2() local 569 ib1 = READ_ONCE(hwe->ib1); in mtk_flow_entry_update_l2() 591 struct mtk_foe_entry *hwe; in mtk_flow_entry_update() local 622 struct mtk_foe_entry *hwe; in __mtk_foe_entry_commit() local 635 hwe = mtk_foe_get_entry(ppe, hash); in __mtk_foe_entry_commit() 636 memcpy(&hwe->data, &entry->data, eth->soc->foe_entry_size - sizeof(hwe->ib1)); in __mtk_foe_entry_commit() 638 hwe->ib1 = entry->ib1; in __mtk_foe_entry_commit() 719 hwe = mtk_foe_get_entry(ppe, hash); in mtk_foe_entry_commit_subflow() 968 struct mtk_foe_entry *hwe; in mtk_ppe_init_foe_table() local [all …]
|