From patchwork Fri Dec 7 09:55:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chunming Zhou X-Patchwork-Id: 10717753 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 D551F13BF for ; Fri, 7 Dec 2018 09:56:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C29D92E700 for ; Fri, 7 Dec 2018 09:56:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B6ADC2E747; Fri, 7 Dec 2018 09:56:21 +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=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 DC47C2E711 for ; Fri, 7 Dec 2018 09:56:20 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9EE706E6F9; Fri, 7 Dec 2018 09:56:19 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-eopbgr740050.outbound.protection.outlook.com [40.107.74.50]) by gabe.freedesktop.org (Postfix) with ESMTPS id CB3816E6F9; Fri, 7 Dec 2018 09:56:18 +0000 (UTC) Received: from SN1PR12CA0098.namprd12.prod.outlook.com (2603:10b6:802:21::33) by DM2PR12MB0061.namprd12.prod.outlook.com (2a01:111:e400:3c11::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.17; Fri, 7 Dec 2018 09:56:16 +0000 Received: from BY2NAM03FT036.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e4a::207) by SN1PR12CA0098.outlook.office365.com (2603:10b6:802:21::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:56:16 +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 BY2NAM03FT036.mail.protection.outlook.com (10.152.85.141) 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:56:15 +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:56:12 -0600 From: Chunming Zhou To: , , Subject: [PATCH 01/11] dma-buf: make fence sequence numbers 64 bit v2 Date: Fri, 7 Dec 2018 17:55:51 +0800 Message-ID: <20181207095601.2058-1-david1.zhou@amd.com> X-Mailer: git-send-email 2.17.1 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)(136003)(376002)(346002)(396003)(39860400002)(2980300002)(428003)(189003)(199004)(50466002)(478600001)(47776003)(2870700001)(106466001)(105586002)(2906002)(72206003)(1076002)(66574011)(81156014)(8936002)(36756003)(68736007)(8676002)(53416004)(50226002)(81166006)(86362001)(356004)(54906003)(5820100001)(6666004)(305945005)(7696005)(110136005)(23676004)(104016004)(26005)(316002)(5660300001)(2201001)(476003)(77096007)(14444005)(426003)(186003)(39060400002)(97736004)(53936002)(336012)(2616005)(575784001)(126002)(4326008)(486006); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR12MB0061; H:SATLEXCHOV01.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; BY2NAM03FT036; 1:w0X5jE1dfE7nhntzvj4KsmZvD3j4SxkC0ukcWQa6bna7PzK/SmeDwjfFN9xHDwUZeA8knaZUFlbQRn1bxpE4qWGMISeZuPR2bOGkRSMCJLKnc75PRaQnWHEZJSJEK6OT X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fc618316-b661-41bf-94da-08d65c2a3a86 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060); SRVR:DM2PR12MB0061; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0061; 3:i7LbE1wTx5WLDcgz09uCs9/zzuMsDPGVT8fEI5OKPLZf6meXmYkDJ9IZstLdZwhX4oqWfNe1sSpl7arZIor9Ctc1pEZqEmpLB60wrpoS2Q9FRRBRBUAiD1eINPMiYK0V5bGOX4pV6diQZgrDSOhUngySJH82CnrTv1a1BC9R2Emt/n4yLnjoJwtMD9GDckOIEW/l9bNPnoe3SrnO78AtvcJVh/e/USEtb9yeoB2eotz97DBFgm5K+u2pZwYZtANuSDQWZHs+Kze4GlQMaNN1sLUPXqkNITQnIV/SWYzi58alqNARnLAPXcvghGiBbUqG62CTJ8xAI4pj5yJwZ+SCi4cGhSG3OQIYeJCfIavB4Ws=; 25:8499Ea45YMXDYScXvod2pqY4dBSKCAsqvU9rqOD8WnSN+DqqSOBK1OpZRGorBvyHnbGOUpTnuTwQE8vd4MIND8gRzcCCtdMGpPXmKGwrK7TQXrYj7fHHNeEGKU0xcohGJRxjN0q0FkLfiEUKUp4uuwqf28uI/dTpk2ZNWHWJYJM/xPZhrA4Zh30ihjzFEe4xiTKX/1s42fQdkwNpdvluQROINqdi1oV2FFNe5ESNi7ufWWvEd/p59f7x730TUpJVAX2lKv82a6CASLwV6sXa7nVeG5tr7bERXavFAON9XLhP+sPFiT5lFlCY/c3GpZ2Eh4kBzzNalfXPkKH55VLNeg== X-MS-TrafficTypeDiagnostic: DM2PR12MB0061: X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0061; 31:uHaFMoLwVUaRtoQDOMzP8KyrQSdh5FwaAmHTiJnmwnqaFfCFwo0l3W/ppUR2aqFFM3B7twK5QYIdAw/z9gL0r3s8SqJkem/LJ3QxcLVk1hg+PRTuwq5CEaElZ9e06pTiCyLe6ErlaV5rYsIuPZciNyDz8ZcauQaQ7LBX7+W2S6oLZllhm9ueqN3sDmSxToruc/yGm9aJuXSeqSdVbZaN5KyE0d6i2O3U6AXe2DFemPo=; 20:85kDOlv0+jKttwqiLm6DTtY6d77LQTLYdQcqHFaJO2+V7l//z6j90l199+i+CzN4CYCd2yFzgQfVTpdGW+4QV4TFG6IOiZ+P6utsMuaBuw7beZD/WvJfTzqNSFj/lCrTn70LRW6KjrFLsWzrgz4qOgR030D2vgEnOuyLdQ7c7MibEXoBl+mzaohGw1/TW4EOqej44GrlBRnF5kSAJKNl7q37cR1L+vAJfycl6OUvnV8G1qALUf+ITpvinWO5tfYeVYK+GOwu9Mk6NEHIuEgYjO7wtkpiMDfYNVjs+iVO+E9c9eF1etsMPMsvSQVfpw/GH8ybyPEw42m9+idR0RZ0vHl1929sWzledpQo3bBWOVLBcCZwHjhziTDQCnFOPjNksyvOFaNjDTkNwiN5Fqu3dE4XHWpM+vKkKUtN6aQC3hju4v99X7SyLjSn07gTMftZIjOagDNWSKJ8hOwcr5uMZKxRJu07TaVnlC+Pm5MmoiZYEUXIRawUcGIXPYLddJIj 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)(10201501046)(3002001)(93006095)(93003095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:DM2PR12MB0061; BCL:0; PCL:0; RULEID:; SRVR:DM2PR12MB0061; X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0061; 4:aanTh597McQHg6j14dLBqAQiBF+N2kBL1T4GaAFOU+Dn/43idRGBXS06RcEMyjHiO2h2bhI+dtUKuFAJ97NECSrw4Va2IePP+zt6W1ZrY5jrlBJ4299O2jatWzgH+luKTVOLbWM3RIDCntbd1qPzXoaetF+n4vVOmiEwszvQXhwaBh7Q/S9uLGswXMKRZOL5eqQYSncEuIjgUKUb44ZD41inRkoMdc9TW6rUrr89bPhkrR98M44YB0hQeVNuuXQInKlTWUlaxevR8v7BaL/U6Q== X-Forefront-PRVS: 0879599414 X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BDM2PR12MB0061=3B23=3AhKapj3M?= =?utf-8?q?ac1G6EbNN3ohh3Dxeq2YNM4rSd2OkEWecyUO2T8NMSg4qGsQgSsl1kDLhtz5uTMtU?= =?utf-8?q?dMZ9Y+VbW0E4vt6rf/vM+mOGqjty+NhrfZDfzKbYL4NKXZ4kH3/kRwSq4/mqZW7u3?= =?utf-8?q?ji1dnro8mP+UFJ4i4hVDWpcLyeFG4fGQO39ChWze9hcK0vyqposGBE02xv+D+swy7?= =?utf-8?q?KA5FtZqfL5/5PTDPSNan6fNXmNrv7JHPi1J8CpXx+yRDGWedXTmqqs/ee43Nc3Wx5?= =?utf-8?q?UWK03tjDfK/+pQLG3cFAixfcHmewPe5RV414O90FWs12+Cf8pcQzHbV+AV/bdhD1d?= =?utf-8?q?WgeIvZMEUE9jEXVlxtjk+qi5QUyudjHnCY5tgtONRHouyCVuvTINpVIQRpNjAS2gV?= =?utf-8?q?q/Nlg+5d0lOfPhBirNnXw7/5eT27OBu7nNhabIuitNsc4wHUG55H0E3ZB1IivYFUq?= =?utf-8?q?4lZpBi0NHHswy6R1WypKptV59FAauQyuky2LjLMxHMXU8F6/HNoAFd8xElcTwe8pt?= =?utf-8?q?x+9OQaVBOwAwNmPrN2rRZarRk6SYzeCG4WC7fPgJceYeGBPJGAbXBJM9AZbjND9Bj?= =?utf-8?q?m462T/HZNnlAhIzm7KztKObJyCSYHE382PRqvovsVBm/7nEIM8+BVoKUThlDTCZWy?= =?utf-8?q?+AWiNi58nSJXwF4aPMa+qTGYjFHywmLi6vyXIlOoIqTiAgJ+ox+cw2aa3ud0e0j75?= =?utf-8?q?r+Ew9Sm2kHuFAzVgYlzvZ9hsmK1jBMME8JvnvlOwYVGeaoq3Y3SWkMW53uBjSRTTt?= =?utf-8?q?gbSB1ILnCdWfJgZccrxk68ZkdAghaj/w2hHL6sfQpCgsoDRaJIaKwSSv1PaeFRg2D?= =?utf-8?q?2eTBiMls+bUaxoo+WUbI2oJxMRklbDtLRtBlGT4u6z6zaJpAAG89fIiIAbL5sS3ak?= =?utf-8?q?MxIphWRMH7by5ZcJqdXLLQ2eqxmRdesUYqFWZaiOVnuB08prbBtfLd7YK5dnPItBJ?= =?utf-8?q?Ppb4X7qHg+6D3RiOkx/YV8CCnxUkmCOhn02TjmJVuLmQV47rokPDAzqJJ1q0p3wJt?= =?utf-8?q?A/qI2KmHKCOmVza4A/s6V83x314psNN+NdyK0KlxfARFJvA/PRACuNHifBFOduiLt?= =?utf-8?q?zwB/rFs3FzlY7qW6dbuMOcBx0WpjqulBaRdfsD4qLSB7zQ2bG8alIEfmDDGvNZXWK?= =?utf-8?q?Tn08XAjpp7P61GfdErz2hx3dxJLk0a4ZYRcCYRe5W51Gd69ZAoKH4b2IQfdbdmh8T?= =?utf-8?q?tiL8Nlw/e9gxfeJIs=3D?= X-Microsoft-Antispam-Message-Info: fBLZPURJ599bF1c80e1XweCa27i3MWEpOyBAojhoi7CXxIGDf25l0cqYyGdW6M7TN4UJ+g2+kTt+3cHjp1ENNbPyY7hEyyecKgDsZIIdO910yKMvyKLvXQe9GxT9p6wMcsFhIp4LbBnAHh/iaoE9Ee3pBFtbeCLdTUmHQEqHA1IZ6Oht7TfiiJkXPy1TyL/hKKb0smNJt6TjQgivJQuR9zLyd0p+jXGLv1Kiu8fw57RWuI9M/FLJ+ImlAADHuOeHL3mhtNrAkiOnNy4oDpXu0LBWB+uk5G1kDcAqakCt0mfYzb7dHiyFSLy/o8A19swexZWMidIB0Le7LH3phMUtBqWu083tIfq3RYlvIMrdt74= X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0061; 6:zbxP8lZ97QEu2h5W1xfZ9cw6mEzaY3uw4HFzCfKZM9fSiS8HojAs6WH9/UwyhcSLiITwKDnrQxkS+iXfI/MJkgwotalm3vGZe6n0XFf4kz61JN5f9y1sdWfJfhrOmtlN915ZBpjfcemPGASD9KTseUCc8KwC9d2051EPj7x9YxQuMJibhAdWCNsBHoyPiyQNLmlBunPtx0zFcFNoQoPnQyGo7DXt/76KSzLPIdQT1dFdHWAVtdsFMNupxKPvQAt+yZnsuZ9uxFhoBosLZmQEbx31Do+a1p4ART0iBUmyu7bW9XDBUnC8OywBT0gubJu6xtjjquI34q7u73X+/eBo+h7NN+XLS1D2c6TIfAQwFk+xnyRjLsjQc0fSJY3fTLx00+J+JNmwah6KKT/vkWA35eAhQLe7RHh3Hop0jIcEoICJfd320wAmwYLvUoC2ZJEXgAxpWwZQsIky91fBI+uz0w==; 5:jk32b8wLor02jIhty4g19WoXDxfTjlZT9FpSvS3KMn4tBbHv8aVrFYC7IpkQb3/Ab2wyku2n0wVeksoKTO3nGa2VDcVthI699tB23n56+oCob1TOA+h5CJNe7W74EyWIXrpfRnct2/8dnFV94Ir1Ed+nr/gX1wOqcSY/v62+8So=; 7:DlXmpUAdLs1a9nB6ZbCGDg+QXId7HpkzFCo/HYR4k547+o3GrthwBdSTBlP6okA65/bA+UbkTFIc0OFBGUbV4tpZ+m3t2KisdR0Bxx0Inju+zoamf9PzyflqupMhxbxg4VxbIp3o0h1VbKNkOu/QVw== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR12MB0061; 20:gETZ3PSDHQOtMBfVjOvjPuaeKKnZuf/FTN4IGO9Mq97Y0FHZ8YpS8OEsr6Z54VTrKW5mtMe1XDl54qncArNg/C9I1jqSidxGuzCGmivB/JE0HVe2VkrQHExZobTkfh1G6R/TDZyJUmLgrxUzQlGC6Ax1+645YvtK2ZXRPwRr1YhaZH3ev6uqf0gzRvnccia/vN6sz1hp9Y43YyiUc6Wr55ilbo1AeY7zXWOa3690d1ugWH9lwre7Wx7eGxF1zLlw X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2018 09:56:15.7909 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fc618316-b661-41bf-94da-08d65c2a3a86 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: DM2PR12MB0061 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: , Cc: =?utf-8?q?Christian_K=C3=B6nig?= , =?utf-8?q?Christian_K=C3=B6nig?= Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Christian König For a lot of use cases we need 64bit sequence numbers. Currently drivers overload the dma_fence structure to store the additional bits. Stop doing that and make the sequence number in the dma_fence always 64bit. For compatibility with hardware which can do only 32bit sequences the comparisons in __dma_fence_is_later only takes the lower 32bits as significant when the upper 32bits are all zero. v2: change the logic in __dma_fence_is_later Signed-off-by: Christian König --- drivers/dma-buf/dma-fence.c | 2 +- drivers/dma-buf/sw_sync.c | 2 +- drivers/dma-buf/sync_file.c | 4 ++-- drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c | 2 +- drivers/gpu/drm/i915/i915_sw_fence.c | 2 +- drivers/gpu/drm/i915/intel_engine_cs.c | 2 +- drivers/gpu/drm/vgem/vgem_fence.c | 4 ++-- include/linux/dma-fence.h | 22 +++++++++++++++------- 8 files changed, 24 insertions(+), 16 deletions(-) diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c index 136ec04d683f..3aa8733f832a 100644 --- a/drivers/dma-buf/dma-fence.c +++ b/drivers/dma-buf/dma-fence.c @@ -649,7 +649,7 @@ EXPORT_SYMBOL(dma_fence_wait_any_timeout); */ void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops, - spinlock_t *lock, u64 context, unsigned seqno) + spinlock_t *lock, u64 context, u64 seqno) { BUG_ON(!lock); BUG_ON(!ops || !ops->get_driver_name || !ops->get_timeline_name); diff --git a/drivers/dma-buf/sw_sync.c b/drivers/dma-buf/sw_sync.c index 53c1d6d36a64..32dcf7b4c935 100644 --- a/drivers/dma-buf/sw_sync.c +++ b/drivers/dma-buf/sw_sync.c @@ -172,7 +172,7 @@ static bool timeline_fence_enable_signaling(struct dma_fence *fence) static void timeline_fence_value_str(struct dma_fence *fence, char *str, int size) { - snprintf(str, size, "%d", fence->seqno); + snprintf(str, size, "%lld", fence->seqno); } static void timeline_fence_timeline_value_str(struct dma_fence *fence, diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c index 35dd06479867..4f6305ca52c8 100644 --- a/drivers/dma-buf/sync_file.c +++ b/drivers/dma-buf/sync_file.c @@ -144,7 +144,7 @@ char *sync_file_get_name(struct sync_file *sync_file, char *buf, int len) } else { struct dma_fence *fence = sync_file->fence; - snprintf(buf, len, "%s-%s%llu-%d", + snprintf(buf, len, "%s-%s%llu-%lld", fence->ops->get_driver_name(fence), fence->ops->get_timeline_name(fence), fence->context, @@ -258,7 +258,7 @@ static struct sync_file *sync_file_merge(const char *name, struct sync_file *a, i_b++; } else { - if (pt_a->seqno - pt_b->seqno <= INT_MAX) + if (__dma_fence_is_later(pt_a->seqno, pt_b->seqno)) add_fence(fences, &i, pt_a); else add_fence(fences, &i, pt_b); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c index 12f2bf97611f..bfaf5c6323be 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c @@ -388,7 +388,7 @@ void amdgpu_sa_bo_dump_debug_info(struct amdgpu_sa_manager *sa_manager, soffset, eoffset, eoffset - soffset); if (i->fence) - seq_printf(m, " protected by 0x%08x on context %llu", + seq_printf(m, " protected by 0x%016llx on context %llu", i->fence->seqno, i->fence->context); seq_printf(m, "\n"); diff --git a/drivers/gpu/drm/i915/i915_sw_fence.c b/drivers/gpu/drm/i915/i915_sw_fence.c index 6dbeed079ae5..11bcdabd5177 100644 --- a/drivers/gpu/drm/i915/i915_sw_fence.c +++ b/drivers/gpu/drm/i915/i915_sw_fence.c @@ -393,7 +393,7 @@ static void timer_i915_sw_fence_wake(struct timer_list *t) if (!fence) return; - pr_notice("Asynchronous wait on fence %s:%s:%x timed out (hint:%pS)\n", + pr_notice("Asynchronous wait on fence %s:%s:%llx timed out (hint:%pS)\n", cb->dma->ops->get_driver_name(cb->dma), cb->dma->ops->get_timeline_name(cb->dma), cb->dma->seqno, diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c index 759c0fd58f8c..dfafa79171df 100644 --- a/drivers/gpu/drm/i915/intel_engine_cs.c +++ b/drivers/gpu/drm/i915/intel_engine_cs.c @@ -1239,7 +1239,7 @@ static void print_request(struct drm_printer *m, x = print_sched_attr(rq->i915, &rq->sched.attr, buf, x, sizeof(buf)); - drm_printf(m, "%s%x%s [%llx:%x]%s @ %dms: %s\n", + drm_printf(m, "%s%x%s [%llx:%llx]%s @ %dms: %s\n", prefix, rq->global_seqno, i915_request_completed(rq) ? "!" : "", diff --git a/drivers/gpu/drm/vgem/vgem_fence.c b/drivers/gpu/drm/vgem/vgem_fence.c index c1c420afe2dd..eb17c0cd3727 100644 --- a/drivers/gpu/drm/vgem/vgem_fence.c +++ b/drivers/gpu/drm/vgem/vgem_fence.c @@ -53,13 +53,13 @@ static void vgem_fence_release(struct dma_fence *base) static void vgem_fence_value_str(struct dma_fence *fence, char *str, int size) { - snprintf(str, size, "%u", fence->seqno); + snprintf(str, size, "%llu", fence->seqno); } static void vgem_fence_timeline_value_str(struct dma_fence *fence, char *str, int size) { - snprintf(str, size, "%u", + snprintf(str, size, "%llu", dma_fence_is_signaled(fence) ? fence->seqno : 0); } diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h index 999e4b104410..6b788467b2e3 100644 --- a/include/linux/dma-fence.h +++ b/include/linux/dma-fence.h @@ -77,7 +77,7 @@ struct dma_fence { struct list_head cb_list; spinlock_t *lock; u64 context; - unsigned seqno; + u64 seqno; unsigned long flags; ktime_t timestamp; int error; @@ -244,7 +244,7 @@ struct dma_fence_ops { }; void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops, - spinlock_t *lock, u64 context, unsigned seqno); + spinlock_t *lock, u64 context, u64 seqno); void dma_fence_release(struct kref *kref); void dma_fence_free(struct dma_fence *fence); @@ -414,9 +414,17 @@ dma_fence_is_signaled(struct dma_fence *fence) * Returns true if f1 is chronologically later than f2. Both fences must be * from the same context, since a seqno is not common across contexts. */ -static inline bool __dma_fence_is_later(u32 f1, u32 f2) +static inline bool __dma_fence_is_later(u64 f1, u64 f2) { - return (int)(f1 - f2) > 0; + /* This is for backward compatibility with drivers which can only handle + * 32bit sequence numbers. Use a 64bit compare when any of the higher + * bits are none zero, otherwise use a 32bit compare with wrap around + * handling. + */ + if (upper_32_bits(f1) || upper_32_bits(f2)) + return f1 > f2; + + return (int)(lower_32_bits(f1) - lower_32_bits(f2)) > 0; } /** @@ -548,21 +556,21 @@ u64 dma_fence_context_alloc(unsigned num); do { \ struct dma_fence *__ff = (f); \ if (IS_ENABLED(CONFIG_DMA_FENCE_TRACE)) \ - pr_info("f %llu#%u: " fmt, \ + pr_info("f %llu#%llu: " fmt, \ __ff->context, __ff->seqno, ##args); \ } while (0) #define DMA_FENCE_WARN(f, fmt, args...) \ do { \ struct dma_fence *__ff = (f); \ - pr_warn("f %llu#%u: " fmt, __ff->context, __ff->seqno, \ + pr_warn("f %llu#%llu: " fmt, __ff->context, __ff->seqno,\ ##args); \ } while (0) #define DMA_FENCE_ERR(f, fmt, args...) \ do { \ struct dma_fence *__ff = (f); \ - pr_err("f %llu#%u: " fmt, __ff->context, __ff->seqno, \ + pr_err("f %llu#%llu: " fmt, __ff->context, __ff->seqno, \ ##args); \ } while (0) From patchwork Fri Dec 7 09:55:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chunming Zhou X-Patchwork-Id: 10717755 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 7D70E17DB for ; Fri, 7 Dec 2018 09:56:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 686D72E700 for ; Fri, 7 Dec 2018 09:56:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 599D82E747; Fri, 7 Dec 2018 09:56:29 +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=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 8CFBB2E700 for ; Fri, 7 Dec 2018 09:56:28 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 142D76E6FC; Fri, 7 Dec 2018 09:56:27 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-eopbgr760088.outbound.protection.outlook.com [40.107.76.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0D0DD6E6FC; Fri, 7 Dec 2018 09:56:26 +0000 (UTC) Received: from MWHPR12CA0034.namprd12.prod.outlook.com (2603:10b6:301:2::20) by BN7PR12MB2626.namprd12.prod.outlook.com (2603:10b6:408:29::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.20; Fri, 7 Dec 2018 09:56:24 +0000 Received: from BY2NAM03FT034.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e4a::203) by MWHPR12CA0034.outlook.office365.com (2603:10b6:301:2::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1404.18 via Frontend Transport; Fri, 7 Dec 2018 09:56:23 +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 BY2NAM03FT034.mail.protection.outlook.com (10.152.84.211) 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:56: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:56:20 -0600 From: Chunming Zhou To: , , Subject: [PATCH 02/11] dma-buf: add new dma_fence_chain container v4 Date: Fri, 7 Dec 2018 17:55:52 +0800 Message-ID: <20181207095601.2058-2-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)(136003)(396003)(39860400002)(376002)(346002)(2980300002)(428003)(199004)(189003)(8676002)(110136005)(11346002)(476003)(4744004)(486006)(126002)(2616005)(356004)(66574011)(105586002)(2906002)(106466001)(426003)(446003)(336012)(2870700001)(97736004)(50466002)(68736007)(81156014)(54906003)(81166006)(2201001)(478600001)(86362001)(50226002)(72206003)(6666004)(8936002)(316002)(104016004)(305945005)(5660300001)(4326008)(76176011)(1076002)(186003)(53416004)(26005)(77096007)(14444005)(47776003)(39060400002)(53936002)(7696005)(36756003)(23676004)(5820100001)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN7PR12MB2626; H:SATLEXCHOV01.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BY2NAM03FT034; 1:ks61EVhhdR+gs3poOM35bFu4wn5yVJ/cy+SRwFLMAVGFL81NVs/YiplcaP0n05wMbqkcyqy08OhmfbR4agwCTY8ya4NaIDhOoc/ZcDgJupD5rpLSDbGy/V7GVx9/QUzq X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0b2070cf-5d7e-4c8a-7dee-08d65c2a3eb5 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060); SRVR:BN7PR12MB2626; X-Microsoft-Exchange-Diagnostics: 1; BN7PR12MB2626; 3:s0ofl5ycrlScczwXfqKvYphCbu1wdCrhxD0vJ2n90iKlLHSX6uEN1t4jV51TqhWvgmfYb4U966xY445XA0RZuddi51SkIpYDFsoZRSbHAadUZAcjRMgUbOhXrlQ1KmZ565s9kiT45/q09/eetRlNUKnpHaX3cxumoMs4+AJG0rN6Pe7JGMGUYUhNruuLvExXnZzLxvGnoZ818nSqkhi4teCLylDVHL+iw8Lf7bdZKIn4g9e5SsGAeEyUcoJQEJbLxuvWamhxNmnYDzCK/HKhgJojaegSkYPn0NHPBn/kk94xopLlpD/yOQv+zFrPumlli8laD4OzUs5HYwE8EXjLfQLyYXLWrdrZjeteTfcoNQg=; 25:Qy7twxTTyJ1WsR0n6lUU69+NMCULTq0EFKBfhKZAvlXeZ4h9GQdbkGiSb9duFvJ99EMfMdJQhPb8JGAUe5G5NleLQsXqRd/jFBjDSxg++M9z8wfsV6IT6RDNf7WK1AdGflXqFek4/Vzr1S15qocYL7LgrmayduGLNp738KYMiJoLh1ppItnmLAhOfg5JNg4CLojRz0cVp5WpxxapwkW3lPhHrptMgGFQ4owwRGRX5/5uTMZYi7JJARMBPCCLxBPEx5QjNQovFRllkNGC7g7mIPsHVwef278ciWu015KTojgoiHzpEXwLhoDFoMTOe8r6XVOwDWfR7MS4Fg1BoYbK3A== X-MS-TrafficTypeDiagnostic: BN7PR12MB2626: X-Microsoft-Exchange-Diagnostics: 1; BN7PR12MB2626; 31:3VUs9fPCL5wKzlfVDVnwJEeOpNBcg5VDbwRW2MUpEVl3KuX8OPBkE95Tj3Zcixu55JkHaDvySzqEp/C/JQyLWA9wR1ifv79vEr9TPyHR5gI19olOXyLA3NtHEpsg2pGIZx9x256++fgp6HBZ7NgjLg0dD12cw20Lmq9PqPBisTHEGlFWGOi7jqBC846A9GP2m+o0qc5lYLEH2+NdgAHO3p1Nvdx0muFFUYikhmln9gU=; 20:IxqkqePG2zttNLQk3tZ6E/onOezfAXJyCA6lUmkTDfyiYIxyAIMQYzPj2q7f/D/t8XC7iNOZD63AGcwww2QvTX9jTPxO8LqcfR1JqS/rEGotdU6c3A2mTzF0/eFSfzQ+QL7MMSNb5vH+C1pRFQm+hFnqkbhJrMWuX+4xxBPzCWuY3XcjGD7STUvmagTYgIISJF9b9PT4ZyzRWz4INaRI+CO0/9lDTuc3m9XdBb+ePrcvDp5p24GrWG4XmxzNfxvYGh1LH+VqFqwaN6/IOI5Pe8e8/+tlcbmG+UBgr6BKVoxcGcjVxG/xRb51XFbV1ZKcgC9N92g7jxYRyvY98VnbV3V2pAyDAUxoUDQtRuBYKrdMPYBuLDKp7jLsjwuaMs0koMtKLF8tGwKjki0eGfI0FAu276c2fmXPIjmMl5Idg223k40AjO+dUH+3+z2+hltCiys+uLb5QLL2GDx+szvRShcUkMe0tH/XZyH48OScI5oLESXARngB9HFguFI8R5mA 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)(3002001)(93006095)(93003095)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:BN7PR12MB2626; BCL:0; PCL:0; RULEID:; SRVR:BN7PR12MB2626; X-Microsoft-Exchange-Diagnostics: 1; BN7PR12MB2626; 4:K+C9qiD55MZIJOQAPFHWOZ1NrFwYnT+0LkuHABdws10leFtr2Z5NXSJ+AFNqQChzeYfnEvZ3UB41uugMiZT2FqHQMb/4UDW8jXcQLskrB0UmW2XVW9N5yh/3h1wLSLNl0HVnjlYSu0ixLe+NYgMS11FtzTodzLCjp8XBCp2dC+LFgRLVEgsG32Drxl1FYUWJR0ADthwpMU7p3VWvU+vTquJ3eGjUcfriv78gLc6NrvIZ3wRCMNDPjFQq49Y3TIPoCjTckYiDoEEdtBqEP9dO6w== X-Forefront-PRVS: 0879599414 X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BBN7PR12MB2626=3B23=3AjuASf9s?= =?utf-8?q?zi1vovIQqL2lTMO3mTP2fr+qvZZXeu8jnSxJDy0fqbIk41lFueo8yzQNFR6D8HeXb?= =?utf-8?q?gHg12plLNEqmDPUCESbOJYwoCwDFCYO/P5dnl8gxoDiTH/Sy5XrOwJBZ3J2fes77m?= =?utf-8?q?YmVh+ljfYbSnzTLL31AnlnXVfsm6U2pfSH8phVQc+hxGDBwNm0ypm/FM6eEJUd872?= =?utf-8?q?mF0+4pOH12gWgtkjDJxqa1VsTeV669MJE+31y2aiYfc4hE/OIweiZooX4ByPTF5ST?= =?utf-8?q?lMW3QSQfKxaOndaAmub41HZT74G7o7ayqxP+CkQD4EZUzP1Vhxy5705S5uc844BxE?= =?utf-8?q?88Tac71fZt92QWVjdoqq2cIV2OH0ZTxtfRxYnd5cAGSs+gafcErkkyuVfvMCi2bV5?= =?utf-8?q?7h5VlNCHBoUbr3sqQVS0/GVOSnTUARFWggi+yh4YL3Dt0AaU0qUnJlP7fRBG8psC2?= =?utf-8?q?i1/6UOTs/xkM7BE91xJINUkzrTtQHP3/slg7qFePcoKQF/vAcihzc7aIID2jo2Wbe?= =?utf-8?q?vtUzIipIbkxvPOEAChwybo0WzxWaJEvPTuxiyV8w1BXje3wVq3SR1Iqi3Bx6PX01t?= =?utf-8?q?ZhkgLvDG4CWiVZrKqI/Oy8TNX0cNCPTpX6tPTMKMulc792wJsYiWEzPlWNsnkUlMt?= =?utf-8?q?ZZxiudtIi4MHRmXdlxEaAX8a6pBbQy4Jc7AXSCcs5Sa6pVkMt4TJTrlEoUn7kQv38?= =?utf-8?q?czqLYYpkQYauRYuqW8Rae3h0HmI+g1MdMNQ6ge6GvNiOpmcnl/It9hRQUanMt5uyO?= =?utf-8?q?ryEcJMB5RUEQSJCxyMXg739c95oYOqT94SdAJcg3TEuWuO/cjEwo/LftiTMg0+V8h?= =?utf-8?q?UIAxk0pnUnkyOilwiyaPNvI19LIDW2XE3qwBB2sy8SbuNNxq8vudpmuG9+omAO2YE?= =?utf-8?q?7BiB5A1vCYGPyWhxqVghMQilztFnkph3sv8jBp0ACW3413LgHsiEWo6SS586spTr6?= =?utf-8?q?MZ7Y9yXBJLUpZEoAzKIe5YS8xPNDyJRk9l0AOxUpsWz3yNDkRICsKKYNISDypqXP2?= =?utf-8?q?iwRCF6+IbjTnvVhgwwex8zaT3ADbR94rGXqX8jpz2pzjO4hktDGo/0D0nwNghLtdt?= =?utf-8?q?/Uhf43eK9JwBi94pC6vcnluzqBECsPE89tJQ4BLK+A6W7AgwRjbj5GTBDTuHEp992?= =?utf-8?q?y7T/+5xt9bybVz/nQ+XGPURVLQbv69V7QyhB4sp5nWt8stX4VfhHefnioiC0yNPqI?= =?utf-8?q?JgAAUWf9toJBcc68ydPl/1nMTkzecKYm56vim7/O/g7wKjOMwFmscWrSeN2PWz8/p?= =?utf-8?q?A1VvYQjDBYreM6cM=3D?= X-Microsoft-Antispam-Message-Info: 5srFcVGc1CtIBpDAQNPX7/5E5vRPgKS7zma19WukFo7mOL9wajNngKZI0hiuyHzKV7gsLGJUHc83K1EJFCj+JdmCJz/iseYBLtrHve/Nu+1rqQmzn8t8A6n+Y/5Ia0CiM++Ctt39P6D1krCxquh4nnq47xDTr3ISZRu3sxX2Gi+bY4Ugc1qD8AlyePux+T3U3C91A2wVjV+c22gPgb3X86lx+9psUKXSJNpI6VSq1Si5ybAJ1kV2ETNPJpLugADrUiPH1MCx/OIkKCpy5MTGxCBllm0NWoMCk5HpgMXgL7h8F6RT90GJbx5oMRqwWtwA1lBieMcnUPw7kewunl5pWoD1egXoY4TjwxHmcoBgASU= X-Microsoft-Exchange-Diagnostics: 1; BN7PR12MB2626; 6:n8IT79edRiqg8MtrhnhozuXyC3dfDR/LKfBV+aV8Riz6teHi0KGqVpqqRZtjGDUcng1ciOpvrOOa15Q0t0pezX9F6v4YIoQYBYuWV7XgbwDew2Xp7J4GC6y8MHsH/jlPtHw/8n+p+MztzuAgsyZEn/jvO8Ttsqo0OF7xOdAJFVC3phypcjW35nRHf/kMtjBuZPiDXZx3Emb4i+BMRbVJijl5YHMJprPFS7srNzT05NRwObJdtWi4KzygSZnzbTRhqKrzKAs0rUBIAv5f0/G4ANlvbmKAYrRiOvm30NmF3llwDBsl004aODpVA2tIeIm6Jmyu+EHCB/kONsmSZA9ZDpua/pinD0qbDrQ7G+Os2Sh0/g3kLuEivmi0bKJH/XztWVqfOmkhdewJnnLALdOLA43gYi6edcSqhzffI1XY3g8RNfv6F6jJr8eiw2ypR1eNEwVkG9o2/l+fJwgAtyZ0Xw==; 5:9JfWXxDr7CJ26V/4eMt0V5ZMYSzOdNhIIZdmYOTK/dIUveJXJ2tgpo/YNtq4BP0bwyNAjOLLLoQqxBBzVmgfRTUiiJpOcb69tRAEpsB1zshb0oinlWCC0wN9sfdBNtdzSjV4hst9/dYiW0JkHvZWzJ2cQPPnGU72bNMWLvkxHNg=; 7:0ntbu5pmxMMIWNdK1r/pcnmbKYLyVMBYNtIvVyeRnuebsMEkIcqdgZfwJcnIi9FCofLG7MTNhAWaOXIlldv93i6vaSsTDMUKCZxIsTqPNfq9Gd+qGlg7RVc1HgBWLxbuV46bEx5EbZ9O3aS0LTXSqw== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN7PR12MB2626; 20:pDYvEv5rmZYMdg74pvrmW12uup/HDgcWR98O7kWe8Mh08Tk8gmmqxmyMqaq6rtRHGuzPPZIMpS/bDQqME+kxHDYhod6BmtufSC3ERSd/aSoVS53l2l7lA1wL4zVwTXMSIej9EeQra+Gco9j7UzTsfYkCsaCKxyae5qZ0otdaQi+eda6WENtPrBx6ETA08A9ts3Ig4onPYWEU7gsFeoS9Ob/wU8T7ur+YRup84VXbiUUKUAj8NxwZvd6R9LDZpNYi X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2018 09:56:22.7311 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0b2070cf-5d7e-4c8a-7dee-08d65c2a3eb5 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: BN7PR12MB2626 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: , Cc: =?utf-8?q?Christian_K=C3=B6nig?= , =?utf-8?q?Christian_K=C3=B6nig?= Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Christian König Lockless container implementation similar to a dma_fence_array, but with only two elements per node and automatic garbage collection. v2: properly document dma_fence_chain_for_each, add dma_fence_chain_find_seqno, drop prev reference during garbage collection if it's not a chain fence. v3: use head and iterator for dma_fence_chain_for_each v4: fix reference count in dma_fence_chain_enable_signaling Signed-off-by: Christian König --- drivers/dma-buf/Makefile | 3 +- drivers/dma-buf/dma-fence-chain.c | 241 ++++++++++++++++++++++++++++++ include/linux/dma-fence-chain.h | 81 ++++++++++ 3 files changed, 324 insertions(+), 1 deletion(-) create mode 100644 drivers/dma-buf/dma-fence-chain.c create mode 100644 include/linux/dma-fence-chain.h diff --git a/drivers/dma-buf/Makefile b/drivers/dma-buf/Makefile index 0913a6ccab5a..1f006e083eb9 100644 --- a/drivers/dma-buf/Makefile +++ b/drivers/dma-buf/Makefile @@ -1,4 +1,5 @@ -obj-y := dma-buf.o dma-fence.o dma-fence-array.o reservation.o seqno-fence.o +obj-y := dma-buf.o dma-fence.o dma-fence-array.o dma-fence-chain.o \ + reservation.o seqno-fence.o obj-$(CONFIG_SYNC_FILE) += sync_file.o obj-$(CONFIG_SW_SYNC) += sw_sync.o sync_debug.o obj-$(CONFIG_UDMABUF) += udmabuf.o diff --git a/drivers/dma-buf/dma-fence-chain.c b/drivers/dma-buf/dma-fence-chain.c new file mode 100644 index 000000000000..0c5e3c902fa0 --- /dev/null +++ b/drivers/dma-buf/dma-fence-chain.c @@ -0,0 +1,241 @@ +/* + * fence-chain: chain fences together in a timeline + * + * Copyright (C) 2018 Advanced Micro Devices, Inc. + * Authors: + * Christian König + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + */ + +#include + +static bool dma_fence_chain_enable_signaling(struct dma_fence *fence); + +/** + * dma_fence_chain_get_prev - use RCU to get a reference to the previous fence + * @chain: chain node to get the previous node from + * + * Use dma_fence_get_rcu_safe to get a reference to the previous fence of the + * chain node. + */ +static struct dma_fence *dma_fence_chain_get_prev(struct dma_fence_chain *chain) +{ + struct dma_fence *prev; + + rcu_read_lock(); + prev = dma_fence_get_rcu_safe(&chain->prev); + rcu_read_unlock(); + return prev; +} + +/** + * dma_fence_chain_walk - chain walking function + * @fence: current chain node + * + * Walk the chain to the next node. Returns the next fence or NULL if we are at + * the end of the chain. Garbage collects chain nodes which are already + * signaled. + */ +struct dma_fence *dma_fence_chain_walk(struct dma_fence *fence) +{ + struct dma_fence_chain *chain, *prev_chain; + struct dma_fence *prev, *replacement, *tmp; + + chain = to_dma_fence_chain(fence); + if (!chain) { + dma_fence_put(fence); + return NULL; + } + + while ((prev = dma_fence_chain_get_prev(chain))) { + + prev_chain = to_dma_fence_chain(prev); + if (prev_chain) { + if (!dma_fence_is_signaled(prev_chain->fence)) + break; + + replacement = dma_fence_chain_get_prev(prev_chain); + } else { + if (!dma_fence_is_signaled(prev)) + break; + + replacement = NULL; + } + + tmp = cmpxchg(&chain->prev, prev, replacement); + if (tmp == prev) + dma_fence_put(tmp); + else + dma_fence_put(replacement); + dma_fence_put(prev); + } + + dma_fence_put(fence); + return prev; +} +EXPORT_SYMBOL(dma_fence_chain_walk); + +/** + * dma_fence_chain_find_seqno - find fence chain node by seqno + * @pfence: pointer to the chain node where to start + * @seqno: the sequence number to search for + * + * Advance the fence pointer to the chain node which will signal this sequence + * number. If no sequence number is provided then this is a no-op. + * + * Returns EINVAL if the fence is not a chain node or the sequence number has + * not yet advanced far enough. + */ +int dma_fence_chain_find_seqno(struct dma_fence **pfence, uint64_t seqno) +{ + struct dma_fence_chain *chain; + + if (!seqno) + return 0; + + chain = to_dma_fence_chain(*pfence); + if (!chain || chain->base.seqno < seqno) + return -EINVAL; + + dma_fence_chain_for_each(*pfence, &chain->base) { + if ((*pfence)->context != chain->base.context || + to_dma_fence_chain(*pfence)->prev_seqno < seqno) + break; + } + dma_fence_put(&chain->base); + + return 0; +} +EXPORT_SYMBOL(dma_fence_chain_find_seqno); + +static const char *dma_fence_chain_get_driver_name(struct dma_fence *fence) +{ + return "dma_fence_chain"; +} + +static const char *dma_fence_chain_get_timeline_name(struct dma_fence *fence) +{ + return "unbound"; +} + +static void dma_fence_chain_irq_work(struct irq_work *work) +{ + struct dma_fence_chain *chain; + + chain = container_of(work, typeof(*chain), work); + + /* Try to rearm the callback */ + if (!dma_fence_chain_enable_signaling(&chain->base)) + /* Ok, we are done. No more unsignaled fences left */ + dma_fence_signal(&chain->base); + dma_fence_put(&chain->base); +} + +static void dma_fence_chain_cb(struct dma_fence *f, struct dma_fence_cb *cb) +{ + struct dma_fence_chain *chain; + + chain = container_of(cb, typeof(*chain), cb); + irq_work_queue(&chain->work); + dma_fence_put(f); +} + +static bool dma_fence_chain_enable_signaling(struct dma_fence *fence) +{ + struct dma_fence_chain *head = to_dma_fence_chain(fence); + + dma_fence_get(&head->base); + dma_fence_chain_for_each(fence, &head->base) { + struct dma_fence_chain *chain = to_dma_fence_chain(fence); + struct dma_fence *f = chain ? chain->fence : fence; + + dma_fence_get(f); + if (!dma_fence_add_callback(f, &head->cb, dma_fence_chain_cb)) { + dma_fence_put(fence); + return true; + } + dma_fence_put(f); + } + dma_fence_put(&head->base); + return false; +} + +static bool dma_fence_chain_signaled(struct dma_fence *fence) +{ + dma_fence_chain_for_each(fence, fence) { + struct dma_fence_chain *chain = to_dma_fence_chain(fence); + struct dma_fence *f = chain ? chain->fence : fence; + + if (!dma_fence_is_signaled(f)) { + dma_fence_put(fence); + return false; + } + } + + return true; +} + +static void dma_fence_chain_release(struct dma_fence *fence) +{ + struct dma_fence_chain *chain = to_dma_fence_chain(fence); + + dma_fence_put(chain->prev); + dma_fence_put(chain->fence); + dma_fence_free(fence); +} + +const struct dma_fence_ops dma_fence_chain_ops = { + .get_driver_name = dma_fence_chain_get_driver_name, + .get_timeline_name = dma_fence_chain_get_timeline_name, + .enable_signaling = dma_fence_chain_enable_signaling, + .signaled = dma_fence_chain_signaled, + .release = dma_fence_chain_release, +}; +EXPORT_SYMBOL(dma_fence_chain_ops); + +/** + * dma_fence_chain_init - initialize a fence chain + * @chain: the chain node to initialize + * @prev: the previous fence + * @fence: the current fence + * + * Initialize a new chain node and either start a new chain or add the node to + * the existing chain of the previous fence. + */ +void dma_fence_chain_init(struct dma_fence_chain *chain, + struct dma_fence *prev, + struct dma_fence *fence, + uint64_t seqno) +{ + struct dma_fence_chain *prev_chain = to_dma_fence_chain(prev); + uint64_t context; + + spin_lock_init(&chain->lock); + chain->prev = prev; + chain->fence = fence; + chain->prev_seqno = 0; + init_irq_work(&chain->work, dma_fence_chain_irq_work); + + /* Try to reuse the context of the previous chain node. */ + if (prev_chain && __dma_fence_is_later(seqno, prev->seqno)) { + context = prev->context; + chain->prev_seqno = prev->seqno; + } else { + context = dma_fence_context_alloc(1); + /* Make sure that we always have a valid sequence number. */ + if (prev_chain) + seqno = max(prev->seqno, seqno); + } + + dma_fence_init(&chain->base, &dma_fence_chain_ops, + &chain->lock, context, seqno); +} +EXPORT_SYMBOL(dma_fence_chain_init); diff --git a/include/linux/dma-fence-chain.h b/include/linux/dma-fence-chain.h new file mode 100644 index 000000000000..a5c2e8c6915c --- /dev/null +++ b/include/linux/dma-fence-chain.h @@ -0,0 +1,81 @@ +/* + * fence-chain: chain fences together in a timeline + * + * Copyright (C) 2018 Advanced Micro Devices, Inc. + * Authors: + * Christian König + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + */ + +#ifndef __LINUX_DMA_FENCE_CHAIN_H +#define __LINUX_DMA_FENCE_CHAIN_H + +#include +#include + +/** + * struct dma_fence_chain - fence to represent an node of a fence chain + * @base: fence base class + * @lock: spinlock for fence handling + * @prev: previous fence of the chain + * @prev_seqno: original previous seqno before garbage collection + * @fence: encapsulated fence + * @cb: callback structure for signaling + * @work: irq work item for signaling + */ +struct dma_fence_chain { + struct dma_fence base; + spinlock_t lock; + struct dma_fence *prev; + u64 prev_seqno; + struct dma_fence *fence; + struct dma_fence_cb cb; + struct irq_work work; +}; + +extern const struct dma_fence_ops dma_fence_chain_ops; + +/** + * to_dma_fence_chain - cast a fence to a dma_fence_chain + * @fence: fence to cast to a dma_fence_array + * + * Returns NULL if the fence is not a dma_fence_chain, + * or the dma_fence_chain otherwise. + */ +static inline struct dma_fence_chain * +to_dma_fence_chain(struct dma_fence *fence) +{ + if (!fence || fence->ops != &dma_fence_chain_ops) + return NULL; + + return container_of(fence, struct dma_fence_chain, base); +} + +/** + * dma_fence_chain_for_each - iterate over all fences in chain + * @iter: current fence + * @head: starting point + * + * Iterate over all fences in the chain. We keep a reference to the current + * fence while inside the loop which must be dropped when breaking out. + */ +#define dma_fence_chain_for_each(iter, head) \ + for (iter = dma_fence_get(head); iter; \ + iter = dma_fence_chain_walk(head)) + +struct dma_fence *dma_fence_chain_walk(struct dma_fence *fence); +int dma_fence_chain_find_seqno(struct dma_fence **pfence, uint64_t seqno); +void dma_fence_chain_init(struct dma_fence_chain *chain, + struct dma_fence *prev, + struct dma_fence *fence, + uint64_t seqno); + +#endif /* __LINUX_DMA_FENCE_CHAIN_H */ From patchwork Fri Dec 7 09:55:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chunming Zhou X-Patchwork-Id: 10717759 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 8EC2413BF for ; Fri, 7 Dec 2018 09:56:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 791762E700 for ; Fri, 7 Dec 2018 09:56:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6B38C2E747; Fri, 7 Dec 2018 09:56:38 +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=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 DD4672E700 for ; Fri, 7 Dec 2018 09:56:37 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 224C36E6FD; Fri, 7 Dec 2018 09:56:37 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-eopbgr750045.outbound.protection.outlook.com [40.107.75.45]) by gabe.freedesktop.org (Postfix) with ESMTPS id 19A176E6FD; Fri, 7 Dec 2018 09:56:36 +0000 (UTC) Received: from DM5PR12CA0066.namprd12.prod.outlook.com (2603:10b6:3:103::28) by SN6PR12MB2638.namprd12.prod.outlook.com (2603:10b6:805:6f::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.22; Fri, 7 Dec 2018 09:56:34 +0000 Received: from BY2NAM03FT003.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e4a::205) by DM5PR12CA0066.outlook.office365.com (2603:10b6:3:103::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19 via Frontend Transport; Fri, 7 Dec 2018 09:56:34 +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 BY2NAM03FT003.mail.protection.outlook.com (10.152.84.105) 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:56:33 +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:56:29 -0600 From: Chunming Zhou To: , , Subject: [PATCH 03/11] drm/syncobj: remove drm_syncobj_cb and cleanup Date: Fri, 7 Dec 2018 17:55:53 +0800 Message-ID: <20181207095601.2058-3-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)(376002)(346002)(396003)(136003)(39860400002)(2980300002)(428003)(199004)(189003)(5820100001)(36756003)(104016004)(476003)(8936002)(81166006)(2616005)(8676002)(81156014)(14444005)(50226002)(126002)(486006)(105586002)(68736007)(50466002)(2906002)(575784001)(86362001)(2870700001)(1076002)(97736004)(2201001)(106466001)(53416004)(54906003)(47776003)(23676004)(110136005)(5660300001)(316002)(7696005)(356004)(11346002)(446003)(53936002)(26005)(6666004)(426003)(76176011)(77096007)(39060400002)(336012)(478600001)(66574011)(4326008)(72206003)(305945005)(186003); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR12MB2638; H:SATLEXCHOV01.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BY2NAM03FT003; 1:GV0tbU3dAwIA7VnqdYBk/X8Y5EQS/SeYK5IYT1+ekyKJYs38awITitA3e+IhQyuWm4zCAakBr+8eqA/eZHzlzNnq8yijnpJSPHVcxObpdapmiXihsTCs61DtWQrSWBDX X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 72b46b11-aafe-47f1-c42b-08d65c2a451b X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060); SRVR:SN6PR12MB2638; X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2638; 3:6UeBLvoovBzDbjs6fOFzcJKdCd/1GmEAZdg1iWcq9EpDOQ87aKEkvnosoP3I1ofQ5ttRcakdevUgvO2SVCf6iVyJYpIb73vr+bgGYbcl/juvdaqLeEqdnOUtXhRf/npT4bGcaMRyTBtpAYOD7HmalrJpZMx0lJKW9b3hNXVamtu8cYqPIfsq7HDZjowQmn4HAgmM95UNsCC0hbsBzNkAIKUlbH2VINCbMlBkkM73J5jhwLMhrDSwqp8lGJozWObyM+tKafFn2SWA42tAJqgN4AkTafv1s1J2ThYIYLK3RfO1XXzPrx0DPAobV8kXn24ji+7VHIYE5II5oLlKLoKczNIhnO5jQR3132Ow1kAxz94=; 25:+Io99ufXhRAglYppkr2TIo9u9K8CvsL+TY4gh16fjyi6XJ6TsyouRA7vbE+Vxe4O3E7lZ/WTGG8SqVQr3p8sdS/giukN8xDQrgSbNP2zHm6rpUNgGEhytYMmxBpmEpZh024yCiJ04YOI8RdWMg5m110O+h0ltxyQubwP74lmk3u8/L+rKYRNW2CJnZ1uosWa1tQ5sSnAwankFL2HKAhGRrjAHZ8frDV6E1sVVu7UxYlcjWXmfxNGRcxasfNz+hhcjp+L4cBx2LW6Dbd6d9A2ZDUkcZeL32pRoOCK4RQpIkBNy717NuCe7EI/p3IFDgysXfrnBDMS3ax/5S6GKQeYlA== X-MS-TrafficTypeDiagnostic: SN6PR12MB2638: X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2638; 31:evA8dOy5ZGaNicY11ke75R+WIlRRCAEFtmL+7ebJspsGV/ZKk5hIGr2gX4jxpOHHUP090UzGEk1GwZcoU1ekeNKDazbrxbLbpPjTDwLMI+AWwDnflB29bts0Iz0NHYc4anLeLJcOQuiVZRW52PKCGeB+RC7UiFXLaLHrGrcyVD37G5pKC+IzVMdwFCXX6KMgSaTNepI1UUexduFXwq7nNa0M1GZEepVQb+SwSiIiRU4=; 20:a2T8eiXsU/d2B8qFijLkJPeglGDjtOopiYI/W/JydcF4PGEbYJoStEL9sjYM1BVrqTfb0pNSJEjdTKZKkKE9/iZxuxOn/Yx1j19AIcEvpTUnwh6bfOtcRw8vLAYJYpjjLpvxQGbnDB0VIm2eWg3Q0MiIkuUs+kBPS3wiBldeVXwwFNkWRB+a/m3c2CRqIjk8fBqhgrQY39+U0I1bn8c1q3n7Um+A6Zl1vahaeXSnpuQer4U+QsBlEnPWUMSwaPk5mXViHS68eorDZyYX4KNgtPwQpojRCpIWoeuxOaeaWTtmwO8R/4Pkqtvxjq03RKRuduU3RCBdqDnQ/BKkghe3QXOCw03/2SNLniSP12LOXo3KNCtEvygc0h5miVWvolfo61jduoqIgoHIy2Hn4XknsEyC89Nf6FsqsaMouyjdwNWoJsdLiDUf87EBe1G3oqUn6gGHR2vrsT1K9IIcYDvK7q9fmvhn9zqC8hFugoI706TsSMUyEhxAC0VfB8ro0/16 X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(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:SN6PR12MB2638; BCL:0; PCL:0; RULEID:; SRVR:SN6PR12MB2638; X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2638; 4:Fcsm3e/PFOY0N6VL/It9eaFWHepgQnoHmY+P78WAkm8WvKREgHBvAIXlLLrXlckhpn9RR9c/kkaEsCHYeFrqfNHodbS7XjNIZ1DH3eanx96MGYytc2x1IsXkUiNUUpukwke6+GAF7E7zlKkhMH8zGIOJxi7TC9sG90+RyWhDNXj6b6UJ/ScocFudBig8flQi9/xwJ6VYg67I9IARisK8IXX79gXPAgy6uzMQn+XvaCuiM59r7h5mvXLFVVPm2bnudlLh+D5rwqySjblglvaAuw== X-Forefront-PRVS: 0879599414 X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BSN6PR12MB2638=3B23=3A3YgWp1J?= =?utf-8?q?JqWqFP58ygl2dN8VuGDCQMm9I/CxCe4v4dUnGSHvJ0A7fIsXpTqpCrg+fKp/kNVzv?= =?utf-8?q?i7vy3g286HURI8KpqeiYrHlvnI0kSUbcY5/VJlyT8+2O4TsJUEY+k0XkXFGqGZaI5?= =?utf-8?q?GDA8eBysguXUdMojImjsb+A3uVE84P9mk9XbTqCVcZbfPRxTPwUmAK/dgIYj5aaKa?= =?utf-8?q?UXB/4e2Gna6oNwdXseOLHD/WHfde7pAfWwxBh51w4hd25J0lCthanxKSzz1JBKTSy?= =?utf-8?q?HoE1bHKJtqMWCZQy2lgtxkJqIRWYuYJL7ZmzhbmpS6p7hIiTSg6WWDkXXiwPoP/Nr?= =?utf-8?q?lDXyLrHSvvmB+gW8snB8CkV87L49kWskYghjqdII/ChljPbJy5Oc4dUYkgJWltf6R?= =?utf-8?q?HiWS4meusdL3P8yTZgxfdLAj6s5SgoUQEj4SIE4hCQtd0ZyJooh2KHSMMDfBf7H0I?= =?utf-8?q?+iCEMHOjDy+JUHMyTjV108URo47pl2QsGVNCFwnRHI4dWZnpoBQFIraRGFkA5uI7A?= =?utf-8?q?Upvl5MhjiY2rFqyUKBW7lYXiQ+ch6LVB/hQZHM+6C6bZZ1/1v7bSAZMMmikc62PDc?= =?utf-8?q?urV8+QCeZOh6AMgn0DMgObCXE3tdDg6R+STrMul3RvVA/QKgUAcqsHW56ElUscTvn?= =?utf-8?q?ikcsuJ9KwjGGjvEEbTJtoiBSMSwO0GnTnFg5ZaJJmb46RzjtSeA5LVEn9fKdDgfzK?= =?utf-8?q?94EuIZzLdULmNnHnCk1VMuYqEB/AOzQSvWxbGoAF27FAt8RrdORYNRsmaGYlWQW03?= =?utf-8?q?7a4d36u5nYogBwS5vhHMaMP83nATFJuhOZZSSkWYbaneb2DuXomfuSZZPg170syGi?= =?utf-8?q?ot30zVtsqp31OX5lSEgVied5yVOOpq9mIAkXK6/vXz+XW/n/SeY8IJPsZHuDqOweT?= =?utf-8?q?8u5iOCMNQzdV38dF0snXajJeIfbQtgteuPNzTCcTTXxCoykDVMRS8/gjFPNrfuNOv?= =?utf-8?q?YbPiWy+QurFoHsBjN57H7RGVv7edYqBjJaa2F+znL47LUI8GsOdTFRR9fBy71S7p9?= =?utf-8?q?KwakCJyODW6ZuEQHTOHPswuo3Vu/VYq16SJVIaffzGQmf6VRZtzbwVQ/VCeVkYVhN?= =?utf-8?q?7VtxSZL17MuPdnQMj6QzXLymtV06feP2ZGDEx+4scCRPV3nFrcBVuHaIiQeDE873G?= =?utf-8?q?+8al+QHjOGXJxC3db1Ild/lridWe8d7X7uNYK4zjdBxNC5Ak1jingVtxfhAHuU/5e?= =?utf-8?q?4MPK8o+qyUr3mPZQMvpY0Xm6/MsFUk9ksyu/nx5ZLIqAhstelO7N2eYEg8sA=3D?= =?utf-8?q?=3D?= X-Microsoft-Antispam-Message-Info: ldM393ONTrpbbVqvzrQoYguC/HfYOW4tYSGzTr6REy4c4ceeRnK3SDGO/GGcZ+rB6/M4DFaLJVt8G1HhRs30vbPs/sfgYWD3Hu4O6J278l5sbwCa/njMvZ71tyIPX1G1qmzNGgnC4NDINs/x22O+gSwkIISYx3w2NlfdcGT3x1ZXU6DIwEajzxHoULV4kpdiTEFHdx71M3wVQkft5uXOfB7mjGxZbfZgxXrjy6tcxdSCehkHRxbqdPnm7n+9a1NxfETP8vipbXq270rbRBER4MvH0BE3dtCUTLR1rDy90CQkP93uc/Wechhiv8SxONd5Fe+VuPBhAFstVK2BQ5VY11aTOdxxZVGSU/CtiEiyRbU= X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2638; 6:eZlOKO0AkNutfKBjEIOnHzay0L2nEZnQehUQDuP6Nry+aguzNaLTy/mw/e3siRmnk6R8rfn30yMEXL1DUV00gBZrZCfw4u4kcV2rAXFWsWrknmg9IsYA6FQ5MLUZ6V1N4cJ544ADo1We0CngQPNsto7AAQn8N0QyZTR4CRD96Vsa8UH1Y9XxTw7OZstr+zMuIeinXwtTG+4/TuSoSQLyxf0vw7ZM3DE9qZxBqegLwplX6rupy4ZVV9TC4C++vsC83z/Dx+witL/+UEIV6hDdGFdFJ8XeQInKvnCAqVIsxt2MjCzgpGxTAwjFTy3VTA3FRhdbBnFqwZ2hJ3JFdwy6v7RwujJuUM5kdy0aRXsefcPArEBzIkZGBkBaDwVuDNk6biaIR70sQQQ0At0rPeF9FEYUl2vsqhHOCJytR13Cl2nTebgsFvHiKPhPywcK7m+okZ4h9gpIE5oFy51oankt7A==; 5:JD4oc2UqBopo+kUY2DohMGYvCn3IW4euqJXLKnF8jPxYkEvtdfdCGp6DDSRjGatA8jxwTs6ZeZyDQfHLrQxU8D606NREtZH78KsbphmSa728R8n8GMht/umhLF3ESnu8DVxoJ1BeSbt3bAZiSD2LtyvTccoMV/2thrUYgzTd/oA=; 7:1T+5Yo5kq6oVL3IlF9Kj3xFrKFagDyXd2wrjq7G62NdMbe7HKECn4Gm53Cbon80p/5Kj3zHKo/dAprf84jbr9M35l9x/VXS4OcBIcxBH370CAbRB9IdTSiouZPmJFw4G/wpruIu5tWbxpuwwGTpFGQ== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN6PR12MB2638; 20:8guKW4c9MjiXjgfu8v6BCHFfUY4IU08kVVzmVaaHmdyfphP8Om4O9KZxYDFfdLGh9whx3RuhrjTi2+1RC+nrYsqGFAdQVCA1+VJ1fJeDjzyGVnOcgfIMtqr6m/reTri8oRqC1da/WrcGrH719jiIThOdAu5d8SLoFb7jgValBfno4sQplBvjLeBdzFjkladdAbwdcLLwkGogTVmoKq8LbBvle6eUrMWCOJ+BpamuAYSfwi6JeuX37Q1jqduMfoDc X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2018 09:56:33.5614 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 72b46b11-aafe-47f1-c42b-08d65c2a451b 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: SN6PR12MB2638 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: , Cc: =?utf-8?q?Christian_K=C3=B6nig?= , =?utf-8?q?Christian_K=C3=B6nig?= Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Christian König This completes "drm/syncobj: Drop add/remove_callback from driver interface" and cleans up the implementation a bit. Signed-off-by: Christian König --- drivers/gpu/drm/drm_syncobj.c | 91 ++++++++++++----------------------- include/drm/drm_syncobj.h | 21 -------- 2 files changed, 30 insertions(+), 82 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index db30a0e89db8..e19525af0cce 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -56,6 +56,16 @@ #include "drm_internal.h" #include +struct syncobj_wait_entry { + struct list_head node; + struct task_struct *task; + struct dma_fence *fence; + struct dma_fence_cb fence_cb; +}; + +static void syncobj_wait_syncobj_func(struct drm_syncobj *syncobj, + struct syncobj_wait_entry *wait); + /** * drm_syncobj_find - lookup and reference a sync object. * @file_private: drm file private pointer @@ -82,58 +92,33 @@ struct drm_syncobj *drm_syncobj_find(struct drm_file *file_private, } EXPORT_SYMBOL(drm_syncobj_find); -static void drm_syncobj_add_callback_locked(struct drm_syncobj *syncobj, - struct drm_syncobj_cb *cb, - drm_syncobj_func_t func) +static void drm_syncobj_fence_add_wait(struct drm_syncobj *syncobj, + struct syncobj_wait_entry *wait) { - cb->func = func; - list_add_tail(&cb->node, &syncobj->cb_list); -} - -static int drm_syncobj_fence_get_or_add_callback(struct drm_syncobj *syncobj, - struct dma_fence **fence, - struct drm_syncobj_cb *cb, - drm_syncobj_func_t func) -{ - int ret; - - *fence = drm_syncobj_fence_get(syncobj); - if (*fence) - return 1; + if (wait->fence) + return; spin_lock(&syncobj->lock); /* We've already tried once to get a fence and failed. Now that we * have the lock, try one more time just to be sure we don't add a * callback when a fence has already been set. */ - if (syncobj->fence) { - *fence = dma_fence_get(rcu_dereference_protected(syncobj->fence, - lockdep_is_held(&syncobj->lock))); - ret = 1; - } else { - *fence = NULL; - drm_syncobj_add_callback_locked(syncobj, cb, func); - ret = 0; - } + if (syncobj->fence) + wait->fence = dma_fence_get( + rcu_dereference_protected(syncobj->fence, 1)); + else + list_add_tail(&wait->node, &syncobj->cb_list); spin_unlock(&syncobj->lock); - - return ret; } -void drm_syncobj_add_callback(struct drm_syncobj *syncobj, - struct drm_syncobj_cb *cb, - drm_syncobj_func_t func) +static void drm_syncobj_remove_wait(struct drm_syncobj *syncobj, + struct syncobj_wait_entry *wait) { - spin_lock(&syncobj->lock); - drm_syncobj_add_callback_locked(syncobj, cb, func); - spin_unlock(&syncobj->lock); -} + if (!wait->node.next) + return; -void drm_syncobj_remove_callback(struct drm_syncobj *syncobj, - struct drm_syncobj_cb *cb) -{ spin_lock(&syncobj->lock); - list_del_init(&cb->node); + list_del_init(&wait->node); spin_unlock(&syncobj->lock); } @@ -148,7 +133,7 @@ void drm_syncobj_replace_fence(struct drm_syncobj *syncobj, struct dma_fence *fence) { struct dma_fence *old_fence; - struct drm_syncobj_cb *cur, *tmp; + struct syncobj_wait_entry *cur, *tmp; if (fence) dma_fence_get(fence); @@ -162,7 +147,7 @@ void drm_syncobj_replace_fence(struct drm_syncobj *syncobj, if (fence != old_fence) { list_for_each_entry_safe(cur, tmp, &syncobj->cb_list, node) { list_del_init(&cur->node); - cur->func(syncobj, cur); + syncobj_wait_syncobj_func(syncobj, cur); } } @@ -608,13 +593,6 @@ drm_syncobj_fd_to_handle_ioctl(struct drm_device *dev, void *data, &args->handle); } -struct syncobj_wait_entry { - struct task_struct *task; - struct dma_fence *fence; - struct dma_fence_cb fence_cb; - struct drm_syncobj_cb syncobj_cb; -}; - static void syncobj_wait_fence_func(struct dma_fence *fence, struct dma_fence_cb *cb) { @@ -625,11 +603,8 @@ static void syncobj_wait_fence_func(struct dma_fence *fence, } static void syncobj_wait_syncobj_func(struct drm_syncobj *syncobj, - struct drm_syncobj_cb *cb) + struct syncobj_wait_entry *wait) { - struct syncobj_wait_entry *wait = - container_of(cb, struct syncobj_wait_entry, syncobj_cb); - /* This happens inside the syncobj lock */ wait->fence = dma_fence_get(rcu_dereference_protected(syncobj->fence, lockdep_is_held(&syncobj->lock))); @@ -688,12 +663,8 @@ static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs, */ if (flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT) { - for (i = 0; i < count; ++i) { - drm_syncobj_fence_get_or_add_callback(syncobjs[i], - &entries[i].fence, - &entries[i].syncobj_cb, - syncobj_wait_syncobj_func); - } + for (i = 0; i < count; ++i) + drm_syncobj_fence_add_wait(syncobjs[i], &entries[i]); } do { @@ -742,9 +713,7 @@ static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs, cleanup_entries: for (i = 0; i < count; ++i) { - if (entries[i].syncobj_cb.func) - drm_syncobj_remove_callback(syncobjs[i], - &entries[i].syncobj_cb); + drm_syncobj_remove_wait(syncobjs[i], &entries[i]); if (entries[i].fence_cb.func) dma_fence_remove_callback(entries[i].fence, &entries[i].fence_cb); diff --git a/include/drm/drm_syncobj.h b/include/drm/drm_syncobj.h index b1fe921f8e8f..7c6ed845c70d 100644 --- a/include/drm/drm_syncobj.h +++ b/include/drm/drm_syncobj.h @@ -28,8 +28,6 @@ #include "linux/dma-fence.h" -struct drm_syncobj_cb; - /** * struct drm_syncobj - sync object. * @@ -62,25 +60,6 @@ struct drm_syncobj { struct file *file; }; -typedef void (*drm_syncobj_func_t)(struct drm_syncobj *syncobj, - struct drm_syncobj_cb *cb); - -/** - * struct drm_syncobj_cb - callback for drm_syncobj_add_callback - * @node: used by drm_syncob_add_callback to append this struct to - * &drm_syncobj.cb_list - * @func: drm_syncobj_func_t to call - * - * This struct will be initialized by drm_syncobj_add_callback, additional - * data can be passed along by embedding drm_syncobj_cb in another struct. - * The callback will get called the next time drm_syncobj_replace_fence is - * called. - */ -struct drm_syncobj_cb { - struct list_head node; - drm_syncobj_func_t func; -}; - void drm_syncobj_free(struct kref *kref); /** From patchwork Fri Dec 7 09:55:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chunming Zhou X-Patchwork-Id: 10717761 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 5891613BF for ; Fri, 7 Dec 2018 09:56:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 451A22E700 for ; Fri, 7 Dec 2018 09:56:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 38B9D2E747; Fri, 7 Dec 2018 09:56:45 +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=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 D0B382E700 for ; Fri, 7 Dec 2018 09:56:44 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8A8136E703; Fri, 7 Dec 2018 09:56:43 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM04-BN3-obe.outbound.protection.outlook.com (mail-eopbgr680065.outbound.protection.outlook.com [40.107.68.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 89E136E700; Fri, 7 Dec 2018 09:56:41 +0000 (UTC) Received: from DM5PR12CA0013.namprd12.prod.outlook.com (2603:10b6:4:1::23) by BYAPR12MB2631.namprd12.prod.outlook.com (2603:10b6:a03:69::16) 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:56:40 +0000 Received: from BY2NAM03FT058.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e4a::206) by DM5PR12CA0013.outlook.office365.com (2603:10b6:4:1::23) 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:56:39 +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 BY2NAM03FT058.mail.protection.outlook.com (10.152.85.184) 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:56:39 +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:56:37 -0600 From: Chunming Zhou To: , , Subject: [PATCH 04/11] drm/syncobj: add new drm_syncobj_add_point interface v2 Date: Fri, 7 Dec 2018 17:55:54 +0800 Message-ID: <20181207095601.2058-4-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)(376002)(136003)(346002)(396003)(2980300002)(428003)(189003)(199004)(76176011)(36756003)(2906002)(53936002)(11346002)(39060400002)(47776003)(50226002)(486006)(126002)(476003)(305945005)(446003)(1076002)(23676004)(575784001)(14444005)(426003)(5820100001)(2616005)(7696005)(6666004)(72206003)(356004)(478600001)(26005)(316002)(81156014)(336012)(86362001)(105586002)(53416004)(97736004)(104016004)(110136005)(186003)(5660300001)(8936002)(50466002)(2201001)(77096007)(4326008)(106466001)(2870700001)(81166006)(8676002)(68736007)(54906003)(66574011); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR12MB2631; H:SATLEXCHOV01.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; BY2NAM03FT058; 1:o0FPSs9ZBfev2HQ8QmWR7tJOlk69ovQWimpLK4HcbCve+GDx3NRDNNxSOwh0Y1vSv987I2j+uMVrGm3+QTGyBJi3hvgTlmxT8ox2h33R2kB6w+zOnQ7XvNpQkBGylHSx X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fe675567-6af0-4214-948b-08d65c2a4865 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(4534185)(4627221)(201703031133081)(201702281549075)(5600074)(711020)(2017052603328)(7153060); SRVR:BYAPR12MB2631; X-Microsoft-Exchange-Diagnostics: 1; BYAPR12MB2631; 3:v/h3oBizLnyvOtGrSVevYCNDSo5/f3CTUtpbmfKgtgb9A+Kafo74uIoPssO3oOBTI+OsPQpOT1mALL5hOX3xSNXP16lMj4prcAsjnqqGpCSQfO4Q9ZTiaqn3JL8WZIVAo9zCmmlt+hfmuEH35+k3XwsOG7U9vdpBP9VYMEL4LErfeCPfNrqZA4olU6+iM9bd/LQ4fBONuEwGyGRTMUzMkYn9VkDy4cyhzqxGXLQlzyGiMS+1yhBBBtB1QCoaM72V8TtXDryNN/PyKYe8TKkxYW84UX6Shb7UPOWPCKBK9JCz2NY9BV0zepnyywICtMdkYrKm3K2zir1mLzPnhM6XL/DXhfMHlKwQbH6VG4QD8co=; 25:tRfnpdCx8+jRsUAsGlFJf0BLx15Pm4VRRDZGpoyca+FQaCXhFqD1gY2tfJXwEpn8dEAnhTWzjPP/Dn9LDk+4rnf0FQ3Vh5F7RxLfxm1pwIP+0UoF5llu2IrslrBOnq0u1YwIQwI6r5EJGW/1oRwP9HMZLHXJuXcUPErzyBH4uZjOvLmBmqW8Z90wbLYSE1e2QGoEhGXuH18b5B4N746LXk30DXpc+Um5hUxAIPHB93TfVBzdfJx8bgY7EgwTGmtMgAhT6Awi8P0cX3P+R3NP8Q9Fh7rv7t7oCwlZGT1h+BAa3LZ/GLiCu4FjOoi6VFcvftqaf6kRLt4JPOgWptIOCQ== X-MS-TrafficTypeDiagnostic: BYAPR12MB2631: X-Microsoft-Exchange-Diagnostics: 1; BYAPR12MB2631; 31:vFuxzs0TJAD2ckQuR4OPCcVFU57x30eFHQAqpO9HaDq2iVz7Ur6FseupfEEeg42B5fDpl9M2/28+NPdqxHhNkR617iI+ED3p2fYmXL7UGAW1L2Sk2gOFQyReoyMthU/J5Y28JtZFao5BvTnRqoYhb4Krhno/3xIesj2YgvKj7QiIes8uB9pe5Y5GBhzDWjmmo4RjdZOB6eXKMu8TznAJpJPujZp5b2ylD/7hIYFMDu0=; 20:cH1I67RIrBoMH/slL9TUruMyDWs2hiJ7hoMr1BdFIq5eapC8xxwgLmEBmxAIbRoJIooanajL1fDecR7hRbV+0Woious1mM8gL5/HFN/r8C2BnHckwKX/CbupvxxlEoecUGk9TxLPQYLTQGmmQExPWu8JySeFMAM1xCebN+gP1agEMCP+s62OK6Yta+033M9zzq7UCJUqnWmeUOVMrtNv5uj9R3V0NoNQ/y0nBy7fgw0RegkbmPRt5fKEBG/lozFJP6LC5AKJAqlzmocPqPXLRSH8FnaJxRva7X+5vuUf43BjRXmCMZ7Ay8t7nV8USvl8C3erMqcnUlrJMrMqRQ/X6tCCjQrmdoUAL8Ry3XsF/It3KmdmuBDfCbF59iWtH8kh9paHeWq6FIDCyhtH+0z6MsgWgVGr8QjPiDkPfUMTfBukd5muUaZOnpmNKUBLOkKUJan3WVDcoEv5ERzuJ058oi7k+YMbMCQbPXtv0Md9gkXRm9ldYLCYQ7lD0dw9vVZU 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)(10201501046)(3002001)(93006095)(93003095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:BYAPR12MB2631; BCL:0; PCL:0; RULEID:; SRVR:BYAPR12MB2631; X-Microsoft-Exchange-Diagnostics: 1; BYAPR12MB2631; 4:hqz/j9PCH/iVQimCUmVwxKxOqGlptVA1e8RsgLb1e+swdlt5N/bZ3IxqwVLMeJlD1voLO1sJDHAoPL7gcWx0nnDp8Vh20FnTWnr1zeJYLJHK2YPiDzxEyYnmxZBdIerjvTrvXKiEoFQjwlhWqEOf/J4K+96YXf6TUPzwwTWdmb9aHlmYTynBGSEwEyNT2cs50WStbABCVf33ZY75d5oO6sSxxaKLw8oJlIpuS3p48x9mXUdON75cyQlkzR3L9co6duxG0So/DNOQo2bl4nkIdg== X-Forefront-PRVS: 0879599414 X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BBYAPR12MB2631=3B23=3ABDKwxPv?= =?utf-8?q?+J5SBFonQqwpXELl9o0GsZA84H1dBSEY3MkoCEyQBjQQy2fTl1BbshnZ6VRa3zQhH?= =?utf-8?q?+mK1iFQ0y4RRqZ8KRAby6eLivsEk0XSejlf4vEq1Pax0dyuiv2avZWDaXeGU5PW9U?= =?utf-8?q?RfZxzT4CuXvPLr8P1x6h/U3EcXRrY05Jmp1XzCe6FqApaiJ7pLC4zenQxZhYPMKyM?= =?utf-8?q?ZlQ0rAdwFGSt1zjfJePb8sxr4pft8fKJzM7KPpCMvSrwfCVT1DJUIUBFnR0bBRwgS?= =?utf-8?q?95dtZPU6oLrHjFGy4q+t57SecudZ6xCrngU7ZxvZsH2/dwCcQMFssdrgIgNQpixag?= =?utf-8?q?92lNV2+ISH/ATVdCvVRdUq2LdeAVJ9LirRCilyPcrTiw3H0HoWa3j1r6PTqytzfuZ?= =?utf-8?q?1nplrl+zA5bGu2lqmxCqoJVaCkbAQCpSnVakC3Gcu/0awIwr5/2GPZnUk6kwwxaw7?= =?utf-8?q?IqV+txm/m1KFA6wTUnqfsa8jKDJQRHBWEVtYd4caryPxFKuYrIFTqC93jKw5lKCq2?= =?utf-8?q?GlUszU9yp/0+FE7qJXaBnbsBk7D4g9fdQ5mWd2le2snz+2jA/zQkrRfsBXFycnTdT?= =?utf-8?q?dJAagCfAmRlsjoJeOLipIZF8OBw/v+AgB3/plSM7XLMMQIdRnn11JL4PoP7FVv8fm?= =?utf-8?q?p2A09QmSAkTQQrqvlQBaPQ04iTWjQuWo8gXpmD8aiys5b25flwsMJfIFxzPMvrcVq?= =?utf-8?q?F0uJhA3y0fS7cfpStc8Qxq4iVNiWbdaENooNT5/+XnxXmQ/SMkJO/V3rv8GkFFKR0?= =?utf-8?q?xctTh8jrQPxI5zW/oLiSMYJMTja5cQQ0ixd10TwNugxv2XJO6RVNa9g6cHTh6vwlC?= =?utf-8?q?HWwXM+RE0AFyTZRGyzLF2CIQZwfTbDp7fKU1Vyq4yYXEvPm1B1RG78a0mKiV2pxsw?= =?utf-8?q?mIF4YJ6lI00oj2Ti6IxXHgGFQNnzB6QVobwI8/g38a3CxFpU51xv8nYiXed4jFze9?= =?utf-8?q?tQSyWsTI2Z/NGmaImN0tON1ba0phC9lCGjAcSNdKfZBWuJbTlRrAbWLY2vnLarMzX?= =?utf-8?q?oxz0Yq9UVcgoV45DZ22H4ksXTIdO0xrEOQWJueBTx/6MLJ8eODim5GZUTBpWO/uPG?= =?utf-8?q?f/UQENFdX1Hg9fO9SRzDCN6lm/cy5gjV643J/DnsEmG2WourHkVoC1DUF3MwPexil?= =?utf-8?q?xL0S2OnOIRloBMtR63Iv1lmgQJcD3HM0dNXJmtCof2X4Ki2OsqDJ4Mul2TAKVE9lk?= =?utf-8?q?Z8Av5v5bVyoCrmXk6CW2E8QZQgGLPbImmG3oY5KEgFHHLJC9wm5JUKfIDZtA=3D?= =?utf-8?q?=3D?= X-Microsoft-Antispam-Message-Info: cs6ekG1TijR93CubXEamMWSz+ijceclNVVZaRrKEuwceyCvgdH7AB8x7LhggN8I186+rnGu4QLSlEdyn5Ccj7NvIxveTYpCIoxkhRjf/POKQeijeXU7ES0DLBQBhstNY7uIIWJ9gmpY4qNQ9krJipR2Hpq4YQh+PVYiERTLETtjg0hhRu3biwF0nPTYfYQggAYy4r4AGhqCrfPsoYBV93OA2ardOi/oFaY7liB5sNkLU8tlvnz/jxk940mChndXFwPx4TSm2I2HOg2EaaASgz7Ld899giu0Iqt1RmylhGyqsED0Sxd/b90E/P3P/lZQnTS0frW8gX9YUBSGai+Y0z4g0e6LkYEn7Eii59DifxZ8= X-Microsoft-Exchange-Diagnostics: 1; BYAPR12MB2631; 6:07VlQs7g/fGpxbi/hfsyEPOnAgPye0ojMhd/XJ69a/0A9Thro+4PErBIOKsy0inycIN9tkd/izFJrwfqBivHOcofB9dvFPsQ0QBT5nEXepqFMWaNihEJxObxDFSBfN4k6cgD11bIZYqDY3wkb6JNJePdH0LGqkhRF7+LEEHXKU3669hBglJ1IqmB87rSr/7UPWFbhVY2sVTv9H0KqIszK3pDm1+xf7LxG/Xl0SDDVAXeZE6VNoiXwd6lkFnXAinI7uC/4S/XxSRg4ufmiaXnYnMwuaZBSiKwXda35AJ/D/Bc6zGOICJrFt/mM3Yd374Ce/qS9ObilykT24ceJexEC8hHU9NKvWYWcVqiQ6jCOzMkjfCykciE3OziiIe3PbPew6W5yspWXjFY83HXvH76yd2S8iWC4fBo3qWyMYBRVu5eMU61KBBAUmvKVT3gFqXAYUJyB+f5Mz/kOJ2s4/CPVA==; 5:Se63nOiSD2hQt4FxAZfwF/cvVJ98oPQTP0YW6foaWX5HP1tba7M3ABEpKWlPLbD1yh092oFKQ0FKsYqkDdZNCRAy2opBiAQBO6SK1fwtJPtMGz7G2d9E2PyCKl4M4ChLiGZQ0wXpN+X/wW9oK6Y0Guf9oYvD/yp14a4mheBtHNA=; 7:Wn3ZCzF7FKZaiKpQH9ycffhMP7CWrIJ6VkckeMZvISHDIji8XkpmqBsmMRmtmOm1HFVL/DYaw9QKzUUDxQN2+ovmffyc9oo2rKSJ4iMgCCmOmfEuTbUd6gMO7WX6+eZYhJKsWIS09pFmnJiBRV+J8A== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BYAPR12MB2631; 20:JN0WmFq73aCIvKmK3s6ayAk3wa0oxo3U+KkTE0Gopqt5axZYLqZahH6BSrzv6pU/r8BA+FPilu19BPrOFbbGWkHTJnLMoiydMqwpJPx3rgtoMNmrb1tP612W50mw/35a2vQo7J+2TnN51j4daIn7fAllGsG0YZgUlP0eNRH+z+OijU2L0skKdc/pJVpA8DCG+p3rQ9G07IPMCIBZ8KWzHwKLNobdG+zajDF6KNuEHKf9MfC/D1Aa6hwYqUDli9Nb X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2018 09:56:39.0627 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fe675567-6af0-4214-948b-08d65c2a4865 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: BYAPR12MB2631 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: , Cc: =?utf-8?q?Christian_K=C3=B6nig?= , =?utf-8?q?Christian_K=C3=B6nig?= Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Christian König Use the dma_fence_chain object to create a timeline of fence objects instead of just replacing the existing fence. v2: rebase and cleanup Signed-off-by: Christian König --- drivers/gpu/drm/drm_syncobj.c | 37 +++++++++++++++++++++++++++++++++++ include/drm/drm_syncobj.h | 5 +++++ 2 files changed, 42 insertions(+) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index e19525af0cce..51f798e2194f 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -122,6 +122,43 @@ static void drm_syncobj_remove_wait(struct drm_syncobj *syncobj, spin_unlock(&syncobj->lock); } +/** + * drm_syncobj_add_point - add new timeline point to the syncobj + * @syncobj: sync object to add timeline point do + * @chain: chain node to use to add the point + * @fence: fence to encapsulate in the chain node + * @point: sequence number to use for the point + * + * Add the chain node as new timeline point to the syncobj. + */ +void drm_syncobj_add_point(struct drm_syncobj *syncobj, + struct dma_fence_chain *chain, + struct dma_fence *fence, + uint64_t point) +{ + struct syncobj_wait_entry *cur, *tmp; + struct dma_fence *prev; + + dma_fence_get(fence); + + spin_lock(&syncobj->lock); + + prev = rcu_dereference_protected(syncobj->fence, + lockdep_is_held(&syncobj->lock)); + dma_fence_chain_init(chain, prev, fence, point); + rcu_assign_pointer(syncobj->fence, &chain->base); + + list_for_each_entry_safe(cur, tmp, &syncobj->cb_list, node) { + list_del_init(&cur->node); + syncobj_wait_syncobj_func(syncobj, cur); + } + spin_unlock(&syncobj->lock); + + /* Walk the chain once to trigger garbage collection */ + dma_fence_chain_for_each(prev, fence); +} +EXPORT_SYMBOL(drm_syncobj_add_point); + /** * drm_syncobj_replace_fence - replace fence in a sync object. * @syncobj: Sync object to replace fence in diff --git a/include/drm/drm_syncobj.h b/include/drm/drm_syncobj.h index 7c6ed845c70d..8acb4ae4f311 100644 --- a/include/drm/drm_syncobj.h +++ b/include/drm/drm_syncobj.h @@ -27,6 +27,7 @@ #define __DRM_SYNCOBJ_H__ #include "linux/dma-fence.h" +#include "linux/dma-fence-chain.h" /** * struct drm_syncobj - sync object. @@ -110,6 +111,10 @@ drm_syncobj_fence_get(struct drm_syncobj *syncobj) struct drm_syncobj *drm_syncobj_find(struct drm_file *file_private, u32 handle); +void drm_syncobj_add_point(struct drm_syncobj *syncobj, + struct dma_fence_chain *chain, + struct dma_fence *fence, + uint64_t point); void drm_syncobj_replace_fence(struct drm_syncobj *syncobj, struct dma_fence *fence); int drm_syncobj_find_fence(struct drm_file *file_private, From patchwork Fri Dec 7 09:55:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chunming Zhou X-Patchwork-Id: 10717763 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 2937517DB for ; Fri, 7 Dec 2018 09:56:57 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 131A72E700 for ; Fri, 7 Dec 2018 09:56:57 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 04E202E747; Fri, 7 Dec 2018 09:56:57 +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=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 ECA9F2E700 for ; Fri, 7 Dec 2018 09:56:55 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1AFE46E702; Fri, 7 Dec 2018 09:56:55 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM05-DM3-obe.outbound.protection.outlook.com (mail-eopbgr730072.outbound.protection.outlook.com [40.107.73.72]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4FECE6E702; Fri, 7 Dec 2018 09:56:53 +0000 (UTC) Received: from MWHPR1201CA0007.namprd12.prod.outlook.com (2603:10b6:301:4a::17) by BN4PR12MB0834.namprd12.prod.outlook.com (2a01:111:e400:59bd::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.22; Fri, 7 Dec 2018 09:56:50 +0000 Received: from BY2NAM03FT037.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e4a::206) by MWHPR1201CA0007.outlook.office365.com (2603:10b6:301:4a::17) 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:56:49 +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 BY2NAM03FT037.mail.protection.outlook.com (10.152.84.188) 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:56:48 +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:56:47 -0600 From: Chunming Zhou To: , , Subject: [PATCH 05/11] drm/syncobj: add support for timeline point wait v8 Date: Fri, 7 Dec 2018 17:55:55 +0800 Message-ID: <20181207095601.2058-5-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)(376002)(346002)(39860400002)(136003)(396003)(2980300002)(428003)(199004)(189003)(305945005)(76176011)(4326008)(5660300001)(478600001)(72206003)(2906002)(50466002)(53416004)(2870700001)(5820100001)(106466001)(47776003)(1076002)(97736004)(105586002)(316002)(23676004)(7696005)(36756003)(68736007)(53936002)(110136005)(54906003)(8676002)(86362001)(186003)(8936002)(486006)(476003)(66574011)(126002)(2616005)(336012)(446003)(2201001)(11346002)(426003)(4744004)(81156014)(77096007)(50226002)(6666004)(26005)(81166006)(356004)(104016004)(14444005)(21314003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN4PR12MB0834; H:SATLEXCHOV01.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BY2NAM03FT037; 1:tjAG7aqAe2VGR1RyMSKU3x++vHH2QjNKTCNgcYfu7xlu1upTdr/4RGN7ilreWYBhFusqicmXP4LyQuPGCL4xyL+8M1JLj4vArlXo0W9snAhSbuu7ObTcLtekDFwx2Uno X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 66678982-fa8f-47cf-d50e-08d65c2a4e42 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060); SRVR:BN4PR12MB0834; X-Microsoft-Exchange-Diagnostics: 1; BN4PR12MB0834; 3:OpuPhD+stSjHPD/khNu1Ks0DsDOibONDzJfaPsVmwP4MeD+YdW172WIsKbmm4nudzvZuxmjjmOkNJoqiXwquPJcXfMX1bRoSE7R972ZdooF40CKRJAjlp9ZrjXghCXlG+3iwkM4C5t1S0bLUbLokzvl/kesKONPEoWpGNn5G0uvg2Kc3eh55g0PtqILsyrD6+Q+e4sUuJL709Jdt9ujLzQUi89zAvoaK40KJ59xAKkLz+pZY/WB5HSjrpdkeWFke472N+t3Ffib907/FP3kmw+PXdu1m2geEHxPF/jet0ThNpllNmMb1H1bYfbSrfxrgJIs6UCL5zOwYOvdku1UN/BYhfl0J4ttPl0vqaotocaQ=; 25:h6m+btcoe7ZnpcTEzuUFaLF+T+S7lDKasHDFbJIK+lAFvkL1eVUoZMqyd9NfOlD+30TX9s2RkjP5AhYUgTVujAx0WbKykalHTR9IASDym9TKOCI+xv1YdZOPzpwGx0svPYA7XeXjXnSRHSY+nhGPxxJ7hTE77dsTywTUZGi/i5Db3A2IULRWxouxDCGn7AUqFvlaBQHh8dGAKQ005FJFvIzvatXXtoBPGySAECixoE1pjnsIuswfa68TuCNga3oZq92wAfSxKga5ciRZfseDKNv2b1xAGduBbAMhkgJLaTmurPwaurjhd4M0gxdXM2VeAhLUNRIy+TWN9IiZxPAMnw== X-MS-TrafficTypeDiagnostic: BN4PR12MB0834: X-Microsoft-Exchange-Diagnostics: 1; BN4PR12MB0834; 31:EVYe43CKvAcsfl0LcMLK+RgmCODvaOzniribtA33KC0VFqIRaAFGoE1vmhU1Pjm6zZFZCtk69EQ4kCHk+N93D0/tXU4fSDIkXU9Z7oL1ZZLSAML806VAQEPZq9/ZlgZFEVpMzBwah3AynvBjXBs7rmE9kt+3NlFQLuXbccx0/1lyjng269+xcvAaPNLuUiwgsd0Em1GB47FZZvgjenvMmJwjTwW6GtHjgo2iV5GReac=; 20:/OFEVQZx+FaN2CPWycIjrmhkbzXXxwS0aywTyZlI8uz8Jqfu25LlcIH/CefjlLl0JslFEDhrV42TGsjOVHlvJdxX/n3FSY1GGIpZpRH42QIn8FzBwqeISF6e7Cy1fz0d4wGm1pIPkgbQEMdRUgHkynZVIFQ2T7i6PpkNf2CBOIXE6WOb0i5//I3q9m4UKMcwPjDTk6cV40racdAXCm57qOgwlEXcIwiXIaVJbXcpz22gPKXQ1X8Q5e+FBbYCp/IEzf++267XaToNeFtbKP6njVE/pZuEPP+5VRQI9072o8dgC+SpM+pcx/wp+8LaSqGSIe3TxlMzcG4AEQN2uYotuK+e4lz3JXGAVVGA8duqlEdMWQNKs/6pwg4ij5QFjkRHpwGPI9CjFr/Jh0swIMIqSExl7HZZLY3ZSZT99SyCzS8+Av31+RDNxnZ1BujHWZNCs/y6/4R14letcxvbHpqc5a7XXG1zL+MeZSwTSkKjGFRwhO9V2N/TZz2vgs67Pmwq X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(93003095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:BN4PR12MB0834; BCL:0; PCL:0; RULEID:; SRVR:BN4PR12MB0834; X-Microsoft-Exchange-Diagnostics: 1; BN4PR12MB0834; 4:RGGXhl34IzLuC2AfS7zbjeoJM1p/WmXGG55KfE9uV8QzStYgIAph76jK2mbvA4kA6YFpy/QL9pJOhb5wImuJU76rNcIwgWCM0us33fQr4ufI3B1a3PKnogaNxCGqD1h9TuAceOMHv1coh2EvkpI9Pjay5pbYpzMyuDUdpGZmNATdgtqwxA+RDNaonuXRaBvYVIjPma0AN2oPdSUQPR0KLxz/lvwzcbOb3ULn4/5GzpTUZ0AQFGd34GSI8tZABT1fbUodn6MRc+zxeLCkKJY3/Q== X-Forefront-PRVS: 0879599414 X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BBN4PR12MB0834=3B23=3A7ibsbBo?= =?utf-8?q?GSwY+UZOqMKScyxI4vDaujx9sSc+QMxiIFl5ArCsZt0jDPyqSgPmjdYVteMhj3c31?= =?utf-8?q?n6kgDv0RddB14KhJW4VN4T5hOIlwMtajxz4u4FZDDmXDJG84Uynml+OJkrYy0A6yC?= =?utf-8?q?dC97v6JE6WmTDhT//RCxIsZ23WAgP/jTvj/IwvVtsm4PeoltphReJ95ByOlyiUTdA?= =?utf-8?q?GraShkAnP88ygLVJYx/u0p8ZVIlA+4zQ6I9KjIXJAlvsxN2AaaK1VKO8Qx6l0nw2g?= =?utf-8?q?DefviOS2GfxP6fHnB29nWaSS9IzgILCiWc6UqxcWva+iTbOlkDJTNcRrdUHjCjUaV?= =?utf-8?q?Yki2owCJGL4FQAnoqzP0fcgU+2uGQvQ7jM3x2JmYbLX8Ikb3pNX9YrdtA3bPdZTda?= =?utf-8?q?ePWogcYIU1PUhJy6n+pthwbo9yteAk9pCACUd0NyWtw4TV9+9FP0HdipMJ5Dpy4y3?= =?utf-8?q?gNBkxSDoxpANFta9o0I0fMBkKXO9D8a4e18qLS/0PQwBzlyZ2eRGp890GW0Y4tOYl?= =?utf-8?q?gO7jTL9Z0F3kpmFT8lS/IM3wXUF6DmKVQDAtj57+mexvfilOoYY9LF0WMSaZeO//a?= =?utf-8?q?Ps4w+zPbPx9X4/qkC50jjW/kj++ZpYQyUWToRB+30BEtA/LyahLJ7dsxR6zomNrNV?= =?utf-8?q?WMmMyDMWJYepE9PiMzjI63cNMtMABSHPWxeRLicn/6CVWEUx7rdyffVF7SQGpaWLz?= =?utf-8?q?GhbpTUuYM97B9lB+W2d8Lwp9qouiVHqMZ/fQweshH/Wp4tJVb2tFg0DyeKHNrjH0Q?= =?utf-8?q?0/0TjVOWZyWBRJCjldMBsavRJS9Fn9K1rU88neBf2m3h9ibC3BYgSWU1dhkYk7AcN?= =?utf-8?q?u6Hj25diS7/XsE2KsJLQObhw8uwZ80b9KUdjRzY934WRr5/nVfuQe5bilpI81fGFE?= =?utf-8?q?ccdqidwM8eA0vXjNVP6W7FhMHTM2NPDGSYxv7ScqbdpYhSY7Eit0L7+9tuF1umzIC?= =?utf-8?q?qiknfwCrVB3btZ2C3ezFl28yuUJQ6kkNXTZx3LMGrCqJI/AcPBaiNcBUMsg7gRkf8?= =?utf-8?q?5eR672mq39ayK3izpweHeHtKE+RDh9jKsJzGN1SzlEcdIZwqKRtu7lyM3XVzAp7k9?= =?utf-8?q?eqcGCxs2XQrQMEHdLjxrLIGjDy8pFRVFoPtrM11jvSLREjI6+BYwdSX5SveUb/ylc?= =?utf-8?q?3Lir14aWyo7wV7JxWUtWY2/rSJv8quVMjgUsH62nRfQ+HuczdgrZe7obYiaGVrmTQ?= =?utf-8?q?RK7kHiFO3d7qNCUhUWbdxu+kEG3zqkTXkPZ1llg7xSjWpbcNoZlXu5GeO7pw=3D?= =?utf-8?q?=3D?= X-Microsoft-Antispam-Message-Info: q5XVZ0v+BGCPSKKWnioXkeegYNls0JFn64k6s/CpLS4NKjuEBXub1aVsptn6JTy38itBeb2IHiKcQlH0j5xq9wUprrvBC0FXZZ4rq5BLY3jv3Y+3VxHLZM4CvVqC8lLIC0UqN4VRHPnurwuo0gUm4KJwqcy1dCPSAbVyL1na4+PRCLOvZ/3OMlKItKyCmKCTaujx/Ax6l5sFXd5QzE6xXyfEGDOXJq+5DGc5tOdaEzjOg8mWE+ZiZIfpvwqOOxxXZQEkq+OX1k8RQwj3UEhifVCnyM1N0zFd8oTOqc/C3qEFGagIDAe7wUrWubVEgO3qD8nGKmUhDEojsDaIMi/Icw029fECUYbyMRXK8dxR6PI= X-Microsoft-Exchange-Diagnostics: 1; BN4PR12MB0834; 6:sdY/XiwB9UToeRA0bFTRbMOe2+uwuS5sJetC7jOezYrXYeQU41+HpZSzrTCrTtdwSCx/mPCqwMThpvofD00qPeaBmPLoXzUzTTqTTnap09rOQDoJfo5Tj+D/TLWgzjafZxv7vgs2ymClkU2axNwkKc6N8joqnqNp20d8pTbOyXDU8rMmVf6l8lekxy0xiBMqhPoJWBFveZazoBdq60Cgz9XGJtaWbWzNxsljaBURGluSwxsiwKpN7HW0Of5diyzcDEqLwyZaBho5adowoGalmlXXlbQ10rPNJG3X5+rqbTSvyzAXgebWm8bmoskksWt77tCR/eLUahcAk2Bdlr6UyWvrWczlK9W/S5Gg2JyjEHo9jQBzzzsdcSOcSfvzphzSsJ+AAeYYcPQ2OYrF9uJpGAnS26zvP+wAwdXZg4qlkXxVAZCoI2/ytt3XziZRxplVPhs01pmFL4k8MOP1ksLCXg==; 5:G2u7/xyhONc2ZJgjFFMlXeKr9By+I8j0LXFmj9baAINPJNTejDeedGcSwOwwHX3rzVlCO2AvKeFvyw/oG2ernATms9PWImaBVYuTEiSHB3tfd/s8teCkIfRSR9tI/NCIX+hIVMVQ2NELculLaTXFn6cV8rJ+y4V5U/0GjUg8kLM=; 7:PIstGLWreobXk3FvCB0VjPShKRdeg2jSUaycoMR74OVnKHMWQnXOs1yOBrySAo/D/qvNmTdcz+OVv5pQLjLohM9KjeSXDS0T1CdfIipfwHam+30kk7j4VVXnuMWTCFxqiC+4JQxU5bR7r4Smbad8Ug== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN4PR12MB0834; 20:YlxbFMnlx9Wb3KPQqtFhuFEb3IE5FGImvdnmh7ciYZcNhXwgWV00mkwsmIE6ohs34kQuzVLEGCxR3JbCQDXTQZfz6TMehgj6cdUKvaLZF3poM4QavGE/dCcybATWldG4T7qTjE+XsspOv4Jebk6sQVnMPpOlJxYDNblFYrwe5KZnWtCZal0GQMi0ut2p01S8N043edAgPgb8Fx/INzXb3ZgXZ+aeL+E27WGTG61WhYyLDQQMGgLj7TYnlgJFkzr3 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2018 09:56:48.8388 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 66678982-fa8f-47cf-d50e-08d65c2a4e42 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: BN4PR12MB0834 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: , Cc: Daniel Rakos , Jason Ekstrand , Dave Airlie , =?utf-8?q?Christian_K=C3=B6nig?= Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP points array is one-to-one match with syncobjs array. v2: add seperate ioctl for timeline point wait, otherwise break uapi. v3: userspace can specify two kinds waits:: a. Wait for time point to be completed. b. and wait for time point to become available v4: rebase v5: add comment for xxx_WAIT_AVAILABLE v6: rebase and rework on new container v7: drop _WAIT_COMPLETED, it is the default anyway v8: correctly handle garbage collected fences Signed-off-by: Chunming Zhou Signed-off-by: Christian König Cc: Daniel Rakos Cc: Jason Ekstrand Cc: Bas Nieuwenhuizen Cc: Dave Airlie Cc: Chris Wilson --- drivers/gpu/drm/drm_internal.h | 2 + drivers/gpu/drm/drm_ioctl.c | 2 + drivers/gpu/drm/drm_syncobj.c | 153 ++++++++++++++++++++++++++------- include/uapi/drm/drm.h | 15 ++++ 4 files changed, 143 insertions(+), 29 deletions(-) diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h index c7a7d7ce5d1c..18b41e10195c 100644 --- a/drivers/gpu/drm/drm_internal.h +++ b/drivers/gpu/drm/drm_internal.h @@ -178,6 +178,8 @@ int drm_syncobj_fd_to_handle_ioctl(struct drm_device *dev, void *data, struct drm_file *file_private); int drm_syncobj_wait_ioctl(struct drm_device *dev, void *data, struct drm_file *file_private); +int drm_syncobj_timeline_wait_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_private); 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, diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index 94bd872d56c4..a9a17ed35cc4 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c @@ -675,6 +675,8 @@ static const struct drm_ioctl_desc drm_ioctls[] = { DRM_UNLOCKED|DRM_RENDER_ALLOW), DRM_IOCTL_DEF(DRM_IOCTL_SYNCOBJ_WAIT, drm_syncobj_wait_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW), + DRM_IOCTL_DEF(DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT, drm_syncobj_timeline_wait_ioctl, + DRM_UNLOCKED|DRM_RENDER_ALLOW), DRM_IOCTL_DEF(DRM_IOCTL_SYNCOBJ_RESET, drm_syncobj_reset_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW), DRM_IOCTL_DEF(DRM_IOCTL_SYNCOBJ_SIGNAL, drm_syncobj_signal_ioctl, diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 51f798e2194f..348079bb0965 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -61,6 +61,7 @@ struct syncobj_wait_entry { struct task_struct *task; struct dma_fence *fence; struct dma_fence_cb fence_cb; + u64 point; }; static void syncobj_wait_syncobj_func(struct drm_syncobj *syncobj, @@ -95,6 +96,8 @@ EXPORT_SYMBOL(drm_syncobj_find); static void drm_syncobj_fence_add_wait(struct drm_syncobj *syncobj, struct syncobj_wait_entry *wait) { + struct dma_fence *fence; + if (wait->fence) return; @@ -103,11 +106,15 @@ static void drm_syncobj_fence_add_wait(struct drm_syncobj *syncobj, * have the lock, try one more time just to be sure we don't add a * callback when a fence has already been set. */ - if (syncobj->fence) - wait->fence = dma_fence_get( - rcu_dereference_protected(syncobj->fence, 1)); - else + fence = dma_fence_get(rcu_dereference_protected(syncobj->fence, 1)); + if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { + dma_fence_put(fence); list_add_tail(&wait->node, &syncobj->cb_list); + } else if (!fence) { + wait->fence = dma_fence_get_stub(); + } else { + wait->fence = fence; + } spin_unlock(&syncobj->lock); } @@ -148,10 +155,8 @@ void drm_syncobj_add_point(struct drm_syncobj *syncobj, dma_fence_chain_init(chain, prev, fence, point); rcu_assign_pointer(syncobj->fence, &chain->base); - list_for_each_entry_safe(cur, tmp, &syncobj->cb_list, node) { - list_del_init(&cur->node); + list_for_each_entry_safe(cur, tmp, &syncobj->cb_list, node) syncobj_wait_syncobj_func(syncobj, cur); - } spin_unlock(&syncobj->lock); /* Walk the chain once to trigger garbage collection */ @@ -182,10 +187,8 @@ void drm_syncobj_replace_fence(struct drm_syncobj *syncobj, rcu_assign_pointer(syncobj->fence, fence); if (fence != old_fence) { - list_for_each_entry_safe(cur, tmp, &syncobj->cb_list, node) { - list_del_init(&cur->node); + list_for_each_entry_safe(cur, tmp, &syncobj->cb_list, node) syncobj_wait_syncobj_func(syncobj, cur); - } } spin_unlock(&syncobj->lock); @@ -642,13 +645,27 @@ static void syncobj_wait_fence_func(struct dma_fence *fence, static void syncobj_wait_syncobj_func(struct drm_syncobj *syncobj, struct syncobj_wait_entry *wait) { + struct dma_fence *fence; + /* This happens inside the syncobj lock */ - wait->fence = dma_fence_get(rcu_dereference_protected(syncobj->fence, - lockdep_is_held(&syncobj->lock))); + fence = rcu_dereference_protected(syncobj->fence, + lockdep_is_held(&syncobj->lock)); + dma_fence_get(fence); + if (!fence || dma_fence_chain_find_seqno(&fence, wait->point)) { + dma_fence_put(fence); + return; + } else if (!fence) { + wait->fence = dma_fence_get_stub(); + } else { + wait->fence = fence; + } + wake_up_process(wait->task); + list_del_init(&wait->node); } static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs, + void __user *user_points, uint32_t count, uint32_t flags, signed long timeout, @@ -656,12 +673,27 @@ static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs, { struct syncobj_wait_entry *entries; struct dma_fence *fence; + uint64_t *points; uint32_t signaled_count, i; - entries = kcalloc(count, sizeof(*entries), GFP_KERNEL); - if (!entries) + points = kmalloc_array(count, sizeof(*points), GFP_KERNEL); + if (points == NULL) return -ENOMEM; + if (!user_points) { + memset(points, 0, count * sizeof(uint64_t)); + + } else if (copy_from_user(points, user_points, + sizeof(uint64_t) * count)) { + timeout = -EFAULT; + goto err_free_points; + } + + entries = kcalloc(count, sizeof(*entries), GFP_KERNEL); + if (!entries) { + timeout = -ENOMEM; + goto err_free_points; + } /* Walk the list of sync objects and initialize entries. We do * this up-front so that we can properly return -EINVAL if there is * a syncobj with a missing fence and then never have the chance of @@ -669,9 +701,13 @@ static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs, */ signaled_count = 0; for (i = 0; i < count; ++i) { + struct dma_fence *fence; + entries[i].task = current; - entries[i].fence = drm_syncobj_fence_get(syncobjs[i]); - if (!entries[i].fence) { + entries[i].point = points[i]; + fence = drm_syncobj_fence_get(syncobjs[i]); + if (!fence || dma_fence_chain_find_seqno(&fence, points[i])) { + dma_fence_put(fence); if (flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT) { continue; } else { @@ -680,7 +716,13 @@ static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs, } } - if (dma_fence_is_signaled(entries[i].fence)) { + if (fence) + entries[i].fence = fence; + else + entries[i].fence = dma_fence_get_stub(); + + if ((flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE) || + dma_fence_is_signaled(entries[i].fence)) { if (signaled_count == 0 && idx) *idx = i; signaled_count++; @@ -713,7 +755,8 @@ static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs, if (!fence) continue; - if (dma_fence_is_signaled(fence) || + if ((flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE) || + dma_fence_is_signaled(fence) || (!entries[i].fence_cb.func && dma_fence_add_callback(fence, &entries[i].fence_cb, @@ -758,6 +801,9 @@ static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs, } kfree(entries); +err_free_points: + kfree(points); + return timeout; } @@ -796,19 +842,33 @@ static signed long drm_timeout_abs_to_jiffies(int64_t timeout_nsec) static int drm_syncobj_array_wait(struct drm_device *dev, struct drm_file *file_private, struct drm_syncobj_wait *wait, - struct drm_syncobj **syncobjs) + struct drm_syncobj_timeline_wait *timeline_wait, + struct drm_syncobj **syncobjs, bool timeline) { - signed long timeout = drm_timeout_abs_to_jiffies(wait->timeout_nsec); + signed long timeout = 0; uint32_t first = ~0; - timeout = drm_syncobj_array_wait_timeout(syncobjs, - wait->count_handles, - wait->flags, - timeout, &first); - if (timeout < 0) - return timeout; - - wait->first_signaled = first; + if (!timeline) { + timeout = drm_timeout_abs_to_jiffies(wait->timeout_nsec); + timeout = drm_syncobj_array_wait_timeout(syncobjs, + NULL, + wait->count_handles, + wait->flags, + timeout, &first); + if (timeout < 0) + return timeout; + wait->first_signaled = first; + } else { + timeout = drm_timeout_abs_to_jiffies(timeline_wait->timeout_nsec); + timeout = drm_syncobj_array_wait_timeout(syncobjs, + u64_to_user_ptr(timeline_wait->points), + timeline_wait->count_handles, + timeline_wait->flags, + timeout, &first); + if (timeout < 0) + return timeout; + timeline_wait->first_signaled = first; + } return 0; } @@ -894,13 +954,48 @@ drm_syncobj_wait_ioctl(struct drm_device *dev, void *data, return ret; ret = drm_syncobj_array_wait(dev, file_private, - args, syncobjs); + args, NULL, syncobjs, false); drm_syncobj_array_free(syncobjs, args->count_handles); return ret; } +int +drm_syncobj_timeline_wait_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_private) +{ + struct drm_syncobj_timeline_wait *args = data; + struct drm_syncobj **syncobjs; + int ret = 0; + + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) + return -ENODEV; + + if (args->flags & ~(DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL | + DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT | + DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE)) + 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; + + ret = drm_syncobj_array_wait(dev, file_private, + NULL, args, syncobjs, true); + + drm_syncobj_array_free(syncobjs, args->count_handles); + + return ret; +} + + int drm_syncobj_reset_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 300f336633f2..0092111d002c 100644 --- a/include/uapi/drm/drm.h +++ b/include/uapi/drm/drm.h @@ -737,6 +737,7 @@ struct drm_syncobj_handle { #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0) #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1) +#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE (1 << 2) struct drm_syncobj_wait { __u64 handles; /* absolute timeout */ @@ -747,6 +748,19 @@ struct drm_syncobj_wait { __u32 pad; }; +struct drm_syncobj_timeline_wait { + __u64 handles; + /* wait on specific timeline point for every handles*/ + __u64 points; + /* absolute timeout */ + __s64 timeout_nsec; + __u32 count_handles; + __u32 flags; + __u32 first_signaled; /* only valid when not waiting all */ + __u32 pad; +}; + + struct drm_syncobj_array { __u64 handles; __u32 count_handles; @@ -909,6 +923,7 @@ extern "C" { #define DRM_IOCTL_MODE_GET_LEASE DRM_IOWR(0xC8, struct drm_mode_get_lease) #define DRM_IOCTL_MODE_REVOKE_LEASE DRM_IOWR(0xC9, struct drm_mode_revoke_lease) +#define DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT DRM_IOWR(0xCA, struct drm_syncobj_timeline_wait) /** * Device specific ioctls should only be in their respective headers * The device specific ioctl range is from 0x40 to 0x9f. From patchwork Fri Dec 7 09:55:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chunming Zhou X-Patchwork-Id: 10717765 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 BD71C13BF for ; Fri, 7 Dec 2018 09:57:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AA9E22E711 for ; Fri, 7 Dec 2018 09:57:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9EC6B2E748; Fri, 7 Dec 2018 09:57:06 +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=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 2D6C92E711 for ; Fri, 7 Dec 2018 09:57:06 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4A47F6E6FA; Fri, 7 Dec 2018 09:57:05 +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-dm3nam03on0629.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe49::629]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5B8FC6E6FA; Fri, 7 Dec 2018 09:57:03 +0000 (UTC) Received: from MWHPR12CA0041.namprd12.prod.outlook.com (2603:10b6:301:2::27) by BY2PR12MB0053.namprd12.prod.outlook.com (2a01:111:e400:2c80::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.20; Fri, 7 Dec 2018 09:56:59 +0000 Received: from BY2NAM03FT032.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e4a::205) by MWHPR12CA0041.outlook.office365.com (2603:10b6:301:2::27) 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:56:59 +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:56:58 +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:56:56 -0600 From: Chunming Zhou To: , , Subject: [PATCH 06/11] drm/syncobj: add timeline payload query ioctl v4 Date: Fri, 7 Dec 2018 17:55:56 +0800 Message-ID: <20181207095601.2058-6-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)(346002)(396003)(136003)(376002)(39860400002)(2980300002)(428003)(199004)(189003)(486006)(356004)(2201001)(50466002)(186003)(8676002)(7696005)(81166006)(77096007)(26005)(81156014)(47776003)(11346002)(50226002)(106466001)(4326008)(8936002)(316002)(66574011)(72206003)(126002)(14444005)(478600001)(426003)(446003)(36756003)(2616005)(476003)(54906003)(1076002)(110136005)(2870700001)(53936002)(86362001)(2906002)(305945005)(23676004)(53416004)(5820100001)(68736007)(97736004)(105586002)(336012)(104016004)(76176011)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR12MB0053; H:SATLEXCHOV01.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BY2NAM03FT032; 1:Mx9TrUalPb+Y+SswMfzxBKXmXy+xJJJpQPC3dQ27JIx49pFtXZVjB/5XJ/Kmubj96ALDIIChgMTqY6dYu+zLJbF8R56Zw/sw49PTc/TH+cKXPGTgkscMf0PYSllEdWHc X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1650e898-4f54-40b2-8f74-08d65c2a541e X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060); SRVR:BY2PR12MB0053; X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0053; 3:Yi0c5qXZNP9mCzUSeV6ONA/WFWi58dBvyKahv/APyHWYNutBXJSyM6HftTSMH4+Ecl2PycuTVAQR9TdlJ8QwdUnsLl+4EeDK7iwveYKV909f1UkDhT23wTFIy9Alrspfww5XLSTDHAmlyN8O4Pnx/v0O2acOsTzUiCGSFbrWdiAs78sL12uc3TDJRzXjJdreS04kzgSWfgFKxATSl7tJ7MtiBXNdEPIFNwXAXpcefyGpyOLtBt+n/M0hYIhMU4fu7Qr76i95QXrxWSAHE9+d/YPlVWIPnbdWHJdz0LDMG1Da0aUu+NJOibej1W3YKeHpU0CO1XbdmbLKNo14STT6omJlJDq0FYKZPs9/gW3aH2A=; 25:S1WWvaM65bRTQbwaHa4o2cUqiUjYuVmwNWs3VpAyXBA4YoK13tBOEImvp4Etit0mBBmxIDqaJ1nGovohtuuAs3toRhz1RPxyApveRwbqiBg5mlRoSnBs+E/pp3qPKa8WJ56a7JLx/Pg5pqMyv2F3OmGyy7Xa6VCgSBpPMMblTRwbY2VvqA6WXTrtLrk3brE3V9/WJ94zCePWwqPyCSuVwZ7ce0+Q2ehx1np2EA4PFgtjeDYl0MDM4vodVgBwYc0XucuygoM7WcDebEWLYAa20fN8SJslPMclnbhF3f3U/qK7Z6zW7y7XaY1HvlmjungKUdzbGa46aSzSSUC3GxdA5A== X-MS-TrafficTypeDiagnostic: BY2PR12MB0053: X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0053; 31:a0S0jhnSe0JKXTmoyoiIRF2MwHOSuUMGA2YmHN8aCTE5N3TvEaex8v6n1Vn9GgyR8iZos0i/mKRkr3uOlRBl8fj3krl0vMKd0g/S6l7wGivT79gMcDpHOZrUsTIskgGS3iRWn9A59o5y1oLuY6ErMLsuJq+Du17Y4BBl4uNq8aZeFoc34li87xdRBcM9aBCphiRhETxoXnHru7uV8AUW7TLFGKJbH7AxW+SepqvYR0A=; 20:OA/Sa4Kk5DPLGP9NoYkkgCvUBgC8cA4RCZNAggVqBViNX8bK9ro0DFyqk/1MP9LCPv23TBJuV9XcAmW4qTwuaFMWVLs/45HHyJI8lF2vEzPq4L5pSg6X6Bi7wwR5IBccU1YAMuks7uGmME4rMDRoqQ4GB/xzZTg17JK24cUKurywE4VTvoxeS2qnKTECAlbDlb1USLjX1gYaLEKhVrZUGd5uoykDkPeZwDqLfcLuiAP4ZXLQOCLmQ2T1/TvI794unuY92DLUtx7Em+Akh/42tEt/9CFcHbLbDcb0KWAzv2+VnnqDoovKoQ/1tT5sKFvJnSmAizVMybOgf/wzNR/3ZlfNsjlzLGZSNkevPvmDl96kbGorfF4Ot78LCfaCPkG7o0r/juyUm/ucxmfULmOlfgpSQp/e/Wm41YZWq/xdf9pSB5Wdv14/hEGJzM/HyPENY6mJMgu6eV5ywFwtqq5KR02rqmUSAGOwu+HFTf3flQ3tsqBYyc9pyZnNN7oIVJTo X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(93003095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:BY2PR12MB0053; BCL:0; PCL:0; RULEID:; SRVR:BY2PR12MB0053; X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0053; 4:24tPS0YoCythmCp+Ca6kZmcnsHCdRw7dA6IgMo/V1UxqOxIWbYEMZLC+B7bqbz7Z17di9P15ovk1DXChwUmnPRHzDnPfHmGelCJcjs/Ot3saQZHEqlX82aabonCZA31U/2uDmR9qVNr0nk2UWfOCBfmRG1ZbmtLmltpbfAWDzy0ILJB8aVj1+Z0sqdbRjyee/GiypUlMmW6MWiu88iDu/Sf2/ObTsBypg1czPklOB6PH0xp2nnl+1JOR5IGBnhIOwE3ZjnDUDGXdKiPkwC2oBQ== X-Forefront-PRVS: 0879599414 X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BBY2PR12MB0053=3B23=3AGB+v1hD?= =?utf-8?q?fUlSD6tOHbQXaiJECpl3GyNM+iQZ4ZcwfEQD8u8hohR8XSyiv7p4iweBmD6Q53/7s?= =?utf-8?q?vuhxC9MOHFk0jnWebnwKgpq53fMyMfJV7nbBm8PPT2j0h42buGFslP3Efr4zEmVi8?= =?utf-8?q?359ErdqUdc8VtAhnwc1E6DsrvanmYlR+mtiASu5FVzyIFC2Zy3SoiYnLjZAy9obot?= =?utf-8?q?J/vxZS6SY6u0Gic1z4Abp1alvLo0e54uNfpK6bAy5+B2ulunHslasolFwAwRHHi1l?= =?utf-8?q?KJb6jh+8x2TJ3Glkw/CN4eXxDz+7XZ6RfIgeKtQ0Ec+BOyxZEHIiTziacquJtVlaj?= =?utf-8?q?IIFFzTXhppBhf0kfbYMcilbf7CtrNEGdha0h4BilbW9vF6eZh+01Igry/6WNgAg44?= =?utf-8?q?c5FXCJ69RTIFxXgA/CQ9kxylA4617RrOo+NLC6mSFQifx6Uguu3jotnoP1OhfRhNw?= =?utf-8?q?+PiyO0+jyuhk7EF/A0La9erl8Uu6o1oWdZmzOcD9FX7XXlQE0Df/9pWGP6f1aG3Ou?= =?utf-8?q?rD3NSiyxFk/ITCRdG6rx0rQOfm1oH2Q8CrbCIl3gv6k/2hargrHR2h5yuLnx9glU9?= =?utf-8?q?0XfHHf4wTiuwaw3iLkOkpcfgXA0+lONpE8WLHc5hG3pALPaWpDCydDJ9JMAw7pxw6?= =?utf-8?q?XcEanGfSmDcYZLOAhWCPGgI2gbFOwP2f1s/WnMie/YabAR9hSZFxzZfVC+QhvyeK5?= =?utf-8?q?2nU1EEOk6j6+Vs9gPChlfv1Y5kuOLNo4yMnh8Rl7F5We0EbWyYpZr2XGK1w/6xMzn?= =?utf-8?q?BJ6dZF2b+IpXmEblH2rdg458f8fUfVuzCnG6Y2cT43cvb8Lj2KvYorbZL4B21sGhO?= =?utf-8?q?D/zfMTQ2Dtjy6PC4r5Gu5iWGBU72fUqenRHpcZfe1NIYaty3PAu59gEA+VI2MKdl9?= =?utf-8?q?nwrb/ZYm/fBldp8+cBI3F5ZfhCF8PT+ydXmrizIlWCjU+szOJmg+HUKXODYbUViEX?= =?utf-8?q?Hl3auxrAOfFQxh4bRF+xuEeI7QsLjx7ls0wnyOQ+S9YhtEAIH9imIGobyWgoEPY/L?= =?utf-8?q?LnMhTCreBOBBtS60IFVDz6aNsa9+FnpqQMvL6wPxFtFMwz5lvErW28cQlSz5qKeNb?= =?utf-8?q?nscWBqNDKZHfBEMANYBDMimqYclFeOZ8WQu4swdPwt+v9DXOjYZht7L5c6NKJWX5F?= =?utf-8?q?zJKzfCl+9qwHul4fXPyUJqIFZJJd+1KQsFGfZaG2HSJBMTy88NWNFIzzP2r9w=3D?= =?utf-8?q?=3D?= X-Microsoft-Antispam-Message-Info: PkZmoFpu2pbbx/RnPWr3GrEhCLpv+s3u9BlSH2n+Iar412hhA229t5MiqKC/Zpcau5r6mNsIIlX4DDIHqpgYPAbXqRp2oYPn9+9myVFovIN6/83MbrpFw62lkw+Ufc5FeHHkksFgOZw9K/i1HNXxkDBKVjiFxYGxGh41UAPhrZb2w3c0LAJneBosgjOHWg/SanEAhBhvOlLpl/ESdN2ovAJH5sVm59RK2RSC2ElYdrGb+MvqE08qO1qgPxf2a6J93uQJ1y0WqKUkhdlGj1GJDaMaaosWtwAIW9pe1MAy478qheiY8rbgcPmsMZ0bR1ml/kvY4cH/9hrzO2BDXu/YEU0wv/hk3Rtlswl3wGPz/XA= X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0053; 6:z1hTsQkLfraFF7vf1rypcZpppcONoiRUwqTXHCqFTJgWdsrmJhkMo7Ap9QzZ7Msc3aBlwpaPEToDVhXRR65hW3aQouoO/Ry51yafwbPBtwOz7Eb8bDjbheIr6KbpqOqAP0J0505OFY72XgFnv7NoylRDELwIXVSQd0lXyCJdYF3LO3wOSSH/v3cG8GJoEafK4M75Xo7okHqneePkqmAecQIT5HbNL4efDAq1Ye05X8bEVR+rmMbemwAQxdjUc2TIUXc7yfrAn24L3CaVW7ThhaJSKPscUI3PmhlDS/dTMwt/h2X0ruFF89oC0ElTqaOnS3vf3SOoejmSdv4lH0vqGZ/Xp/+FzuV3Rh44HnXYOWCH/cYVA4A7jWOQGmRHhMaeapW7wSu7DeFQJMXNTTEBiEySaKP+3T9pR7mJoDiQU9x+CPvRZBEipL9OQLbyzIPeedscgUZkXJNpgVdTfx/9+g==; 5:4jx08Hzyws9OaiYfrwmwEmJAzLjabYTyYjcdJY6SKqeAsAKmQIoV2Vf0GlodYcsWOblKnKznTGCdoy+MkaoYuTXZfbWBEXY/8Pph6R+k9nKMphTIUn9YNlnMk2hnblWF6cVXsbvxCybaN8/olTF6Q4TtruBjE9i1o3mYyqOxVYI=; 7:FMg36C3NGYdjICZSUJYbSluko/UeT4IOcjUZJITMj8qPRJBkvBRK4S6dDklG9Jm1dYWuRO6PE+JVZrIUPGg+w2snb5l+CjyDdIJBCUYoiqscMazhxKYDb6hpCtgcQTu4gYt6XFRMiEfPklgpCZa9HA== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR12MB0053; 20:zob4HtRtYSceT92+qtYO2v0B+vpCKauxLgWGUGY+ug2kgm/evDmJ7kbMAUwVlsnwDYi0jnNcQy3+wEWYpHps4VDdLutR8GAuJe6oCNSVTsn7sluIj99+DxsKRjcxA9krULMa3aDuDBdq5Csxq3G28QaR4KEv65xESGv66ZLE7/XWtjuDg5jPmLH3Jl7t5nW9ompzU0X8fePmoaVNhJhcz8T7pV/S6ZwIhKnvdbhl637rryfRp3KNbaEKTviRYl2F X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2018 09:56:58.6830 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1650e898-4f54-40b2-8f74-08d65c2a541e 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: BY2PR12MB0053 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: , Cc: Daniel Rakos , Jason Ekstrand , Dave Airlie , =?utf-8?q?Christian_K=C3=B6nig?= Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP user mode can query timeline payload. v2: check return value of copy_to_user v3: handle querying entry by entry v4: rebase on new chain container, simplify interface Signed-off-by: Chunming Zhou Cc: Daniel Rakos Cc: Jason Ekstrand Cc: Bas Nieuwenhuizen Cc: Dave Airlie Cc: Christian König Cc: Chris Wilson --- drivers/gpu/drm/drm_internal.h | 2 ++ drivers/gpu/drm/drm_ioctl.c | 2 ++ drivers/gpu/drm/drm_syncobj.c | 43 ++++++++++++++++++++++++++++++++++ include/uapi/drm/drm.h | 10 ++++++++ 4 files changed, 57 insertions(+) diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h index 18b41e10195c..dab4d5936441 100644 --- a/drivers/gpu/drm/drm_internal.h +++ b/drivers/gpu/drm/drm_internal.h @@ -184,6 +184,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_query_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_private); /* drm_framebuffer.c */ void drm_framebuffer_print_info(struct drm_printer *p, unsigned int indent, diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index a9a17ed35cc4..7578ef6dc1d1 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c @@ -681,6 +681,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_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), DRM_IOCTL_DEF(DRM_IOCTL_CRTC_QUEUE_SEQUENCE, drm_crtc_queue_sequence_ioctl, DRM_UNLOCKED), DRM_IOCTL_DEF(DRM_IOCTL_MODE_CREATE_LEASE, drm_mode_create_lease_ioctl, DRM_MASTER|DRM_UNLOCKED), diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 348079bb0965..f97fa00ca1d0 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -1061,3 +1061,46 @@ drm_syncobj_signal_ioctl(struct drm_device *dev, void *data, return ret; } + +int drm_syncobj_query_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_private) +{ + struct drm_syncobj_timeline_array *args = data; + struct drm_syncobj **syncobjs; + uint64_t __user *points = u64_to_user_ptr(args->points); + uint32_t i; + int ret; + + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) + return -ENODEV; + + 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; + + for (i = 0; i < args->count_handles; i++) { + struct dma_fence_chain *chain; + struct dma_fence *fence; + uint64_t point; + + fence = drm_syncobj_fence_get(syncobjs[i]); + chain = to_dma_fence_chain(fence); + point = chain ? fence->seqno : 0; + ret = copy_to_user(&points[i], &point, sizeof(uint64_t)); + ret = ret ? -EFAULT : 0; + if (ret) + break; + } + drm_syncobj_array_free(syncobjs, args->count_handles); + + return ret; +} diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h index 0092111d002c..b2c36f2b2599 100644 --- a/include/uapi/drm/drm.h +++ b/include/uapi/drm/drm.h @@ -767,6 +767,14 @@ struct drm_syncobj_array { __u32 pad; }; +struct drm_syncobj_timeline_array { + __u64 handles; + __u64 points; + __u32 count_handles; + __u32 pad; +}; + + /* Query current scanout sequence number */ struct drm_crtc_get_sequence { __u32 crtc_id; /* requested crtc_id */ @@ -924,6 +932,8 @@ extern "C" { #define DRM_IOCTL_MODE_REVOKE_LEASE DRM_IOWR(0xC9, struct drm_mode_revoke_lease) #define DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT DRM_IOWR(0xCA, struct drm_syncobj_timeline_wait) +#define DRM_IOCTL_SYNCOBJ_QUERY DRM_IOWR(0xCB, struct drm_syncobj_timeline_array) + /** * Device specific ioctls should only be in their respective headers * The device specific ioctl range is from 0x40 to 0x9f. From patchwork Fri Dec 7 09:55:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chunming Zhou X-Patchwork-Id: 10717767 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 E850613BF for ; Fri, 7 Dec 2018 09:57:12 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D4ABC2E711 for ; Fri, 7 Dec 2018 09:57:12 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C7A622E748; Fri, 7 Dec 2018 09:57:12 +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=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 6F49E2E711 for ; Fri, 7 Dec 2018 09:57:12 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 637F96E70A; Fri, 7 Dec 2018 09:57:11 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-eopbgr750088.outbound.protection.outlook.com [40.107.75.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id C6BC06E707; Fri, 7 Dec 2018 09:57:09 +0000 (UTC) Received: from MWHPR1201CA0009.namprd12.prod.outlook.com (2603:10b6:301:4a::19) by SN1PR12MB0845.namprd12.prod.outlook.com (2a01:111:e400:c45c::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.17; Fri, 7 Dec 2018 09:57:07 +0000 Received: from BY2NAM03FT025.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e4a::200) by MWHPR1201CA0009.outlook.office365.com (2603:10b6:301:4a::19) 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:07 +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 BY2NAM03FT025.mail.protection.outlook.com (10.152.84.232) 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:06 +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:05 -0600 From: Chunming Zhou To: , , Subject: [PATCH 07/11] drm/syncobj: use the timeline point in drm_syncobj_find_fence v3 Date: Fri, 7 Dec 2018 17:55:57 +0800 Message-ID: <20181207095601.2058-7-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)(136003)(346002)(376002)(396003)(2980300002)(428003)(199004)(189003)(47776003)(5660300001)(53416004)(81166006)(104016004)(54906003)(50466002)(50226002)(53936002)(5820100001)(36756003)(81156014)(8676002)(316002)(97736004)(110136005)(2201001)(305945005)(8936002)(68736007)(2870700001)(86362001)(478600001)(26005)(77096007)(186003)(72206003)(76176011)(14444005)(23676004)(7696005)(426003)(356004)(476003)(446003)(486006)(2616005)(126002)(11346002)(336012)(1076002)(105586002)(39060400002)(106466001)(66574011)(2906002)(6666004)(4326008); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB0845; H:SATLEXCHOV01.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BY2NAM03FT025; 1:GaovHP39ph2eXGmgEx/SeYlJMhF65feI0YfhEiP82mMSEu9qgL+G9L8QwsjrK1ALJll9vU9wHyA6TChMN1hme7QnpU3JF5ZP3rGeh/m3gGO2ugnifSbH1yqgvHyZy+MD X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ced5ae8e-ce14-4d9d-6dd4-08d65c2a58e0 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060); SRVR:SN1PR12MB0845; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0845; 3:exeuRJwYS0MTuy/7ryAiBzs6pFUKuUjrLo+WlCnBHojo8bCDv1uUpBV6tyuuAA+LX0cxNpSiLwxjC5eT7fRHGF08Vngapy2LOFmLzgZLhb4f1v4n4w6kv4brvdVM52IU85FkBbb4ElQ6WY1/9JNO2oTHF/CKIgFBXIpUTdD4RDebxyz6GsMYZelXesO8mVz+BHG5xVqMCzcJCkgaA8KhcnyPzV2SZePj+xbt1moFTEm93VBzPd3tWL+mzjOz/H+OhLx8qJKxnrsxnQtxF2J6nAQtQuTJiSN9VHwFvwN0EowAvhsuzyNrtEaqNCOuBgRmmEvsIXcStRZm+Onk7cupXqKni0+0MVD47Pgnw779hoo=; 25:CUvyKz8vPxO/oSE67tLWfdXCSfaHod4Ogd8N9RMjCEODUusKuU3TXO5evGSFtN1r4DPE92clMeTYP/q9nXlCQb+oH23EKWB8fX68BFm9q+/dbuAzQfhc5EqntaaFWxIdS9M7eofib9aTG/u5NIs2QTq7ZUSC6oaapwlSfdvbbSTSa4QMAG0/vEczjV+ukHiXD/mjCm3vP+bArcqAtJ9p24qtGm+NymYNzcs8JFZfTB0QuXnOCvPNLL8VQ0FOtgBetQoIm+Lc0aMGPi497+7HkdMG26At9rlY5cEr3tqesfdcgB1Jwo4S6pWHB7RU6rszskHqUOKBzpFSF03WolnVXQ== X-MS-TrafficTypeDiagnostic: SN1PR12MB0845: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0845; 31:LXSchmhsyZeKxlzy+oE3IvdlCcZOEc37DaoRPx78bojcl2D+IxluRIwog2UTk2zl8ehg9O4rP40v7ToEDjlGTAIo6fNsaM3xbcvbmwOzhtxjOyM4Vnin/Jhqxf5D3uYZcN60eJaM+a+KRG6U19tLHxwY9GbDabtZYqQ2GtP0NjWyJf39Ku2zsfw5Je6g/Hd2VpZbP/WjOWjshDGIZa/FKTx+DBStJhoo4EvT69eTw5o=; 20:+nPPXJDKn6W9Fo0tPMz2MqA8ELCXRj5H03v0eNAULYn26sPORl3gINkA3/NWCPmmM8nr0zmM/W0fn48fYwlxZ0vwKCvJcYTW9w+IpJOUq8AJcvgK3er1gKkBBLBiIBb+Do8Knty5poHCbokQsbppIYoW1sSfBVxETu3remgfkVUo6yxJ+0MncCBUkBSFL+kSJWNikU8Dgy4IY8Z3xa5mLyWs80ruGIBwWDIo6/+9m06B0NuKOmHMa4s3GfNuKwJ9AXOj00vcZkQjm0ADyWSKwyjCsNXBmwxkMT0RpLiquM5fKM2l9MldvswUJVjWTr03GkFE/mIjHZEmPqpASpLMUYsqCOM/PNxF4PsfZQD77xziv8oQqKTg2kRI7MnryjlmpHNa4d3Af9WwHMAZO31uZ1W8zl81+AbEukvBUqr5TmWuwLcF6qxFTzrkunIG2uvtTopUbusH4oNGa6QJ2/ElVUEiNKOdCDuBEEKipXbH3yWX6iJ1iciIpzfARqKPfg/U X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(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:SN1PR12MB0845; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB0845; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0845; 4:L3PdxSh1RYXaiudLzO2MRYNifHQgEbWi4afQPqEiVRmTS5GPTa1Z4okRacTXnSRd3/ASzc0U1ffl2JXsePXxZcLT99mBPOZS2YhhbwyR4+tFw5HLj883WNh3c59lp9eooXU3qMrijdx9g/XvQDz3XZ09/ZlEQhc/VJPwb1por1vkRSjlNCe7Lp4zNVIbtxHYkpqJNY7KXXH0G0TS5zWUvTw+h6x0CLv21GhkG+3U5wHloixI/OGrWfCaRZ9cdKDJGfLXCHku4Tzn0HwjprWRAw== X-Forefront-PRVS: 0879599414 X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BSN1PR12MB0845=3B23=3AvTJV/jX?= =?utf-8?q?qE6nIeCHz6ZZ9z2hk8U9CQXo9PtRiRZ0vxSiUVxLnc90VZ/+DGmAYT9MV8QKntA76?= =?utf-8?q?3cIX6dicGQms4WOYJ/UHr5E1e9gGHswuh+107vigSTXKA8tBBs7a5Lqny/HvtWqXM?= =?utf-8?q?bYbUBhynEhPDEzu3Fp/qVB2UkW/mwIoEHGFhE6RuSxr5KsD/uQj9DIzvWfZLXGqwL?= =?utf-8?q?kWgwQ2qZQyjJRMBwcPR3wHw9saLrDDfxNRLYb5pZMQaOZOqikTlRoUNFmZ0Uq2p+y?= =?utf-8?q?DGi0/+9o8UDZtfBfrz4o7jxnoFFk/I4jv7Hpqkj/Xl3PIIyPaEUcyp2b3Z8JhOx9r?= =?utf-8?q?o2IYaiCYmuMY60cYqzfuRCvsEB4R5W3m04z6LNdIV/ngfpX1aTenz+jONnhx1edK+?= =?utf-8?q?NW1Ze+qjFzo5lygfZ3FLNdE1o5Oj7Z0sZxCqLrAVIf2vTA5s0KDwHGWE843+aS+mN?= =?utf-8?q?W+ZAZr+DtZJ/u1JH6aPpQ6gytdXQvRTE6dXwBUtDt7VncIFlJH8RqO+wif8eY90TK?= =?utf-8?q?9rZVY/6czmp3jMNgNcL9z6sGfMzgvbAeDbdlIfZBWfy3mkieqmp3Cgz1n84W4XarC?= =?utf-8?q?g3ro9xMUvGuX00l8qqx2tosKNOe5d9ilTdKJys6Bss5gdBWQcD15rTgp8nFPR71bZ?= =?utf-8?q?mA1mCg/EKTTzwuQUH1yiAB041L4DB0Ice22XiS4hBYDWvywL/R80/PcOON1OQP7GA?= =?utf-8?q?W1aEjDQwW4wAPFA3kIR8Jl0oS2mmGtK3dgkGODpcXU85gUMG0ZXblMS/CA4xAlHit?= =?utf-8?q?wbZbsl8poFlewFfFyEjSzOt8t0Udr1XSQdjJeL2xkdUMEU4Gbf4aGn5hLvxWKkrac?= =?utf-8?q?tW8NiPZ77wbmwC4M21O0ZwZ7nPFue32XuM4DhbacC0R4/7VOlIasMACUTQbaCsBrG?= =?utf-8?q?Z2kfMPUkmElurL2udM/iJNmpVq30ZQSxAPhzOMaigaCeEqiH5TDNJtopOeHpWqKg/?= =?utf-8?q?1KL6Za647VxFiZM16lbmke+59BXuqtfm2GJOzA2xTQprd2KwAoZhnOsroz11eGMda?= =?utf-8?q?B7PKSwuWGlhCBiX6OvynTbUXBc4ElKZiEbk3bE+NqPjtkuA/ptSeP3zVXLho36Vn2?= =?utf-8?q?6a5UrnSpbQ9aPBJFv+AyWef99aeNOW0m/CjEDv5mwb9NP+gXLRAere2KsU0YVvIjD?= =?utf-8?q?cTUxFJVcHaeLaxbjKR4ARWQrBp9l9qHERSoqxV1E4QdqdcVzcv5uSXdBogJDIjkM2?= =?utf-8?q?XvwHWV/v3fkH84ydyde32h4365/97uhZNNv814?= X-Microsoft-Antispam-Message-Info: vIstVvtTzS8+XcM76uTOLpQUy3lFQXPSsLyb38paQWJfb93mx7qNhNRvbwiL4ywq3wFYvDf7LgdE8HKo5UNP0Ps8EKrwKswmdVr0wxeXFtKuUQXfyaYmCQPSD92oj5CIk3GAy5BKOl7wdKKTSz1N7u+ibN50m6/YZlHE4TFijanD+x0NTFMneB83fXgGwVhFHFHuDg1xCXYNrvqzXzNXm0bxvplfCS55TDwCIV3mqwbx/KmPkRj0tXu4blgdGwEg37f60rigKlMVKUZaTdBqe4ImkQyH2x3CJtxwjG5x5TTC5prvGCWQfZTITRg+v5bCO74VeycDHRBI04n25B4A35dHFrAK0kV7+29ZXxy44d4= X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0845; 6:TfPxo5+7PRwm+qaLAWcmCn55O9WqIXBZr4zc4kPFx8GFJaaNb9ZST4pTXNqx3C++rIH3hkhEyy5aMC8clmpXSCb/JPUs7dSTjl5HK+8DtahvEqhuhFtywabJdqFXvUIBaGbFXf2VlVT+8xYmvsUFf8L28lx0UAencXFMdaGT/DCwcjS0DwTwxBsfd5nGVt/6gmJBQpAcwjfatrAm/ZO7Qs1F57TTE4ImLUJAXi3dKgh82XyulWHzJXaQxpNgHYsOkYJoIoiLMsoy7of5eL+lhYst0G7uSVMJVj5Efb2rMIcvDvLqBD3g+wCy0ZyHC3rhGoIL70WFrNJeyYcg0oU5lxYfJxLGE9CXrGI0xmBRoVzHw7+ArCpNFRNcqLstnroN2XyVHEFqf1ryNycBqcmkWi7TxjBry0iCqJ3DWAjC0jAYG0kqaspn8jl7jOF/XDq53pNTZ5e3O/1XQqpYThjpfw==; 5:jIyP5BvWYUJ4EmxJsQ7XPCYRugnDRJud/8JiRCGNx6odnF66ev1laSSL/eWdMzQL0eIyD1drVchdRct9ncIBPzmn76fBLexeDmbojO+q3bxXscVRBMcPBTguHxTGWbTpbywiHvcDy06X2DL1T9LVHaLnqzMTSKgj4AKB0oKE5wo=; 7:Os7gUnU05WC+lEhAQAPbhHH8n3d0Y7mg0sQPoSMHdcT/rxwAiuWawHF9Sf7XzmMLjEu0EMApgZu8N48So20hQhLVxCNeX4A9MNx4D5GY5wmhiKDhJ29HiFQoY0mh8Llj5RH7Z5Zw7BojvWaVJGUZmA== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0845; 20:/PAN65bh2J9DjhxpkPFGS6ARD/IcVpPaSe6UDPuvvU7jO8AKmvuihIGN4r0Brp3wbKrVrptdozYCYGSRl4nzW37z8GENkk4PuaO8ZN/aOxZOTm/cnk1Zt45Z67EapHEBZ/5ZPGVGNNxIyir3QFy0VPC9R5s5T9RhcSbxSQW584MoO6RUI68BE41RQVuOt7Hdh7gzNp9i8ScZVQI/zhfWrMajgpRDFPzpmMafcGTwkf53PIuLWhSSsVXa+31ac7bi X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2018 09:57:06.7270 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ced5ae8e-ce14-4d9d-6dd4-08d65c2a58e0 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: SN1PR12MB0845 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: , Cc: =?utf-8?q?Christian_K=C3=B6nig?= , =?utf-8?q?Christian_K=C3=B6nig?= Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Christian König Implement finding the right timeline point in drm_syncobj_find_fence. v2: return -EINVAL when the point is not submitted yet. v3: fix reference counting bug, add flags handling as well Signed-off-by: Christian König --- drivers/gpu/drm/drm_syncobj.c | 43 ++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index f97fa00ca1d0..282982e58dbd 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -231,16 +231,53 @@ int drm_syncobj_find_fence(struct drm_file *file_private, struct dma_fence **fence) { struct drm_syncobj *syncobj = drm_syncobj_find(file_private, handle); - int ret = 0; + struct syncobj_wait_entry wait; + int ret; if (!syncobj) return -ENOENT; *fence = drm_syncobj_fence_get(syncobj); - if (!*fence) { + drm_syncobj_put(syncobj); + + if (*fence) { + ret = dma_fence_chain_find_seqno(fence, point); + if (!ret) + return 0; + dma_fence_put(*fence); + } else { ret = -EINVAL; } - drm_syncobj_put(syncobj); + + if (!(flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT)) + return ret; + + memset(&wait, 0, sizeof(wait)); + wait.task = current; + wait.point = point; + drm_syncobj_fence_add_wait(syncobj, &wait); + + do { + set_current_state(TASK_INTERRUPTIBLE); + if (wait.fence) { + ret = 0; + break; + } + + if (signal_pending(current)) { + ret = -ERESTARTSYS; + break; + } + + schedule(); + } while (1); + + __set_current_state(TASK_RUNNING); + *fence = wait.fence; + + if (wait.node.next) + drm_syncobj_remove_wait(syncobj, &wait); + return ret; } EXPORT_SYMBOL(drm_syncobj_find_fence); From patchwork Fri Dec 7 09:55:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chunming Zhou X-Patchwork-Id: 10717769 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 910E118B8 for ; Fri, 7 Dec 2018 09:57:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7FAED2E711 for ; Fri, 7 Dec 2018 09:57:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7354A2E748; Fri, 7 Dec 2018 09:57:22 +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=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 C92CA2E747 for ; Fri, 7 Dec 2018 09:57:21 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BF68C6E6FF; Fri, 7 Dec 2018 09:57:20 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM04-CO1-obe.outbound.protection.outlook.com (mail-eopbgr690040.outbound.protection.outlook.com [40.107.69.40]) by gabe.freedesktop.org (Postfix) with ESMTPS id 185786E6FF; Fri, 7 Dec 2018 09:57:19 +0000 (UTC) Received: from DM3PR12CA0061.namprd12.prod.outlook.com (2603:10b6:0:56::29) by DM6PR12MB2633.namprd12.prod.outlook.com (2603:10b6:5:4a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1382.22; Fri, 7 Dec 2018 09:57:17 +0000 Received: from BY2NAM03FT052.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e4a::203) by DM3PR12CA0061.outlook.office365.com (2603:10b6:0:56::29) 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:17 +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 BY2NAM03FT052.mail.protection.outlook.com (10.152.85.223) 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:16 +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:14 -0600 From: Chunming Zhou To: , , Subject: [PATCH 08/11] drm/amdgpu: add timeline support in amdgpu CS v2 Date: Fri, 7 Dec 2018 17:55:58 +0800 Message-ID: <20181207095601.2058-8-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)(136003)(346002)(396003)(376002)(2980300002)(428003)(199004)(189003)(7696005)(126002)(86362001)(2201001)(106466001)(81166006)(50226002)(8676002)(105586002)(2870700001)(4326008)(478600001)(1076002)(72206003)(81156014)(2616005)(426003)(76176011)(486006)(8936002)(2906002)(356004)(23676004)(77096007)(11346002)(6666004)(104016004)(14444005)(53416004)(476003)(446003)(336012)(36756003)(26005)(110136005)(50466002)(54906003)(305945005)(5820100001)(47776003)(53936002)(316002)(97736004)(68736007)(66574011)(5660300001)(186003); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR12MB2633; H:SATLEXCHOV01.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BY2NAM03FT052; 1:HUihfBBbV6/oi3LOHlQ6MamI+3xU9W6a2bdKUFjgOhC4bU6axhYqHy39gP/0IbmPCb/uVojHJFh3fLO6Yet7qnDaOeBb+qoNdSkO1Pq4ACBX9QJovDGk56YjQu8eQu0k X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 52081ac8-87f6-4cdc-1b27-08d65c2a5ecb X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060); SRVR:DM6PR12MB2633; X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2633; 3:Y6HgHKOa49XqiSGyDrCpmBRsdFrwEphOgUbhWGF47B126tZTAFHKmml1enVe8qqrjkORYmK7jXnl5AVYZ7qneBN0YRJo92dRqW7fm9c41xm6W4gFNYxEz7pIfz2kD3kkUr4A5L6TG6kql3qMjKzKTOrvzg6hXlyboDnhi2OtNQk2b0KuAvZQA9BaqloRlFqd7itMLJd5zeVna/MsLIQ83UtPmWr3eYX/kOv0jvQrDrjO83rNMilfmDZA9Avk8+yFoU9iO+yOgWR1VsHTJ6Rjg7oCBygSefDaqEhQWnb+h0L664wivRoKr7S1ZYa7olQTMc4L64S7GuggTikSIvZ1+pYBu9ic67OooBoUfptKlE0=; 25:WP7EPiFdB3owgqn7ZdhrpuFxQbeHgAgLnN/t0ahg7czVlUZAAopIf869mQbADDtNk0U4JivOwox73d/bigO71tmxPz4LvR4Nep+vH5/K/sBWA3PblK17ZdI8Z54THfSzrJvoAp1vAMz3UZaXa9MrF2rPJe7jXvGuG2PRBZJuea4etM3VsgiwJhMUeowEi9VWi3UcmfcjjB0cJk4E0jfak6VevPoYggQmb7s0WhuFXwcOBRlvhPDNIuLOr39caiiuQJxZej8kAlxqzoaAC5AweoTouKI77x8IQ/jyCOQL/MU+/R8XhmS3DHmHsARVER8a2lBcAxpne3Tb4C8s1YEdLA== X-MS-TrafficTypeDiagnostic: DM6PR12MB2633: X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2633; 31:xrq0QcxD+uPXY/0wcKfIDL+LkpTHhlPfaJAguomDoEtykv+hdeV4W+YMh4SEEMy9GYlA+ewyjbnmFGQkdAeQ0UZs/16UXjiMMLaKCRx5liIKtdcpbv8dP4wZxAzXSUJhlYkKluGyzjd6ETeGV7AH2RejKjUysPLwj6scItQsiuNlTG6++CQaTSKLIYXciMv23CG0M4Nx9rY4Pw4t5Oz0DyYr0WFawL7S7m2VKalRCeM=; 20:ww2K03Afc9QsTofJnREOK53wA0PuUwUbLyIiUZn0MvmASlXk0V3n45kJ767DBGDMLvA1Ntwh+VD8Ts4MYW8NW2V9FRhhig126TD2ti1AeERaly7j4kRpf0unkhEPj1ZIXZIvJS+rzPnI5wCblZn3mwzXBENcgVybtZ7lJqb4e31LvlY3N0jCZNmApfM97SF5LlD7V3jvcyjMLljLBJdSHLQhrAh04BQ5Wcwdl8vX6PiltbEYk+HeadKdbDEPqNe6g0X+W6I6HxSVAYoZO/7fFi5QDSDWt/vF2zHg0gn+LyNBN9nbRt4WVDYtUtFYh/IanEKiDv1m9p6t7VOKqjTR2g4U3uT8K3G8p2zl3NbrU+s+yRJJdf0RsH3HEJce+hleMHYvjM1VbmeaUFBb9f3RRjMkBBegSOCaYl2ehXBcyogl1xR0OwVX5z48K5KpUF75R/FeSpfYuaz6U0vF6BI/XqfzwsZqlBSBtFyYbaVAmbOE6lyqkOsfJS/mHrGwtvhs 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)(10201501046)(93006095)(93003095)(3002001)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(201708071742011)(7699051)(76991095); SRVR:DM6PR12MB2633; BCL:0; PCL:0; RULEID:; SRVR:DM6PR12MB2633; X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2633; 4:2nDrP9mEsPIQHHaHsJD2kB/auN6yde4O7K5TTCCwge5e048K+GzsdcjyE7SvjXEVB1E+rW3svCvP8YXkz/Ud24UwGQPrKB0njFErdU+ogd+JwQOvAGOYAz/bxDB3Zg9/vSOZn5l/QuWcednq6HnHJfqDZjTfJSKL9f406/2z9ZiGv8USAwt+OivgAcUcw7i0uyNvm3VgYqYI2ZFoir6Tum72Ziv6AUzFlEkCI4QP49qe1i/9qnaq7cZaVbXysj+p2N2WYZAODqSwcKMEzy0bkw== X-Forefront-PRVS: 0879599414 X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BDM6PR12MB2633=3B23=3A+RTtWU4?= =?utf-8?q?MdUMFYUx/hGcPnWq3R7QawLEAwlAmRcj9W6QfAjznKUSaDoX7H6SzQNOq/Ym4njyy?= =?utf-8?q?+XO8vJIMs4ljh5Zhx/hci+upum2dES18qnJrZSCpdaytZMZQqsk6UdMDg9dodNFNu?= =?utf-8?q?XscD1mM+JhBuhilD9d1gSV3MqP6Y062FRH9Njxki57wvslxx9hStt+TI6OLOpcv1K?= =?utf-8?q?7FhIL0LdCbkYOK0LPF30TT425JjpeVVfLMwvLje4mh13GgbszLdFMsw57zgLiBq2R?= =?utf-8?q?XWDGzQd+NNQYd1B7zpG+JQVGq/InMMT8Gk1t7/2yACyHOS5GWn3VGf4FCYzHexfSB?= =?utf-8?q?vZ4u643MxAkpqCN3qJh4qt1mScDPO+iFvAN8RBDhjEOmHTutmL1VJO15bZdQSlUJF?= =?utf-8?q?gSs2GW95KxwmDFNE37h9B//WHhZWtgQ+abrdmQ5BzVAt2in6IPcxMKXxGRJv2tHkq?= =?utf-8?q?0Lyi28TO1ZQE5bLUEs4BWflrHMMp/ideI9Mjx1HTpoFCd2SIYKxSIdDqeXYlmSaJ6?= =?utf-8?q?AyNs22EtbfRw+PnG07MnHO2DS/zwwez5bYNgnqpiQveE45syI/EpisFvphU2gA0oM?= =?utf-8?q?wTaWONS5AsgGpqbrrVHuT9qEdHYdnPOb5sjatdEhuEzub8/0QL8j29M0ji35JOxB3?= =?utf-8?q?J9P0LDmRqGpGTDovvtyfFBoqIkA6hheD22l226EAla0w9sEKEIxqVQD77jrWewD8G?= =?utf-8?q?+UbGjnewrSjPKfc76NSCPCXKjRiO4IVLsCTP5PZrk/w83lLy47epSrDUYX8d2ut7P?= =?utf-8?q?38p1jSOq8BpffxsA9yiPeg4CrGjxLZvEsrKxRiBxbr/aCamJo3rdV0L/ywNsGsSP7?= =?utf-8?q?WVJZDD+1yARbQkl6TMGpo1aosEEwsaPsjgf1Ss9jrIs8eX41P6gLAeyHgpq4tvTuN?= =?utf-8?q?2aFKuhecx8+hG9UoXN5qVRoq/2OBa2+fgumcKHEkLupbTywvaMrIcR4In3IkdaRvX?= =?utf-8?q?dzpM01oa65jhx/0wKTQoXI3AuvQ0v8SAdpAi/ZX/bfzP6N3w/30eZxAs7wipHY+kD?= =?utf-8?q?AsJjsmsMxcAAapMqLPXGYq3dC6L0/Bc4bgceUkDkeE5vwBhJrc0Y0dBa9pswP49mN?= =?utf-8?q?Wjz3w0VYE9DRXnDnQ1FQsWhW+JfWbDlUoFh+lEFqf2Sjt0CjkYbrkrO1i1c3J53Cu?= =?utf-8?q?H6/JEDdNtV9FSst09RJ/OTcqpe/Sva3b0CrVrEgMqibXUSsg74P8WSuFNZAdLL4x9?= =?utf-8?q?AGiwLefmhTuukWyAg=3D?= X-Microsoft-Antispam-Message-Info: K8zRw79WoDNNOkgbSXPt9l0claUV0vUoxODCOB/TbsW/EEcvu+0Uyx22vgTRMvwvt1S5eAwKaMilZki1eIgEDxq8kFW/2Ynj+VcfIRMWsoIeKlgIzQVuzq6o3I4YTtmLbj9w+Tn6GR3mmPm0tgNFyLD18O5f5m/iBUY+EMEgEBSAhSO7oe+FZUNs8UDjd2MN34GAgiizTh9W6+SVWkGAg7j18C1lkqeakNYQ5MCk4ylUYsF9uP/WMpm43COz3QbqwsfpCZTuqv9gcd4LrN7ZctALhGpi0pzmq5s+Uc59lmHRZb8lVv0pV+roh7tICFEsFGJBl6MYT21FkQgfHHQPQm80iskph4tiLSiMxJ5Gaho= X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2633; 6:eQ7TMavNFNm5w6KLl8vlYOvvF7I96ANiWxKCrXcGG3+ZAh+1WH//ddturzBvBSXvbLTJFsF1+H/wTDkGaEwHQ5fvdL/9+YWYLDDOKrv+uU6dJWrKrVd/CmucjDO6fHJnDNIClzWx53dM6mjU2DqMFEsoQHXzWgAmE8i4SVyFElLvOU/pH4noQpK1l9mdX3tusbshJabE7eejy1HXER52m7Hf5VWFquT1hpFOvyjXI3C38t1z1RRH3zbOHDOxdX+9Tax240JbaBkHmjDTo3GqkdbViF5TG8Ep9Mum5EGFU8C1Up73rx79O4nKoqW4I+jd84otYFSzzSegLkri9LPHR52dYfurj+cXF7uNaSPcTxU6UI/OW8nXAtYrS1GzRJrZdYXoAyM7YEXFGQeJI7j6LJVaQiiBpqF2YjgWsTK4jzKI81KE/kCpD42w+9k+UuJ8g8FbDJXKFOcJtR4qlgPm+g==; 5:/9g1vZijFy8NZTV7MRZ7yLMQQyfKl5GSSyCjAELPwQiJgzHttYwrZBlbOEgHPkkiKZ4rE7G0LjlZRKsL9rvsPqtdS+WRybdG66D29iWD2kEGKTMPScoqYfD0uw5orw7IeuuMMbmaHPpIdA5Z37z6BEdAjbx8yA2sV5XB8Q9ujv8=; 7:M2UPvYjimY4uJ3hYHifA9JL4wNVIi2SSGbDbwJAySGUMjHMLh9z3Gs9+N5BkQrc7N299ekT9/xhN1uLGyjwlfNZqHDQH4A6cdVoOTBkHXro7zbwwt4zvalvS2OJ8oJL5ZsUHJBl1mVg5YQKuwD6Dhw== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2633; 20:a+PmQO4BnBK4OE8G5lORjVVnLX8MAVK6lnk0WIO6CbrbG0N4ctQk9jfQCFpaNg0ACiwLZKtQoWczWwiM+DUjpgptAkTzzrnj2pnZUuswB0/sgEUvN7AlVM9mjTShCqF/h3nv1ZWAmvqfuJEsZEHHMVmOKimfLa6QgahJWG2r88Kr0wsj0ISYj/gyWJY7OQl37NVN8s640mXssrWl7bxx88OXQ9swIPLK8riF4BBpmu8HSHnOd8uO4+itxKo37/AJ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2018 09:57:16.5442 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 52081ac8-87f6-4cdc-1b27-08d65c2a5ecb 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: DM6PR12MB2633 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: , Cc: Daniel Rakos , Jason Ekstrand , Dave Airlie , =?utf-8?q?Christian_K=C3=B6nig?= Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP syncobj wait/signal operation is appending in command submission. v2: separate to two kinds in/out_deps functions Signed-off-by: Chunming Zhou Cc: Daniel Rakos Cc: Jason Ekstrand Cc: Bas Nieuwenhuizen Cc: Dave Airlie Cc: Christian König Cc: Chris Wilson --- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 10 +- drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 147 +++++++++++++++++++++---- include/uapi/drm/amdgpu_drm.h | 8 ++ 3 files changed, 140 insertions(+), 25 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 42f882c633ee..f9160ea1396a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -545,6 +545,12 @@ struct amdgpu_cs_chunk { void *kdata; }; +struct amdgpu_cs_post_dep { + struct drm_syncobj *syncobj; + struct dma_fence_chain *chain; + u64 point; +}; + struct amdgpu_cs_parser { struct amdgpu_device *adev; struct drm_file *filp; @@ -574,8 +580,8 @@ struct amdgpu_cs_parser { /* user fence */ struct amdgpu_bo_list_entry uf_entry; - unsigned num_post_dep_syncobjs; - struct drm_syncobj **post_dep_syncobjs; + unsigned num_post_deps; + struct amdgpu_cs_post_dep *post_deps; }; static inline u32 amdgpu_get_ib_value(struct amdgpu_cs_parser *p, diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index dc54e9efd910..580f1ea27157 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c @@ -213,6 +213,8 @@ static int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, union drm_amdgpu_cs case AMDGPU_CHUNK_ID_DEPENDENCIES: case AMDGPU_CHUNK_ID_SYNCOBJ_IN: case AMDGPU_CHUNK_ID_SYNCOBJ_OUT: + case AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_WAIT: + case AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_SIGNAL: break; default: @@ -792,9 +794,11 @@ static void amdgpu_cs_parser_fini(struct amdgpu_cs_parser *parser, int error, ttm_eu_backoff_reservation(&parser->ticket, &parser->validated); - for (i = 0; i < parser->num_post_dep_syncobjs; i++) - drm_syncobj_put(parser->post_dep_syncobjs[i]); - kfree(parser->post_dep_syncobjs); + for (i = 0; i < parser->num_post_deps; i++) { + drm_syncobj_put(parser->post_deps[i].syncobj); + kfree(parser->post_deps[i].chain); + } + kfree(parser->post_deps); dma_fence_put(parser->fence); @@ -1100,13 +1104,18 @@ static int amdgpu_cs_process_fence_dep(struct amdgpu_cs_parser *p, } static int amdgpu_syncobj_lookup_and_add_to_sync(struct amdgpu_cs_parser *p, - uint32_t handle) + uint32_t handle, u64 point, + u64 flags) { - int r; struct dma_fence *fence; - r = drm_syncobj_find_fence(p->filp, handle, 0, 0, &fence); - if (r) + int r; + + r = drm_syncobj_find_fence(p->filp, handle, point, flags, &fence); + if (r) { + DRM_ERROR("syncobj %u failed to find fence @ %llu (%d)!\n", + handle, point, r); return r; + } r = amdgpu_sync_fence(p->adev, &p->job->sync, fence, true); dma_fence_put(fence); @@ -1117,46 +1126,115 @@ static int amdgpu_syncobj_lookup_and_add_to_sync(struct amdgpu_cs_parser *p, static int amdgpu_cs_process_syncobj_in_dep(struct amdgpu_cs_parser *p, struct amdgpu_cs_chunk *chunk) { + struct drm_amdgpu_cs_chunk_sem *deps; unsigned num_deps; int i, r; - struct drm_amdgpu_cs_chunk_sem *deps; deps = (struct drm_amdgpu_cs_chunk_sem *)chunk->kdata; num_deps = chunk->length_dw * 4 / sizeof(struct drm_amdgpu_cs_chunk_sem); + for (i = 0; i < num_deps; ++i) { + r = amdgpu_syncobj_lookup_and_add_to_sync(p, deps[i].handle, + 0, 0); + if (r) + return r; + } + + return 0; +} + +static int amdgpu_cs_process_syncobj_timeline_in_dep(struct amdgpu_cs_parser *p, + struct amdgpu_cs_chunk *chunk) +{ + struct drm_amdgpu_cs_chunk_syncobj *syncobj_deps; + unsigned num_deps; + int i, r; + + syncobj_deps = (struct drm_amdgpu_cs_chunk_syncobj *)chunk->kdata; + num_deps = chunk->length_dw * 4 / + sizeof(struct drm_amdgpu_cs_chunk_syncobj); for (i = 0; i < num_deps; ++i) { - r = amdgpu_syncobj_lookup_and_add_to_sync(p, deps[i].handle); + r = amdgpu_syncobj_lookup_and_add_to_sync(p, + syncobj_deps[i].handle, + syncobj_deps[i].point, + syncobj_deps[i].flags); if (r) return r; } + return 0; } static int amdgpu_cs_process_syncobj_out_dep(struct amdgpu_cs_parser *p, struct amdgpu_cs_chunk *chunk) { + struct drm_amdgpu_cs_chunk_sem *deps; unsigned num_deps; int i; - struct drm_amdgpu_cs_chunk_sem *deps; + deps = (struct drm_amdgpu_cs_chunk_sem *)chunk->kdata; num_deps = chunk->length_dw * 4 / sizeof(struct drm_amdgpu_cs_chunk_sem); - p->post_dep_syncobjs = kmalloc_array(num_deps, - sizeof(struct drm_syncobj *), - GFP_KERNEL); - p->num_post_dep_syncobjs = 0; + p->post_deps = kmalloc_array(num_deps, sizeof(*p->post_deps), + GFP_KERNEL); + p->num_post_deps = 0; + + if (!p->post_deps) + return -ENOMEM; + + + for (i = 0; i < num_deps; ++i) { + p->post_deps[i].syncobj = + drm_syncobj_find(p->filp, deps[i].handle); + if (!p->post_deps[i].syncobj) + return -EINVAL; + p->post_deps[i].chain = NULL; + p->post_deps[i].point = 0; + p->num_post_deps++; + } + + return 0; +} + + +static int amdgpu_cs_process_syncobj_timeline_out_dep(struct amdgpu_cs_parser *p, + struct amdgpu_cs_chunk + *chunk) +{ + struct drm_amdgpu_cs_chunk_syncobj *syncobj_deps; + unsigned num_deps; + int i; + + syncobj_deps = (struct drm_amdgpu_cs_chunk_syncobj *)chunk->kdata; + num_deps = chunk->length_dw * 4 / + sizeof(struct drm_amdgpu_cs_chunk_syncobj); + + p->post_deps = kmalloc_array(num_deps, sizeof(*p->post_deps), + GFP_KERNEL); + p->num_post_deps = 0; - if (!p->post_dep_syncobjs) + if (!p->post_deps) return -ENOMEM; for (i = 0; i < num_deps; ++i) { - p->post_dep_syncobjs[i] = drm_syncobj_find(p->filp, deps[i].handle); - if (!p->post_dep_syncobjs[i]) + struct amdgpu_cs_post_dep *dep = &p->post_deps[i]; + + dep->chain = kmalloc(sizeof(*dep->chain), GFP_KERNEL); + if (!dep->chain) + return -ENOMEM; + + dep->syncobj = drm_syncobj_find(p->filp, + syncobj_deps[i].handle); + if (!dep->syncobj) { + kfree(dep->chain); return -EINVAL; - p->num_post_dep_syncobjs++; + } + dep->point = syncobj_deps[i].point; + p->num_post_deps++; } + return 0; } @@ -1170,18 +1248,32 @@ static int amdgpu_cs_dependencies(struct amdgpu_device *adev, chunk = &p->chunks[i]; - if (chunk->chunk_id == AMDGPU_CHUNK_ID_DEPENDENCIES) { + switch (chunk->chunk_id) { + case AMDGPU_CHUNK_ID_DEPENDENCIES: r = amdgpu_cs_process_fence_dep(p, chunk); if (r) return r; - } else if (chunk->chunk_id == AMDGPU_CHUNK_ID_SYNCOBJ_IN) { + break; + case AMDGPU_CHUNK_ID_SYNCOBJ_IN: r = amdgpu_cs_process_syncobj_in_dep(p, chunk); if (r) return r; - } else if (chunk->chunk_id == AMDGPU_CHUNK_ID_SYNCOBJ_OUT) { + break; + case AMDGPU_CHUNK_ID_SYNCOBJ_OUT: r = amdgpu_cs_process_syncobj_out_dep(p, chunk); if (r) return r; + break; + case AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_WAIT: + r = amdgpu_cs_process_syncobj_timeline_in_dep(p, chunk); + if (r) + return r; + break; + case AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_SIGNAL: + r = amdgpu_cs_process_syncobj_timeline_out_dep(p, chunk); + if (r) + return r; + break; } } @@ -1192,8 +1284,17 @@ static void amdgpu_cs_post_dependencies(struct amdgpu_cs_parser *p) { int i; - for (i = 0; i < p->num_post_dep_syncobjs; ++i) - drm_syncobj_replace_fence(p->post_dep_syncobjs[i], p->fence); + for (i = 0; i < p->num_post_deps; ++i) { + if (p->post_deps[i].chain) { + drm_syncobj_add_point(p->post_deps[i].syncobj, + p->post_deps[i].chain, + p->fence, p->post_deps[i].point); + p->post_deps[i].chain = NULL; + } else { + drm_syncobj_replace_fence(p->post_deps[i].syncobj, + p->fence); + } + } } static int amdgpu_cs_submit(struct amdgpu_cs_parser *p, diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h index be84e43c1e19..997222bc1afe 100644 --- a/include/uapi/drm/amdgpu_drm.h +++ b/include/uapi/drm/amdgpu_drm.h @@ -523,6 +523,8 @@ struct drm_amdgpu_gem_va { #define AMDGPU_CHUNK_ID_SYNCOBJ_IN 0x04 #define AMDGPU_CHUNK_ID_SYNCOBJ_OUT 0x05 #define AMDGPU_CHUNK_ID_BO_HANDLES 0x06 +#define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_WAIT 0x07 +#define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_SIGNAL 0x08 struct drm_amdgpu_cs_chunk { __u32 chunk_id; @@ -598,6 +600,12 @@ struct drm_amdgpu_cs_chunk_sem { __u32 handle; }; +struct drm_amdgpu_cs_chunk_syncobj { + __u32 handle; + __u32 flags; + __u64 point; +}; + #define AMDGPU_FENCE_TO_HANDLE_GET_SYNCOBJ 0 #define AMDGPU_FENCE_TO_HANDLE_GET_SYNCOBJ_FD 1 #define AMDGPU_FENCE_TO_HANDLE_GET_SYNC_FILE_FD 2 From patchwork Fri Dec 7 09:55:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chunming Zhou X-Patchwork-Id: 10717771 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 26EA113BF for ; Fri, 7 Dec 2018 09:57:27 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 12CAE2E711 for ; Fri, 7 Dec 2018 09:57:27 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 06F0F2E75E; Fri, 7 Dec 2018 09:57:27 +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 D057E2E711 for ; Fri, 7 Dec 2018 09:57:25 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id CC9966E70B; Fri, 7 Dec 2018 09:57:24 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM05-BY2-obe.outbound.protection.outlook.com (mail-eopbgr710079.outbound.protection.outlook.com [40.107.71.79]) by gabe.freedesktop.org (Postfix) with ESMTPS id 478056E70D; Fri, 7 Dec 2018 09:57:22 +0000 (UTC) Received: from MWHPR1201CA0010.namprd12.prod.outlook.com (2603:10b6:301:4a::20) by SN1PR12MB0846.namprd12.prod.outlook.com (2a01:111:e400:c45c::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.20; Fri, 7 Dec 2018 09:57:20 +0000 Received: from BY2NAM03FT049.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e4a::209) by MWHPR1201CA0010.outlook.office365.com (2603:10b6:301:4a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1404.18 via Frontend Transport; Fri, 7 Dec 2018 09:57:20 +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 BY2NAM03FT049.mail.protection.outlook.com (10.152.85.177) 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:19 +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:17 -0600 From: Chunming Zhou To: , , Subject: [PATCH 09/11] drm/syncobj: add transition iotcls between binary and timeline Date: Fri, 7 Dec 2018 17:55:59 +0800 Message-ID: <20181207095601.2058-9-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)(376002)(39860400002)(136003)(396003)(346002)(2980300002)(428003)(199004)(189003)(316002)(81156014)(8676002)(81166006)(86362001)(47776003)(36756003)(1076002)(6666004)(356004)(106466001)(53416004)(16586007)(110136005)(105586002)(126002)(2616005)(486006)(476003)(478600001)(446003)(104016004)(11346002)(72206003)(2906002)(14444005)(450100002)(4326008)(97736004)(2201001)(53936002)(50466002)(305945005)(76176011)(426003)(7696005)(51416003)(48376002)(186003)(336012)(50226002)(8936002)(77096007)(68736007)(5660300001)(26005); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR12MB0846; H:SATLEXCHOV01.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BY2NAM03FT049; 1:ndW2ueozloaohf1VFidEmRw3Qpx6D5eKlrmjQbPBDYhioQY0c+E/dZLnHZ48AOp3xMtjJRsjhgye2sjZV1HouSDwyleKeBo1jaf/HO6LZvplZSzcePIUs+jYmFPswmzP X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7833a365-5048-4fa8-1cd8-08d65c2a607c X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060); SRVR:SN1PR12MB0846; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0846; 3:ZlMPX6d0AdBOp5Bz6BE8gjgCJwyHoC2IsEJFHsuecj3t6853m5UYiQQ9vPGdtLpfnWhx9G4TXPS8v9KS6U1IvLCPZ4J4lP+Cw0lO21YsEaZ9leR/24XkHw+Otoy7ENwlNLbm+M2VIeDl7FdRI1Kc7+Ao+EfTNRTuKOjEuV6OvUr3EtPJRwPoQh3pepA7dZy6x8N94MQJFsJpObDoGJaZ3e2hf2l5vTVTDCVHlKpu7VB1WzOyp2Q05Aut26acwYAuXuGIGIwCYzi5u9aW2/queYDmT3YQTyP4JXGfou4Yd8Bd3KzN1WNOjso1XkDoFv99U3x0w95GsxwCBrBNvopdrbK6MrIzyihmuOrSLNrplcs=; 25:HNI8/JoFDsq0nFms+ByW709EijQRvjl1UraP7d41bbO5KieXnDbcgTFOOL6yEU2XEjHaHufnlx0E0mCvDHX4jlGfrqfzzx9m3kMBC4GcpkkgLUWLsLVa4nfH1f6+L7oIpUya/N0XyRBR56++gsdt6yxn+lcSNDa02BAvpreh4Dinf2nqlMFYfbqTLyuqe/acNLh4YfaKUeBsf4iV5rk7w5M6O9RJ7huCnV4HOroIc4HgSzAcmZmJ9q7QRLsF0v06+8KPgk2Tdfsvs/IoM21Bdo9mxqrcDCIV1smAGhyXlvAq5vjQymJjpgDeihY4M0MisPMrmU0esZnq5LwHtPhf0w== X-MS-TrafficTypeDiagnostic: SN1PR12MB0846: X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0846; 31:VIlzXl48jgC/uD6nha8wxXSS4l/rstilQic4zZwXaNbVDM41F+RddVvIpeAkWm44dFNEfrtY+pt2+v99xL/qRziHmIG7znfCssMReJuVWwZ7M2xw/EUpKfziD6Pw2n6ro8kHY+dVokz2krz2amrkhDg2cHs4AZgm4xBsRzjEPbZACPLcbHjx7T583ORp4Ajw30EXgLQdaZIZRfqeL20POoDrt6n2ys5UHvj4ba1jqos=; 20:hjEbcjdf67EgWS1xIk/fg+12sks7YnB6fYrVVyP5sIhjSyB8LPf0HHEo5CZXnxxK1c1x7r/tFuKb3iWKaxA90m6PiJ7TbaPEIzPJ5bvRJWSsaafXPPZNVjcIeTIU+uLHCgLmcAvepyIMZwD26lCcXL+9l018isNndZ1nelLEcPCCP2uloja8i618Je6nOPackuvXNvjTRNfMNIzjv4dadtEPc8roQjjULQHfV962SoOzmfpOEgppRBII0T9BZhVMrC9raGGpQ2dR9o6OCYgYJ0oXnc8gTtf7md9gEG81n7yYLCDvgfjTiHPEPxpIfUc6HsU6vJvwlQxQOaP6YWx0r1/pX9b1d2Ug35NZhRj6tMhtM8LfYuLxApCKEUG8ICtALpf3sUKum1sYKKyM+x51VeRBfoDczAZ1xEEdD/TJD3P1/H07pd3y90IcfpaMNRsy+KzSDbyoBKEb0G1d1PYvLC9rMCPJYm6BBXIUnF4fj4ferFZ4HggriJTX5Nkd0cln X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3231455)(999002)(944501520)(52105112)(93006095)(93003095)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:SN1PR12MB0846; BCL:0; PCL:0; RULEID:; SRVR:SN1PR12MB0846; X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0846; 4:bHQ+Gw0wRDxzqioO8fmhbxLhA3CzQbRGnhq8SBmYH+nuEKsG3JsqHozIyu3tYf/DcV+4Q44ydLNodd5xASHY+SB/ybaYMIjj+HgPZfahaQCbgUCXiEGWJ0Wig6nEpCScKjwc8Ycf6ybsihCGCJMobqeXr1ELtb+WalupTF8WoqItGsG7C38Ii/x4k6VqQzi1PmE1is/UdvAjJR6eX9kI4UH3lCngfIQDe5+zrmhRPhwkZ7ogpEo23GBiCohZ5OWDJ3Tu45cX+4gu9g7nNCf3bQ== X-Forefront-PRVS: 0879599414 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR12MB0846; 23:sZZjTtVI0bpVYV3QpKBcRRPL7cxltv5OeOzbRN9jT?= n3pPhKV1uQ++y5jguOUpHtZegOJ7oY9lBWVdk2JyIdIvxd5kIlAlN2ZQrBb6U2D8IJCH7Z3UcxEjz/HqGek3qQalf4Ca/7O9FzeWT5P5LLKafdAe6/IRA8+5xf65vyqty2yPTpS3uVSYT/cHxtwHyNaZgS+BPslOtqEfuuV8pMI/EthDOOHUiV7LOYMudvGbPgGgmXkaGPUSaEzZ1YBjTz6992RbQ0kpOVv5QlcBxLvTXcVC/BrywKbwQDeMiVOJCECcQppy7NSUjB/5imi9wkDFmk2TrimiUL+bF4SC4llGEveD37Su9ucIbCFMdAC7LHRYDAJREMIug3BQHGlm1PwIUx3NwV+q/B++qcKi5ypN8/XiPiDoN/i5uFXjiQ+/PfpmrY0xn1A7Yw+SiK/75nEgqBVjTqb7vs1sCmt1OHWkT+rWDeNhlCpguyKjBnfVuMipJqmZhik85lMe2GkyV5rP/zcAZfaOIKoyDiKEldmy5Kli67YRJ4I5OwqK5fm01hr6+tIipt1xZHKAq7F/lw7HF6ez98ClAGu+VM33KCVsIY1voKMSM39tTXFJAtuBVmM6hbmg8lQTauuO/XxZiB3dTK450X0TS8vPFoMK2qTw7VaCy73FDSOoGMEctkNHTb7YtG4S5MVaxO/IcpBLauXmuI/ks3wFgtidpoe62Q+ZJviKOMZHqsd7PJ/SwuuM9h/7tDBvyqqru0JY+mjfPxhYpjBOqCxZBpUbHe7bPTY1SnPHjf8u/YrUWD7lG2UWITD3oSgQRrk+WTn9gLWoGhSgqRnhHt6lqMgdkmDb+n1qhulgqHggN8pPuizCkorWA4PS3IMhjs1bp5FKxKwMJV5Ter9LvNlByjqIqZ5DqE5EBP9HQgoEOsUXyZlmW+pgSsSbrhyp1kg0njr4/oEoKHrfT+WQ6Kyv5VHa6kEx6LL6t973sMEtsZU3SU+QIJxqbn2cXqXBG8/0HGb9tssbH5kEDRWKwAIsiDx9+TLeJ+5RbsHI+LJH8lTvXTFcinDEc8CB7oF9J8cm9FCdYL3K+3T15kiC2va4+jYSyTmwhPQmhRObsIgJb8D8MZ0EMGTWiJxdlxoj/YK9r01N+89Z3rU9vXZ6o1jm7JVQQCf7YhC6Z3lz3nIY7JOamL7699+QqnTb+J0rfasG/pMBO/Q3v8f X-Microsoft-Antispam-Message-Info: Yrdlgb7VrP+WKNAnf3vk3uOuSn/e5LS7L4JScY+7sk2HSQ+WSAMUecdA4leN8o6EszVsb7JgY7x29B9NgEnF0K4W67XKlaTwOQIMyBaOpWZ7iplhrBMyDcYQpTSu/FevpymlLuL3qd8sR5HUyd4RL1d58XtwvpmYqZK4oR54tKWVvA+q8848E683t5U9NxoCVMra+qaZY00lbfmm1q3nOa5x/v+uEaVa0A4QlxZ9ca6zh5RySFn1zqd4RBsgsVFsjIJD9RCfITuzuUeIduBbPqsYIp4Aes+qWa70Dm0kmjYcb5M3xG3BuxRx+R3W012mEVUIPuLx8L1xlWNlSZUr66s4wW7R+4nfqFz9Dado7XY= X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0846; 6:AcZ7cIafyh+oAQwGvZzKqB7FZqtvne/md9Ywmsu8VBJCI0BAOe5s3CfqKJs06ZF44WMrJO1Eybu/qwbS/qTNsPhfOZYWjsP1I4tUs8IeLAOhAdXX6G4TEa3yW6C8jMYMDYF4N3pVIaN0H3TLi37ahMFZpHNjhrEQlrVw6J704zKlzlZNAEwzrbCrA/REopAglphtd2GqWb4SWa/GFJ+jeoSir2Y2fTm2rjPFpsMjgDvrZG91jfcx8Z46uAq1Xm3iTMYgm+FF8PJLRPNiZxC79ct9hE2kHak8bACW6NdDBV26QLiHI4jkR3wtHbrwZyC1lydYff/UH+rjDGDqtHF4H3m7CUPKuMysIU91wjX2KoBZRO4uWf1WFwukiCtHMoKYpTZxY46YkuTUW1g3Ef894PF4KobqT08f3SyGYpngWa483Mfeq0sDX89OzPIUw9zEbdcz3VWgUIMH23b5XYPUpQ==; 5:3PqNCl9jK+6olHvjMbxJu9FAsCE0f6YoxAfP0QaPQB5VHuyKpPWiNTzqohspVpqtwDyASZ4lh73wDACJSKzRHD5HOSldWZiLiledMcw4Mwz2+2pl2NtR38pjJ9IpDwSMGAFjgTOSNbFXzmW1AMYMRjkjCD52gMexYTS+eCThjLU=; 7:eeJjHxl63+nxa8h1wAWKvQc3lZVvtapKcUMsIjXeT8xSgOOXZPDxLFbmvKMdpbTp7wilXIKmpF+lHKn8zX/iQMXDFQYm+mk3FamRvRqSwz0KdAzSBmBswieOwvSbTqfPKsKAvh0WEDqKO1Yrzn4Gyw== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR12MB0846; 20:3q5KrN9kmYa/TLcMyqSWCr3ZRBsLEoECMKE44ZlFYtpvg232jeQ8RGt3C2uVRQCUnQzCs17vJURAWo5N/Clf/mfDKPmZ4kqajVLlDqEKSpOAv2RP2JkOXyguY/b4jd8SOxNxa3AkKqbmOfY+pmYxaYvAjozBH+3VJVTFa++td1r7hvpvNQT5sZgspIfHfuwyvCK+WNNeQ9ncQhy68C4yaVaEjr9haPDP0Kxub/xQmsv5MX1GKMwaSYfpAxNANdX3 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2018 09:57:19.4600 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7833a365-5048-4fa8-1cd8-08d65c2a607c 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: SN1PR12MB0846 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 we need to import/export timeline point Signed-off-by: Chunming Zhou Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Chunming Zhou Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Chunming Zhou Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Chunming Zhou Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Chunming Zhou Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Chunming Zhou Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Signed-off-by: Chunming Zhou Signed-off-by: Chunming Zhou <david1.zhou@amd.com> --- drivers/gpu/drm/drm_internal.h | 4 +++ drivers/gpu/drm/drm_ioctl.c | 6 ++++ drivers/gpu/drm/drm_syncobj.c | 66 ++++++++++++++++++++++++++++++++++ include/uapi/drm/drm.h | 10 ++++++ 4 files changed, 86 insertions(+) diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h index dab4d5936441..ecbe3d51a702 100644 --- a/drivers/gpu/drm/drm_internal.h +++ b/drivers/gpu/drm/drm_internal.h @@ -176,6 +176,10 @@ int drm_syncobj_handle_to_fd_ioctl(struct drm_device *dev, void *data, struct drm_file *file_private); int drm_syncobj_fd_to_handle_ioctl(struct drm_device *dev, void *data, struct drm_file *file_private); +int drm_syncobj_binary_to_timeline_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_private); +int drm_syncobj_timeline_to_binary_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_private); int drm_syncobj_wait_ioctl(struct drm_device *dev, void *data, struct drm_file *file_private); int drm_syncobj_timeline_wait_ioctl(struct drm_device *dev, void *data, diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index 7578ef6dc1d1..6b417e3c3ea5 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c @@ -673,6 +673,12 @@ static const struct drm_ioctl_desc drm_ioctls[] = { DRM_UNLOCKED|DRM_RENDER_ALLOW), DRM_IOCTL_DEF(DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE, drm_syncobj_fd_to_handle_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW), + DRM_IOCTL_DEF(DRM_IOCTL_SYNCOBJ_BINARY_TO_TIMELINE, + drm_syncobj_binary_to_timeline_ioctl, + DRM_UNLOCKED|DRM_RENDER_ALLOW), + DRM_IOCTL_DEF(DRM_IOCTL_SYNCOBJ_TIMELINE_TO_BINARY, + drm_syncobj_timeline_to_binary_ioctl, + DRM_UNLOCKED|DRM_RENDER_ALLOW), DRM_IOCTL_DEF(DRM_IOCTL_SYNCOBJ_WAIT, drm_syncobj_wait_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW), DRM_IOCTL_DEF(DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT, drm_syncobj_timeline_wait_ioctl, diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c index 282982e58dbd..cf4daa670252 100644 --- a/drivers/gpu/drm/drm_syncobj.c +++ b/drivers/gpu/drm/drm_syncobj.c @@ -670,6 +670,72 @@ drm_syncobj_fd_to_handle_ioctl(struct drm_device *dev, void *data, &args->handle); } +int +drm_syncobj_binary_to_timeline_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_private) +{ + struct drm_syncobj_transfer *args = data; + struct drm_syncobj *timeline_syncobj = NULL; + struct dma_fence *fence; + struct dma_fence_chain *chain; + int ret; + + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) + return -ENODEV; + + if (args->pad) + return -EINVAL; + + timeline_syncobj = drm_syncobj_find(file_private, args->timeline_handle); + if (!timeline_syncobj) { + return -ENOENT; + } + ret = drm_syncobj_find_fence(file_private, args->binary_handle, 0, 0, + &fence); + if (ret) + goto err; + chain = kzalloc(sizeof(struct dma_fence_chain), GFP_KERNEL); + if (!chain) + goto err1; + drm_syncobj_add_point(timeline_syncobj, chain, fence, args->point); +err1: + dma_fence_put(fence); +err: + drm_syncobj_put(timeline_syncobj); + + return ret; +} + +int +drm_syncobj_timeline_to_binary_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_private) +{ + struct drm_syncobj_transfer *args = data; + struct drm_syncobj *binary_syncobj = NULL; + struct dma_fence *fence; + int ret; + + if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ)) + return -ENODEV; + + if (args->pad) + return -EINVAL; + + binary_syncobj = drm_syncobj_find(file_private, args->binary_handle); + if (!binary_syncobj) + return -ENOENT; + ret = drm_syncobj_find_fence(file_private, args->timeline_handle, + args->point, args->flags, &fence); + if (ret) + goto err; + drm_syncobj_replace_fence(binary_syncobj, fence); + dma_fence_put(fence); +err: + drm_syncobj_put(binary_syncobj); + + return ret; +} + static void syncobj_wait_fence_func(struct dma_fence *fence, struct dma_fence_cb *cb) { diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h index b2c36f2b2599..88d6129d4a18 100644 --- a/include/uapi/drm/drm.h +++ b/include/uapi/drm/drm.h @@ -735,6 +735,14 @@ struct drm_syncobj_handle { __u32 pad; }; +struct drm_syncobj_transfer { + __u32 binary_handle; + __u32 timeline_handle; + __u64 point; + __u32 flags; + __u32 pad; +}; + #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0) #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1) #define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE (1 << 2) @@ -933,6 +941,8 @@ extern "C" { #define DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT DRM_IOWR(0xCA, struct drm_syncobj_timeline_wait) #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) /** * Device specific ioctls should only be in their respective headers 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 From patchwork Fri Dec 7 09:56:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chunming Zhou X-Patchwork-Id: 10717773 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 B596913BF for ; Fri, 7 Dec 2018 09:57:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A39572E711 for ; Fri, 7 Dec 2018 09:57:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 97B522E748; Fri, 7 Dec 2018 09:57:30 +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 53AE62E711 for ; Fri, 7 Dec 2018 09:57:30 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5BFF16E711; 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 NAM02-SN1-obe.outbound.protection.outlook.com (mail-eopbgr770054.outbound.protection.outlook.com [40.107.77.54]) by gabe.freedesktop.org (Postfix) with ESMTPS id C283C6E70F; Fri, 7 Dec 2018 09:57:26 +0000 (UTC) Received: from CY4PR1201CA0004.namprd12.prod.outlook.com (2603:10b6:910:16::14) by DM6PR12MB2635.namprd12.prod.outlook.com (2603:10b6:5:4a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1382.22; Fri, 7 Dec 2018 09:57:25 +0000 Received: from BY2NAM03FT015.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e4a::209) by CY4PR1201CA0004.outlook.office365.com (2603:10b6:910:16::14) 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:25 +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 BY2NAM03FT015.mail.protection.outlook.com (10.152.84.212) 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:24 +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:23 -0600 From: Chunming Zhou To: , , Subject: [PATCH 11/11] drm/amdgpu: update version for timeline syncobj support in amdgpu Date: Fri, 7 Dec 2018 17:56:01 +0800 Message-ID: <20181207095601.2058-11-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)(979002)(39860400002)(396003)(376002)(136003)(346002)(2980300002)(428003)(189003)(199004)(2616005)(47776003)(50466002)(26005)(14444005)(476003)(11346002)(53936002)(446003)(186003)(48376002)(77096007)(126002)(104016004)(81166006)(81156014)(72206003)(8676002)(36756003)(478600001)(97736004)(76176011)(16586007)(68736007)(486006)(106466001)(1076002)(50226002)(356004)(6666004)(8936002)(105586002)(305945005)(86362001)(2201001)(110136005)(51416003)(336012)(53416004)(4326008)(450100002)(316002)(7696005)(2906002)(5660300001)(426003)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR12MB2635; H:SATLEXCHOV01.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; BY2NAM03FT015; 1:sh/PkzY2ZOKchDlltCgFoWUMiUa65NJt7Ka+j0S8C5bqIAxwPWOHLpI+kxvCC0nsukAYqhOPzjgnJcaqEAcLhh4Ch1mL29I3PyFt5zf/1br97/B+aRYI6TWgJxaNJgC4 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fcb13a0b-391f-4266-e35c-08d65c2a6398 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060); SRVR:DM6PR12MB2635; X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2635; 3:vEDgm8CgPflRqtGHV3WdwkbMsMIisEtBb1HdDoLFjDXcJjjJV0mGUCzRm0LGrM0Dm+7a76VGBWOFqVwS/1HMNK5j212Q5gJoIxhxYxYfhrqkT9U2uwD+ItMtlP3TOC4hbx6jd5S6jtckNxfG6bcOM46rDtK0wB9ei8bm0GB8f7DlEonWyPuytAbJ1bpeOETVWGHmAtg0mPCok7ldJHflbB1wNwHS0rOFBO687j+Qn1zobmOKyAoy3dFi2nBkv2jmZ5gHZ5iVBVz6Nf2oX9IURqAV9KgRDKvLZXlrb2WHPWRqD0IWpmneg/YNOWER4gIADChEcsHGqX3WYNVDN9kuHPf9Ov96HTmoP7FGjIaXHSc=; 25:e1JEE18MOVG4cUbDEdu+YH+RRvZrt6OBX/TaALCTm2M2YVjLxnpO0ENA89QMDF7k5WUCaDQPoVRrc5BsFeKtAEYJ33TBjkYJJtTb9TQvaNIjoqCB+yFHhkWUQRHTMEoA3s+DXBehAlrlRhyNCD0pnUIBLaID58ZBwfLcWXardI9ivGoXE31NxYnlMIEzbhHNWwqAcak1LqA95+KU/+/p3og1WD/f0j9OKajShFYZeknkd+rD9RMT2jHRW6Vwxe/LbDiN2LRSbc8peDsqAmuwOHDn3j3SSCwLaRJliqBhHStcKPApgroRNMmbyzyp/mFQvQCpQMGRX7pUet1k1q2WHQ== X-MS-TrafficTypeDiagnostic: DM6PR12MB2635: X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2635; 31:FCxm5CLYzcpBS4Ra+sBVy7+3Un26jILDODjCUUZKEhkQ62AFGVYGpyOC1pSVO8FG5yhSwDQMVd+x64i0HYrBOAgVDzgvlk+LFigdMGoKRH6vmG7EGJkgID0f7SHArHSd+6al29xU0bOQdKASKTHkpSjpBtZXpuSGit/TBUsqlkB218jA6KEiotZ2rvR6EZurH0zKPuVlQRlJ0nD10lSJCn0pUYguFGl3yEmK8bdEsmc=; 20:0X0hbq4GNmDC706DbsC/UObczs34ai+W0AE3GCC9UsVzAhqTPlWoU8pVXVGqy/ibrhyhTG0dk942W5DHQQYUQOdDl0hXBQkhx5uug5+K17jRfQW8JEI/z2ub7KXCRsiKZSdKq9S0x9VcW8x4qKcaj83nIUtB8vuTbtUS/ozCkf76F6foeM0JJT8Ek5gafXATv5BReB6zDSI8jNumg3BRdKbU+KCq/UOiov1lYx9aKuJA1gbwsBU1aB0zWYgCXLJXHSURwCxg9b0dWjiuj848z4Yb8wASoE0edBrPdNu68FIXYqNKWTxmKBM5w8AvhNyPq9v6Ho3P4xiVgZed01M6a5avQUaLXJjeLxm23EGqWcg5ug2/jV1uF0U7z7wJW4BrYI/yQ9G1Sp4JnadXkAOsOuvxTrWipfEAhryoeu/+T3pZY2dhIO0Lg4KBZwAH8fF4fVR+9ge4VL1QT6hGXnW5dfgIK4W4/MxU2I2pxaABx6/PXBBZ7j/TnmGFx2NNgvv8 X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(93003095)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:DM6PR12MB2635; BCL:0; PCL:0; RULEID:; SRVR:DM6PR12MB2635; X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2635; 4:AmVOmQrZYcuIiqt4OrL03QkbzlXW9hN/qtf6mcIXh1chh1DFQehtYZPYWRikcqK41UWUgh+Mg/wAyyzRaUmNeFNOPPlC/LDjfINlf6V3RQGNptBQQ/ppyaG/SVZWREflNtDllakIvyODZ9jBF4zRckBFatxEt+jB1v4FC6+EyxZTU1auleyfvtegSaxk/TU2HO7A3PRqETGW8NM/tQaxY+OR7hvfEsrKYnuYik8ORoG5vf4UU9Auvw8dAk28Bjyjs1SQ93Ugk+FEPjV21WyzVQ== X-Forefront-PRVS: 0879599414 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM6PR12MB2635; 23:4ow1HVeCKtFOlpwSSnmuiMIGOCTFpYR1b3XK2rwCv?= fZRrZ/tBFyB4kmfqNynY+1YUU04w8ZL7vlRGXX7XfOH+dW/UmrkwQhuzfqY0atUsTrKjK1qAXcJDddDKwSs1GnJR0HhgEp99JkSduWJw1ycKE1I90uS45oqqADmaphG5Ckiwe6NMJxP259pmRiJ3qlaeORXSkQNJEzl0hE/rM4bpknMoXEPVK9KdCUQcriT9B738vic9o6/jaOuHKQrDVGkSmkmzHBb27VfVXnGytJBsgIiyXyTDTNxpZJdz2KYfF3IghlEus4epHgYGK17CaQGtrB9HpIJPP3LIJxDHB9yguF8jFtaG0E6cN9ZYodxza5v97+2xC2avaGEMEYpLzuH0hriqZYvCt2w1TWVi3oZY2q5k/idjrKyb7tIzhwSkk0z414JmZ/CfU/x9MnnfaRQaURnO3agMCF+4jh0LAShhQcztM7TcasY2JjgphpEZqQnN0Rke4Gjb4Qxv+fGzAVDcxJ6BHKtVsAbXTNbsUupAXp9w1vjsnfnugF91/xKLIuYXtMW/9b+JRPcE/JSihG2p7oZsyGLrSkngpahufNiHL6PMWTtTSBNf2mx/DWwnI0TAol55qFo0e0Okp4X9kVaaJuI5fwPq9d12OHA3dtfitSig83fXwcA9LSAwcKN0VOT3lb3QtCl3zGpuMtCebhqQm10ota9tPQ3smvn94FK+OL/+XGWM1+DZsAqrM9hnTt3gQf5o0fgialWd4pKwQjko34MrO+kzLqQ3BlHRH3+WcNSrP5MiolPLd+KZP2akiuSPACDT6tWc9zOvVcirbol4VktTBNDNU79BC9BqbmAPU9PS4NxE9mBhfPTlinVzjZq7gAvFVwZ6wq/2H2wtERArpXjcq4AjHIi5T26w2oSWQ/Ry+g6CVImoMMBhG+cbGdjoUjGpX5mCslwysalnumiqY2p0cYTTl/M0J0C1fVcpIgVtl02pYXgJ+y0VJ46Yatt/eCOEhhVSfsqFo7cho+3Qhmcfsd4O5X9CvPUP3UHpgeZqXnv//L0rV5uaRAMa9hxq0XTq8+EFh5A8PXQbMADVoT2QjwHMhmbjuHfv3PxjYQgqKX8vBHdld4FfqQrzdAIGTfifGDVAshQ8GWg4lcQEzTm824JPY+h8QSsjPhFCQLEAGIs/qRmH+T9+pvrD/22bz8ftMaRqngvkPa81dNRjhspdHm9Id3DWJcauGmZ+L/csZzaIngYnslIRLCpoc6P2eoDu37DMx6ZCRg/0JherjBLF1jhklVh96Y5jXlmm1adB8NAETc+BwOGH6v9dgQ= X-Microsoft-Antispam-Message-Info: 8x5XV89TrJ00qL85Fh8kxRT0xaCdFcT59v9NZJigLg+nUZTf/4Lrz5U7VMjoDjjbQg0+yXZ6/rTDic6R3CambO5KxrL5Ob0ggaJcF+RJlvCQnGcbMykBjDrtVrs6APvnjMDcecJ7AEZOdaV8/j9XBdLgUX7zffayrR+aWZ9pGONNw93QgDWhCdvMGksPGwiQ0/PNoyBRtvkgYWu1jbWZmYMvYzROJyGiYWfVBnIgfCYteYAk6yhKweiYx4ia0U2BJ9cL085aaqlxFAQDAs2B/HpckG14AN5mp2vnH8yBrs2xegU8Z8G6VOCXNo3EqoLNBogPX4dibeEod29OrGOce05F/RzIx4z6RKBlt8geyVA= X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2635; 6:VQtKduh8tTTdzK46FxlBsCMllgvmspszQk22xXKJZvM7ALF61pOU3uYXnqzQBGnmRWE+SavHevWoYmU6jk/XuladdLByRQkRayJhZ1jTijdLUHL3FkzO+u3QDyo41BsJsHddQerLws1JXznm5sW4XZ++AFPea+PlGQ7Pbkx03Lv+TT/Co+ZaxDX8/2+24rBJL1eht9L1BjKX2D+Ls4vBHjp9FWcCZ7pj+OxcaJqf8JOrHqTv/S3I365cGBatQKLWr2rcF8sLq0lku1ruYVDcbnnHZTE1+w7jsE33gc0bvRqpUJ6clmOZN99Af/B+RVG7vWUgayc2XTCDugyXjWy8XqaYP28jJ9LE331QXZsib0YKgezBKNitNP4G7OwLFQh2bpHYojQOKsY0KrFjgc0w3r5VGnc5R9PqLGu/EbtIUXS/dWL/lV4L+ftzXlED76DCXQQ8TpmoJIDO4x6GNluOgg==; 5:rcAIEAfY12Zb8tloKBKdOyEpqZYpaOEaVqjRBDkc8dNYAHnfq1tQRTam2GaMbrtuIxZ+OHSrUS8THAUfk92FDGgOz+NYVF9p6AdVcLdtljvE2USLNK9wgKAJo+PMBdSlwkSLo6xt0h0UNXWc+xT5NwT9+xmHDrN2E60dMsoIlno=; 7:9Lniijhk+BSSLsMuivV6gVpvzxS5r0tM23r5mtzsiVJRKIlRZCgXGoSpzTqYTMwi2qyQlWE82qNwDcquMpXwlY1Q0W9pWGNUB/d83/ecsTpOOHZPxtcfAqtg7gFlvlvBLFf0DwAHR7O8tLy+DcSMeg== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2635; 20:CiNzkD3Im5BwZG7huSGnmgftODdz9CnaWTCvvTMg2fanW4IAWMn3k3jDcL+vl7mu1C2fPgeTKsHGu3zET8zSlRbJQtahaFHFN/9xN7FA4wUJM05RAr21pLE0EcooPvVVqxmEk1MuH+DbjL8NkRnht6fvNhRYE4SfwZeHsKTVTniF1zNJW1V7ccaLADcJ5kgBQgKXNhGnwS8ZwtFCSse9RXMdmjYkvXaTcZsqTJs9MHp6mW70i2TNivU7RVchhclR X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2018 09:57:24.7131 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fcb13a0b-391f-4266-e35c-08d65c2a6398 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: DM6PR12MB2635 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/amd/amdgpu/amdgpu_drv.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index 8de55f7f1a3a..cafafdb1d03f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -71,9 +71,10 @@ * - 3.25.0 - Add support for sensor query info (stable pstate sclk/mclk). * - 3.26.0 - GFX9: Process AMDGPU_IB_FLAG_TC_WB_NOT_INVALIDATE. * - 3.27.0 - Add new chunk to to AMDGPU_CS to enable BO_LIST creation. + * - 3.28.0 - Add syncobj timeline support to AMDGPU_CS. */ #define KMS_DRIVER_MAJOR 3 -#define KMS_DRIVER_MINOR 27 +#define KMS_DRIVER_MINOR 28 #define KMS_DRIVER_PATCHLEVEL 0 int amdgpu_vram_limit = 0;