All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bagas Sanjaya <bagasdotme@gmail.com>
To: Danilo Krummrich <dakr@redhat.com>,
	daniel@ffwll.ch, airlied@redhat.com, christian.koenig@amd.com,
	bskeggs@redhat.com, jason@jlekstrand.net, tzimmermann@suse.de,
	mripard@kernel.org, corbet@lwn.net
Cc: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH drm-next 03/14] drm: manager to keep track of GPUs VA mappings
Date: Thu, 19 Jan 2023 11:14:42 +0700	[thread overview]
Message-ID: <Y8jDsqGc5gXoIBAO@debian.me> (raw)
In-Reply-To: <20230118061256.2689-4-dakr@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 16188 bytes --]

On Wed, Jan 18, 2023 at 07:12:45AM +0100, Danilo Krummrich wrote:
> This adds the infrastructure for a manager implementation to keep track
> of GPU virtual address (VA) mappings.

"Add infrastructure for ..."

> + * Analogue to drm_gpuva_sm_map_ops_create() drm_gpuva_sm_unmap_ops_create()
> + * provides drivers a the list of operations to be executed in order to unmap
> + * a range of GPU VA space. The logic behind this functions is way simpler
> + * though: For all existent mappings enclosed by the given range unmap
> + * operations are created. For mappings which are only partically located within
> + * the given range, remap operations are created such that those mappings are
> + * split up and re-mapped partically.

"Analogous to ..."

> + *
> + * The following paragraph depicts the basic constellations of existent GPU VA
> + * mappings, a newly requested mapping and the resulting mappings as implemented
> + * by drm_gpuva_sm_map_ops_create()  - it doesn't cover arbitrary combinations
> + * of those constellations.
> + *
> + * ::
> + *
> + *	1) Existent mapping is kept.
> + *	----------------------------
> + *
> + *	     0     a     1
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0     a     1
> + *	req: |-----------| (bo_offset=n)
> + *
> + *	     0     a     1
> + *	new: |-----------| (bo_offset=n)
> + *
> + *
> + *	2) Existent mapping is replaced.
> + *	--------------------------------
> + *
> + *	     0     a     1
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0     a     1
> + *	req: |-----------| (bo_offset=m)
> + *
> + *	     0     a     1
> + *	new: |-----------| (bo_offset=m)
> + *
> + *
> + *	3) Existent mapping is replaced.
> + *	--------------------------------
> + *
> + *	     0     a     1
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0     b     1
> + *	req: |-----------| (bo_offset=n)
> + *
> + *	     0     b     1
> + *	new: |-----------| (bo_offset=n)
> + *
> + *
> + *	4) Existent mapping is replaced.
> + *	--------------------------------
> + *
> + *	     0  a  1
> + *	old: |-----|       (bo_offset=n)
> + *
> + *	     0     a     2
> + *	req: |-----------| (bo_offset=n)
> + *
> + *	     0     a     2
> + *	new: |-----------| (bo_offset=n)
> + *
> + *	Note: We expect to see the same result for a request with a different bo
> + *	      and/or bo_offset.
> + *
> + *
> + *	5) Existent mapping is split.
> + *	-----------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0  b  1
> + *	req: |-----|       (bo_offset=n)
> + *
> + *	     0  b  1  a' 2
> + *	new: |-----|-----| (b.bo_offset=n, a.bo_offset=n+1)
> + *
> + *	Note: We expect to see the same result for a request with a different bo
> + *	      and/or non-contiguous bo_offset.
> + *
> + *
> + *	6) Existent mapping is kept.
> + *	----------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0  a  1
> + *	req: |-----|       (bo_offset=n)
> + *
> + *	     0     a     2
> + *	new: |-----------| (bo_offset=n)
> + *
> + *
> + *	7) Existent mapping is split.
> + *	-----------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	           1  b  2
> + *	req:       |-----| (bo_offset=m)
> + *
> + *	     0  a  1  b  2
> + *	new: |-----|-----| (a.bo_offset=n,b.bo_offset=m)
> + *
> + *
> + *	8) Existent mapping is kept.
> + *	----------------------------
> + *
> + *	      0     a     2
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	           1  a  2
> + *	req:       |-----| (bo_offset=n+1)
> + *
> + *	     0     a     2
> + *	new: |-----------| (bo_offset=n)
> + *
> + *
> + *	9) Existent mapping is split.
> + *	-----------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------|       (bo_offset=n)
> + *
> + *	           1     b     3
> + *	req:       |-----------| (bo_offset=m)
> + *
> + *	     0  a  1     b     3
> + *	new: |-----|-----------| (a.bo_offset=n,b.bo_offset=m)
> + *
> + *
> + *	10) Existent mapping is merged.
> + *	-------------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------|       (bo_offset=n)
> + *
> + *	           1     a     3
> + *	req:       |-----------| (bo_offset=n+1)
> + *
> + *	     0        a        3
> + *	new: |-----------------| (bo_offset=n)
> + *
> + *
> + *	11) Existent mapping is split.
> + *	------------------------------
> + *
> + *	     0        a        3
> + *	old: |-----------------| (bo_offset=n)
> + *
> + *	           1  b  2
> + *	req:       |-----|       (bo_offset=m)
> + *
> + *	     0  a  1  b  2  a' 3
> + *	new: |-----|-----|-----| (a.bo_offset=n,b.bo_offset=m,a'.bo_offset=n+2)
> + *
> + *
> + *	12) Existent mapping is kept.
> + *	-----------------------------
> + *
> + *	     0        a        3
> + *	old: |-----------------| (bo_offset=n)
> + *
> + *	           1  a  2
> + *	req:       |-----|       (bo_offset=n+1)
> + *
> + *	     0        a        3
> + *	old: |-----------------| (bo_offset=n)
> + *
> + *
> + *	13) Existent mapping is replaced.
> + *	---------------------------------
> + *
> + *	           1  a  2
> + *	old:       |-----| (bo_offset=n)
> + *
> + *	     0     a     2
> + *	req: |-----------| (bo_offset=n)
> + *
> + *	     0     a     2
> + *	new: |-----------| (bo_offset=n)
> + *
> + *	Note: We expect to see the same result for a request with a different bo
> + *	      and/or non-contiguous bo_offset.
> + *
> + *
> + *	14) Existent mapping is replaced.
> + *	---------------------------------
> + *
> + *	           1  a  2
> + *	old:       |-----| (bo_offset=n)
> + *
> + *	     0        a       3
> + *	req: |----------------| (bo_offset=n)
> + *
> + *	     0        a       3
> + *	new: |----------------| (bo_offset=n)
> + *
> + *	Note: We expect to see the same result for a request with a different bo
> + *	      and/or non-contiguous bo_offset.
> + *
> + *
> + *	15) Existent mapping is split.
> + *	------------------------------
> + *
> + *	           1     a     3
> + *	old:       |-----------| (bo_offset=n)
> + *
> + *	     0     b     2
> + *	req: |-----------|       (bo_offset=m)
> + *
> + *	     0     b     2  a' 3
> + *	new: |-----------|-----| (b.bo_offset=m,a.bo_offset=n+2)
> + *
> + *
> + *	16) Existent mappings are merged.
> + *	---------------------------------
> + *
> + *	     0     a     1
> + *	old: |-----------|                        (bo_offset=n)
> + *
> + *	                            2     a     3
> + *	old':                       |-----------| (bo_offset=n+2)
> + *
> + *	                1     a     2
> + *	req:            |-----------|             (bo_offset=n+1)
> + *
> + *	                      a
> + *	new: |----------------------------------| (bo_offset=n)
> + */

Factor out lists from the big code block above:

---- >8 ----

diff --git a/drivers/gpu/drm/drm_gpuva_mgr.c b/drivers/gpu/drm/drm_gpuva_mgr.c
index e665f642689d03..411c0aa80bfa1f 100644
--- a/drivers/gpu/drm/drm_gpuva_mgr.c
+++ b/drivers/gpu/drm/drm_gpuva_mgr.c
@@ -129,15 +129,14 @@
  * the given range, remap operations are created such that those mappings are
  * split up and re-mapped partically.
  *
- * The following paragraph depicts the basic constellations of existent GPU VA
+ * The following diagram depicts the basic relationships of existent GPU VA
  * mappings, a newly requested mapping and the resulting mappings as implemented
- * by drm_gpuva_sm_map_ops_create()  - it doesn't cover arbitrary combinations
- * of those constellations.
+ * by drm_gpuva_sm_map_ops_create()  - it doesn't cover any arbitrary
+ * combinations of these.
  *
- * ::
- *
- *	1) Existent mapping is kept.
- *	----------------------------
+ * 1) Existent mapping is kept.
+ * 
+ *    ::
  *
  *	     0     a     1
  *	old: |-----------| (bo_offset=n)
@@ -149,8 +148,9 @@
  *	new: |-----------| (bo_offset=n)
  *
  *
- *	2) Existent mapping is replaced.
- *	--------------------------------
+ * 2) Existent mapping is replaced.
+ *
+ *    ::
  *
  *	     0     a     1
  *	old: |-----------| (bo_offset=n)
@@ -162,8 +162,9 @@
  *	new: |-----------| (bo_offset=m)
  *
  *
- *	3) Existent mapping is replaced.
- *	--------------------------------
+ * 3) Existent mapping is replaced.
+ *
+ *    ::
  *
  *	     0     a     1
  *	old: |-----------| (bo_offset=n)
@@ -175,8 +176,9 @@
  *	new: |-----------| (bo_offset=n)
  *
  *
- *	4) Existent mapping is replaced.
- *	--------------------------------
+ * 4) Existent mapping is replaced.
+ *
+ *    ::
  *
  *	     0  a  1
  *	old: |-----|       (bo_offset=n)
@@ -187,12 +189,14 @@
  *	     0     a     2
  *	new: |-----------| (bo_offset=n)
  *
- *	Note: We expect to see the same result for a request with a different bo
- *	      and/or bo_offset.
+ *    .. note::
+ *       We expect to see the same result for a request with a different bo
+ *       and/or bo_offset.
  *
  *
- *	5) Existent mapping is split.
- *	-----------------------------
+ * 5) Existent mapping is split.
+ *
+ *    ::
  *
  *	     0     a     2
  *	old: |-----------| (bo_offset=n)
@@ -203,12 +207,14 @@
  *	     0  b  1  a' 2
  *	new: |-----|-----| (b.bo_offset=n, a.bo_offset=n+1)
  *
- *	Note: We expect to see the same result for a request with a different bo
- *	      and/or non-contiguous bo_offset.
+ *    .. note::
+ *       We expect to see the same result for a request with a different bo
+ *       and/or non-contiguous bo_offset.
  *
  *
- *	6) Existent mapping is kept.
- *	----------------------------
+ * 6) Existent mapping is kept.
+ *
+ *    ::
  *
  *	     0     a     2
  *	old: |-----------| (bo_offset=n)
@@ -220,8 +226,9 @@
  *	new: |-----------| (bo_offset=n)
  *
  *
- *	7) Existent mapping is split.
- *	-----------------------------
+ * 7) Existent mapping is split.
+ *
+ *    ::
  *
  *	     0     a     2
  *	old: |-----------| (bo_offset=n)
@@ -233,8 +240,9 @@
  *	new: |-----|-----| (a.bo_offset=n,b.bo_offset=m)
  *
  *
- *	8) Existent mapping is kept.
- *	----------------------------
+ * 8) Existent mapping is kept.
+ *
+ *    ::
  *
  *	      0     a     2
  *	old: |-----------| (bo_offset=n)
@@ -246,8 +254,9 @@
  *	new: |-----------| (bo_offset=n)
  *
  *
- *	9) Existent mapping is split.
- *	-----------------------------
+ * 9) Existent mapping is split.
+ *
+ *    ::
  *
  *	     0     a     2
  *	old: |-----------|       (bo_offset=n)
@@ -259,104 +268,113 @@
  *	new: |-----|-----------| (a.bo_offset=n,b.bo_offset=m)
  *
  *
- *	10) Existent mapping is merged.
- *	-------------------------------
+ * 10) Existent mapping is merged.
  *
- *	     0     a     2
- *	old: |-----------|       (bo_offset=n)
+ *     ::
  *
- *	           1     a     3
- *	req:       |-----------| (bo_offset=n+1)
+ *	      0     a     2
+ *	 old: |-----------|       (bo_offset=n)
  *
- *	     0        a        3
- *	new: |-----------------| (bo_offset=n)
+ *	            1     a     3
+ *	 req:       |-----------| (bo_offset=n+1)
+ *
+ *	      0        a        3
+ *	 new: |-----------------| (bo_offset=n)
  *
  *
- *	11) Existent mapping is split.
- *	------------------------------
+ * 11) Existent mapping is split.
  *
- *	     0        a        3
- *	old: |-----------------| (bo_offset=n)
+ *     ::
  *
- *	           1  b  2
- *	req:       |-----|       (bo_offset=m)
+ *	      0        a        3
+ *	 old: |-----------------| (bo_offset=n)
  *
- *	     0  a  1  b  2  a' 3
- *	new: |-----|-----|-----| (a.bo_offset=n,b.bo_offset=m,a'.bo_offset=n+2)
+ *	            1  b  2
+ *	 req:       |-----|       (bo_offset=m)
+ *
+ *	      0  a  1  b  2  a' 3
+ *	 new: |-----|-----|-----| (a.bo_offset=n,b.bo_offset=m,a'.bo_offset=n+2)
  *
  *
- *	12) Existent mapping is kept.
- *	-----------------------------
+ * 12) Existent mapping is kept.
  *
- *	     0        a        3
- *	old: |-----------------| (bo_offset=n)
+ *     ::
  *
- *	           1  a  2
- *	req:       |-----|       (bo_offset=n+1)
+ *	      0        a        3
+ *	 old: |-----------------| (bo_offset=n)
  *
- *	     0        a        3
- *	old: |-----------------| (bo_offset=n)
+ *	            1  a  2
+ *	 req:       |-----|       (bo_offset=n+1)
+ *
+ *	      0        a        3
+ *	 old: |-----------------| (bo_offset=n)
  *
  *
- *	13) Existent mapping is replaced.
- *	---------------------------------
+ * 13) Existent mapping is replaced.
  *
- *	           1  a  2
- *	old:       |-----| (bo_offset=n)
+ *     ::
  *
- *	     0     a     2
- *	req: |-----------| (bo_offset=n)
+ *	            1  a  2
+ *	 old:       |-----| (bo_offset=n)
  *
- *	     0     a     2
- *	new: |-----------| (bo_offset=n)
+ *	      0     a     2
+ *	 req: |-----------| (bo_offset=n)
  *
- *	Note: We expect to see the same result for a request with a different bo
- *	      and/or non-contiguous bo_offset.
+ *	      0     a     2
+ *	 new: |-----------| (bo_offset=n)
+ *
+ *     .. note::
+ *        We expect to see the same result for a request with a different bo
+ *        and/or non-contiguous bo_offset.
  *
  *
- *	14) Existent mapping is replaced.
- *	---------------------------------
+ * 14) Existent mapping is replaced.
  *
- *	           1  a  2
- *	old:       |-----| (bo_offset=n)
+ *     ::
  *
- *	     0        a       3
- *	req: |----------------| (bo_offset=n)
+ *	            1  a  2
+ *	 old:       |-----| (bo_offset=n)
  *
- *	     0        a       3
- *	new: |----------------| (bo_offset=n)
+ *	      0        a       3
+ *	 req: |----------------| (bo_offset=n)
  *
- *	Note: We expect to see the same result for a request with a different bo
- *	      and/or non-contiguous bo_offset.
+ *	      0        a       3
+ *	 new: |----------------| (bo_offset=n)
+ *
+ *     .. note::
+ *        We expect to see the same result for a request with a different bo
+ *        and/or non-contiguous bo_offset.
  *
  *
- *	15) Existent mapping is split.
- *	------------------------------
+ * 15) Existent mapping is split.
  *
- *	           1     a     3
- *	old:       |-----------| (bo_offset=n)
+ *     ::
  *
- *	     0     b     2
- *	req: |-----------|       (bo_offset=m)
+ *	            1     a     3
+ *	 old:       |-----------| (bo_offset=n)
  *
- *	     0     b     2  a' 3
- *	new: |-----------|-----| (b.bo_offset=m,a.bo_offset=n+2)
+ *	      0     b     2
+ *	 req: |-----------|       (bo_offset=m)
+ *
+ *	      0     b     2  a' 3
+ *	 new: |-----------|-----| (b.bo_offset=m,a.bo_offset=n+2)
  *
  *
- *	16) Existent mappings are merged.
- *	---------------------------------
+ * 16) Existent mappings are merged.
  *
- *	     0     a     1
- *	old: |-----------|                        (bo_offset=n)
+ *     ::
  *
- *	                            2     a     3
- *	old':                       |-----------| (bo_offset=n+2)
+ *	      0     a     1
+ *	 old: |-----------|                        (bo_offset=n)
  *
- *	                1     a     2
- *	req:            |-----------|             (bo_offset=n+1)
+ *	                             2     a     3
+ *	 old':                       |-----------| (bo_offset=n+2)
  *
- *	                      a
- *	new: |----------------------------------| (bo_offset=n)
+ *	                 1     a     2
+ *	 req:            |-----------|             (bo_offset=n+1)
+ *
+ *	                       a
+ *	 new: |----------------------------------| (bo_offset=n)
  */
 
 /**

However, the relationship scenario descriptions are too generic (different
diagrams are described by the same text). Please rewrite them, taking into
account bo_offset values in each scenario.

Thanks.

-- 
An old man doll... just what I always wanted! - Clara

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Bagas Sanjaya <bagasdotme@gmail.com>
To: Danilo Krummrich <dakr@redhat.com>,
	daniel@ffwll.ch, airlied@redhat.com, christian.koenig@amd.com,
	bskeggs@redhat.com, jason@jlekstrand.net, tzimmermann@suse.de,
	mripard@kernel.org, corbet@lwn.net
Cc: nouveau@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org, linux-doc@vger.kernel.org
Subject: Re: [Nouveau] [PATCH drm-next 03/14] drm: manager to keep track of GPUs VA mappings
Date: Thu, 19 Jan 2023 11:14:42 +0700	[thread overview]
Message-ID: <Y8jDsqGc5gXoIBAO@debian.me> (raw)
In-Reply-To: <20230118061256.2689-4-dakr@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 16188 bytes --]

On Wed, Jan 18, 2023 at 07:12:45AM +0100, Danilo Krummrich wrote:
> This adds the infrastructure for a manager implementation to keep track
> of GPU virtual address (VA) mappings.

"Add infrastructure for ..."

> + * Analogue to drm_gpuva_sm_map_ops_create() drm_gpuva_sm_unmap_ops_create()
> + * provides drivers a the list of operations to be executed in order to unmap
> + * a range of GPU VA space. The logic behind this functions is way simpler
> + * though: For all existent mappings enclosed by the given range unmap
> + * operations are created. For mappings which are only partically located within
> + * the given range, remap operations are created such that those mappings are
> + * split up and re-mapped partically.

"Analogous to ..."

> + *
> + * The following paragraph depicts the basic constellations of existent GPU VA
> + * mappings, a newly requested mapping and the resulting mappings as implemented
> + * by drm_gpuva_sm_map_ops_create()  - it doesn't cover arbitrary combinations
> + * of those constellations.
> + *
> + * ::
> + *
> + *	1) Existent mapping is kept.
> + *	----------------------------
> + *
> + *	     0     a     1
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0     a     1
> + *	req: |-----------| (bo_offset=n)
> + *
> + *	     0     a     1
> + *	new: |-----------| (bo_offset=n)
> + *
> + *
> + *	2) Existent mapping is replaced.
> + *	--------------------------------
> + *
> + *	     0     a     1
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0     a     1
> + *	req: |-----------| (bo_offset=m)
> + *
> + *	     0     a     1
> + *	new: |-----------| (bo_offset=m)
> + *
> + *
> + *	3) Existent mapping is replaced.
> + *	--------------------------------
> + *
> + *	     0     a     1
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0     b     1
> + *	req: |-----------| (bo_offset=n)
> + *
> + *	     0     b     1
> + *	new: |-----------| (bo_offset=n)
> + *
> + *
> + *	4) Existent mapping is replaced.
> + *	--------------------------------
> + *
> + *	     0  a  1
> + *	old: |-----|       (bo_offset=n)
> + *
> + *	     0     a     2
> + *	req: |-----------| (bo_offset=n)
> + *
> + *	     0     a     2
> + *	new: |-----------| (bo_offset=n)
> + *
> + *	Note: We expect to see the same result for a request with a different bo
> + *	      and/or bo_offset.
> + *
> + *
> + *	5) Existent mapping is split.
> + *	-----------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0  b  1
> + *	req: |-----|       (bo_offset=n)
> + *
> + *	     0  b  1  a' 2
> + *	new: |-----|-----| (b.bo_offset=n, a.bo_offset=n+1)
> + *
> + *	Note: We expect to see the same result for a request with a different bo
> + *	      and/or non-contiguous bo_offset.
> + *
> + *
> + *	6) Existent mapping is kept.
> + *	----------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0  a  1
> + *	req: |-----|       (bo_offset=n)
> + *
> + *	     0     a     2
> + *	new: |-----------| (bo_offset=n)
> + *
> + *
> + *	7) Existent mapping is split.
> + *	-----------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	           1  b  2
> + *	req:       |-----| (bo_offset=m)
> + *
> + *	     0  a  1  b  2
> + *	new: |-----|-----| (a.bo_offset=n,b.bo_offset=m)
> + *
> + *
> + *	8) Existent mapping is kept.
> + *	----------------------------
> + *
> + *	      0     a     2
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	           1  a  2
> + *	req:       |-----| (bo_offset=n+1)
> + *
> + *	     0     a     2
> + *	new: |-----------| (bo_offset=n)
> + *
> + *
> + *	9) Existent mapping is split.
> + *	-----------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------|       (bo_offset=n)
> + *
> + *	           1     b     3
> + *	req:       |-----------| (bo_offset=m)
> + *
> + *	     0  a  1     b     3
> + *	new: |-----|-----------| (a.bo_offset=n,b.bo_offset=m)
> + *
> + *
> + *	10) Existent mapping is merged.
> + *	-------------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------|       (bo_offset=n)
> + *
> + *	           1     a     3
> + *	req:       |-----------| (bo_offset=n+1)
> + *
> + *	     0        a        3
> + *	new: |-----------------| (bo_offset=n)
> + *
> + *
> + *	11) Existent mapping is split.
> + *	------------------------------
> + *
> + *	     0        a        3
> + *	old: |-----------------| (bo_offset=n)
> + *
> + *	           1  b  2
> + *	req:       |-----|       (bo_offset=m)
> + *
> + *	     0  a  1  b  2  a' 3
> + *	new: |-----|-----|-----| (a.bo_offset=n,b.bo_offset=m,a'.bo_offset=n+2)
> + *
> + *
> + *	12) Existent mapping is kept.
> + *	-----------------------------
> + *
> + *	     0        a        3
> + *	old: |-----------------| (bo_offset=n)
> + *
> + *	           1  a  2
> + *	req:       |-----|       (bo_offset=n+1)
> + *
> + *	     0        a        3
> + *	old: |-----------------| (bo_offset=n)
> + *
> + *
> + *	13) Existent mapping is replaced.
> + *	---------------------------------
> + *
> + *	           1  a  2
> + *	old:       |-----| (bo_offset=n)
> + *
> + *	     0     a     2
> + *	req: |-----------| (bo_offset=n)
> + *
> + *	     0     a     2
> + *	new: |-----------| (bo_offset=n)
> + *
> + *	Note: We expect to see the same result for a request with a different bo
> + *	      and/or non-contiguous bo_offset.
> + *
> + *
> + *	14) Existent mapping is replaced.
> + *	---------------------------------
> + *
> + *	           1  a  2
> + *	old:       |-----| (bo_offset=n)
> + *
> + *	     0        a       3
> + *	req: |----------------| (bo_offset=n)
> + *
> + *	     0        a       3
> + *	new: |----------------| (bo_offset=n)
> + *
> + *	Note: We expect to see the same result for a request with a different bo
> + *	      and/or non-contiguous bo_offset.
> + *
> + *
> + *	15) Existent mapping is split.
> + *	------------------------------
> + *
> + *	           1     a     3
> + *	old:       |-----------| (bo_offset=n)
> + *
> + *	     0     b     2
> + *	req: |-----------|       (bo_offset=m)
> + *
> + *	     0     b     2  a' 3
> + *	new: |-----------|-----| (b.bo_offset=m,a.bo_offset=n+2)
> + *
> + *
> + *	16) Existent mappings are merged.
> + *	---------------------------------
> + *
> + *	     0     a     1
> + *	old: |-----------|                        (bo_offset=n)
> + *
> + *	                            2     a     3
> + *	old':                       |-----------| (bo_offset=n+2)
> + *
> + *	                1     a     2
> + *	req:            |-----------|             (bo_offset=n+1)
> + *
> + *	                      a
> + *	new: |----------------------------------| (bo_offset=n)
> + */

Factor out lists from the big code block above:

---- >8 ----

diff --git a/drivers/gpu/drm/drm_gpuva_mgr.c b/drivers/gpu/drm/drm_gpuva_mgr.c
index e665f642689d03..411c0aa80bfa1f 100644
--- a/drivers/gpu/drm/drm_gpuva_mgr.c
+++ b/drivers/gpu/drm/drm_gpuva_mgr.c
@@ -129,15 +129,14 @@
  * the given range, remap operations are created such that those mappings are
  * split up and re-mapped partically.
  *
- * The following paragraph depicts the basic constellations of existent GPU VA
+ * The following diagram depicts the basic relationships of existent GPU VA
  * mappings, a newly requested mapping and the resulting mappings as implemented
- * by drm_gpuva_sm_map_ops_create()  - it doesn't cover arbitrary combinations
- * of those constellations.
+ * by drm_gpuva_sm_map_ops_create()  - it doesn't cover any arbitrary
+ * combinations of these.
  *
- * ::
- *
- *	1) Existent mapping is kept.
- *	----------------------------
+ * 1) Existent mapping is kept.
+ * 
+ *    ::
  *
  *	     0     a     1
  *	old: |-----------| (bo_offset=n)
@@ -149,8 +148,9 @@
  *	new: |-----------| (bo_offset=n)
  *
  *
- *	2) Existent mapping is replaced.
- *	--------------------------------
+ * 2) Existent mapping is replaced.
+ *
+ *    ::
  *
  *	     0     a     1
  *	old: |-----------| (bo_offset=n)
@@ -162,8 +162,9 @@
  *	new: |-----------| (bo_offset=m)
  *
  *
- *	3) Existent mapping is replaced.
- *	--------------------------------
+ * 3) Existent mapping is replaced.
+ *
+ *    ::
  *
  *	     0     a     1
  *	old: |-----------| (bo_offset=n)
@@ -175,8 +176,9 @@
  *	new: |-----------| (bo_offset=n)
  *
  *
- *	4) Existent mapping is replaced.
- *	--------------------------------
+ * 4) Existent mapping is replaced.
+ *
+ *    ::
  *
  *	     0  a  1
  *	old: |-----|       (bo_offset=n)
@@ -187,12 +189,14 @@
  *	     0     a     2
  *	new: |-----------| (bo_offset=n)
  *
- *	Note: We expect to see the same result for a request with a different bo
- *	      and/or bo_offset.
+ *    .. note::
+ *       We expect to see the same result for a request with a different bo
+ *       and/or bo_offset.
  *
  *
- *	5) Existent mapping is split.
- *	-----------------------------
+ * 5) Existent mapping is split.
+ *
+ *    ::
  *
  *	     0     a     2
  *	old: |-----------| (bo_offset=n)
@@ -203,12 +207,14 @@
  *	     0  b  1  a' 2
  *	new: |-----|-----| (b.bo_offset=n, a.bo_offset=n+1)
  *
- *	Note: We expect to see the same result for a request with a different bo
- *	      and/or non-contiguous bo_offset.
+ *    .. note::
+ *       We expect to see the same result for a request with a different bo
+ *       and/or non-contiguous bo_offset.
  *
  *
- *	6) Existent mapping is kept.
- *	----------------------------
+ * 6) Existent mapping is kept.
+ *
+ *    ::
  *
  *	     0     a     2
  *	old: |-----------| (bo_offset=n)
@@ -220,8 +226,9 @@
  *	new: |-----------| (bo_offset=n)
  *
  *
- *	7) Existent mapping is split.
- *	-----------------------------
+ * 7) Existent mapping is split.
+ *
+ *    ::
  *
  *	     0     a     2
  *	old: |-----------| (bo_offset=n)
@@ -233,8 +240,9 @@
  *	new: |-----|-----| (a.bo_offset=n,b.bo_offset=m)
  *
  *
- *	8) Existent mapping is kept.
- *	----------------------------
+ * 8) Existent mapping is kept.
+ *
+ *    ::
  *
  *	      0     a     2
  *	old: |-----------| (bo_offset=n)
@@ -246,8 +254,9 @@
  *	new: |-----------| (bo_offset=n)
  *
  *
- *	9) Existent mapping is split.
- *	-----------------------------
+ * 9) Existent mapping is split.
+ *
+ *    ::
  *
  *	     0     a     2
  *	old: |-----------|       (bo_offset=n)
@@ -259,104 +268,113 @@
  *	new: |-----|-----------| (a.bo_offset=n,b.bo_offset=m)
  *
  *
- *	10) Existent mapping is merged.
- *	-------------------------------
+ * 10) Existent mapping is merged.
  *
- *	     0     a     2
- *	old: |-----------|       (bo_offset=n)
+ *     ::
  *
- *	           1     a     3
- *	req:       |-----------| (bo_offset=n+1)
+ *	      0     a     2
+ *	 old: |-----------|       (bo_offset=n)
  *
- *	     0        a        3
- *	new: |-----------------| (bo_offset=n)
+ *	            1     a     3
+ *	 req:       |-----------| (bo_offset=n+1)
+ *
+ *	      0        a        3
+ *	 new: |-----------------| (bo_offset=n)
  *
  *
- *	11) Existent mapping is split.
- *	------------------------------
+ * 11) Existent mapping is split.
  *
- *	     0        a        3
- *	old: |-----------------| (bo_offset=n)
+ *     ::
  *
- *	           1  b  2
- *	req:       |-----|       (bo_offset=m)
+ *	      0        a        3
+ *	 old: |-----------------| (bo_offset=n)
  *
- *	     0  a  1  b  2  a' 3
- *	new: |-----|-----|-----| (a.bo_offset=n,b.bo_offset=m,a'.bo_offset=n+2)
+ *	            1  b  2
+ *	 req:       |-----|       (bo_offset=m)
+ *
+ *	      0  a  1  b  2  a' 3
+ *	 new: |-----|-----|-----| (a.bo_offset=n,b.bo_offset=m,a'.bo_offset=n+2)
  *
  *
- *	12) Existent mapping is kept.
- *	-----------------------------
+ * 12) Existent mapping is kept.
  *
- *	     0        a        3
- *	old: |-----------------| (bo_offset=n)
+ *     ::
  *
- *	           1  a  2
- *	req:       |-----|       (bo_offset=n+1)
+ *	      0        a        3
+ *	 old: |-----------------| (bo_offset=n)
  *
- *	     0        a        3
- *	old: |-----------------| (bo_offset=n)
+ *	            1  a  2
+ *	 req:       |-----|       (bo_offset=n+1)
+ *
+ *	      0        a        3
+ *	 old: |-----------------| (bo_offset=n)
  *
  *
- *	13) Existent mapping is replaced.
- *	---------------------------------
+ * 13) Existent mapping is replaced.
  *
- *	           1  a  2
- *	old:       |-----| (bo_offset=n)
+ *     ::
  *
- *	     0     a     2
- *	req: |-----------| (bo_offset=n)
+ *	            1  a  2
+ *	 old:       |-----| (bo_offset=n)
  *
- *	     0     a     2
- *	new: |-----------| (bo_offset=n)
+ *	      0     a     2
+ *	 req: |-----------| (bo_offset=n)
  *
- *	Note: We expect to see the same result for a request with a different bo
- *	      and/or non-contiguous bo_offset.
+ *	      0     a     2
+ *	 new: |-----------| (bo_offset=n)
+ *
+ *     .. note::
+ *        We expect to see the same result for a request with a different bo
+ *        and/or non-contiguous bo_offset.
  *
  *
- *	14) Existent mapping is replaced.
- *	---------------------------------
+ * 14) Existent mapping is replaced.
  *
- *	           1  a  2
- *	old:       |-----| (bo_offset=n)
+ *     ::
  *
- *	     0        a       3
- *	req: |----------------| (bo_offset=n)
+ *	            1  a  2
+ *	 old:       |-----| (bo_offset=n)
  *
- *	     0        a       3
- *	new: |----------------| (bo_offset=n)
+ *	      0        a       3
+ *	 req: |----------------| (bo_offset=n)
  *
- *	Note: We expect to see the same result for a request with a different bo
- *	      and/or non-contiguous bo_offset.
+ *	      0        a       3
+ *	 new: |----------------| (bo_offset=n)
+ *
+ *     .. note::
+ *        We expect to see the same result for a request with a different bo
+ *        and/or non-contiguous bo_offset.
  *
  *
- *	15) Existent mapping is split.
- *	------------------------------
+ * 15) Existent mapping is split.
  *
- *	           1     a     3
- *	old:       |-----------| (bo_offset=n)
+ *     ::
  *
- *	     0     b     2
- *	req: |-----------|       (bo_offset=m)
+ *	            1     a     3
+ *	 old:       |-----------| (bo_offset=n)
  *
- *	     0     b     2  a' 3
- *	new: |-----------|-----| (b.bo_offset=m,a.bo_offset=n+2)
+ *	      0     b     2
+ *	 req: |-----------|       (bo_offset=m)
+ *
+ *	      0     b     2  a' 3
+ *	 new: |-----------|-----| (b.bo_offset=m,a.bo_offset=n+2)
  *
  *
- *	16) Existent mappings are merged.
- *	---------------------------------
+ * 16) Existent mappings are merged.
  *
- *	     0     a     1
- *	old: |-----------|                        (bo_offset=n)
+ *     ::
  *
- *	                            2     a     3
- *	old':                       |-----------| (bo_offset=n+2)
+ *	      0     a     1
+ *	 old: |-----------|                        (bo_offset=n)
  *
- *	                1     a     2
- *	req:            |-----------|             (bo_offset=n+1)
+ *	                             2     a     3
+ *	 old':                       |-----------| (bo_offset=n+2)
  *
- *	                      a
- *	new: |----------------------------------| (bo_offset=n)
+ *	                 1     a     2
+ *	 req:            |-----------|             (bo_offset=n+1)
+ *
+ *	                       a
+ *	 new: |----------------------------------| (bo_offset=n)
  */
 
 /**

However, the relationship scenario descriptions are too generic (different
diagrams are described by the same text). Please rewrite them, taking into
account bo_offset values in each scenario.

Thanks.

-- 
An old man doll... just what I always wanted! - Clara

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Bagas Sanjaya <bagasdotme@gmail.com>
To: Danilo Krummrich <dakr@redhat.com>,
	daniel@ffwll.ch, airlied@redhat.com, christian.koenig@amd.com,
	bskeggs@redhat.com, jason@jlekstrand.net, tzimmermann@suse.de,
	mripard@kernel.org, corbet@lwn.net
Cc: nouveau@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org, linux-doc@vger.kernel.org
Subject: Re: [PATCH drm-next 03/14] drm: manager to keep track of GPUs VA mappings
Date: Thu, 19 Jan 2023 11:14:42 +0700	[thread overview]
Message-ID: <Y8jDsqGc5gXoIBAO@debian.me> (raw)
In-Reply-To: <20230118061256.2689-4-dakr@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 16188 bytes --]

On Wed, Jan 18, 2023 at 07:12:45AM +0100, Danilo Krummrich wrote:
> This adds the infrastructure for a manager implementation to keep track
> of GPU virtual address (VA) mappings.

"Add infrastructure for ..."

> + * Analogue to drm_gpuva_sm_map_ops_create() drm_gpuva_sm_unmap_ops_create()
> + * provides drivers a the list of operations to be executed in order to unmap
> + * a range of GPU VA space. The logic behind this functions is way simpler
> + * though: For all existent mappings enclosed by the given range unmap
> + * operations are created. For mappings which are only partically located within
> + * the given range, remap operations are created such that those mappings are
> + * split up and re-mapped partically.

"Analogous to ..."

> + *
> + * The following paragraph depicts the basic constellations of existent GPU VA
> + * mappings, a newly requested mapping and the resulting mappings as implemented
> + * by drm_gpuva_sm_map_ops_create()  - it doesn't cover arbitrary combinations
> + * of those constellations.
> + *
> + * ::
> + *
> + *	1) Existent mapping is kept.
> + *	----------------------------
> + *
> + *	     0     a     1
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0     a     1
> + *	req: |-----------| (bo_offset=n)
> + *
> + *	     0     a     1
> + *	new: |-----------| (bo_offset=n)
> + *
> + *
> + *	2) Existent mapping is replaced.
> + *	--------------------------------
> + *
> + *	     0     a     1
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0     a     1
> + *	req: |-----------| (bo_offset=m)
> + *
> + *	     0     a     1
> + *	new: |-----------| (bo_offset=m)
> + *
> + *
> + *	3) Existent mapping is replaced.
> + *	--------------------------------
> + *
> + *	     0     a     1
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0     b     1
> + *	req: |-----------| (bo_offset=n)
> + *
> + *	     0     b     1
> + *	new: |-----------| (bo_offset=n)
> + *
> + *
> + *	4) Existent mapping is replaced.
> + *	--------------------------------
> + *
> + *	     0  a  1
> + *	old: |-----|       (bo_offset=n)
> + *
> + *	     0     a     2
> + *	req: |-----------| (bo_offset=n)
> + *
> + *	     0     a     2
> + *	new: |-----------| (bo_offset=n)
> + *
> + *	Note: We expect to see the same result for a request with a different bo
> + *	      and/or bo_offset.
> + *
> + *
> + *	5) Existent mapping is split.
> + *	-----------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0  b  1
> + *	req: |-----|       (bo_offset=n)
> + *
> + *	     0  b  1  a' 2
> + *	new: |-----|-----| (b.bo_offset=n, a.bo_offset=n+1)
> + *
> + *	Note: We expect to see the same result for a request with a different bo
> + *	      and/or non-contiguous bo_offset.
> + *
> + *
> + *	6) Existent mapping is kept.
> + *	----------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	     0  a  1
> + *	req: |-----|       (bo_offset=n)
> + *
> + *	     0     a     2
> + *	new: |-----------| (bo_offset=n)
> + *
> + *
> + *	7) Existent mapping is split.
> + *	-----------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	           1  b  2
> + *	req:       |-----| (bo_offset=m)
> + *
> + *	     0  a  1  b  2
> + *	new: |-----|-----| (a.bo_offset=n,b.bo_offset=m)
> + *
> + *
> + *	8) Existent mapping is kept.
> + *	----------------------------
> + *
> + *	      0     a     2
> + *	old: |-----------| (bo_offset=n)
> + *
> + *	           1  a  2
> + *	req:       |-----| (bo_offset=n+1)
> + *
> + *	     0     a     2
> + *	new: |-----------| (bo_offset=n)
> + *
> + *
> + *	9) Existent mapping is split.
> + *	-----------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------|       (bo_offset=n)
> + *
> + *	           1     b     3
> + *	req:       |-----------| (bo_offset=m)
> + *
> + *	     0  a  1     b     3
> + *	new: |-----|-----------| (a.bo_offset=n,b.bo_offset=m)
> + *
> + *
> + *	10) Existent mapping is merged.
> + *	-------------------------------
> + *
> + *	     0     a     2
> + *	old: |-----------|       (bo_offset=n)
> + *
> + *	           1     a     3
> + *	req:       |-----------| (bo_offset=n+1)
> + *
> + *	     0        a        3
> + *	new: |-----------------| (bo_offset=n)
> + *
> + *
> + *	11) Existent mapping is split.
> + *	------------------------------
> + *
> + *	     0        a        3
> + *	old: |-----------------| (bo_offset=n)
> + *
> + *	           1  b  2
> + *	req:       |-----|       (bo_offset=m)
> + *
> + *	     0  a  1  b  2  a' 3
> + *	new: |-----|-----|-----| (a.bo_offset=n,b.bo_offset=m,a'.bo_offset=n+2)
> + *
> + *
> + *	12) Existent mapping is kept.
> + *	-----------------------------
> + *
> + *	     0        a        3
> + *	old: |-----------------| (bo_offset=n)
> + *
> + *	           1  a  2
> + *	req:       |-----|       (bo_offset=n+1)
> + *
> + *	     0        a        3
> + *	old: |-----------------| (bo_offset=n)
> + *
> + *
> + *	13) Existent mapping is replaced.
> + *	---------------------------------
> + *
> + *	           1  a  2
> + *	old:       |-----| (bo_offset=n)
> + *
> + *	     0     a     2
> + *	req: |-----------| (bo_offset=n)
> + *
> + *	     0     a     2
> + *	new: |-----------| (bo_offset=n)
> + *
> + *	Note: We expect to see the same result for a request with a different bo
> + *	      and/or non-contiguous bo_offset.
> + *
> + *
> + *	14) Existent mapping is replaced.
> + *	---------------------------------
> + *
> + *	           1  a  2
> + *	old:       |-----| (bo_offset=n)
> + *
> + *	     0        a       3
> + *	req: |----------------| (bo_offset=n)
> + *
> + *	     0        a       3
> + *	new: |----------------| (bo_offset=n)
> + *
> + *	Note: We expect to see the same result for a request with a different bo
> + *	      and/or non-contiguous bo_offset.
> + *
> + *
> + *	15) Existent mapping is split.
> + *	------------------------------
> + *
> + *	           1     a     3
> + *	old:       |-----------| (bo_offset=n)
> + *
> + *	     0     b     2
> + *	req: |-----------|       (bo_offset=m)
> + *
> + *	     0     b     2  a' 3
> + *	new: |-----------|-----| (b.bo_offset=m,a.bo_offset=n+2)
> + *
> + *
> + *	16) Existent mappings are merged.
> + *	---------------------------------
> + *
> + *	     0     a     1
> + *	old: |-----------|                        (bo_offset=n)
> + *
> + *	                            2     a     3
> + *	old':                       |-----------| (bo_offset=n+2)
> + *
> + *	                1     a     2
> + *	req:            |-----------|             (bo_offset=n+1)
> + *
> + *	                      a
> + *	new: |----------------------------------| (bo_offset=n)
> + */

Factor out lists from the big code block above:

---- >8 ----

diff --git a/drivers/gpu/drm/drm_gpuva_mgr.c b/drivers/gpu/drm/drm_gpuva_mgr.c
index e665f642689d03..411c0aa80bfa1f 100644
--- a/drivers/gpu/drm/drm_gpuva_mgr.c
+++ b/drivers/gpu/drm/drm_gpuva_mgr.c
@@ -129,15 +129,14 @@
  * the given range, remap operations are created such that those mappings are
  * split up and re-mapped partically.
  *
- * The following paragraph depicts the basic constellations of existent GPU VA
+ * The following diagram depicts the basic relationships of existent GPU VA
  * mappings, a newly requested mapping and the resulting mappings as implemented
- * by drm_gpuva_sm_map_ops_create()  - it doesn't cover arbitrary combinations
- * of those constellations.
+ * by drm_gpuva_sm_map_ops_create()  - it doesn't cover any arbitrary
+ * combinations of these.
  *
- * ::
- *
- *	1) Existent mapping is kept.
- *	----------------------------
+ * 1) Existent mapping is kept.
+ * 
+ *    ::
  *
  *	     0     a     1
  *	old: |-----------| (bo_offset=n)
@@ -149,8 +148,9 @@
  *	new: |-----------| (bo_offset=n)
  *
  *
- *	2) Existent mapping is replaced.
- *	--------------------------------
+ * 2) Existent mapping is replaced.
+ *
+ *    ::
  *
  *	     0     a     1
  *	old: |-----------| (bo_offset=n)
@@ -162,8 +162,9 @@
  *	new: |-----------| (bo_offset=m)
  *
  *
- *	3) Existent mapping is replaced.
- *	--------------------------------
+ * 3) Existent mapping is replaced.
+ *
+ *    ::
  *
  *	     0     a     1
  *	old: |-----------| (bo_offset=n)
@@ -175,8 +176,9 @@
  *	new: |-----------| (bo_offset=n)
  *
  *
- *	4) Existent mapping is replaced.
- *	--------------------------------
+ * 4) Existent mapping is replaced.
+ *
+ *    ::
  *
  *	     0  a  1
  *	old: |-----|       (bo_offset=n)
@@ -187,12 +189,14 @@
  *	     0     a     2
  *	new: |-----------| (bo_offset=n)
  *
- *	Note: We expect to see the same result for a request with a different bo
- *	      and/or bo_offset.
+ *    .. note::
+ *       We expect to see the same result for a request with a different bo
+ *       and/or bo_offset.
  *
  *
- *	5) Existent mapping is split.
- *	-----------------------------
+ * 5) Existent mapping is split.
+ *
+ *    ::
  *
  *	     0     a     2
  *	old: |-----------| (bo_offset=n)
@@ -203,12 +207,14 @@
  *	     0  b  1  a' 2
  *	new: |-----|-----| (b.bo_offset=n, a.bo_offset=n+1)
  *
- *	Note: We expect to see the same result for a request with a different bo
- *	      and/or non-contiguous bo_offset.
+ *    .. note::
+ *       We expect to see the same result for a request with a different bo
+ *       and/or non-contiguous bo_offset.
  *
  *
- *	6) Existent mapping is kept.
- *	----------------------------
+ * 6) Existent mapping is kept.
+ *
+ *    ::
  *
  *	     0     a     2
  *	old: |-----------| (bo_offset=n)
@@ -220,8 +226,9 @@
  *	new: |-----------| (bo_offset=n)
  *
  *
- *	7) Existent mapping is split.
- *	-----------------------------
+ * 7) Existent mapping is split.
+ *
+ *    ::
  *
  *	     0     a     2
  *	old: |-----------| (bo_offset=n)
@@ -233,8 +240,9 @@
  *	new: |-----|-----| (a.bo_offset=n,b.bo_offset=m)
  *
  *
- *	8) Existent mapping is kept.
- *	----------------------------
+ * 8) Existent mapping is kept.
+ *
+ *    ::
  *
  *	      0     a     2
  *	old: |-----------| (bo_offset=n)
@@ -246,8 +254,9 @@
  *	new: |-----------| (bo_offset=n)
  *
  *
- *	9) Existent mapping is split.
- *	-----------------------------
+ * 9) Existent mapping is split.
+ *
+ *    ::
  *
  *	     0     a     2
  *	old: |-----------|       (bo_offset=n)
@@ -259,104 +268,113 @@
  *	new: |-----|-----------| (a.bo_offset=n,b.bo_offset=m)
  *
  *
- *	10) Existent mapping is merged.
- *	-------------------------------
+ * 10) Existent mapping is merged.
  *
- *	     0     a     2
- *	old: |-----------|       (bo_offset=n)
+ *     ::
  *
- *	           1     a     3
- *	req:       |-----------| (bo_offset=n+1)
+ *	      0     a     2
+ *	 old: |-----------|       (bo_offset=n)
  *
- *	     0        a        3
- *	new: |-----------------| (bo_offset=n)
+ *	            1     a     3
+ *	 req:       |-----------| (bo_offset=n+1)
+ *
+ *	      0        a        3
+ *	 new: |-----------------| (bo_offset=n)
  *
  *
- *	11) Existent mapping is split.
- *	------------------------------
+ * 11) Existent mapping is split.
  *
- *	     0        a        3
- *	old: |-----------------| (bo_offset=n)
+ *     ::
  *
- *	           1  b  2
- *	req:       |-----|       (bo_offset=m)
+ *	      0        a        3
+ *	 old: |-----------------| (bo_offset=n)
  *
- *	     0  a  1  b  2  a' 3
- *	new: |-----|-----|-----| (a.bo_offset=n,b.bo_offset=m,a'.bo_offset=n+2)
+ *	            1  b  2
+ *	 req:       |-----|       (bo_offset=m)
+ *
+ *	      0  a  1  b  2  a' 3
+ *	 new: |-----|-----|-----| (a.bo_offset=n,b.bo_offset=m,a'.bo_offset=n+2)
  *
  *
- *	12) Existent mapping is kept.
- *	-----------------------------
+ * 12) Existent mapping is kept.
  *
- *	     0        a        3
- *	old: |-----------------| (bo_offset=n)
+ *     ::
  *
- *	           1  a  2
- *	req:       |-----|       (bo_offset=n+1)
+ *	      0        a        3
+ *	 old: |-----------------| (bo_offset=n)
  *
- *	     0        a        3
- *	old: |-----------------| (bo_offset=n)
+ *	            1  a  2
+ *	 req:       |-----|       (bo_offset=n+1)
+ *
+ *	      0        a        3
+ *	 old: |-----------------| (bo_offset=n)
  *
  *
- *	13) Existent mapping is replaced.
- *	---------------------------------
+ * 13) Existent mapping is replaced.
  *
- *	           1  a  2
- *	old:       |-----| (bo_offset=n)
+ *     ::
  *
- *	     0     a     2
- *	req: |-----------| (bo_offset=n)
+ *	            1  a  2
+ *	 old:       |-----| (bo_offset=n)
  *
- *	     0     a     2
- *	new: |-----------| (bo_offset=n)
+ *	      0     a     2
+ *	 req: |-----------| (bo_offset=n)
  *
- *	Note: We expect to see the same result for a request with a different bo
- *	      and/or non-contiguous bo_offset.
+ *	      0     a     2
+ *	 new: |-----------| (bo_offset=n)
+ *
+ *     .. note::
+ *        We expect to see the same result for a request with a different bo
+ *        and/or non-contiguous bo_offset.
  *
  *
- *	14) Existent mapping is replaced.
- *	---------------------------------
+ * 14) Existent mapping is replaced.
  *
- *	           1  a  2
- *	old:       |-----| (bo_offset=n)
+ *     ::
  *
- *	     0        a       3
- *	req: |----------------| (bo_offset=n)
+ *	            1  a  2
+ *	 old:       |-----| (bo_offset=n)
  *
- *	     0        a       3
- *	new: |----------------| (bo_offset=n)
+ *	      0        a       3
+ *	 req: |----------------| (bo_offset=n)
  *
- *	Note: We expect to see the same result for a request with a different bo
- *	      and/or non-contiguous bo_offset.
+ *	      0        a       3
+ *	 new: |----------------| (bo_offset=n)
+ *
+ *     .. note::
+ *        We expect to see the same result for a request with a different bo
+ *        and/or non-contiguous bo_offset.
  *
  *
- *	15) Existent mapping is split.
- *	------------------------------
+ * 15) Existent mapping is split.
  *
- *	           1     a     3
- *	old:       |-----------| (bo_offset=n)
+ *     ::
  *
- *	     0     b     2
- *	req: |-----------|       (bo_offset=m)
+ *	            1     a     3
+ *	 old:       |-----------| (bo_offset=n)
  *
- *	     0     b     2  a' 3
- *	new: |-----------|-----| (b.bo_offset=m,a.bo_offset=n+2)
+ *	      0     b     2
+ *	 req: |-----------|       (bo_offset=m)
+ *
+ *	      0     b     2  a' 3
+ *	 new: |-----------|-----| (b.bo_offset=m,a.bo_offset=n+2)
  *
  *
- *	16) Existent mappings are merged.
- *	---------------------------------
+ * 16) Existent mappings are merged.
  *
- *	     0     a     1
- *	old: |-----------|                        (bo_offset=n)
+ *     ::
  *
- *	                            2     a     3
- *	old':                       |-----------| (bo_offset=n+2)
+ *	      0     a     1
+ *	 old: |-----------|                        (bo_offset=n)
  *
- *	                1     a     2
- *	req:            |-----------|             (bo_offset=n+1)
+ *	                             2     a     3
+ *	 old':                       |-----------| (bo_offset=n+2)
  *
- *	                      a
- *	new: |----------------------------------| (bo_offset=n)
+ *	                 1     a     2
+ *	 req:            |-----------|             (bo_offset=n+1)
+ *
+ *	                       a
+ *	 new: |----------------------------------| (bo_offset=n)
  */
 
 /**

However, the relationship scenario descriptions are too generic (different
diagrams are described by the same text). Please rewrite them, taking into
account bo_offset values in each scenario.

Thanks.

-- 
An old man doll... just what I always wanted! - Clara

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

  reply	other threads:[~2023-01-19  4:47 UTC|newest]

Thread overview: 230+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-18  6:12 [PATCH drm-next 00/14] [RFC] DRM GPUVA Manager & Nouveau VM_BIND UAPI Danilo Krummrich
2023-01-18  6:12 ` Danilo Krummrich
2023-01-18  6:12 ` [Nouveau] " Danilo Krummrich
2023-01-18  6:12 ` [PATCH drm-next 01/14] drm: execution context for GEM buffers Danilo Krummrich
2023-01-18  6:12   ` Danilo Krummrich
2023-01-18  6:12   ` [Nouveau] " Danilo Krummrich
2023-01-18  6:12 ` [PATCH drm-next 02/14] drm/exec: fix memory leak in drm_exec_prepare_obj() Danilo Krummrich
2023-01-18  6:12   ` Danilo Krummrich
2023-01-18  6:12   ` [Nouveau] " Danilo Krummrich
2023-01-18  8:51   ` Christian König
2023-01-18  8:51     ` Christian König
2023-01-18  8:51     ` [Nouveau] " Christian König
2023-01-18 19:00     ` Danilo Krummrich
2023-01-18 19:00       ` Danilo Krummrich
2023-01-18 19:00       ` [Nouveau] " Danilo Krummrich
2023-01-18  6:12 ` [PATCH drm-next 03/14] drm: manager to keep track of GPUs VA mappings Danilo Krummrich
2023-01-18  6:12   ` Danilo Krummrich
2023-01-18  6:12   ` [Nouveau] " Danilo Krummrich
2023-01-19  4:14   ` Bagas Sanjaya [this message]
2023-01-19  4:14     ` Bagas Sanjaya
2023-01-19  4:14     ` [Nouveau] " Bagas Sanjaya
2023-01-20 18:32     ` Danilo Krummrich
2023-01-23 23:23   ` Niranjana Vishwanathapura
2023-01-23 23:23     ` Niranjana Vishwanathapura
2023-01-24  0:11     ` [Nouveau] " Danilo Krummrich
2023-01-24  0:11       ` Danilo Krummrich
2023-01-24 17:26       ` Niranjana Vishwanathapura
2023-01-26 23:43   ` Matthew Brost
2023-01-26 23:43     ` Matthew Brost
2023-01-27  0:24   ` Matthew Brost
2023-01-27  0:24     ` Matthew Brost
2023-01-28  1:51     ` Danilo Krummrich
2023-02-03 17:37   ` Matthew Brost
2023-02-03 17:37     ` Matthew Brost
2023-02-06 13:35     ` Christian König
2023-02-06 13:35       ` Christian König
2023-02-06 13:35       ` [Nouveau] " Christian König
2023-02-06 13:46       ` Danilo Krummrich
2023-02-06 13:46         ` Danilo Krummrich
2023-02-06 13:46         ` [Nouveau] " Danilo Krummrich
2023-02-14 11:52     ` Danilo Krummrich
2023-02-14 11:52       ` Danilo Krummrich
2023-02-14 11:52       ` [Nouveau] " Danilo Krummrich
2023-01-18  6:12 ` [PATCH drm-next 04/14] drm: debugfs: provide infrastructure to dump a DRM GPU VA space Danilo Krummrich
2023-01-18  6:12   ` Danilo Krummrich
2023-01-18  6:12   ` [Nouveau] " Danilo Krummrich
2023-01-18 13:55   ` kernel test robot
2023-01-18 13:55     ` kernel test robot
2023-01-18 13:55     ` [Nouveau] " kernel test robot
2023-01-18 15:47   ` kernel test robot
2023-01-18 15:47     ` kernel test robot
2023-01-18 15:47     ` [Nouveau] " kernel test robot
2023-01-18  6:12 ` [PATCH drm-next 05/14] drm/nouveau: new VM_BIND uapi interfaces Danilo Krummrich
2023-01-18  6:12   ` Danilo Krummrich
2023-01-18  6:12   ` [Nouveau] " Danilo Krummrich
2023-01-27  1:05   ` Matthew Brost
2023-01-27  1:05     ` Matthew Brost
2023-01-27  1:26     ` Danilo Krummrich
2023-01-27  1:26       ` Danilo Krummrich
2023-01-27  1:26       ` [Nouveau] " Danilo Krummrich
2023-01-27  7:55       ` Christian König
2023-01-27  7:55         ` Christian König
2023-01-27  7:55         ` [Nouveau] " Christian König
2023-01-27 13:12         ` Danilo Krummrich
2023-01-27 13:12           ` Danilo Krummrich
2023-01-27 13:12           ` [Nouveau] " Danilo Krummrich
2023-01-27 13:23           ` Christian König
2023-01-27 13:23             ` Christian König
2023-01-27 13:23             ` [Nouveau] " Christian König
2023-01-27 14:44             ` Danilo Krummrich
2023-01-27 14:44               ` Danilo Krummrich
2023-01-27 14:44               ` [Nouveau] " Danilo Krummrich
2023-01-27 15:17               ` Christian König
2023-01-27 15:17                 ` Christian König
2023-01-27 15:17                 ` [Nouveau] " Christian König
2023-01-27 20:25                 ` David Airlie
2023-01-27 20:25                   ` David Airlie
2023-01-27 20:25                   ` [Nouveau] " David Airlie
2023-01-30 12:58                   ` Christian König
2023-01-30 12:58                     ` Christian König
2023-01-30 12:58                     ` [Nouveau] " Christian König
2023-01-27 21:09                 ` Danilo Krummrich
2023-01-27 21:09                   ` Danilo Krummrich
2023-01-27 21:09                   ` [Nouveau] " Danilo Krummrich
2023-01-29 18:46                   ` Danilo Krummrich
2023-01-29 18:46                     ` Danilo Krummrich
2023-01-29 18:46                     ` [Nouveau] " Danilo Krummrich
2023-01-30 13:02                     ` Christian König
2023-01-30 13:02                       ` Christian König
2023-01-30 13:02                       ` [Nouveau] " Christian König
2023-01-30 23:38                       ` Danilo Krummrich
2023-01-30 23:38                         ` Danilo Krummrich
2023-01-30 23:38                         ` [Nouveau] " Danilo Krummrich
2023-02-01  8:10                       ` Dave Airlie
2023-02-01  8:10                         ` Dave Airlie
2023-02-01  8:10                         ` Dave Airlie
2023-02-02 11:53                         ` Christian König
2023-02-02 11:53                           ` Christian König
2023-02-02 11:53                           ` Christian König
2023-02-02 18:31                           ` Danilo Krummrich
2023-02-02 18:31                             ` Danilo Krummrich
2023-02-02 18:31                             ` Danilo Krummrich
2023-02-06  9:48                             ` Christian König
2023-02-06  9:48                               ` Christian König
2023-02-06  9:48                               ` Christian König
2023-02-06 13:27                               ` Danilo Krummrich
2023-02-06 13:27                                 ` Danilo Krummrich
2023-02-06 13:27                                 ` Danilo Krummrich
2023-02-06 16:14                                 ` Christian König
2023-02-06 16:14                                   ` Christian König
2023-02-06 16:14                                   ` Christian König
2023-02-06 18:20                                   ` Danilo Krummrich
2023-02-06 18:20                                     ` Danilo Krummrich
2023-02-06 18:20                                     ` Danilo Krummrich
2023-02-07  9:35                                     ` Christian König
2023-02-07  9:35                                       ` Christian König
2023-02-07  9:35                                       ` Christian König
2023-02-07 10:50                                       ` Danilo Krummrich
2023-02-07 10:50                                         ` Danilo Krummrich
2023-02-07 10:50                                         ` Danilo Krummrich
2023-02-10 11:50                                         ` Christian König
2023-02-10 11:50                                           ` Christian König
2023-02-10 11:50                                           ` Christian König
2023-02-10 12:47                                           ` Danilo Krummrich
2023-02-10 12:47                                             ` Danilo Krummrich
2023-02-10 12:47                                             ` Danilo Krummrich
2023-01-27  1:43     ` Danilo Krummrich
2023-01-27  1:43       ` Danilo Krummrich
2023-01-27  1:43       ` [Nouveau] " Danilo Krummrich
2023-01-27  3:21       ` Matthew Brost
2023-01-27  3:21         ` Matthew Brost
2023-01-27  3:33         ` Danilo Krummrich
2023-01-27  3:33           ` Danilo Krummrich
2023-01-27  3:33           ` [Nouveau] " Danilo Krummrich
2023-01-18  6:12 ` [PATCH drm-next 06/14] drm/nouveau: get vmm via nouveau_cli_vmm() Danilo Krummrich
2023-01-18  6:12   ` Danilo Krummrich
2023-01-18  6:12   ` [Nouveau] " Danilo Krummrich
2023-01-18  6:12 ` [PATCH drm-next 07/14] drm/nouveau: bo: initialize GEM GPU VA interface Danilo Krummrich
2023-01-18  6:12   ` Danilo Krummrich
2023-01-18  6:12   ` [Nouveau] " Danilo Krummrich
2023-01-18  6:12 ` [PATCH drm-next 08/14] drm/nouveau: move usercopy helpers to nouveau_drv.h Danilo Krummrich
2023-01-18  6:12   ` Danilo Krummrich
2023-01-18  6:12   ` [Nouveau] " Danilo Krummrich
2023-01-18  6:12 ` [PATCH drm-next 09/14] drm/nouveau: fence: fail to emit when fence context is killed Danilo Krummrich
2023-01-18  6:12   ` Danilo Krummrich
2023-01-18  6:12   ` [Nouveau] " Danilo Krummrich
2023-01-18  6:12 ` [PATCH drm-next 10/14] drm/nouveau: chan: provide nouveau_channel_kill() Danilo Krummrich
2023-01-18  6:12   ` Danilo Krummrich
2023-01-18  6:12   ` [Nouveau] " Danilo Krummrich
2023-01-18  6:12 ` [PATCH drm-next 11/14] drm/nouveau: nvkm/vmm: implement raw ops to manage uvmm Danilo Krummrich
2023-01-18  6:12   ` Danilo Krummrich
2023-01-18  6:12   ` [Nouveau] " Danilo Krummrich
2023-01-18  9:37   ` kernel test robot
2023-01-18  9:37     ` kernel test robot
2023-01-20  3:37   ` kernel test robot
2023-01-20  3:37     ` kernel test robot
2023-01-20  3:37     ` [Nouveau] " kernel test robot
2023-01-18  6:12 ` [PATCH drm-next 12/14] drm/nouveau: implement uvmm for user mode bindings Danilo Krummrich
2023-01-18  6:12   ` Danilo Krummrich
2023-01-18  6:12   ` [Nouveau] " Danilo Krummrich
2023-01-18  6:12 ` [PATCH drm-next 13/14] drm/nouveau: implement new VM_BIND UAPI Danilo Krummrich
2023-01-18  6:12   ` Danilo Krummrich
2023-01-18  6:12   ` [Nouveau] " Danilo Krummrich
2023-01-18  8:37   ` kernel test robot
2023-01-18  8:37     ` kernel test robot
2023-01-18 20:37   ` Thomas Hellström (Intel)
2023-01-18 20:37     ` [Nouveau] " Thomas Hellström (Intel)
2023-01-19  3:44     ` Danilo Krummrich
2023-01-19  3:44       ` [Nouveau] " Danilo Krummrich
2023-01-19  4:58       ` Matthew Brost
2023-01-19  4:58         ` Matthew Brost
2023-01-19  7:32         ` Thomas Hellström (Intel)
2023-01-19  7:32           ` Thomas Hellström (Intel)
2023-01-19  7:32           ` [Nouveau] " Thomas Hellström (Intel)
2023-01-19 15:36         ` Danilo Krummrich
2023-01-19 16:38           ` Matthew Brost
2023-01-19 17:46             ` Danilo Krummrich
2023-01-19 21:47               ` Matthew Brost
2023-01-19 22:25                 ` Danilo Krummrich
2023-01-20  4:30                   ` Matthew Brost
2023-01-20 10:22             ` Boris Brezillon
2023-01-22 17:48               ` Matthew Brost
2023-01-23 10:01                 ` Boris Brezillon
2023-01-20 10:08         ` Boris Brezillon
2023-01-20 10:08           ` Boris Brezillon
2023-01-20 10:08           ` [Nouveau] " Boris Brezillon
2023-01-18  6:12 ` [PATCH drm-next 14/14] drm/nouveau: debugfs: implement DRM GPU VA debugfs Danilo Krummrich
2023-01-18  6:12   ` Danilo Krummrich
2023-01-18  6:12   ` [Nouveau] " Danilo Krummrich
2023-01-18  8:53 ` [PATCH drm-next 00/14] [RFC] DRM GPUVA Manager & Nouveau VM_BIND UAPI Christian König
2023-01-18  8:53   ` Christian König
2023-01-18  8:53   ` [Nouveau] " Christian König
2023-01-18 15:34   ` Danilo Krummrich
2023-01-18 15:34     ` Danilo Krummrich
2023-01-18 15:34     ` [Nouveau] " Danilo Krummrich
2023-01-18 15:37     ` Christian König
2023-01-18 15:37       ` Christian König
2023-01-18 15:37       ` [Nouveau] " Christian König
2023-01-18 16:19       ` Danilo Krummrich
2023-01-18 16:19         ` Danilo Krummrich
2023-01-18 16:19         ` [Nouveau] " Danilo Krummrich
2023-01-18 16:30         ` Alex Deucher
2023-01-18 16:30           ` Alex Deucher
2023-01-18 16:30           ` [Nouveau] " Alex Deucher
2023-01-18 16:50           ` Danilo Krummrich
2023-01-18 16:50             ` Danilo Krummrich
2023-01-18 16:50             ` [Nouveau] " Danilo Krummrich
2023-01-18 16:54             ` Alex Deucher
2023-01-18 16:54               ` Alex Deucher
2023-01-18 16:54               ` [Nouveau] " Alex Deucher
2023-01-18 19:17               ` Dave Airlie
2023-01-18 19:17                 ` Dave Airlie
2023-01-18 19:17                 ` [Nouveau] " Dave Airlie
2023-01-18 19:48                 ` Christian König
2023-01-18 19:48                   ` Christian König
2023-01-18 19:48                   ` [Nouveau] " Christian König
2023-01-19  4:04                   ` Danilo Krummrich
2023-01-19  4:04                     ` Danilo Krummrich
2023-01-19  4:04                     ` [Nouveau] " Danilo Krummrich
2023-01-19  5:23                     ` Matthew Brost
2023-01-19  5:23                       ` Matthew Brost
2023-01-19 11:33                       ` drm_gpuva_manager requirements (was Re: [PATCH drm-next 00/14] [RFC] DRM GPUVA Manager & Nouveau VM_BIND UAPI) Christian König
2023-01-19 11:33                         ` Christian König
2023-01-19 11:33                         ` [Nouveau] " Christian König
2023-02-06 14:48                       ` [PATCH drm-next 00/14] [RFC] DRM GPUVA Manager & Nouveau VM_BIND UAPI Oded Gabbay
2023-02-06 14:48                         ` Oded Gabbay
2023-03-16 16:39                         ` Danilo Krummrich
2023-03-16 16:39                           ` Danilo Krummrich
2023-03-16 16:39                           ` [Nouveau] " Danilo Krummrich
  -- strict thread matches above, loose matches on Subject: below --
2023-01-18 16:50 [PATCH drm-next 03/14] drm: manager to keep track of GPUs VA mappings kernel test robot

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=Y8jDsqGc5gXoIBAO@debian.me \
    --to=bagasdotme@gmail.com \
    --cc=airlied@redhat.com \
    --cc=bskeggs@redhat.com \
    --cc=christian.koenig@amd.com \
    --cc=corbet@lwn.net \
    --cc=dakr@redhat.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jason@jlekstrand.net \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mripard@kernel.org \
    --cc=nouveau@lists.freedesktop.org \
    --cc=tzimmermann@suse.de \
    /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.