From patchwork Tue Dec 11 10:34:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chunming Zhou X-Patchwork-Id: 10723447 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 22D121869 for ; Tue, 11 Dec 2018 10:35:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 11D512A0AA for ; Tue, 11 Dec 2018 10:35:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 05AB52A0DC; Tue, 11 Dec 2018 10:35:54 +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=unavailable 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 BCFBD2A0AA for ; Tue, 11 Dec 2018 10:35:53 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BBE006E0AB; Tue, 11 Dec 2018 10:35:51 +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-eopbgr740071.outbound.protection.outlook.com [40.107.74.71]) by gabe.freedesktop.org (Postfix) with ESMTPS id 168526E0A3; Tue, 11 Dec 2018 10:35:50 +0000 (UTC) Received: from BN6PR1201CA0017.namprd12.prod.outlook.com (2603:10b6:405:4c::27) 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.1404.23; Tue, 11 Dec 2018 10:35:47 +0000 Received: from BY2NAM03FT004.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e4a::204) by BN6PR1201CA0017.outlook.office365.com (2603:10b6:405:4c::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1425.18 via Frontend Transport; Tue, 11 Dec 2018 10:35:47 +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 BY2NAM03FT004.mail.protection.outlook.com (10.152.84.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1425.16 via Frontend Transport; Tue, 11 Dec 2018 10:35:46 +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; Tue, 11 Dec 2018 04:35:45 -0600 From: Chunming Zhou To: , , , Subject: [PATCH 06/10] drm/syncobj: use the timeline point in drm_syncobj_find_fence v3 Date: Tue, 11 Dec 2018 18:34:45 +0800 Message-ID: <20181211103449.25899-6-david1.zhou@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181211103449.25899-1-david1.zhou@amd.com> References: <20181211103449.25899-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)(396003)(346002)(376002)(136003)(39860400002)(2980300002)(428003)(189003)(199004)(81166006)(2616005)(336012)(106466001)(7696005)(476003)(81156014)(126002)(77096007)(11346002)(53416004)(53936002)(5820100001)(446003)(186003)(105586002)(47776003)(68736007)(50226002)(8936002)(97736004)(39060400002)(4326008)(23676004)(26005)(8676002)(426003)(486006)(305945005)(72206003)(478600001)(2870700001)(2201001)(2906002)(104016004)(76176011)(356004)(50466002)(66574011)(5660300001)(316002)(1076002)(86362001)(14444005)(36756003)(110136005)(54906003); 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; BY2NAM03FT004; 1:UhjOzItRiJuhKZ4iKa4Eh9vjvy/AWu0dBkezNV8FgkohFSl0suWC8ufaCtaNib0wg3FownrFkhyioSAOIiOuaul3uno6IwmMncWN1bDysb87UJ5GALWlSROYm0TiHgen X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 48273570-947e-46ed-ad53-08d65f546978 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060); SRVR:DM6PR12MB2635; X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2635; 3:HpBvLEE/Blt1d8Z4RvraY7MYOj9HRlsSFNHz1lCLXY5ERhLYCs+evat/JLQiQ95HAVpxYO0xh+K1iMxtxucwlpCysIPFtzXJqWlqvsDJHRsdTFsx6Rc2xq81PDZaS0HMvM+Jcy1DQJMaaiLcBO0zUzXPxR20VRBzhwnX8+YUrP9GRuqWz/7FsJeJYhPp31Z9sV7sm8s5buQsBFDZsp/3R8LcPCe/ZZiFGlvE6SKdlgHuIvch3S9MabbCO7a0uuNo/4Hs0z5vjiKl9hSYHdOtvBM3/O/cbkxvmleVaFnaleCMfQatPAOkYlXt5X8bMBAsLPB5TYYbX0ZuhfxdUWjwigN+xQnjANnMnnNs8uTp04k=; 25:fKR1BPhasE2FAw9DDHVO0ch2tP/Rog2L8Y5cFfayoz17Z93umcpCWG97iMiNAD8NBfbMlWDdXFplWMoWYo8pHSUkPbDXZbNCq4I0yTNHeHZI6iB/1pMbwp8cSuXFufDN/3mFmzdzGOkVEUIi3PQWavz6aLXBqSSVxLxzyqpV3e/HSCT7I6HTjf/oAnv39wVxIyHl8eYnPwny186pbev76U6hehEee0X8veSIlncr/m7gWZJeaxMfWydgmBgfxmYo1maXmBjs7THrujisuwmjzi8NiNnGo8wCK2hhaerqrJzkW8C76IZ6QePkrhiovuznd/jrWoNb/zrmR3viEi6qGw== X-MS-TrafficTypeDiagnostic: DM6PR12MB2635: X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2635; 31:Cnc8jJSC7B1HZmG9oNXDH3A3i1QSobDUF5n2hkSVMWBHxJdyshsImaoj+eAZR5MRxl0B1AqksSGGl5vj3CQa7Qm4slIQ7XADAkVNWcVT/GAircXfQr9G+kQqNNdzRi6RHb955p7hoGJgOLjL5pf8qcAwuUCpMt3MYh8CUnIv7XgDVf9uRu3t8Bo4eewY8eVtHlSOerEXMh+Er8IV0GZsZ5em1TdaJ3deZ6lVvKgAn0Y=; 20:6ugW2qIphhHbGOlOkFYfZMsvGVOGj18rc/IlFP9Ow4cLAQZtDPXYTJVfOtdNI9YMQLQyaF2NCRAATSF921zDvcq0uq8KcI+ZEPThVyMMWPEF5qAczbKlSd716SWt8ozlpXXlPnhp6IDoRfVxZhohi8hT31aXhhqi42e25Wb+i6AY3YxweKklVUrYAOGbcBcFQMia2guVlXMKtCyeiIgQ+Ohn3fYcQrj7RwfV35jehi/rJp/UJpDFXbb2yPgcPDK0O4M92qo2ilT7psdyKUCdO5Ik0zBMwtwbnN63Y7iLAX76PXb/D6P+QkY70dWCYfopV15X1NIOmpfOlux0VVxrzBaOZT3oXtzg61FaCCNwlB1RsbKFYQKERCG4b78yqYqwfJFkPCgtL5OPDScrq9miS9SCPzQ0v7sYCbFWpomcBe2TshpwpmtDmww+0Qv398MtgikQbPUsJE/XppJWQ/g7RhYWIRG/CCAqyoPus5cUJ9pI6UTMmKSzvADV3jLJah68 X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(3230017)(999002)(6040522)(2401047)(8121501046)(5005006)(3231472)(944501520)(52105112)(3002001)(93006095)(93003095)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(20161123558120)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:DM6PR12MB2635; BCL:0; PCL:0; RULEID:; SRVR:DM6PR12MB2635; X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2635; 4:I6TSEaS1PjZ7IYF1+R8xfR87X2ch4DOhEFvWQCANSED19VFOBd1Pb+7suym++54lLmdZdto3qMzEQMlySzOkwVFhTpP3SD7mALyDSD8+f5HXvnv82cIwAiCOIk8755V1Dp5A7SG9wXoIp4h5c1v4jmAX97gyyUPKRTDXcgBKJUSAW+N1FsTfPrQHIfJ/uh6r8P6YJUrRgAeNEIMcl+jeLKYqBTRrsE9IZ3UtiERIyVUhNS3SC2JVfZsLZCVFRyUN+THd89dcAnHCyGnDZwR85g== X-Forefront-PRVS: 08831F51DC X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BDM6PR12MB2635=3B23=3AhcsF2BU?= =?utf-8?q?X5d7a7gWbVXdS9e2/ooJAF95mRrylaSSluPG5MUhZBu+1NbjyRhzU8WooCIKsI12W?= =?utf-8?q?6Sy/KfUMmNiMObP95qwhTmiwR40J2hQ/rL51kXdtgxRWMLE3VbO4wPZO6gQqEku1e?= =?utf-8?q?PrPsU4A3zDNYLeKahhg0Vi65wtyptboaTtXHoTdEH2RdpsrsySldhLiPQuM6+XVVT?= =?utf-8?q?zmfeYBQbGCKbnep9UyAoBr7vfayoxOQjajAJLTZCmVnz081CCrpRqcyJ1U4osACmz?= =?utf-8?q?4tVbnqPGK7fnY/1ubkWHUdoW9S8oCumITbtOQ/N13Cb7cjh8gxjv1HyfBvp7iIyow?= =?utf-8?q?qOPopZS6Hz0UEkagDkbyfPCyfOAMZlYpUOEnWahpsvIFXZEA5KcJCU8asfvuQ2nGD?= =?utf-8?q?J2547hvicxLzcv4eeh/1H2/AbdT0iLyw8+CEwM/R1gWhKGSoNVID1KEY09l5fWKlC?= =?utf-8?q?/GwHJBjADwQOddSjX8xNRoGPKtB+teK/ZYF6WWrZIHxixQqLlhsK9ITlWzsuIvyle?= =?utf-8?q?OcHDwmecoRV3E/moe3EZVRJHe8jtrG6AtbFqPekM9Z+X0946NDGd2LsxeVYrxkHuP?= =?utf-8?q?6l7Qn93nQO4UlyIULp8V6CG79BoDoyOZ804ZSKjSuxhsc3Pt/oG8z5nsvmr6F93/K?= =?utf-8?q?iujnQwjCivTwdsSU+q7Vp/1YJVgmXnvhlxEUpbBe3GRFiVUSlEixl4u3QQ94jiVca?= =?utf-8?q?imb+DdPpUdRboujOKbXGi04x7qGxe7feZJPKGqWfwT6svoQJKiQzWZJYY/TwQPbz4?= =?utf-8?q?+uGf5skHBwyiiumwjVvlPbKRRuFLPo3CQptvcBlWGLGjxQBZyRSULN+zos6jwCHwd?= =?utf-8?q?X5fmLKWGizdctZ4Dk18pbzdD/nUbLchUixy9v6jOfST9kPWO0tpu4tathc/TSlKat?= =?utf-8?q?CeK4ADFvoAcWbjoUu8vdjvJMU8RdOPs/QGJVxSy6Lqkv4CaOcTd2CMqhmHfcglV40?= =?utf-8?q?9+MUDuracIKVuaJ5xx4Thpf7Zhyr5YClF9G58kANgA03ViQcVX8m2nZSJk0CWyKdl?= =?utf-8?q?SEgMCZQGlSy1u6BQ8GxZA8oaIcXGBVIgCBsqyI9599vWjd0Gdmb3pWfXjRR0iDdvI?= =?utf-8?q?BZtdqQubjgsSAemkUXyZAQRmA8iANMyKGDYoorSdwGITdegxQzoX1zXpXu0IlXJ3l?= =?utf-8?q?PjHu9NXr2ndOz+2vjMI56YLTjYt+i8gBQBZK4Oq68hPOYc10pj13p4dXM6sB7QmV0?= =?utf-8?q?QSNNYDrvY43vLzfIo=3D?= X-Microsoft-Antispam-Message-Info: wkUlzQ3A+xFMF1S75Uu5syNLekhzcDMHRfyEIxDrUXFHJgfJGBdzA6MMX8M6N6GaHijlghOf7u7QECReeyITt+JBDaYndPA40Ow9Eb4d9gpIJ7hZ21Qh+3P6xaxQs5fUM2aSBhBUllgNsv7mwcwIuWsPb1B6qfDSEIIviILiNLT1qTxPiNTnMnubXhaj+muDjVUlekD9DCtGPfnTciEeZ5ozkI16pBdr9qa7HxL53lIqDrI3PSpvd65dUAEr36bGPCJhXw5AjDGQBsE3+V0DlJl5/YOOZF2L5itLhfc+M9nZx8tGytB6tHDgx4eDo0rV X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2635; 6:yobef91reP7+HHG0IXbp6IQLODvUm26ENCJ5pSboOg1Fn8EzjRNhzaYQ5CtdtAi0bKDNCdysDbhBuSruTj79EeXI1pZUtkwxERBZImLlOoQ/SK/YGKjDJmc39cCw9T/fuGEFCCVEFUvp7L1Pfc1iubt9ZTfa3IL2o2EGq/1QzdvW8oFAQf+CtY/BbMTVWp/03+w7Njq3tfcQ6XdnaImZ1j/IgiQNl+TNok7IEs690U2igJBZSdNKJzG+b1VC0lLr+b3Ce3GBZMEPIAE7NQnIP9sMQHRgYVaSoKe96Zs4m13H9KDJ4Q6fFKxKS/XUdCKgsNJQ8h+A0YCthG1FXsfyy9hONigJm1N5EB+8e3kePo/+x8T17iCE/m15SZbp8KQkkFQLB5D5lJVccWyreCzOrxeWiWYgFZrIm5zae3N0vQfAkc+YR/AZ85E2YrhPb26zN3f0Kx7L5YRhfZitajFRcg==; 5:JnqrQ4W1q4qDNVTRtkQldsG5OcGPAvJ416ogf25f9CuRjZsA/3+z3HL8dQNk3NRTuKtT0qGmCDii4DibCXdbCd8rR33/b4OOb9fkIA45sUfiiNYM6D4LuOOEQNMidjw52wNA//0vpQ4uqLAJ5h7/xZ+MKhD43kVnKuBrReMMt1k=; 7:Qs/H0nNBDuemOQU4pOnNAdCoDB/1kdEpxLcBpHpT5gGe28BP+ec2FF573ewU7IMkbwpBEMnDcY/9VGfn8apQX3w9Z87X+aW9Ex8QjIH3rrRahJtnA8QgoOapb18mHoc2CLgxwXiV4WrQICrCaetHfQ== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM6PR12MB2635; 20:IKJH9Viq0FcDxfZhWdvsFSlf0ygwLoGrKWmtu8+7aCCbbzjPTCXZKd6H9qPQZjp3QwswNiGTECD1PdBE+zfxVR+cPu5HVuf6jtfSO0F7qubhdvLp7bdv+PraucRoRDoBTQluwCUleVvIEHDD7DpKbA7AOdUu/hm5R0a0RpbnYAdQEZlaA9XdEPqJO0vP1BjOPgpX8xte+FHMKv63LH45Fi5DLMvb7pdGKxYaiAVLoHN4wQhQlGxL2bY2iqapoVb5 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2018 10:35:46.9036 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 48273570-947e-46ed-ad53-08d65f546978 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: , 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 76ce13dafc4d..d964b348ecba 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);