On Sat,  9 Jul 2011 09:38:51 +0100, Chris Wilson <ch...@chris-wilson.co.uk> 
wrote:
> These paths hold onto the struct mutex whilst accessing pages. In
> order, to prevent a recursive dead-lock should we fault-in a GTT mapped
> page we need to return -EFAULT and fallback to the slow path.
> 
> Lockdep has complained before about the potential dead-lock, but rvis is
> the first application found to sufficiently abuse the API to trigger it.
> 
> Cursory performance regression testing on a 1GiB PineView system using
> x11perf, cairo-perf-trace, glxgears and a few game benchmarks suggested
> no large regressions with just a 2% slowdown for firefox. The caveat is
> that this was an otherwise idle system and that for 32-bit systems
> io_mapping_map_atomic_wc() already disabled page-faults.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38115
> Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/i915_gem.c |   22 ++++++++++++++++++++--
>  1 files changed, 20 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 2fce620..ecb27fd 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c

> -             vaddr = kmap_atomic(page, KM_USER0);
> +             vaddr = kmap_atomic(page);
> +             /* We have to disable faulting here in case the user address
> +              * is really a GTT mapping and so we can not enter
> +              * i915_gem_fault() whilst already holding struct_mutex.
> +              */
> +             pagefault_disable();
>               ret = __copy_from_user_inatomic(vaddr + page_offset,
>                                               user_data,
>                                               page_length);
> -             kunmap_atomic(vaddr, KM_USER0);
> +             pagefault_enable();
> +             kunmap_atomic(vaddr);

does this even compile?  Looks like you dropped an arg.

Looks like a reasonable fix for the problem, though.

Attachment: pgpZ1NyUHCi5n.pgp
Description: PGP signature

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to