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,