From patchwork Fri Dec 7 15:54:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chunming Zhou X-Patchwork-Id: 10718399 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 3AD9D14E2 for ; Fri, 7 Dec 2018 15:54:51 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DDF872DADC for ; Fri, 7 Dec 2018 15:54:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D198C2DF43; Fri, 7 Dec 2018 15:54:49 +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 556A22DADC for ; Fri, 7 Dec 2018 15:54:49 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 508BD6E7CA; Fri, 7 Dec 2018 15:54:48 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-eopbgr810081.outbound.protection.outlook.com [40.107.81.81]) by gabe.freedesktop.org (Postfix) with ESMTPS id 510C26E7C4; Fri, 7 Dec 2018 15:54:46 +0000 (UTC) Received: from MWHPR12CA0041.namprd12.prod.outlook.com (2603:10b6:301:2::27) by CY1PR12MB0057.namprd12.prod.outlook.com (2a01:111:e400:4c2a::26) 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 15:54:44 +0000 Received: from BY2NAM03FT042.eop-NAM03.prod.protection.outlook.com (2a01:111:f400:7e4a::207) 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 15:54:44 +0000 Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) Received: from SATLEXCHOV02.amd.com (165.204.84.17) by BY2NAM03FT042.mail.protection.outlook.com (10.152.85.47) 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 15:54:44 +0000 Received: from zhoucm1.amd.com (10.34.1.3) by SATLEXCHOV02.amd.com (10.181.40.72) with Microsoft SMTP Server id 14.3.389.1; Fri, 7 Dec 2018 09:54:43 -0600 From: Chunming Zhou To: , , , Date: Fri, 7 Dec 2018 23:54:14 +0800 Message-ID: <20181207155422.15967-2-david1.zhou@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181207155422.15967-1-david1.zhou@amd.com> References: <20181207155422.15967-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)(346002)(376002)(39860400002)(396003)(2980300002)(428003)(199004)(189003)(6666004)(72206003)(23676004)(478600001)(356004)(105586002)(47776003)(50466002)(106466001)(8676002)(81166006)(8936002)(11346002)(53416004)(66574011)(126002)(486006)(5820100001)(97736004)(81156014)(14444005)(2201001)(476003)(446003)(68736007)(575784001)(86362001)(2616005)(2906002)(186003)(336012)(53936002)(426003)(77096007)(50226002)(1076002)(26005)(5660300001)(316002)(305945005)(39060400002)(76176011)(54906003)(4326008)(36756003)(104016004)(110136005)(2870700001)(7696005); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR12MB0057; H:SATLEXCHOV02.amd.com; FPR:; SPF:None; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BY2NAM03FT042; 1:wx+ch4QlczFSJFGyrQCwJvGY+kzsday0co/SJyvFgsE9D5epD/eBe7USynXjFgfPOEeOvKW4qIzGzh0odlfwMoXilq0tYreOaSiTUm3rrwxhc+9JzRDmMptArM9/SzF9 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7a464519-d53a-4a7d-2c5d-08d65c5c4e8f X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060); SRVR:CY1PR12MB0057; X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0057; 3:7zTOGfXxWkwA2W69N4pfUi6xZO+AM8F7v6rpn0n4mYu71OnX0vd/zdeiAfiI7AbVcBpAPzzPqwJVKsiMMnzTJx5l+pY1cnpLjYFyqm8Y5HkqOFxGLHh8k9EQkGP6yE7P6LUicQKCe8vJSYpv+w7ZuJQ3K/zNoNjn+MDn0bz5FDIFWSpJDmTjeG3yBB/SEustWPEZMLFE9fo7sUnWQrR3cCi8pCiEjvgKvymWE6XZUwhwBN0uLfCX3wh3PxB5c4M4sKgWAd2L/Byy97L1Hvas9+CL5KKCAgQ4m9ykW8Fj7WONeFptg/ZC9yfncwTBLWJeVp3MUZRfwiTUmL6oRdX7Q3fGlnugzI4iKw/VFV+NmsQ=; 25:7UK9Y61z5l6yhe5GJhE3w/CZxi91eysAIYLgTbThjojF1ESiSt5fkwpOrBX0BjsPXZILeKQOT1YZI6hBpnjv0K3HYdW/OrDUURzs8tpvlxJb8vHfR1az7u+BdSVt/bk/XxfQ5AK/lGq7ZUBMeZEZutjza79/AXEhlJ1kEOGV7CNnJxBl9waUGfJNmT4ccOctKbL2YfmW2qk8tnE7Xj8BIwU/oaDCuY9riz04yq8f3rTL6/hwEsckJ452GQ7gcqJn3aRgzbMc9GekFXtXWpYUiircSbXmRW0fb3v201EgXzYn22R3ll+zUFIieSwLC2RfQ1jeYTcTAJ13c9A2lgF9RQ== X-MS-TrafficTypeDiagnostic: CY1PR12MB0057: X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0057; 31:OYfCFdcng7i6SvFYwLX4ygr6o/NJodneogBOAlJKf/f0g33FMU3Qs43363XsKjL1eVGhu0XiezIWTGkTfCFdkusrRa0qD/M3mzOd9C4sFqz6JL5enJIyN0bT09NGmYbYehrwFiM0gTOzV9310HhFThyFRrdVtGYrX42OJAZ612/5hXlxJ6sLWE0/6whiogy3T/L7yacPT74761QpPYd1uiNzSjuCah6OgL+cODtmoI0=; 20:efD6n5Xj1fKedc2ntrafWWEJMey1kq3wPUKOj1zs2u3ALtf/Osffy3n6R8wPkXZ+jXTYfMFxwnGfanI1yTbopOPUcwGtqvDFIyf/rC77KgQ9E+zi1QNBSYcYSGCJFpSQ1QzyWIagUlgsyVX2JHBgLkDNJ1Bpcywo5Ud9Yk9tE9o9ADucSC0R2BOwx6rDlyYs8D8X6PIObmJSFsplIdyPeUpxkm8sY7xgElAuxJ0UrcXi/7s/mHM7i4+/akvY4h9kjbnlxB4PE9D8KRmxx62JgPYDpr4h2hEkVJULlFh3GY2wlaJcdvvNYjQQrh62pNTl1z3gyRtU0dz8fAf4JV+zPs6z6oZ1KI4+486iCcJB8O3djMdjgqocS3l7/UvZONWMAdzZyuKkaclXt0fLfrSouH9VxdyIpbFmD2nATiblt1hZT7PC9ZtKd6UvabguGZVfmXLfQmXwQJVsn07BU1ILq+jt8UuklvbaP7ZGSjePp/d21+BiOUpCGjIZTKSNI4Is 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)(3002001)(3231455)(999002)(944501520)(52105112)(93006095)(93003095)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(20161123562045)(201708071742011)(7699051)(76991095); SRVR:CY1PR12MB0057; BCL:0; PCL:0; RULEID:; SRVR:CY1PR12MB0057; X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0057; 4:N1ueGrMD45mY5TJornZl3zS2Rh+UYNSoSfraQUdTnfryUC0kWRicj5Mf/jV0n7p1kkn3x84gPcw70tDhPNRT1OeGqub81IhS9fLQc7s4lAnXEKW8DceyvqjTG1q9iGKQQOklz/TKI8MBXhw46MvxqcJ9SNwXVedhq0vReZQ4DI41m00uD+hA1g96z6pXnqYWl+zano16VYppO16AGgBrmE3OMhPNZFUY9xgDO3O/ZjCHBIJ4ytMxSc/NogWaxW1EDlaXLWXHkeA+8yl+bhzVHA== X-Forefront-PRVS: 0879599414 X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BCY1PR12MB0057=3B23=3AJhkCaan?= =?utf-8?q?U2S1kqqEu/HbPqJuGwzQ7rxlzK/9zV/E+k/Mgd7bmngIFNAZu3MYn7LYjuF9mVNuJ?= =?utf-8?q?E7Csp8u4MTjCUhncSdD7+6XQRllAj5Hqcu/+HtlHtOseTA+MqNiSfjcrt2rgXOuBH?= =?utf-8?q?KVEVEiKJ8RUMb1o/enEf12wzBy0lwPDcsQXiTxcsUNcE50uAHDg5k6mGE8L4Kyq6d?= =?utf-8?q?MnGVLuOosdw6eUmwr4Ev/ofoub1Z/EXACBvZSsWzhm2h1Xo7Z42O6Up7+nXbQT5vW?= =?utf-8?q?H5w+RvQ3s5u6p2gNct9Giv1poGLfVGdOC3B7xytDMALvl6IpfMz2NaLe/bXQPvVwE?= =?utf-8?q?i+64F/UOknD9Keof1pWdAQIPkUs2ziy/Dy8j5Fn+NBFe9IaHd817HRvYKDviv3S9H?= =?utf-8?q?MDSo1mRqM3dF+2g2sS8sUsotePcXPXVVTzTilM2vpmvC+cZId8JARElsSES+6pwcn?= =?utf-8?q?CaRZlLDt/U6h067WRmzujIzLrJk/kn9T19OOUuGEbrsnEmtRVAafB1emNmFNKzO1z?= =?utf-8?q?XHYdWQwlZ41yJPS2eP2p+7KlJ1Vd4wVdmsIEyOILIaVbSJjYKz8lgTzILqRS8Riuz?= =?utf-8?q?+BNMgwHLdvGlXkUH62ie7G589gB8XzB+gPGY9ieq3Jy51xvmV5GSZJIz9TKJQgmu7?= =?utf-8?q?MKMB8RzKXD96f2Ds9aSbsrwt2FRdehjr8Zh3G2TzrhNcZu56aHfxqB2ecS07F7jvD?= =?utf-8?q?jTHtuTlI9WbXvw8A+1cVoN9UAEA2WWS8S1DJf4l89Fi8yUPvbsMCzz5ky0RyGPeyd?= =?utf-8?q?lP/6QRkBR1txJicNUsYprH6TTbbN6sHRIlSLxzotngD/l2fKwDeN41isMHP+2trq5?= =?utf-8?q?cj7Y9C91Y5ox/6mJZzuLVsWQjhOshYQoxe3eQdLMS//mLXluZb09YgczK1M9XfGsn?= =?utf-8?q?xEtytmK3lxK7wk3+aZufYfj3x/hJj6TDcmTGaRvUmWy5N6hs/Ix4L13IJ6Jb8WFrg?= =?utf-8?q?caYfK0XBW7Z5DlUTXKiu8ajhRAmHUDt7hNrXdTfShzIzCFTz9fHZHzkfkffVcXJ7H?= =?utf-8?q?JZQTS0LQl37LBn+5Cwf0KMIGZnLsvEXB7xjz5W2RQ82G96KeSopTih4pl9KcN3nIU?= =?utf-8?q?BZ9LDKXUpGgFbfLXUM0QJ4mhBgKHvef2g0jB8QNziSPOnz7m9AX9qBPuhiLlU2WmQ?= =?utf-8?q?c7GNzgqNixRNAjyubQlhdgmQ7JqsE+ig7w6x2YvLnjDKBS9HOFINmGK7kzvWUFVlU?= =?utf-8?q?OMeZFcRuvu/arUo5JBmZFZ9RBI55phs2n6oEbm9pmfggY+b+bPACYBGPnSig=3D?= =?utf-8?q?=3D?= X-Microsoft-Antispam-Message-Info: rD38ruvRRwxGcXgKGwTHAIC8m5/qoupbTTyRL034gEO3fD/M2Y6I2nn4cCaqNLfkF8C9DEESf/J6n6HQcNoXPCdDT6VVBSZvpoI4fOvQdrTN9PG3MXQakr8F5aNlsGN0MG6gwV2R5RDC0s/0htHCQcRWCPipk4PwAQRExMSVgsZWAg33zOeq/LloCM9qWANMKDpnZ0bpLQ9J6bRx9tDfcaDm9+EtKJOoOiSR0AyNkYfXlB8XDOl+EJAiKzpdUg9UUmzeW/uxNweb693ViVtUyv4JDOiV6rmDb5l5yzfNCp+AZ2nIahxLKvw5VN4sefppm5OCWDJxaHxhhDLNH88u9xY13eknRvqw63WDUVFDLuA= X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0057; 6:qls5F68yeTlFWHqJrhsOycOEfb/bxGn2GP7MK0g0SKZXxUFfYiF0C9gC+1zCvegOcaFNy9L1cNN4xIXPqzLxWa2FK1SjPvmB6a0f6lQ+quJyV2om4GwGqE+1MAH1X0yhb7dkmlA3YjBg3Fr+HJcFnqr0J1a15w3bdQlFZpCY41rK64DiXPwCqwAnO8Tx/6rn+rmsG37dspXiPRAdzoIVxuTrwmuqAvXHLfIcyqk5OBXfi6UUiivUmj4Wq2SzvCmFTUnnTabY1KY9Uz3a7K+TXrbDl4ADgk+fsVsIuz8xm7yBX/BaSzQNJ4ZMLP8JHw1TMtxyS8KVOFURrAHrcFQEild3Kdyk/CaMECKj0Ht1zpWi5eRKb9/gYqXVaiGR7XneTgHAVej5NXcQTI7nwC4YwrjowhNEg6yPOanRfHxW0hpP/5cxcoAoinwrQZrEUCqkJVEeBvlBuBoLW0+JCuUc6A==; 5:cXjqYrO1lMpY4Zdp2Kvu++HBE74C/hSceMV0L81ZCUwW9btodQdwgZKx04MMNTBrOUrwwpzxyz8rSisfkNXG+bhIG9t3fH0c7VlUuRlXrt4y+70nLhnAdaOhb/utdd3i5PoCXPI5JF0SFnOF3m/ZoyKEYqaDzK87RVxMZnYsIIA=; 7:bp072P7QLepJ0ppHUj8uZirfGoFPh4wkzwQCckXvRP7GIRLzQ1KwdFnTdNtaLRiz7a1PYzuHPKum1md/kWJqtDm3r6c3gY7U+8uB5GrUuyVp6JYCGtgprqrMHOgKtVRS/z4zwdNgNtUiPMPTK0yR5A== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR12MB0057; 20:LHPBPlSzJoTDGDyIAhXVqoyN12mzDwmt/UWbIbmJoZTjIf/bNLeoGd9Y3cYl3LJV4N5sZpW9V1ZOQMSZ/Y2dXfuVUHf9GGdUx3CzBW8wf83xsBhXSrFqYUt8ahNN8D3PERlF7Hvv0rSi8nu3K8lxJ0qbxbDGV1MaL31FDvaqRpTIp/R0/NB9b0fX2QiG3x4suCuIHCUZZfccAyw2bFk/mrZcX/m3kMAXKmjXXF3kCDHikhvl5ZJZrDwYh5fvloB5 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Dec 2018 15:54:44.2537 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7a464519-d53a-4a7d-2c5d-08d65c5c4e8f 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=[SATLEXCHOV02.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB0057 Subject: [Intel-gfx] [PATCH 02/10] drm/syncobj: remove drm_syncobj_cb and cleanup X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & 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: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" 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); /**