mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 12:57:53 +00:00
drm/xe/display: Avoid calling readq()
readq() is not available in 32bits and i915_gem_object_read_from_page() is supposed to allow reading arbitrary sizes determined by the `size` argument. Currently the only caller only passes a size == 8 so the second problem is not that big. Migrate to calling memcpy()/memcpy_fromio() to allow possible changes in the display side and to fix the build on 32b architectures. v2: Use memcpy/memcpy_fromio directly rather than using iosys-map with the same size == 8 bytes restriction (Matt Roper) Fixes:44e694958b
("drm/xe/display: Implement display support") Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240119001612.2991381-4-lucas.demarchi@intel.com (cherry picked from commit406663f777
) Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
This commit is contained in:
parent
52e8948c6b
commit
981460d8ee
1 changed files with 5 additions and 6 deletions
|
@ -35,12 +35,10 @@ static inline int i915_gem_object_read_from_page(struct xe_bo *bo,
|
|||
u32 ofs, u64 *ptr, u32 size)
|
||||
{
|
||||
struct ttm_bo_kmap_obj map;
|
||||
void *virtual;
|
||||
void *src;
|
||||
bool is_iomem;
|
||||
int ret;
|
||||
|
||||
XE_WARN_ON(size != 8);
|
||||
|
||||
ret = xe_bo_lock(bo, true);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
@ -50,11 +48,12 @@ static inline int i915_gem_object_read_from_page(struct xe_bo *bo,
|
|||
goto out_unlock;
|
||||
|
||||
ofs &= ~PAGE_MASK;
|
||||
virtual = ttm_kmap_obj_virtual(&map, &is_iomem);
|
||||
src = ttm_kmap_obj_virtual(&map, &is_iomem);
|
||||
src += ofs;
|
||||
if (is_iomem)
|
||||
*ptr = readq((void __iomem *)(virtual + ofs));
|
||||
memcpy_fromio(ptr, (void __iomem *)src, size);
|
||||
else
|
||||
*ptr = *(u64 *)(virtual + ofs);
|
||||
memcpy(ptr, src, size);
|
||||
|
||||
ttm_bo_kunmap(&map);
|
||||
out_unlock:
|
||||
|
|
Loading…
Reference in a new issue