drm/xe: Allow const propagation in gt_to_xe()

Replace the inline function with a _Generic() so gt_to_xe() can work
with a const struct xe_gt*, which leads to a const struct xe *.
This allows a const gt being passed around and when the xe device is
needed, compiler won't issue a warning that calling gt_to_xe() would
discard the const. Rather, just propagate the const to the xe pointer
being returned.

Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
Lucas De Marchi 2023-03-03 22:26:55 -08:00 committed by Rodrigo Vivi
parent 6b980aa88d
commit 8846ffb457

View File

@ -49,10 +49,10 @@ static inline bool xe_gt_is_media_type(struct xe_gt *gt)
return gt->info.type == XE_GT_TYPE_MEDIA;
}
static inline struct xe_device * gt_to_xe(struct xe_gt *gt)
{
return gt->xe;
}
#define gt_to_xe(gt__) \
_Generic(gt__, \
const struct xe_gt *: (const struct xe_device *)((gt__)->xe), \
struct xe_gt *: (gt__)->xe)
static inline bool xe_gt_is_usm_hwe(struct xe_gt *gt, struct xe_hw_engine *hwe)
{