brintos

brintos / linux-shallow public Read only

0
0
Text · 2.7 KiB · ee138e9 Raw
98 lines · c
1/* SPDX-License-Identifier: MIT */2/*3 * Copyright © 2022 Intel Corporation4 */5 6#ifndef _XE_GT_H_7#define _XE_GT_H_8 9#include <linux/fault-inject.h>10 11#include <drm/drm_util.h>12 13#include "xe_device.h"14#include "xe_device_types.h"15#include "xe_hw_engine.h"16 17#define for_each_hw_engine(hwe__, gt__, id__) \18	for ((id__) = 0; (id__) < ARRAY_SIZE((gt__)->hw_engines); (id__)++) \19		for_each_if(((hwe__) = (gt__)->hw_engines + (id__)) && \20			  xe_hw_engine_is_valid((hwe__)))21 22#define CCS_MASK(gt) (((gt)->info.engine_mask & XE_HW_ENGINE_CCS_MASK) >> XE_HW_ENGINE_CCS0)23 24extern struct fault_attr gt_reset_failure;25static inline bool xe_fault_inject_gt_reset(void)26{27	return should_fail(&gt_reset_failure, 1);28}29 30struct xe_gt *xe_gt_alloc(struct xe_tile *tile);31int xe_gt_init_hwconfig(struct xe_gt *gt);32int xe_gt_init_early(struct xe_gt *gt);33int xe_gt_init(struct xe_gt *gt);34void xe_gt_declare_wedged(struct xe_gt *gt);35int xe_gt_record_default_lrcs(struct xe_gt *gt);36 37/**38 * xe_gt_record_user_engines - save data related to engines available to39 * usersapce40 * @gt: GT structure41 *42 * Walk the available HW engines from gt->info.engine_mask and calculate data43 * related to those engines that may be used by userspace. To be used whenever44 * available engines change in runtime (e.g. with ccs_mode) or during45 * initialization46 */47void xe_gt_record_user_engines(struct xe_gt *gt);48 49void xe_gt_suspend_prepare(struct xe_gt *gt);50int xe_gt_suspend(struct xe_gt *gt);51int xe_gt_resume(struct xe_gt *gt);52void xe_gt_reset_async(struct xe_gt *gt);53void xe_gt_sanitize(struct xe_gt *gt);54int xe_gt_sanitize_freq(struct xe_gt *gt);55void xe_gt_remove(struct xe_gt *gt);56 57/**58 * xe_gt_any_hw_engine_by_reset_domain - scan the list of engines and return the59 * first that matches the same reset domain as @class60 * @gt: GT structure61 * @class: hw engine class to lookup62 */63struct xe_hw_engine *64xe_gt_any_hw_engine_by_reset_domain(struct xe_gt *gt, enum xe_engine_class class);65 66/**67 * xe_gt_any_hw_engine - scan the list of engines and return the68 * first available69 * @gt: GT structure70 */71struct xe_hw_engine *xe_gt_any_hw_engine(struct xe_gt *gt);72 73struct xe_hw_engine *xe_gt_hw_engine(struct xe_gt *gt,74				     enum xe_engine_class class,75				     u16 instance,76				     bool logical);77 78static inline bool xe_gt_has_indirect_ring_state(struct xe_gt *gt)79{80	return gt->info.has_indirect_ring_state &&81	       xe_device_uc_enabled(gt_to_xe(gt));82}83 84static inline bool xe_gt_is_media_type(struct xe_gt *gt)85{86	return gt->info.type == XE_GT_TYPE_MEDIA;87}88 89static inline bool xe_gt_is_usm_hwe(struct xe_gt *gt, struct xe_hw_engine *hwe)90{91	struct xe_device *xe = gt_to_xe(gt);92 93	return xe->info.has_usm && hwe->class == XE_ENGINE_CLASS_COPY &&94		hwe->instance == gt->usm.reserved_bcs_instance;95}96 97#endif98