All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/amdgpu: move some release handles into fail labels
@ 2016-09-12  2:16 Huang Rui
       [not found] ` <1473646581-25186-1-git-send-email-ray.huang-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Huang Rui @ 2016-09-12  2:16 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Alex Deucher,
	Christian König
  Cc: Huang Rui

Clean up the codes to move the release handles into fail labels.

Signed-off-by: Huang Rui <ray.huang@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
index 5cc95f1..4a5c211 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
@@ -247,35 +247,28 @@ int amdgpu_ucode_init_bo(struct amdgpu_device *adev)
 	const struct common_firmware_header *header = NULL;
 
 	err = amdgpu_bo_create(adev, adev->firmware.fw_size, PAGE_SIZE, true,
-			AMDGPU_GEM_DOMAIN_GTT, 0, NULL, NULL, bo);
+			       AMDGPU_GEM_DOMAIN_GTT, 0, NULL, NULL, bo);
 	if (err) {
 		dev_err(adev->dev, "(%d) Firmware buffer allocate failed\n", err);
-		err = -ENOMEM;
 		goto failed;
 	}
 
 	err = amdgpu_bo_reserve(*bo, false);
 	if (err) {
-		amdgpu_bo_unref(bo);
 		dev_err(adev->dev, "(%d) Firmware buffer reserve failed\n", err);
-		goto failed;
+		goto failed_reserve;
 	}
 
 	err = amdgpu_bo_pin(*bo, AMDGPU_GEM_DOMAIN_GTT, &fw_mc_addr);
 	if (err) {
-		amdgpu_bo_unreserve(*bo);
-		amdgpu_bo_unref(bo);
 		dev_err(adev->dev, "(%d) Firmware buffer pin failed\n", err);
-		goto failed;
+		goto failed_pin;
 	}
 
 	err = amdgpu_bo_kmap(*bo, &fw_buf_ptr);
 	if (err) {
 		dev_err(adev->dev, "(%d) Firmware buffer kmap failed\n", err);
-		amdgpu_bo_unpin(*bo);
-		amdgpu_bo_unreserve(*bo);
-		amdgpu_bo_unref(bo);
-		goto failed;
+		goto failed_kmap;
 	}
 
 	amdgpu_bo_unreserve(*bo);
@@ -291,6 +284,12 @@ int amdgpu_ucode_init_bo(struct amdgpu_device *adev)
 		}
 	}
 
+failed_kmap:
+	amdgpu_bo_unpin(*bo);
+failed_pin:
+	amdgpu_bo_unreserve(*bo);
+failed_reserve:
+	amdgpu_bo_unref(bo);
 failed:
 	if (err)
 		adev->firmware.smu_load = false;
-- 
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] 6+ messages in thread

* Re: [PATCH] drm/amdgpu: move some release handles into fail labels
       [not found] ` <1473646581-25186-1-git-send-email-ray.huang-5C7GfCeVMHo@public.gmane.org>
@ 2016-09-12  2:40   ` zhoucm1
  2016-09-12  9:07   ` Christian König
  2016-09-14 14:21   ` Marek Olšák
  2 siblings, 0 replies; 6+ messages in thread
From: zhoucm1 @ 2016-09-12  2:40 UTC (permalink / raw)
  To: Huang Rui, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	Alex Deucher, Christian König



On 2016年09月12日 10:16, Huang Rui wrote:
> Clean up the codes to move the release handles into fail labels.
>
> Signed-off-by: Huang Rui <ray.huang@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 21 ++++++++++-----------
>   1 file changed, 10 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
> index 5cc95f1..4a5c211 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
> @@ -247,35 +247,28 @@ int amdgpu_ucode_init_bo(struct amdgpu_device *adev)
>   	const struct common_firmware_header *header = NULL;
>   
>   	err = amdgpu_bo_create(adev, adev->firmware.fw_size, PAGE_SIZE, true,
> -			AMDGPU_GEM_DOMAIN_GTT, 0, NULL, NULL, bo);
> +			       AMDGPU_GEM_DOMAIN_GTT, 0, NULL, NULL, bo);
>   	if (err) {
>   		dev_err(adev->dev, "(%d) Firmware buffer allocate failed\n", err);
> -		err = -ENOMEM;
>   		goto failed;
>   	}
>   
>   	err = amdgpu_bo_reserve(*bo, false);
>   	if (err) {
> -		amdgpu_bo_unref(bo);
>   		dev_err(adev->dev, "(%d) Firmware buffer reserve failed\n", err);
> -		goto failed;
> +		goto failed_reserve;
>   	}
>   
>   	err = amdgpu_bo_pin(*bo, AMDGPU_GEM_DOMAIN_GTT, &fw_mc_addr);
>   	if (err) {
> -		amdgpu_bo_unreserve(*bo);
> -		amdgpu_bo_unref(bo);
>   		dev_err(adev->dev, "(%d) Firmware buffer pin failed\n", err);
> -		goto failed;
> +		goto failed_pin;
>   	}
>   
>   	err = amdgpu_bo_kmap(*bo, &fw_buf_ptr);
>   	if (err) {
>   		dev_err(adev->dev, "(%d) Firmware buffer kmap failed\n", err);
> -		amdgpu_bo_unpin(*bo);
> -		amdgpu_bo_unreserve(*bo);
> -		amdgpu_bo_unref(bo);
> -		goto failed;
> +		goto failed_kmap;
>   	}
>   
>   	amdgpu_bo_unreserve(*bo);
> @@ -291,6 +284,12 @@ int amdgpu_ucode_init_bo(struct amdgpu_device *adev)
>   		}
>   	}
>   
> +failed_kmap:
> +	amdgpu_bo_unpin(*bo);
> +failed_pin:
> +	amdgpu_bo_unreserve(*bo);
> +failed_reserve:
> +	amdgpu_bo_unref(bo);
>   failed:
>   	if (err)
>   		adev->firmware.smu_load = false;

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

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

* Re: [PATCH] drm/amdgpu: move some release handles into fail labels
       [not found] ` <1473646581-25186-1-git-send-email-ray.huang-5C7GfCeVMHo@public.gmane.org>
  2016-09-12  2:40   ` zhoucm1
@ 2016-09-12  9:07   ` Christian König
  2016-09-14 14:21   ` Marek Olšák
  2 siblings, 0 replies; 6+ messages in thread
From: Christian König @ 2016-09-12  9:07 UTC (permalink / raw)
  To: Huang Rui, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Alex Deucher

Am 12.09.2016 um 04:16 schrieb Huang Rui:
> Clean up the codes to move the release handles into fail labels.
>
> Signed-off-by: Huang Rui <ray.huang@amd.com>

Reviewed-by: Christian König <christian.koenig@amd.com>.

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 21 ++++++++++-----------
>   1 file changed, 10 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
> index 5cc95f1..4a5c211 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
> @@ -247,35 +247,28 @@ int amdgpu_ucode_init_bo(struct amdgpu_device *adev)
>   	const struct common_firmware_header *header = NULL;
>   
>   	err = amdgpu_bo_create(adev, adev->firmware.fw_size, PAGE_SIZE, true,
> -			AMDGPU_GEM_DOMAIN_GTT, 0, NULL, NULL, bo);
> +			       AMDGPU_GEM_DOMAIN_GTT, 0, NULL, NULL, bo);
>   	if (err) {
>   		dev_err(adev->dev, "(%d) Firmware buffer allocate failed\n", err);
> -		err = -ENOMEM;
>   		goto failed;
>   	}
>   
>   	err = amdgpu_bo_reserve(*bo, false);
>   	if (err) {
> -		amdgpu_bo_unref(bo);
>   		dev_err(adev->dev, "(%d) Firmware buffer reserve failed\n", err);
> -		goto failed;
> +		goto failed_reserve;
>   	}
>   
>   	err = amdgpu_bo_pin(*bo, AMDGPU_GEM_DOMAIN_GTT, &fw_mc_addr);
>   	if (err) {
> -		amdgpu_bo_unreserve(*bo);
> -		amdgpu_bo_unref(bo);
>   		dev_err(adev->dev, "(%d) Firmware buffer pin failed\n", err);
> -		goto failed;
> +		goto failed_pin;
>   	}
>   
>   	err = amdgpu_bo_kmap(*bo, &fw_buf_ptr);
>   	if (err) {
>   		dev_err(adev->dev, "(%d) Firmware buffer kmap failed\n", err);
> -		amdgpu_bo_unpin(*bo);
> -		amdgpu_bo_unreserve(*bo);
> -		amdgpu_bo_unref(bo);
> -		goto failed;
> +		goto failed_kmap;
>   	}
>   
>   	amdgpu_bo_unreserve(*bo);
> @@ -291,6 +284,12 @@ int amdgpu_ucode_init_bo(struct amdgpu_device *adev)
>   		}
>   	}
>   
> +failed_kmap:
> +	amdgpu_bo_unpin(*bo);
> +failed_pin:
> +	amdgpu_bo_unreserve(*bo);
> +failed_reserve:
> +	amdgpu_bo_unref(bo);
>   failed:
>   	if (err)
>   		adev->firmware.smu_load = false;


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

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

* Re: [PATCH] drm/amdgpu: move some release handles into fail labels
       [not found] ` <1473646581-25186-1-git-send-email-ray.huang-5C7GfCeVMHo@public.gmane.org>
  2016-09-12  2:40   ` zhoucm1
  2016-09-12  9:07   ` Christian König
@ 2016-09-14 14:21   ` Marek Olšák
       [not found]     ` <CAAxE2A7UfeHkWjxpxVQ2Gz7qbLWJ_YKp9Y-k7W__3y+d4aqYhw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  2 siblings, 1 reply; 6+ messages in thread
From: Marek Olšák @ 2016-09-14 14:21 UTC (permalink / raw)
  To: Huang Rui; +Cc: Alex Deucher, Christian König, amd-gfx mailing list

Hi,

This patch causes a massive performance drop (by a factor of 100)
followed by GPU hangs with F1 2015 (it needs more than 3GB of memory,
the card has 2GB). The game normally works really well (30+ FPS on
Polaris11 2GB, 40+ FPS on Tonga 2GB).

It should be fixed or the commit should be reverted really quickly.

Marek


On Mon, Sep 12, 2016 at 4:16 AM, Huang Rui <ray.huang@amd.com> wrote:
> Clean up the codes to move the release handles into fail labels.
>
> Signed-off-by: Huang Rui <ray.huang@amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 21 ++++++++++-----------
>  1 file changed, 10 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
> index 5cc95f1..4a5c211 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
> @@ -247,35 +247,28 @@ int amdgpu_ucode_init_bo(struct amdgpu_device *adev)
>         const struct common_firmware_header *header = NULL;
>
>         err = amdgpu_bo_create(adev, adev->firmware.fw_size, PAGE_SIZE, true,
> -                       AMDGPU_GEM_DOMAIN_GTT, 0, NULL, NULL, bo);
> +                              AMDGPU_GEM_DOMAIN_GTT, 0, NULL, NULL, bo);
>         if (err) {
>                 dev_err(adev->dev, "(%d) Firmware buffer allocate failed\n", err);
> -               err = -ENOMEM;
>                 goto failed;
>         }
>
>         err = amdgpu_bo_reserve(*bo, false);
>         if (err) {
> -               amdgpu_bo_unref(bo);
>                 dev_err(adev->dev, "(%d) Firmware buffer reserve failed\n", err);
> -               goto failed;
> +               goto failed_reserve;
>         }
>
>         err = amdgpu_bo_pin(*bo, AMDGPU_GEM_DOMAIN_GTT, &fw_mc_addr);
>         if (err) {
> -               amdgpu_bo_unreserve(*bo);
> -               amdgpu_bo_unref(bo);
>                 dev_err(adev->dev, "(%d) Firmware buffer pin failed\n", err);
> -               goto failed;
> +               goto failed_pin;
>         }
>
>         err = amdgpu_bo_kmap(*bo, &fw_buf_ptr);
>         if (err) {
>                 dev_err(adev->dev, "(%d) Firmware buffer kmap failed\n", err);
> -               amdgpu_bo_unpin(*bo);
> -               amdgpu_bo_unreserve(*bo);
> -               amdgpu_bo_unref(bo);
> -               goto failed;
> +               goto failed_kmap;
>         }
>
>         amdgpu_bo_unreserve(*bo);
> @@ -291,6 +284,12 @@ int amdgpu_ucode_init_bo(struct amdgpu_device *adev)
>                 }
>         }
>
> +failed_kmap:
> +       amdgpu_bo_unpin(*bo);
> +failed_pin:
> +       amdgpu_bo_unreserve(*bo);
> +failed_reserve:
> +       amdgpu_bo_unref(bo);
>  failed:
>         if (err)
>                 adev->firmware.smu_load = false;
> --
> 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] 6+ messages in thread

* Re: [PATCH] drm/amdgpu: move some release handles into fail labels
       [not found]     ` <CAAxE2A7UfeHkWjxpxVQ2Gz7qbLWJ_YKp9Y-k7W__3y+d4aqYhw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2016-09-14 14:36       ` Christian König
       [not found]         ` <1181c308-e04a-583f-1c72-341284974e4a-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Christian König @ 2016-09-14 14:36 UTC (permalink / raw)
  To: Marek Olšák, Huang Rui; +Cc: Alex Deucher, amd-gfx mailing list

Thanks for that info, I was busy most of the day bisecting this 
regression as well.

Yeah, the bug is rather obvious, there is a "return 0;" in the good case 
missing here.

So after loading the firmware we release it again. I will hack together 
a patch, just give me a minute.

Christian.

Am 14.09.2016 um 16:21 schrieb Marek Olšák:
> Hi,
>
> This patch causes a massive performance drop (by a factor of 100)
> followed by GPU hangs with F1 2015 (it needs more than 3GB of memory,
> the card has 2GB). The game normally works really well (30+ FPS on
> Polaris11 2GB, 40+ FPS on Tonga 2GB).
>
> It should be fixed or the commit should be reverted really quickly.
>
> Marek
>
>
> On Mon, Sep 12, 2016 at 4:16 AM, Huang Rui <ray.huang@amd.com> wrote:
>> Clean up the codes to move the release handles into fail labels.
>>
>> Signed-off-by: Huang Rui <ray.huang@amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 21 ++++++++++-----------
>>   1 file changed, 10 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
>> index 5cc95f1..4a5c211 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
>> @@ -247,35 +247,28 @@ int amdgpu_ucode_init_bo(struct amdgpu_device *adev)
>>          const struct common_firmware_header *header = NULL;
>>
>>          err = amdgpu_bo_create(adev, adev->firmware.fw_size, PAGE_SIZE, true,
>> -                       AMDGPU_GEM_DOMAIN_GTT, 0, NULL, NULL, bo);
>> +                              AMDGPU_GEM_DOMAIN_GTT, 0, NULL, NULL, bo);
>>          if (err) {
>>                  dev_err(adev->dev, "(%d) Firmware buffer allocate failed\n", err);
>> -               err = -ENOMEM;
>>                  goto failed;
>>          }
>>
>>          err = amdgpu_bo_reserve(*bo, false);
>>          if (err) {
>> -               amdgpu_bo_unref(bo);
>>                  dev_err(adev->dev, "(%d) Firmware buffer reserve failed\n", err);
>> -               goto failed;
>> +               goto failed_reserve;
>>          }
>>
>>          err = amdgpu_bo_pin(*bo, AMDGPU_GEM_DOMAIN_GTT, &fw_mc_addr);
>>          if (err) {
>> -               amdgpu_bo_unreserve(*bo);
>> -               amdgpu_bo_unref(bo);
>>                  dev_err(adev->dev, "(%d) Firmware buffer pin failed\n", err);
>> -               goto failed;
>> +               goto failed_pin;
>>          }
>>
>>          err = amdgpu_bo_kmap(*bo, &fw_buf_ptr);
>>          if (err) {
>>                  dev_err(adev->dev, "(%d) Firmware buffer kmap failed\n", err);
>> -               amdgpu_bo_unpin(*bo);
>> -               amdgpu_bo_unreserve(*bo);
>> -               amdgpu_bo_unref(bo);
>> -               goto failed;
>> +               goto failed_kmap;
>>          }
>>
>>          amdgpu_bo_unreserve(*bo);
>> @@ -291,6 +284,12 @@ int amdgpu_ucode_init_bo(struct amdgpu_device *adev)
>>                  }
>>          }
>>
>> +failed_kmap:
>> +       amdgpu_bo_unpin(*bo);
>> +failed_pin:
>> +       amdgpu_bo_unreserve(*bo);
>> +failed_reserve:
>> +       amdgpu_bo_unref(bo);
>>   failed:
>>          if (err)
>>                  adev->firmware.smu_load = false;
>> --
>> 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] 6+ messages in thread

* Re: [PATCH] drm/amdgpu: move some release handles into fail labels
       [not found]         ` <1181c308-e04a-583f-1c72-341284974e4a-5C7GfCeVMHo@public.gmane.org>
@ 2016-09-15  2:50           ` Huang Rui
  0 siblings, 0 replies; 6+ messages in thread
From: Huang Rui @ 2016-09-15  2:50 UTC (permalink / raw)
  To: Koenig, Christian, Marek Olšák
  Cc: Deucher, Alexander, amd-gfx mailing list

Ah, sorry, this is my mistake to miss the "return 0;". Marek, thanks a lot
to point out. I will take care next time.

Christian, I see you already send the patch to fix it. Thanks.

Thanks,
Rui

On Wed, Sep 14, 2016 at 10:36:16PM +0800, Koenig, Christian wrote:
> Thanks for that info, I was busy most of the day bisecting this 
> regression as well.
> 
> Yeah, the bug is rather obvious, there is a "return 0;" in the good case 
> missing here.
> 
> So after loading the firmware we release it again. I will hack together 
> a patch, just give me a minute.
> 
> Christian.
> 
> Am 14.09.2016 um 16:21 schrieb Marek Olšák:
> > Hi,
> >
> > This patch causes a massive performance drop (by a factor of 100)
> > followed by GPU hangs with F1 2015 (it needs more than 3GB of memory,
> > the card has 2GB). The game normally works really well (30+ FPS on
> > Polaris11 2GB, 40+ FPS on Tonga 2GB).
> >
> > It should be fixed or the commit should be reverted really quickly.
> >
> > Marek
> >
> >
> > On Mon, Sep 12, 2016 at 4:16 AM, Huang Rui <ray.huang@amd.com> wrote:
> >> Clean up the codes to move the release handles into fail labels.
> >>
> >> Signed-off-by: Huang Rui <ray.huang@amd.com>
> >> ---
> >>   drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 21 ++++++++++-----------
> >>   1 file changed, 10 insertions(+), 11 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
> >> index 5cc95f1..4a5c211 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
> >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
> >> @@ -247,35 +247,28 @@ int amdgpu_ucode_init_bo(struct amdgpu_device *adev)
> >>          const struct common_firmware_header *header = NULL;
> >>
> >>          err = amdgpu_bo_create(adev, adev->firmware.fw_size, PAGE_SIZE, true,
> >> -                       AMDGPU_GEM_DOMAIN_GTT, 0, NULL, NULL, bo);
> >> +                              AMDGPU_GEM_DOMAIN_GTT, 0, NULL, NULL, bo);
> >>          if (err) {
> >>                  dev_err(adev->dev, "(%d) Firmware buffer allocate failed\n", err);
> >> -               err = -ENOMEM;
> >>                  goto failed;
> >>          }
> >>
> >>          err = amdgpu_bo_reserve(*bo, false);
> >>          if (err) {
> >> -               amdgpu_bo_unref(bo);
> >>                  dev_err(adev->dev, "(%d) Firmware buffer reserve failed\n", err);
> >> -               goto failed;
> >> +               goto failed_reserve;
> >>          }
> >>
> >>          err = amdgpu_bo_pin(*bo, AMDGPU_GEM_DOMAIN_GTT, &fw_mc_addr);
> >>          if (err) {
> >> -               amdgpu_bo_unreserve(*bo);
> >> -               amdgpu_bo_unref(bo);
> >>                  dev_err(adev->dev, "(%d) Firmware buffer pin failed\n", err);
> >> -               goto failed;
> >> +               goto failed_pin;
> >>          }
> >>
> >>          err = amdgpu_bo_kmap(*bo, &fw_buf_ptr);
> >>          if (err) {
> >>                  dev_err(adev->dev, "(%d) Firmware buffer kmap failed\n", err);
> >> -               amdgpu_bo_unpin(*bo);
> >> -               amdgpu_bo_unreserve(*bo);
> >> -               amdgpu_bo_unref(bo);
> >> -               goto failed;
> >> +               goto failed_kmap;
> >>          }
> >>
> >>          amdgpu_bo_unreserve(*bo);
> >> @@ -291,6 +284,12 @@ int amdgpu_ucode_init_bo(struct amdgpu_device *adev)
> >>                  }
> >>          }
> >>
> >> +failed_kmap:
> >> +       amdgpu_bo_unpin(*bo);
> >> +failed_pin:
> >> +       amdgpu_bo_unreserve(*bo);
> >> +failed_reserve:
> >> +       amdgpu_bo_unref(bo);
> >>   failed:
> >>          if (err)
> >>                  adev->firmware.smu_load = false;
> >> --
> >> 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] 6+ messages in thread

end of thread, other threads:[~2016-09-15  2:50 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-12  2:16 [PATCH] drm/amdgpu: move some release handles into fail labels Huang Rui
     [not found] ` <1473646581-25186-1-git-send-email-ray.huang-5C7GfCeVMHo@public.gmane.org>
2016-09-12  2:40   ` zhoucm1
2016-09-12  9:07   ` Christian König
2016-09-14 14:21   ` Marek Olšák
     [not found]     ` <CAAxE2A7UfeHkWjxpxVQ2Gz7qbLWJ_YKp9Y-k7W__3y+d4aqYhw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-09-14 14:36       ` Christian König
     [not found]         ` <1181c308-e04a-583f-1c72-341284974e4a-5C7GfCeVMHo@public.gmane.org>
2016-09-15  2:50           ` Huang Rui

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.