From patchwork Fri Dec 7 09:56:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chunming Zhou X-Patchwork-Id: 10717775 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7815C17DB for ; Fri, 7 Dec 2018 09:57:32 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 678332E711 for ; Fri, 7 Dec 2018 09:57:32 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5C0E92E748; Fri, 7 Dec 2018 09:57:32 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id ED4312E711 for ; Fri, 7 Dec 2018 09:57:31 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 480D26E70F; Fri, 7 Dec 2018 09:57:28 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on062c.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe49::62c]) by gabe.freedesktop.org (Postfix) with ESMTPS id AD7046E70C; Fri, 7 Dec 2018 09:57:26 +0000 (UTC) Received: from MWHPR12CA0047.namprd12.prod.outlook.com (2603:10b6:301:2::33) by BN7PR12MB2627.namprd12.prod.outlook.com (2603:10b6:408:29::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19; Fri, 7 Dec 2018 09:57:23 +0000 Received: from BY2NAM03FT032.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e4a::202) by MWHPR12CA0047.outlook.office365.com (2603:10b6:301:2::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1404.19 via Frontend Transport; Fri, 7 Dec 2018 09:57:22 +0000 Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) Received: from SATLEXCHOV01.amd.com (165.204.84.17) by BY2NAM03FT032.mail.protection.outlook.com (10.152.84.228) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1404.17 via Frontend Transport; Fri, 7 Dec 2018 09:57:22 +0000 Received: from zhoucm1.amd.com (10.34.1.3) by SATLEXCHOV01.amd.com (10.181.40.71) with Microsoft SMTP Server id 14.3.389.1; Fri, 7 Dec 2018 03:57:20 -0600 From: Chunming Zhou To: , , Subject: [PATCH 10/11] drm/syncobj: add timeline signal ioctl for syncobj Date: Fri, 7 Dec 2018 17:56:00 +0800 Message-ID: <20181207095601.2058-10-david1.zhou@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181207095601.2058-1-david1.zhou@amd.com> References: <20181207095601.2058-1-david1.zhou@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:165.204.84.17; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(39860400002)(396003)(376002)(346002)(136003)(2980300002)(428003)(189003)(199004)(104016004)(7696005)(50226002)(76176011)(86362001)(1076002)(51416003)(8676002)(48376002)(2201001)(72206003)(478600001)(126002)(11346002)(50466002)(2616005)(68736007)(4326008)(26005)(97736004)(336012)(450100002)(476003)(446003)(36756003)(81156014)(81166006)(426003)(8936002)(77096007)(486006)(186003)(47776003)(5660300001)(106466001)(53416004)(53936002)(14444005)(316002)(305945005)(105586002)(6666004)(2906002)(110136005)(16586007)(356004); DIR:OUT; SFP:1101; SCL:1; SRVR:BN7PR12MB2627; H:SATLEXCHOV01.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; BY2NAM03FT032; 1:5NmCuqQfbDEOq6xgw6YvqjS0zpbBlnML+ZLMKby31zYfutAUN8jZxnRuXyB2zIHyc/6lfXLVnR2HQHSOAHH02FrsZjYp61gaRfzYbgLe7q3BCJSe7iMTT9Xhhx4CqG1X X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a4fe02b0-df5f-40ec-b0f1-08d65c2a6227 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060); SRVR:BN7PR12MB2627; X-Microsoft-Exchange-Diagnostics: 1; BN7PR12MB2627; 3:acI5MTcGsc7CZuhIcxYoYajkpCYKZmnwDvlXYbsIDMtCLFtHX9mWrJCoxT6DUokEYbIMViUy4yzwJ1sqvCeCD5/Oc3s8Gq7QQCvsqyxNXERanobAexNPjdy6LLLN5YvoVgj9Rw0I+paKaHmEfIhJF8VqHlF+w6LrmF7Jj/eZzK2J0TiD9WtP+e1HIVZ7hA3dFY/9P2MQ3uqASTcGDgMqqKhivpgsCW8/U68affPsZuNQUjbjBq3u55SzW65dWJRHLX4IUsPTRK0FTHySXqmIIiUM4OF6CM5DJLjfpwA4ykTQPNvvDjRlWQCp6VqcTkyUv6+DCUa39ua7IfiGqZnS2dPeRGCFdgpCgp45bSZ7HoQ=; 25:V9nNmu5LV6TYHhF7iv47sPuniDd2iAGnpTYkv0yxvS6dH2AWimfN7vVmyahuNGPK+ae5UVRqOGOvJ5ZdOVYAkNpaX3yspZ6xa4zZlvV16Efpl//PNDZ71G1WyOX5/kHmW3YuCwz9djKi6Yt3LEXNRUEYxRzpFzU6fiG4ZlsofVwcy8NP4MtJ22Oa6tBvI27EqiH5RVCQiZBubUuis3H1px4TGB2S/IyCk4cbsrmLBlEy7z68J+TtC0HAk8IHkgpnk0fh32SDweG/5k05VVqKilfVRz3CBz4mIncUl9+42wD3DPHSNN4FwOlXHbn8XTHz2GYDQ51KVKbz5GKvt89KxQ== X-MS-TrafficTypeDiagnostic: BN7PR12MB2627: X-Microsoft-Exchange-Diagnostics: 1; BN7PR12MB2627; 31:s9y8P2zPmM4ypHjLFyMJG13yqDJmYR9FWDDBEofsU1OV5WEB0w+lR7oFBLV1xQaJjJVuJHFhBn/GBu7PFZXMRjy8rCaUyrXn9SC6R5R6HpGZd2lUqMxlw6V7Vt6HWB5+bTeadGySZPxsPanJy0elnyTEX21OorDlp3/JDX4cfW/Uzj4CbhlukwMNgXmaCeEPjrrZVALFsSLdtllNzStFf28pzq0v72T6W0MSzQYPBLM=; 20:gN3qamZFfJa518pupmMxUZ2tJS8SYMkozXppeF3FK8lhMk/kgnij2T7XqST6XVpy5GK7XXL4Usw/pYyPCmD2RgEA3l9kuZHTrXUan2rplPr0UXH1hZzF48OjmnD/ilfur+ZlyaUXcnwvi1/8TFKcPyaQ2nx9eQCa+YozNJbAypRcY7Xm4VXAXPMcn/H9GM8T/W7clGah0JbiICZ80tzqUQULDNC7VCo/xs8G/p0rU6JJHn56Rb0wk3tC+06ptK9CSYedCX+x3TUWU+UNiI1cYzPzEzCo0KfIbkPuqr4HZnTQEz5oqVeloDuGPMorbETx++pQCVl0/Bn/0OSbGOw2CAOdTa88n3ReUoj8AcVb6HKMfhaB3sqJ2TjjqaarKPtkQNBR4W/8pH9eGjP0+nfIuA9AXuXjVs56tot4TEJGgid3Fpy8GbNWmQ4RmwRXuUqJUeUlbrUO4tMTFLp8A2u5KIWg0ruVFte3UXEnmswlBvkmBa+DM0Xd/8iwioYDw/zf X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231455)(999002)(944501520)(52105112)(93006095)(93003095)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(20161123560045)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:BN7PR12MB2627; BCL:0; PCL:0; RULEID:; SRVR:BN7PR12MB2627; X-Microsoft-Exchange-Diagnostics: 1; BN7PR12MB2627; 4:P4FN6zz1DLeJrr+j4OzqDgt0y5P6qd8ymGzBenyV4mucMFakKzwgxLjsXbf6ljvLghmqTJdWDDcItVlG91W2iGDVOK7aIs2N3DAsUWemynk9YfcQi5nYBqMHya64DMamp9C11067Lb5uePOpbbPLomJhldvungbWXUtxt1pw2iUEy7CXgkYKGA/z0VRlgpAetQ6tha2UYPQLSKDkPuJ4w+M4P1TLWfQtEysvDXlNRPNT9fPBfrMqi0d0gQUC/dQORYe6SzOQ+Ryr7mvce6uPvA== X-Forefront-PRVS: 0879599414 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN7PR12MB2627; 23:87NJHVx1IF4ookWUTITKPk5qB3YLJZLP9nXDH32XW?= 7Nl6ZxJazUQkOJ/CDFqvfsHWA2HrHJA1elSYB6n7c8bn/xHCWLgghBiaX8w2s+dEZuRHkY9ZrFbqTGDTo+lT9z9N07pP+Se/Dw9tsJzLBMd3Dqw+f6Zh/nOVD4KRrot6vzo/EARHP6v5OCt5sRPYqRXO6BpjQmDi2LlZVm7jirMMf5i/fWVmPYgt2fJLzmOA8ZKuXxdx2YWuzS5tff9Hqzz6eCe7FqmadZQEjLPm8nmAE/y9lrSoWfEixu+kswRccdOMn+91vgGrtU1v3zDrMlSXfJX2jkRwdY5rws3zRm938qsRUQqUyFCjT5W/JmrezViKusYC1a04Eqh26F6sxDy7eTHusNSNKfmDhU02b/heHxJjwcYr5Tov3XuxmcTPcLVStIu2HeIjnw4UcYi7HFZIo5f550zPrZu81WzblwyGWYxb+lkkehNoTIYc3gU/1Xj9vwZc6l8G16/eylqMpm3+ZzmU0jJBhP1LkRPHiPBbE2gTAFmRXJk1iV9AgubKAEMo9/pNDybv5eeOybHW4IXE4KKd0Fws4cyybbsr1U1PukagWDVW6ZqcU5DOUqhEhS6yAMklBe8JPrDh3nPvu0RDcMTNxci/c9ina5cD60loAGy7fmp1kEZXnp/fr+4D786fGVQzTMK/axREOJz3G4TijBZypcgJSVNShFDqVN+WbSk5SQnEF1Ij5eKYfYiB4i65VMaT1vm7c9WhgEhkJPFy6pvPg5TAt95MXuzlox9IeziQcWRbfnUhfKMVE44rl2T2FZeY2PO8AyiZwm5bpcjOPaMD+9MKWuen7mHnNW6CycjvHpcMJ3hgZQ1u9mLSmUrpm3vdGkfPoqIPNVGY9+rZs3I1npZiq80Zl95sydB+jqACo/gOyilcwkagSMVANZnd4e+jDGx31grOYdEUT0zFZTxd56alsMbMYJeN3jsjVwXV4NIoB2fINHkMhBz0qNKA7UcQRroDRZTZLim2/VZnA9LeztzXfaW0wd82WErG0yQK6oifL3vTyXCDuzKe0tOXzRY1bbPCz03QLLAfTySTLz8Kk8yOr4dGYnvwW1WXVmUDvEgeUfc8AljdWhCmOVwB3hNYrfz1qkiFO1r7RZw3107Rv9Eod7HBbHkK6Ys+EyEIEHx6T89xbmbzR6oPqkdLFXwdqN/Z+q8shpZGf1E X-Microsoft-Antispam-Message-Info: 0SglNB/EtR5pam65WC9F36xCWYJDvcHW2B/fSK4xKj31+37VDB8lggSK5RLgiEe/FgTvCVxPAvRBLvtyN6xsuMNd9kSJ7zeun6LogdD64Qf35VaDN5XnsEzRoGrsq/SsdaFkm5e1s1XpTTbmo/972zCTdCKfhcZ/HbYJWixLvpV4YxrNLpgjtBnL+ouDl6bqEdvgPttJ+qpkJWvdHmNIL48CH4cQr3MFmGsIjP2TuahoIIUn8P897+FFVfeBGxAuCvoXD1sWJxetCvvzzp8FvVjzEioyp0FTsslmf0Qymq3P+phiB5e2LM7MjxcrutB6azxFtasikLEZ7ZL3ReXCJ5pXHu3dZVt+1kRvX2I7ALM= X-Microsoft-Exchange-Diagnostics: 1; BN7PR12MB2627; 6:nz8brE5lZ5B4MvoUv5yAcqwUVAqhQxW9LU1936F14N3smaZPvDscvm1zhMUiNn9EsyWCr2uUrT8Hd+XHLtnwQeRIKriI22BtK7hhTpnNCUOQVXxSfPUBQnsN7thWixw4NDbGqdwHS3vJ2FeIJ9Ov3Err0UaPgOfzCb6bJAjcCP3KjGFcDB9Gyzt2qfbjpgelT85xtpyo2M6lf5mZkno6cNlf73npZs+N1DyHQKZ/kgnzn8kMd+MNrbLB2IYxmdgCqNB/kl/nAtLgz6yxcwJIWt1wB8NA9g3ERpfx4SgjHVRQSNBNTNnDmMQc3LAqEad+vTVklt2l/Sq+Gt+3Eq655o3xEyCu3AOtkD5h9bATcBhSaoV8EMaSQPH5cbwwkBAmdrdYX3ySqhQTMdJOdfiTKsFP9n7WJ2xPIqWjvwLf2gRaIeZo6tU37i44IBKQHB64f75C/TLxFX0Un63ZBQt0qw==; 5:oTPoVHaqXZsoxjg2rPA9RxKy9Lt6/Hj1SMwK0bYNvgxBT+0yCq2YAK2zsBPJTEiu1rrezVdZC5UnQdcp+4pJ/F0k1aJM+t9yXwD2oqlbLegh7ASDUPGyTRmEIUS9n3mdcvUBaScrykmLXwpULxT7pJSwwCq2E0MTVLUwadCStec=; 7:FiP6qdz5J98Gt2sfNrMrVvknfg5PWyWXJjsqiSc5Hj6DEpg3cCUQLkskzB7Q4cx87t/GBcmV716KLp0Xlo4fgi4VcKN7AOaePeSiQNoe4clGpcLANffRhFJevs1xcbxb8ede2T36vXpPOlGxN4Ebsg== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN7PR12MB2627; 20:sFSBPL5RyRJs2P3olbudtVLahzXQjWf180mrX3842ZtKSj9xCUVWvOq/ZRr73se6+P0/isqZAnNugmqbFnYvBNg5c84q3nnV0nsbsGK4jzb3VQQbYliMLEGCQ3b14xwcNiVFUoIY3WrS6UUH5vG9rbIQyFgkfwVRixyFFAFsKy7lxDXEaIE+TqTuECNplcVsfU7VdLAyzE+dO6BcvdJLWDa7QwMQirJk8sGxR+5XYL+uwemgNjs24KX81CKoAmaj X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2018 09:57:22.2935 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a4fe02b0-df5f-40ec-b0f1-08d65c2a6227 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXCHOV01.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR12MB2627 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Chunming Zhou --- drivers/gpu/drm/drm_internal.h | 2 + drivers/gpu/drm/drm_ioctl.c | 2 + drivers/gpu/drm/drm_syncobj.c | 70 ++++++++++++++++++++++++++++++++++ include/uapi/drm/drm.h | 1 + 4 files changed, 75 insertions(+) diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h index ecbe3d51a702..149c2f589ec9 100644 --- a/drivers/gpu/drm/drm_internal.h +++ b/drivers/gpu/drm/drm_internal.h @@ -188,6 +188,8 @@ int drm_syncobj_reset_ioctl(struct drm_device *dev, void *data, struct drm_file *file_private); int drm_syncobj_signal_ioctl(struct drm_device *dev, void *data, struct drm_file *file_private); +int drm_syncobj_timeline_signal_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_private); int drm_syncobj_query_ioctl(struct drm_device *dev, void *data, struct drm_file *file_private); diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index 6b417e3c3ea5..d05586601eb5 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c @@ -687,6 +687,8 @@ static const struct drm_ioctl_desc drm_ioctls[] = { DRM_UNLOCKED|DRM_RENDER_ALLOW), DRM_IOCTL_DEF(DRM_IOCTL_SYNCOBJ_SIGNAL, drm_syncobj_signal_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW), + DRM_IOCTL_DEF(DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL, drm_syncobj_timeline_signal_ioctl, + DRM_UNLOCKED|DRM_RENDER_ALLOW), DRM_IOCTL_DEF(DRM_IOCTL_SYNCOBJ_QUERY, drm_syncobj_query_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW), DRM_IOCTL_DEF(DRM_IOCTL_CRTC_GET_SEQUENCE, drm_crtc_get_sequence_ioctl, DRM_UNLOCKED), diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index cf4daa670252..238ed89593a7 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -1165,6 +1165,76 @@ drm_syncobj_signal_ioctl(struct drm_device *dev, void *data, return ret; } +int +drm_syncobj_timeline_signal_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_private) +{ + struct drm_syncobj_timeline_array *args = data; + struct drm_syncobj **syncobjs; + struct dma_fence_chain *chains; + uint64_t *points; + uint32_t i, j, timeline_count = 0; + int ret; + + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) + return -EOPNOTSUPP; + + if (args->pad != 0) + return -EINVAL; + + if (args->count_handles == 0) + return -EINVAL; + + ret = drm_syncobj_array_find(file_private, + u64_to_user_ptr(args->handles), + args->count_handles, + &syncobjs); + if (ret < 0) + return ret; + + points = kmalloc_array(args->count_handles, sizeof(*points), + GFP_KERNEL); + if (!points) { + ret = -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)) { + ret = -EFAULT; + goto err_points; + } + + + for (i = 0; i < args->count_handles; i++) { + if (points[i]) + timeline_count++; + } + chains = kmalloc_array(timeline_count, sizeof(*chains), GFP_KERNEL); + if (!chains) { + ret = -ENOMEM; + goto err_points; + } + + for (i = 0, j = 0; i < args->count_handles; i++) { + if (points[i]) { + struct dma_fence *fence = dma_fence_get_stub(); + + drm_syncobj_add_point(syncobjs[i], &chains[j++], + fence, points[i]); + dma_fence_put(fence); + } else + drm_syncobj_assign_null_handle(syncobjs[i]); + } +err_points: + kfree(points); +out: + drm_syncobj_array_free(syncobjs, args->count_handles); + + return ret; +} + int drm_syncobj_query_ioctl(struct drm_device *dev, void *data, struct drm_file *file_private) { diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h index 88d6129d4a18..9a5fa3c26f22 100644 --- a/include/uapi/drm/drm.h +++ b/include/uapi/drm/drm.h @@ -943,6 +943,7 @@ extern "C" { #define DRM_IOCTL_SYNCOBJ_QUERY DRM_IOWR(0xCB, struct drm_syncobj_timeline_array) #define DRM_IOCTL_SYNCOBJ_BINARY_TO_TIMELINE DRM_IOWR(0xCC, struct drm_syncobj_transfer) #define DRM_IOCTL_SYNCOBJ_TIMELINE_TO_BINARY DRM_IOWR(0xCD, struct drm_syncobj_transfer) +#define DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL DRM_IOWR(0xCE, struct drm_syncobj_timeline_array) /** * Device specific ioctls should only be in their respective headers