mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 03:24:19 +02:00
drm/xe/mmio: Account for GSI offset when checking ranges
Change xe_mmio_in_range() to use the same logic to account for the GT's adj_offset as the read and write functions. This is needed when checking ranges for the MCR registers if the GT has an offset to adjust. Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Link: https://lore.kernel.org/r/20230908225227.1276610-1-lucas.demarchi@intel.com Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
9e6fe003d8
commit
9fa81f914a
|
|
@ -448,7 +448,7 @@ static bool xe_gt_mcr_get_nonterminated_steering(struct xe_gt *gt,
|
|||
continue;
|
||||
|
||||
for (int i = 0; gt->steering[type].ranges[i].end > 0; i++) {
|
||||
if (xe_mmio_in_range(>->steering[type].ranges[i], reg)) {
|
||||
if (xe_mmio_in_range(gt, >->steering[type].ranges[i], reg)) {
|
||||
*group = gt->steering[type].group_target;
|
||||
*instance = gt->steering[type].instance_target;
|
||||
return true;
|
||||
|
|
@ -459,7 +459,7 @@ static bool xe_gt_mcr_get_nonterminated_steering(struct xe_gt *gt,
|
|||
implicit_ranges = gt->steering[IMPLICIT_STEERING].ranges;
|
||||
if (implicit_ranges)
|
||||
for (int i = 0; implicit_ranges[i].end > 0; i++)
|
||||
if (xe_mmio_in_range(&implicit_ranges[i], reg))
|
||||
if (xe_mmio_in_range(gt, &implicit_ranges[i], reg))
|
||||
return false;
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -127,9 +127,13 @@ static inline int xe_mmio_wait32(struct xe_gt *gt, struct xe_reg reg, u32 mask,
|
|||
int xe_mmio_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file);
|
||||
|
||||
static inline bool xe_mmio_in_range(const struct xe_mmio_range *range,
|
||||
static inline bool xe_mmio_in_range(const struct xe_gt *gt,
|
||||
const struct xe_mmio_range *range,
|
||||
struct xe_reg reg)
|
||||
{
|
||||
if (reg.addr < gt->mmio.adj_limit)
|
||||
reg.addr += gt->mmio.adj_offset;
|
||||
|
||||
return range && reg.addr >= range->start && reg.addr <= range->end;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user