Message ID | 20220204174436.830121-3-lucas.demarchi@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915/guc: Refactor ADS access to use iosys_map | expand |
Am 04.02.22 um 18:44 schrieb Lucas De Marchi: > In certain situations it's useful to be able to write to an > offset of the mapping. Add a dst_offset to iosys_map_memcpy_to(). > > Cc: Sumit Semwal <sumit.semwal@linaro.org> > Cc: Christian König <christian.koenig@amd.com> > Cc: Thomas Zimmermann <tzimmermann@suse.de> > Cc: dri-devel@lists.freedesktop.org > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Christian König <christian.koenig@amd.com> > --- > drivers/gpu/drm/drm_cache.c | 2 +- > drivers/gpu/drm/drm_fb_helper.c | 2 +- > include/linux/iosys-map.h | 17 +++++++++-------- > 3 files changed, 11 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/drm_cache.c b/drivers/gpu/drm/drm_cache.c > index 66597e411764..c3e6e615bf09 100644 > --- a/drivers/gpu/drm/drm_cache.c > +++ b/drivers/gpu/drm/drm_cache.c > @@ -218,7 +218,7 @@ static void memcpy_fallback(struct iosys_map *dst, > if (!dst->is_iomem && !src->is_iomem) { > memcpy(dst->vaddr, src->vaddr, len); > } else if (!src->is_iomem) { > - iosys_map_memcpy_to(dst, src->vaddr, len); > + iosys_map_memcpy_to(dst, 0, src->vaddr, len); > } else if (!dst->is_iomem) { > memcpy_fromio(dst->vaddr, src->vaddr_iomem, len); > } else { > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > index 238f815cb2a0..bf5cc9a42e5a 100644 > --- a/drivers/gpu/drm/drm_fb_helper.c > +++ b/drivers/gpu/drm/drm_fb_helper.c > @@ -385,7 +385,7 @@ static void drm_fb_helper_damage_blit_real(struct drm_fb_helper *fb_helper, > iosys_map_incr(dst, offset); /* go to first pixel within clip rect */ > > for (y = clip->y1; y < clip->y2; y++) { > - iosys_map_memcpy_to(dst, src, len); > + iosys_map_memcpy_to(dst, 0, src, len); > iosys_map_incr(dst, fb->pitches[0]); > src += fb->pitches[0]; > } > diff --git a/include/linux/iosys-map.h b/include/linux/iosys-map.h > index f4186f91caa6..edd7fa3be9e9 100644 > --- a/include/linux/iosys-map.h > +++ b/include/linux/iosys-map.h > @@ -220,22 +220,23 @@ static inline void iosys_map_clear(struct iosys_map *map) > } > > /** > - * iosys_map_memcpy_to - Memcpy into iosys mapping > + * iosys_map_memcpy_to_offset - Memcpy into offset of iosys_map > * @dst: The iosys_map structure > + * @dst_offset: The offset from which to copy > * @src: The source buffer > * @len: The number of byte in src > * > - * Copies data into a iosys mapping. The source buffer is in system > - * memory. Depending on the buffer's location, the helper picks the correct > - * method of accessing the memory. > + * Copies data into a iosys_map with an offset. The source buffer is in > + * system memory. Depending on the buffer's location, the helper picks the > + * correct method of accessing the memory. > */ > -static inline void iosys_map_memcpy_to(struct iosys_map *dst, const void *src, > - size_t len) > +static inline void iosys_map_memcpy_to(struct iosys_map *dst, size_t dst_offset, > + const void *src, size_t len) > { > if (dst->is_iomem) > - memcpy_toio(dst->vaddr_iomem, src, len); > + memcpy_toio(dst->vaddr_iomem + dst_offset, src, len); > else > - memcpy(dst->vaddr, src, len); > + memcpy(dst->vaddr + dst_offset, src, len); > } > > /**
Hi Am 04.02.22 um 18:44 schrieb Lucas De Marchi: > In certain situations it's useful to be able to write to an > offset of the mapping. Add a dst_offset to iosys_map_memcpy_to(). > > Cc: Sumit Semwal <sumit.semwal@linaro.org> > Cc: Christian König <christian.koenig@amd.com> > Cc: Thomas Zimmermann <tzimmermann@suse.de> > Cc: dri-devel@lists.freedesktop.org > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> > --- > drivers/gpu/drm/drm_cache.c | 2 +- > drivers/gpu/drm/drm_fb_helper.c | 2 +- > include/linux/iosys-map.h | 17 +++++++++-------- > 3 files changed, 11 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/drm_cache.c b/drivers/gpu/drm/drm_cache.c > index 66597e411764..c3e6e615bf09 100644 > --- a/drivers/gpu/drm/drm_cache.c > +++ b/drivers/gpu/drm/drm_cache.c > @@ -218,7 +218,7 @@ static void memcpy_fallback(struct iosys_map *dst, > if (!dst->is_iomem && !src->is_iomem) { > memcpy(dst->vaddr, src->vaddr, len); > } else if (!src->is_iomem) { > - iosys_map_memcpy_to(dst, src->vaddr, len); > + iosys_map_memcpy_to(dst, 0, src->vaddr, len); > } else if (!dst->is_iomem) { > memcpy_fromio(dst->vaddr, src->vaddr_iomem, len); > } else { > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > index 238f815cb2a0..bf5cc9a42e5a 100644 > --- a/drivers/gpu/drm/drm_fb_helper.c > +++ b/drivers/gpu/drm/drm_fb_helper.c > @@ -385,7 +385,7 @@ static void drm_fb_helper_damage_blit_real(struct drm_fb_helper *fb_helper, > iosys_map_incr(dst, offset); /* go to first pixel within clip rect */ > > for (y = clip->y1; y < clip->y2; y++) { > - iosys_map_memcpy_to(dst, src, len); > + iosys_map_memcpy_to(dst, 0, src, len); > iosys_map_incr(dst, fb->pitches[0]); > src += fb->pitches[0]; > } > diff --git a/include/linux/iosys-map.h b/include/linux/iosys-map.h > index f4186f91caa6..edd7fa3be9e9 100644 > --- a/include/linux/iosys-map.h > +++ b/include/linux/iosys-map.h > @@ -220,22 +220,23 @@ static inline void iosys_map_clear(struct iosys_map *map) > } > > /** > - * iosys_map_memcpy_to - Memcpy into iosys mapping > + * iosys_map_memcpy_to_offset - Memcpy into offset of iosys_map 'iosys_map_memcpy_to' With that fixed: Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Best regards Thomas > * @dst: The iosys_map structure > + * @dst_offset: The offset from which to copy > * @src: The source buffer > * @len: The number of byte in src > * > - * Copies data into a iosys mapping. The source buffer is in system > - * memory. Depending on the buffer's location, the helper picks the correct > - * method of accessing the memory. > + * Copies data into a iosys_map with an offset. The source buffer is in > + * system memory. Depending on the buffer's location, the helper picks the > + * correct method of accessing the memory. > */ > -static inline void iosys_map_memcpy_to(struct iosys_map *dst, const void *src, > - size_t len) > +static inline void iosys_map_memcpy_to(struct iosys_map *dst, size_t dst_offset, > + const void *src, size_t len) > { > if (dst->is_iomem) > - memcpy_toio(dst->vaddr_iomem, src, len); > + memcpy_toio(dst->vaddr_iomem + dst_offset, src, len); > else > - memcpy(dst->vaddr, src, len); > + memcpy(dst->vaddr + dst_offset, src, len); > } > > /**
On Fri, Feb 04, 2022 at 07:48:10PM +0100, Thomas Zimmermann wrote: >Hi > >Am 04.02.22 um 18:44 schrieb Lucas De Marchi: >>In certain situations it's useful to be able to write to an >>offset of the mapping. Add a dst_offset to iosys_map_memcpy_to(). >> >>Cc: Sumit Semwal <sumit.semwal@linaro.org> >>Cc: Christian König <christian.koenig@amd.com> >>Cc: Thomas Zimmermann <tzimmermann@suse.de> >>Cc: dri-devel@lists.freedesktop.org >>Cc: linux-kernel@vger.kernel.org >>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> >>--- >> drivers/gpu/drm/drm_cache.c | 2 +- >> drivers/gpu/drm/drm_fb_helper.c | 2 +- >> include/linux/iosys-map.h | 17 +++++++++-------- >> 3 files changed, 11 insertions(+), 10 deletions(-) >> >>diff --git a/drivers/gpu/drm/drm_cache.c b/drivers/gpu/drm/drm_cache.c >>index 66597e411764..c3e6e615bf09 100644 >>--- a/drivers/gpu/drm/drm_cache.c >>+++ b/drivers/gpu/drm/drm_cache.c >>@@ -218,7 +218,7 @@ static void memcpy_fallback(struct iosys_map *dst, >> if (!dst->is_iomem && !src->is_iomem) { >> memcpy(dst->vaddr, src->vaddr, len); >> } else if (!src->is_iomem) { >>- iosys_map_memcpy_to(dst, src->vaddr, len); >>+ iosys_map_memcpy_to(dst, 0, src->vaddr, len); >> } else if (!dst->is_iomem) { >> memcpy_fromio(dst->vaddr, src->vaddr_iomem, len); >> } else { >>diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c >>index 238f815cb2a0..bf5cc9a42e5a 100644 >>--- a/drivers/gpu/drm/drm_fb_helper.c >>+++ b/drivers/gpu/drm/drm_fb_helper.c >>@@ -385,7 +385,7 @@ static void drm_fb_helper_damage_blit_real(struct drm_fb_helper *fb_helper, >> iosys_map_incr(dst, offset); /* go to first pixel within clip rect */ >> for (y = clip->y1; y < clip->y2; y++) { >>- iosys_map_memcpy_to(dst, src, len); >>+ iosys_map_memcpy_to(dst, 0, src, len); >> iosys_map_incr(dst, fb->pitches[0]); >> src += fb->pitches[0]; >> } >>diff --git a/include/linux/iosys-map.h b/include/linux/iosys-map.h >>index f4186f91caa6..edd7fa3be9e9 100644 >>--- a/include/linux/iosys-map.h >>+++ b/include/linux/iosys-map.h >>@@ -220,22 +220,23 @@ static inline void iosys_map_clear(struct iosys_map *map) >> } >> /** >>- * iosys_map_memcpy_to - Memcpy into iosys mapping >>+ * iosys_map_memcpy_to_offset - Memcpy into offset of iosys_map > >'iosys_map_memcpy_to' > >With that fixed: > >Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> thanks, I noticed that, but looks like I squashed to the wrong patch. Lucas De Marchi
diff --git a/drivers/gpu/drm/drm_cache.c b/drivers/gpu/drm/drm_cache.c index 66597e411764..c3e6e615bf09 100644 --- a/drivers/gpu/drm/drm_cache.c +++ b/drivers/gpu/drm/drm_cache.c @@ -218,7 +218,7 @@ static void memcpy_fallback(struct iosys_map *dst, if (!dst->is_iomem && !src->is_iomem) { memcpy(dst->vaddr, src->vaddr, len); } else if (!src->is_iomem) { - iosys_map_memcpy_to(dst, src->vaddr, len); + iosys_map_memcpy_to(dst, 0, src->vaddr, len); } else if (!dst->is_iomem) { memcpy_fromio(dst->vaddr, src->vaddr_iomem, len); } else { diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 238f815cb2a0..bf5cc9a42e5a 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -385,7 +385,7 @@ static void drm_fb_helper_damage_blit_real(struct drm_fb_helper *fb_helper, iosys_map_incr(dst, offset); /* go to first pixel within clip rect */ for (y = clip->y1; y < clip->y2; y++) { - iosys_map_memcpy_to(dst, src, len); + iosys_map_memcpy_to(dst, 0, src, len); iosys_map_incr(dst, fb->pitches[0]); src += fb->pitches[0]; } diff --git a/include/linux/iosys-map.h b/include/linux/iosys-map.h index f4186f91caa6..edd7fa3be9e9 100644 --- a/include/linux/iosys-map.h +++ b/include/linux/iosys-map.h @@ -220,22 +220,23 @@ static inline void iosys_map_clear(struct iosys_map *map) } /** - * iosys_map_memcpy_to - Memcpy into iosys mapping + * iosys_map_memcpy_to_offset - Memcpy into offset of iosys_map * @dst: The iosys_map structure + * @dst_offset: The offset from which to copy * @src: The source buffer * @len: The number of byte in src * - * Copies data into a iosys mapping. The source buffer is in system - * memory. Depending on the buffer's location, the helper picks the correct - * method of accessing the memory. + * Copies data into a iosys_map with an offset. The source buffer is in + * system memory. Depending on the buffer's location, the helper picks the + * correct method of accessing the memory. */ -static inline void iosys_map_memcpy_to(struct iosys_map *dst, const void *src, - size_t len) +static inline void iosys_map_memcpy_to(struct iosys_map *dst, size_t dst_offset, + const void *src, size_t len) { if (dst->is_iomem) - memcpy_toio(dst->vaddr_iomem, src, len); + memcpy_toio(dst->vaddr_iomem + dst_offset, src, len); else - memcpy(dst->vaddr, src, len); + memcpy(dst->vaddr + dst_offset, src, len); } /**
In certain situations it's useful to be able to write to an offset of the mapping. Add a dst_offset to iosys_map_memcpy_to(). Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Christian König <christian.koenig@amd.com> Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> --- drivers/gpu/drm/drm_cache.c | 2 +- drivers/gpu/drm/drm_fb_helper.c | 2 +- include/linux/iosys-map.h | 17 +++++++++-------- 3 files changed, 11 insertions(+), 10 deletions(-)