Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp2427336ybb; Mon, 30 Mar 2020 06:01:44 -0700 (PDT) X-Google-Smtp-Source: ADFU+vsmBns4L/z3vgSRDx63QHg496b/Q70AaSdC0gSqwCeLzbPSxwsY3grt5lDqrJrCVHFPyVk1 X-Received: by 2002:a9d:2074:: with SMTP id n107mr8748390ota.306.1585573304405; Mon, 30 Mar 2020 06:01:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585573304; cv=none; d=google.com; s=arc-20160816; b=vwmSB4QJI+G2xGHITwXnJlDDGO/DYS8G/4QLlXFnWbZxf7LhCzbC5wfKoLp/eq1SzN 91SCUNBbnAGpYUQ+oDQOQe0JvsdbpY+6V6u0ibQrvItTNOaOleTRBzB/+lXe4jmM1zaB P4PHgGurWTxMeSllCVxxmud6x6l8hB4PM6YSdsPpiqwsPPLyj8f79Hw/Y8jIacKbPeBP SJW2Ilhon8R7G7QVI/YOot3FuOeswd6GZfTMErcwQVQPcPQYSs2IKVeR6JdLYfyThQ2g aNQ91HnNx2TKyQ2wfKDaHFPosq9BRlLwDSSHol8rYhvdPRgpsbH4S+vzNMUd4B79EGOC ZlyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :mime-version:dkim-signature; bh=fla8h5dw+7kESbxPfIOGPXN0TH0KgZ2TkZfruGM5x9o=; b=Ja0mP189zgtEI8V/2iA9fqOpyBXX4RAzi8zKPE7nCsH0ZtJYKNN7CPPcCgpMC6DgT7 +ulyg729aEp9olCCxgD7t9Q+FvOybJ1PWFXlqgzPli6eehccU06y9pLLko+V1pCZsIeP VqbOdQBNqcwHziITrNOLF+XVjrhxtniL6gOjKPUXmjLLHqJLGIvKPODqLJCcyc5j3CIl ioUOl2HbVSGQXnamIxnfHfiKmAPyZEoy/WNJDiofaen2dhpvLwXDYbzjlES9+1Kq5r6x CvGgC/NwM6tgB71sXDpuMvVwbduX8Q9Nbn9n0al2k0TV+j3dCRzfG6Fwr2b4LBuTaoyV ui2Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=lg9bvgvr; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j15si6694112ots.187.2020.03.30.06.01.26; Mon, 30 Mar 2020 06:01:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=lg9bvgvr; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730185AbgC3NAs (ORCPT + 99 others); Mon, 30 Mar 2020 09:00:48 -0400 Received: from mail-ot1-f68.google.com ([209.85.210.68]:35594 "EHLO mail-ot1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729995AbgC3NAr (ORCPT ); Mon, 30 Mar 2020 09:00:47 -0400 Received: by mail-ot1-f68.google.com with SMTP id v2so13312486oto.2 for ; Mon, 30 Mar 2020 06:00:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:from:date:message-id:subject:to:cc; bh=fla8h5dw+7kESbxPfIOGPXN0TH0KgZ2TkZfruGM5x9o=; b=lg9bvgvrsr0fQ+6RWmswj1Ye2O+9fMYB4JLMCTLhaiT6/OxszDwqgfMiMC1jVWxEkO tTp6yhmw2iUfjKosQmnJ44qYjHc0TVJz/31+6/HqOYVe+0C/CADWA2Wm1RxFciJo48Zy HDmHRIgT1OdpEs7r+pHoyENZjFcg3mQ+9PJig= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=fla8h5dw+7kESbxPfIOGPXN0TH0KgZ2TkZfruGM5x9o=; b=dhkSfyg5moY7yrnBehQ3MEsM5IPgBJoFcSUhzYHUBAKj5SGEeHktMY1fDxqTk5kbfS 8eQMcXwhHXI6+GMWHR/VocdtrLlTAzMSOkxHbe2+LRNRTKDEdQDXDNYWnaXgOxqdFu4s gM4jT1MwlJ8vuhIfGSt8q/rdwtwt3SkBXha0n7xOqrSWP8qrwzroOHps4Orvy3RjAN4A yMChb2AQOBVQSdgSE+MgKH+JWOrvXFutJLwWATAWrEToDMYxjOhYm6gTz8ecGQ/YO2I9 tCCiuxsN09e2bbIKWCKhu/1g0kjfFiPGSACcRDaU65gCCgx9nUx8ibxIA4GmmENf0m1S Fwyw== X-Gm-Message-State: ANhLgQ2pDo40Aqw3kvgqF2C9CuvMSjmyQXf3+QgeR3rXWOwa62B/Y1HB s2yILo5FUqiO+ZJ0h7ZAs4k4w+DQH6GrpAp8Z0+ZwA== X-Received: by 2002:a9d:6e8f:: with SMTP id a15mr4716842otr.188.1585573246524; Mon, 30 Mar 2020 06:00:46 -0700 (PDT) MIME-Version: 1.0 From: Daniel Vetter Date: Mon, 30 Mar 2020 15:00:35 +0200 Message-ID: Subject: rcu_barrier() no longer allowed within mmap_sem? To: "Paul E. McKenney" , Josh Triplett , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Joel Fernandes , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Andrew Morton , Thomas Gleixner Cc: rcu@vger.kernel.org, Linux Kernel Mailing List , intel-gfx , dri-devel Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi all, for all = rcu, cpuhotplug and perf maintainers We've hit an interesting new lockdep splat in our drm/i915 CI: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17096/shard-tglb7/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-gtt.html#dmesg-warnings861 Summarizing away the driver parts we have < gpu locks which are held within mm->mmap_sem in various gpu fault handlers > -> #4 (&mm->mmap_sem#2){++++}: <4> [604.892615] __might_fault+0x63/0x90 <4> [604.892617] _copy_to_user+0x1e/0x80 <4> [604.892619] perf_read+0x200/0x2b0 <4> [604.892621] vfs_read+0x96/0x160 <4> [604.892622] ksys_read+0x9f/0xe0 <4> [604.892623] do_syscall_64+0x4f/0x220 <4> [604.892624] entry_SYSCALL_64_after_hwframe+0x49/0xbe <4> [604.892625] -> #3 (&cpuctx_mutex){+.+.}: <4> [604.892626] __mutex_lock+0x9a/0x9c0 <4> [604.892627] perf_event_init_cpu+0xa4/0x140 <4> [604.892629] perf_event_init+0x19d/0x1cd <4> [604.892630] start_kernel+0x362/0x4e4 <4> [604.892631] secondary_startup_64+0xa4/0xb0 <4> [604.892631] -> #2 (pmus_lock){+.+.}: <4> [604.892633] __mutex_lock+0x9a/0x9c0 <4> [604.892633] perf_event_init_cpu+0x6b/0x140 <4> [604.892635] cpuhp_invoke_callback+0x9b/0x9d0 <4> [604.892636] _cpu_up+0xa2/0x140 <4> [604.892637] do_cpu_up+0x61/0xa0 <4> [604.892639] smp_init+0x57/0x96 <4> [604.892639] kernel_init_freeable+0x87/0x1dc <4> [604.892640] kernel_init+0x5/0x100 <4> [604.892642] ret_from_fork+0x24/0x50 <4> [604.892642] -> #1 (cpu_hotplug_lock.rw_sem){++++}: <4> [604.892643] cpus_read_lock+0x34/0xd0 <4> [604.892644] rcu_barrier+0xaa/0x190 <4> [604.892645] kernel_init+0x21/0x100 <4> [604.892647] ret_from_fork+0x24/0x50 <4> [604.892647] -> #0 (rcu_state.barrier_mutex){+.+.}: <4> [604.892649] __lock_acquire+0x1328/0x15d0 <4> [604.892650] lock_acquire+0xa7/0x1c0 <4> [604.892651] __mutex_lock+0x9a/0x9c0 <4> [604.892652] rcu_barrier+0x23/0x190 <4> [604.892680] i915_gem_object_unbind+0x29d/0x3f0 [i915] <4> [604.892707] i915_gem_object_pin_to_display_plane+0x141/0x270 [i915] <4> [604.892737] intel_pin_and_fence_fb_obj+0xec/0x1f0 [i915] <4> [604.892767] intel_plane_pin_fb+0x3f/0xd0 [i915] <4> [604.892797] intel_prepare_plane_fb+0x13b/0x5c0 [i915] <4> [604.892798] drm_atomic_helper_prepare_planes+0x85/0x110 <4> [604.892827] intel_atomic_commit+0xda/0x390 [i915] <4> [604.892828] drm_atomic_helper_set_config+0x57/0xa0 <4> [604.892830] drm_mode_setcrtc+0x1c4/0x720 <4> [604.892830] drm_ioctl_kernel+0xb0/0xf0 <4> [604.892831] drm_ioctl+0x2e1/0x390 <4> [604.892833] ksys_ioctl+0x7b/0x90 <4> [604.892835] __x64_sys_ioctl+0x11/0x20 <4> [604.892835] do_syscall_64+0x4f/0x220 <4> [604.892836] entry_SYSCALL_64_after_hwframe+0x49/0xbe The last backtrace boils down to i915 driver code which holds the same locks we are holding within mm->mmap_sem, and then ends up calling rcu_barrier(). From what I can see i915 is just the messenger here, any driver with this pattern of a lock held within mmap_sem which also has a path of calling rcu_barrier while holding that lock should be hitting this splat. Two questions: - This suggests that calling rcu_barrier() isn't ok anymore while holding mmap_sem, or anything that has a dependency upon mmap_sem. I guess that's not the idea, please confirm. - Assuming this depedency is indeed not intended, where should the loop be broken? It goes through perf, cpuhotplug and rcu subsystems, and I don't have a clue about any of those. Thanks a lot. Cheers, Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch