From nobody Sat Oct 4 15:55:17 2025 Received: from mail-ej1-f74.google.com (mail-ej1-f74.google.com [209.85.218.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BC24C2FD7C4 for ; Thu, 14 Aug 2025 13:53:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755179612; cv=none; b=o8+4kJbuu/b2sw5lqZWzDW7Pf/AYiNIIxbFPtIY6z38+Y888PUwR2w64oLfgXpnD6i4L+ioOcFx34yl0neDZrNK0SrsJP3CTwJ8eJOKeo//aUE7hjbpfolGeKHgyfxomTn6XYWksk5tQed4fr89V32FgviKUq9u0kOfRjQOLKNw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755179612; c=relaxed/simple; bh=LR+wrgMUBZJQVPTupv5LRDIZs0SCFocRvp1imSI22LU=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=ex2lwSyhM0FQKpc2mj/4PnRHimrKYiVArXR/a1U2HWVgrSWAohRMQg+Kj0C4MwDbmLll6OoSf7RUuRRCFNTFqmAcbjCMi6vsKvPnUCTQ5ULUO5caIGCh/DPQoLNb4HFl3Q8FRWtvQR1KQ932RnVVo/OPuZkzzL/nPWPTgW1UkXY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--aliceryhl.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=IVm5lz9W; arc=none smtp.client-ip=209.85.218.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--aliceryhl.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="IVm5lz9W" Received: by mail-ej1-f74.google.com with SMTP id a640c23a62f3a-afcb732ec92so82638366b.0 for ; Thu, 14 Aug 2025 06:53:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1755179609; x=1755784409; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=eOHsmkNZ6ajiFO4LnWXyqljxEE3s9K8Dypjb6+pFT1w=; b=IVm5lz9W/ZLnL0pgL1K808HrRmae1TAvGBxXb2t1TtcOJecn0DCRq4B5YefC+qqSe6 LnfCaBAEVbNLGaL9eHo2LJ3xVYPHbeJcYL6DCVD38p/XzFaDHMC61hSsd9Fy/QHcrkyz esnf41qKHjV5hTHC4NEqACv54QuAvr0QPGGxuQ5uuEsh2NBENK2DZ9P/WcXyc3R1WZVh vT6Ou6+AYiySS3RNOeRQyGF1FwY7xzFolPrB/e9wiLp4hK2fuJkgOoBLQ7Dyy0MRI3oC h3SDMgiqMDXz1E+eXMHlwfXXoCiFgIXwCk67B1RJ3Yq4qK/1Ttp3u4OLP57czgcvB7OT 3aNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755179609; x=1755784409; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=eOHsmkNZ6ajiFO4LnWXyqljxEE3s9K8Dypjb6+pFT1w=; b=sb9lH11y9SnMo79Sq2/AH5YF7gAdbn9XglPoD8IxeUWJqlnTltb8xo69WxCNoeMvfK cmG701J4DAXEkX1/tCd9rFtesMH89ugUGbIzVEzMUZ4TeAYtJHxRH3B2Yi0x0Ff15UZB UpjGfiql0Zu7YfAjKoXQH82psnOi2/MSmtcNzeNKaMqUg7twU8ZkWvuuYGaywTxdsiUW j3biV9AgS4ZGhlh1GnaiKx4Ui4W3JqfXgTzkzLbEe16xK4nrucTq131mQOmpNWmc6c8O eB6+NTBdyimcoVP8bgOsvLD8ZpqS3Q/bWGH8zFIhrinNA8xIlcIKd4P9ESvsVNBqa5Iu d+Lw== X-Forwarded-Encrypted: i=1; AJvYcCVNOTeML0Ol48nLlOMF4Cniayz0aEdxTKwxdcb2L49j2nHjVb3/YQADJfSUdwCyi1BPUiZ8gYImx+0CfGA=@vger.kernel.org X-Gm-Message-State: AOJu0YzsdDFOOms3Mdtsz5i3KfA6OTmBBlvdAKp/cCT8L/r89kAL8DgM v/k4KHmiFLpISKMTIj2jrO9USQ0uI7XogRoQX/XKSAZzuvu63qv7vmCJM0nZ+TJOJFG92+anq55 6OCWES69Mw4j95fmCgw== X-Google-Smtp-Source: AGHT+IGbuvX24KRWZ6BDbArlEBg7fmfllPH+dSU87Bq+ZSteDZmPgx1B2ORVZuBFNuAwNPDP9arsBIXuELAxObY= X-Received: from ejbs11.prod.google.com ([2002:a17:906:60b:b0:afc:aee2:e5da]) (user=aliceryhl job=prod-delivery.src-stubby-dispatcher) by 2002:a17:906:dc90:b0:af9:acc3:823f with SMTP id a640c23a62f3a-afcb995ef91mr274963466b.58.1755179609031; Thu, 14 Aug 2025 06:53:29 -0700 (PDT) Date: Thu, 14 Aug 2025 13:53:14 +0000 In-Reply-To: <20250814-gpuva-mutex-in-gem-v1-0-e202cbfe6d77@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250814-gpuva-mutex-in-gem-v1-0-e202cbfe6d77@google.com> X-Developer-Key: i=aliceryhl@google.com; a=openpgp; fpr=49F6C1FAA74960F43A5B86A1EE7A392FDE96209F X-Developer-Signature: v=1; a=openpgp-sha256; l=3449; i=aliceryhl@google.com; h=from:subject:message-id; bh=LR+wrgMUBZJQVPTupv5LRDIZs0SCFocRvp1imSI22LU=; b=owEBbQKS/ZANAwAKAQRYvu5YxjlGAcsmYgBonepU63zgWq1jyZcLcDi0DX7eH+EAfW46ZdNlP 8SCm8KSwyuJAjMEAAEKAB0WIQSDkqKUTWQHCvFIvbIEWL7uWMY5RgUCaJ3qVAAKCRAEWL7uWMY5 RlqsD/4+7Y/iv8bYMd0BjxVyNgatNJPVJAFR+qKXoPveykuk7AXM2x+xiCFS3vfWHYcIpjBD6Oy 6T2EDV0Jqy+kgXYsRAbq8pTYZWldvqK7Fwukdva5AxF5CRdICX2Grb6giEi5aa4MRT+ta9RYefp EpEb5ID7iY2EltD4VTC0OKmWaYtUmcy2Qp3GvdxPXqv8q2o7CA5en8K6UX2nDo7F1wIvbomS6eC IAIc9RRJYDPrnXTu04BFtYtC33QEojuaFc2vrQQB9BrxFmHv+9c6s24k9oXtCqSdm9MB6coB9AQ /b8vk2wEWMJOjQFIeM6jji2dlDPVhc54JzslQTFpwImr1LIRfbNHtN+L0dob9obXG0FJ3FT6JWH LPTL2QpcNPj3oZbou4DnngHGhy4wbjmhwdRq3pVv0ortoPRYWeGtVC2J6ALbEZgRnZThKYzOEAv 6rjCsIyf2d/Fc3YSo1+b20qPj2KwC8FpIxsdQHAR/1v7dXi1ipYTINbio00blE4NLdM/gwe6MDm DwcOlTyrD34tM2KxYB4Vfeavw7fgZcGbK8T8F+Q+Y22mmalWYLTGDHE1EWaJ+HAbpvSdZd+kWob tPH+UQ8J7oNbaUPX5cw65NcVeeul9u1Rx68XKmQu4S0nCcG2MBnQ0sLmF+n0homLUZqjo9nNQCt mt1mwbpwiRnhGUQ== X-Mailer: b4 0.14.2 Message-ID: <20250814-gpuva-mutex-in-gem-v1-1-e202cbfe6d77@google.com> Subject: [PATCH 1/2] drm_gem: add mutex to drm_gem_object.gpuva From: Alice Ryhl To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Danilo Krummrich , Boris Brezillon , Daniel Almeida , Steven Price , Liviu Dudau , Rob Clark , Rob Herring Cc: Miguel Ojeda , Boqun Feng , Gary Guo , "=?utf-8?q?Bj=C3=B6rn_Roy_Baron?=" , Benno Lossin , Andreas Hindborg , Trevor Gross , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Alice Ryhl Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable There are two main ways that GPUVM might be used: * staged mode, where VM_BIND ioctls update the GPUVM immediately so that the GPUVM reflects the state of the VM *including* staged changes that are not yet applied to the GPU's virtual address space. * immediate mode, where the GPUVM state is updated during run_job(), i.e., in the DMA fence signalling critical path, to ensure that the GPUVM and the GPU's virtual address space has the same state at all times. Currently, only Panthor uses GPUVM in immediate mode, but the Rust drivers Tyr and Nova will also use GPUVM in immediate mode, so it is worth to support both staged and immediate mode well in GPUVM. To use immediate mode, the GEMs gpuva list must be modified during the fence signalling path, which means that it must be protected by a lock that is fence signalling safe. For this reason, a mutex is added to struct drm_gem_object that is intended to achieve this purpose. Adding it directly in the GEM object both makes it easier to use GPUVM in immediate mode, but also makes it possible to take the gpuva lock from core drm code. As a follow-up, another change that should probably be made to support immediate mode is a mechanism to postpone cleanup of vm_bo objects, as dropping a vm_bo object in the fence signalling path is problematic for two reasons: * When using DRM_GPUVM_RESV_PROTECTED, you cannot remove the vm_bo from the extobj/evicted lists during the fence signalling path. * Dropping a vm_bo could lead to the GEM object getting destroyed. The requirement that GEM object cleanup is fence signalling safe is dubious and likely to be violated in practice. Panthor already has its own custom implementation of postponing vm_bo cleanup. Signed-off-by: Alice Ryhl --- drivers/gpu/drm/drm_gem.c | 2 ++ include/drm/drm_gem.h | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 6a44351e58b7741c358406c8a576b6660b5ca904..24c109ab3fadd5af2e5d9de3fe3= 30b105217a9ce 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -187,6 +187,7 @@ void drm_gem_private_object_init(struct drm_device *dev, kref_init(&obj->refcount); obj->handle_count =3D 0; obj->size =3D size; + mutex_init(&obj->gpuva.lock); dma_resv_init(&obj->_resv); if (!obj->resv) obj->resv =3D &obj->_resv; @@ -1057,6 +1058,7 @@ drm_gem_object_free(struct kref *kref) if (WARN_ON(!obj->funcs->free)) return; =20 + mutex_destroy(&obj->gpuva.lock); obj->funcs->free(obj); } EXPORT_SYMBOL(drm_gem_object_free); diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h index d3a7b43e2c637b164eba5af7cc2fc8ef09d4f0a4..5934d8dc267a65aaf62d2d02586= 9221cd110b325 100644 --- a/include/drm/drm_gem.h +++ b/include/drm/drm_gem.h @@ -403,11 +403,13 @@ struct drm_gem_object { * Provides the list of GPU VAs attached to this GEM object. * * Drivers should lock list accesses with the GEMs &dma_resv lock - * (&drm_gem_object.resv) or a custom lock if one is provided. + * (&drm_gem_object.resv) or a custom lock if one is provided. The + * mutex inside this struct may be used as the custom lock. */ struct { struct list_head list; =20 + struct mutex lock; #ifdef CONFIG_LOCKDEP struct lockdep_map *lock_dep_map; #endif --=20 2.51.0.rc0.215.g125493bb4a-goog From nobody Sat Oct 4 15:55:17 2025 Received: from mail-wr1-f73.google.com (mail-wr1-f73.google.com [209.85.221.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F02F2301460 for ; Thu, 14 Aug 2025 13:53:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755179613; cv=none; b=M7QdB9zYHP5ha2hByV2CiFI6M4/ldORxYaLfEia3k/rBNIIPvArYIQcvdy1PpgSH+eh+vDKu3Rh/vAzDvG6H9Jtoe94xMcfvwt6n5JmZoD5Yerq+y52CGVCUOTuEJewx1l38egGLjaU/66Xi56/7Ul3H5Irc1yvVDpTjb7IvWjY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755179613; c=relaxed/simple; bh=Ys8zr7p5E/pxehMYheQ03XdY7hgmdwtMJ8X4xdLEP5w=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=NvDpNjTYpvfOCtAePKNThqB5jLyuQXSmlefDCYzqiBxq+vEZV8qXKEZVSGRmgu4w2UXixagL+OOC7UFimzvp5hkjsYOyQ6wozVsnlwT6kCF2v0hz+mF54G9+GE2nK47TKRHZ/UaWCaPruKKxZZCvfyMJHVWCc7UBVdJXii1abcA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--aliceryhl.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=oBMXeISm; arc=none smtp.client-ip=209.85.221.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--aliceryhl.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="oBMXeISm" Received: by mail-wr1-f73.google.com with SMTP id ffacd0b85a97d-3b9dc5c2c7dso430750f8f.1 for ; Thu, 14 Aug 2025 06:53:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1755179610; x=1755784410; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=XYenbqOTOpUfkHsfqbO9ECo5eK5dIeNTgWkJCZso5Iw=; b=oBMXeISmHDWIaQKkmCde9C3Ga46aY8QkYV3qOiDN7Bv5auS8k/UujcMdlwBCiD9hmL a+9MdqPMhh4THyaBLI0iURWu+BIhOzGhkNfh1Y6WocdaS9BzpKFGOZ2G7T+pUlnWGqlH QJxvZ88g+F/Kg4RNsiWJrhFfiDNcGtbzvOk1iqpJQ4islMMG+Tddk4rU4/NrNwPIVWFR rj2g13QMckGz8Sz3o5htPObYBGOecKmxxFXXS22Uzw2jPlxYxaFhreOTo7XD+zbDsiPw hhQ6jUhdzQxJSOstotyMzkxTHsboyshgRdqqVm+8p+NADBCOaG0iN/3Npymh8b1XFFVJ +D8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755179610; x=1755784410; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=XYenbqOTOpUfkHsfqbO9ECo5eK5dIeNTgWkJCZso5Iw=; b=Y8LSf3xcLNBI16JTClMaCsRSegMET3JuSkPswi2yMT5z9nil6NdTMRCxYVkFjNkXSw FExhDeErAXbTc8MT4xXcUVV35amnzSc0D6XtuF1QN+SxYU437ufBuRan/+Lw/vekXp33 8SsY2TlNDzB1JBcepoTWGnRq4bgzze4eNWJQ3ZreMd/GSDy3zxkjO1rpk3R0Zkvg/Q3+ KxDxv/EQEfuN1QfJSaBltFBcn6dfJdILB2JqXchIz13ZpiG4nVcsvPwUjtNj38Vc1Zxb cT/i/SaW3/AB9Xd+7G7VPLGCI4lwfNQSA/Iv1QuVnVBzR/+moVxz9sw34vh3XOBltoek Peuw== X-Forwarded-Encrypted: i=1; AJvYcCWbAW7wo7YN19CjtG8MMmczutM5mMEvI+IV8wQhz/0huDOCVq3KRf3NB6eGtuj0IOUhZNhv3lF6432LHDg=@vger.kernel.org X-Gm-Message-State: AOJu0Yz4/yu9gX2v47Nwj3u82dLC70cM0bG33Qy/YcV1co335FYAr8O3 WrMe3vo/eWOpVWU19wCd1MqCuzEgkBtJyzCtlTJw78JxLgiRjssFGn5fqk/DdmWh0bI9EJAk9P3 LwLf65QGwrwKFdJF6YA== X-Google-Smtp-Source: AGHT+IHjFvugaaT39rs+Few2Au2DyR4dI8P3XYhfyJjMtCWojx1WUn1zy0tKslkpao2uUAls3VBSCjMA5LAW2EI= X-Received: from wmbez13.prod.google.com ([2002:a05:600c:83cd:b0:456:1194:a7e7]) (user=aliceryhl job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6000:4382:b0:3a4:f70e:abda with SMTP id ffacd0b85a97d-3ba50c8c664mr2477873f8f.10.1755179610295; Thu, 14 Aug 2025 06:53:30 -0700 (PDT) Date: Thu, 14 Aug 2025 13:53:15 +0000 In-Reply-To: <20250814-gpuva-mutex-in-gem-v1-0-e202cbfe6d77@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250814-gpuva-mutex-in-gem-v1-0-e202cbfe6d77@google.com> X-Developer-Key: i=aliceryhl@google.com; a=openpgp; fpr=49F6C1FAA74960F43A5B86A1EE7A392FDE96209F X-Developer-Signature: v=1; a=openpgp-sha256; l=4609; i=aliceryhl@google.com; h=from:subject:message-id; bh=Ys8zr7p5E/pxehMYheQ03XdY7hgmdwtMJ8X4xdLEP5w=; b=owEBbQKS/ZANAwAKAQRYvu5YxjlGAcsmYgBonepUMfvSgfkIDEOYXLox3MvOXoRh14yydHLxA wjofl+zw32JAjMEAAEKAB0WIQSDkqKUTWQHCvFIvbIEWL7uWMY5RgUCaJ3qVAAKCRAEWL7uWMY5 RhO0D/wIMga8/2gOGjfBWqD3J9KldnWfbEhUcZdZ4xADV9l6DG/tL6UIizHx5cuq1iI7cAAffeA mNPzj6dy8gV5M3SOWI9y1rl1KQNm2alIpwbmiy7KlW2hKD4GksUhiDsxN0NiK8z4XtIDal++j1P 3Z798SG1xAtbDL7AEHIiZX9STsE6cuv7TzAPUCTHCaYj/Ga7DJgHzNXDxm9YiM4vAh1p7i8B6sb EPoDCQb+V9I2R4UwYkwJD+rV68Qgk2xhmhvzOCQu3DxrGw1heQzNU5bd/41FlxhwbcqHEWthgop AmlCQhu0c1p9tg4q4tiyptNOTVg+fcApUWeDnbmFgJAM2iOmpxokgPitKFqNdoig85rv/VaCx/G InxlcCs4i305CnGVQ7SAyMXXAcsr0CqGYmDRUMq+407wGRNIwVgC+zMQ6VOrvNIIJtFePylIaN0 RhXZ+eRtY8cQd7b0vE1WxlEylKNEsQh9qNFr6DV5o9D7aKfXLaMEe1j8Xi/07lenbd0EFtSnfkd eTT0dnAIN9JLSTIePU4tviyIbNMYNGlpY6aYqrNJtZQzU9tPQKqmWYmExN5EELuzJxDa6qNi1ey cRUPSI/3gFuX9iOZ42gEDbB6qHhCWgR3x8eUS99kx9N5gF170kLP+tc52Jc5kwdfP2bV2FKvW7v upQapiheJ/4rk/A== X-Mailer: b4 0.14.2 Message-ID: <20250814-gpuva-mutex-in-gem-v1-2-e202cbfe6d77@google.com> Subject: [PATCH 2/2] panthor: use drm_gem_object.gpuva.lock instead of gpuva_list_lock From: Alice Ryhl To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Danilo Krummrich , Boris Brezillon , Daniel Almeida , Steven Price , Liviu Dudau , Rob Clark , Rob Herring Cc: Miguel Ojeda , Boqun Feng , Gary Guo , "=?utf-8?q?Bj=C3=B6rn_Roy_Baron?=" , Benno Lossin , Andreas Hindborg , Trevor Gross , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Alice Ryhl Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Now that drm_gem_object has a dedicated mutex for the gpuva list that is intended to be used in cases that must be fence signalling safe, use it in Panthor. Signed-off-by: Alice Ryhl Reviewed-by: Boris Brezillon --- drivers/gpu/drm/panthor/panthor_gem.c | 4 +--- drivers/gpu/drm/panthor/panthor_gem.h | 12 ------------ drivers/gpu/drm/panthor/panthor_mmu.c | 16 ++++++++-------- 3 files changed, 9 insertions(+), 23 deletions(-) diff --git a/drivers/gpu/drm/panthor/panthor_gem.c b/drivers/gpu/drm/pantho= r/panthor_gem.c index a123bc740ba1460f96882206f598b148b64dc5f6..c654a3377903cf7e067becdb481= fb14895a4eaa5 100644 --- a/drivers/gpu/drm/panthor/panthor_gem.c +++ b/drivers/gpu/drm/panthor/panthor_gem.c @@ -74,7 +74,6 @@ static void panthor_gem_free_object(struct drm_gem_object= *obj) mutex_destroy(&bo->label.lock); =20 drm_gem_free_mmap_offset(&bo->base.base); - mutex_destroy(&bo->gpuva_list_lock); drm_gem_shmem_free(&bo->base); drm_gem_object_put(vm_root_gem); } @@ -246,8 +245,7 @@ struct drm_gem_object *panthor_gem_create_object(struct= drm_device *ddev, size_t =20 obj->base.base.funcs =3D &panthor_gem_funcs; obj->base.map_wc =3D !ptdev->coherent; - mutex_init(&obj->gpuva_list_lock); - drm_gem_gpuva_set_lock(&obj->base.base, &obj->gpuva_list_lock); + drm_gem_gpuva_set_lock(&obj->base.base, &obj->base.base.gpuva.lock); mutex_init(&obj->label.lock); =20 panthor_gem_debugfs_bo_init(obj); diff --git a/drivers/gpu/drm/panthor/panthor_gem.h b/drivers/gpu/drm/pantho= r/panthor_gem.h index 8fc7215e9b900ed162e03aebeae999fda00eeb7a..80c6e24112d0bd0f1561ae4d222= 4842afb735a59 100644 --- a/drivers/gpu/drm/panthor/panthor_gem.h +++ b/drivers/gpu/drm/panthor/panthor_gem.h @@ -79,18 +79,6 @@ struct panthor_gem_object { */ struct drm_gem_object *exclusive_vm_root_gem; =20 - /** - * @gpuva_list_lock: Custom GPUVA lock. - * - * Used to protect insertion of drm_gpuva elements to the - * drm_gem_object.gpuva.list list. - * - * We can't use the GEM resv for that, because drm_gpuva_link() is - * called in a dma-signaling path, where we're not allowed to take - * resv locks. - */ - struct mutex gpuva_list_lock; - /** @flags: Combination of drm_panthor_bo_flags flags. */ u32 flags; =20 diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/pantho= r/panthor_mmu.c index 4140f697ba5af5769492d3bbb378e18aec8ade98..49ca416c7c2c5a01ab051302969= 7ba9c7a35832d 100644 --- a/drivers/gpu/drm/panthor/panthor_mmu.c +++ b/drivers/gpu/drm/panthor/panthor_mmu.c @@ -1074,9 +1074,9 @@ static void panthor_vm_bo_put(struct drm_gpuvm_bo *vm= _bo) * GEM vm_bo list. */ dma_resv_lock(drm_gpuvm_resv(vm), NULL); - mutex_lock(&bo->gpuva_list_lock); + mutex_lock(&bo->base.base.gpuva.lock); unpin =3D drm_gpuvm_bo_put(vm_bo); - mutex_unlock(&bo->gpuva_list_lock); + mutex_unlock(&bo->base.base.gpuva.lock); dma_resv_unlock(drm_gpuvm_resv(vm)); =20 /* If the vm_bo object was destroyed, release the pin reference that @@ -1249,9 +1249,9 @@ static int panthor_vm_prepare_map_op_ctx(struct panth= or_vm_op_ctx *op_ctx, * calling this function. */ dma_resv_lock(panthor_vm_resv(vm), NULL); - mutex_lock(&bo->gpuva_list_lock); + mutex_lock(&bo->base.base.gpuva.lock); op_ctx->map.vm_bo =3D drm_gpuvm_bo_obtain_prealloc(preallocated_vm_bo); - mutex_unlock(&bo->gpuva_list_lock); + mutex_unlock(&bo->base.base.gpuva.lock); dma_resv_unlock(panthor_vm_resv(vm)); =20 /* If the a vm_bo for this combination exists, it already @@ -2003,10 +2003,10 @@ static void panthor_vma_link(struct panthor_vm *vm, { struct panthor_gem_object *bo =3D to_panthor_bo(vma->base.gem.obj); =20 - mutex_lock(&bo->gpuva_list_lock); + mutex_lock(&bo->base.base.gpuva.lock); drm_gpuva_link(&vma->base, vm_bo); drm_WARN_ON(&vm->ptdev->base, drm_gpuvm_bo_put(vm_bo)); - mutex_unlock(&bo->gpuva_list_lock); + mutex_unlock(&bo->base.base.gpuva.lock); } =20 static void panthor_vma_unlink(struct panthor_vm *vm, @@ -2015,9 +2015,9 @@ static void panthor_vma_unlink(struct panthor_vm *vm, struct panthor_gem_object *bo =3D to_panthor_bo(vma->base.gem.obj); struct drm_gpuvm_bo *vm_bo =3D drm_gpuvm_bo_get(vma->base.vm_bo); =20 - mutex_lock(&bo->gpuva_list_lock); + mutex_lock(&bo->base.base.gpuva.lock); drm_gpuva_unlink(&vma->base); - mutex_unlock(&bo->gpuva_list_lock); + mutex_unlock(&bo->base.base.gpuva.lock); =20 /* drm_gpuva_unlink() release the vm_bo, but we manually retained it * when entering this function, so we can implement deferred VMA --=20 2.51.0.rc0.215.g125493bb4a-goog