All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/7] drm/i915: Use the memcpy_from_wc function from drm
@ 2022-03-03 18:00 ` Balasubramani Vivekanandan
  0 siblings, 0 replies; 33+ messages in thread
From: Balasubramani Vivekanandan @ 2022-03-03 18:00 UTC (permalink / raw)
  To: intel-gfx, dri-devel
  Cc: Thomas Hellstr_m, michael.cheng, Balasubramani Vivekanandan,
	wayne.boyer, Jani Nikula, casey.g.bowman, lucas.demarchi,
	Chris Wilson, Tvrtko Ursulin, siva.mullati, David Airlie,
	Rodrigo Vivi, Nirmoy Das

drm_memcpy_from_wc() performs fast copy from WC memory type using
non-temporal instructions. Now there are two similar implementations of
this function. One exists in drm_cache.c as drm_memcpy_from_wc() and
another implementation in i915/i915_memcpy.c as i915_memcpy_from_wc().
drm_memcpy_from_wc() was the recent addition through the series
https://patchwork.freedesktop.org/patch/436276/?series=90681&rev=6

The goal of this patch series is to change all users of
i915_memcpy_from_wc() to drm_memcpy_from_wc() and a have common
implementation in drm and eventually remove the copy from i915.

Another benefit of using memcpy functions from drm is that
drm_memcpy_from_wc() is available for non-x86 architectures.
i915_memcpy_from_wc() is implemented only for x86 and prevents building
i915 for ARM64.
drm_memcpy_from_wc() does fast copy using non-temporal instructions for
x86 and for other architectures makes use of memcpy() family of
functions as fallback.

Another major difference is unlike i915_memcpy_from_wc(),
drm_memcpy_from_wc() will not fail if the passed address argument is not
alignment to be used with non-temporal load instructions or if the
platform lacks support for those instructions (non-temporal load
instructions are provided through SSE4.1 instruction set extension).
Instead drm_memcpy_from_wc() continues with fallback functions to
complete the copy.
This relieves the caller from checking the return value of
i915_memcpy_from_wc() and explicitly using a fallback.

Follow up series will be created to remove the memcpy_from_wc functions
from i915 once the dependency is completely removed.

v2: Fixed missing check to find if the address is from system memory or
    io memory and use the right initialization function to construct the
    iosys_map structure (Review feedback from Lucas)

Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com> 
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Chris Wilson <chris.p.wilson@intel.com> 
Cc: Thomas Hellstr_m <thomas.hellstrom@linux.intel.com> 
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Nirmoy Das <nirmoy.das@intel.com>

Balasubramani Vivekanandan (7):
  drm: Relax alignment constraint for destination address
  drm: Add drm_memcpy_from_wc() variant which accepts destination
    address
  drm/i915: use the memcpy_from_wc call from the drm
  drm/i915/guc: use the memcpy_from_wc call from the drm
  drm/i915/selftests: use the memcpy_from_wc call from the drm
  drm/i915/gt: Avoid direct dereferencing of io memory
  drm/i915: Avoid dereferencing io mapped memory

 drivers/gpu/drm/drm_cache.c                   | 98 +++++++++++++++++--
 drivers/gpu/drm/i915/gem/i915_gem_object.c    |  6 +-
 drivers/gpu/drm/i915/gt/selftest_reset.c      | 21 ++--
 drivers/gpu/drm/i915/gt/uc/intel_guc_log.c    | 15 ++-
 drivers/gpu/drm/i915/i915_gpu_error.c         | 45 +++++----
 .../drm/i915/selftests/intel_memory_region.c  | 41 +++++---
 include/drm/drm_cache.h                       |  3 +
 7 files changed, 174 insertions(+), 55 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 33+ messages in thread

end of thread, other threads:[~2022-04-12  0:58 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-03 18:00 [PATCH v2 0/7] drm/i915: Use the memcpy_from_wc function from drm Balasubramani Vivekanandan
2022-03-03 18:00 ` [Intel-gfx] " Balasubramani Vivekanandan
2022-03-03 18:00 ` [PATCH v2 1/7] drm: Relax alignment constraint for destination address Balasubramani Vivekanandan
2022-03-03 18:00   ` [Intel-gfx] " Balasubramani Vivekanandan
2022-03-03 18:00 ` [PATCH v2 2/7] drm: Add drm_memcpy_from_wc() variant which accepts " Balasubramani Vivekanandan
2022-03-03 18:00   ` [Intel-gfx] " Balasubramani Vivekanandan
2022-03-21 19:29   ` Lucas De Marchi
2022-03-21 19:29     ` Lucas De Marchi
2022-03-03 18:00 ` [PATCH v2 3/7] drm/i915: use the memcpy_from_wc call from the drm Balasubramani Vivekanandan
2022-03-03 18:00   ` [Intel-gfx] " Balasubramani Vivekanandan
2022-03-03 18:00 ` [PATCH v2 4/7] drm/i915/guc: " Balasubramani Vivekanandan
2022-03-03 18:00   ` [Intel-gfx] " Balasubramani Vivekanandan
2022-03-21 21:14   ` Lucas De Marchi
2022-03-21 21:14     ` Lucas De Marchi
2022-03-22  8:47     ` Michal Wajdeczko
2022-03-22  8:47       ` [Intel-gfx] " Michal Wajdeczko
2022-03-22 13:51     ` Balasubramani Vivekanandan
2022-03-22 13:51       ` [Intel-gfx] " Balasubramani Vivekanandan
2022-04-12  0:57     ` Ceraolo Spurio, Daniele
2022-03-03 18:00 ` [PATCH v2 5/7] drm/i915/selftests: " Balasubramani Vivekanandan
2022-03-03 18:00   ` [Intel-gfx] " Balasubramani Vivekanandan
2022-03-21 23:00   ` Lucas De Marchi
2022-03-21 23:00     ` [Intel-gfx] " Lucas De Marchi
2022-03-21 23:07     ` Lucas De Marchi
2022-03-28 13:38       ` Balasubramani Vivekanandan
2022-03-03 18:00 ` [PATCH v2 6/7] drm/i915/gt: Avoid direct dereferencing of io memory Balasubramani Vivekanandan
2022-03-03 18:00   ` [Intel-gfx] " Balasubramani Vivekanandan
2022-03-03 18:00 ` [PATCH v2 7/7] drm/i915: Avoid dereferencing io mapped memory Balasubramani Vivekanandan
2022-03-03 18:00   ` [Intel-gfx] " Balasubramani Vivekanandan
2022-03-03 18:51 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/i915: Use the memcpy_from_wc function from drm (rev3) Patchwork
2022-03-03 19:27 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-03-04  6:47 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2022-03-21 10:07 ` [Intel-gfx] [PATCH v2 0/7] drm/i915: Use the memcpy_from_wc function from drm Das, Nirmoy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.