1 /* SPDX-License-Identifier: MIT */ 2 /* 3 * Copyright © 2022 Intel Corporation 4 */ 5 6 #ifndef _XE_LRC_TYPES_H_ 7 #define _XE_LRC_TYPES_H_ 8 9 #include <linux/kref.h> 10 11 #include "xe_hw_fence_types.h" 12 13 struct xe_bo; 14 15 /** 16 * struct xe_lrc - Logical ring context (LRC) and submission ring object 17 */ 18 struct xe_lrc { 19 /** 20 * @bo: buffer object (memory) for logical ring context, per process HW 21 * status page, and submission ring. 22 */ 23 struct xe_bo *bo; 24 25 /** @size: size of lrc including any indirect ring state page */ 26 u32 size; 27 28 /** @tile: tile which this LRC belongs to */ 29 struct xe_tile *tile; 30 31 /** @flags: LRC flags */ 32 #define XE_LRC_FLAG_INDIRECT_RING_STATE 0x1 33 u32 flags; 34 35 /** @refcount: ref count of this lrc */ 36 struct kref refcount; 37 38 /** @ring: submission ring state */ 39 struct { 40 /** @ring.size: size of submission ring */ 41 u32 size; 42 /** @ring.tail: tail of submission ring */ 43 u32 tail; 44 /** @ring.old_tail: shadow of tail */ 45 u32 old_tail; 46 } ring; 47 48 /** @desc: LRC descriptor */ 49 u64 desc; 50 51 /** @fence_ctx: context for hw fence */ 52 struct xe_hw_fence_ctx fence_ctx; 53 54 /** @ctx_timestamp: readout value of CTX_TIMESTAMP on last update */ 55 u32 ctx_timestamp; 56 }; 57 58 struct xe_lrc_snapshot; 59 60 #endif 61