From: Samuel Pitoiset <samuel.pitoiset-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: "Christian König"
<deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>,
amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Subject: Re: [PATCH 1/2] drm/amdgpu: drop multiple bo_unreserve() calls in amdgpu_gem_op_ioctl()
Date: Fri, 10 Feb 2017 11:17:27 +0100 [thread overview]
Message-ID: <da42ce16-e304-9c34-41cc-b34215ed1683@gmail.com> (raw)
In-Reply-To: <35f1c55d-5ade-ffd0-6c9f-95fc891e1d77-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
On 02/10/2017 11:02 AM, Christian König wrote:
> NAK, we need to drop the reservation before calling copy_to_user().
>
> Otherwise you run into a double locking error when copy_to_user() is
> trying to copy to the BO in question.
Okay, I trust you but this seems tricky. copy_to_user() doesn't even
take the BO as parameter, how can this happen?
>
> Regards,
> Christian.
>
> Am 09.02.2017 um 23:28 schrieb Samuel Pitoiset:
>> Move amdgpu_bo_unreserve() outside of the switch. While we are
>> at it, add a missing break in the default case.
>>
>> Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
>> ---
>> drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 7 ++-----
>> 1 file changed, 2 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
>> index 1dc59aafec71..ae4658a10e2c 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
>> @@ -660,7 +660,6 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev,
>> void *data,
>> info.alignment = robj->tbo.mem.page_alignment << PAGE_SHIFT;
>> info.domains = robj->prefered_domains;
>> info.domain_flags = robj->flags;
>> - amdgpu_bo_unreserve(robj);
>> if (copy_to_user(out, &info, sizeof(info)))
>> r = -EFAULT;
>> break;
>> @@ -668,7 +667,6 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev,
>> void *data,
>> case AMDGPU_GEM_OP_SET_PLACEMENT:
>> if (amdgpu_ttm_tt_get_usermm(robj->tbo.ttm)) {
>> r = -EPERM;
>> - amdgpu_bo_unreserve(robj);
>> break;
>> }
>> robj->prefered_domains = args->value &
>> (AMDGPU_GEM_DOMAIN_VRAM |
>> @@ -677,14 +675,13 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev,
>> void *data,
>> robj->allowed_domains = robj->prefered_domains;
>> if (robj->allowed_domains == AMDGPU_GEM_DOMAIN_VRAM)
>> robj->allowed_domains |= AMDGPU_GEM_DOMAIN_GTT;
>> -
>> - amdgpu_bo_unreserve(robj);
>> break;
>> default:
>> - amdgpu_bo_unreserve(robj);
>> r = -EINVAL;
>> + break;
>> }
>> + amdgpu_bo_unreserve(robj);
>> out:
>> drm_gem_object_unreference_unlocked(gobj);
>> return r;
>
>
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
prev parent reply other threads:[~2017-02-10 10:17 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-09 22:28 [PATCH 1/2] drm/amdgpu: drop multiple bo_unreserve() calls in amdgpu_gem_op_ioctl() Samuel Pitoiset
[not found] ` <20170209222824.3267-1-samuel.pitoiset-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-02-09 22:28 ` [PATCH 2/2] drm/amdgpu: use amdgpu_gem_va_check() in amdgpu_gem_va_update_vm() Samuel Pitoiset
[not found] ` <20170209222824.3267-2-samuel.pitoiset-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-02-10 2:58 ` zhoucm1
2017-02-10 10:02 ` Christian König
2017-02-10 17:06 ` Alex Deucher
2017-02-10 2:55 ` [PATCH 1/2] drm/amdgpu: drop multiple bo_unreserve() calls in amdgpu_gem_op_ioctl() zhoucm1
[not found] ` <589D2B9C.309-5C7GfCeVMHo@public.gmane.org>
2017-02-10 10:11 ` Samuel Pitoiset
[not found] ` <0c47615f-6e93-eea1-418c-f846a0c1d3ae-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-02-10 10:19 ` Christian König
[not found] ` <f297f821-678a-392a-2786-0307dc7a54ad-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-02-10 10:22 ` Samuel Pitoiset
[not found] ` <fcf33caf-41c4-5344-ede7-9be1cecf813c-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-02-10 10:37 ` Christian König
[not found] ` <185ea16c-7062-f137-2234-a19f845062a6-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-02-10 11:09 ` Samuel Pitoiset
2017-02-10 10:02 ` Christian König
[not found] ` <35f1c55d-5ade-ffd0-6c9f-95fc891e1d77-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2017-02-10 10:17 ` Samuel Pitoiset [this message]
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=da42ce16-e304-9c34-41cc-b34215ed1683@gmail.com \
--to=samuel.pitoiset-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.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.