All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Liam R. Howlett" <Liam.Howlett@Oracle.com>
To: Danilo Krummrich <dakr@redhat.com>
Cc: airlied@gmail.com, daniel@ffwll.ch, tzimmermann@suse.de,
	mripard@kernel.org, corbet@lwn.net, christian.koenig@amd.com,
	bskeggs@redhat.com, matthew.brost@intel.com,
	boris.brezillon@collabora.com, alexdeucher@gmail.com,
	ogabbay@kernel.org, bagasdotme@gmail.com, willy@infradead.org,
	jason@jlekstrand.net, dri-devel@lists.freedesktop.org,
	nouveau@lists.freedesktop.org, linux-doc@vger.kernel.org,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH drm-next v2 03/16] maple_tree: split up MA_STATE() macro
Date: Fri, 17 Feb 2023 13:34:04 -0500	[thread overview]
Message-ID: <20230217183404.jmjew5lrduts6cpo@revolver> (raw)
In-Reply-To: <20230217134422.14116-4-dakr@redhat.com>

* Danilo Krummrich <dakr@redhat.com> [230217 08:44]:
> Split up the MA_STATE() macro such that components using the maple tree
> can easily inherit from struct ma_state and build custom tree walk
> macros to hide their internals from users.
> 
> Example:
> 
> struct sample_iter {
> 	struct ma_state mas;
> 	struct sample_mgr *mgr;
> 	struct sample_entry *entry;
> };
> 
> \#define SAMPLE_ITER(name, __mgr) \
> 	struct sample_iter name = { \
> 		.mas = __MA_STATE(&(__mgr)->mt, 0, 0),
> 		.mgr = __mgr,
> 		.entry = NULL,
> 	}

I see this patch is to allow for anonymous maple states, this looks
good.

I've a lengthy comment about the iterator that I'm adding here to head
off anyone that may copy your example below.

> 
> \#define sample_iter_for_each_range(it__, start__, end__) \
> 	for ((it__).mas.index = start__, (it__).entry = mas_find(&(it__).mas, end__ - 1); \
> 	     (it__).entry; (it__).entry = mas_find(&(it__).mas, end__ - 1))

I see you've added something like the above in your patch set as well.
I'd like to point out that the index isn't the only state information
that needs to be altered here, and in fact, this could go very wrong.

The maple state has a node and an offset within that node.  If you set
the index to lower than the current position of your iterator and call
mas_find() then what happens is somewhat undefined.  I expect you will
get the wrong value (most likely either the current value or the very
next one that the iterator is already pointing to).  I believe you have
been using a fresh maple state for each iterator in your patches, but I
haven't had a deep look into your code yet.

We have methods of resetting the iterator and set the range (mas_set()
and mas_set_range()) which are safe for what you are doing, but they
will start the walk from the root node to the index again.

So, if you know what you are doing is safe, then the way you have
written it will work, but it's worth mentioning that this could occur.

It is also worth pointing out that it would be much safer to use a
function to do the above so you get type safety.. and I was asked to add
this to the VMA interface by Linus [1], which is on its way upstream [2].

1. https://lore.kernel.org/linux-mm/CAHk-=wg9WQXBGkNdKD2bqocnN73rDswuWsavBB7T-tekykEn_A@mail.gmail.com/
2. https://lore.kernel.org/linux-mm/20230120162650.984577-1-Liam.Howlett@oracle.com/

> 
> Signed-off-by: Danilo Krummrich <dakr@redhat.com>
> ---
>  include/linux/maple_tree.h | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/maple_tree.h b/include/linux/maple_tree.h
> index e594db58a0f1..ca04c900e51a 100644
> --- a/include/linux/maple_tree.h
> +++ b/include/linux/maple_tree.h
> @@ -424,8 +424,8 @@ struct ma_wr_state {
>  #define MA_ERROR(err) \
>  		((struct maple_enode *)(((unsigned long)err << 2) | 2UL))
>  
> -#define MA_STATE(name, mt, first, end)					\
> -	struct ma_state name = {					\
> +#define __MA_STATE(mt, first, end)					\
> +	{								\
>  		.tree = mt,						\
>  		.index = first,						\
>  		.last = end,						\
> @@ -435,6 +435,9 @@ struct ma_wr_state {
>  		.alloc = NULL,						\
>  	}
>  
> +#define MA_STATE(name, mt, first, end)					\
> +	struct ma_state name = __MA_STATE(mt, first, end)
> +
>  #define MA_WR_STATE(name, ma_state, wr_entry)				\
>  	struct ma_wr_state name = {					\
>  		.mas = ma_state,					\
> -- 
> 2.39.1
> 

WARNING: multiple messages have this Message-ID (diff)
From: "Liam R. Howlett" <Liam.Howlett@Oracle.com>
To: Danilo Krummrich <dakr@redhat.com>
Cc: matthew.brost@intel.com, willy@infradead.org,
	dri-devel@lists.freedesktop.org, corbet@lwn.net,
	nouveau@lists.freedesktop.org, ogabbay@kernel.org,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, boris.brezillon@collabora.com,
	bskeggs@redhat.com, tzimmermann@suse.de, bagasdotme@gmail.com,
	christian.koenig@amd.com, jason@jlekstrand.net
Subject: Re: [PATCH drm-next v2 03/16] maple_tree: split up MA_STATE() macro
Date: Fri, 17 Feb 2023 13:34:04 -0500	[thread overview]
Message-ID: <20230217183404.jmjew5lrduts6cpo@revolver> (raw)
In-Reply-To: <20230217134422.14116-4-dakr@redhat.com>

* Danilo Krummrich <dakr@redhat.com> [230217 08:44]:
> Split up the MA_STATE() macro such that components using the maple tree
> can easily inherit from struct ma_state and build custom tree walk
> macros to hide their internals from users.
> 
> Example:
> 
> struct sample_iter {
> 	struct ma_state mas;
> 	struct sample_mgr *mgr;
> 	struct sample_entry *entry;
> };
> 
> \#define SAMPLE_ITER(name, __mgr) \
> 	struct sample_iter name = { \
> 		.mas = __MA_STATE(&(__mgr)->mt, 0, 0),
> 		.mgr = __mgr,
> 		.entry = NULL,
> 	}

I see this patch is to allow for anonymous maple states, this looks
good.

I've a lengthy comment about the iterator that I'm adding here to head
off anyone that may copy your example below.

> 
> \#define sample_iter_for_each_range(it__, start__, end__) \
> 	for ((it__).mas.index = start__, (it__).entry = mas_find(&(it__).mas, end__ - 1); \
> 	     (it__).entry; (it__).entry = mas_find(&(it__).mas, end__ - 1))

I see you've added something like the above in your patch set as well.
I'd like to point out that the index isn't the only state information
that needs to be altered here, and in fact, this could go very wrong.

The maple state has a node and an offset within that node.  If you set
the index to lower than the current position of your iterator and call
mas_find() then what happens is somewhat undefined.  I expect you will
get the wrong value (most likely either the current value or the very
next one that the iterator is already pointing to).  I believe you have
been using a fresh maple state for each iterator in your patches, but I
haven't had a deep look into your code yet.

We have methods of resetting the iterator and set the range (mas_set()
and mas_set_range()) which are safe for what you are doing, but they
will start the walk from the root node to the index again.

So, if you know what you are doing is safe, then the way you have
written it will work, but it's worth mentioning that this could occur.

It is also worth pointing out that it would be much safer to use a
function to do the above so you get type safety.. and I was asked to add
this to the VMA interface by Linus [1], which is on its way upstream [2].

1. https://lore.kernel.org/linux-mm/CAHk-=wg9WQXBGkNdKD2bqocnN73rDswuWsavBB7T-tekykEn_A@mail.gmail.com/
2. https://lore.kernel.org/linux-mm/20230120162650.984577-1-Liam.Howlett@oracle.com/

> 
> Signed-off-by: Danilo Krummrich <dakr@redhat.com>
> ---
>  include/linux/maple_tree.h | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/maple_tree.h b/include/linux/maple_tree.h
> index e594db58a0f1..ca04c900e51a 100644
> --- a/include/linux/maple_tree.h
> +++ b/include/linux/maple_tree.h
> @@ -424,8 +424,8 @@ struct ma_wr_state {
>  #define MA_ERROR(err) \
>  		((struct maple_enode *)(((unsigned long)err << 2) | 2UL))
>  
> -#define MA_STATE(name, mt, first, end)					\
> -	struct ma_state name = {					\
> +#define __MA_STATE(mt, first, end)					\
> +	{								\
>  		.tree = mt,						\
>  		.index = first,						\
>  		.last = end,						\
> @@ -435,6 +435,9 @@ struct ma_wr_state {
>  		.alloc = NULL,						\
>  	}
>  
> +#define MA_STATE(name, mt, first, end)					\
> +	struct ma_state name = __MA_STATE(mt, first, end)
> +
>  #define MA_WR_STATE(name, ma_state, wr_entry)				\
>  	struct ma_wr_state name = {					\
>  		.mas = ma_state,					\
> -- 
> 2.39.1
> 

WARNING: multiple messages have this Message-ID (diff)
From: "Liam R. Howlett" <Liam.Howlett@Oracle.com>
To: Danilo Krummrich <dakr@redhat.com>
Cc: matthew.brost@intel.com, willy@infradead.org, daniel@ffwll.ch,
	dri-devel@lists.freedesktop.org, corbet@lwn.net,
	nouveau@lists.freedesktop.org, ogabbay@kernel.org,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	mripard@kernel.org, linux-mm@kvack.org,
	boris.brezillon@collabora.com, bskeggs@redhat.com,
	alexdeucher@gmail.com, bagasdotme@gmail.com,
	christian.koenig@amd.com, jason@jlekstrand.net
Subject: Re: [Nouveau] [PATCH drm-next v2 03/16] maple_tree: split up MA_STATE() macro
Date: Fri, 17 Feb 2023 13:34:04 -0500	[thread overview]
Message-ID: <20230217183404.jmjew5lrduts6cpo@revolver> (raw)
In-Reply-To: <20230217134422.14116-4-dakr@redhat.com>

* Danilo Krummrich <dakr@redhat.com> [230217 08:44]:
> Split up the MA_STATE() macro such that components using the maple tree
> can easily inherit from struct ma_state and build custom tree walk
> macros to hide their internals from users.
> 
> Example:
> 
> struct sample_iter {
> 	struct ma_state mas;
> 	struct sample_mgr *mgr;
> 	struct sample_entry *entry;
> };
> 
> \#define SAMPLE_ITER(name, __mgr) \
> 	struct sample_iter name = { \
> 		.mas = __MA_STATE(&(__mgr)->mt, 0, 0),
> 		.mgr = __mgr,
> 		.entry = NULL,
> 	}

I see this patch is to allow for anonymous maple states, this looks
good.

I've a lengthy comment about the iterator that I'm adding here to head
off anyone that may copy your example below.

> 
> \#define sample_iter_for_each_range(it__, start__, end__) \
> 	for ((it__).mas.index = start__, (it__).entry = mas_find(&(it__).mas, end__ - 1); \
> 	     (it__).entry; (it__).entry = mas_find(&(it__).mas, end__ - 1))

I see you've added something like the above in your patch set as well.
I'd like to point out that the index isn't the only state information
that needs to be altered here, and in fact, this could go very wrong.

The maple state has a node and an offset within that node.  If you set
the index to lower than the current position of your iterator and call
mas_find() then what happens is somewhat undefined.  I expect you will
get the wrong value (most likely either the current value or the very
next one that the iterator is already pointing to).  I believe you have
been using a fresh maple state for each iterator in your patches, but I
haven't had a deep look into your code yet.

We have methods of resetting the iterator and set the range (mas_set()
and mas_set_range()) which are safe for what you are doing, but they
will start the walk from the root node to the index again.

So, if you know what you are doing is safe, then the way you have
written it will work, but it's worth mentioning that this could occur.

It is also worth pointing out that it would be much safer to use a
function to do the above so you get type safety.. and I was asked to add
this to the VMA interface by Linus [1], which is on its way upstream [2].

1. https://lore.kernel.org/linux-mm/CAHk-=wg9WQXBGkNdKD2bqocnN73rDswuWsavBB7T-tekykEn_A@mail.gmail.com/
2. https://lore.kernel.org/linux-mm/20230120162650.984577-1-Liam.Howlett@oracle.com/

> 
> Signed-off-by: Danilo Krummrich <dakr@redhat.com>
> ---
>  include/linux/maple_tree.h | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/maple_tree.h b/include/linux/maple_tree.h
> index e594db58a0f1..ca04c900e51a 100644
> --- a/include/linux/maple_tree.h
> +++ b/include/linux/maple_tree.h
> @@ -424,8 +424,8 @@ struct ma_wr_state {
>  #define MA_ERROR(err) \
>  		((struct maple_enode *)(((unsigned long)err << 2) | 2UL))
>  
> -#define MA_STATE(name, mt, first, end)					\
> -	struct ma_state name = {					\
> +#define __MA_STATE(mt, first, end)					\
> +	{								\
>  		.tree = mt,						\
>  		.index = first,						\
>  		.last = end,						\
> @@ -435,6 +435,9 @@ struct ma_wr_state {
>  		.alloc = NULL,						\
>  	}
>  
> +#define MA_STATE(name, mt, first, end)					\
> +	struct ma_state name = __MA_STATE(mt, first, end)
> +
>  #define MA_WR_STATE(name, ma_state, wr_entry)				\
>  	struct ma_wr_state name = {					\
>  		.mas = ma_state,					\
> -- 
> 2.39.1
> 

  reply	other threads:[~2023-02-17 18:34 UTC|newest]

Thread overview: 188+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-17 13:44 [PATCH drm-next v2 00/16] [RFC] DRM GPUVA Manager & Nouveau VM_BIND UAPI Danilo Krummrich
2023-02-17 13:44 ` Danilo Krummrich
2023-02-17 13:44 ` [Nouveau] " Danilo Krummrich
2023-02-17 13:44 ` [PATCH drm-next v2 01/16] drm: execution context for GEM buffers Danilo Krummrich
2023-02-17 13:44   ` Danilo Krummrich
2023-02-17 13:44   ` [Nouveau] " Danilo Krummrich
2023-02-17 16:00   ` Christian König
2023-02-17 16:00     ` Christian König
2023-02-17 16:00     ` [Nouveau] " Christian König
2023-02-21 14:56     ` Danilo Krummrich
2023-02-21 14:56       ` Danilo Krummrich
2023-02-21 14:56       ` [Nouveau] " Danilo Krummrich
2023-02-17 13:44 ` [PATCH drm-next v2 02/16] drm/exec: fix memory leak in drm_exec_prepare_obj() Danilo Krummrich
2023-02-17 13:44   ` Danilo Krummrich
2023-02-17 13:44   ` [Nouveau] " Danilo Krummrich
2023-02-17 13:44 ` [PATCH drm-next v2 03/16] maple_tree: split up MA_STATE() macro Danilo Krummrich
2023-02-17 13:44   ` Danilo Krummrich
2023-02-17 13:44   ` [Nouveau] " Danilo Krummrich
2023-02-17 18:34   ` Liam R. Howlett [this message]
2023-02-17 18:34     ` Liam R. Howlett
2023-02-17 18:34     ` Liam R. Howlett
2023-02-20 13:48     ` Danilo Krummrich
2023-02-20 13:48       ` [Nouveau] " Danilo Krummrich
2023-02-21 16:52       ` Liam R. Howlett
2023-02-21 16:52         ` [Nouveau] " Liam R. Howlett
2023-02-21 16:52         ` Liam R. Howlett
2023-02-17 19:45   ` Matthew Wilcox
2023-02-17 19:45     ` Matthew Wilcox
2023-02-17 19:45     ` [Nouveau] " Matthew Wilcox
2023-02-20 13:48     ` Danilo Krummrich
2023-02-20 13:48       ` Danilo Krummrich
2023-02-20 13:48       ` [Nouveau] " Danilo Krummrich
2023-02-17 13:44 ` [PATCH drm-next v2 04/16] maple_tree: add flag MT_FLAGS_LOCK_NONE Danilo Krummrich
2023-02-17 13:44   ` Danilo Krummrich
2023-02-17 13:44   ` [Nouveau] " Danilo Krummrich
2023-02-17 18:18   ` Liam R. Howlett
2023-02-17 18:18     ` [Nouveau] " Liam R. Howlett
2023-02-17 18:18     ` Liam R. Howlett
2023-02-17 19:38   ` Matthew Wilcox
2023-02-17 19:38     ` Matthew Wilcox
2023-02-17 19:38     ` [Nouveau] " Matthew Wilcox
2023-02-20 14:00     ` Danilo Krummrich
2023-02-20 14:00       ` Danilo Krummrich
2023-02-20 14:00       ` [Nouveau] " Danilo Krummrich
2023-02-20 15:10       ` Matthew Wilcox
2023-02-20 15:10         ` Matthew Wilcox
2023-02-20 15:10         ` [Nouveau] " Matthew Wilcox
2023-02-20 17:06         ` Danilo Krummrich
2023-02-20 17:06           ` Danilo Krummrich
2023-02-20 17:06           ` [Nouveau] " Danilo Krummrich
2023-02-20 20:33           ` Matthew Wilcox
2023-02-20 20:33             ` Matthew Wilcox
2023-02-20 20:33             ` [Nouveau] " Matthew Wilcox
2023-02-21 14:37             ` Danilo Krummrich
2023-02-21 14:37               ` Danilo Krummrich
2023-02-21 14:37               ` [Nouveau] " Danilo Krummrich
2023-02-21 18:31               ` Matthew Wilcox
2023-02-21 18:31                 ` Matthew Wilcox
2023-02-21 18:31                 ` Matthew Wilcox
2023-02-22 16:11                 ` Danilo Krummrich
2023-02-22 16:11                   ` Danilo Krummrich
2023-02-22 16:11                   ` [Nouveau] " Danilo Krummrich
2023-02-22 16:32                   ` Matthew Wilcox
2023-02-22 16:32                     ` Matthew Wilcox
2023-02-22 16:32                     ` [Nouveau] " Matthew Wilcox
2023-02-22 17:28                     ` Danilo Krummrich
2023-02-22 17:28                       ` Danilo Krummrich
2023-02-22 17:28                       ` [Nouveau] " Danilo Krummrich
2023-02-27 17:39                 ` Danilo Krummrich
2023-02-27 17:39                   ` Danilo Krummrich
2023-02-27 17:39                   ` [Nouveau] " Danilo Krummrich
2023-02-27 18:36                   ` Matthew Wilcox
2023-02-27 18:36                     ` Matthew Wilcox
2023-02-27 18:36                     ` [Nouveau] " Matthew Wilcox
2023-02-27 18:59                     ` Danilo Krummrich
2023-02-27 18:59                       ` Danilo Krummrich
2023-02-27 18:59                       ` [Nouveau] " Danilo Krummrich
2023-02-17 13:44 ` [PATCH drm-next v2 05/16] drm: manager to keep track of GPUs VA mappings Danilo Krummrich
2023-02-17 13:44   ` Danilo Krummrich
2023-02-17 13:44   ` [Nouveau] " Danilo Krummrich
2023-02-18  1:05   ` kernel test robot
2023-02-18  1:05     ` kernel test robot
2023-02-18  1:05     ` [Nouveau] " kernel test robot
2023-02-21 18:20   ` Liam R. Howlett
2023-02-21 18:20     ` [Nouveau] " Liam R. Howlett
2023-02-21 18:20     ` Liam R. Howlett
2023-02-22 18:13     ` Danilo Krummrich
2023-02-22 18:13       ` Danilo Krummrich
2023-02-22 18:13       ` [Nouveau] " Danilo Krummrich
2023-02-23 19:09       ` Liam R. Howlett
2023-02-23 19:09         ` [Nouveau] " Liam R. Howlett
2023-02-23 19:09         ` Liam R. Howlett
2023-02-27 12:23         ` Danilo Krummrich
2023-02-27 12:23           ` Danilo Krummrich
2023-02-27 12:23           ` [Nouveau] " Danilo Krummrich
2023-03-02  2:38           ` Liam R. Howlett
2023-03-02  2:38             ` [Nouveau] " Liam R. Howlett
2023-03-02  2:38             ` Liam R. Howlett
2023-03-06 15:46             ` Danilo Krummrich
2023-03-06 15:46               ` [Nouveau] " Danilo Krummrich
2023-03-07 22:43               ` Liam R. Howlett
2023-03-07 22:43                 ` [Nouveau] " Liam R. Howlett
2023-03-07 22:43                 ` Liam R. Howlett
2023-03-13 23:46                 ` Danilo Krummrich
2023-03-13 23:46                   ` Danilo Krummrich
2023-03-13 23:46                   ` [Nouveau] " Danilo Krummrich
2023-03-20 19:16                   ` Liam R. Howlett
2023-03-20 19:16                     ` [Nouveau] " Liam R. Howlett
2023-03-20 19:16                     ` Liam R. Howlett
2023-02-28  2:17     ` Danilo Krummrich
2023-02-28  2:17       ` [Nouveau] " Danilo Krummrich
2023-02-28 16:24       ` Liam R. Howlett
2023-02-28 16:24         ` [Nouveau] " Liam R. Howlett
2023-02-28 16:24         ` Liam R. Howlett
2023-03-06 13:39         ` Danilo Krummrich
2023-03-06 13:39           ` [Nouveau] " Danilo Krummrich
2023-02-22 10:25   ` Christian König
2023-02-22 10:25     ` Christian König
2023-02-22 10:25     ` [Nouveau] " Christian König
2023-02-22 15:07     ` Danilo Krummrich
2023-02-22 15:07       ` Danilo Krummrich
2023-02-22 15:07       ` Danilo Krummrich
2023-02-22 15:14       ` Christian König
2023-02-22 15:14         ` Christian König
2023-02-22 15:14         ` [Nouveau] " Christian König
2023-02-22 16:40         ` Danilo Krummrich
2023-02-22 16:40           ` Danilo Krummrich
2023-02-22 16:40           ` [Nouveau] " Danilo Krummrich
2023-02-23  7:06           ` Christian König
2023-02-23  7:06             ` Christian König
2023-02-23  7:06             ` [Nouveau] " Christian König
2023-02-23 14:12             ` Danilo Krummrich
2023-02-23 14:12               ` Danilo Krummrich
2023-02-23 14:12               ` [Nouveau] " Danilo Krummrich
2023-02-17 13:48 ` [PATCH drm-next v2 06/16] drm: debugfs: provide infrastructure to dump a DRM GPU VA space Danilo Krummrich
2023-02-17 13:48   ` Danilo Krummrich
2023-02-17 13:48   ` [Nouveau] " Danilo Krummrich
2023-02-18  2:47   ` kernel test robot
2023-02-18  2:47     ` kernel test robot
2023-02-18  2:47     ` [Nouveau] " kernel test robot
2023-02-17 13:48 ` [PATCH drm-next v2 07/16] drm/nouveau: new VM_BIND uapi interfaces Danilo Krummrich
2023-02-17 13:48   ` Danilo Krummrich
2023-02-17 13:48   ` [Nouveau] " Danilo Krummrich
2023-02-17 13:48 ` [PATCH drm-next v2 08/16] drm/nouveau: get vmm via nouveau_cli_vmm() Danilo Krummrich
2023-02-17 13:48   ` Danilo Krummrich
2023-02-17 13:48   ` [Nouveau] " Danilo Krummrich
2023-02-17 13:48 ` [PATCH drm-next v2 09/16] drm/nouveau: bo: initialize GEM GPU VA interface Danilo Krummrich
2023-02-17 13:48   ` Danilo Krummrich
2023-02-17 13:48   ` [Nouveau] " Danilo Krummrich
2023-02-17 13:48 ` [PATCH drm-next v2 10/16] drm/nouveau: move usercopy helpers to nouveau_drv.h Danilo Krummrich
2023-02-17 13:48   ` Danilo Krummrich
2023-02-17 13:48   ` [Nouveau] " Danilo Krummrich
2023-02-17 13:48 ` [PATCH drm-next v2 11/16] drm/nouveau: fence: fail to emit when fence context is killed Danilo Krummrich
2023-02-17 13:48   ` Danilo Krummrich
2023-02-17 13:48   ` [Nouveau] " Danilo Krummrich
2023-02-17 13:48 ` [PATCH drm-next v2 12/16] drm/nouveau: chan: provide nouveau_channel_kill() Danilo Krummrich
2023-02-17 13:48   ` Danilo Krummrich
2023-02-17 13:48   ` [Nouveau] " Danilo Krummrich
2023-02-17 13:48 ` [PATCH drm-next v2 13/16] drm/nouveau: nvkm/vmm: implement raw ops to manage uvmm Danilo Krummrich
2023-02-17 13:48   ` Danilo Krummrich
2023-02-17 13:48   ` [Nouveau] " Danilo Krummrich
2023-02-18  1:16   ` kernel test robot
2023-02-18  1:16     ` kernel test robot
2023-02-18  1:16     ` [Nouveau] " kernel test robot
2023-02-17 13:48 ` [PATCH drm-next v2 14/16] drm/nouveau: implement uvmm for user mode bindings Danilo Krummrich
2023-02-17 13:48   ` Danilo Krummrich
2023-02-17 13:48   ` [Nouveau] " Danilo Krummrich
2023-02-17 13:48 ` [PATCH drm-next v2 15/16] drm/nouveau: implement new VM_BIND UAPI Danilo Krummrich
2023-02-17 13:48   ` [Nouveau] " Danilo Krummrich
2023-02-17 13:48   ` Danilo Krummrich
2023-02-17 13:48 ` [PATCH drm-next v2 16/16] drm/nouveau: debugfs: implement DRM GPU VA debugfs Danilo Krummrich
2023-02-17 13:48   ` Danilo Krummrich
2023-02-17 13:48   ` [Nouveau] " Danilo Krummrich
2023-03-09  9:12 ` [PATCH drm-next v2 00/16] [RFC] DRM GPUVA Manager & Nouveau VM_BIND UAPI Boris Brezillon
2023-03-09  9:12   ` [Nouveau] " Boris Brezillon
2023-03-09  9:12   ` Boris Brezillon
2023-03-09  9:48   ` Boris Brezillon
2023-03-09  9:48     ` [Nouveau] " Boris Brezillon
2023-03-09  9:48     ` Boris Brezillon
2023-03-10 16:45     ` Danilo Krummrich
2023-03-10 16:45       ` Danilo Krummrich
2023-03-10 16:45       ` [Nouveau] " Danilo Krummrich
2023-03-10 17:25       ` Boris Brezillon
2023-03-10 17:25         ` [Nouveau] " Boris Brezillon
2023-03-10 17:25         ` Boris Brezillon
2023-03-10 20:06         ` Danilo Krummrich
2023-03-10 20:06           ` Danilo Krummrich
2023-03-10 20:06           ` [Nouveau] " Danilo Krummrich

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=20230217183404.jmjew5lrduts6cpo@revolver \
    --to=liam.howlett@oracle.com \
    --cc=airlied@gmail.com \
    --cc=alexdeucher@gmail.com \
    --cc=bagasdotme@gmail.com \
    --cc=boris.brezillon@collabora.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=linux-mm@kvack.org \
    --cc=matthew.brost@intel.com \
    --cc=mripard@kernel.org \
    --cc=nouveau@lists.freedesktop.org \
    --cc=ogabbay@kernel.org \
    --cc=tzimmermann@suse.de \
    --cc=willy@infradead.org \
    /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.