All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ruhl, Michael J" <michael.j.ruhl@intel.com>
To: "Christian König" <ckoenig.leichtzumerken@gmail.com>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>,
	"ray.huang@amd.com" <ray.huang@amd.com>,
	"airlied@gmail.com" <airlied@gmail.com>,
	"daniel@ffwll.ch" <daniel@ffwll.ch>
Subject: RE: [PATCH 7/8] drm/ttm: use caching instead of placement for ttm_io_prot
Date: Mon, 5 Oct 2020 15:51:52 +0000	[thread overview]
Message-ID: <157c23949c85458aaf104f67189c1b77@intel.com> (raw)
In-Reply-To: <20201001112817.20967-7-christian.koenig@amd.com>

>-----Original Message-----
>From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of
>Christian König
>Sent: Thursday, October 1, 2020 7:28 AM
>To: dri-devel@lists.freedesktop.org; ray.huang@amd.com;
>airlied@gmail.com; daniel@ffwll.ch
>Subject: [PATCH 7/8] drm/ttm: use caching instead of placement for
>ttm_io_prot
>
>Instead of the placement flags use the caching of the bus
>mapping or tt object for the page protection flags.
>
>Signed-off-by: Christian König <christian.koenig@amd.com>
>---
> drivers/gpu/drm/ttm/ttm_bo_util.c    | 23 ++++++++++++++---------
> drivers/gpu/drm/ttm/ttm_bo_vm.c      |  2 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_blit.c |  4 ++--
> include/drm/ttm/ttm_bo_driver.h      |  6 ++++--
> 4 files changed, 21 insertions(+), 14 deletions(-)
>
>diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c
>b/drivers/gpu/drm/ttm/ttm_bo_util.c
>index bdee4df1f3f2..0542097dc419 100644
>--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
>+++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
>@@ -279,13 +279,11 @@ int ttm_bo_move_memcpy(struct
>ttm_buffer_object *bo,
> 	for (i = 0; i < new_mem->num_pages; ++i) {
> 		page = i * dir + add;
> 		if (old_iomap == NULL) {
>-			pgprot_t prot = ttm_io_prot(old_mem->placement,
>-						    PAGE_KERNEL);

So will placement get removed from ttm_resource?

Reviewed-by: Michael J. Ruhl <michael.j.ruhl@intel.com>

M

>+			pgprot_t prot = ttm_io_prot(bo, old_mem,
>PAGE_KERNEL);
> 			ret = ttm_copy_ttm_io_page(ttm, new_iomap, page,
> 						   prot);
> 		} else if (new_iomap == NULL) {
>-			pgprot_t prot = ttm_io_prot(new_mem->placement,
>-						    PAGE_KERNEL);
>+			pgprot_t prot = ttm_io_prot(bo, new_mem,
>PAGE_KERNEL);
> 			ret = ttm_copy_io_ttm_page(ttm, old_iomap, page,
> 						   prot);
> 		} else {
>@@ -384,21 +382,28 @@ static int ttm_buffer_object_transfer(struct
>ttm_buffer_object *bo,
> 	return 0;
> }
>
>-pgprot_t ttm_io_prot(uint32_t caching_flags, pgprot_t tmp)
>+pgprot_t ttm_io_prot(struct ttm_buffer_object *bo, struct ttm_resource
>*res,
>+		     pgprot_t tmp)
> {
>+	struct ttm_resource_manager *man;
>+	enum ttm_caching caching;
>+
>+	man = ttm_manager_type(bo->bdev, res->mem_type);
>+	caching = man->use_tt ? bo->ttm->caching : res->bus.caching;
>+
> 	/* Cached mappings need no adjustment */
>-	if (caching_flags & TTM_PL_FLAG_CACHED)
>+	if (caching == ttm_cached)
> 		return tmp;
>
> #if defined(__i386__) || defined(__x86_64__)
>-	if (caching_flags & TTM_PL_FLAG_WC)
>+	if (caching == ttm_write_combined)
> 		tmp = pgprot_writecombine(tmp);
> 	else if (boot_cpu_data.x86 > 3)
> 		tmp = pgprot_noncached(tmp);
> #endif
> #if defined(__ia64__) || defined(__arm__) || defined(__aarch64__) || \
>     defined(__powerpc__) || defined(__mips__)
>-	if (caching_flags & TTM_PL_FLAG_WC)
>+	if (caching == ttm_write_combined)
> 		tmp = pgprot_writecombine(tmp);
> 	else
> 		tmp = pgprot_noncached(tmp);
>@@ -466,7 +471,7 @@ static int ttm_bo_kmap_ttm(struct ttm_buffer_object
>*bo,
> 		 * We need to use vmap to get the desired page protection
> 		 * or to make the buffer object look contiguous.
> 		 */
>-		prot = ttm_io_prot(mem->placement, PAGE_KERNEL);
>+		prot = ttm_io_prot(bo, mem, PAGE_KERNEL);
> 		map->bo_kmap_type = ttm_bo_map_vmap;
> 		map->virtual = vmap(ttm->pages + start_page, num_pages,
> 				    0, prot);
>diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c
>b/drivers/gpu/drm/ttm/ttm_bo_vm.c
>index 87ee8f0ca08e..eeaca5d1efe3 100644
>--- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
>+++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
>@@ -310,7 +310,7 @@ vm_fault_t ttm_bo_vm_fault_reserved(struct
>vm_fault *vmf,
> 	if (unlikely(page_offset >= bo->num_pages))
> 		return VM_FAULT_SIGBUS;
>
>-	prot = ttm_io_prot(bo->mem.placement, prot);
>+	prot = ttm_io_prot(bo, &bo->mem, prot);
> 	if (!bo->mem.bus.is_iomem) {
> 		struct ttm_operation_ctx ctx = {
> 			.interruptible = false,
>diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_blit.c
>b/drivers/gpu/drm/vmwgfx/vmwgfx_blit.c
>index ea2f2f937eb3..f21881e087db 100644
>--- a/drivers/gpu/drm/vmwgfx/vmwgfx_blit.c
>+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_blit.c
>@@ -484,8 +484,8 @@ int vmw_bo_cpu_blit(struct ttm_buffer_object *dst,
> 	d.src_pages = src->ttm->pages;
> 	d.dst_num_pages = dst->num_pages;
> 	d.src_num_pages = src->num_pages;
>-	d.dst_prot = ttm_io_prot(dst->mem.placement, PAGE_KERNEL);
>-	d.src_prot = ttm_io_prot(src->mem.placement, PAGE_KERNEL);
>+	d.dst_prot = ttm_io_prot(dst, &dst->mem, PAGE_KERNEL);
>+	d.src_prot = ttm_io_prot(src, &src->mem, PAGE_KERNEL);
> 	d.diff = diff;
>
> 	for (j = 0; j < h; ++j) {
>diff --git a/include/drm/ttm/ttm_bo_driver.h
>b/include/drm/ttm/ttm_bo_driver.h
>index 9897a16c0a9d..a028b418c6b4 100644
>--- a/include/drm/ttm/ttm_bo_driver.h
>+++ b/include/drm/ttm/ttm_bo_driver.h
>@@ -666,13 +666,15 @@ int ttm_bo_pipeline_gutting(struct
>ttm_buffer_object *bo);
> /**
>  * ttm_io_prot
>  *
>- * @c_state: Caching state.
>+ * bo: ttm buffer object
>+ * res: ttm resource object
>  * @tmp: Page protection flag for a normal, cached mapping.
>  *
>  * Utility function that returns the pgprot_t that should be used for
>  * setting up a PTE with the caching model indicated by @c_state.
>  */
>-pgprot_t ttm_io_prot(uint32_t caching_flags, pgprot_t tmp);
>+pgprot_t ttm_io_prot(struct ttm_buffer_object *bo, struct ttm_resource
>*res,
>+		     pgprot_t tmp);
>
> /**
>  * ttm_bo_tt_bind
>--
>2.17.1
>
>_______________________________________________
>dri-devel mailing list
>dri-devel@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2020-10-05 18:25 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-01 11:28 [PATCH 1/8] drm/ttm: remove TTM_PAGE_FLAG_WRITE Christian König
2020-10-01 11:28 ` [PATCH 2/8] drm/ttm: move ttm_set_memory.h out of include Christian König
2020-10-05 15:01   ` Ruhl, Michael J
2020-10-07  8:31     ` Christian König
2020-10-07 11:46       ` Ruhl, Michael J
2020-10-07 12:10         ` Christian König
2020-10-01 11:28 ` [PATCH 3/8] drm/ttm: cleanup ttm_handle_caching_state_failure Christian König
2020-10-05 15:01   ` Ruhl, Michael J
2020-10-01 11:28 ` [PATCH 4/8] drm/ttm: rename TTM caching enum Christian König
2020-10-05 15:05   ` Ruhl, Michael J
2020-10-07  8:08     ` Christian König
2020-10-01 11:28 ` [PATCH 5/8] drm/ttm: set the tt caching state at creation time Christian König
2020-10-05 15:18   ` Ruhl, Michael J
2020-10-01 11:28 ` [PATCH 6/8] drm/ttm: add caching state to ttm_bus_placement Christian König
2020-10-05 15:39   ` Ruhl, Michael J
2020-10-07  8:59     ` Christian König
2020-10-01 11:28 ` [PATCH 7/8] drm/ttm: use caching instead of placement for ttm_io_prot Christian König
2020-10-05 15:51   ` Ruhl, Michael J [this message]
2020-10-07  8:59     ` Christian König
2020-10-01 11:28 ` [PATCH 8/8] drm/ttm: nuke caching placement flags Christian König
2020-10-05 16:17   ` Ruhl, Michael J
2020-10-07  9:07     ` Christian König
2020-10-05 13:29 ` [PATCH 1/8] drm/ttm: remove TTM_PAGE_FLAG_WRITE Christian König
2020-10-05 14:59 ` Ruhl, Michael J

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=157c23949c85458aaf104f67189c1b77@intel.com \
    --to=michael.j.ruhl@intel.com \
    --cc=airlied@gmail.com \
    --cc=ckoenig.leichtzumerken@gmail.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=ray.huang@amd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.