mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-29 05:52:38 -04:00
drm/xe: Add functions to convert regular address to canonical address and back
Some instructions requires canonical address like MI_BATCH_BUFFER_START(UMDs must call xe_exec with a canonical address for Xe2+). So here adding functions to convert regular address to canonical address and back, the first user of this functions will be added in the next patch. v3: - inline removed - rename highest_address_bit_get() to ppgtt_msb_get() v4: - use xe->info.va_bits instead of xe->info.dma_mask_size BSpec: 47626 Cc: Matt Roper <matthew.d.roper@intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Maarten Lankhorst <dev@lankhorst.se> Cc: Stuart Summers <stuart.summers@intel.com> Cc: Jani Nikula <jani.nikula@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240130135648.30211-1-jose.souza@intel.com
This commit is contained in:
@@ -747,3 +747,13 @@ void xe_device_snapshot_print(struct xe_device *xe, struct drm_printer *p)
|
||||
drm_printf(p, "\tCS reference clock: %u\n", gt->info.reference_clock);
|
||||
}
|
||||
}
|
||||
|
||||
u64 xe_device_canonicalize_addr(struct xe_device *xe, u64 address)
|
||||
{
|
||||
return sign_extend64(address, xe->info.va_bits - 1);
|
||||
}
|
||||
|
||||
u64 xe_device_uncanonicalize_addr(struct xe_device *xe, u64 address)
|
||||
{
|
||||
return address & GENMASK_ULL(xe->info.va_bits - 1, 0);
|
||||
}
|
||||
|
||||
@@ -177,4 +177,7 @@ u32 xe_device_ccs_bytes(struct xe_device *xe, u64 size);
|
||||
|
||||
void xe_device_snapshot_print(struct xe_device *xe, struct drm_printer *p);
|
||||
|
||||
u64 xe_device_canonicalize_addr(struct xe_device *xe, u64 address);
|
||||
u64 xe_device_uncanonicalize_addr(struct xe_device *xe, u64 address);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user