All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/amdgpu/vcn: add shared menory restore after wake up from sleep.
@ 2020-04-03 12:52 James Zhu
  2020-04-03 13:03 ` Xu, Feifei
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: James Zhu @ 2020-04-03 12:52 UTC (permalink / raw)
  To: amd-gfx; +Cc: Pauline.Li, jamesz

VCN shared memory needs restore after wake up during S3 test.

Signed-off-by: James Zhu <James.Zhu@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 26 ++++++++++++++++++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h |  1 +
 2 files changed, 27 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
index d653a18..5891390 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
@@ -205,6 +205,7 @@ int amdgpu_vcn_sw_fini(struct amdgpu_device *adev)
 		if (adev->vcn.harvest_config & (1 << j))
 			continue;
 
+		kvfree(adev->vcn.inst[j].saved_shm_bo);
 		amdgpu_bo_free_kernel(&adev->vcn.inst[j].fw_shared_bo,
 					  &adev->vcn.inst[j].fw_shared_gpu_addr,
 					  (void **)&adev->vcn.inst[j].fw_shared_cpu_addr);
@@ -254,6 +255,18 @@ int amdgpu_vcn_suspend(struct amdgpu_device *adev)
 			return -ENOMEM;
 
 		memcpy_fromio(adev->vcn.inst[i].saved_bo, ptr, size);
+
+		if (adev->vcn.inst[i].fw_shared_bo == NULL)
+			return 0;
+
+		size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
+		ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
+
+		adev->vcn.inst[i].saved_shm_bo = kvmalloc(size, GFP_KERNEL);
+		if (!adev->vcn.inst[i].saved_shm_bo)
+			return -ENOMEM;
+
+		memcpy_fromio(adev->vcn.inst[i].saved_shm_bo, ptr, size);
 	}
 	return 0;
 }
@@ -291,6 +304,19 @@ int amdgpu_vcn_resume(struct amdgpu_device *adev)
 			}
 			memset_io(ptr, 0, size);
 		}
+
+		if (adev->vcn.inst[i].fw_shared_bo == NULL)
+			return -EINVAL;
+
+		size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
+		ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
+
+		if (adev->vcn.inst[i].saved_shm_bo != NULL) {
+			memcpy_toio(ptr, adev->vcn.inst[i].saved_shm_bo, size);
+			kvfree(adev->vcn.inst[i].saved_shm_bo);
+			adev->vcn.inst[i].saved_shm_bo = NULL;
+		} else
+			memset_io(ptr, 0, size);
 	}
 	return 0;
 }
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
index f739e1a..bd77dae 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
@@ -194,6 +194,7 @@ struct amdgpu_vcn_inst {
 	atomic_t		dpg_enc_submission_cnt;
 	void			*fw_shared_cpu_addr;
 	uint64_t		fw_shared_gpu_addr;
+	void			*saved_shm_bo;
 };
 
 struct amdgpu_vcn {
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* RE: [PATCH] drm/amdgpu/vcn: add shared menory restore after wake up from sleep.
  2020-04-03 12:52 [PATCH] drm/amdgpu/vcn: add shared menory restore after wake up from sleep James Zhu
@ 2020-04-03 13:03 ` Xu, Feifei
  2020-04-03 15:37 ` Alex Deucher
  2020-04-03 18:45 ` [PATCH v2] " James Zhu
  2 siblings, 0 replies; 8+ messages in thread
From: Xu, Feifei @ 2020-04-03 13:03 UTC (permalink / raw)
  To: Zhu, James, amd-gfx; +Cc: Li, Pauline, Zhu, James

[AMD Official Use Only - Internal Distribution Only]



Reviewed-by: Feifei Xu <Feifei.Xu@amd.com>

-----Original Message-----
From: amd-gfx <amd-gfx-bounces@lists.freedesktop.org> On Behalf Of James Zhu
Sent: 2020年4月3日 20:52
To: amd-gfx@lists.freedesktop.org
Cc: Li, Pauline <Pauline.Li@amd.com>; Zhu, James <James.Zhu@amd.com>
Subject: [PATCH] drm/amdgpu/vcn: add shared menory restore after wake up from sleep.

VCN shared memory needs restore after wake up during S3 test.

Signed-off-by: James Zhu <James.Zhu@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 26 ++++++++++++++++++++++++++  drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h |  1 +
 2 files changed, 27 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
index d653a18..5891390 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
@@ -205,6 +205,7 @@ int amdgpu_vcn_sw_fini(struct amdgpu_device *adev)
 		if (adev->vcn.harvest_config & (1 << j))
 			continue;
 
+		kvfree(adev->vcn.inst[j].saved_shm_bo);
 		amdgpu_bo_free_kernel(&adev->vcn.inst[j].fw_shared_bo,
 					  &adev->vcn.inst[j].fw_shared_gpu_addr,
 					  (void **)&adev->vcn.inst[j].fw_shared_cpu_addr);
@@ -254,6 +255,18 @@ int amdgpu_vcn_suspend(struct amdgpu_device *adev)
 			return -ENOMEM;
 
 		memcpy_fromio(adev->vcn.inst[i].saved_bo, ptr, size);
+
+		if (adev->vcn.inst[i].fw_shared_bo == NULL)
+			return 0;
+
+		size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
+		ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
+
+		adev->vcn.inst[i].saved_shm_bo = kvmalloc(size, GFP_KERNEL);
+		if (!adev->vcn.inst[i].saved_shm_bo)
+			return -ENOMEM;
+
+		memcpy_fromio(adev->vcn.inst[i].saved_shm_bo, ptr, size);
 	}
 	return 0;
 }
@@ -291,6 +304,19 @@ int amdgpu_vcn_resume(struct amdgpu_device *adev)
 			}
 			memset_io(ptr, 0, size);
 		}
+
+		if (adev->vcn.inst[i].fw_shared_bo == NULL)
+			return -EINVAL;
+
+		size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
+		ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
+
+		if (adev->vcn.inst[i].saved_shm_bo != NULL) {
+			memcpy_toio(ptr, adev->vcn.inst[i].saved_shm_bo, size);
+			kvfree(adev->vcn.inst[i].saved_shm_bo);
+			adev->vcn.inst[i].saved_shm_bo = NULL;
+		} else
+			memset_io(ptr, 0, size);
 	}
 	return 0;
 }
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
index f739e1a..bd77dae 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
@@ -194,6 +194,7 @@ struct amdgpu_vcn_inst {
 	atomic_t		dpg_enc_submission_cnt;
 	void			*fw_shared_cpu_addr;
 	uint64_t		fw_shared_gpu_addr;
+	void			*saved_shm_bo;
 };
 
 struct amdgpu_vcn {
--
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&amp;data=02%7C01%7CFeifei.Xu%40amd.com%7C6de5512ca8574257613108d7d7cdd780%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637215152681686620&amp;sdata=X07gFq7Cf1swi%2FVtOl0ldpaOsbtC3gO5BPUlYwxrano%3D&amp;reserved=0
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH] drm/amdgpu/vcn: add shared menory restore after wake up from sleep.
  2020-04-03 12:52 [PATCH] drm/amdgpu/vcn: add shared menory restore after wake up from sleep James Zhu
  2020-04-03 13:03 ` Xu, Feifei
@ 2020-04-03 15:37 ` Alex Deucher
  2020-04-03 15:54   ` James Zhu
  2020-04-03 18:45 ` [PATCH v2] " James Zhu
  2 siblings, 1 reply; 8+ messages in thread
From: Alex Deucher @ 2020-04-03 15:37 UTC (permalink / raw)
  To: James Zhu; +Cc: Li, Pauline, James Zhu, amd-gfx list

On Fri, Apr 3, 2020 at 8:52 AM James Zhu <James.Zhu@amd.com> wrote:
>
> VCN shared memory needs restore after wake up during S3 test.

How big is the shared memory?  It might be better to allocate the
memory once at sw_init and then free it in sw_fini rather than
allocating and freeing in every suspend/resume.

Alex

>
> Signed-off-by: James Zhu <James.Zhu@amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 26 ++++++++++++++++++++++++++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h |  1 +
>  2 files changed, 27 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
> index d653a18..5891390 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
> @@ -205,6 +205,7 @@ int amdgpu_vcn_sw_fini(struct amdgpu_device *adev)
>                 if (adev->vcn.harvest_config & (1 << j))
>                         continue;
>
> +               kvfree(adev->vcn.inst[j].saved_shm_bo);
>                 amdgpu_bo_free_kernel(&adev->vcn.inst[j].fw_shared_bo,
>                                           &adev->vcn.inst[j].fw_shared_gpu_addr,
>                                           (void **)&adev->vcn.inst[j].fw_shared_cpu_addr);
> @@ -254,6 +255,18 @@ int amdgpu_vcn_suspend(struct amdgpu_device *adev)
>                         return -ENOMEM;
>
>                 memcpy_fromio(adev->vcn.inst[i].saved_bo, ptr, size);
> +
> +               if (adev->vcn.inst[i].fw_shared_bo == NULL)
> +                       return 0;
> +
> +               size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
> +               ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
> +
> +               adev->vcn.inst[i].saved_shm_bo = kvmalloc(size, GFP_KERNEL);
> +               if (!adev->vcn.inst[i].saved_shm_bo)
> +                       return -ENOMEM;
> +
> +               memcpy_fromio(adev->vcn.inst[i].saved_shm_bo, ptr, size);
>         }
>         return 0;
>  }
> @@ -291,6 +304,19 @@ int amdgpu_vcn_resume(struct amdgpu_device *adev)
>                         }
>                         memset_io(ptr, 0, size);
>                 }
> +
> +               if (adev->vcn.inst[i].fw_shared_bo == NULL)
> +                       return -EINVAL;
> +
> +               size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
> +               ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
> +
> +               if (adev->vcn.inst[i].saved_shm_bo != NULL) {
> +                       memcpy_toio(ptr, adev->vcn.inst[i].saved_shm_bo, size);
> +                       kvfree(adev->vcn.inst[i].saved_shm_bo);
> +                       adev->vcn.inst[i].saved_shm_bo = NULL;
> +               } else
> +                       memset_io(ptr, 0, size);
>         }
>         return 0;
>  }
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
> index f739e1a..bd77dae 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
> @@ -194,6 +194,7 @@ struct amdgpu_vcn_inst {
>         atomic_t                dpg_enc_submission_cnt;
>         void                    *fw_shared_cpu_addr;
>         uint64_t                fw_shared_gpu_addr;
> +       void                    *saved_shm_bo;
>  };
>
>  struct amdgpu_vcn {
> --
> 2.7.4
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH] drm/amdgpu/vcn: add shared menory restore after wake up from sleep.
  2020-04-03 15:37 ` Alex Deucher
@ 2020-04-03 15:54   ` James Zhu
  2020-04-06  7:03     ` Christian König
  0 siblings, 1 reply; 8+ messages in thread
From: James Zhu @ 2020-04-03 15:54 UTC (permalink / raw)
  To: Alex Deucher, James Zhu; +Cc: Li, Pauline, amd-gfx list


On 2020-04-03 11:37 a.m., Alex Deucher wrote:
> On Fri, Apr 3, 2020 at 8:52 AM James Zhu <James.Zhu@amd.com> wrote:
>> VCN shared memory needs restore after wake up during S3 test.
> How big is the shared memory?  It might be better to allocate the
> memory once at sw_init and then free it in sw_fini rather than
> allocating and freeing in every suspend/resume.

Hi Alex,

After alignment, it is only 4k. I can change it as you suggest.

Best Regards!

James

>
> Alex
>
>> Signed-off-by: James Zhu <James.Zhu@amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 26 ++++++++++++++++++++++++++
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h |  1 +
>>   2 files changed, 27 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>> index d653a18..5891390 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>> @@ -205,6 +205,7 @@ int amdgpu_vcn_sw_fini(struct amdgpu_device *adev)
>>                  if (adev->vcn.harvest_config & (1 << j))
>>                          continue;
>>
>> +               kvfree(adev->vcn.inst[j].saved_shm_bo);
>>                  amdgpu_bo_free_kernel(&adev->vcn.inst[j].fw_shared_bo,
>>                                            &adev->vcn.inst[j].fw_shared_gpu_addr,
>>                                            (void **)&adev->vcn.inst[j].fw_shared_cpu_addr);
>> @@ -254,6 +255,18 @@ int amdgpu_vcn_suspend(struct amdgpu_device *adev)
>>                          return -ENOMEM;
>>
>>                  memcpy_fromio(adev->vcn.inst[i].saved_bo, ptr, size);
>> +
>> +               if (adev->vcn.inst[i].fw_shared_bo == NULL)
>> +                       return 0;
>> +
>> +               size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
>> +               ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
>> +
>> +               adev->vcn.inst[i].saved_shm_bo = kvmalloc(size, GFP_KERNEL);
>> +               if (!adev->vcn.inst[i].saved_shm_bo)
>> +                       return -ENOMEM;
>> +
>> +               memcpy_fromio(adev->vcn.inst[i].saved_shm_bo, ptr, size);
>>          }
>>          return 0;
>>   }
>> @@ -291,6 +304,19 @@ int amdgpu_vcn_resume(struct amdgpu_device *adev)
>>                          }
>>                          memset_io(ptr, 0, size);
>>                  }
>> +
>> +               if (adev->vcn.inst[i].fw_shared_bo == NULL)
>> +                       return -EINVAL;
>> +
>> +               size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
>> +               ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
>> +
>> +               if (adev->vcn.inst[i].saved_shm_bo != NULL) {
>> +                       memcpy_toio(ptr, adev->vcn.inst[i].saved_shm_bo, size);
>> +                       kvfree(adev->vcn.inst[i].saved_shm_bo);
>> +                       adev->vcn.inst[i].saved_shm_bo = NULL;
>> +               } else
>> +                       memset_io(ptr, 0, size);
>>          }
>>          return 0;
>>   }
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
>> index f739e1a..bd77dae 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
>> @@ -194,6 +194,7 @@ struct amdgpu_vcn_inst {
>>          atomic_t                dpg_enc_submission_cnt;
>>          void                    *fw_shared_cpu_addr;
>>          uint64_t                fw_shared_gpu_addr;
>> +       void                    *saved_shm_bo;
>>   };
>>
>>   struct amdgpu_vcn {
>> --
>> 2.7.4
>>
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx@lists.freedesktop.org
>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&amp;data=02%7C01%7CJames.Zhu%40amd.com%7C46c4773164334ec712b708d7d7e4ebd6%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637215250518903143&amp;sdata=Mj%2FgeXKkiNVFUUsyKAesC5eaanDg%2FvQQpQe1rhT9uek%3D&amp;reserved=0
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* [PATCH v2] drm/amdgpu/vcn: add shared menory restore after wake up from sleep.
  2020-04-03 12:52 [PATCH] drm/amdgpu/vcn: add shared menory restore after wake up from sleep James Zhu
  2020-04-03 13:03 ` Xu, Feifei
  2020-04-03 15:37 ` Alex Deucher
@ 2020-04-03 18:45 ` James Zhu
  2 siblings, 0 replies; 8+ messages in thread
From: James Zhu @ 2020-04-03 18:45 UTC (permalink / raw)
  To: amd-gfx; +Cc: Pauline.Li, jamesz

VCN shared memory needs restore after wake up during S3 test.

v2: Allocate shared memory saved_bo at sw_init and free it in sw_fini.

Signed-off-by: James Zhu <James.Zhu@amd.com>
Reviewed-by: Feifei Xu <Feifei.Xu@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 28 +++++++++++++++++++++++++++-
 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h |  1 +
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
index d653a18..dab34f6 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
@@ -56,7 +56,7 @@ static void amdgpu_vcn_idle_work_handler(struct work_struct *work);
 
 int amdgpu_vcn_sw_init(struct amdgpu_device *adev)
 {
-	unsigned long bo_size;
+	unsigned long bo_size, fw_shared_bo_size;
 	const char *fw_name;
 	const struct common_firmware_header *hdr;
 	unsigned char fw_check;
@@ -190,6 +190,9 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev)
 			dev_err(adev->dev, "VCN %d (%d) failed to allocate firmware shared bo\n", i, r);
 			return r;
 		}
+
+		fw_shared_bo_size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
+		adev->vcn.inst[i].saved_shm_bo = kvmalloc(fw_shared_bo_size, GFP_KERNEL);
 	}
 
 	return 0;
@@ -205,6 +208,7 @@ int amdgpu_vcn_sw_fini(struct amdgpu_device *adev)
 		if (adev->vcn.harvest_config & (1 << j))
 			continue;
 
+		kvfree(adev->vcn.inst[j].saved_shm_bo);
 		amdgpu_bo_free_kernel(&adev->vcn.inst[j].fw_shared_bo,
 					  &adev->vcn.inst[j].fw_shared_gpu_addr,
 					  (void **)&adev->vcn.inst[j].fw_shared_cpu_addr);
@@ -254,6 +258,17 @@ int amdgpu_vcn_suspend(struct amdgpu_device *adev)
 			return -ENOMEM;
 
 		memcpy_fromio(adev->vcn.inst[i].saved_bo, ptr, size);
+
+		if (adev->vcn.inst[i].fw_shared_bo == NULL)
+			return 0;
+
+		if (!adev->vcn.inst[i].saved_shm_bo)
+			return -ENOMEM;
+
+		size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
+		ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
+
+		memcpy_fromio(adev->vcn.inst[i].saved_shm_bo, ptr, size);
 	}
 	return 0;
 }
@@ -291,6 +306,17 @@ int amdgpu_vcn_resume(struct amdgpu_device *adev)
 			}
 			memset_io(ptr, 0, size);
 		}
+
+		if (adev->vcn.inst[i].fw_shared_bo == NULL)
+			return -EINVAL;
+
+		size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
+		ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
+
+		if (adev->vcn.inst[i].saved_shm_bo != NULL)
+			memcpy_toio(ptr, adev->vcn.inst[i].saved_shm_bo, size);
+		else
+			memset_io(ptr, 0, size);
 	}
 	return 0;
 }
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
index f739e1a..bd77dae 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
@@ -194,6 +194,7 @@ struct amdgpu_vcn_inst {
 	atomic_t		dpg_enc_submission_cnt;
 	void			*fw_shared_cpu_addr;
 	uint64_t		fw_shared_gpu_addr;
+	void			*saved_shm_bo;
 };
 
 struct amdgpu_vcn {
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH] drm/amdgpu/vcn: add shared menory restore after wake up from sleep.
  2020-04-03 15:54   ` James Zhu
@ 2020-04-06  7:03     ` Christian König
  2020-04-06 12:31       ` James Zhu
  0 siblings, 1 reply; 8+ messages in thread
From: Christian König @ 2020-04-06  7:03 UTC (permalink / raw)
  To: James Zhu, Alex Deucher, James Zhu; +Cc: Li, Pauline, amd-gfx list

Am 03.04.20 um 17:54 schrieb James Zhu:
>
> On 2020-04-03 11:37 a.m., Alex Deucher wrote:
>> On Fri, Apr 3, 2020 at 8:52 AM James Zhu <James.Zhu@amd.com> wrote:
>>> VCN shared memory needs restore after wake up during S3 test.
>> How big is the shared memory?  It might be better to allocate the
>> memory once at sw_init and then free it in sw_fini rather than
>> allocating and freeing in every suspend/resume.
>
> Hi Alex,
>
> After alignment, it is only 4k. I can change it as you suggest.

Does this needs to stay at the same place after a suspend/resume?

See we only backup the firmware manually because we otherwise can't 
guarantee that it will be moved back to the same place after resume.

If that isn't an issue for the shared bo we could just unpin it on 
suspend and pin it again on resume.

BTW: What is that used for and why can't it be part of the VCN firmware BO?

Thanks,
Christian.

>
> Best Regards!
>
> James
>
>>
>> Alex
>>
>>> Signed-off-by: James Zhu <James.Zhu@amd.com>
>>> ---
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 26 
>>> ++++++++++++++++++++++++++
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h |  1 +
>>>   2 files changed, 27 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c 
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>>> index d653a18..5891390 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>>> @@ -205,6 +205,7 @@ int amdgpu_vcn_sw_fini(struct amdgpu_device *adev)
>>>                  if (adev->vcn.harvest_config & (1 << j))
>>>                          continue;
>>>
>>> +               kvfree(adev->vcn.inst[j].saved_shm_bo);
>>> amdgpu_bo_free_kernel(&adev->vcn.inst[j].fw_shared_bo,
>>> &adev->vcn.inst[j].fw_shared_gpu_addr,
>>>                                            (void 
>>> **)&adev->vcn.inst[j].fw_shared_cpu_addr);
>>> @@ -254,6 +255,18 @@ int amdgpu_vcn_suspend(struct amdgpu_device *adev)
>>>                          return -ENOMEM;
>>>
>>>                  memcpy_fromio(adev->vcn.inst[i].saved_bo, ptr, size);
>>> +
>>> +               if (adev->vcn.inst[i].fw_shared_bo == NULL)
>>> +                       return 0;
>>> +
>>> +               size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
>>> +               ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
>>> +
>>> +               adev->vcn.inst[i].saved_shm_bo = kvmalloc(size, 
>>> GFP_KERNEL);
>>> +               if (!adev->vcn.inst[i].saved_shm_bo)
>>> +                       return -ENOMEM;
>>> +
>>> + memcpy_fromio(adev->vcn.inst[i].saved_shm_bo, ptr, size);
>>>          }
>>>          return 0;
>>>   }
>>> @@ -291,6 +304,19 @@ int amdgpu_vcn_resume(struct amdgpu_device *adev)
>>>                          }
>>>                          memset_io(ptr, 0, size);
>>>                  }
>>> +
>>> +               if (adev->vcn.inst[i].fw_shared_bo == NULL)
>>> +                       return -EINVAL;
>>> +
>>> +               size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
>>> +               ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
>>> +
>>> +               if (adev->vcn.inst[i].saved_shm_bo != NULL) {
>>> +                       memcpy_toio(ptr, 
>>> adev->vcn.inst[i].saved_shm_bo, size);
>>> + kvfree(adev->vcn.inst[i].saved_shm_bo);
>>> +                       adev->vcn.inst[i].saved_shm_bo = NULL;
>>> +               } else
>>> +                       memset_io(ptr, 0, size);
>>>          }
>>>          return 0;
>>>   }
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h 
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
>>> index f739e1a..bd77dae 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
>>> @@ -194,6 +194,7 @@ struct amdgpu_vcn_inst {
>>>          atomic_t                dpg_enc_submission_cnt;
>>>          void                    *fw_shared_cpu_addr;
>>>          uint64_t                fw_shared_gpu_addr;
>>> +       void                    *saved_shm_bo;
>>>   };
>>>
>>>   struct amdgpu_vcn {
>>> -- 
>>> 2.7.4
>>>
>>> _______________________________________________
>>> amd-gfx mailing list
>>> amd-gfx@lists.freedesktop.org
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&amp;data=02%7C01%7CJames.Zhu%40amd.com%7C46c4773164334ec712b708d7d7e4ebd6%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637215250518903143&amp;sdata=Mj%2FgeXKkiNVFUUsyKAesC5eaanDg%2FvQQpQe1rhT9uek%3D&amp;reserved=0 
>>>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH] drm/amdgpu/vcn: add shared menory restore after wake up from sleep.
  2020-04-06  7:03     ` Christian König
@ 2020-04-06 12:31       ` James Zhu
  2020-04-06 12:40         ` Christian König
  0 siblings, 1 reply; 8+ messages in thread
From: James Zhu @ 2020-04-06 12:31 UTC (permalink / raw)
  To: christian.koenig, Alex Deucher, James Zhu; +Cc: Li, Pauline, amd-gfx list


On 2020-04-06 3:03 a.m., Christian König wrote:
> Am 03.04.20 um 17:54 schrieb James Zhu:
>>
>> On 2020-04-03 11:37 a.m., Alex Deucher wrote:
>>> On Fri, Apr 3, 2020 at 8:52 AM James Zhu <James.Zhu@amd.com> wrote:
>>>> VCN shared memory needs restore after wake up during S3 test.
>>> How big is the shared memory?  It might be better to allocate the
>>> memory once at sw_init and then free it in sw_fini rather than
>>> allocating and freeing in every suspend/resume.
>>
>> Hi Alex,
>>
>> After alignment, it is only 4k. I can change it as you suggest.
>
> Does this needs to stay at the same place after a suspend/resume?
>
> See we only backup the firmware manually because we otherwise can't 
> guarantee that it will be moved back to the same place after resume.
Yes, this is the case.. FW request the same for their resume processing.
> If that isn't an issue for the shared bo we could just unpin it on 
> suspend and pin it again on resume.
>
> BTW: What is that used for and why can't it be part of the VCN 
> firmware BO?

Logically it is used for FW and driver sharing some settings 
conveniently. If you suggest it can be added into VCN BO, then it will 
simply the implementation.

Thanks and Best Regards!

James Zhu

>
> Thanks,
> Christian.
>
>>
>> Best Regards!
>>
>> James
>>
>>>
>>> Alex
>>>
>>>> Signed-off-by: James Zhu <James.Zhu@amd.com>
>>>> ---
>>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 26 
>>>> ++++++++++++++++++++++++++
>>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h |  1 +
>>>>   2 files changed, 27 insertions(+)
>>>>
>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c 
>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>>>> index d653a18..5891390 100644
>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>>>> @@ -205,6 +205,7 @@ int amdgpu_vcn_sw_fini(struct amdgpu_device *adev)
>>>>                  if (adev->vcn.harvest_config & (1 << j))
>>>>                          continue;
>>>>
>>>> +               kvfree(adev->vcn.inst[j].saved_shm_bo);
>>>> amdgpu_bo_free_kernel(&adev->vcn.inst[j].fw_shared_bo,
>>>> &adev->vcn.inst[j].fw_shared_gpu_addr,
>>>>                                            (void 
>>>> **)&adev->vcn.inst[j].fw_shared_cpu_addr);
>>>> @@ -254,6 +255,18 @@ int amdgpu_vcn_suspend(struct amdgpu_device 
>>>> *adev)
>>>>                          return -ENOMEM;
>>>>
>>>> memcpy_fromio(adev->vcn.inst[i].saved_bo, ptr, size);
>>>> +
>>>> +               if (adev->vcn.inst[i].fw_shared_bo == NULL)
>>>> +                       return 0;
>>>> +
>>>> +               size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
>>>> +               ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
>>>> +
>>>> +               adev->vcn.inst[i].saved_shm_bo = kvmalloc(size, 
>>>> GFP_KERNEL);
>>>> +               if (!adev->vcn.inst[i].saved_shm_bo)
>>>> +                       return -ENOMEM;
>>>> +
>>>> + memcpy_fromio(adev->vcn.inst[i].saved_shm_bo, ptr, size);
>>>>          }
>>>>          return 0;
>>>>   }
>>>> @@ -291,6 +304,19 @@ int amdgpu_vcn_resume(struct amdgpu_device *adev)
>>>>                          }
>>>>                          memset_io(ptr, 0, size);
>>>>                  }
>>>> +
>>>> +               if (adev->vcn.inst[i].fw_shared_bo == NULL)
>>>> +                       return -EINVAL;
>>>> +
>>>> +               size = amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
>>>> +               ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
>>>> +
>>>> +               if (adev->vcn.inst[i].saved_shm_bo != NULL) {
>>>> +                       memcpy_toio(ptr, 
>>>> adev->vcn.inst[i].saved_shm_bo, size);
>>>> + kvfree(adev->vcn.inst[i].saved_shm_bo);
>>>> +                       adev->vcn.inst[i].saved_shm_bo = NULL;
>>>> +               } else
>>>> +                       memset_io(ptr, 0, size);
>>>>          }
>>>>          return 0;
>>>>   }
>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h 
>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
>>>> index f739e1a..bd77dae 100644
>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
>>>> @@ -194,6 +194,7 @@ struct amdgpu_vcn_inst {
>>>>          atomic_t                dpg_enc_submission_cnt;
>>>>          void                    *fw_shared_cpu_addr;
>>>>          uint64_t                fw_shared_gpu_addr;
>>>> +       void                    *saved_shm_bo;
>>>>   };
>>>>
>>>>   struct amdgpu_vcn {
>>>> -- 
>>>> 2.7.4
>>>>
>>>> _______________________________________________
>>>> amd-gfx mailing list
>>>> amd-gfx@lists.freedesktop.org
>>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&amp;data=02%7C01%7CJames.Zhu%40amd.com%7Ccf00d8be2e994e71381808d7d9f8a0d7%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637217534184643911&amp;sdata=pjIqtWZKO5768HmBOjH1fhjZMPScuyBUg%2FprxH2QWc4%3D&amp;reserved=0 
>>>>
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx@lists.freedesktop.org
>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&amp;data=02%7C01%7CJames.Zhu%40amd.com%7Ccf00d8be2e994e71381808d7d9f8a0d7%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637217534184643911&amp;sdata=pjIqtWZKO5768HmBOjH1fhjZMPScuyBUg%2FprxH2QWc4%3D&amp;reserved=0 
>>
>
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH] drm/amdgpu/vcn: add shared menory restore after wake up from sleep.
  2020-04-06 12:31       ` James Zhu
@ 2020-04-06 12:40         ` Christian König
  0 siblings, 0 replies; 8+ messages in thread
From: Christian König @ 2020-04-06 12:40 UTC (permalink / raw)
  To: James Zhu, christian.koenig, Alex Deucher, James Zhu
  Cc: Li, Pauline, amd-gfx list

Am 06.04.20 um 14:31 schrieb James Zhu:
>
> On 2020-04-06 3:03 a.m., Christian König wrote:
>> Am 03.04.20 um 17:54 schrieb James Zhu:
>>>
>>> On 2020-04-03 11:37 a.m., Alex Deucher wrote:
>>>> On Fri, Apr 3, 2020 at 8:52 AM James Zhu <James.Zhu@amd.com> wrote:
>>>>> VCN shared memory needs restore after wake up during S3 test.
>>>> How big is the shared memory?  It might be better to allocate the
>>>> memory once at sw_init and then free it in sw_fini rather than
>>>> allocating and freeing in every suspend/resume.
>>>
>>> Hi Alex,
>>>
>>> After alignment, it is only 4k. I can change it as you suggest.
>>
>> Does this needs to stay at the same place after a suspend/resume?
>>
>> See we only backup the firmware manually because we otherwise can't 
>> guarantee that it will be moved back to the same place after resume.
> Yes, this is the case.. FW request the same for their resume processing.
>> If that isn't an issue for the shared bo we could just unpin it on 
>> suspend and pin it again on resume.
>>
>> BTW: What is that used for and why can't it be part of the VCN 
>> firmware BO?
>
> Logically it is used for FW and driver sharing some settings 
> conveniently. If you suggest it can be added into VCN BO, then it will 
> simply the implementation.

As long as this is only used by the kernel driver it sounds like it is 
best put into the VCN BO as well, yes.

Regards,
Christian.

>
> Thanks and Best Regards!
>
> James Zhu
>
>>
>> Thanks,
>> Christian.
>>
>>>
>>> Best Regards!
>>>
>>> James
>>>
>>>>
>>>> Alex
>>>>
>>>>> Signed-off-by: James Zhu <James.Zhu@amd.com>
>>>>> ---
>>>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 26 
>>>>> ++++++++++++++++++++++++++
>>>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h |  1 +
>>>>>   2 files changed, 27 insertions(+)
>>>>>
>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c 
>>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>>>>> index d653a18..5891390 100644
>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
>>>>> @@ -205,6 +205,7 @@ int amdgpu_vcn_sw_fini(struct amdgpu_device 
>>>>> *adev)
>>>>>                  if (adev->vcn.harvest_config & (1 << j))
>>>>>                          continue;
>>>>>
>>>>> +               kvfree(adev->vcn.inst[j].saved_shm_bo);
>>>>> amdgpu_bo_free_kernel(&adev->vcn.inst[j].fw_shared_bo,
>>>>> &adev->vcn.inst[j].fw_shared_gpu_addr,
>>>>>                                            (void 
>>>>> **)&adev->vcn.inst[j].fw_shared_cpu_addr);
>>>>> @@ -254,6 +255,18 @@ int amdgpu_vcn_suspend(struct amdgpu_device 
>>>>> *adev)
>>>>>                          return -ENOMEM;
>>>>>
>>>>> memcpy_fromio(adev->vcn.inst[i].saved_bo, ptr, size);
>>>>> +
>>>>> +               if (adev->vcn.inst[i].fw_shared_bo == NULL)
>>>>> +                       return 0;
>>>>> +
>>>>> +               size = 
>>>>> amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
>>>>> +               ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
>>>>> +
>>>>> +               adev->vcn.inst[i].saved_shm_bo = kvmalloc(size, 
>>>>> GFP_KERNEL);
>>>>> +               if (!adev->vcn.inst[i].saved_shm_bo)
>>>>> +                       return -ENOMEM;
>>>>> +
>>>>> + memcpy_fromio(adev->vcn.inst[i].saved_shm_bo, ptr, size);
>>>>>          }
>>>>>          return 0;
>>>>>   }
>>>>> @@ -291,6 +304,19 @@ int amdgpu_vcn_resume(struct amdgpu_device 
>>>>> *adev)
>>>>>                          }
>>>>>                          memset_io(ptr, 0, size);
>>>>>                  }
>>>>> +
>>>>> +               if (adev->vcn.inst[i].fw_shared_bo == NULL)
>>>>> +                       return -EINVAL;
>>>>> +
>>>>> +               size = 
>>>>> amdgpu_bo_size(adev->vcn.inst[i].fw_shared_bo);
>>>>> +               ptr = adev->vcn.inst[i].fw_shared_cpu_addr;
>>>>> +
>>>>> +               if (adev->vcn.inst[i].saved_shm_bo != NULL) {
>>>>> +                       memcpy_toio(ptr, 
>>>>> adev->vcn.inst[i].saved_shm_bo, size);
>>>>> + kvfree(adev->vcn.inst[i].saved_shm_bo);
>>>>> +                       adev->vcn.inst[i].saved_shm_bo = NULL;
>>>>> +               } else
>>>>> +                       memset_io(ptr, 0, size);
>>>>>          }
>>>>>          return 0;
>>>>>   }
>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h 
>>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
>>>>> index f739e1a..bd77dae 100644
>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h
>>>>> @@ -194,6 +194,7 @@ struct amdgpu_vcn_inst {
>>>>>          atomic_t                dpg_enc_submission_cnt;
>>>>>          void                    *fw_shared_cpu_addr;
>>>>>          uint64_t                fw_shared_gpu_addr;
>>>>> +       void                    *saved_shm_bo;
>>>>>   };
>>>>>
>>>>>   struct amdgpu_vcn {
>>>>> -- 
>>>>> 2.7.4
>>>>>
>>>>> _______________________________________________
>>>>> amd-gfx mailing list
>>>>> amd-gfx@lists.freedesktop.org
>>>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&amp;data=02%7C01%7CJames.Zhu%40amd.com%7Ccf00d8be2e994e71381808d7d9f8a0d7%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637217534184643911&amp;sdata=pjIqtWZKO5768HmBOjH1fhjZMPScuyBUg%2FprxH2QWc4%3D&amp;reserved=0 
>>>>>
>>> _______________________________________________
>>> amd-gfx mailing list
>>> amd-gfx@lists.freedesktop.org
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&amp;data=02%7C01%7CJames.Zhu%40amd.com%7Ccf00d8be2e994e71381808d7d9f8a0d7%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637217534184643911&amp;sdata=pjIqtWZKO5768HmBOjH1fhjZMPScuyBUg%2FprxH2QWc4%3D&amp;reserved=0 
>>>
>>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

end of thread, other threads:[~2020-04-06 12:40 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-03 12:52 [PATCH] drm/amdgpu/vcn: add shared menory restore after wake up from sleep James Zhu
2020-04-03 13:03 ` Xu, Feifei
2020-04-03 15:37 ` Alex Deucher
2020-04-03 15:54   ` James Zhu
2020-04-06  7:03     ` Christian König
2020-04-06 12:31       ` James Zhu
2020-04-06 12:40         ` Christian König
2020-04-03 18:45 ` [PATCH v2] " James Zhu

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.