From nobody Mon May 25 08:11:30 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 308783D5645 for ; Sat, 16 May 2026 11:06:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929612; cv=none; b=iKYRAUZELdSMi9RAqkj78fGjylR9Vx95iUfgNDpfKuroG7jKHayA5IKZmGi3IwI52nanG7Pd965ttsLRUeqojq5nj5Ni9PtOk+ZvIP485tQMM/Xbnh9iK9OmM7WCqb25lKGXUXYHG7Dm4/QcDYJS8YopFBGinf0vU1i1POX+w2U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929612; c=relaxed/simple; bh=Xxs8inG7yNnVnqsTeDmsro1fFz3EEPayoUW9RCB58oE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NmjOB6fw4i6+sNMATJ0Ka4Wc3JdknQMvIFKHLhcBvKmU8jVh7Wmsikzqf3OfSehNpb1nS+sEKKuI9HtdCp3gKwpiG7PeQApB0PMGXHZW0QHH87bIGpcEYin5RomSvhl7UgDRtUYjULzSVdn2dCWuKon3xVArz26ryzvUIHrRhLU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jgodxZ/j; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jgodxZ/j" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4891e5b9c1fso4883865e9.2 for ; Sat, 16 May 2026 04:06:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778929606; x=1779534406; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=lYlLPOH4yVQW/c+VIhwYHIXyYVIQiO3ciiQAaKF6Jpo=; b=jgodxZ/jxYCIXxZ0DWvuYV4eOdWbBJb/DIvMH4xAruNdnoRxmVwmJSLrEDx33sG10m 8EtR9V/DxPSuA09hOri+Q0z+0LZOV0xewWB8W4iiFd41RGWqQZUdKG0eroVi+Z2Fxnt5 KhK6r3BFhXEodPXtMeytke3mabM8zy1XjiK/Pil1aHgmT2JTL8tVEAeq+4Xxd8o6L40I 1apc1QPKFwvVgHI46ZtWK7sRT89JwiGzKlC0ALU4d4H6QDakr3QXeA6khYJ5HhlkKBsn AyGrBRhm78PmFwc1Vpi37/Jjjp44FiTuTQip3nMyRwLzFor4Vbl5vO66TEQE6rdwTs7D WlvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778929606; x=1779534406; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=lYlLPOH4yVQW/c+VIhwYHIXyYVIQiO3ciiQAaKF6Jpo=; b=KcUyzyCEO4SHtXG3kc5PVdUUGH2OX3uon12n5IgO0rj//33f3pg2MjWZYXidMk5UIw ybE/4XUMW1vXYS4BNm7umrAEbE8+KIGxUM5r5PB9UDtssJbsZVjBcGVurEjOWxWvZq9z RFw8hAUsSCMbyVFatIDZm0GWGLccYt03tk6NfqHdcJzzJWfblffsG9TCZ0Cv+ccKyQLx QjDjo/JAAJXzDyrAsGmk3c9dIMYuBYZ8OWCN4YBleeMqgiuOEm6enKgqRL4e0/9jta91 RjNYMeXzd2AyT7EROlAxaKNbP6s/cnmeiNB0sa5hOQR+gYw/OjAHEvCzE7y+ouKXHlty 0bYQ== X-Forwarded-Encrypted: i=1; AFNElJ91UU57JgYmmbqNV5m3cJcvkWkdLqTIxQdGVo+zgF6mPH08sjNZMWjyaCeMc+FOHd7WFTRjlJi/KfOQjQs=@vger.kernel.org X-Gm-Message-State: AOJu0Yz1LBbLFuoHcaj/+e5EYtFwawZAz4Xj4m+e+Txi0zX19uZf1pvX 1Yo/f+vmVc+fXRhOG48LHVB0coUvJHiaEYBB/yC0Is2sjSxbQa4KOzAC X-Gm-Gg: Acq92OGnofo9S9PQ5/bTfqw92Rkrb0CFqsxqjKNX9SiDPMdCC5Ykk9m7l2YxU6en7U0 q3Zvhp0dW+FTvy+HYUp4J/pzoc8iseL2wRFeGeAgGQ8afPBey8D0znxYKkViF2tlcNPHLFCmfSi Wu97IlN/2AG6dX0RPPLW/8BADOTsRfn/583pakGCkYHZqcOLWLh9EqlUnhx7HfWlxXWWD1Tz82T 0OaVyM0Hoj3f9qEBoZWrLdNFeEEbNRRg3uer6xcQsHivBY237BXcXl+ni8jEwVUkWA1F1Ye+XcX mrhzPbxIh+BM/bJ3UsNGeRbULMt3lwfNHZeihSy+SUPRNtl9+nHrJy9bI4xVK8v3Soi51TFd0Np lj3ot+4CwgqJR2Qqe5OcLShFBiMBPoeR0lxcREAUQR7M3RevkgyjLTJRg7Dg3xnxHlUbQtOBwn+ FILOUiWtL7Rcu3JPFDHtH2VusbQhqGZZsYjbk7jbDdLfjHH7smhEfLIkIpqeIbLH6A7xKrDui13 sx02zc= X-Received: by 2002:a05:600c:4e43:b0:48f:e230:8cad with SMTP id 5b1f17b1804b1-48fe6632135mr98825375e9.33.1778929605528; Sat, 16 May 2026 04:06:45 -0700 (PDT) Received: from [10.13.0.20] (ip87-106-117-14.pbiaas.com. [87.106.117.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feb00e5easm36399545e9.13.2026.05.16.04.06.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 04:06:45 -0700 (PDT) From: Julian Orth Date: Sat, 16 May 2026 13:06:04 +0200 Subject: [PATCH 01/12] drm/syncobj: add drm_syncobj_from_fd Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260516-jorth-syncobj-v1-1-88ede9d98a81@gmail.com> References: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> In-Reply-To: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Jonathan Corbet , Shuah Khan , Arnd Bergmann , Greg Kroah-Hartman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, linux-doc@vger.kernel.org, wayland-devel@lists.freedesktop.org, ju.orth@gmail.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778929602; l=2530; i=ju.orth@gmail.com; s=20251120; h=from:subject:message-id; bh=Xxs8inG7yNnVnqsTeDmsro1fFz3EEPayoUW9RCB58oE=; b=+8Ntp4CeTenAuSVPrMlJyQQ3aZauaK6+QLTjIL8uRDHdQOin3LlpX/RlNsbP4/cmzUNFxQZTX jdMvakZq1vTDS+YTjld0PyK5yiRyPU+nmJ9Cooj8Tm+KOPLpLdSvCEH X-Developer-Key: i=ju.orth@gmail.com; a=ed25519; pk=uM2SS4lelkuIoYHc7v9N9bgBZ3hS632zJS2xjRJLPLI= Given a syncobj FD, returns the underlying drm_syncobj. Signed-off-by: Julian Orth --- drivers/gpu/drm/drm_syncobj.c | 37 +++++++++++++++++++++++++++---------- include/drm/drm_syncobj.h | 1 + 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 8d9fd1917c6e..d992aa082ace 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -684,6 +684,31 @@ int drm_syncobj_get_fd(struct drm_syncobj *syncobj, in= t *p_fd) } EXPORT_SYMBOL(drm_syncobj_get_fd); =20 +/** + * drm_syncobj_from_fd - lookup and reference a syncobj. + * @fd: syncobj file descriptor + * + * Returns a reference to the syncobj pointed to by @fd or NULL. The + * reference must be released by calling drm_syncobj_put(). + */ +struct drm_syncobj *drm_syncobj_from_fd(int fd) +{ + struct drm_syncobj *syncobj; + + CLASS(fd, f)(fd); + + if (fd_empty(f)) + return NULL; + + if (fd_file(f)->f_op !=3D &drm_syncobj_file_fops) + return NULL; + + syncobj =3D fd_file(f)->private_data; + drm_syncobj_get(syncobj); + return syncobj; +} +EXPORT_SYMBOL(drm_syncobj_from_fd); + static int drm_syncobj_handle_to_fd(struct drm_file *file_private, u32 handle, int *p_fd) { @@ -701,20 +726,12 @@ static int drm_syncobj_handle_to_fd(struct drm_file *= file_private, static int drm_syncobj_fd_to_handle(struct drm_file *file_private, int fd, u32 *handle) { - struct drm_syncobj *syncobj; - CLASS(fd, f)(fd); + struct drm_syncobj *syncobj =3D drm_syncobj_from_fd(fd); int ret; =20 - if (fd_empty(f)) - return -EINVAL; - - if (fd_file(f)->f_op !=3D &drm_syncobj_file_fops) + if (!syncobj) return -EINVAL; =20 - /* take a reference to put in the xarray */ - syncobj =3D fd_file(f)->private_data; - drm_syncobj_get(syncobj); - ret =3D xa_alloc(&file_private->syncobj_xa, handle, syncobj, xa_limit_32b, GFP_KERNEL); if (ret) diff --git a/include/drm/drm_syncobj.h b/include/drm/drm_syncobj.h index b40052132e52..5da9988834b5 100644 --- a/include/drm/drm_syncobj.h +++ b/include/drm/drm_syncobj.h @@ -117,6 +117,7 @@ drm_syncobj_fence_get(struct drm_syncobj *syncobj) =20 struct drm_syncobj *drm_syncobj_find(struct drm_file *file_private, u32 handle); +struct drm_syncobj *drm_syncobj_from_fd(int fd); void drm_syncobj_add_point(struct drm_syncobj *syncobj, struct dma_fence_chain *chain, struct dma_fence *fence, --=20 2.54.0 From nobody Mon May 25 08:11:30 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (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 7F8C13A383B for ; Sat, 16 May 2026 11:06:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929613; cv=none; b=Ot99K3WTOhf1IUn6MDqaCIj+z1tzTseucqaVrgmRKzNn1nNrBHypHQvcPaulwuZL041SAC9xUAv1wh30Bz12m75liElHC8eB6Xapp97SzFvR61umM29RhP7bHhJpcRm9PKVq07SAvhHAd9W+pjCmfwJo0MsyPOTcUq06JniceWY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929613; c=relaxed/simple; bh=a9lG2nbpvJpNBTclhiNFI8DwaJzMN3KTgSfTJHOAb6U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fp0PSknq8RABE+VlJgjWSm4tJXsMUJGK3fuiN6ddeHTKPCJcXxe8DkSS+E+68MLDHgXmJ5B89v1utGan0NXhRl8QF01XZUs8xe5f2y7wk1BeS9cZLxC9lQoYJulXj7tnV50H2Y7NMF2MnamKs7vI7u7GeL0/89nXv0b7B5Nccx8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IRzi+gYJ; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IRzi+gYJ" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-488ad135063so4471595e9.0 for ; Sat, 16 May 2026 04:06:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778929607; x=1779534407; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=DZXH6WE6NwIFHcNfcXNqTsh8pXC1vp/igAOE1DEZDoU=; b=IRzi+gYJyMO5o2NZUM+RehkR/HJ08f344RqnHLVYG2/9Iz3cy5ibqu8aF5zN/wgWEP PF6zyLu/DZ+hy2uPZwNr+mhvQSCakvW3MeNnS1qcsC4Snxjnk4bB7O5E8qZrWpTXUQxF 8R7c26ac/Kt89KnKOcUMsxc6CBnw995C032mwIodYOB0v9/KNTnldRKdsuTTuBCwUcxD Poe6KvBK72ZF+9VdOsTTiookNK34fB6PTa7dWT1+gtGKhddXpavyA/OXY2NxWiG4Yo99 CzOrI5keDG7nP6tT+DMT0vNOuKAN9xwyTpvYrEgDJrUFlNxb3u1q9l7vNFcSSlxYZZyK Yk5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778929607; x=1779534407; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=DZXH6WE6NwIFHcNfcXNqTsh8pXC1vp/igAOE1DEZDoU=; b=Dwm9AQGCpVYo130371gmeShmudYO5As3rrtyNtXDFLIV5xSZ1m3bgHvn07G0hSPO0u 0xCMrBdP30Yy/k+rTaTDDGzCGVMsbD7YwIhTBak/OpSWq6rR6kniUtPYetcwitJ+8xJS qWL3geITL2p7G5+u6/xV4+4+oF/KlJzVHhIlcjXzhWWLmY35mw+KvU22vqt+B6GK5dlh gEggx/Gw5I0nCxywoP7SaQwOf/sF/aU+QvtVYA7F/jrERz2e700MwW2P5ZAXWiGhY9O6 w0T0v0xb835NN22DWNWbByYmE38FlG31syG6IqJnVAidMZGA1wrLhy1lfJtK67uq9GjG dlpg== X-Forwarded-Encrypted: i=1; AFNElJ8b76HrxZC372ASAYRdeJftzq+5+3Ne+MVsJKD7yeMQoDxJBN0d1VeqiysBwXDK5q+4fZWuEIkLNLlk3yA=@vger.kernel.org X-Gm-Message-State: AOJu0YzBkRUYpme8EtJ9EE8ibsOG9Jv+fg8x6IRuVup/upq6I0qQ2YJy X8DPZiEEEGUx5XLVF3NyCzlFjJ5TtrkRnzxG6UZejgarOiNmj4r/H7cr X-Gm-Gg: Acq92OFRswkTTFzodetLcfx1yKVJxbPbXpJtK2GgliT4M/xqNm71CuM3Ce/2j7VM6r4 RqSvF9lRf9AHjvICllyE1rqcHOR2W18vozDsnK140e7h7N2rrcTgNV3pssYHWEhHJzwpSljmaCG UjRrTLQ5KwO50rMNppD1w8BqUjcPyeQCfofP60H7qUj157Dx40ATOSXBvh87fEEVUGAHpN81fOG SAxms4pR1jMfOM9N9baMgdg5H7vPJTxTycNgknpNY6KIk1Efi7QFCXpDXVWliR4i+URVaokmHou Pgm/Ml3LurUCLIi1gYOlVELh6Elvd9azGkIzYsvCDM9eZAG1Pd7/PU5ZaHPeknyX/G4hHF0XG7r zzyEkbjFxbPL5P5JvqTWZl7BhJdOzTfkGynWrAqXBFh0vxJoUAdyQmGFH+6sMT5ijoD0iWqlw5D 3qxUwhKCIME+cuVNsmStH3l+MPN0PI/cy8i5i5/i7WoQ30G01n7sM6o9lai1BwCxCrD+E69gh7p FL6olBRYGFyEB98Xw== X-Received: by 2002:a05:600c:4692:b0:48f:d835:e104 with SMTP id 5b1f17b1804b1-48fe6325391mr108240075e9.16.1778929606890; Sat, 16 May 2026 04:06:46 -0700 (PDT) Received: from [10.13.0.20] (ip87-106-117-14.pbiaas.com. [87.106.117.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feb00e5easm36399545e9.13.2026.05.16.04.06.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 04:06:46 -0700 (PDT) From: Julian Orth Date: Sat, 16 May 2026 13:06:05 +0200 Subject: [PATCH 02/12] drm/syncobj: add drm_syncobj_fence_lookup Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260516-jorth-syncobj-v1-2-88ede9d98a81@gmail.com> References: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> In-Reply-To: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Jonathan Corbet , Shuah Khan , Arnd Bergmann , Greg Kroah-Hartman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, linux-doc@vger.kernel.org, wayland-devel@lists.freedesktop.org, ju.orth@gmail.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778929602; l=3464; i=ju.orth@gmail.com; s=20251120; h=from:subject:message-id; bh=a9lG2nbpvJpNBTclhiNFI8DwaJzMN3KTgSfTJHOAb6U=; b=07+mwlPAmGj35N8dMENXh6PCoPSv2aMD6VxpSxRkS+KDubuwjlGqM09oILAMtWVMbSAEmf3Bp UZUi9wH3NLuA1L+LQNH3MdycdnESgn7NfT46epz4KcBbp+qwZvxkBy9 X-Developer-Key: i=ju.orth@gmail.com; a=ed25519; pk=uM2SS4lelkuIoYHc7v9N9bgBZ3hS632zJS2xjRJLPLI= This makes the logic from drm_syncobj_find_fence available to callers that have a drm_syncobj instead of a drm_file/handle pair. Signed-off-by: Julian Orth --- drivers/gpu/drm/drm_syncobj.c | 34 ++++++++++++++++++++++++++++------ include/drm/drm_syncobj.h | 2 ++ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index d992aa082ace..8df438fe0807 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -427,7 +427,7 @@ static int drm_syncobj_assign_null_handle(struct drm_sy= ncobj *syncobj) * @fence: out parameter for the fence * * This is just a convenience function that combines drm_syncobj_find() and - * drm_syncobj_fence_get(). + * drm_syncobj_fence_lookup(). * * Returns 0 on success or a negative error value on failure. On success @= fence * contains a reference to the fence, which must be released by calling @@ -438,8 +438,6 @@ int drm_syncobj_find_fence(struct drm_file *file_privat= e, struct dma_fence **fence) { struct drm_syncobj *syncobj =3D drm_syncobj_find(file_private, handle); - struct syncobj_wait_entry wait; - u64 timeout =3D nsecs_to_jiffies64(DRM_SYNCOBJ_WAIT_FOR_SUBMIT_TIMEOUT); int ret; =20 if (flags & ~DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT) @@ -448,6 +446,32 @@ int drm_syncobj_find_fence(struct drm_file *file_priva= te, if (!syncobj) return -ENOENT; =20 + ret =3D drm_syncobj_fence_lookup(syncobj, point, flags, fence); + + drm_syncobj_put(syncobj); + + return ret; +} +EXPORT_SYMBOL(drm_syncobj_find_fence); + +/** + * drm_syncobj_fence_lookup - lookup and reference the fence in a sync obj= ect + * @syncobj: sync object to lookup. + * @point: timeline point + * @flags: DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT or not + * @fence: out parameter for the fence + * + * Returns 0 on success or a negative error value on failure. On success @= fence + * contains a reference to the fence, which must be released by calling + * dma_fence_put(). + */ +int drm_syncobj_fence_lookup(struct drm_syncobj *syncobj, u64 point, + u64 flags, struct dma_fence **fence) +{ + struct syncobj_wait_entry wait; + u64 timeout =3D nsecs_to_jiffies64(DRM_SYNCOBJ_WAIT_FOR_SUBMIT_TIMEOUT); + int ret; + /* Waiting for userspace with locks help is illegal cause that can * trivial deadlock with page faults for example. Make lockdep complain * about it early on. @@ -511,11 +535,9 @@ int drm_syncobj_find_fence(struct drm_file *file_priva= te, drm_syncobj_remove_wait(syncobj, &wait); =20 out: - drm_syncobj_put(syncobj); - return ret; } -EXPORT_SYMBOL(drm_syncobj_find_fence); +EXPORT_SYMBOL(drm_syncobj_fence_lookup); =20 /** * drm_syncobj_free - free a sync object. diff --git a/include/drm/drm_syncobj.h b/include/drm/drm_syncobj.h index 5da9988834b5..580a967ae364 100644 --- a/include/drm/drm_syncobj.h +++ b/include/drm/drm_syncobj.h @@ -124,6 +124,8 @@ void drm_syncobj_add_point(struct drm_syncobj *syncobj, uint64_t point); void drm_syncobj_replace_fence(struct drm_syncobj *syncobj, struct dma_fence *fence); +int drm_syncobj_fence_lookup(struct drm_syncobj *syncobj, u64 point, + u64 flags, struct dma_fence **fence); int drm_syncobj_find_fence(struct drm_file *file_private, u32 handle, u64 point, u64 flags, struct dma_fence **fence); --=20 2.54.0 From nobody Mon May 25 08:11:30 2026 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (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 D08F939A061 for ; Sat, 16 May 2026 11:06:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929613; cv=none; b=FiPdB0cyT6CcTXs+3vg1ue8T4vj5XxsgX99ZzBPaYfBMydkAJOFgDjdIml9cTlKYvlfzInkPW1gBrFN1m2nxE29Na4mZCd3Rf+V5Dbc53Becp6JWHtkD3VKJc69uc8iY+MCpKzRRKfk4X8Sq13dPDYx0bGVqNs+w2c3WFLyLFGo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929613; c=relaxed/simple; bh=NwwauNPJiO1PfXNWR0Tt78KBCxqLRi4CSj0dLIMDu4c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cjV5bbjzf2RFMYRh6cy7LVKXTNr1e8jKBfRALXpM58zpraX8/hbKR6MUO1ngpUWt+9sMTJS6w6eMjDRI0fAxQFn1n0RepeZoBTo1BYPFbSdO5aaPFb6/qxAjBEDOmy9zWT4DZhsfkFfRVpI8e6Ucb9klySYJkMg8CJQpIF+Yq1Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=LfOoZtxt; arc=none smtp.client-ip=209.85.128.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="LfOoZtxt" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-488a88aeec9so7411225e9.2 for ; Sat, 16 May 2026 04:06:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778929608; x=1779534408; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=iLr2U6KkG2Uu+VOL8E6/tXdIBWCkFd/7X9q/HfFlgP8=; b=LfOoZtxtPM/FPmrOmUdQgwCcwUTSPJN9NDqbq45pssSl7LLRPTv9kBv+20UbiURiDu fx5oJJ6GIpbkVURbsGj3w5R9GzGFw9wSA19/OSEcpBneWzQSbovrGCkWTv498DmQqXRT bZ8xwZ3QCFB5iNOzklGUq0pIDQdSaycyvXcRis4AEYKGLij/1lGkuI15xkiHv5VHx0bV JHCS6y7cOnvhjSIahri3Qd6RKa5rQGBmhCGwfKiBdSPKTtb47WjrbNLn+fMDUlrwYOJ4 pSUzpvJ1/zop8wtXghhba1YBA2uCALUQR3lLDzy4qE3S+XbYvF9PeC9NSmLyvq0Ks/QK cMYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778929608; x=1779534408; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=iLr2U6KkG2Uu+VOL8E6/tXdIBWCkFd/7X9q/HfFlgP8=; b=i9EnMTd1Rv6PomNMK4fEMhEYzs5YUBX9WxIbtycMNJtYEEONqe6AL+IliH1LMB4Vn9 kWAWc3j0h934J9xvkL3p1htQ+UGt7eVpak8FfpdYfJtRCmBIcrzW72GZvjAo7e+TNhid jJJIPG/B9JAiV4yUoiHprNs3t40JQX+Fg2yl7RnxkdUZgepjA4ymzeN6igrZpPfRA+fX 7W/WAcUyG5J8kMb7bZ8/GfsEVt2F1r9Gf5dl887oNxfqCJXexKMNfcahNoF9Hr97YH8X caH0qh56fwYHH2Gb2xQkMmHTwmTNGY+BGKD8e2rPaBTztOPCLUES+FLqR6QkXOyVT9tv xYCA== X-Forwarded-Encrypted: i=1; AFNElJ/KKCmyI6q7MUw0bvzdXFyQaGJjxv2BQ/GDZ9ghlu0ye/vWhtvZt74PNi5Uh6W1pSzYaGJlPqNzzqGwBpY=@vger.kernel.org X-Gm-Message-State: AOJu0YzceEvuyTzpVvV7LF9dOrrG+Tjubu736Geq064l2E3gy51pWKAa RiaLJqWK18uRuzTK/F66LS1FRNoBsN9bZL+0lV5MQ0VC6lIUpdGsZPZn X-Gm-Gg: Acq92OGwBYgsBsM5AHDiB/+eyh+WBSNsr15Mpwk1woFHrEmfYhM8ep8W2/2d/kwgzTp IK8HxyDpdzmKrBi5ltNhSPnz5ZCp2qDV9uNUnIgD5c8wOTkbBZBIzWdIKp/fByeMgFM0Iuns6vj VkfWmqLxpcbuRjBm2FxXUUwvjWCY0H4uozpw53jCrRcwUG9+O/Gcra92BIh1jXUyyr18q4/+JNL nN9sCpNgMp79R4qXlPHFQefBDdESry2kQQZ1PrVQAbpfgteFClAdE0uuQrukP2/DZSTgdrhHHXb 92TDdFoMYVBefAWZZvCG0k0twdPDWp0CWxX1HWIhxbR4o8QOmRupLP/9XOWzixRE3XMM8dRw7pN ees+uOFSl7A/Yc3+efMRkLqD08D9yIH2FLo5H7PJZBMUNTSsN6D3JqfDxeHBrr1Hh3kSktaKJbY exN/D5khHwFcspaubxPle0y6gmEcEC8VhvFaza6I77haxNRAZOaOcVrEB3ShrgOn9jw6yx+jVaM BkrTTQ= X-Received: by 2002:a05:600c:13ca:b0:48f:eb8b:9988 with SMTP id 5b1f17b1804b1-48feb8b9a84mr53458715e9.23.1778929608240; Sat, 16 May 2026 04:06:48 -0700 (PDT) Received: from [10.13.0.20] (ip87-106-117-14.pbiaas.com. [87.106.117.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feb00e5easm36399545e9.13.2026.05.16.04.06.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 04:06:47 -0700 (PDT) From: Julian Orth Date: Sat, 16 May 2026 13:06:06 +0200 Subject: [PATCH 03/12] drm/syncobj: make drm_syncobj_array_wait_timeout public Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260516-jorth-syncobj-v1-3-88ede9d98a81@gmail.com> References: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> In-Reply-To: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Jonathan Corbet , Shuah Khan , Arnd Bergmann , Greg Kroah-Hartman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, linux-doc@vger.kernel.org, wayland-devel@lists.freedesktop.org, ju.orth@gmail.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778929602; l=2220; i=ju.orth@gmail.com; s=20251120; h=from:subject:message-id; bh=NwwauNPJiO1PfXNWR0Tt78KBCxqLRi4CSj0dLIMDu4c=; b=L70W+WfFJyxFbr6yV3GcY0+dLZ8/RrrjQI0perIlwa2ryxcj58Yc3uwASbkpuihDpL+gB9Dvu iClDpDWu5qLAvShl4cuWM8lV4UGkRD1RQm8k8xpOhVcZK9uExSKR7MT X-Developer-Key: i=ju.orth@gmail.com; a=ed25519; pk=uM2SS4lelkuIoYHc7v9N9bgBZ3hS632zJS2xjRJLPLI= For use by the upcoming misc/syncobj module. Signed-off-by: Julian Orth --- drivers/gpu/drm/drm_syncobj.c | 15 ++++++++------- include/drm/drm_syncobj.h | 5 +++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 8df438fe0807..648afd1f4fdd 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -1069,13 +1069,13 @@ static void syncobj_wait_syncobj_func(struct drm_sy= ncobj *syncobj, list_del_init(&wait->node); } =20 -static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syn= cobjs, - void __user *user_points, - uint32_t count, - uint32_t flags, - signed long timeout, - uint32_t *idx, - ktime_t *deadline) +signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs, + void __user *user_points, + uint32_t count, + uint32_t flags, + signed long timeout, + uint32_t *idx, + ktime_t *deadline) { struct syncobj_wait_entry *entries; struct dma_fence *fence; @@ -1229,6 +1229,7 @@ static signed long drm_syncobj_array_wait_timeout(str= uct drm_syncobj **syncobjs, =20 return timeout; } +EXPORT_SYMBOL(drm_syncobj_array_wait_timeout); =20 /** * drm_timeout_abs_to_jiffies - calculate jiffies timeout from absolute va= lue diff --git a/include/drm/drm_syncobj.h b/include/drm/drm_syncobj.h index 580a967ae364..7677fd995be0 100644 --- a/include/drm/drm_syncobj.h +++ b/include/drm/drm_syncobj.h @@ -129,6 +129,11 @@ int drm_syncobj_fence_lookup(struct drm_syncobj *synco= bj, u64 point, int drm_syncobj_find_fence(struct drm_file *file_private, u32 handle, u64 point, u64 flags, struct dma_fence **fence); +signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs, + void __user *user_points, + uint32_t count, uint32_t flags, + signed long timeout, uint32_t *idx, + ktime_t *deadline); void drm_syncobj_free(struct kref *kref); int drm_syncobj_create(struct drm_syncobj **out_syncobj, uint32_t flags, struct dma_fence *fence); --=20 2.54.0 From nobody Mon May 25 08:11:30 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 0C6143D411A for ; Sat, 16 May 2026 11:06:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929616; cv=none; b=WMLrxZfs5pnBoSOwAqiLEQLITFJSqUx77weKdO5xO9vgFk2NWP7pJqHqTiuXy8+i8aXwXS9VEhTCN44mcl/OXc1V+mMgVeofU15DFR/e2N2af4susQ/zV/DwCXDDVvtfnOPGlITgOeULRvO/3hVg5Ayh+qU2OLRxnQcNZLcojHM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929616; c=relaxed/simple; bh=E8KFRmAvFwSHl3US+f+37kFcs+Zh1TZlm/HDUacqWIY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Neva29CkYIlozP4n5NI3+s6C44VuBEfzrDkccZ3Am9D1sVSJghD0WnJYhWyBa2q4/171Vb4DX35ll3F2waee/bWQxlQ6/JBQ6InlXVLYkuGOo7RmyQ47bRuZdploCOV0u5Fd4HXLPX3WYnogTcK6prlOCxGEBpBIH84W8Da232o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=VZtMW+jR; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VZtMW+jR" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4896c22fcbaso5344735e9.0 for ; Sat, 16 May 2026 04:06:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778929609; x=1779534409; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=3zYhR3PGwQ+MjR6b0xjhfz0ypo71/qwlvJbXPw+XJwc=; b=VZtMW+jRNzuN1xqRi/9dfl5+w4l7zTSYTKBbfiIQl3FZnvejChNyUYJd+6OdbNUb+3 fWmslfgrvb3Imuu1td0P/wKWStPFvx6AFnJgkBwdY51V1D2J2pbUz5drHEkhHVlwUN+3 YEvJYHfqGAdppErKk4TyfH00IgU3m/ilSrLAvymaEjJJiXXJBDDp+2c3tU1tdImp1iW/ UU3vwiRUm22ZsWPEqyg3Z/wEjEg8VQpQIilsJyZER6CJsoq+W/qKMHAhpvs6XSVm1voa os7NbDePxXlkeTINvc0Y/s/R03+CgBgVDksiTYxSOOhLK6Z1C4nlGd+4ai/MX3mb0m6c YH9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778929609; x=1779534409; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=3zYhR3PGwQ+MjR6b0xjhfz0ypo71/qwlvJbXPw+XJwc=; b=eKCR2rQ9aSd4VCGIecoX3tGENO12E+PRKoD0OVFXk5yYMIjtML06OSEw9WIz2b4Bk2 E9l129jZ9GI0yqvDBrz9CSU90yAxlk5g1pVgQDQ/WF0qo4WwSqXo1rMBsYj165kLs4Am QC32oL/RLQgYHKuGeQapfX7sRM7zz/ohlBDouneU2IiC0mnhiwGzVpg8sKg3dcvqCMBT VLK1TqGLYnqiboj5O1fgPKZf6gL2tOODgFl7R19tmKudjD00N3qPK2nHerstcd31WzqJ bsVmiFwProqKvjB4rUyvsV6c/fXvi4AG2rctRoOGyDRKGiPhWtfMvsEi3zrfKTSKw032 7jqg== X-Forwarded-Encrypted: i=1; AFNElJ8+snEdI9J9+vLyBH66syHBgh+782RRV0Pu4LOJeZc6gJhaZqR9bWddnP3qDX040OpypAwgxZGQZGUQazs=@vger.kernel.org X-Gm-Message-State: AOJu0YzJw6DtropU664Xa0P9VTsU2cvxdPgbQjZNYKje5MpJS4QTOWpD 8I2TTRq2+cnb+hv1hFREPR+q2nzvOjvxpLRjZZ1LstkVTH+llKTJAEiy X-Gm-Gg: Acq92OEjzBxw3+AlnGHVCJCPYjLz9gNbNSUuEsleXH5dbnsTmCQtKY+4qmX/79R2pkV lvci1sKGlkOMkKaIacFn69zP2PzuPHjKZRRdG4lA3FWJfjeEgrv+fDeO9a2feIbunEBm46UC3pE Ba/MZ8/LCMmZyFDUxz8bsI/B5qanFe4cmmCDzpvpTkn1rzlspgc75Wf9XQY/qkjtozJ9YYxHEJk AsryhDpjnKagveKNAYk0cQ4+I2Ip6L35M9Eua5ypU9gJ1JORMvZXXO9/I12/xwFncsy7eYRbzcs yTSp8K1AtjtJNgYjZiExZedcAxSXY3XU2sowZL7vfSOooA2uDlB7Hbs49GA0eGqiWtF0dRk1z60 DTyjl9zvk3Sqmx81iY3qKjq+mAG7oaGm5GlSUb9xnCixXx3ZwoalswCu9nsVfVygJkrGW/VX7XZ iVuVZCgEuypaTGoNZFdfmWqEtACkQxLhYGzE8hZo4Z6tV6pDCBbK+Wcbm8eA1Urgs4ra00rrTP3 ZIgrQA= X-Received: by 2002:a05:600c:4e47:b0:488:a977:8de with SMTP id 5b1f17b1804b1-48fe61ed3b3mr113720245e9.16.1778929609523; Sat, 16 May 2026 04:06:49 -0700 (PDT) Received: from [10.13.0.20] (ip87-106-117-14.pbiaas.com. [87.106.117.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feb00e5easm36399545e9.13.2026.05.16.04.06.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 04:06:49 -0700 (PDT) From: Julian Orth Date: Sat, 16 May 2026 13:06:07 +0200 Subject: [PATCH 04/12] drm/syncobj: add drm_syncobj_register_eventfd Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260516-jorth-syncobj-v1-4-88ede9d98a81@gmail.com> References: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> In-Reply-To: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Jonathan Corbet , Shuah Khan , Arnd Bergmann , Greg Kroah-Hartman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, linux-doc@vger.kernel.org, wayland-devel@lists.freedesktop.org, ju.orth@gmail.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778929602; l=3158; i=ju.orth@gmail.com; s=20251120; h=from:subject:message-id; bh=E8KFRmAvFwSHl3US+f+37kFcs+Zh1TZlm/HDUacqWIY=; b=bWpzKA+XEX3J2UNOYwj8QCncPGUIt1EclXXwvNyI/mmaQH21mYNpvhjIrkkFE7rAGXoJvJuvr uSj76PriSooBBU33M65Bq/uYq41w4a4tjHiYN/O/IE29Xyc6bLuV1Yr X-Developer-Key: i=ju.orth@gmail.com; a=ed25519; pk=uM2SS4lelkuIoYHc7v9N9bgBZ3hS632zJS2xjRJLPLI= This makes the logic from drm_syncobj_eventfd_ioctl available to callers that already have a drm_syncobj. Signed-off-by: Julian Orth --- drivers/gpu/drm/drm_syncobj.c | 37 ++++++++++++++++++++++++++++++------- include/drm/drm_syncobj.h | 2 ++ 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 648afd1f4fdd..3e8fb7e0cace 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -1502,8 +1502,6 @@ drm_syncobj_eventfd_ioctl(struct drm_device *dev, voi= d *data, { struct drm_syncobj_eventfd *args =3D data; struct drm_syncobj *syncobj; - struct eventfd_ctx *ev_fd_ctx; - struct syncobj_eventfd_entry *entry; int ret; =20 if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) @@ -1519,7 +1517,33 @@ drm_syncobj_eventfd_ioctl(struct drm_device *dev, vo= id *data, if (!syncobj) return -ENOENT; =20 - ev_fd_ctx =3D eventfd_ctx_fdget(args->fd); + ret =3D drm_syncobj_register_eventfd(syncobj, args->fd, args->point, args= ->flags); + + drm_syncobj_put(syncobj); + + return ret; +} + +/** + * drm_syncobj_register_eventfd - register an eventfd for a syncobj + * @syncobj: sync object to add the eventfd to + * @ev_fd: eventfd file descriptor to signal + * @point: timeline point to wait for + * @flags: DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE or 0 + * + * Registers an eventfd that will be signaled when the point is + * signaled or available. + * + * Returns 0 on success or a negative error value on failure. + */ +int drm_syncobj_register_eventfd(struct drm_syncobj *syncobj, + int ev_fd, u64 point, u32 flags) +{ + struct eventfd_ctx *ev_fd_ctx; + struct syncobj_eventfd_entry *entry; + int ret; + + ev_fd_ctx =3D eventfd_ctx_fdget(ev_fd); if (IS_ERR(ev_fd_ctx)) { ret =3D PTR_ERR(ev_fd_ctx); goto err_fdget; @@ -1532,20 +1556,19 @@ drm_syncobj_eventfd_ioctl(struct drm_device *dev, v= oid *data, } entry->syncobj =3D syncobj; entry->ev_fd_ctx =3D ev_fd_ctx; - entry->point =3D args->point; - entry->flags =3D args->flags; + entry->point =3D point; + entry->flags =3D flags; =20 drm_syncobj_add_eventfd(syncobj, entry); - drm_syncobj_put(syncobj); =20 return 0; =20 err_kzalloc: eventfd_ctx_put(ev_fd_ctx); err_fdget: - drm_syncobj_put(syncobj); return ret; } +EXPORT_SYMBOL(drm_syncobj_register_eventfd); =20 int drm_syncobj_reset_ioctl(struct drm_device *dev, void *data, diff --git a/include/drm/drm_syncobj.h b/include/drm/drm_syncobj.h index 7677fd995be0..85e7ca7f7896 100644 --- a/include/drm/drm_syncobj.h +++ b/include/drm/drm_syncobj.h @@ -134,6 +134,8 @@ signed long drm_syncobj_array_wait_timeout(struct drm_s= yncobj **syncobjs, uint32_t count, uint32_t flags, signed long timeout, uint32_t *idx, ktime_t *deadline); +int drm_syncobj_register_eventfd(struct drm_syncobj *syncobj, + int ev_fd, u64 point, u32 flags); void drm_syncobj_free(struct kref *kref); int drm_syncobj_create(struct drm_syncobj **out_syncobj, uint32_t flags, struct dma_fence *fence); --=20 2.54.0 From nobody Mon May 25 08:11:30 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 98F143D5656 for ; Sat, 16 May 2026 11:06:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929617; cv=none; b=NG5PrDqYbYS57cFrS8CDKjl6Q4zGftbjfPATyByEi8mNjP+DofndHzeOVaICuB5aJxaYXkBdPYVS6zwiId1ZXu9tls8GxcOA95ybKAMreGGwUzepRQDfBgONM+k5xfbf+sk0v5bPPpc+Pj72UU41TZzDh0m9wXYIOA0D1qTSlD8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929617; c=relaxed/simple; bh=Mb8lX2KhvsBJbZLZbGjpbAUq1f7hQxcuF5oQ0+pOVFk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p8owPEhu0VFjJHorBG5fyc2qNBZFWHi67eTeJoBrIp+Bkpyj7D0OkZcPIxq9HdvVs0ouK+e9WHdUucdJvKMGRMq26Efm1xvwvd3L+kiqgoVjjay0Pa6Kv7772vbzRl9VpFI8pbTDNZKHEcHE/3nIqAVJhJ96MFyA6mB2m8jsReI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=gjCmLvR7; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gjCmLvR7" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4891e5b9c1fso4884255e9.2 for ; Sat, 16 May 2026 04:06:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778929611; x=1779534411; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=W2kX0D85vKgrMTrfAaShnpioKYHS8IrhnFr9X3CmECA=; b=gjCmLvR7NUvdNlhUexikzVfYE5dvmDWQ8MDD2okU6SlPW/Y9rIulFIsqWjS20DP0ZP s6/R69DL0ezBfveFZKEXeOF30ZMpVqKC/mBKefNoHRn9DoFNxSqJ4VBTzMeN1b5ryv2T T5NH8EOigk1mpCKOMaHgwpUU1rswUSqv0yvaf2LwHqUr6CPA96QvaygkRvaXsSMzCn3d cElDHEISD5xaEEONpV2PfjiOHkrByKSMQasG9r/QsP9E6wH8LOSoq/Bl2R0p1Fa4jFH1 P+WlbAfYfC/WVDwS40DM4dUTNa/uJerXBsCDIt7LmagBi0u5A8k5o5rM6ZPwmsR639z5 apOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778929611; x=1779534411; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=W2kX0D85vKgrMTrfAaShnpioKYHS8IrhnFr9X3CmECA=; b=USl0wpnQo/LnZa7/cjJzzMrZX7XP8+KsIBrDfhkZJyWqtHvsR4+dlbw2Ik5YY4p9bE BLyJFlG/pHU2mMxtmj6IreuMvuBnL/tm2cYAx4Um6SVao+FNMStaiIsfn87py4RtJPBV FgVngYN8OcV0XrtuDNg8rXK30IfOfLk+CL59dI6EFu23Olf71cS8PQaWm3E8WnEDycKw CQjVtJrtXDOqalacmCwsOMTNjvdql/E/i8QWcoDbe6nisESvemxr7yv08chMZpdyxO6N FkVX+C3axVAy0PQOBnke4CzKdv/r6Qlcwc8iPwhK9dVJYjBQcIPUvKcbrcDfPEwxP4LS QzFw== X-Forwarded-Encrypted: i=1; AFNElJ/Var4IzT6nFBEOQxIU0bfVc0ETfF7wYq57cy51SUczk26EDpykVKErxINTu2KnaFYG43vXtIadkQ4qAh8=@vger.kernel.org X-Gm-Message-State: AOJu0YxKc3ZTpu1FC0S3UjVlXZt6QShM90qAXUeDizqaBTdPxDiuOjX6 JQSpAbZHGGHsQyAstnzmXmbnISf5OOVrDYBHnM2wn6ODJ7wD44eWNnUM X-Gm-Gg: Acq92OH3AqOJhsm0uHtGniJqiyjeU2YKYkB8eeiCnqy5CoHPRDqhYX+EznlryKm9yVe F+Ac3+/eFL+17w6LO2RDRuN2FwiZcooZFmrxAYxX5e7kUw3hO62lytHrxGKAQvgFQ7mebj1ssp0 ATTaMYk7vgAjz14jqUHLp+faZQMuckhOvam1bknlzzWbZY+FHhSuZdvML6YOwUn+GzQX+B62CLa UMQbgURS7ezDASZ2Jc7sn/OLabEfVl/mOQhpSw5L6Asva/S8tKdCKpML+ctsZr4qg8gMqZLisnQ aWRMH8r14JiMZKikLpss166jVFY6+XW6EM504X0xjz08HtpBLs9+mKX77lDJRekKggf0Rb16Ut5 2YL8OLF4s43cRkcBKTaDb69F+rIQPnosnNI0PtldU2UTlVKcTBAzydyams35BDFwEqylMnrmW1f ARSN1VJBi5jUuKeBoRljV+eAmMGGwX3oxAtWXYczj2VuxTuNem8Dr/ZhOYvCG977WxuFA/v+n9i Vnlt7LUu2XzakoCQw== X-Received: by 2002:a05:600c:1512:b0:48f:e26a:1744 with SMTP id 5b1f17b1804b1-48fe60ecd67mr61949075e9.9.1778929610832; Sat, 16 May 2026 04:06:50 -0700 (PDT) Received: from [10.13.0.20] (ip87-106-117-14.pbiaas.com. [87.106.117.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feb00e5easm36399545e9.13.2026.05.16.04.06.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 04:06:50 -0700 (PDT) From: Julian Orth Date: Sat, 16 May 2026 13:06:08 +0200 Subject: [PATCH 05/12] drm/syncobj: have transfer functions accept drm_syncobj directly Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260516-jorth-syncobj-v1-5-88ede9d98a81@gmail.com> References: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> In-Reply-To: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Jonathan Corbet , Shuah Khan , Arnd Bergmann , Greg Kroah-Hartman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, linux-doc@vger.kernel.org, wayland-devel@lists.freedesktop.org, ju.orth@gmail.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778929602; l=3982; i=ju.orth@gmail.com; s=20251120; h=from:subject:message-id; bh=Mb8lX2KhvsBJbZLZbGjpbAUq1f7hQxcuF5oQ0+pOVFk=; b=BeGkMWuyeX/aZRp2H0hfoW2AxnZOC2lzk8MPd8PsvJlWTvAKosg1c1JQKJEBD/6j1xtsYYLN2 hnZSkrLB1TOAJz2SwH4GedXgfD0gdUZ4ygDmsn2lzPUAFQlwflz007b X-Developer-Key: i=ju.orth@gmail.com; a=ed25519; pk=uM2SS4lelkuIoYHc7v9N9bgBZ3hS632zJS2xjRJLPLI= This removes the implicit flags check from drm_syncobj_find_fence. The check is moved to the only caller drm_syncobj_transfer_ioctl. Signed-off-by: Julian Orth --- drivers/gpu/drm/drm_syncobj.c | 62 ++++++++++++++++++++++++---------------= ---- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 3e8fb7e0cace..a746e787882d 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -955,29 +955,23 @@ drm_syncobj_fd_to_handle_ioctl(struct drm_device *dev= , void *data, &args->handle); } =20 -static int drm_syncobj_transfer_to_timeline(struct drm_file *file_private, - struct drm_syncobj_transfer *args) +static int drm_syncobj_transfer_to_timeline(struct drm_syncobj *src, u64 s= rc_point, + struct drm_syncobj *dst, u64 dst_point, + u32 flags) { - struct drm_syncobj *timeline_syncobj =3D NULL; struct dma_fence *fence, *tmp; struct dma_fence_chain *chain; int ret; =20 - timeline_syncobj =3D drm_syncobj_find(file_private, args->dst_handle); - if (!timeline_syncobj) { - return -ENOENT; - } - ret =3D drm_syncobj_find_fence(file_private, args->src_handle, - args->src_point, args->flags, - &tmp); + ret =3D drm_syncobj_fence_lookup(src, src_point, flags, &tmp); if (ret) - goto err_put_timeline; + goto out; =20 fence =3D dma_fence_unwrap_merge(tmp); dma_fence_put(tmp); if (!fence) { ret =3D -ENOMEM; - goto err_put_timeline; + goto out; } =20 chain =3D dma_fence_chain_alloc(); @@ -986,34 +980,27 @@ static int drm_syncobj_transfer_to_timeline(struct dr= m_file *file_private, goto err_free_fence; } =20 - drm_syncobj_add_point(timeline_syncobj, chain, fence, args->dst_point); + drm_syncobj_add_point(dst, chain, fence, dst_point); err_free_fence: dma_fence_put(fence); -err_put_timeline: - drm_syncobj_put(timeline_syncobj); +out: =20 return ret; } =20 static int -drm_syncobj_transfer_to_binary(struct drm_file *file_private, - struct drm_syncobj_transfer *args) +drm_syncobj_transfer_to_binary(struct drm_syncobj *src, u64 src_point, + struct drm_syncobj *dst, u32 flags) { - struct drm_syncobj *binary_syncobj =3D NULL; struct dma_fence *fence; int ret; =20 - binary_syncobj =3D drm_syncobj_find(file_private, args->dst_handle); - if (!binary_syncobj) - return -ENOENT; - ret =3D drm_syncobj_find_fence(file_private, args->src_handle, - args->src_point, args->flags, &fence); + ret =3D drm_syncobj_fence_lookup(src, src_point, flags, &fence); if (ret) goto err; - drm_syncobj_replace_fence(binary_syncobj, fence); + drm_syncobj_replace_fence(dst, fence); dma_fence_put(fence); err: - drm_syncobj_put(binary_syncobj); =20 return ret; } @@ -1022,18 +1009,39 @@ drm_syncobj_transfer_ioctl(struct drm_device *dev, = void *data, struct drm_file *file_private) { struct drm_syncobj_transfer *args =3D data; + struct drm_syncobj *src, *dst; int ret; =20 if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) return -EOPNOTSUPP; =20 + if (args->flags & ~DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT) + return -EINVAL; + if (args->pad) return -EINVAL; =20 + src =3D drm_syncobj_find(file_private, args->src_handle); + if (!src) + return -ENOENT; + + dst =3D drm_syncobj_find(file_private, args->dst_handle); + if (!dst) { + ret =3D -ENOENT; + goto err_dst; + } + if (args->dst_point) - ret =3D drm_syncobj_transfer_to_timeline(file_private, args); + ret =3D drm_syncobj_transfer_to_timeline(src, args->src_point, + dst, args->dst_point, + args->flags); else - ret =3D drm_syncobj_transfer_to_binary(file_private, args); + ret =3D drm_syncobj_transfer_to_binary(src, args->src_point, + dst, args->flags); + + drm_syncobj_put(dst); +err_dst: + drm_syncobj_put(src); =20 return ret; } --=20 2.54.0 From nobody Mon May 25 08:11:30 2026 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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 EBC853D5677 for ; Sat, 16 May 2026 11:06:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929621; cv=none; b=IcMsIhiPuidUn4x00/gvNE9TA1V65Y6ijisoU4bvXbPi/Np4nLEcdqqNaqv7aiKG9XSdwRLyvFto/O+/lur/938sXHS5LRHe/L7RYSApjyleuNfwe2gY13jcVg7dEuHUXA9RXyyYRVCM7wPHTNxd82ZRNlay42bEagmH4iMCHnQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929621; c=relaxed/simple; bh=crfpaYowwqJxJnvwODKb3NMb9L0ciSXP5LaWzS0yZzY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Xy1VJR0W9gSoJHf5KtYgDLwUWHzXR/2VkVatXyBVtIoufjvNN/ku3oS8tvZTT3XlvaacJbeBI1q+BndSRAjWKyHgmfdQ388KFiEGcbrKyNgdTp8nj5pNj04w27uvA1DPA07eegNPSm+J9gfuVGP5OJpgpyMB5yEtHWlivg59sHg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=sV0QlIC4; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="sV0QlIC4" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4891b0786beso4615755e9.1 for ; Sat, 16 May 2026 04:06:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778929612; x=1779534412; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=lfXCZmKhXGPb19F0Jw5wedNIT6lbmZvd88iLNzyg/OY=; b=sV0QlIC4zerZT0HPz89g/CWmE6SL4C9oXjqyqSZsu03uwHinsRhNb0nEw+clEg/uRH KDV0uXUpBXev/BosWAnX3utT1HU3G6z5bi9lU2vFlnveVjG6792bhHNkXpUHYm0FnlZ0 fNldmqMN7pNMOjqNiBe4c75tFoTKw7bIbf5VdQi3PbWgbV4dUJKttdmw0uriSyP+M1r/ 0wJ/+VWxCc/52xom4aOk9CC5l5TkKR35WXFDsUL3Jsmk8vRLpXihrd0ZqyhsvypxG5BH kX5dw+LfuhnJjiFIRxY8vETGOBnAxhLT908JRoZmlAEwb7cn6uUbFOWRXDfAE0R6gHbH YtBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778929612; x=1779534412; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=lfXCZmKhXGPb19F0Jw5wedNIT6lbmZvd88iLNzyg/OY=; b=COOHBDXncWFwDShWwpb0LLiLQURQD6C1XaZCbpf4KKyI8kB366vuULdhEIBukk9p9G E81Q2OL9qk+Q7LGM27ClGX7J6QP0PKkgcOuAIlgLm9SXbnpolNjoJh/gmE3DX3Nj5ih1 eksVgfNAhWfd5RmFvkqyeL3d2rY7sYrPPLh1vgg8eVuicpWIEMHoRxVXjrWFxfplcH0R UrKOoHED1pVhouvMSsmQ/aSIAUgUqhHpCboI/WRgusK38V3eDgB95hAehZY/FOWSxi3+ /i5g3JbABD4ihodPUVC7E9si2RlVBTmnUwhjRca58iXRe22EQtIQXR5wBhcghcv0muF1 je/w== X-Forwarded-Encrypted: i=1; AFNElJ8nMC1iQF418KnhZTmItotwEp8gKyBrfXlyWm7Cjg9gb/scrahptpkVKHonqjdtVbTMYb3Rt2XSA7iSm/8=@vger.kernel.org X-Gm-Message-State: AOJu0YyusCX/1fP8d65FyAC1UlMrqoGChxWXiTkbmsjOtkEDVJV9iW25 wUtCkpHnfVSB0Q9vxjtOBKud4VeKNiFJ6Sowknd+/6VYo1ahXwmT3N/h X-Gm-Gg: Acq92OFhaKrrclcpDxJxSs2sy3ygAPn9HMngHQP2KslFEKoYADusw8EnvsVQqRPNC17 +IglbvjBsj0KvB3KSwKUTdMAu2eWQNBjaF1TUNwRelmU8wZwGYjUXr3iuLlmXiYa5fjyYV43HsS QCOxqmaA3OwJdhgAVPc33fNdM1h6432lhaqTuurHDqYnLjYjR/I84aVEjfLKKFtp+inIIVTnslC jG9P7sA0OTvIbLuuyZVINKdgbqnUPwS4UDt8s+RmKlx1QnT2nwY5h4jrQlHHmlGPzUhswtdfOiN BM9ZWWKS+pvWJzmBsnkfcgAN6B7zQZBrg0/+dyPDZd/nu5oJI+CGbnyyKhK4DUTi2zVZJpLs5h4 n3WoAe8t+HrNxNvA+/yjngiwQGcopRBnSp6VL7lPuFkCZEBH9ruK/5akbeqlU34myv0ZqZFGbeO RJbFq6bMxmxLNZ8veUNEyGAGloFlvmB3TZgEmA+zlGoYOq5kQXhMmrnVi8nKmJtDggpPEmpkZIz KZ6nok= X-Received: by 2002:a05:600c:c494:b0:485:4388:3492 with SMTP id 5b1f17b1804b1-48fe60ed839mr106842125e9.11.1778929612138; Sat, 16 May 2026 04:06:52 -0700 (PDT) Received: from [10.13.0.20] (ip87-106-117-14.pbiaas.com. [87.106.117.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feb00e5easm36399545e9.13.2026.05.16.04.06.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 04:06:51 -0700 (PDT) From: Julian Orth Date: Sat, 16 May 2026 13:06:09 +0200 Subject: [PATCH 06/12] drm/syncobj: add drm_syncobj_transfer Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260516-jorth-syncobj-v1-6-88ede9d98a81@gmail.com> References: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> In-Reply-To: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Jonathan Corbet , Shuah Khan , Arnd Bergmann , Greg Kroah-Hartman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, linux-doc@vger.kernel.org, wayland-devel@lists.freedesktop.org, ju.orth@gmail.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778929602; l=2747; i=ju.orth@gmail.com; s=20251120; h=from:subject:message-id; bh=crfpaYowwqJxJnvwODKb3NMb9L0ciSXP5LaWzS0yZzY=; b=4LnJkSRcgHTRmc5hqP/RVVAq8z7NN5hqbrYXKUhKI6Ju4If09ezCwoSL5J4pmggyrT/r6k6gL MSWHYqto26NBUeuZWgCz0Yq5OF0t6VAVcTQcC9DTxb9GREciFiuCzd0 X-Developer-Key: i=ju.orth@gmail.com; a=ed25519; pk=uM2SS4lelkuIoYHc7v9N9bgBZ3hS632zJS2xjRJLPLI= This makes the logic from drm_syncobj_transfer_ioctl available to callers that already have two drm_syncobj. Signed-off-by: Julian Orth --- drivers/gpu/drm/drm_syncobj.c | 36 +++++++++++++++++++++++++++++------- include/drm/drm_syncobj.h | 3 +++ 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index a746e787882d..8ccfbd972191 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -1031,13 +1031,9 @@ drm_syncobj_transfer_ioctl(struct drm_device *dev, v= oid *data, goto err_dst; } =20 - if (args->dst_point) - ret =3D drm_syncobj_transfer_to_timeline(src, args->src_point, - dst, args->dst_point, - args->flags); - else - ret =3D drm_syncobj_transfer_to_binary(src, args->src_point, - dst, args->flags); + ret =3D drm_syncobj_transfer(src, args->src_point, + dst, args->dst_point, + args->flags); =20 drm_syncobj_put(dst); err_dst: @@ -1046,6 +1042,32 @@ drm_syncobj_transfer_ioctl(struct drm_device *dev, v= oid *data, return ret; } =20 +/** + * drm_syncobj_transfer - transfer a fence between syncobjs + * @src: source syncobj + * @src_point: source point + * @dst: destination syncobj + * @dst_point: destination point + * @flags: DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT or 0 + * + * Copies the fence at @src_point in @src to @dst_point in @dst. + * + * Returns 0 on success or a negative error value on failure. + */ +int drm_syncobj_transfer(struct drm_syncobj *src, u64 src_point, + struct drm_syncobj *dst, u64 dst_point, + u32 flags) +{ + if (dst_point) + return drm_syncobj_transfer_to_timeline(src, src_point, + dst, dst_point, + flags); + else + return drm_syncobj_transfer_to_binary(src, src_point, + dst, flags); +} +EXPORT_SYMBOL(drm_syncobj_transfer); + static void syncobj_wait_fence_func(struct dma_fence *fence, struct dma_fence_cb *cb) { diff --git a/include/drm/drm_syncobj.h b/include/drm/drm_syncobj.h index 85e7ca7f7896..ec8042d61466 100644 --- a/include/drm/drm_syncobj.h +++ b/include/drm/drm_syncobj.h @@ -136,6 +136,9 @@ signed long drm_syncobj_array_wait_timeout(struct drm_s= yncobj **syncobjs, ktime_t *deadline); int drm_syncobj_register_eventfd(struct drm_syncobj *syncobj, int ev_fd, u64 point, u32 flags); +int drm_syncobj_transfer(struct drm_syncobj *src, u64 src_point, + struct drm_syncobj *dst, u64 dst_point, + u32 flags); void drm_syncobj_free(struct kref *kref); int drm_syncobj_create(struct drm_syncobj **out_syncobj, uint32_t flags, struct dma_fence *fence); --=20 2.54.0 From nobody Mon May 25 08:11:30 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 7ECFC3D666A for ; Sat, 16 May 2026 11:06:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929619; cv=none; b=dGz1kBFOCLWF3F+xRGi94/2Kk8bQiT1AkRxxvYVmjGUqk9syK9AmX6VWSvJYYehUAmsQpB/VNwFXEdd7Zr0evra9YW196Mlye3uYPXLheZJh11qWg2WZKOa9Q5pYLVC/S9yFK2vg2XXBG6yQGt6n5mtOhOILvNeE2PD0k/u3TQE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929619; c=relaxed/simple; bh=GBWZLpTSQKwI1OU9IPw5ePXafftNdAo847uKMqv9qQs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qwLthFEwWBicSOZR3cd94tjV9aSMXp1xTg6xdDo8zV/g5T3SfUaZ+DVRFdgR3FnQndP17bQfyQzvhVfUoxLpbDPnAdyJAC3uXDeaG86J4MpmR8OS4xOh3QyT5jXXUGVO8dpgYzt+Bx2TdnmPzw98P89A8ezICxKjuh/yDxMPZXo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=sSZoa9Td; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="sSZoa9Td" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-488b0046078so5483395e9.1 for ; Sat, 16 May 2026 04:06:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778929614; x=1779534414; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=6GkkTkJJ4gPDTN90NOOy2Oe9JOnAG88gTd5YGKnZHEk=; b=sSZoa9TdQUh3lhyzwArreADQRar9CsjKLdwyj9PO2v/sfbotz7HzwYIWAb/p5Vo4SW kRKsLlz4JoQ43nlrS2j8Ol8i92S8kz4SdgM8Ccy9dAUZs8SRhrrX+41iVYSxpS1CuPNI 6zK+uBNX5Yt44/xkY5KF8bey3KGyEfLd5HUeWaed1z4IRWjNddFAt+c+doNvA7sjQkkv ZJE1l/F+BUpRz4q6zYZ3EBfkIXn1M6qQuWIHwP8AAh8t54MqqxtJVJVeiSWaVvaP79o8 GWvjrhjQN1CPkEfrQPPqpY9mF8b8Ww7DDBlqpeUqXRFo5j6PiqO45YE41Pu80Q1x87CJ /UbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778929614; x=1779534414; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=6GkkTkJJ4gPDTN90NOOy2Oe9JOnAG88gTd5YGKnZHEk=; b=bmPbtPocDx9UILzKmJzWWPIeBf2OYxApQ0Bk545JzKZ0USDWzKqvz7y1r9+jJz3TuW O09a2WanSLE7HHs5SGgjKyIEJjb9ZmvWAdoMnxS+PmFQU2wVxGS7dyn4NboYa1eqPe9i Cm1534kaUWZbWidHiCfzZG09dm4GLLX7nH/FdoDz6oL+6z+XXejrJxAKAn0CJdostVmU 3Finz5guz3/E2lOVYotugW6Y4j42NVBmdk4SS8Nfjgz/Gqa3CSfs4nk461U2BcMEine4 YCmkC4DTzNqBBKAwALI5X9hV7wb9qWzuH9j2FUFvjZjMOyPDQPpYpv5wo1WwbvQQ9ZgV PLuQ== X-Forwarded-Encrypted: i=1; AFNElJ+0ePpmYOg+uaY0zCxgl9kHJX21N3ldTJARAMm5tKnrJwTzb2l83WGAYOMsqM0Uvq04T9sShzgdK69r+LE=@vger.kernel.org X-Gm-Message-State: AOJu0YxGVS1KQ0IgOkBVbCBB9nrfahXuvIfqK+l6LJfz0UMu+GD3ZW9Y ODrKPKv0pgAiC8tIKCUInZtPkUQeJSPK+zhoK+7cWtpGED2LEtry57TV X-Gm-Gg: Acq92OGOafhmShYA+RcrcgpFvdlRUZOf9m4awQ6GXlCQ5fsXl8bK2UMQPJ2fNmvuk5F 2YbCsE+GepZzJTRWB1P+21u6IKqFqnV4tRzSNZ427ZSNGlVGKPNSguvJVDv5AQeFn5pBen3B+h8 v30J9RQKBqKpkD4pQlwV9WnY4ZSblIFUgtmd6YhuzXBOJ3/+d2cZN2RfrikOby05zyRqzTMqQY+ pj1r44/GxLQNPqmdaq3rRnJ9Bpl+wxIYXL1mweow+AdKtnbd6zIq+dT83DilUUvd0TShhnaWl5O zRBFTovFs+14KNdT4sfDr1pWP8VNtYf4lQpYFb/4OrSk2wZt6pvy6JLOgY+xrQwzZw1msWQbzyp eENTW3lJa456QDig5EQbEoKxpysAdtN6XgsBqLGpCfqEwcS6Q9gDII9xGifVQAKEYS5zrJKUfRx ae+DNQYir+jB6pI9A70JTJpIwfq8jKMfN3nN1ckftdCvGoWQDexAIlAeARSXKimtiGR6Rh52kJs yxGaR3GCkxbii9Cng== X-Received: by 2002:a05:600c:8b18:b0:48f:e230:1d13 with SMTP id 5b1f17b1804b1-48fe632a17cmr113820945e9.32.1778929613501; Sat, 16 May 2026 04:06:53 -0700 (PDT) Received: from [10.13.0.20] (ip87-106-117-14.pbiaas.com. [87.106.117.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feb00e5easm36399545e9.13.2026.05.16.04.06.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 04:06:53 -0700 (PDT) From: Julian Orth Date: Sat, 16 May 2026 13:06:10 +0200 Subject: [PATCH 07/12] drm/syncobj: add drm_syncobj_timeline_signal Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260516-jorth-syncobj-v1-7-88ede9d98a81@gmail.com> References: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> In-Reply-To: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Jonathan Corbet , Shuah Khan , Arnd Bergmann , Greg Kroah-Hartman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, linux-doc@vger.kernel.org, wayland-devel@lists.freedesktop.org, ju.orth@gmail.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778929602; l=4123; i=ju.orth@gmail.com; s=20251120; h=from:subject:message-id; bh=GBWZLpTSQKwI1OU9IPw5ePXafftNdAo847uKMqv9qQs=; b=0gZo9A/tA5EbfMN54peF660OcWHUpqWJdekS7fQjA+fGOVO86M7bIbAQu7ODFDJVVH0bdcsvX oBVYQt/E6R0BsJf+sfH3PTEAIAKrD2RH29Jg6VWUMm3yc+y9LG9cMif X-Developer-Key: i=ju.orth@gmail.com; a=ed25519; pk=uM2SS4lelkuIoYHc7v9N9bgBZ3hS632zJS2xjRJLPLI= This makes the logic from drm_syncobj_timeline_signal_ioctl available to callers that already have an array of drm_syncobj. Signed-off-by: Julian Orth --- drivers/gpu/drm/drm_syncobj.c | 50 ++++++++++++++++++++++++++++++++-------= ---- include/drm/drm_syncobj.h | 2 ++ 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 8ccfbd972191..948084f56c32 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -1675,9 +1675,6 @@ drm_syncobj_timeline_signal_ioctl(struct drm_device *= dev, void *data, { struct drm_syncobj_timeline_array *args =3D data; struct drm_syncobj **syncobjs; - struct dma_fence_chain **chains; - uint64_t *points; - uint32_t i, j; int ret; =20 if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) @@ -1696,26 +1693,55 @@ drm_syncobj_timeline_signal_ioctl(struct drm_device= *dev, void *data, if (ret < 0) return ret; =20 - points =3D kmalloc_array(args->count_handles, sizeof(*points), + ret =3D drm_syncobj_timeline_signal(syncobjs, args->points, args->count_h= andles); + + drm_syncobj_array_free(syncobjs, args->count_handles); + + return ret; +} + +/** + * drm_syncobj_timeline_signal - signal timeline points on syncobjs + * @syncobjs: array of syncobjs + * @user_points: user pointer to array of timeline points + * @count: number of syncobjs + * + * Signals each syncobj at the corresponding timeline point. + * + * Returns 0 on success or a negative error value on failure. + */ +int +drm_syncobj_timeline_signal(struct drm_syncobj **syncobjs, + u64 user_points, u32 count) +{ + struct dma_fence_chain **chains; + uint64_t *points; + uint32_t i, j; + int ret =3D 0; + + if (count =3D=3D 0) + return -EINVAL; + + points =3D kmalloc_array(count, sizeof(*points), GFP_KERNEL); if (!points) { ret =3D -ENOMEM; goto out; } - if (!u64_to_user_ptr(args->points)) { - memset(points, 0, args->count_handles * sizeof(uint64_t)); - } else if (copy_from_user(points, u64_to_user_ptr(args->points), - sizeof(uint64_t) * args->count_handles)) { + if (!u64_to_user_ptr(user_points)) { + memset(points, 0, count * sizeof(uint64_t)); + } else if (copy_from_user(points, u64_to_user_ptr(user_points), + sizeof(uint64_t) * count)) { ret =3D -EFAULT; goto err_points; } =20 - chains =3D kmalloc_array(args->count_handles, sizeof(void *), GFP_KERNEL); + chains =3D kmalloc_array(count, sizeof(void *), GFP_KERNEL); if (!chains) { ret =3D -ENOMEM; goto err_points; } - for (i =3D 0; i < args->count_handles; i++) { + for (i =3D 0; i < count; i++) { chains[i] =3D dma_fence_chain_alloc(); if (!chains[i]) { for (j =3D 0; j < i; j++) @@ -1725,7 +1751,7 @@ drm_syncobj_timeline_signal_ioctl(struct drm_device *= dev, void *data, } } =20 - for (i =3D 0; i < args->count_handles; i++) { + for (i =3D 0; i < count; i++) { struct dma_fence *fence =3D dma_fence_get_stub(); =20 drm_syncobj_add_point(syncobjs[i], chains[i], @@ -1737,10 +1763,10 @@ drm_syncobj_timeline_signal_ioctl(struct drm_device= *dev, void *data, err_points: kfree(points); out: - drm_syncobj_array_free(syncobjs, args->count_handles); =20 return ret; } +EXPORT_SYMBOL(drm_syncobj_timeline_signal); =20 int drm_syncobj_query_ioctl(struct drm_device *dev, void *data, struct drm_file *file_private) diff --git a/include/drm/drm_syncobj.h b/include/drm/drm_syncobj.h index ec8042d61466..a9216ea07946 100644 --- a/include/drm/drm_syncobj.h +++ b/include/drm/drm_syncobj.h @@ -139,6 +139,8 @@ int drm_syncobj_register_eventfd(struct drm_syncobj *sy= ncobj, int drm_syncobj_transfer(struct drm_syncobj *src, u64 src_point, struct drm_syncobj *dst, u64 dst_point, u32 flags); +int drm_syncobj_timeline_signal(struct drm_syncobj **syncobjs, + u64 user_points, u32 count); void drm_syncobj_free(struct kref *kref); int drm_syncobj_create(struct drm_syncobj **out_syncobj, uint32_t flags, struct dma_fence *fence); --=20 2.54.0 From nobody Mon May 25 08:11:30 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 095EC266581 for ; Sat, 16 May 2026 11:06:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929623; cv=none; b=Wuauax4nfEMYSQvlPqjNlUp3sexyu/WgJrDGKZ3JikfW1ZdJZHPUp8R8k+egbsxaOU3kudn02ohfcQEgCe9qDrxEY3urkzuhfqvxFOAUt5GImXdlamsCeomIJHlYH8iTZROZmjKLSO739FSvzo9njmP4bGv7Rbs8R9suohyp1aI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929623; c=relaxed/simple; bh=u/7AwpljxtH4IVP0O+P5dyfoAPoN+qqc7x1nJCbL2qA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YdTCSfONJCI6FJI5xtzxJMgzOpIYMTPrl6CRddTHWKkMNoEz/AAfQkMwL3KakIwWMkoI4/x5ucyb9+wkLL0mJ71+7nUQXdzSy2zS81DK/7rlR+ppH+rfjsvCLFCgwQV+aBj8mHMDNLZAW6CLqxw249z/z1OFnQb1WsWe9unVq8I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=A/i84IdG; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="A/i84IdG" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-48e6db3ff7eso2794605e9.0 for ; Sat, 16 May 2026 04:06:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778929615; x=1779534415; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=30Q99PLuQeVhsFXIYdjo6aYJwvFzoWXm4HGv+NrFQtM=; b=A/i84IdGUjfKOCoV7FiEqAb0+LVUFgSqJhVp/neJ9xpaj6UprD28zFUmUrNClhl0ii ELvZOWOAZ6cp119udCwGGOyGFnW0yL1gER7VQFz7onXcU5CAV7VFsSkjcZXmr1AzjqhO JvCLMtcTgLERQniAfNC0Y28EccZA4D+BGxLnVwp26HmcyjnVCETZZTvlcb0g4L3VOCtS kYEs/ADp7NiCYdlhUEu6NjqdoNkU8nk/rcU8Lck4GzXdqc5WAw2uTqLArCUBW9GWbVWI 376WNv8TzX40UWEZadTfXf5DJvCtPpX+ikjzs87bK5m3bDXM2nIwYMFAw6CfR0wyj3ym uxiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778929615; x=1779534415; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=30Q99PLuQeVhsFXIYdjo6aYJwvFzoWXm4HGv+NrFQtM=; b=Qyn/Z1T3iIdiMbYG6yS7E2fshRun7jgf21bfDMFkNtfjoyR3NH7wAN0PKzlLtf5UEc Gx/tLqbuCvFkjD8phU8D/1qn60mZMrTxT8i5sQ1YV94GAGVLrJ/cv5z2nf2esXrPptiJ YEIzivq7BD4t8wY2JfoCkmLW9tVrI28JujHXVEKSKQGPI5reK7quPfCTs1zEXSyh88gw Bmr72VuAhrYwH5OSGdAd2zveuqTx91HVztWWMhKnbeusxAf0QMrXK5EvqQlwsxab4Ml6 F0/tJWdJsqbX0ntfQam/y0OcsI4GFFSdxTr0RsrAeK5JKz0NWkpoRoZwKiWQV7s48ODP DuBw== X-Forwarded-Encrypted: i=1; AFNElJ8cEvp/IOU9iuApEr6hgP5dLs5a5rNIFBL5QUoYmrdw7Vl/ubzME5nLrxR0MqdwtovOWb5ZtfD4EBGlF/0=@vger.kernel.org X-Gm-Message-State: AOJu0YyUMJx8q71q4TETfU0uZD8cRgRPQFOewB4beB4dNBs6XOrvHFZ1 ny3ZclmqpHJnNCgebcf3453A+znp2cx4+ms1JOJavzf2DhshkuZYDNPx X-Gm-Gg: Acq92OGuBzRKA0MkokrdxdoD+enQxP3Nxl/mVPUH1LAho04dVADQRgDngEejTAYvkki Z7NJdccAgTjVo0U3xDo+ZDiydnYggHH8hfCkn8jVeqFYC1T3b3kSuIJw87zsWgwbBJDEPfzdaBd Dybd4AvsHWW+Jc88tMEP73Nkv7zTH3gCu5OLHl5xlyYlzVHgLvbx3nbtNnU3BilTp3avjLFZ3Yu jFh0rEWeS4UqU9tAO1rowFG9F4j/ZGWgMr3ArUh37mqyhOKJ6eWqE7oC2SFrkRxUCRBhtU+5aVP T79oeOD0kIwi0y0acG7CxO6+V4qmyS+0VV10KxpcPmnXsmB3GVBUjuyTww6SnvhXkIOeK+ai5uK 5MBSL5qn5xQ925kg3z/PyWyeDdg+n+XMQB5owCMzMuJ4ljAw2fyRF6Gxe4RRrPVGnmTFuU0zTD4 PzHPBgoREb+I2w2YgYghgBvuINjpYgGuT3GvYPVkY9JsURYxMLeHrex6xNDUz8GedycUiSSPo0X tgTKw0= X-Received: by 2002:a05:600c:8189:b0:48e:89f9:9408 with SMTP id 5b1f17b1804b1-48fe632374fmr115018775e9.20.1778929614964; Sat, 16 May 2026 04:06:54 -0700 (PDT) Received: from [10.13.0.20] (ip87-106-117-14.pbiaas.com. [87.106.117.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feb00e5easm36399545e9.13.2026.05.16.04.06.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 04:06:54 -0700 (PDT) From: Julian Orth Date: Sat, 16 May 2026 13:06:11 +0200 Subject: [PATCH 08/12] drm/syncobj: add drm_syncobj_query Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260516-jorth-syncobj-v1-8-88ede9d98a81@gmail.com> References: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> In-Reply-To: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Jonathan Corbet , Shuah Khan , Arnd Bergmann , Greg Kroah-Hartman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, linux-doc@vger.kernel.org, wayland-devel@lists.freedesktop.org, ju.orth@gmail.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778929602; l=3038; i=ju.orth@gmail.com; s=20251120; h=from:subject:message-id; bh=u/7AwpljxtH4IVP0O+P5dyfoAPoN+qqc7x1nJCbL2qA=; b=Z99DZxu195EeP3vO6X1kysFQ8YqTJJCA0BtkhBQFSClYANqqlJRzUiJ2Mte4dsbxSoaJ7uZfc SeQCmRzeltDByjvV1yhoKMIXpDXzFzH7PGzJ6lguaIs7JV/fN5LYMoH X-Developer-Key: i=ju.orth@gmail.com; a=ed25519; pk=uM2SS4lelkuIoYHc7v9N9bgBZ3hS632zJS2xjRJLPLI= This makes the logic from drm_syncobj_query_ioctl available to callers that already have an array of drm_syncobj. Signed-off-by: Julian Orth --- drivers/gpu/drm/drm_syncobj.c | 32 +++++++++++++++++++++++++++----- include/drm/drm_syncobj.h | 2 ++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 948084f56c32..9b7ecc2978f5 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -1773,8 +1773,6 @@ int drm_syncobj_query_ioctl(struct drm_device *dev, v= oid *data, { struct drm_syncobj_timeline_array *args =3D data; struct drm_syncobj **syncobjs; - uint64_t __user *points =3D u64_to_user_ptr(args->points); - uint32_t i; int ret; =20 if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ_TIMELINE)) @@ -1793,7 +1791,31 @@ int drm_syncobj_query_ioctl(struct drm_device *dev, = void *data, if (ret < 0) return ret; =20 - for (i =3D 0; i < args->count_handles; i++) { + ret =3D drm_syncobj_query(syncobjs, args->points, + args->count_handles, args->flags); + + drm_syncobj_array_free(syncobjs, args->count_handles); + + return ret; +} + +/** + * drm_syncobj_query - query timeline points of syncobjs + * @syncobjs: array of syncobjs + * @user_points: user pointer to array of timeline points + * @count: number of syncobjs + * @flags: DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED or 0 + * + * Queries the timeline point of each syncobj and writes it to @points. + */ +int drm_syncobj_query(struct drm_syncobj **syncobjs, u64 user_points, + u32 count, u32 flags) +{ + uint64_t __user *points =3D u64_to_user_ptr(user_points); + uint32_t i; + int ret =3D 0; + + for (i =3D 0; i < count; i++) { struct dma_fence_chain *chain; struct dma_fence *fence; uint64_t point; @@ -1804,7 +1826,7 @@ int drm_syncobj_query_ioctl(struct drm_device *dev, v= oid *data, struct dma_fence *iter, *last_signaled =3D dma_fence_get(fence); =20 - if (args->flags & + if (flags & DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED) { point =3D fence->seqno; } else { @@ -1832,7 +1854,7 @@ int drm_syncobj_query_ioctl(struct drm_device *dev, v= oid *data, if (ret) break; } - drm_syncobj_array_free(syncobjs, args->count_handles); =20 return ret; } +EXPORT_SYMBOL(drm_syncobj_query); diff --git a/include/drm/drm_syncobj.h b/include/drm/drm_syncobj.h index a9216ea07946..da237ca3e61f 100644 --- a/include/drm/drm_syncobj.h +++ b/include/drm/drm_syncobj.h @@ -141,6 +141,8 @@ int drm_syncobj_transfer(struct drm_syncobj *src, u64 s= rc_point, u32 flags); int drm_syncobj_timeline_signal(struct drm_syncobj **syncobjs, u64 user_points, u32 count); +int drm_syncobj_query(struct drm_syncobj **syncobjs, u64 user_points, + u32 count, u32 flags); void drm_syncobj_free(struct kref *kref); int drm_syncobj_create(struct drm_syncobj **out_syncobj, uint32_t flags, struct dma_fence *fence); --=20 2.54.0 From nobody Mon May 25 08:11:30 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 3BB6A3D6CD9 for ; Sat, 16 May 2026 11:07:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929624; cv=none; b=esrIfy65VxNCdXIibSxYzRccP4lRvLhBOYc72ZsbQ2aR00LAdWaXe7iDEHupWTHvv4YF9rpFztFCZep/RmZtH/6BawQEjw/wdXjonMrWs/ogmmvHy8Is4XCM4TgJNbkVWvFw8z1sl9wcSGe/V8J8w0NEKVRvQUkCnuuBDu4cgc4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929624; c=relaxed/simple; bh=5APNMtl2NCstrrwoxtWKTvFVItf0IqBmltZkdCTjBxU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=b48EYQr0ouY3C7/9xXcWGvhdbGOH91kMjny4igT5GZG/zXDK17+IwlGiL60FPSYg9nyWfY+0SrYPWCk90QeOckPpUTbAJcqxWYnUWf5+9Xd3YmujHdY/qd2ZkHsk6qyQs/XHby2WV8pz9xSJoHs5IsUnUg+Kx2NioAJGQ8A4xDU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=AoL64YiQ; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AoL64YiQ" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-488b150559bso4930655e9.1 for ; Sat, 16 May 2026 04:06:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778929616; x=1779534416; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=GUzK0JUispp8nMHz/jfrYyUsKO3YYZqffLIW7XXNsp8=; b=AoL64YiQVahJ8Xq7A3slMhWKv+Qt4lDYANxRnhdwcXqknCwjXGt5dxsJZZCgllYP+Q NfDZB5Z6sldo6/fwJQNwbAwXcwq8/1xHqW5TPUCsXyxlDMS5mmRmvLvntNlm/THnxcrC ehd1TwMWi+HbF+f41BQ0oRe0zxs0IwTr3iKTd3//HdSzgmjz4RplkbbqanE+SFEVjejo EgHvqDuuw2Ro0vp342ClO0d0wiAUw16ZRf4xwvCLu1nfNbXdXWSRyyON60SnZhNRyZL/ B8Gn2kfuJT37z1YsgQJW8xFA/1X/8UKF2WPj77bXf25Kqdi52dX9tV83/rYZNjp5HeDv wePA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778929616; x=1779534416; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=GUzK0JUispp8nMHz/jfrYyUsKO3YYZqffLIW7XXNsp8=; b=WguxBrr9BRIUq+tm652Ajdv8h3hLrHojyI+zs3OrYEZ3Uu1DhmdOCLIkN9czXc5x2X KXHM2fRg+VwttNwDNWAwjODeebPes1k77Gjvg0za1T1KuvpLbTLknXZhmj9XXMiLGXhV pk6jhrKab2NqxhkdLrBq2m7XVBZN+tzrr1qcNJBIb2yydIYc54Vr/f0eL/3YzG4qOnaS xTE6ROxwiNYdPZx513Lctb6BrlNfQP/NuuAxPf4sCJGmBGbebHsbj7ka48jJy7pY5KAC dq4DZAB/2pYbq8KXKMxn7wdH4RjrOaT1V/p3caxb0aOFpl9hawV+3z4akQsraBHrqNt/ rWeQ== X-Forwarded-Encrypted: i=1; AFNElJ/QTj3yti4Th6b+JpTVeIczoDK1kf4ZOsn5FwHw7klQc6m66shsnjEp3efde5TzwprpgcCzPHlEN19NPcg=@vger.kernel.org X-Gm-Message-State: AOJu0YxR6DqV74NAauRc3uJkWkJKpkl6G0YkVgPPhZL/u2k3YJa74oNm TojkYscUNGGm0qzylPShXQBAS73q/jCTaiNIntzpUfcjGFZcECIKLjsb X-Gm-Gg: Acq92OFiyixvcObiJ767Hb9vkvypBlpA/uIJVPgo3b60qL9g4b3x6PPmV2YvRDLW7p9 u35NpREyVdcnOhRlEVbfKB4vdGmkrtW6nsO8qSN6ppQIa25c3LN+o0SumaO9sWtCuYFLAT7C5QU ClMJVQpi7oJr2F2pEEP823fb8dTV5BrvFSWO8hnxcVi0k+3dKACCHeBm2zbASZ3hd9wglHMNTNN 1u8QNk0kOGqfR59uwftAcO5S/Eh00iv8bSXmPa6o1pecfaXIKgQW9s4BEge2FJkHfDYppxPTLZs y/d6zIN71f1x/8NrQZXD8ZQyj00WTIAka17hR0FTeGaMDeUN0ux6mLsmF/Ti2yPdKzEEHQQbJ7G wqFu1Er985WNX/Lna3KM+6odOr3SXkG763nvho79uVBR7s7NxVfTO/vFFKAkAvMg6ZWrmeqtEcp OFsmof+VYTk8YSG7IJhgUI1GPIfCkTGLVyKPeeoA1H2Oxwq0FeE6/FZfOZ3eZvOBkQx/VQsx4+X /FfTe4= X-Received: by 2002:a05:600c:c087:b0:48a:7b55:12a6 with SMTP id 5b1f17b1804b1-48fe5cb36aamr88176225e9.0.1778929616265; Sat, 16 May 2026 04:06:56 -0700 (PDT) Received: from [10.13.0.20] (ip87-106-117-14.pbiaas.com. [87.106.117.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feb00e5easm36399545e9.13.2026.05.16.04.06.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 04:06:55 -0700 (PDT) From: Julian Orth Date: Sat, 16 May 2026 13:06:12 +0200 Subject: [PATCH 09/12] drm/syncobj: fix resource leak in drm_syncobj_import_sync_file_fence Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260516-jorth-syncobj-v1-9-88ede9d98a81@gmail.com> References: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> In-Reply-To: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Jonathan Corbet , Shuah Khan , Arnd Bergmann , Greg Kroah-Hartman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, linux-doc@vger.kernel.org, wayland-devel@lists.freedesktop.org, ju.orth@gmail.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778929602; l=1383; i=ju.orth@gmail.com; s=20251120; h=from:subject:message-id; bh=5APNMtl2NCstrrwoxtWKTvFVItf0IqBmltZkdCTjBxU=; b=uBiahrAmREDZy7Fj07y8SVauSH9GmZFa2clMwUB1MLOYdGIifgpx+NgONorTf5/6Z4hk84rCI KXcKOq9bDW9D2GMf5/UEmHT+/8WQoDxsc8BjwHF2qniEf5cY8txk1A8 X-Developer-Key: i=ju.orth@gmail.com; a=ed25519; pk=uM2SS4lelkuIoYHc7v9N9bgBZ3hS632zJS2xjRJLPLI= Previously, if dma_fence_chain_alloc() failed, the syncobj and fence would be leaked. Signed-off-by: Julian Orth --- drivers/gpu/drm/drm_syncobj.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 9b7ecc2978f5..1da96e23dfc0 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -767,30 +767,35 @@ static int drm_syncobj_import_sync_file_fence(struct = drm_file *file_private, { struct dma_fence *fence =3D sync_file_get_fence(fd); struct drm_syncobj *syncobj; + int ret =3D 0; =20 if (!fence) return -EINVAL; =20 syncobj =3D drm_syncobj_find(file_private, handle); if (!syncobj) { - dma_fence_put(fence); - return -ENOENT; + ret =3D -ENOENT; + goto err_syncobj; } =20 if (point) { struct dma_fence_chain *chain =3D dma_fence_chain_alloc(); =20 - if (!chain) - return -ENOMEM; + if (!chain) { + ret =3D -ENOMEM; + goto err; + } =20 drm_syncobj_add_point(syncobj, chain, fence, point); } else { drm_syncobj_replace_fence(syncobj, fence); } =20 - dma_fence_put(fence); +err: drm_syncobj_put(syncobj); - return 0; +err_syncobj: + dma_fence_put(fence); + return ret; } =20 static int drm_syncobj_export_sync_file(struct drm_file *file_private, --=20 2.54.0 From nobody Mon May 25 08:11:30 2026 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 68A4C3D47C0 for ; Sat, 16 May 2026 11:07:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929623; cv=none; b=jYBQ+JE1yaP0T8Q1gdLD0BJvyBnSMdeseM3PQcjiAtxq10bGthVvJp4OWiPFU1hNoZbO9jNtxNPtSMJpP38f5MNdfDe0A8bd7uh136n0AgLUB8YC8vEi7Wmafk6GQv5NnZ++1xEqaylvpkYEDfws8MSJDlNWGhOqLr4cc73wWKs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929623; c=relaxed/simple; bh=gccEkxb9Fgxq3kICRGFzS2yuH2T+EBoB3hEcASoUfk4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AborGH3OL0V5b9eXWxr/j8d7PQjjjM2CMDl7TxCZFtZe/CvPsLssA8bvSUvq3kges6HaTQoISuv2qEjKdD0vuH8taQGCoiuiTSNXJ3lRRX4uD+dzm7xOO5ANZZzApipMI47kQSxcfdoD7FWwoyAmx5hq2igbqs1xMW2r67gwBFo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=GZEVIFNy; arc=none smtp.client-ip=209.85.221.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GZEVIFNy" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-43fe608cb92so324003f8f.2 for ; Sat, 16 May 2026 04:06:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778929618; x=1779534418; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=mZxaw3u6g9gSQgxhivb/aQTd6ZH6WM8J0IbrlUd06os=; b=GZEVIFNyXzBrJZH8agXuIgpikeppwWAlOjbWAop6q2/OCcKQ2pInJjZb5VyghaXLFw 8at78ujSh/yhjy8e/2kBfbJ8/9p5sMbnVKitoVsjBKkj2VtjSVSolS5QzR11CL+ttgfI xxcMmJ6hxkQSnQxUJQDDKvl08c8tzKrDBV5sqVuL2VbVgRYcOTKig6HJigQXMbNwGppz MeiCETWq9exFIn0sCv3TiQDtuCeNStwHST0vREwJo6rPyTnKSJpmkCiffZi5VRfPZR7r vMAtyKPoRLylB7JOfZGXLV7TlJveAd/EDW4AbweEcN4TZnR9fBM4CXUmHCeNNXon8ReW UNJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778929618; x=1779534418; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=mZxaw3u6g9gSQgxhivb/aQTd6ZH6WM8J0IbrlUd06os=; b=H6ZGybwcsZEhdN2Qnjw+iR1YD9dpUnlPoCwXoWHcOJ+s8jQqGYJvAxf1QiTCE2Z/zO fvtUGMGzYJ6O0nbxjzkSt4EarS9mp12/d4dtixuTjXU6lLmnl1YVaHaTf58jzUIT8oqx /77H/D3jew28fRkNf8SiqmzSdyTSz5k8W+9sFfg/wRbiiCOUTZVqJ4TPvnkLRFK/W17A u9sEzjC59kQRIGFgjn0SyOq+7fNVwVMXcY6JCGfech1nkTp98VvwxnU8sRxYHu7hkOLY IFDKY/gw+M79iXI36PncAoYPizPNpNfgB8phhlZdD+mTPdy9QufM5rYioIygpPd385Hz QrTw== X-Forwarded-Encrypted: i=1; AFNElJ/PLbOccJntGPYS4rMBqWAb7+HHTYSy2Ll/Ta90bfOzEvFben3BVkUinIvgFhU5w+8EdcERDmOxFZRJNX4=@vger.kernel.org X-Gm-Message-State: AOJu0YyIrx8Mzy2TVB6RMzTX1i2kD32Hgr5s0FBDp7qJ1q3RsUOH6nAV p9cd2CF8wiyRxlHtxx3l3SKJ7iiYqrFa/8VHpC6/1/D2rXHSmES1AEqM X-Gm-Gg: Acq92OHBw3JbZ71cjZ9BNNlmV7M1hWg7PT5oHOn+NgvSTln2JlYaYfC1iNflNZH4Caq aolJArJR23dd3t+h3g9eoOF/1z1RszLcmJdYmgBejaxD0xN4P90SUBMtzurBHAYsmfi/79yEVfg 1HA9Ov09NwL2ebSGmaRjor/gmOhqkssofJ03g6jGnDF3RMonAvIoab2Mp28Aqc9BSw5NsO7BptG 0KbhvEJgZ0OoGpP2giBr5f945AhCX8FHCoebfsn4WO+USPrzwx2IIhls0c7r97rear3vjirSDRC nts9WfHCfER8jr7z/tHB9vqCT6PcuijoxUxZwgj2Wk70xLOsCcumCOj8r78pOe0wZgKHnhJGGvY aczkeGsEV1QaC2Z9oWQ3GZuwaUcOvPmxBpFrMjs2fDl+/Dl1oPeaiX07MwlVYdN+N0qIOdX+huM wzWsH3VHvxQmdWPElKsvxM3MbZsoYm3vUWM5P6TTcxuZcYdVarJSdStcAGw0nXFCD/sqPGVKDxw b5D4wy1HbS7mc+v2g== X-Received: by 2002:a05:600c:2d09:b0:48f:e1ac:c96d with SMTP id 5b1f17b1804b1-48fe61f2bcemr60030905e9.20.1778929617614; Sat, 16 May 2026 04:06:57 -0700 (PDT) Received: from [10.13.0.20] (ip87-106-117-14.pbiaas.com. [87.106.117.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feb00e5easm36399545e9.13.2026.05.16.04.06.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 04:06:57 -0700 (PDT) From: Julian Orth Date: Sat, 16 May 2026 13:06:13 +0200 Subject: [PATCH 10/12] drm/syncobj: add drm_syncobj_import_sync_file Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260516-jorth-syncobj-v1-10-88ede9d98a81@gmail.com> References: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> In-Reply-To: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Jonathan Corbet , Shuah Khan , Arnd Bergmann , Greg Kroah-Hartman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, linux-doc@vger.kernel.org, wayland-devel@lists.freedesktop.org, ju.orth@gmail.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778929602; l=2792; i=ju.orth@gmail.com; s=20251120; h=from:subject:message-id; bh=gccEkxb9Fgxq3kICRGFzS2yuH2T+EBoB3hEcASoUfk4=; b=LfciDdq+01NiK3gXOUbCymlEM3K+nuuGo3VhuhjLND4T9QDwYUXe2UHMMsjDrtokyTzc+edKE S+PE8qGatMuDQ8hyiPBhAhZK6ObHL0ljbFX8Do8xYlPgTokSZvXJnCB X-Developer-Key: i=ju.orth@gmail.com; a=ed25519; pk=uM2SS4lelkuIoYHc7v9N9bgBZ3hS632zJS2xjRJLPLI= This makes the logic from drm_syncobj_import_sync_file_fence available to callers that have a drm_syncobj instead of a drm_file/handle pair. Signed-off-by: Julian Orth --- drivers/gpu/drm/drm_syncobj.c | 35 ++++++++++++++++++++++++++--------- include/drm/drm_syncobj.h | 2 ++ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 1da96e23dfc0..4c1667c67cb7 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -765,19 +765,37 @@ static int drm_syncobj_fd_to_handle(struct drm_file *= file_private, static int drm_syncobj_import_sync_file_fence(struct drm_file *file_privat= e, int fd, int handle, u64 point) { - struct dma_fence *fence =3D sync_file_get_fence(fd); struct drm_syncobj *syncobj; int ret =3D 0; =20 + syncobj =3D drm_syncobj_find(file_private, handle); + if (!syncobj) + return -ENOENT; + + ret =3D drm_syncobj_import_sync_file(syncobj, fd, point); + + drm_syncobj_put(syncobj); + + return ret; +} + +/** + * drm_syncobj_import_sync_file - import a sync_file fd into a syncobj + * @syncobj: syncobj to import into + * @fd: sync_file file descriptor + * @point: timeline point or 0 + * + * Returns 0 on success or a negative error value on failure. + */ +int drm_syncobj_import_sync_file(struct drm_syncobj *syncobj, + int fd, u64 point) +{ + struct dma_fence *fence =3D sync_file_get_fence(fd); + int ret =3D 0; + if (!fence) return -EINVAL; =20 - syncobj =3D drm_syncobj_find(file_private, handle); - if (!syncobj) { - ret =3D -ENOENT; - goto err_syncobj; - } - if (point) { struct dma_fence_chain *chain =3D dma_fence_chain_alloc(); =20 @@ -792,11 +810,10 @@ static int drm_syncobj_import_sync_file_fence(struct = drm_file *file_private, } =20 err: - drm_syncobj_put(syncobj); -err_syncobj: dma_fence_put(fence); return ret; } +EXPORT_SYMBOL(drm_syncobj_import_sync_file); =20 static int drm_syncobj_export_sync_file(struct drm_file *file_private, int handle, u64 point, int *p_fd) diff --git a/include/drm/drm_syncobj.h b/include/drm/drm_syncobj.h index da237ca3e61f..1571ffa12a5c 100644 --- a/include/drm/drm_syncobj.h +++ b/include/drm/drm_syncobj.h @@ -143,6 +143,8 @@ int drm_syncobj_timeline_signal(struct drm_syncobj **sy= ncobjs, u64 user_points, u32 count); int drm_syncobj_query(struct drm_syncobj **syncobjs, u64 user_points, u32 count, u32 flags); +int drm_syncobj_import_sync_file(struct drm_syncobj *syncobj, + int sync_file_fd, u64 point); void drm_syncobj_free(struct kref *kref); int drm_syncobj_create(struct drm_syncobj **out_syncobj, uint32_t flags, struct dma_fence *fence); --=20 2.54.0 From nobody Mon May 25 08:11:30 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 9AF443D7D8C for ; Sat, 16 May 2026 11:07:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929628; cv=none; b=f9zXnwDxj600nNlQ2gLzhtgbC3ZL/bjGcDrXV+UyALk1xJHzuujNinRu75RDcxk0k3XC9m8vyNktb0Ae1HUfsLTye0cWauiSEiOp8IUK62wCmBrbaG9f6qsKHRy902FDZ2YSgZIFnx08E2qfQIW720NqHcxiyIh9O36JaGYv9dI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929628; c=relaxed/simple; bh=9xL4k8P4OzDmeuDyBCak9cYfAMz/kFZpIBcu/tKVYxQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JJgaZCwKHNTz3/FmlqYTHpZ7u7aCPAL1QGyc7pt6YU3hNthV33ZgRhtP6+dOa9SOYSvdzrDYBRvqo6u8ta0txgR8cvMHU92uoVhuA34cQfQ9uaMPjnXDRFMsx8ReC12PAszf3xjl9LS1O77eq/KBAjRMxROHf5QmUhopI1s7eKM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=h0gmvF4h; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="h0gmvF4h" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-488b0e1b870so9714955e9.2 for ; Sat, 16 May 2026 04:07:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778929619; x=1779534419; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=dVfs+wqDh2APf8gPwREvGpcVhgxv7KkNQvxDWgzbhy8=; b=h0gmvF4hSc0teZTysKlI5gUnQhaDoq3CcSselgyORbUx5s7dJwaW+hBdrHtMqByO0S pGnRYKtOAPMPYv4yBtaKxa2VixqKYMYn5Sz7+XNy54aZgoTIM/sk93jkUB6iDqZqJaVx ycLYpieUUxM8S+BUtvFPrJXKlKv9dMznd+/2/98NtHmN3l/eiCiuUh6qeuiwZwb1CL9i 05cQpbv/WLQXaRYYcNohLQy6Wps6pYg8NAu6iKTrOFy5QWOG1ojf3O20WOWRauCr2CPC PTRUsxvkLYD7Yr0E566D8Kj6nc8GTs2QgtBkZaLqKkseb2Pr/5D0z17KB5TrSqSyWUyF S9zQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778929619; x=1779534419; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=dVfs+wqDh2APf8gPwREvGpcVhgxv7KkNQvxDWgzbhy8=; b=AMX9bZNjvSAHycwpDAGC/xopGj36ROIBoPRLUZ2lJtvb+HvhLq1JQCv/7SIUEb6FrB v7CTOAcpNtdNgvDT0mC5Vl7ttV+NsSjFXPPPzjcPNfRn9brGYtHVyF4m6mnCtfCC0oJa kf/oBVZfRagywKis5Uzl804xsVM9VYai5T7noYSTTkvjwwdVukLn+i3NuxeUp+hJ28lV 7SXkIx5MrCvI5wJ1NfzSrUjy73GFQ4lqhJmVxiaXwxbJ4n9P5vw/KbegaxiVAuuG9Vu7 W/Yj6HDufT21csnvOSQeVPSQI1KlF6s6Ml8oMDNThZ2cXpYdineFERr0QgqvdhkN+wOI nflw== X-Forwarded-Encrypted: i=1; AFNElJ+cEMq5HULPKwuFjeQHhpt2H+Ymwzu1zK7Vq6BUkxZh5PT0lx0+Ngq6MJvzgaHk9KsQCQn1cv7EVJsRWbg=@vger.kernel.org X-Gm-Message-State: AOJu0Yw9e6q443vKDOxVGbzIWZ7Nnb9MymVEU1MMKI2QWLUzfQt+HLE5 9+3shlhWrQktiNqbrtuPwW7KghD8jDRHpY4Srzcz9le3zC6MjURogSTt X-Gm-Gg: Acq92OH0Q0otGxhmn4uwf313VXkExM3uwCLVyTvXMknvdJ0pwjC4/mFHx5nls5e0BfT DC12hPS2Dhzu69exbgmZoIq3kygrkjirCsxUii1UVYCedvuWqo6hHZfNeOovg8iOx5eAgRgTYK/ RCwn2+0qyc+1judxE/fTM5DJnXRAVMCYm8C8mXqqnhwLLf1i6OK3J5dbKpLTy1MGzAPFVbH4ULY zWogehkxz8ppq9zHqBOoisIFdWTpJafNHV1kFI/mgThwfpEar8PKxS3AGrQotI25/SRt4E5UH/D S4ua0iHhkrdNbBBko1TcA63SHYrq3sOBfXVqlC9gHUCt0FjRmnL6w+P85+xKd8GIooIVmkkQCBZ 36s7KbM61/AkjpXSbt9GW+IhAE8V5tHbO4MSLyQkWta3r30kHEWPL36HKH7lZF4640XL3oaZjcG mPDP3eKIiKAXeEL4pYvfuRREie2yqwWLIlQf9+QaFJnmhi6iWTgq2mVFK4v4KhEsGkncLRfUyiB 1h5aBc= X-Received: by 2002:a05:600c:c4a1:b0:48a:5363:8cac with SMTP id 5b1f17b1804b1-48fe63268eemr108045305e9.22.1778929618884; Sat, 16 May 2026 04:06:58 -0700 (PDT) Received: from [10.13.0.20] (ip87-106-117-14.pbiaas.com. [87.106.117.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feb00e5easm36399545e9.13.2026.05.16.04.06.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 04:06:58 -0700 (PDT) From: Julian Orth Date: Sat, 16 May 2026 13:06:14 +0200 Subject: [PATCH 11/12] drm/syncobj: add drm_syncobj_export_sync_file Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260516-jorth-syncobj-v1-11-88ede9d98a81@gmail.com> References: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> In-Reply-To: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Jonathan Corbet , Shuah Khan , Arnd Bergmann , Greg Kroah-Hartman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, linux-doc@vger.kernel.org, wayland-devel@lists.freedesktop.org, ju.orth@gmail.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778929602; l=3389; i=ju.orth@gmail.com; s=20251120; h=from:subject:message-id; bh=9xL4k8P4OzDmeuDyBCak9cYfAMz/kFZpIBcu/tKVYxQ=; b=IyP6KTEg/nnToCAtPFKyKdeoh+C+VT61maR9YZkQriDB2BckEZMqDGD+hg82OZFoyq8W/t5dM UcduM0gEp0VDuV8slfvoJd+B0QiHGRqTA8TF5AMzoWTfDIVoRvYYEyG X-Developer-Key: i=ju.orth@gmail.com; a=ed25519; pk=uM2SS4lelkuIoYHc7v9N9bgBZ3hS632zJS2xjRJLPLI= This makes the logic from drm_syncobj_export_sync_file_by_handle available to callers that have a drm_syncobj instead of a drm_file/handle pair. Signed-off-by: Julian Orth --- drivers/gpu/drm/drm_syncobj.c | 39 ++++++++++++++++++++++++++++++++++----- include/drm/drm_syncobj.h | 2 ++ 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 4c1667c67cb7..d5e633738730 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -815,8 +815,34 @@ int drm_syncobj_import_sync_file(struct drm_syncobj *s= yncobj, } EXPORT_SYMBOL(drm_syncobj_import_sync_file); =20 -static int drm_syncobj_export_sync_file(struct drm_file *file_private, - int handle, u64 point, int *p_fd) +static int drm_syncobj_export_sync_file_by_handle(struct drm_file *file_pr= ivate, + int handle, u64 point, + int *p_fd) +{ + struct drm_syncobj *syncobj; + int ret; + + syncobj =3D drm_syncobj_find(file_private, handle); + if (!syncobj) + return -ENOENT; + + ret =3D drm_syncobj_export_sync_file(syncobj, point, p_fd); + + drm_syncobj_put(syncobj); + + return ret; +} + +/** + * drm_syncobj_export_sync_file - export a syncobj fence as a sync_file fd + * @syncobj: syncobj to export from + * @point: timeline point or 0 + * @p_fd: out parameter for the new file descriptor + * + * Returns 0 on success or a negative error value on failure. + */ +int drm_syncobj_export_sync_file(struct drm_syncobj *syncobj, + u64 point, int *p_fd) { int ret; struct dma_fence *fence; @@ -826,7 +852,7 @@ static int drm_syncobj_export_sync_file(struct drm_file= *file_private, if (fd < 0) return fd; =20 - ret =3D drm_syncobj_find_fence(file_private, handle, point, 0, &fence); + ret =3D drm_syncobj_fence_lookup(syncobj, point, 0, &fence); if (ret) goto err_put_fd; =20 @@ -847,6 +873,8 @@ static int drm_syncobj_export_sync_file(struct drm_file= *file_private, put_unused_fd(fd); return ret; } +EXPORT_SYMBOL(drm_syncobj_export_sync_file); + /** * drm_syncobj_open - initializes syncobj file-private structures at devno= de open time * @file_private: drm file-private structure to set up @@ -933,8 +961,9 @@ drm_syncobj_handle_to_fd_ioctl(struct drm_device *dev, = void *data, point =3D args->point; =20 if (args->flags & DRM_SYNCOBJ_HANDLE_TO_FD_FLAGS_EXPORT_SYNC_FILE) - return drm_syncobj_export_sync_file(file_private, args->handle, - point, &args->fd); + return drm_syncobj_export_sync_file_by_handle(file_private, + args->handle, + point, &args->fd); =20 if (args->point) return -EINVAL; diff --git a/include/drm/drm_syncobj.h b/include/drm/drm_syncobj.h index 1571ffa12a5c..48476c570595 100644 --- a/include/drm/drm_syncobj.h +++ b/include/drm/drm_syncobj.h @@ -145,6 +145,8 @@ int drm_syncobj_query(struct drm_syncobj **syncobjs, u6= 4 user_points, u32 count, u32 flags); int drm_syncobj_import_sync_file(struct drm_syncobj *syncobj, int sync_file_fd, u64 point); +int drm_syncobj_export_sync_file(struct drm_syncobj *syncobj, + u64 point, int *p_fd); void drm_syncobj_free(struct kref *kref); int drm_syncobj_create(struct drm_syncobj **out_syncobj, uint32_t flags, struct dma_fence *fence); --=20 2.54.0 From nobody Mon May 25 08:11:30 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (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 82ACA3D413D for ; Sat, 16 May 2026 11:07:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929630; cv=none; b=ZdrRHX9wPWM7EakiksMmctzRd9OLSpeuHBd0w/HtTbAvgZN/tl3mx/8IQ2LJGIwGAfqCjidalxulm51bRPsYGoT/4vg3Wzx+xkpISryejsWgDRcO1/kgwVcEvEqUhsFg//bkeSVxqpxCnQG/13nCxA+eolippAjLxow16s27GMg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778929630; c=relaxed/simple; bh=WhzJjcCvKJj2CD2b9qjHPi70/JQ1jm0ddKfGtp0BfmM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nwskQYgoO/BEbMuBMkMWBmepbQLWGaTPr2nb4hVnxpEl9FAR5+7K+XSGxsiMg9Ne8gec2ZWHqi5iazlfgiTDMERutxuY8cFdjb96mkRbnq/2aCOKVSlz/lsWljDYsw2mMU8RJ9fSPalsmbmzTuvva0VKAc5Cng+qtoBXSZZBOYo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=nI/gT4DS; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nI/gT4DS" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-48d146705b4so6792455e9.3 for ; Sat, 16 May 2026 04:07:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778929620; x=1779534420; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=GZ3vDaJ2jqpNbKxKrO5UqJVvEsFWMV1I/ds8vkY2noo=; b=nI/gT4DSrXKMPYnOkBeX3O25ixeZLWFXV38sS4Z/BjJAHV2Lsqr1Y7oXxWFGVCe7UC pxmzga5wgkhQt30bm+tJ5NaFp1MQZrIXf+jguOHUBW8HiW1yCSTzDRnjmWkM+hhbEzMb Xktjr0KS46/n6vHbyQg15IbwJGdpHxty5gmqhxPfwEX4bjuMwnBjNgSrcuPk+qKQayCO 9xZrINk9wEeiaCo90xWSuudJyYfEt6eoZMmktVs6qDgh47SEZ6tyXtpJPYDOAG554Gjh FuCUem0dGsAstTy4c6Bo/hknzV/kBz7J8AswblP8kiZ1rQ3d9CwPJJ/1gSzNakGMPGdE nw0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778929620; x=1779534420; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=GZ3vDaJ2jqpNbKxKrO5UqJVvEsFWMV1I/ds8vkY2noo=; b=Lt9dl6Du9ISaVwSu7duW+Qv/6O+I7Ovprpu3Jm5JzyAgmucAwcFA8/7T+OQQvF5sgK gAvs6D7FxDxWPqaDXzClv4X7O3vli/zzy65LIt0HjSFVIxdXNIRTewmj8jCt6fs2j8fk aTvNCeV9SxY5GK0761uoEHbdCSaPhug9rOpWoIKJi3UyXPBnO9IF8u2DKp7UAhDRxCCZ 859oel+TbXIs/708VuFSaRtYAsxEmAQUsTvCKxkpcDhAs6MmdNvYsyIY4uf1Zqn4OeB3 Iv3l+M5IDU/vhQdD7bZ7W1lq69kVnc/c+pD+VJaMuXkKgEj7+VE8ycaAYb1CK61vh4r2 YhaQ== X-Forwarded-Encrypted: i=1; AFNElJ/9vXc41JqKKBy2iiHVlKM2O3+i89NwXRmPE/AYA5hZeEwqniQVkZkmlXs4cX6v6/MjRtd5Jie8Qm3i9tM=@vger.kernel.org X-Gm-Message-State: AOJu0YzbCp0s9G+pGWqsxQfmMRKEpoe3DxO9sze4sWrMbCqt6MUTvD5Q 07G6FeXG/YrkVOGXw61R89p0ztPs6yaV/5VzGzd1illwqHQ+bSbImPr6 X-Gm-Gg: Acq92OHDUlMK9Cum7R3EQ26Oi1Z1JdjnMd9vnpwnW7+dND4tvWb7kPzIW+f+ohupyF7 SMKSI2TjsVDrBIoqu8D24i5CTWkU86AwDyh3btcYe5K3upY8WCHA+hYO0VYH9L3yHO6ff0tiXIq YR7HLfxEtIl/kXLFkA6eu8xI8yPl6xpZHVMIHorT20jHUd9PobgbHCPEsNCfe6+MkEoqGS7kd1r WvfamdBFMG9pSZhUeGemFjBsuX0rxC5tpD+Ampwrj/8P1jnI3WcWwWHBpcVPkH682ZtbUeMFjxl 6dEAijjJ/62oF6s9V/mikHqWvKuBvCSC2IZrxELrKZOf26cvjgWgt0LteFHbKEayJ6EzGfMIkfw PeVwG9XyB5JMgBqk/ZcagTKUsT+E5tO/h84K9DibXPsEuI+FQb0hjI6wWRt1YkcaGeAHDW6Ulf9 RgAIukSwxXQbugbIn187qzq2IyGOKJsxIN3EHLmdqFBJWikh8bTOG0bNvxBHlkPVjI4IUXm1ynM rpOPeI= X-Received: by 2002:a05:600c:4fc9:b0:48a:7a10:4f17 with SMTP id 5b1f17b1804b1-48fe60e50b9mr96881595e9.6.1778929620265; Sat, 16 May 2026 04:07:00 -0700 (PDT) Received: from [10.13.0.20] (ip87-106-117-14.pbiaas.com. [87.106.117.14]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feb00e5easm36399545e9.13.2026.05.16.04.06.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 04:06:59 -0700 (PDT) From: Julian Orth Date: Sat, 16 May 2026 13:06:15 +0200 Subject: [PATCH 12/12] misc/syncobj: add new device Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260516-jorth-syncobj-v1-12-88ede9d98a81@gmail.com> References: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> In-Reply-To: <20260516-jorth-syncobj-v1-0-88ede9d98a81@gmail.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Sumit Semwal , =?utf-8?q?Christian_K=C3=B6nig?= , Jonathan Corbet , Shuah Khan , Arnd Bergmann , Greg Kroah-Hartman Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, linux-doc@vger.kernel.org, wayland-devel@lists.freedesktop.org, ju.orth@gmail.com X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778929602; l=15478; i=ju.orth@gmail.com; s=20251120; h=from:subject:message-id; bh=WhzJjcCvKJj2CD2b9qjHPi70/JQ1jm0ddKfGtp0BfmM=; b=jK2Bs4uyWC+jcOGk8NJpgy6AhVj99OtKJKeddomFMCahmbTtCGP/1EMGI3Uk76dKu/2he7YQr MHj5Bk+wIAfC0Qq8ZU8mGV3xEfWXNYUa3uV6jFFeOZROh9bhflVxWag X-Developer-Key: i=ju.orth@gmail.com; a=ed25519; pk=uM2SS4lelkuIoYHc7v9N9bgBZ3hS632zJS2xjRJLPLI= This device makes the DRM_IOCTL_SYNCOBJ_* ioctls available via a dedicated device. This allows applications to use syncobjs without having to open device nodes in /dev/dri, on systems that don't have any such nodes, or on systems whose devices don't support the DRIVER_SYNCOBJ_TIMELINE feature. Wayland uses syncobjs as its buffer synchronization mechanism. Most compositors use the DRM_IOCTL_SYNCOBJ_EVENTFD ioctl to perform a pure CPU wait for syncobj point. DRM devices are not involved in this process except insofar that a DRM device needs to be used to access the ioctl. Similarly, a software-rendered client might perform rendering on a dedicated thread and use the wayland syncobj protocol to submit frames before they finish rendering. Again, this does not involve DRM devices except insofar ... as above. As an added benefit, this device removes the need to translate between file descriptors and handles. Signed-off-by: Julian Orth --- Documentation/userspace-api/ioctl/ioctl-number.rst | 1 + drivers/misc/Kconfig | 10 + drivers/misc/Makefile | 1 + drivers/misc/syncobj.c | 404 +++++++++++++++++= ++++ include/uapi/linux/syncobj.h | 75 ++++ 5 files changed, 491 insertions(+) diff --git a/Documentation/userspace-api/ioctl/ioctl-number.rst b/Documenta= tion/userspace-api/ioctl/ioctl-number.rst index 331223761fff..5e140ae5735e 100644 --- a/Documentation/userspace-api/ioctl/ioctl-number.rst +++ b/Documentation/userspace-api/ioctl/ioctl-number.rst @@ -395,6 +395,7 @@ Code Seq# Include File = Comments 0xCC 00-0F drivers/misc/ibmvmc.h pse= ries VMC driver 0xCD 01 linux/reiserfs_fs.h Dea= d since 6.13 +0xCD 00-0F uapi/linux/syncobj.h 0xCE 01-02 uapi/linux/cxl_mem.h Com= pute Express Link Memory Devices 0xCF 02 fs/smb/client/cifs_ioctl.h 0xDD 00-3F ZFC= P device driver see drivers/s390/scsi/ diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index 00683bf06258..c1e7749bd356 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig @@ -644,6 +644,16 @@ config MCHP_LAN966X_PCI - lan966x-miim (MDIO_MSCC_MIIM) - lan966x-switch (LAN966X_SWITCH) =20 +config SYNCOBJ_DEV + tristate "DRM syncobj device (/dev/syncobj)" + depends on DRM + help + Creates a /dev/syncobj device node that provides DRM synchronization + objects (syncobjs) without requiring a DRM device. + + To compile this driver as a module, choose M here: the module + will be called syncobj. + source "drivers/misc/c2port/Kconfig" source "drivers/misc/eeprom/Kconfig" source "drivers/misc/cb710/Kconfig" diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index b32a2597d246..9e5deb1d0d76 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -75,3 +75,4 @@ obj-$(CONFIG_MCHP_LAN966X_PCI) +=3D lan966x-pci.o obj-y +=3D keba/ obj-y +=3D amd-sbi/ obj-$(CONFIG_MISC_RP1) +=3D rp1/ +obj-$(CONFIG_SYNCOBJ_DEV) +=3D syncobj.o diff --git a/drivers/misc/syncobj.c b/drivers/misc/syncobj.c new file mode 100644 index 000000000000..11ef46ddfeef --- /dev/null +++ b/drivers/misc/syncobj.c @@ -0,0 +1,404 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * syncobj.c - Standalone device for syncobj manipulation. + * + * Copyright (C) 2026 Julian Orth + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +static int syncobj_array_find(void __user *user_fds, u32 count, + struct drm_syncobj ***syncobjs_out) +{ + u32 i; + s32 *fds; + struct drm_syncobj **syncobjs; + int ret; + + fds =3D kmalloc_array(count, sizeof(*fds), GFP_KERNEL); + if (!fds) + return -ENOMEM; + + if (copy_from_user(fds, user_fds, sizeof(s32) * count)) { + ret =3D -EFAULT; + goto err_free_fds; + } + + syncobjs =3D kmalloc_array(count, sizeof(*syncobjs), GFP_KERNEL); + if (!syncobjs) { + ret =3D -ENOMEM; + goto err_free_fds; + } + + for (i =3D 0; i < count; i++) { + syncobjs[i] =3D drm_syncobj_from_fd(fds[i]); + if (!syncobjs[i]) { + ret =3D -EBADF; + goto err_put_syncobjs; + } + } + + kfree(fds); + *syncobjs_out =3D syncobjs; + return 0; + +err_put_syncobjs: + while (i-- > 0) + drm_syncobj_put(syncobjs[i]); + kfree(syncobjs); +err_free_fds: + kfree(fds); + return ret; +} + +static void syncobj_array_free(struct drm_syncobj **syncobjs, u32 count) +{ + u32 i; + + for (i =3D 0; i < count; i++) + drm_syncobj_put(syncobjs[i]); + kfree(syncobjs); +} + +static int syncobj_ioctl_create(void __user *argp) +{ + struct syncobj_create_args args; + struct drm_syncobj *syncobj; + int fd, ret; + + if (copy_from_user(&args, argp, sizeof(args))) + return -EFAULT; + + if (args.flags & ~SYNCOBJ_CREATE_SIGNALED) + return -EINVAL; + + static_assert(SYNCOBJ_CREATE_SIGNALED =3D=3D DRM_SYNCOBJ_CREATE_SIGNALED); + + ret =3D drm_syncobj_create(&syncobj, args.flags, NULL); + if (ret) + return ret; + + ret =3D drm_syncobj_get_fd(syncobj, &fd); + drm_syncobj_put(syncobj); + if (ret) + return ret; + + args.fd =3D fd; + if (copy_to_user(argp, &args, sizeof(args))) { + close_fd(fd); + return -EFAULT; + } + + return 0; +} + +static int syncobj_ioctl_wait(void __user *argp) +{ + struct syncobj_wait_args args; + struct drm_syncobj **syncobjs; + signed long timeout; + u32 first =3D ~0; + ktime_t t, *tp =3D NULL; + int ret; + + if (copy_from_user(&args, argp, sizeof(args))) + return -EFAULT; + + if (args.flags & ~(SYNCOBJ_WAIT_FLAGS_WAIT_ALL | + SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT | + SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE | + SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE)) + return -EINVAL; + + static_assert(SYNCOBJ_WAIT_FLAGS_WAIT_ALL =3D=3D DRM_SYNCOBJ_WAIT_= FLAGS_WAIT_ALL); + static_assert(SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT =3D=3D DRM_SYNCOBJ_WAIT_= FLAGS_WAIT_FOR_SUBMIT); + static_assert(SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE =3D=3D DRM_SYNCOBJ_WAIT_= FLAGS_WAIT_AVAILABLE); + static_assert(SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE =3D=3D DRM_SYNCOBJ_WAIT_= FLAGS_WAIT_DEADLINE); + + if (args.pad) + return -EINVAL; + + if (args.count =3D=3D 0) + return 0; + + ret =3D syncobj_array_find(u64_to_user_ptr(args.fds), + args.count, &syncobjs); + if (ret < 0) + return ret; + + if (args.flags & SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE) { + t =3D ns_to_ktime(args.deadline_nsec); + tp =3D &t; + } + + timeout =3D drm_timeout_abs_to_jiffies(args.timeout_nsec); + timeout =3D drm_syncobj_array_wait_timeout(syncobjs, + u64_to_user_ptr(args.points), + args.count, + args.flags, + timeout, &first, tp); + + syncobj_array_free(syncobjs, args.count); + + if (timeout < 0) + return timeout; + + args.first_signaled =3D first; + if (copy_to_user(argp, &args, sizeof(args))) + return -EFAULT; + + return 0; +} + +static int syncobj_ioctl_reset(void __user *argp) +{ + struct syncobj_array_args args; + struct drm_syncobj **syncobjs; + u32 i; + int ret; + + if (copy_from_user(&args, argp, sizeof(args))) + return -EFAULT; + + if (args.flags) + return -EINVAL; + + if (args.points) + return -EINVAL; + + if (args.count =3D=3D 0) + return -EINVAL; + + ret =3D syncobj_array_find(u64_to_user_ptr(args.fds), + args.count, &syncobjs); + if (ret < 0) + return ret; + + for (i =3D 0; i < args.count; i++) + drm_syncobj_replace_fence(syncobjs[i], NULL); + + syncobj_array_free(syncobjs, args.count); + return 0; +} + +static int syncobj_ioctl_signal(void __user *argp) +{ + struct syncobj_array_args args; + struct drm_syncobj **syncobjs; + int ret; + + if (copy_from_user(&args, argp, sizeof(args))) + return -EFAULT; + + if (args.flags) + return -EINVAL; + + if (args.count =3D=3D 0) + return -EINVAL; + + ret =3D syncobj_array_find(u64_to_user_ptr(args.fds), + args.count, &syncobjs); + if (ret < 0) + return ret; + + ret =3D drm_syncobj_timeline_signal(syncobjs, args.points, args.count); + + syncobj_array_free(syncobjs, args.count); + return ret; +} + +static int syncobj_ioctl_query(void __user *argp) +{ + struct syncobj_array_args args; + struct drm_syncobj **syncobjs; + int ret; + + if (copy_from_user(&args, argp, sizeof(args))) + return -EFAULT; + + if (args.flags & ~SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED) + return -EINVAL; + + static_assert(SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED =3D=3D DRM_SYNCOBJ_QUERY= _FLAGS_LAST_SUBMITTED); + + if (args.count =3D=3D 0) + return -EINVAL; + + ret =3D syncobj_array_find(u64_to_user_ptr(args.fds), + args.count, &syncobjs); + if (ret < 0) + return ret; + + ret =3D drm_syncobj_query(syncobjs, args.points, args.count, args.flags); + + syncobj_array_free(syncobjs, args.count); + return ret; +} + +static int syncobj_ioctl_transfer(void __user *argp) +{ + struct syncobj_transfer_args args; + struct drm_syncobj *src, *dst; + int ret; + + if (copy_from_user(&args, argp, sizeof(args))) + return -EFAULT; + + if (args.pad) + return -EINVAL; + + if (args.flags & ~SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT) + return -EINVAL; + + static_assert(SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT =3D=3D DRM_SYNCOBJ_WAIT_= FLAGS_WAIT_FOR_SUBMIT); + + src =3D drm_syncobj_from_fd(args.src_fd); + if (!src) + return -EBADF; + + dst =3D drm_syncobj_from_fd(args.dst_fd); + if (!dst) { + drm_syncobj_put(src); + return -EBADF; + } + + ret =3D drm_syncobj_transfer(src, args.src_point, + dst, args.dst_point, args.flags); + + drm_syncobj_put(dst); + drm_syncobj_put(src); + + return ret; +} + +static int syncobj_ioctl_eventfd(void __user *argp) +{ + struct syncobj_eventfd_args args; + struct drm_syncobj *syncobj; + int ret; + + if (copy_from_user(&args, argp, sizeof(args))) + return -EFAULT; + + if (args.flags & ~SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE) + return -EINVAL; + + static_assert(SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE =3D=3D DRM_SYNCOBJ_WAIT_F= LAGS_WAIT_AVAILABLE); + + if (args.pad) + return -EINVAL; + + syncobj =3D drm_syncobj_from_fd(args.syncobj_fd); + if (!syncobj) + return -EBADF; + + ret =3D drm_syncobj_register_eventfd(syncobj, args.eventfd, + args.point, args.flags); + + drm_syncobj_put(syncobj); + + return ret; +} + +static int syncobj_ioctl_export_sync_file(void __user *argp) +{ + struct syncobj_sync_file_args args; + struct drm_syncobj *syncobj; + int ret; + + if (copy_from_user(&args, argp, sizeof(args))) + return -EFAULT; + + syncobj =3D drm_syncobj_from_fd(args.syncobj_fd); + if (!syncobj) + return -EBADF; + + ret =3D drm_syncobj_export_sync_file(syncobj, args.point, + &args.sync_file_fd); + drm_syncobj_put(syncobj); + if (ret) + return ret; + + if (copy_to_user(argp, &args, sizeof(args))) { + close_fd(args.sync_file_fd); + return -EFAULT; + } + + return 0; +} + +static int syncobj_ioctl_import_sync_file(void __user *argp) +{ + struct syncobj_sync_file_args args; + struct drm_syncobj *syncobj; + int ret; + + if (copy_from_user(&args, argp, sizeof(args))) + return -EFAULT; + + syncobj =3D drm_syncobj_from_fd(args.syncobj_fd); + if (!syncobj) + return -EBADF; + + ret =3D drm_syncobj_import_sync_file(syncobj, args.sync_file_fd, + args.point); + + drm_syncobj_put(syncobj); + + return ret; +} + +static long syncobj_dev_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + void __user *argp =3D (void __user *)arg; + + switch (cmd) { + case SYNCOBJ_IOC_CREATE: + return syncobj_ioctl_create(argp); + case SYNCOBJ_IOC_WAIT: + return syncobj_ioctl_wait(argp); + case SYNCOBJ_IOC_RESET: + return syncobj_ioctl_reset(argp); + case SYNCOBJ_IOC_SIGNAL: + return syncobj_ioctl_signal(argp); + case SYNCOBJ_IOC_QUERY: + return syncobj_ioctl_query(argp); + case SYNCOBJ_IOC_TRANSFER: + return syncobj_ioctl_transfer(argp); + case SYNCOBJ_IOC_EVENTFD: + return syncobj_ioctl_eventfd(argp); + case SYNCOBJ_IOC_EXPORT_SYNC_FILE: + return syncobj_ioctl_export_sync_file(argp); + case SYNCOBJ_IOC_IMPORT_SYNC_FILE: + return syncobj_ioctl_import_sync_file(argp); + default: + return -ENOIOCTLCMD; + } +} + +static const struct file_operations syncobj_dev_fops =3D { + .owner =3D THIS_MODULE, + .unlocked_ioctl =3D syncobj_dev_ioctl, + .compat_ioctl =3D compat_ptr_ioctl, +}; + +static struct miscdevice syncobj_misc =3D { + .minor =3D MISC_DYNAMIC_MINOR, + .name =3D "syncobj", + .fops =3D &syncobj_dev_fops, + .mode =3D 0666, +}; + +module_misc_device(syncobj_misc); + +MODULE_AUTHOR("Julian Orth"); +MODULE_DESCRIPTION("DRM syncobj device"); +MODULE_LICENSE("GPL"); diff --git a/include/uapi/linux/syncobj.h b/include/uapi/linux/syncobj.h new file mode 100644 index 000000000000..c4068fbd5773 --- /dev/null +++ b/include/uapi/linux/syncobj.h @@ -0,0 +1,75 @@ +/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ +#ifndef _UAPI_LINUX_SYNCOBJ_H_ +#define _UAPI_LINUX_SYNCOBJ_H_ + +#include +#include + +#define SYNCOBJ_CREATE_SIGNALED (1 << 0) + +#define SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0) +#define SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1) +#define SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE (1 << 2) +#define SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE (1 << 3) + +#define SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED (1 << 0) + +struct syncobj_create_args { + __s32 fd; + __u32 flags; +}; + +struct syncobj_wait_args { + __u64 fds; + __u64 points; + __s64 timeout_nsec; + __u32 count; + __u32 flags; + __u32 first_signaled; + __u32 pad; + __u64 deadline_nsec; +}; + +struct syncobj_array_args { + __u64 fds; + __u64 points; + __u32 count; + __u32 flags; +}; + +struct syncobj_transfer_args { + __s32 src_fd; + __s32 dst_fd; + __u64 src_point; + __u64 dst_point; + __u32 flags; + __u32 pad; +}; + +struct syncobj_eventfd_args { + __s32 syncobj_fd; + __s32 eventfd; + __u64 point; + __u32 flags; + __u32 pad; +}; + +struct syncobj_sync_file_args { + __s32 syncobj_fd; + __s32 sync_file_fd; + __u64 point; +}; + +#define SYNCOBJ_IOC_BASE 0xCD + +#define SYNCOBJ_IOC_CREATE _IOWR(SYNCOBJ_IOC_BASE, 0, struct syncobj_crea= te_args) +#define SYNCOBJ_IOC_WAIT _IOWR(SYNCOBJ_IOC_BASE, 1, struct syncobj_wait_a= rgs) +#define SYNCOBJ_IOC_RESET _IOW(SYNCOBJ_IOC_BASE, 2, struct syncobj_array= _args) +#define SYNCOBJ_IOC_SIGNAL _IOW(SYNCOBJ_IOC_BASE, 3, struct syncobj_arra= y_args) +#define SYNCOBJ_IOC_QUERY _IOW(SYNCOBJ_IOC_BASE, 4, struct syncobj_array= _args) +#define SYNCOBJ_IOC_TRANSFER _IOW(SYNCOBJ_IOC_BASE, 5, struct syncobj_tr= ansfer_args) +#define SYNCOBJ_IOC_EVENTFD _IOW(SYNCOBJ_IOC_BASE, 6, struct syncobj_eve= ntfd_args) +#define SYNCOBJ_IOC_EXPORT_SYNC_FILE _IOWR(SYNCOBJ_IOC_BASE, 7, struct syn= cobj_sync_file_args) +#define SYNCOBJ_IOC_IMPORT_SYNC_FILE _IOW(SYNCOBJ_IOC_BASE, 8, struct syn= cobj_sync_file_args) + +#endif /* _UAPI_LINUX_SYNCOBJ_H_ */ --=20 2.54.0