From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.0 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8C267C47089 for ; Thu, 27 May 2021 11:59:09 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 51F19611AE for ; Thu, 27 May 2021 11:59:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 51F19611AE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D41596EE98; Thu, 27 May 2021 11:59:08 +0000 (UTC) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2048.outbound.protection.outlook.com [40.107.237.48]) by gabe.freedesktop.org (Postfix) with ESMTPS id F14056EE98; Thu, 27 May 2021 11:59:06 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lVQJM/IuLJLbShGoIPkOZWOfUeLjWmp/vOsYFZHre+O4qFnoJGVS02LUVccoPHuX7gJwIMm4pe3YzJtJtihuSrIyfmCfrtcKKdUqiUkfIJP8b1vxyO7t5H7wwpMQiZyHdeTFVV0QDYvvrS0BZAeyNgaeprfZi7BPs7Qb49AMsllN0yql70GiQK3tFeC0ssxv/1CPvY/KA2OmiOAfrRBYVaIkoK5oZGDlmhlZ0O5nAIQSqsNoz+tb8eiP5yQpy8zTVARfakYrgmGFygvOH82uvruKQ31ThrGk0uLTceiGVXM3RwSl2X6+477iaV//YxjsaZDeEYAl32l9h1NP7Vpgxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pgs56V0y6wk7pNiDVMJiraQtZF1guaC5x57/8UpT9K8=; b=Rz9NRrfcBwMYNBv4NJR6o1MyHreAxwFJSrXallcFlnhOu+zoFrtoB3vFgRbXamo8OUwIz04ELA7Mt8/Mg8xdShsRjAwzjKDoaGgx0IrbB2Cr8BHzGX99VxoC+nGtKUw7JakBIqqfNN0SU5Yg2uOnjXKClvyX76OCmIbBlDKj/x14hfyQXiJHSWOwFCf7KpFMbTyeXe1V/Rar+CvR69I2TP+PurErAOslrluqZwAwM9gYw6ZasjyyE0DQi28sffqRxqRjsX9+yilKiArOhmsEC5xpsJGdDkHK/aATlIe/9/HhYH3wLcJN2t76kjBQxakWPEtwZbBoZXUeECtw50zdDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pgs56V0y6wk7pNiDVMJiraQtZF1guaC5x57/8UpT9K8=; b=LBg7elV0um45ViP9A9Z+3mb7GbMgYtLvlccGTyF/K4PpYWQiSHhUmtq2kZTcNFnV1yllyGRss6fnjdl17oZ7Kdw6UML+JEutu+fu6Sj/fEJZv1IzY24UhK/3GX+0bavOxITMv6JcgeIMV+8v4iS5DKmi2xhj06loQDRRLK3OmQg= Authentication-Results: vmware.com; dkim=none (message not signed) header.d=none;vmware.com; dmarc=none action=none header.from=amd.com; Received: from MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) by MN2PR12MB4608.namprd12.prod.outlook.com (2603:10b6:208:fd::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.21; Thu, 27 May 2021 11:59:01 +0000 Received: from MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::6d4d:4674:1cf6:8d34]) by MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::6d4d:4674:1cf6:8d34%6]) with mapi id 15.20.4173.024; Thu, 27 May 2021 11:59:01 +0000 To: Daniel Vetter References: <20210525211753.1086069-1-jason@jlekstrand.net> <20210525211753.1086069-3-jason@jlekstrand.net> <82e16239-e8ea-8b03-6a90-c7d18a5f8a91@amd.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: Date: Thu, 27 May 2021 13:58:54 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 In-Reply-To: Content-Language: en-US X-Originating-IP: [2a02:908:1252:fb60:e531:3aa1:4782:878a] X-ClientProxiedBy: PR0P264CA0253.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100::25) To MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2a02:908:1252:fb60:e531:3aa1:4782:878a] (2a02:908:1252:fb60:e531:3aa1:4782:878a) by PR0P264CA0253.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.20 via Frontend Transport; Thu, 27 May 2021 11:58:58 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5ac3e7bc-9fb8-4d8b-1782-08d92106d0d9 X-MS-TrafficTypeDiagnostic: MN2PR12MB4608: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AS4VbE0vjIShk3jklXa9sTQ308WkYWsTjheIqnFmmn7RNxpFJNMvtdUBzT/AOaij83iMixkg6WURZKJ0s8h86WBQn9O0HpOmGvpynkUnICS8JFvAIKIn1mlgusCGCavG50sGqNhxoMHV6AWnvUGN/O/ilyqOwqOpjtMa+W5AB0Iyr/nr4bGTNNQxk7kB0CzEL0xqzaTqZytriCJf4aS+ih+U1bxh8j8dIkYE2+wTPjkLT0gAfmJJXrsDY/SqNSTuWj/b8/U8PK1/qGEzbccIjcc9VXCxSeIMWRQRaFxhVCmm9tdMVk7CizQca417sIim6tAFjyYDkYNfqWgkj2FDeFungb9UdSwNEUxJtJNQCTBuSxybv7WfwC8GhKg97UGwVEVBKh/DywFjCWwqKKQ1j1yM+FEFsoG2tYH0VvickBLDT7IGBFZcYtjDBlwVQU2vB0VVfxdPBhQ7fwPfMDLFIdtO43Fg+QCDgKwlZmjd2uuFUMZPeq4TRKuiAUOJlxNXPIp3ELdCawM3GmvHUJM/0cNrBi5Zes10HAOVunWilbKeTOYJoJYhAw9bn6eTKO+hSLGsb1uXJ2c2OM1ct8WnEEFCxyHRF/3e/Q3pMX2cb2GqRhoAO0qr53h0k6SF8+eBhbNcISumMurXp2cWCufivy3Z7rDgMa2uJapMEurouUYPQM58wb6xjg2YVw3X4aH+ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR12MB3775.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(136003)(366004)(376002)(39860400002)(346002)(5660300002)(66476007)(6666004)(86362001)(66556008)(66946007)(6486002)(31686004)(2906002)(31696002)(66574015)(83380400001)(30864003)(2616005)(36756003)(52116002)(16526019)(8936002)(6916009)(7416002)(186003)(4326008)(478600001)(54906003)(38100700002)(316002)(8676002)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?TXdxN0dvdEUxVHp4bCs2VU9laFpyOCtJbllia3Y1dHhFd1BIK21Qbk5yOW9I?= =?utf-8?B?UjJGVjI4d1J3cG5TV0k2ZGRQNDVHR1A2ZENSMnRXT2IweHBVVWF2NjVnTVNR?= =?utf-8?B?eitXTVlSaVpHTzJEUm5ubHFWd3VuQnN2TnBqdFE0UmU2b0JpQ0tUKzB3ZzVk?= =?utf-8?B?NS9adUo0WTZFWTA4ZmNyZVlIRGZQQXU0dXBSU0k5Y08rV3UwNFVmbkhVYkJK?= =?utf-8?B?eDRTSzhyVG85S2l6ZnZMRVVBUDZQMDFmVnR2ckZuMVNJczZXa3NKL2wxN01Q?= =?utf-8?B?VU84dDdVTWNFMHdyV29nSS9mVExjT3l1RTFGaEduQ3lBekhrclBFNTZaWFg1?= =?utf-8?B?dXI3UHBRWUtldm1SaVg1WVRzeThJcEtaYXI0RjRhYm9oMXQzdnY4VVZPTTVr?= =?utf-8?B?ekNkM2xGMlAwRUU2Z3BjLzlRRGwwSXQyT1BUajRkT3hHcDhEc2ZtMm5KSHB3?= =?utf-8?B?UnBURTlPMDgyV1VYR0t0OWdMaWFMVGRrYmxDZ1NPTlJiWHFHNjhHcTJpUTBp?= =?utf-8?B?NXhsRXU2ekpQM1lDZVBGeE1pTTFHN2pJZmJKRXNZMHo0UHE5M0hvVElScm93?= =?utf-8?B?anQ4MEZpQlM0OHZrSFY3OWJ5am43MkVnV0hhL2xFRUNIa04wRVNiOGc4Z3lW?= =?utf-8?B?TC9aOE0zYm9lMC9aUTRzYXVBUGcvZ3V6Ym95ZXorUVFCWEtsRmY1TmRJRHds?= =?utf-8?B?Z25xck44ZG40dGZieVNiM01ybkFmVmRyZW1yaldmbTgvVXgvVE51NjYrRFRM?= =?utf-8?B?M0wzZ3FEME45TUhYWklHbUlxdEhyeFgxV1RUSWxpT0kyL1A3UW5OcUEvVFZu?= =?utf-8?B?R2xuZTk0RzRGL1pOck5zbHBlTGxuSTZxeGNBTXJxZ293RitaUEI3Rk82L3dO?= =?utf-8?B?NEN2RlVYRnhWcHp3cUZNTlVsQklPeU1iWlRnSjZHVXJBclhVRUZYUE90eElj?= =?utf-8?B?blBYRDdPQnlGbnF0dExGN1BmY21XV2psbDNGUHZicTRhV1R2UEZoaHduRWpz?= =?utf-8?B?SmVnaU83S0FtNkozOVBtZnFIM1ZCWmNGOXlmVGJRRHhyeUZvOCtuMnNzYkNR?= =?utf-8?B?YVJSM3FYaTFqaVltQURUN3djQjNKS001N01kczNQeGNjS09BYlRjd3dYZ0Fv?= =?utf-8?B?OXhya3ErZk9MYUMwK1lVQjZQUGFWWElGN2xoR0VHemtwT3k4T2ordTRtVHpn?= =?utf-8?B?Q2dWZVBEWWRaTTUzQXlvVFJZTzFidUJQNFJZUXNlSzRtMlQxTGN2bldNTkZO?= =?utf-8?B?YUoybTZCak5QS2ZFSG5Wdm9KWUluMkxnVU1YT00zTjBLMGpXL2lFN0tPcVdm?= =?utf-8?B?ODNxZWZLZWp3bDRnSHUvV1BwbDlrcmx3dmV4dTIxeHNleDc1dWYzR2F0SHV5?= =?utf-8?B?dUF2NnJ1eU1Pam1FTXdpdHJKditzbzQrWjIzN1NLM3paL0lRRU1rTjg3Wm1y?= =?utf-8?B?cHAxY2I0Z1YwVHpHNlQ4b0ZabjVUaHFMMXBvYTN5UkdBdk1ZbWJzeVVIZUVS?= =?utf-8?B?VTdKM0pSdjlsbi9IUzRoTThqN2pFaWhnYVdWTE5RVEhNbHBYVzJqZEErTU5O?= =?utf-8?B?V2NtS0ErZ2EzVWg3M2FtNHpSbXZqOFJrV3FIOTlxY0RidERXMlcwQ3l6eS9x?= =?utf-8?B?SVZnMUxoMmlPbE1UZy9FNEdaWFU0UXl1MmRXc0hYOEx6Q25TbTNUQWdvVm5U?= =?utf-8?B?Z1lvbk05dzNubEJJblRrYW5RRXR1cTkxaEx4RXhMT2p0UzBsa0xiY2JDNUpD?= =?utf-8?B?Y2h1NU9vNVBRMzAvbDFzUkdjdkthNExyU1g4Rm9BdjBpSkU2QW84aUdrT3dN?= =?utf-8?B?dUpRUHBFc1RnL0VJTHFyMis0UGZ2WkcvaytZMU5yQTc5NEhydTNtVWo2dm5N?= =?utf-8?Q?Z/G2x+WRAWtLa?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5ac3e7bc-9fb8-4d8b-1782-08d92106d0d9 X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3775.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 May 2021 11:59:00.9483 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +LzlqoV/UpI2qbJusplcVmDdE4hxttCsN9ry3nfjeHARMbVNbtylY7CeR53NuG2G X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4608 Subject: Re: [Intel-gfx] [PATCH 2/7] dma-buf: Rename dma_resv helpers from _rcu to _unlocked (v2) X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann , Thomas Zimmermann , Daniel Vetter , intel-gfx@lists.freedesktop.org, Maxime Ripard , Huang Rui , VMware Graphics , dri-devel@lists.freedesktop.org, Lucas Stach Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" QW0gMjcuMDUuMjEgdW0gMTI6Mzkgc2NocmllYiBEYW5pZWwgVmV0dGVyOgo+IE9uIFdlZCwgTWF5 IDI2LCAyMDIxIGF0IDEyOjU3OjQwUE0gKzAyMDAsIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+ IEFtIDI1LjA1LjIxIHVtIDIzOjE3IHNjaHJpZWIgSmFzb24gRWtzdHJhbmQ6Cj4+PiBOb25lIG9m IHRoZXNlIGhlbHBlcnMgYWN0dWFsbHkgbGVhayBhbnkgUkNVIGRldGFpbHMgdG8gdGhlIGNhbGxl ci4gIFRoZXkKPj4+IGFsbCBhc3N1bWUgeW91IGhhdmUgYSBnZW51aW5lIHJlZmVyZW5jZSwgdGFr ZSB0aGUgUkNVIHJlYWQgbG9jaywgYW5kCj4+PiByZXRyeSBpZiBuZWVkZWQuICBOYW1pbmcgdGhl bSB3aXRoIGFuIF9yY3UgaXMgbGlrZWx5IHRvIGNhdXNlIGNhbGxlcnMKPj4+IG1vcmUgcGFuaWMg dGhhbiBuZWVkZWQuCj4+IEknbSByZWFsbHkgd29uZGVyaW5nIGlmIHdlIG5lZWQgdGhpcyBwb3N0 Zml4IGluIHRoZSBmaXJzdCBwbGFjZS4KPj4KPj4gSWYgd2UgdXNlIHRoZSByaWdodCByY3VfZGVy ZWZlcmVuY2VfY2hlY2soKSBtYWNybyB0aGVuIHRob3NlIGZ1bmN0aW9ucyBjYW4KPj4gYmUgY2Fs bGVkIHdpdGggYm90aCB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0IGxvY2tlZCBhbmQgdW5sb2NrZWQu IEl0IHNob3VsZG4ndAo+PiBtYXR0ZXIgdG8gdGhlbS4KPj4KPj4gQnV0IGdldHRpbmcgcmlkIG9m IHRoZSBfcmN1IHBvc3RmaXggc291bmRzIGxpa2UgYSBnb29kIGlkZWEgaW4gZ2VuZXJhbCB0bwo+ PiBtZS4KPiBTbyBkb2VzIHRoYXQgY291bnQgYXMgYW4gYWNrIG9yIG5vdD8gSWYgeWVzIEkgdGhp bmsgd2Ugc2hvdWxkIGxhbmQgdGhpcwo+IHBhdGNoIHJpZ2h0IGF3YXksIHNpbmNlIGl0J3MgZ29p bmcgdG8gY29uZmxpY3QgcmVhbCBmYXN0IGJhZGx5LgoKSSBoYWQgc29tZSBmb2xsb3cgdXAgZGlz Y3Vzc2lvbiB3aXRoIEphc29uIGFuZCBJIHdvdWxkIHJhdGhlciBsaWtlIHRvIApzd2l0Y2ggdG8g dXNpbmcgcmN1X2RlcmVmZXJlbmNlX2NoZWNrKCkgaW4gYWxsIHBsYWNlcyBhbmQgY29tcGxldGVs eSAKcmVtb3ZlIHRoZSBfcmN1IHBvc3RmaXguCgpCdXQgeWVzIEkgc2VlIHRoZSBwYWluIG9mIHJl YmFzaW5nIHRoaXMgYXMgd2VsbC4KCkNocmlzdGlhbi4KCj4gLURhbmllbAo+Cj4+IENocmlzdGlh bi4KPj4KPj4+IHYyIChKYXNvbiBFa3N0cmFuZCk6Cj4+PiAgICAtIEZpeCBmdW5jdGlvbiBhcmd1 bWVudCBpbmRlbnRhdGlvbgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IEphc29uIEVrc3RyYW5kIDxq YXNvbkBqbGVrc3RyYW5kLm5ldD4KPj4+IFN1Z2dlc3RlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFu aWVsLnZldHRlckBmZndsbC5jaD4KPj4+IENjOiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4u a29lbmlnQGFtZC5jb20+Cj4+PiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hv cnN0QGxpbnV4LmludGVsLmNvbT4KPj4+IENjOiBNYXhpbWUgUmlwYXJkIDxtcmlwYXJkQGtlcm5l bC5vcmc+Cj4+PiBDYzogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+Cj4+ PiBDYzogTHVjYXMgU3RhY2ggPGwuc3RhY2hAcGVuZ3V0cm9uaXguZGU+Cj4+PiBDYzogUm9iIENs YXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgo+Pj4gQ2M6IFNlYW4gUGF1bCA8c2VhbkBwb29ybHku cnVuPgo+Pj4gQ2M6IEh1YW5nIFJ1aSA8cmF5Lmh1YW5nQGFtZC5jb20+Cj4+PiBDYzogR2VyZCBI b2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+Cj4+PiBDYzogVk13YXJlIEdyYXBoaWNzIDxsaW51 eC1ncmFwaGljcy1tYWludGFpbmVyQHZtd2FyZS5jb20+Cj4+PiAtLS0KPj4+ICAgIGRyaXZlcnMv ZG1hLWJ1Zi9kbWEtYnVmLmMgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLQo+Pj4gICAgZHJp dmVycy9kbWEtYnVmL2RtYS1yZXN2LmMgICAgICAgICAgICAgICAgICAgIHwgMjggKysrKysrKysr LS0tLS0tLS0tLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3Bs YXkuYyAgIHwgIDYgKystLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2RtYV9idWYuYyAgIHwgIDIgKy0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9nZW0uYyAgICAgICB8ICA0ICstLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2lkcy5jICAgICAgIHwgIDYgKystLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X21uLmMgICAgICAgIHwgIDQgKy0tCj4+PiAgICBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgICAgfCAgNCArLS0KPj4+ICAgIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91dmQuYyAgICAgICB8ICA2ICsrLS0KPj4+ICAgIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jICAgICAgICB8IDE0ICsrKysrLS0t LS0KPj4+ICAgIC4uLi9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYyB8 ICA2ICsrLS0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMgICAgICAgICAgICAgICAg ICAgICB8IDEwICsrKy0tLS0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2F0b21pY19o ZWxwZXIuYyAgICAgICB8ICAyICstCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5h dml2X2dlbS5jICAgICAgICAgfCAgNyArKy0tLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2V0bmF2 aXYvZXRuYXZpdl9nZW1fc3VibWl0LmMgIHwgIDggKysrLS0tCj4+PiAgICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyAgfCAgMiArLQo+Pj4gICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZG1hX3Jlc3ZfdXRpbHMuYyAgICAgICAgIHwgIDIgKy0KPj4+ICAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9idXN5LmMgICAgICB8ICAyICstCj4+PiAgICAu Li4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgICAgfCAgMiArLQo+Pj4g ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oICAgIHwgIDIgKy0K Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmMgICB8ICA0 ICstLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3dhaXQuYyAgICAg IHwgMTAgKysrLS0tLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMg ICAgICAgICAgIHwgIDYgKystLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19m ZW5jZS5jICAgICAgICAgIHwgIDQgKy0tCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9n ZW0uYyAgICAgICAgICAgICAgICAgfCAgMyArLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvZGlzcG52NTAvd25kdy5jICAgICAgIHwgIDIgKy0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9u b3V2ZWF1L25vdXZlYXVfZ2VtLmMgICAgICAgICB8ICA0ICstLQo+Pj4gICAgZHJpdmVycy9ncHUv ZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2Rydi5jICAgICAgIHwgIDQgKy0tCj4+PiAgICBkcml2ZXJz L2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3Rfam9iLmMgICAgICAgfCAgMiArLQo+Pj4gICAgZHJp dmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZ2VtLmMgICAgICAgICAgIHwgIDYgKystLQo+Pj4g ICAgZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYyAgICAgICAgICAgIHwgIDQgKy0t Cj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jICAgICAgICAgICAgICAgICAgfCAx OCArKysrKystLS0tLS0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZmVuY2UuYyAg ICAgICAgICAgICB8ICA0ICstLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1 X2lvY3RsLmMgICAgICAgIHwgIDYgKystLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92 bXdnZnhfYm8uYyAgICAgICAgICAgIHwgIDIgKy0KPj4+ICAgIGluY2x1ZGUvbGludXgvZG1hLXJl c3YuaCAgICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrKy0tLS0tLQo+Pj4gICAgMzYgZmls ZXMgY2hhbmdlZCwgMTA4IGluc2VydGlvbnMoKyksIDExMCBkZWxldGlvbnMoLSkKPj4+Cj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9k bWEtYnVmLmMKPj4+IGluZGV4IGYyNjRiNzBjMzgzZWIuLmVkNjQ1MWQ1NWQ2NjMgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCj4+PiArKysgYi9kcml2ZXJzL2RtYS1i dWYvZG1hLWJ1Zi5jCj4+PiBAQCAtMTE0Nyw4ICsxMTQ3LDggQEAgc3RhdGljIGludCBfX2RtYV9i dWZfYmVnaW5fY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAo+Pj4gICAgCWxvbmcg cmV0Owo+Pj4gICAgCS8qIFdhaXQgb24gYW55IGltcGxpY2l0IHJlbmRlcmluZyBmZW5jZXMgKi8K Pj4+IC0JcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShyZXN2LCB3cml0ZSwgdHJ1ZSwK Pj4+IC0JCQkJCQkgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPj4+ICsJcmV0ID0gZG1hX3Jlc3Zf d2FpdF90aW1lb3V0X3VubG9ja2VkKHJlc3YsIHdyaXRlLCB0cnVlLAo+Pj4gKwkJCQkJICAgICBN QVhfU0NIRURVTEVfVElNRU9VVCk7Cj4+PiAgICAJaWYgKHJldCA8IDApCj4+PiAgICAJCXJldHVy biByZXQ7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2RtYS1yZXN2LmMgYi9kcml2 ZXJzL2RtYS1idWYvZG1hLXJlc3YuYwo+Pj4gaW5kZXggNmRkYmViNWRmYmY2NS4uZDZmMWVkNGNk NGQ1NSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtcmVzdi5jCj4+PiArKysg Yi9kcml2ZXJzL2RtYS1idWYvZG1hLXJlc3YuYwo+Pj4gQEAgLTQxNyw3ICs0MTcsNyBAQCBpbnQg ZG1hX3Jlc3ZfY29weV9mZW5jZXMoc3RydWN0IGRtYV9yZXN2ICpkc3QsIHN0cnVjdCBkbWFfcmVz diAqc3JjKQo+Pj4gICAgRVhQT1JUX1NZTUJPTChkbWFfcmVzdl9jb3B5X2ZlbmNlcyk7Cj4+PiAg ICAvKioKPj4+IC0gKiBkbWFfcmVzdl9nZXRfZmVuY2VzX3JjdSAtIEdldCBhbiBvYmplY3QncyBz aGFyZWQgYW5kIGV4Y2x1c2l2ZQo+Pj4gKyAqIGRtYV9yZXN2X2dldF9mZW5jZXNfdW5sb2NrZWQg LSBHZXQgYW4gb2JqZWN0J3Mgc2hhcmVkIGFuZCBleGNsdXNpdmUKPj4+ICAgICAqIGZlbmNlcyB3 aXRob3V0IHVwZGF0ZSBzaWRlIGxvY2sgaGVsZAo+Pj4gICAgICogQG9iajogdGhlIHJlc2VydmF0 aW9uIG9iamVjdAo+Pj4gICAgICogQHBmZW5jZV9leGNsOiB0aGUgcmV0dXJuZWQgZXhjbHVzaXZl IGZlbmNlIChvciBOVUxMKQo+Pj4gQEAgLTQyOSwxMCArNDI5LDEwIEBAIEVYUE9SVF9TWU1CT0wo ZG1hX3Jlc3ZfY29weV9mZW5jZXMpOwo+Pj4gICAgICogZXhjbHVzaXZlIGZlbmNlIGlzIG5vdCBz cGVjaWZpZWQgdGhlIGZlbmNlIGlzIHB1dCBpbnRvIHRoZSBhcnJheSBvZiB0aGUKPj4+ICAgICAq IHNoYXJlZCBmZW5jZXMgYXMgd2VsbC4gUmV0dXJucyBlaXRoZXIgemVybyBvciAtRU5PTUVNLgo+ Pj4gICAgICovCj4+PiAtaW50IGRtYV9yZXN2X2dldF9mZW5jZXNfcmN1KHN0cnVjdCBkbWFfcmVz diAqb2JqLAo+Pj4gLQkJCSAgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqcGZlbmNlX2V4Y2wsCj4+PiAt CQkJICAgIHVuc2lnbmVkICpwc2hhcmVkX2NvdW50LAo+Pj4gLQkJCSAgICBzdHJ1Y3QgZG1hX2Zl bmNlICoqKnBzaGFyZWQpCj4+PiAraW50IGRtYV9yZXN2X2dldF9mZW5jZXNfdW5sb2NrZWQoc3Ry dWN0IGRtYV9yZXN2ICpvYmosCj4+PiArCQkJCSBzdHJ1Y3QgZG1hX2ZlbmNlICoqcGZlbmNlX2V4 Y2wsCj4+PiArCQkJCSB1bnNpZ25lZCAqcHNoYXJlZF9jb3VudCwKPj4+ICsJCQkJIHN0cnVjdCBk bWFfZmVuY2UgKioqcHNoYXJlZCkKPj4+ICAgIHsKPj4+ICAgIAlzdHJ1Y3QgZG1hX2ZlbmNlICoq c2hhcmVkID0gTlVMTDsKPj4+ICAgIAlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZV9leGNsOwo+Pj4g QEAgLTUxNSwxMCArNTE1LDEwIEBAIGludCBkbWFfcmVzdl9nZXRfZmVuY2VzX3JjdShzdHJ1Y3Qg ZG1hX3Jlc3YgKm9iaiwKPj4+ICAgIAkqcHNoYXJlZCA9IHNoYXJlZDsKPj4+ICAgIAlyZXR1cm4g cmV0Owo+Pj4gICAgfQo+Pj4gLUVYUE9SVF9TWU1CT0xfR1BMKGRtYV9yZXN2X2dldF9mZW5jZXNf cmN1KTsKPj4+ICtFWFBPUlRfU1lNQk9MX0dQTChkbWFfcmVzdl9nZXRfZmVuY2VzX3VubG9ja2Vk KTsKPj4+ICAgIC8qKgo+Pj4gLSAqIGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3UgLSBXYWl0IG9u IHJlc2VydmF0aW9uJ3Mgb2JqZWN0cwo+Pj4gKyAqIGRtYV9yZXN2X3dhaXRfdGltZW91dF91bmxv Y2tlZCAtIFdhaXQgb24gcmVzZXJ2YXRpb24ncyBvYmplY3RzCj4+PiAgICAgKiBzaGFyZWQgYW5k L29yIGV4Y2x1c2l2ZSBmZW5jZXMuCj4+PiAgICAgKiBAb2JqOiB0aGUgcmVzZXJ2YXRpb24gb2Jq ZWN0Cj4+PiAgICAgKiBAd2FpdF9hbGw6IGlmIHRydWUsIHdhaXQgb24gYWxsIGZlbmNlcywgZWxz ZSB3YWl0IG9uIGp1c3QgZXhjbHVzaXZlIGZlbmNlCj4+PiBAQCAtNTI5LDkgKzUyOSw5IEBAIEVY UE9SVF9TWU1CT0xfR1BMKGRtYV9yZXN2X2dldF9mZW5jZXNfcmN1KTsKPj4+ICAgICAqIFJldHVy bnMgLUVSRVNUQVJUU1lTIGlmIGludGVycnVwdGVkLCAwIGlmIHRoZSB3YWl0IHRpbWVkIG91dCwg b3IKPj4+ICAgICAqIGdyZWF0ZXIgdGhhbiB6ZXIgb24gc3VjY2Vzcy4KPj4+ICAgICAqLwo+Pj4g LWxvbmcgZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwKPj4+ IC0JCQkgICAgICAgYm9vbCB3YWl0X2FsbCwgYm9vbCBpbnRyLAo+Pj4gLQkJCSAgICAgICB1bnNp Z25lZCBsb25nIHRpbWVvdXQpCj4+PiArbG9uZyBkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2Nr ZWQoc3RydWN0IGRtYV9yZXN2ICpvYmosCj4+PiArCQkJCSAgICBib29sIHdhaXRfYWxsLCBib29s IGludHIsCj4+PiArCQkJCSAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQpCj4+PiAgICB7Cj4+PiAg ICAJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4+PiAgICAJdW5zaWduZWQgc2VxLCBzaGFyZWRf Y291bnQ7Cj4+PiBAQCAtNjAyLDcgKzYwMiw3IEBAIGxvbmcgZG1hX3Jlc3Zfd2FpdF90aW1lb3V0 X3JjdShzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwKPj4+ICAgIAlyY3VfcmVhZF91bmxvY2soKTsKPj4+ ICAgIAlnb3RvIHJldHJ5Owo+Pj4gICAgfQo+Pj4gLUVYUE9SVF9TWU1CT0xfR1BMKGRtYV9yZXN2 X3dhaXRfdGltZW91dF9yY3UpOwo+Pj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRtYV9yZXN2X3dhaXRf dGltZW91dF91bmxvY2tlZCk7Cj4+PiAgICBzdGF0aWMgaW5saW5lIGludCBkbWFfcmVzdl90ZXN0 X3NpZ25hbGVkX3NpbmdsZShzdHJ1Y3QgZG1hX2ZlbmNlICpwYXNzZWRfZmVuY2UpCj4+PiBAQCAt NjIyLDcgKzYyMiw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRf c2luZ2xlKHN0cnVjdCBkbWFfZmVuY2UgKnBhc3NlZF9mZW5jZSkKPj4+ICAgIH0KPj4+ICAgIC8q Kgo+Pj4gLSAqIGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfcmN1IC0gVGVzdCBpZiBhIHJlc2VydmF0 aW9uIG9iamVjdCdzCj4+PiArICogZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF91bmxvY2tlZCAtIFRl c3QgaWYgYSByZXNlcnZhdGlvbiBvYmplY3Qncwo+Pj4gICAgICogZmVuY2VzIGhhdmUgYmVlbiBz aWduYWxlZC4KPj4+ICAgICAqIEBvYmo6IHRoZSByZXNlcnZhdGlvbiBvYmplY3QKPj4+ICAgICAq IEB0ZXN0X2FsbDogaWYgdHJ1ZSwgdGVzdCBhbGwgZmVuY2VzLCBvdGhlcndpc2Ugb25seSB0ZXN0 IHRoZSBleGNsdXNpdmUKPj4+IEBAIC02MzEsNyArNjMxLDcgQEAgc3RhdGljIGlubGluZSBpbnQg ZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF9zaW5nbGUoc3RydWN0IGRtYV9mZW5jZSAqcGFzc2VkX2Zl bmNlKQo+Pj4gICAgICogUkVUVVJOUwo+Pj4gICAgICogdHJ1ZSBpZiBhbGwgZmVuY2VzIHNpZ25h bGVkLCBlbHNlIGZhbHNlCj4+PiAgICAgKi8KPj4+IC1ib29sIGRtYV9yZXN2X3Rlc3Rfc2lnbmFs ZWRfcmN1KHN0cnVjdCBkbWFfcmVzdiAqb2JqLCBib29sIHRlc3RfYWxsKQo+Pj4gK2Jvb2wgZG1h X3Jlc3ZfdGVzdF9zaWduYWxlZF91bmxvY2tlZChzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwgYm9vbCB0 ZXN0X2FsbCkKPj4+ICAgIHsKPj4+ICAgIAl1bnNpZ25lZCBzZXEsIHNoYXJlZF9jb3VudDsKPj4+ ICAgIAlpbnQgcmV0Owo+Pj4gQEAgLTY4MCw0ICs2ODAsNCBAQCBib29sIGRtYV9yZXN2X3Rlc3Rf c2lnbmFsZWRfcmN1KHN0cnVjdCBkbWFfcmVzdiAqb2JqLCBib29sIHRlc3RfYWxsKQo+Pj4gICAg CXJjdV9yZWFkX3VubG9jaygpOwo+Pj4gICAgCXJldHVybiByZXQ7Cj4+PiAgICB9Cj4+PiAtRVhQ T1JUX1NZTUJPTF9HUEwoZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF9yY3UpOwo+Pj4gK0VYUE9SVF9T WU1CT0xfR1BMKGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfdW5sb2NrZWQpOwo+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5LmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzcGxheS5jCj4+PiBpbmRleCA4YTFmYjhiNjYw NmU1Li5iOGUyNGYxOTliZTlhIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2Rpc3BsYXkuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2Rpc3BsYXkuYwo+Pj4gQEAgLTIwMyw5ICsyMDMsOSBAQCBpbnQgYW1kZ3B1X2Rp c3BsYXlfY3J0Y19wYWdlX2ZsaXBfdGFyZ2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4+ICAg IAkJZ290byB1bnBpbjsKPj4+ICAgIAl9Cj4+PiAtCXIgPSBkbWFfcmVzdl9nZXRfZmVuY2VzX3Jj dShuZXdfYWJvLT50Ym8uYmFzZS5yZXN2LCAmd29yay0+ZXhjbCwKPj4+IC0JCQkJCSAgICAgICZ3 b3JrLT5zaGFyZWRfY291bnQsCj4+PiAtCQkJCQkgICAgICAmd29yay0+c2hhcmVkKTsKPj4+ICsJ ciA9IGRtYV9yZXN2X2dldF9mZW5jZXNfdW5sb2NrZWQobmV3X2Fiby0+dGJvLmJhc2UucmVzdiwg JndvcmstPmV4Y2wsCj4+PiArCQkJCQkgJndvcmstPnNoYXJlZF9jb3VudCwKPj4+ICsJCQkJCSAm d29yay0+c2hhcmVkKTsKPj4+ICAgIAlpZiAodW5saWtlbHkociAhPSAwKSkgewo+Pj4gICAgCQlE Uk1fRVJST1IoImZhaWxlZCB0byBnZXQgZmVuY2VzIGZvciBidWZmZXJcbiIpOwo+Pj4gICAgCQln b3RvIHVucGluOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9kbWFfYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1 Zi5jCj4+PiBpbmRleCBiYWE5ODBhNDc3ZDk0Li4wZDAzMTliYzUxNTc3IDEwMDY0NAo+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuYwo+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuYwo+Pj4gQEAgLTk4LDcg Kzk4LDcgQEAgX19kbWFfcmVzdl9tYWtlX2V4Y2x1c2l2ZShzdHJ1Y3QgZG1hX3Jlc3YgKm9iaikK Pj4+ICAgIAlpZiAoIWRtYV9yZXN2X2dldF9saXN0KG9iaikpIC8qIG5vIHNoYXJlZCBmZW5jZXMg dG8gY29udmVydCAqLwo+Pj4gICAgCQlyZXR1cm4gMDsKPj4+IC0JciA9IGRtYV9yZXN2X2dldF9m ZW5jZXNfcmN1KG9iaiwgTlVMTCwgJmNvdW50LCAmZmVuY2VzKTsKPj4+ICsJciA9IGRtYV9yZXN2 X2dldF9mZW5jZXNfdW5sb2NrZWQob2JqLCBOVUxMLCAmY291bnQsICZmZW5jZXMpOwo+Pj4gICAg CWlmIChyKQo+Pj4gICAgCQlyZXR1cm4gcjsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZ2VtLmMKPj4+IGluZGV4IDE4OTc0YmQwODFmMDAuLjhlMjk5NmQ2YmEzYWQgMTAwNjQ0 Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMKPj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwo+Pj4gQEAgLTQ3MSw4 ICs0NzEsOCBAQCBpbnQgYW1kZ3B1X2dlbV93YWl0X2lkbGVfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKPj4+ICAgIAkJcmV0dXJuIC1FTk9FTlQ7Cj4+PiAgICAJfQo+ Pj4gICAgCXJvYmogPSBnZW1fdG9fYW1kZ3B1X2JvKGdvYmopOwo+Pj4gLQlyZXQgPSBkbWFfcmVz dl93YWl0X3RpbWVvdXRfcmN1KHJvYmotPnRiby5iYXNlLnJlc3YsIHRydWUsIHRydWUsCj4+PiAt CQkJCQkJICB0aW1lb3V0KTsKPj4+ICsJcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9j a2VkKHJvYmotPnRiby5iYXNlLnJlc3YsIHRydWUsIHRydWUsCj4+PiArCQkJCQkgICAgIHRpbWVv dXQpOwo+Pj4gICAgCS8qIHJldCA9PSAwIG1lYW5zIG5vdCBzaWduYWxlZCwKPj4+ICAgIAkgKiBy ZXQgPiAwIG1lYW5zIHNpZ25hbGVkCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2lkcy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2lkcy5jCj4+PiBpbmRleCBiNDk3MWU5MGI5OGNmLi4zOGUxYjMyZGQyY2VmIDEwMDY0NAo+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2lkcy5jCj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfaWRzLmMKPj4+IEBAIC0xMTIsNyArMTEy LDcgQEAgdm9pZCBhbWRncHVfcGFzaWRfZnJlZV9kZWxheWVkKHN0cnVjdCBkbWFfcmVzdiAqcmVz diwKPj4+ICAgIAl1bnNpZ25lZCBjb3VudDsKPj4+ICAgIAlpbnQgcjsKPj4+IC0JciA9IGRtYV9y ZXN2X2dldF9mZW5jZXNfcmN1KHJlc3YsIE5VTEwsICZjb3VudCwgJmZlbmNlcyk7Cj4+PiArCXIg PSBkbWFfcmVzdl9nZXRfZmVuY2VzX3VubG9ja2VkKHJlc3YsIE5VTEwsICZjb3VudCwgJmZlbmNl cyk7Cj4+PiAgICAJaWYgKHIpCj4+PiAgICAJCWdvdG8gZmFsbGJhY2s7Cj4+PiBAQCAtMTU2LDgg KzE1Niw4IEBAIHZvaWQgYW1kZ3B1X3Bhc2lkX2ZyZWVfZGVsYXllZChzdHJ1Y3QgZG1hX3Jlc3Yg KnJlc3YsCj4+PiAgICAJLyogTm90IGVub3VnaCBtZW1vcnkgZm9yIHRoZSBkZWxheWVkIGRlbGV0 ZSwgYXMgbGFzdCByZXNvcnQKPj4+ICAgIAkgKiBibG9jayBmb3IgYWxsIHRoZSBmZW5jZXMgdG8g Y29tcGxldGUuCj4+PiAgICAJICovCj4+PiAtCWRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3UocmVz diwgdHJ1ZSwgZmFsc2UsCj4+PiAtCQkJCQkgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+Pj4g KwlkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQocmVzdiwgdHJ1ZSwgZmFsc2UsCj4+PiAr CQkJCSAgICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4+PiAgICAJYW1kZ3B1X3Bhc2lkX2Zy ZWUocGFzaWQpOwo+Pj4gICAgfQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9tbi5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21u LmMKPj4+IGluZGV4IDgyOGI1MTY3ZmYxMjguLjAzMTljOGI1NDdjNDggMTAwNjQ0Cj4+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4uYwo+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMKPj4+IEBAIC03NSw4ICs3NSw4IEBAIHN0 YXRpYyBib29sIGFtZGdwdV9tbl9pbnZhbGlkYXRlX2dmeChzdHJ1Y3QgbW11X2ludGVydmFsX25v dGlmaWVyICptbmksCj4+PiAgICAJbW11X2ludGVydmFsX3NldF9zZXEobW5pLCBjdXJfc2VxKTsK Pj4+IC0JciA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3UoYm8tPnRiby5iYXNlLnJlc3YsIHRy dWUsIGZhbHNlLAo+Pj4gLQkJCQkgICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4+PiArCXIg PSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQoYm8tPnRiby5iYXNlLnJlc3YsIHRydWUs IGZhbHNlLAo+Pj4gKwkJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+Pj4gICAgCW11dGV4 X3VubG9jaygmYWRldi0+bm90aWZpZXJfbG9jayk7Cj4+PiAgICAJaWYgKHIgPD0gMCkKPj4+ICAg IAkJRFJNX0VSUk9SKCIoJWxkKSBmYWlsZWQgdG8gd2FpdCBmb3IgdXNlciBib1xuIiwgcik7Cj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jCj4+PiBpbmRleCAw YWRmZmNhY2UzMjYzLi5kZTFjN2M1NTAxNjgzIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKPj4+IEBAIC03OTEsOCArNzkxLDggQEAgaW50IGFt ZGdwdV9ib19rbWFwKHN0cnVjdCBhbWRncHVfYm8gKmJvLCB2b2lkICoqcHRyKQo+Pj4gICAgCQly ZXR1cm4gMDsKPj4+ICAgIAl9Cj4+PiAtCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KGJv LT50Ym8uYmFzZS5yZXN2LCBmYWxzZSwgZmFsc2UsCj4+PiAtCQkJCQkJTUFYX1NDSEVEVUxFX1RJ TUVPVVQpOwo+Pj4gKwlyID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKGJvLT50Ym8u YmFzZS5yZXN2LCBmYWxzZSwgZmFsc2UsCj4+PiArCQkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9V VCk7Cj4+PiAgICAJaWYgKHIgPCAwKQo+Pj4gICAgCQlyZXR1cm4gcjsKPj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMKPj4+IGluZGV4IGM2ZGJjMDgwMTYwNDUuLjRhMjE5 NjQwNGZiNjkgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfdXZkLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91dmQu Ywo+Pj4gQEAgLTExMTUsOSArMTExNSw5IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3V2ZF9zZW5kX21z ZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHN0cnVjdCBhbWRncHVfYm8gKmJvLAo+Pj4gICAg CWliLT5sZW5ndGhfZHcgPSAxNjsKPj4+ICAgIAlpZiAoZGlyZWN0KSB7Cj4+PiAtCQlyID0gZG1h X3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwKPj4+IC0JCQkJCQkJdHJ1 ZSwgZmFsc2UsCj4+PiAtCQkJCQkJCW1zZWNzX3RvX2ppZmZpZXMoMTApKTsKPj4+ICsJCXIgPSBk bWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQoYm8tPnRiby5iYXNlLnJlc3YsCj4+PiArCQkJ CQkJICAgdHJ1ZSwgZmFsc2UsCj4+PiArCQkJCQkJICAgbXNlY3NfdG9famlmZmllcygxMCkpOwo+ Pj4gICAgCQlpZiAociA9PSAwKQo+Pj4gICAgCQkJciA9IC1FVElNRURPVVQ7Cj4+PiAgICAJCWlm IChyIDwgMCkKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4+PiBpbmRl eCA0YTNlM2Y3MmUxMjc3Li43YmExYzUzN2Q2NTg0IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4+PiBAQCAtMjAwNywxNCArMjAwNywxNCBAQCBzdGF0aWMg dm9pZCBhbWRncHVfdm1fcHJ0X2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVj dCBhbWRncHVfdm0gKnZtKQo+Pj4gICAgCXVuc2lnbmVkIGksIHNoYXJlZF9jb3VudDsKPj4+ICAg IAlpbnQgcjsKPj4+IC0JciA9IGRtYV9yZXN2X2dldF9mZW5jZXNfcmN1KHJlc3YsICZleGNsLAo+ Pj4gLQkJCQkJICAgICAgJnNoYXJlZF9jb3VudCwgJnNoYXJlZCk7Cj4+PiArCXIgPSBkbWFfcmVz dl9nZXRfZmVuY2VzX3VubG9ja2VkKHJlc3YsICZleGNsLAo+Pj4gKwkJCQkJICZzaGFyZWRfY291 bnQsICZzaGFyZWQpOwo+Pj4gICAgCWlmIChyKSB7Cj4+PiAgICAJCS8qIE5vdCBlbm91Z2ggbWVt b3J5IHRvIGdyYWIgdGhlIGZlbmNlIGxpc3QsIGFzIGxhc3QgcmVzb3J0Cj4+PiAgICAJCSAqIGJs b2NrIGZvciBhbGwgdGhlIGZlbmNlcyB0byBjb21wbGV0ZS4KPj4+ICAgIAkJICovCj4+PiAtCQlk bWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KHJlc3YsIHRydWUsIGZhbHNlLAo+Pj4gLQkJCQkJCSAg ICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4+PiArCQlkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5s b2NrZWQocmVzdiwgdHJ1ZSwgZmFsc2UsCj4+PiArCQkJCQkgICAgICAgTUFYX1NDSEVEVUxFX1RJ TUVPVVQpOwo+Pj4gICAgCQlyZXR1cm47Cj4+PiAgICAJfQo+Pj4gQEAgLTI2MjUsNyArMjYyNSw3 IEBAIGJvb2wgYW1kZ3B1X3ZtX2V2aWN0YWJsZShzdHJ1Y3QgYW1kZ3B1X2JvICpibykKPj4+ICAg IAkJcmV0dXJuIHRydWU7Cj4+PiAgICAJLyogRG9uJ3QgZXZpY3QgVk0gcGFnZSB0YWJsZXMgd2hp bGUgdGhleSBhcmUgYnVzeSAqLwo+Pj4gLQlpZiAoIWRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfcmN1 KGJvLT50Ym8uYmFzZS5yZXN2LCB0cnVlKSkKPj4+ICsJaWYgKCFkbWFfcmVzdl90ZXN0X3NpZ25h bGVkX3VubG9ja2VkKGJvLT50Ym8uYmFzZS5yZXN2LCB0cnVlKSkKPj4+ICAgIAkJcmV0dXJuIGZh bHNlOwo+Pj4gICAgCS8qIFRyeSB0byBibG9jayBvbmdvaW5nIHVwZGF0ZXMgKi8KPj4+IEBAIC0y ODA1LDggKzI4MDUsOCBAQCB2b2lkIGFtZGdwdV92bV9hZGp1c3Rfc2l6ZShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgdWludDMyX3QgbWluX3ZtX3NpemUsCj4+PiAgICAgKi8KPj4+ICAgIGxv bmcgYW1kZ3B1X3ZtX3dhaXRfaWRsZShzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwgbG9uZyB0aW1lb3V0 KQo+Pj4gICAgewo+Pj4gLQl0aW1lb3V0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdSh2bS0+ cm9vdC5iYXNlLmJvLT50Ym8uYmFzZS5yZXN2LAo+Pj4gLQkJCQkJICAgIHRydWUsIHRydWUsIHRp bWVvdXQpOwo+Pj4gKwl0aW1lb3V0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKHZt LT5yb290LmJhc2UuYm8tPnRiby5iYXNlLnJlc3YsCj4+PiArCQkJCQkJIHRydWUsIHRydWUsIHRp bWVvdXQpOwo+Pj4gICAgCWlmICh0aW1lb3V0IDw9IDApCj4+PiAgICAJCXJldHVybiB0aW1lb3V0 Owo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0v YW1kZ3B1X2RtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdw dV9kbS5jCj4+PiBpbmRleCA5Y2E1MTdiNjU4NTQ2Li4wMTIxZDI4MTdmYTI2IDEwMDY0NAo+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0u Ywo+Pj4gQEAgLTgyNzYsOSArODI3Niw5IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9kbV9jb21taXRf cGxhbmVzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPj4+ICAgIAkJICogZGVhZGxv Y2sgZHVyaW5nIEdQVSByZXNldCB3aGVuIHRoaXMgZmVuY2Ugd2lsbCBub3Qgc2lnbmFsCj4+PiAg ICAJCSAqIGJ1dCB3ZSBob2xkIHJlc2VydmF0aW9uIGxvY2sgZm9yIHRoZSBCTy4KPj4+ICAgIAkJ ICovCj4+PiAtCQlyID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShhYm8tPnRiby5iYXNlLnJl c3YsIHRydWUsCj4+PiAtCQkJCQkJCWZhbHNlLAo+Pj4gLQkJCQkJCQltc2Vjc190b19qaWZmaWVz KDUwMDApKTsKPj4+ICsJCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQoYWJvLT50 Ym8uYmFzZS5yZXN2LCB0cnVlLAo+Pj4gKwkJCQkJCSAgIGZhbHNlLAo+Pj4gKwkJCQkJCSAgIG1z ZWNzX3RvX2ppZmZpZXMoNTAwMCkpOwo+Pj4gICAgCQlpZiAodW5saWtlbHkociA8PSAwKSkKPj4+ ICAgIAkJCURSTV9FUlJPUigiV2FpdGluZyBmb3IgZmVuY2VzIHRpbWVkIG91dCEiKTsKPj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9nZW0uYwo+Pj4gaW5kZXggOTk4OTQyNWU5ODc1YS4uMTI0MWE0MjFiOWU4MSAxMDA2NDQKPj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZ2VtLmMKPj4+IEBAIC03NzAsOCArNzcwLDggQEAgbG9uZyBkcm1fZ2VtX2RtYV9yZXN2 X3dhaXQoc3RydWN0IGRybV9maWxlICpmaWxlcCwgdTMyIGhhbmRsZSwKPj4+ICAgIAkJcmV0dXJu IC1FSU5WQUw7Cj4+PiAgICAJfQo+Pj4gLQlyZXQgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1 KG9iai0+cmVzdiwgd2FpdF9hbGwsCj4+PiAtCQkJCQkJICB0cnVlLCB0aW1lb3V0KTsKPj4+ICsJ cmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKG9iai0+cmVzdiwgd2FpdF9hbGws Cj4+PiArCQkJCQkgICAgIHRydWUsIHRpbWVvdXQpOwo+Pj4gICAgCWlmIChyZXQgPT0gMCkKPj4+ ICAgIAkJcmV0ID0gLUVUSU1FOwo+Pj4gICAgCWVsc2UgaWYgKHJldCA+IDApCj4+PiBAQCAtMTM3 NSwxMyArMTM3NSwxMyBAQCBpbnQgZHJtX2dlbV9mZW5jZV9hcnJheV9hZGRfaW1wbGljaXQoc3Ry dWN0IHhhcnJheSAqZmVuY2VfYXJyYXksCj4+PiAgICAJaWYgKCF3cml0ZSkgewo+Pj4gICAgCQlz dHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSA9Cj4+PiAtCQkJZG1hX3Jlc3ZfZ2V0X2V4Y2xfcmN1KG9i ai0+cmVzdik7Cj4+PiArCQkJZG1hX3Jlc3ZfZ2V0X2V4Y2xfdW5sb2NrZWQob2JqLT5yZXN2KTsK Pj4+ICAgIAkJcmV0dXJuIGRybV9nZW1fZmVuY2VfYXJyYXlfYWRkKGZlbmNlX2FycmF5LCBmZW5j ZSk7Cj4+PiAgICAJfQo+Pj4gLQlyZXQgPSBkbWFfcmVzdl9nZXRfZmVuY2VzX3JjdShvYmotPnJl c3YsIE5VTEwsCj4+PiAtCQkJCQkJJmZlbmNlX2NvdW50LCAmZmVuY2VzKTsKPj4+ICsJcmV0ID0g ZG1hX3Jlc3ZfZ2V0X2ZlbmNlc191bmxvY2tlZChvYmotPnJlc3YsIE5VTEwsCj4+PiArCQkJCQkg ICAmZmVuY2VfY291bnQsICZmZW5jZXMpOwo+Pj4gICAgCWlmIChyZXQgfHwgIWZlbmNlX2NvdW50 KQo+Pj4gICAgCQlyZXR1cm4gcmV0Owo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fZ2VtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2F0b21pY19o ZWxwZXIuYwo+Pj4gaW5kZXggYTAwNWM1YTBiYTQ2YS4uYTI3MTM1MDg0YWU1YyAxMDA2NDQKPj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2F0b21pY19oZWxwZXIuYwo+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fYXRvbWljX2hlbHBlci5jCj4+PiBAQCAtMTQ3LDcgKzE0 Nyw3IEBAIGludCBkcm1fZ2VtX3BsYW5lX2hlbHBlcl9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX3BsYW5lX3N0Cj4+PiAgICAJCXJldHVybiAwOwo+Pj4gICAg CW9iaiA9IGRybV9nZW1fZmJfZ2V0X29iaihzdGF0ZS0+ZmIsIDApOwo+Pj4gLQlmZW5jZSA9IGRt YV9yZXN2X2dldF9leGNsX3JjdShvYmotPnJlc3YpOwo+Pj4gKwlmZW5jZSA9IGRtYV9yZXN2X2dl dF9leGNsX3VubG9ja2VkKG9iai0+cmVzdik7Cj4+PiAgICAJZHJtX2F0b21pY19zZXRfZmVuY2Vf Zm9yX3BsYW5lKHN0YXRlLCBmZW5jZSk7Cj4+PiAgICAJcmV0dXJuIDA7Cj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW0uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9ldG5hdml2L2V0bmF2aXZfZ2VtLmMKPj4+IGluZGV4IGRiNjlmMTlhYjViY2EuLjRlNmY1MzQ2 ZTg0ZTQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dl bS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dlbS5jCj4+PiBA QCAtMzkwLDE0ICszOTAsMTMgQEAgaW50IGV0bmF2aXZfZ2VtX2NwdV9wcmVwKHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqLCB1MzIgb3AsCj4+PiAgICAJfQo+Pj4gICAgCWlmIChvcCAmIEVUTkFf UFJFUF9OT1NZTkMpIHsKPj4+IC0JCWlmICghZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF9yY3Uob2Jq LT5yZXN2LAo+Pj4gLQkJCQkJCQkgIHdyaXRlKSkKPj4+ICsJCWlmICghZG1hX3Jlc3ZfdGVzdF9z aWduYWxlZF91bmxvY2tlZChvYmotPnJlc3YsIHdyaXRlKSkKPj4+ICAgIAkJCXJldHVybiAtRUJV U1k7Cj4+PiAgICAJfSBlbHNlIHsKPj4+ICAgIAkJdW5zaWduZWQgbG9uZyByZW1haW4gPSBldG5h dml2X3RpbWVvdXRfdG9famlmZmllcyh0aW1lb3V0KTsKPj4+IC0JCXJldCA9IGRtYV9yZXN2X3dh aXRfdGltZW91dF9yY3Uob2JqLT5yZXN2LAo+Pj4gLQkJCQkJCQkgIHdyaXRlLCB0cnVlLCByZW1h aW4pOwo+Pj4gKwkJcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKG9iai0+cmVz diwKPj4+ICsJCQkJCQkgICAgIHdyaXRlLCB0cnVlLCByZW1haW4pOwo+Pj4gICAgCQlpZiAocmV0 IDw9IDApCj4+PiAgICAJCQlyZXR1cm4gcmV0ID09IDAgPyAtRVRJTUVET1VUIDogcmV0Owo+Pj4g ICAgCX0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dl bV9zdWJtaXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZ2VtX3N1Ym1pdC5j Cj4+PiBpbmRleCBkMDVjMzU5OTQ1Nzk5Li42NjE3ZmFkYTQ1OTVkIDEwMDY0NAo+Pj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW1fc3VibWl0LmMKPj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZ2VtX3N1Ym1pdC5jCj4+PiBAQCAtMTg5LDEz ICsxODksMTMgQEAgc3RhdGljIGludCBzdWJtaXRfZmVuY2Vfc3luYyhzdHJ1Y3QgZXRuYXZpdl9n ZW1fc3VibWl0ICpzdWJtaXQpCj4+PiAgICAJCQljb250aW51ZTsKPj4+ICAgIAkJaWYgKGJvLT5m bGFncyAmIEVUTkFfU1VCTUlUX0JPX1dSSVRFKSB7Cj4+PiAtCQkJcmV0ID0gZG1hX3Jlc3ZfZ2V0 X2ZlbmNlc19yY3Uocm9iaiwgJmJvLT5leGNsLAo+Pj4gLQkJCQkJCQkJJmJvLT5ucl9zaGFyZWQs Cj4+PiAtCQkJCQkJCQkmYm8tPnNoYXJlZCk7Cj4+PiArCQkJcmV0ID0gZG1hX3Jlc3ZfZ2V0X2Zl bmNlc191bmxvY2tlZChyb2JqLCAmYm8tPmV4Y2wsCj4+PiArCQkJCQkJCSAgICZiby0+bnJfc2hh cmVkLAo+Pj4gKwkJCQkJCQkgICAmYm8tPnNoYXJlZCk7Cj4+PiAgICAJCQlpZiAocmV0KQo+Pj4g ICAgCQkJCXJldHVybiByZXQ7Cj4+PiAgICAJCX0gZWxzZSB7Cj4+PiAtCQkJYm8tPmV4Y2wgPSBk bWFfcmVzdl9nZXRfZXhjbF9yY3Uocm9iaik7Cj4+PiArCQkJYm8tPmV4Y2wgPSBkbWFfcmVzdl9n ZXRfZXhjbF91bmxvY2tlZChyb2JqKTsKPj4+ICAgIAkJfQo+Pj4gICAgCX0KPj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4+PiBpbmRleCA0MjJiNTll YmY2ZGNlLi41ZjBiODVhMTAyMTU5IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4+PiBAQCAtMTEwNDAsNyArMTEwNDAsNyBAQCBpbnRl bF9wcmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKl9wbGFuZSwKPj4+ICAgIAkJaWYg KHJldCA8IDApCj4+PiAgICAJCQlnb3RvIHVucGluX2ZiOwo+Pj4gLQkJZmVuY2UgPSBkbWFfcmVz dl9nZXRfZXhjbF9yY3Uob2JqLT5iYXNlLnJlc3YpOwo+Pj4gKwkJZmVuY2UgPSBkbWFfcmVzdl9n ZXRfZXhjbF91bmxvY2tlZChvYmotPmJhc2UucmVzdik7Cj4+PiAgICAJCWlmIChmZW5jZSkgewo+ Pj4gICAgCQkJYWRkX3Jwc19ib29zdF9hZnRlcl92YmxhbmsobmV3X3BsYW5lX3N0YXRlLT5ody5j cnRjLAo+Pj4gICAgCQkJCQkJICAgZmVuY2UpOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2RtYV9yZXN2X3V0aWxzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kbWFfcmVz dl91dGlscy5jCj4+PiBpbmRleCA5ZTUwOGU3ZDQ2MjlmLi5iZGZjNmJmMTZhNGU5IDEwMDY0NAo+ Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZG1hX3Jlc3ZfdXRpbHMuYwo+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZG1hX3Jlc3ZfdXRpbHMuYwo+Pj4gQEAgLTEwLDcgKzEwLDcg QEAKPj4+ICAgIHZvaWQgZG1hX3Jlc3ZfcHJ1bmUoc3RydWN0IGRtYV9yZXN2ICpyZXN2KQo+Pj4g ICAgewo+Pj4gICAgCWlmIChkbWFfcmVzdl90cnlsb2NrKHJlc3YpKSB7Cj4+PiAtCQlpZiAoZG1h X3Jlc3ZfdGVzdF9zaWduYWxlZF9yY3UocmVzdiwgdHJ1ZSkpCj4+PiArCQlpZiAoZG1hX3Jlc3Zf dGVzdF9zaWduYWxlZF91bmxvY2tlZChyZXN2LCB0cnVlKSkKPj4+ICAgIAkJCWRtYV9yZXN2X2Fk ZF9leGNsX2ZlbmNlKHJlc3YsIE5VTEwpOwo+Pj4gICAgCQlkbWFfcmVzdl91bmxvY2socmVzdik7 Cj4+PiAgICAJfQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9idXN5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fYnVzeS5jCj4+ PiBpbmRleCAyNTIzNWVmNjMwYzEwLi43NTRhZDZkMWJhY2U5IDEwMDY0NAo+Pj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2J1c3kuYwo+Pj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2J1c3kuYwo+Pj4gQEAgLTEwNSw3ICsxMDUsNyBAQCBp OTE1X2dlbV9idXN5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+ PiAgICAJICogQWx0ZXJuYXRpdmVseSwgd2UgY2FuIHRyYWRlIHRoYXQgZXh0cmEgaW5mb3JtYXRp b24gb24gcmVhZC93cml0ZQo+Pj4gICAgCSAqIGFjdGl2aXR5IHdpdGgKPj4+ICAgIAkgKglhcmdz LT5idXN5ID0KPj4+IC0JICoJCSFkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3JjdShvYmotPnJlc3Ys IHRydWUpOwo+Pj4gKwkgKgkJIWRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfdW5sb2NrZWQob2JqLT5y ZXN2LCB0cnVlKTsKPj4+ICAgIAkgKiB0byByZXBvcnQgdGhlIG92ZXJhbGwgYnVzeW5lc3MuIFRo aXMgaXMgd2hhdCB0aGUgd2FpdC1pb2N0bCBkb2VzLgo+Pj4gICAgCSAqCj4+PiAgICAJICovCj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZm ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPj4+ IGluZGV4IDI5NzE0MzUxMWY5OWIuLmU4ZjMyMzU2NGU1N2IgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4+PiBAQCAtMTQ4MSw3 ICsxNDgxLDcgQEAgc3RhdGljIGlubGluZSBib29sIHVzZV9yZWxvY19ncHUoc3RydWN0IGk5MTVf dm1hICp2bWEpCj4+PiAgICAJaWYgKERCR19GT1JDRV9SRUxPQykKPj4+ICAgIAkJcmV0dXJuIGZh bHNlOwo+Pj4gLQlyZXR1cm4gIWRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfcmN1KHZtYS0+cmVzdiwg dHJ1ZSk7Cj4+PiArCXJldHVybiAhZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF91bmxvY2tlZCh2bWEt PnJlc3YsIHRydWUpOwo+Pj4gICAgfQo+Pj4gICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgdm1hX3Bo eXNfYWRkcihzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgdTMyIG9mZnNldCkKPj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgKPj4+IGluZGV4IDJlYmQ3OTUzN2FlYTku LjdjMGViNDI1Y2IzYjMgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fb2JqZWN0LmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9vYmplY3QuaAo+Pj4gQEAgLTUwMCw3ICs1MDAsNyBAQCBpOTE1X2dlbV9vYmplY3RfbGFz dF93cml0ZV9lbmdpbmUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4+ICAgIAlz dHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPj4+ICAgIAlyY3VfcmVhZF9sb2NrKCk7Cj4+PiAtCWZl bmNlID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfcmN1KG9iai0+YmFzZS5yZXN2KTsKPj4+ICsJZmVuY2Ug PSBkbWFfcmVzdl9nZXRfZXhjbF91bmxvY2tlZChvYmotPmJhc2UucmVzdik7Cj4+PiAgICAJcmN1 X3JlYWRfdW5sb2NrKCk7Cj4+PiAgICAJaWYgKGZlbmNlICYmIGRtYV9mZW5jZV9pc19pOTE1KGZl bmNlKSAmJiAhZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGZlbmNlKSkKPj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYwo+Pj4gaW5kZXggYTY1N2I5OWVjNzYwNi4u NDRkZjE4ZGM5NjY5ZiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV91c2VycHRyLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV91c2VycHRyLmMKPj4+IEBAIC04NSw4ICs4NSw4IEBAIHN0YXRpYyBib29sIGk5MTVfZ2Vt X3VzZXJwdHJfaW52YWxpZGF0ZShzdHJ1Y3QgbW11X2ludGVydmFsX25vdGlmaWVyICptbmksCj4+ PiAgICAJCXJldHVybiB0cnVlOwo+Pj4gICAgCS8qIHdlIHdpbGwgdW5iaW5kIG9uIG5leHQgc3Vi bWlzc2lvbiwgc3RpbGwgaGF2ZSB1c2VycHRyIHBpbnMgKi8KPj4+IC0JciA9IGRtYV9yZXN2X3dh aXRfdGltZW91dF9yY3Uob2JqLT5iYXNlLnJlc3YsIHRydWUsIGZhbHNlLAo+Pj4gLQkJCQkgICAg ICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4+PiArCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRf dW5sb2NrZWQob2JqLT5iYXNlLnJlc3YsIHRydWUsIGZhbHNlLAo+Pj4gKwkJCQkJICAgTUFYX1ND SEVEVUxFX1RJTUVPVVQpOwo+Pj4gICAgCWlmIChyIDw9IDApCj4+PiAgICAJCWRybV9lcnIoJmk5 MTUtPmRybSwgIiglbGQpIGZhaWxlZCB0byB3YWl0IGZvciBpZGxlXG4iLCByKTsKPj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fd2FpdC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3dhaXQuYwo+Pj4gaW5kZXggNGI5ODU2ZDViYTE0 Zi4uNWI2YzUyNjU5YWQ0ZCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV93YWl0LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV93YWl0LmMKPj4+IEBAIC00NSw3ICs0NSw3IEBAIGk5MTVfZ2VtX29iamVjdF93YWl0X3Jl c2VydmF0aW9uKHN0cnVjdCBkbWFfcmVzdiAqcmVzdiwKPj4+ICAgIAkJdW5zaWduZWQgaW50IGNv dW50LCBpOwo+Pj4gICAgCQlpbnQgcmV0Owo+Pj4gLQkJcmV0ID0gZG1hX3Jlc3ZfZ2V0X2ZlbmNl c19yY3UocmVzdiwgJmV4Y2wsICZjb3VudCwgJnNoYXJlZCk7Cj4+PiArCQlyZXQgPSBkbWFfcmVz dl9nZXRfZmVuY2VzX3VubG9ja2VkKHJlc3YsICZleGNsLCAmY291bnQsICZzaGFyZWQpOwo+Pj4g ICAgCQlpZiAocmV0KQo+Pj4gICAgCQkJcmV0dXJuIHJldDsKPj4+IEBAIC03Myw3ICs3Myw3IEBA IGk5MTVfZ2VtX29iamVjdF93YWl0X3Jlc2VydmF0aW9uKHN0cnVjdCBkbWFfcmVzdiAqcmVzdiwK Pj4+ICAgIAkJICovCj4+PiAgICAJCXBydW5lX2ZlbmNlcyA9IGNvdW50ICYmIHRpbWVvdXQgPj0g MDsKPj4+ICAgIAl9IGVsc2Ugewo+Pj4gLQkJZXhjbCA9IGRtYV9yZXN2X2dldF9leGNsX3JjdShy ZXN2KTsKPj4+ICsJCWV4Y2wgPSBkbWFfcmVzdl9nZXRfZXhjbF91bmxvY2tlZChyZXN2KTsKPj4+ ICAgIAl9Cj4+PiAgICAJaWYgKGV4Y2wgJiYgdGltZW91dCA+PSAwKQo+Pj4gQEAgLTE1OCw4ICsx NTgsOCBAQCBpOTE1X2dlbV9vYmplY3Rfd2FpdF9wcmlvcml0eShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAo+Pj4gICAgCQl1bnNpZ25lZCBpbnQgY291bnQsIGk7Cj4+PiAgICAJCWlu dCByZXQ7Cj4+PiAtCQlyZXQgPSBkbWFfcmVzdl9nZXRfZmVuY2VzX3JjdShvYmotPmJhc2UucmVz diwKPj4+IC0JCQkJCSAgICAgICZleGNsLCAmY291bnQsICZzaGFyZWQpOwo+Pj4gKwkJcmV0ID0g ZG1hX3Jlc3ZfZ2V0X2ZlbmNlc191bmxvY2tlZChvYmotPmJhc2UucmVzdiwKPj4+ICsJCQkJCQkg ICAmZXhjbCwgJmNvdW50LCAmc2hhcmVkKTsKPj4+ICAgIAkJaWYgKHJldCkKPj4+ICAgIAkJCXJl dHVybiByZXQ7Cj4+PiBAQCAtMTcwLDcgKzE3MCw3IEBAIGk5MTVfZ2VtX29iamVjdF93YWl0X3By aW9yaXR5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4+PiAgICAJCWtmcmVlKHNo YXJlZCk7Cj4+PiAgICAJfSBlbHNlIHsKPj4+IC0JCWV4Y2wgPSBkbWFfcmVzdl9nZXRfZXhjbF9y Y3Uob2JqLT5iYXNlLnJlc3YpOwo+Pj4gKwkJZXhjbCA9IGRtYV9yZXN2X2dldF9leGNsX3VubG9j a2VkKG9iai0+YmFzZS5yZXN2KTsKPj4+ICAgIAl9Cj4+PiAgICAJaWYgKGV4Y2wpIHsKPj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4+PiBpbmRleCA5NzBkOGY0OTg2YmJlLi5mMWVk MDNjZWQ3ZGQxIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1 ZXN0LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4+PiBA QCAtMTU5NCw4ICsxNTk0LDggQEAgaTkxNV9yZXF1ZXN0X2F3YWl0X29iamVjdChzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICp0bywKPj4+ICAgIAkJc3RydWN0IGRtYV9mZW5jZSAqKnNoYXJlZDsKPj4+ICAg IAkJdW5zaWduZWQgaW50IGNvdW50LCBpOwo+Pj4gLQkJcmV0ID0gZG1hX3Jlc3ZfZ2V0X2ZlbmNl c19yY3Uob2JqLT5iYXNlLnJlc3YsCj4+PiAtCQkJCQkJCSZleGNsLCAmY291bnQsICZzaGFyZWQp Owo+Pj4gKwkJcmV0ID0gZG1hX3Jlc3ZfZ2V0X2ZlbmNlc191bmxvY2tlZChvYmotPmJhc2UucmVz diwKPj4+ICsJCQkJCQkgICAmZXhjbCwgJmNvdW50LCAmc2hhcmVkKTsKPj4+ICAgIAkJaWYgKHJl dCkKPj4+ICAgIAkJCXJldHVybiByZXQ7Cj4+PiBAQCAtMTYxMSw3ICsxNjExLDcgQEAgaTkxNV9y ZXF1ZXN0X2F3YWl0X29iamVjdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICp0bywKPj4+ICAgIAkJCWRt YV9mZW5jZV9wdXQoc2hhcmVkW2ldKTsKPj4+ICAgIAkJa2ZyZWUoc2hhcmVkKTsKPj4+ICAgIAl9 IGVsc2Ugewo+Pj4gLQkJZXhjbCA9IGRtYV9yZXN2X2dldF9leGNsX3JjdShvYmotPmJhc2UucmVz dik7Cj4+PiArCQlleGNsID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfdW5sb2NrZWQob2JqLT5iYXNlLnJl c3YpOwo+Pj4gICAgCX0KPj4+ICAgIAlpZiAoZXhjbCkgewo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfc3dfZmVuY2UuYwo+Pj4gaW5kZXggMjc0NDU1OGYzMDUwNy4uMGJjYjdlYTQ0MjAxZSAxMDA2 NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuYwo+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5jCj4+PiBAQCAtNTgyLDcgKzU4 Miw3IEBAIGludCBpOTE1X3N3X2ZlbmNlX2F3YWl0X3Jlc2VydmF0aW9uKHN0cnVjdCBpOTE1X3N3 X2ZlbmNlICpmZW5jZSwKPj4+ICAgIAkJc3RydWN0IGRtYV9mZW5jZSAqKnNoYXJlZDsKPj4+ICAg IAkJdW5zaWduZWQgaW50IGNvdW50LCBpOwo+Pj4gLQkJcmV0ID0gZG1hX3Jlc3ZfZ2V0X2ZlbmNl c19yY3UocmVzdiwgJmV4Y2wsICZjb3VudCwgJnNoYXJlZCk7Cj4+PiArCQlyZXQgPSBkbWFfcmVz dl9nZXRfZmVuY2VzX3VubG9ja2VkKHJlc3YsICZleGNsLCAmY291bnQsICZzaGFyZWQpOwo+Pj4g ICAgCQlpZiAocmV0KQo+Pj4gICAgCQkJcmV0dXJuIHJldDsKPj4+IEBAIC02MDYsNyArNjA2LDcg QEAgaW50IGk5MTVfc3dfZmVuY2VfYXdhaXRfcmVzZXJ2YXRpb24oc3RydWN0IGk5MTVfc3dfZmVu Y2UgKmZlbmNlLAo+Pj4gICAgCQkJZG1hX2ZlbmNlX3B1dChzaGFyZWRbaV0pOwo+Pj4gICAgCQlr ZnJlZShzaGFyZWQpOwo+Pj4gICAgCX0gZWxzZSB7Cj4+PiAtCQlleGNsID0gZG1hX3Jlc3ZfZ2V0 X2V4Y2xfcmN1KHJlc3YpOwo+Pj4gKwkJZXhjbCA9IGRtYV9yZXN2X2dldF9leGNsX3VubG9ja2Vk KHJlc3YpOwo+Pj4gICAgCX0KPj4+ICAgIAlpZiAocmV0ID49IDAgJiYgZXhjbCAmJiBleGNsLT5v cHMgIT0gZXhjbHVkZSkgewo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNt X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMKPj4+IGluZGV4IDU2ZGY4NmU1 Zjc0MDAuLjFhY2E2MDUwN2JiMTQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9nZW0uYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMKPj4+IEBA IC05MTUsOCArOTE1LDcgQEAgaW50IG1zbV9nZW1fY3B1X3ByZXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIHVpbnQzMl90IG9wLCBrdGltZV90ICp0aW1lb3V0KQo+Pj4gICAgCQlvcCAmIE1T TV9QUkVQX05PU1lOQyA/IDAgOiB0aW1lb3V0X3RvX2ppZmZpZXModGltZW91dCk7Cj4+PiAgICAJ bG9uZyByZXQ7Cj4+PiAtCXJldCA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3Uob2JqLT5yZXN2 LCB3cml0ZSwKPj4+IC0JCQkJCQkgIHRydWUsICByZW1haW4pOwo+Pj4gKwlyZXQgPSBkbWFfcmVz dl93YWl0X3RpbWVvdXRfdW5sb2NrZWQob2JqLT5yZXN2LCB3cml0ZSwgdHJ1ZSwgcmVtYWluKTsK Pj4+ICAgIAlpZiAocmV0ID09IDApCj4+PiAgICAJCXJldHVybiByZW1haW4gPT0gMCA/IC1FQlVT WSA6IC1FVElNRURPVVQ7Cj4+PiAgICAJZWxzZSBpZiAocmV0IDwgMCkKPj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9kaXNwbnY1MC93bmR3LmMgYi9kcml2ZXJzL2dwdS9k cm0vbm91dmVhdS9kaXNwbnY1MC93bmR3LmMKPj4+IGluZGV4IDBjYjFmOWQ4NDhkM2UuLjhkMDQ4 YmFjZDZmMDIgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9kaXNwbnY1 MC93bmR3LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2Rpc3BudjUwL3duZHcu Ywo+Pj4gQEAgLTU2MSw3ICs1NjEsNyBAQCBudjUwX3duZHdfcHJlcGFyZV9mYihzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4+PiAgICAJCQlh c3l3LT5pbWFnZS5oYW5kbGVbMF0gPSBjdHhkbWEtPm9iamVjdC5oYW5kbGU7Cj4+PiAgICAJfQo+ Pj4gLQlhc3l3LT5zdGF0ZS5mZW5jZSA9IGRtYV9yZXN2X2dldF9leGNsX3JjdShudmJvLT5iby5i YXNlLnJlc3YpOwo+Pj4gKwlhc3l3LT5zdGF0ZS5mZW5jZSA9IGRtYV9yZXN2X2dldF9leGNsX3Vu bG9ja2VkKG52Ym8tPmJvLmJhc2UucmVzdik7Cj4+PiAgICAJYXN5dy0+aW1hZ2Uub2Zmc2V0WzBd ID0gbnZiby0+b2Zmc2V0Owo+Pj4gICAgCWlmICh3bmR3LT5mdW5jLT5wcmVwYXJlKSB7Cj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9nZW0uYyBiL2RyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZ2VtLmMKPj4+IGluZGV4IGE3MGU4MjQxM2ZhNzUu LmJjNmIwOWVlOWI1NTIgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9u b3V2ZWF1X2dlbS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2dl bS5jCj4+PiBAQCAtOTI4LDggKzkyOCw4IEBAIG5vdXZlYXVfZ2VtX2lvY3RsX2NwdV9wcmVwKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+PiAgICAJCXJldHVybiAtRU5PRU5U Owo+Pj4gICAgCW52Ym8gPSBub3V2ZWF1X2dlbV9vYmplY3QoZ2VtKTsKPj4+IC0JbHJldCA9IGRt YV9yZXN2X3dhaXRfdGltZW91dF9yY3UobnZiby0+Ym8uYmFzZS5yZXN2LCB3cml0ZSwgdHJ1ZSwK Pj4+IC0JCQkJCQkgICBub193YWl0ID8gMCA6IDMwICogSFopOwo+Pj4gKwlscmV0ID0gZG1hX3Jl c3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKG52Ym8tPmJvLmJhc2UucmVzdiwgd3JpdGUsIHRydWUs Cj4+PiArCQkJCQkgICAgICBub193YWl0ID8gMCA6IDMwICogSFopOwo+Pj4gICAgCWlmICghbHJl dCkKPj4+ICAgIAkJcmV0ID0gLUVCVVNZOwo+Pj4gICAgCWVsc2UgaWYgKGxyZXQgPiAwKQo+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9kcnYuYyBiL2Ry aXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9kcnYuYwo+Pj4gaW5kZXggY2EwNzA5OGE2 MTQxOS4uZWVmNWI2MzJlZTBjZSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5m cm9zdC9wYW5mcm9zdF9kcnYuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3Bh bmZyb3N0X2Rydi5jCj4+PiBAQCAtMzExLDggKzMxMSw4IEBAIHBhbmZyb3N0X2lvY3RsX3dhaXRf Ym8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPj4+ICAgIAlpZiAoIWdlbV9v YmopCj4+PiAgICAJCXJldHVybiAtRU5PRU5UOwo+Pj4gLQlyZXQgPSBkbWFfcmVzdl93YWl0X3Rp bWVvdXRfcmN1KGdlbV9vYmotPnJlc3YsIHRydWUsCj4+PiAtCQkJCQkJICB0cnVlLCB0aW1lb3V0 KTsKPj4+ICsJcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKGdlbV9vYmotPnJl c3YsIHRydWUsCj4+PiArCQkJCQkgICAgIHRydWUsIHRpbWVvdXQpOwo+Pj4gICAgCWlmICghcmV0 KQo+Pj4gICAgCQlyZXQgPSB0aW1lb3V0ID8gLUVUSU1FRE9VVCA6IC1FQlVTWTsKPj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3Rfam9iLmMgYi9kcml2ZXJz L2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3Rfam9iLmMKPj4+IGluZGV4IDYwMDNjZmViMTMyMjEu LjJkZjNlOTk5YTM4ZDAgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3Qv cGFuZnJvc3Rfam9iLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9z dF9qb2IuYwo+Pj4gQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGF0aWMgdm9pZCBwYW5mcm9zdF9hY3F1 aXJlX29iamVjdF9mZW5jZXMoc3RydWN0IGRybV9nZW1fb2JqZWN0ICoqYm9zLAo+Pj4gICAgCWlu dCBpOwo+Pj4gICAgCWZvciAoaSA9IDA7IGkgPCBib19jb3VudDsgaSsrKQo+Pj4gLQkJaW1wbGlj aXRfZmVuY2VzW2ldID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfcmN1KGJvc1tpXS0+cmVzdik7Cj4+PiAr CQlpbXBsaWNpdF9mZW5jZXNbaV0gPSBkbWFfcmVzdl9nZXRfZXhjbF91bmxvY2tlZChib3NbaV0t PnJlc3YpOwo+Pj4gICAgfQo+Pj4gICAgc3RhdGljIHZvaWQgcGFuZnJvc3RfYXR0YWNoX29iamVj dF9mZW5jZXMoc3RydWN0IGRybV9nZW1fb2JqZWN0ICoqYm9zLAo+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb25fZ2VtLmMKPj4+IGluZGV4IDA1ZWEyZjM5ZjYyNjEuLjFhMzhiMGJmMzZkMTEgMTAw NjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYwo+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZ2VtLmMKPj4+IEBAIC0xMjUsNyArMTI1 LDcgQEAgc3RhdGljIGludCByYWRlb25fZ2VtX3NldF9kb21haW4oc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpnb2JqLAo+Pj4gICAgCX0KPj4+ICAgIAlpZiAoZG9tYWluID09IFJBREVPTl9HRU1fRE9N QUlOX0NQVSkgewo+Pj4gICAgCQkvKiBBc2tpbmcgZm9yIGNwdSBhY2Nlc3Mgd2FpdCBmb3Igb2Jq ZWN0IGlkbGUgKi8KPj4+IC0JCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KHJvYmotPnRi by5iYXNlLnJlc3YsIHRydWUsIHRydWUsIDMwICogSFopOwo+Pj4gKwkJciA9IGRtYV9yZXN2X3dh aXRfdGltZW91dF91bmxvY2tlZChyb2JqLT50Ym8uYmFzZS5yZXN2LCB0cnVlLCB0cnVlLCAzMCAq IEhaKTsKPj4+ICAgIAkJaWYgKCFyKQo+Pj4gICAgCQkJciA9IC1FQlVTWTsKPj4+IEBAIC00NzQs NyArNDc0LDcgQEAgaW50IHJhZGVvbl9nZW1fYnVzeV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAo+Pj4gICAgCX0KPj4+ICAgIAlyb2JqID0gZ2VtX3RvX3JhZGVvbl9i byhnb2JqKTsKPj4+IC0JciA9IGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfcmN1KHJvYmotPnRiby5i YXNlLnJlc3YsIHRydWUpOwo+Pj4gKwlyID0gZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF91bmxvY2tl ZChyb2JqLT50Ym8uYmFzZS5yZXN2LCB0cnVlKTsKPj4+ICAgIAlpZiAociA9PSAwKQo+Pj4gICAg CQlyID0gLUVCVVNZOwo+Pj4gICAgCWVsc2UKPj4+IEBAIC01MDMsNyArNTAzLDcgQEAgaW50IHJh ZGVvbl9nZW1fd2FpdF9pZGxlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCj4+PiAgICAJfQo+Pj4gICAgCXJvYmogPSBnZW1fdG9fcmFkZW9uX2JvKGdvYmopOwo+Pj4g LQlyZXQgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KHJvYmotPnRiby5iYXNlLnJlc3YsIHRy dWUsIHRydWUsIDMwICogSFopOwo+Pj4gKwlyZXQgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5s b2NrZWQocm9iai0+dGJvLmJhc2UucmVzdiwgdHJ1ZSwgdHJ1ZSwgMzAgKiBIWik7Cj4+PiAgICAJ aWYgKHJldCA9PSAwKQo+Pj4gICAgCQlyID0gLUVCVVNZOwo+Pj4gICAgCWVsc2UgaWYgKHJldCA8 IDApCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYyBi L2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX21uLmMKPj4+IGluZGV4IGUzN2M5YTU3YTdj MzYuLmExOWJlM2Y4YTIxOGMgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9u L3JhZGVvbl9tbi5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5j Cj4+PiBAQCAtNjYsOCArNjYsOCBAQCBzdGF0aWMgYm9vbCByYWRlb25fbW5faW52YWxpZGF0ZShz dHJ1Y3QgbW11X2ludGVydmFsX25vdGlmaWVyICptbiwKPj4+ICAgIAkJcmV0dXJuIHRydWU7Cj4+ PiAgICAJfQo+Pj4gLQlyID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShiby0+dGJvLmJhc2Uu cmVzdiwgdHJ1ZSwgZmFsc2UsCj4+PiAtCQkJCSAgICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsK Pj4+ICsJciA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF91bmxvY2tlZChiby0+dGJvLmJhc2UucmVz diwgdHJ1ZSwgZmFsc2UsCj4+PiArCQkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4+PiAg ICAJaWYgKHIgPD0gMCkKPj4+ICAgIAkJRFJNX0VSUk9SKCIoJWxkKSBmYWlsZWQgdG8gd2FpdCBm b3IgdXNlciBib1xuIiwgcik7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90 dG1fYm8uYyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMKPj4+IGluZGV4IGNhMWIwOThi NmE1NjEuLjIxNWNhZDMxNDk2MjEgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRt L3R0bV9iby5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCj4+PiBAQCAt Mjk0LDcgKzI5NCw3IEBAIHN0YXRpYyBpbnQgdHRtX2JvX2NsZWFudXBfcmVmcyhzdHJ1Y3QgdHRt X2J1ZmZlcl9vYmplY3QgKmJvLAo+Pj4gICAgCXN0cnVjdCBkbWFfcmVzdiAqcmVzdiA9ICZiby0+ YmFzZS5fcmVzdjsKPj4+ICAgIAlpbnQgcmV0Owo+Pj4gLQlpZiAoZG1hX3Jlc3ZfdGVzdF9zaWdu YWxlZF9yY3UocmVzdiwgdHJ1ZSkpCj4+PiArCWlmIChkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3Vu bG9ja2VkKHJlc3YsIHRydWUpKQo+Pj4gICAgCQlyZXQgPSAwOwo+Pj4gICAgCWVsc2UKPj4+ICAg IAkJcmV0ID0gLUVCVVNZOwo+Pj4gQEAgLTMwNiw4ICszMDYsOCBAQCBzdGF0aWMgaW50IHR0bV9i b19jbGVhbnVwX3JlZnMoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKPj4+ICAgIAkJCWRt YV9yZXN2X3VubG9jayhiby0+YmFzZS5yZXN2KTsKPj4+ICAgIAkJc3Bpbl91bmxvY2soJmJvLT5i ZGV2LT5scnVfbG9jayk7Cj4+PiAtCQlscmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShy ZXN2LCB0cnVlLCBpbnRlcnJ1cHRpYmxlLAo+Pj4gLQkJCQkJCSAzMCAqIEhaKTsKPj4+ICsJCWxy ZXQgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQocmVzdiwgdHJ1ZSwgaW50ZXJydXB0 aWJsZSwKPj4+ICsJCQkJCQkgICAgICAzMCAqIEhaKTsKPj4+ICAgIAkJaWYgKGxyZXQgPCAwKQo+ Pj4gICAgCQkJcmV0dXJuIGxyZXQ7Cj4+PiBAQCAtNDA5LDggKzQwOSw4IEBAIHN0YXRpYyB2b2lk IHR0bV9ib19yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKQo+Pj4gICAgCQkJLyogTGFzdCByZXNv cnQsIGlmIHdlIGZhaWwgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUKPj4+ICAgIAkJCSAqIGZl bmNlcyBibG9jayBmb3IgdGhlIEJPIHRvIGJlY29tZSBpZGxlCj4+PiAgICAJCQkgKi8KPj4+IC0J CQlkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KGJvLT5iYXNlLnJlc3YsIHRydWUsIGZhbHNlLAo+ Pj4gLQkJCQkJCSAgMzAgKiBIWik7Cj4+PiArCQkJZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9j a2VkKGJvLT5iYXNlLnJlc3YsIHRydWUsIGZhbHNlLAo+Pj4gKwkJCQkJCSAgICAgICAzMCAqIEha KTsKPj4+ICAgIAkJfQo+Pj4gICAgCQlpZiAoYm8tPmJkZXYtPmZ1bmNzLT5yZWxlYXNlX25vdGlm eSkKPj4+IEBAIC00MjAsNyArNDIwLDcgQEAgc3RhdGljIHZvaWQgdHRtX2JvX3JlbGVhc2Uoc3Ry dWN0IGtyZWYgKmtyZWYpCj4+PiAgICAJCXR0bV9tZW1faW9fZnJlZShiZGV2LCAmYm8tPm1lbSk7 Cj4+PiAgICAJfQo+Pj4gLQlpZiAoIWRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfcmN1KGJvLT5iYXNl LnJlc3YsIHRydWUpIHx8Cj4+PiArCWlmICghZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF91bmxvY2tl ZChiby0+YmFzZS5yZXN2LCB0cnVlKSB8fAo+Pj4gICAgCSAgICAhZG1hX3Jlc3ZfdHJ5bG9jayhi by0+YmFzZS5yZXN2KSkgewo+Pj4gICAgCQkvKiBUaGUgQk8gaXMgbm90IGlkbGUsIHJlc3VycmVj dCBpdCBmb3IgZGVsYXllZCBkZXN0cm95ICovCj4+PiAgICAJCXR0bV9ib19mbHVzaF9hbGxfZmVu Y2VzKGJvKTsKPj4+IEBAIC0xMTE2LDE0ICsxMTE2LDE0IEBAIGludCB0dG1fYm9fd2FpdChzdHJ1 Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAo+Pj4gICAgCWxvbmcgdGltZW91dCA9IDE1ICogSFo7 Cj4+PiAgICAJaWYgKG5vX3dhaXQpIHsKPj4+IC0JCWlmIChkbWFfcmVzdl90ZXN0X3NpZ25hbGVk X3JjdShiby0+YmFzZS5yZXN2LCB0cnVlKSkKPj4+ICsJCWlmIChkbWFfcmVzdl90ZXN0X3NpZ25h bGVkX3VubG9ja2VkKGJvLT5iYXNlLnJlc3YsIHRydWUpKQo+Pj4gICAgCQkJcmV0dXJuIDA7Cj4+ PiAgICAJCWVsc2UKPj4+ICAgIAkJCXJldHVybiAtRUJVU1k7Cj4+PiAgICAJfQo+Pj4gLQl0aW1l b3V0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShiby0+YmFzZS5yZXN2LCB0cnVlLAo+Pj4g LQkJCQkJCSAgICAgIGludGVycnVwdGlibGUsIHRpbWVvdXQpOwo+Pj4gKwl0aW1lb3V0ID0gZG1h X3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKGJvLT5iYXNlLnJlc3YsIHRydWUsCj4+PiArCQkJ CQkJIGludGVycnVwdGlibGUsIHRpbWVvdXQpOwo+Pj4gICAgCWlmICh0aW1lb3V0IDwgMCkKPj4+ ICAgIAkJcmV0dXJuIHRpbWVvdXQ7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Zn ZW0vdmdlbV9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9mZW5jZS5jCj4+PiBp bmRleCAyOTAyZGM2ZTY0ZmFmLi4wMTBhODI0MDVlMzc0IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3ZnZW0vdmdlbV9mZW5jZS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmdl bS92Z2VtX2ZlbmNlLmMKPj4+IEBAIC0xNTEsOCArMTUxLDggQEAgaW50IHZnZW1fZmVuY2VfYXR0 YWNoX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+PiAgICAJLyogQ2hlY2sgZm9yIGEg Y29uZmxpY3RpbmcgZmVuY2UgKi8KPj4+ICAgIAlyZXN2ID0gb2JqLT5yZXN2Owo+Pj4gLQlpZiAo IWRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfcmN1KHJlc3YsCj4+PiAtCQkJCQkJICBhcmctPmZsYWdz ICYgVkdFTV9GRU5DRV9XUklURSkpIHsKPj4+ICsJaWYgKCFkbWFfcmVzdl90ZXN0X3NpZ25hbGVk X3VubG9ja2VkKHJlc3YsCj4+PiArCQkJCQkgICAgIGFyZy0+ZmxhZ3MgJiBWR0VNX0ZFTkNFX1dS SVRFKSkgewo+Pj4gICAgCQlyZXQgPSAtRUJVU1k7Cj4+PiAgICAJCWdvdG8gZXJyX2ZlbmNlOwo+ Pj4gICAgCX0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVf aW9jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9pb2N0bC5jCj4+PiBpbmRl eCA2NjlmMmVlMzk1MTU0Li5hYjAxMGM4ZTMyODE2IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92 aXJ0aW8vdmlydGdwdV9pb2N0bC5jCj4+PiBAQCAtNDUxLDEwICs0NTEsMTAgQEAgc3RhdGljIGlu dCB2aXJ0aW9fZ3B1X3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKPj4+ICAgIAkJcmV0dXJuIC1FTk9FTlQ7Cj4+PiAgICAJaWYgKGFyZ3MtPmZsYWdzICYgVklS VEdQVV9XQUlUX05PV0FJVCkgewo+Pj4gLQkJcmV0ID0gZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF9y Y3Uob2JqLT5yZXN2LCB0cnVlKTsKPj4+ICsJCXJldCA9IGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRf dW5sb2NrZWQob2JqLT5yZXN2LCB0cnVlKTsKPj4+ICAgIAl9IGVsc2Ugewo+Pj4gLQkJcmV0ID0g ZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShvYmotPnJlc3YsIHRydWUsIHRydWUsCj4+PiAtCQkJ CQkJdGltZW91dCk7Cj4+PiArCQlyZXQgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQo b2JqLT5yZXN2LCB0cnVlLCB0cnVlLAo+Pj4gKwkJCQkJCSAgICAgdGltZW91dCk7Cj4+PiAgICAJ fQo+Pj4gICAgCWlmIChyZXQgPT0gMCkKPj4+ICAgIAkJcmV0ID0gLUVCVVNZOwo+Pj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2JvLmMgYi9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9iby5jCj4+PiBpbmRleCAwNGRkNDljNGMyNTcyLi4xOWUxY2UyMzg0 MmE5IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYm8uYwo+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYm8uYwo+Pj4gQEAgLTc0Myw3 ICs3NDMsNyBAQCBzdGF0aWMgaW50IHZtd191c2VyX2JvX3N5bmNjcHVfZ3JhYihzdHJ1Y3Qgdm13 X3VzZXJfYnVmZmVyX29iamVjdCAqdXNlcl9ibywKPj4+ICAgIAlpZiAoZmxhZ3MgJiBkcm1fdm13 X3N5bmNjcHVfYWxsb3dfY3MpIHsKPj4+ICAgIAkJbG9uZyBscmV0Owo+Pj4gLQkJbHJldCA9IGRt YV9yZXN2X3dhaXRfdGltZW91dF9yY3UKPj4+ICsJCWxyZXQgPSBkbWFfcmVzdl93YWl0X3RpbWVv dXRfdW5sb2NrZWQKPj4+ICAgIAkJCShiby0+YmFzZS5yZXN2LCB0cnVlLCB0cnVlLAo+Pj4gICAg CQkJIG5vbmJsb2NrID8gMCA6IE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPj4+ICAgIAkJaWYgKCFs cmV0KQo+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZG1hLXJlc3YuaCBiL2luY2x1ZGUv bGludXgvZG1hLXJlc3YuaAo+Pj4gaW5kZXggZDQ0YTc3ZThhN2UzNC4uOTljZmI3YWY5NjZiOCAx MDA2NDQKPj4+IC0tLSBhL2luY2x1ZGUvbGludXgvZG1hLXJlc3YuaAo+Pj4gKysrIGIvaW5jbHVk ZS9saW51eC9kbWEtcmVzdi5oCj4+PiBAQCAtMjQ2LDcgKzI0Niw3IEBAIGRtYV9yZXN2X2dldF9l eGNsKHN0cnVjdCBkbWFfcmVzdiAqb2JqKQo+Pj4gICAgfQo+Pj4gICAgLyoqCj4+PiAtICogZG1h X3Jlc3ZfZ2V0X2V4Y2xfcmN1IC0gZ2V0IHRoZSByZXNlcnZhdGlvbiBvYmplY3Qncwo+Pj4gKyAq IGRtYV9yZXN2X2dldF9leGNsX3VubG9ja2VkIC0gZ2V0IHRoZSByZXNlcnZhdGlvbiBvYmplY3Qn cwo+Pj4gICAgICogZXhjbHVzaXZlIGZlbmNlLCB3aXRob3V0IGxvY2sgaGVsZC4KPj4+ICAgICAq IEBvYmo6IHRoZSByZXNlcnZhdGlvbiBvYmplY3QKPj4+ICAgICAqCj4+PiBAQCAtMjU3LDcgKzI1 Nyw3IEBAIGRtYV9yZXN2X2dldF9leGNsKHN0cnVjdCBkbWFfcmVzdiAqb2JqKQo+Pj4gICAgICog VGhlIGV4Y2x1c2l2ZSBmZW5jZSBvciBOVUxMIGlmIG5vbmUKPj4+ICAgICAqLwo+Pj4gICAgc3Rh dGljIGlubGluZSBzdHJ1Y3QgZG1hX2ZlbmNlICoKPj4+IC1kbWFfcmVzdl9nZXRfZXhjbF9yY3Uo c3RydWN0IGRtYV9yZXN2ICpvYmopCj4+PiArZG1hX3Jlc3ZfZ2V0X2V4Y2xfdW5sb2NrZWQoc3Ry dWN0IGRtYV9yZXN2ICpvYmopCj4+PiAgICB7Cj4+PiAgICAJc3RydWN0IGRtYV9mZW5jZSAqZmVu Y2U7Cj4+PiBAQCAtMjc4LDE2ICsyNzgsMTYgQEAgdm9pZCBkbWFfcmVzdl9hZGRfc2hhcmVkX2Zl bmNlKHN0cnVjdCBkbWFfcmVzdiAqb2JqLCBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSk7Cj4+PiAg ICB2b2lkIGRtYV9yZXN2X2FkZF9leGNsX2ZlbmNlKHN0cnVjdCBkbWFfcmVzdiAqb2JqLCBzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZSk7Cj4+PiAtaW50IGRtYV9yZXN2X2dldF9mZW5jZXNfcmN1KHN0 cnVjdCBkbWFfcmVzdiAqb2JqLAo+Pj4gLQkJCSAgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqcGZlbmNl X2V4Y2wsCj4+PiAtCQkJICAgIHVuc2lnbmVkICpwc2hhcmVkX2NvdW50LAo+Pj4gLQkJCSAgICBz dHJ1Y3QgZG1hX2ZlbmNlICoqKnBzaGFyZWQpOwo+Pj4gK2ludCBkbWFfcmVzdl9nZXRfZmVuY2Vz X3VubG9ja2VkKHN0cnVjdCBkbWFfcmVzdiAqb2JqLAo+Pj4gKwkJCQkgc3RydWN0IGRtYV9mZW5j ZSAqKnBmZW5jZV9leGNsLAo+Pj4gKwkJCQkgdW5zaWduZWQgKnBzaGFyZWRfY291bnQsCj4+PiAr CQkJCSBzdHJ1Y3QgZG1hX2ZlbmNlICoqKnBzaGFyZWQpOwo+Pj4gICAgaW50IGRtYV9yZXN2X2Nv cHlfZmVuY2VzKHN0cnVjdCBkbWFfcmVzdiAqZHN0LCBzdHJ1Y3QgZG1hX3Jlc3YgKnNyYyk7Cj4+ PiAtbG9uZyBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KHN0cnVjdCBkbWFfcmVzdiAqb2JqLCBi b29sIHdhaXRfYWxsLCBib29sIGludHIsCj4+PiAtCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgdGlt ZW91dCk7Cj4+PiArbG9uZyBkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQoc3RydWN0IGRt YV9yZXN2ICpvYmosIGJvb2wgd2FpdF9hbGwsIGJvb2wgaW50ciwKPj4+ICsJCQkJICAgIHVuc2ln bmVkIGxvbmcgdGltZW91dCk7Cj4+PiAtYm9vbCBkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3JjdShz dHJ1Y3QgZG1hX3Jlc3YgKm9iaiwgYm9vbCB0ZXN0X2FsbCk7Cj4+PiArYm9vbCBkbWFfcmVzdl90 ZXN0X3NpZ25hbGVkX3VubG9ja2VkKHN0cnVjdCBkbWFfcmVzdiAqb2JqLCBib29sIHRlc3RfYWxs KTsKPj4+ICAgICNlbmRpZiAvKiBfTElOVVhfUkVTRVJWQVRJT05fSCAqLwoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 57391C4707F for ; Thu, 27 May 2021 11:59:10 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1B69A61006 for ; Thu, 27 May 2021 11:59:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1B69A61006 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2D9836EE9A; Thu, 27 May 2021 11:59:09 +0000 (UTC) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2048.outbound.protection.outlook.com [40.107.237.48]) by gabe.freedesktop.org (Postfix) with ESMTPS id F14056EE98; Thu, 27 May 2021 11:59:06 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lVQJM/IuLJLbShGoIPkOZWOfUeLjWmp/vOsYFZHre+O4qFnoJGVS02LUVccoPHuX7gJwIMm4pe3YzJtJtihuSrIyfmCfrtcKKdUqiUkfIJP8b1vxyO7t5H7wwpMQiZyHdeTFVV0QDYvvrS0BZAeyNgaeprfZi7BPs7Qb49AMsllN0yql70GiQK3tFeC0ssxv/1CPvY/KA2OmiOAfrRBYVaIkoK5oZGDlmhlZ0O5nAIQSqsNoz+tb8eiP5yQpy8zTVARfakYrgmGFygvOH82uvruKQ31ThrGk0uLTceiGVXM3RwSl2X6+477iaV//YxjsaZDeEYAl32l9h1NP7Vpgxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pgs56V0y6wk7pNiDVMJiraQtZF1guaC5x57/8UpT9K8=; b=Rz9NRrfcBwMYNBv4NJR6o1MyHreAxwFJSrXallcFlnhOu+zoFrtoB3vFgRbXamo8OUwIz04ELA7Mt8/Mg8xdShsRjAwzjKDoaGgx0IrbB2Cr8BHzGX99VxoC+nGtKUw7JakBIqqfNN0SU5Yg2uOnjXKClvyX76OCmIbBlDKj/x14hfyQXiJHSWOwFCf7KpFMbTyeXe1V/Rar+CvR69I2TP+PurErAOslrluqZwAwM9gYw6ZasjyyE0DQi28sffqRxqRjsX9+yilKiArOhmsEC5xpsJGdDkHK/aATlIe/9/HhYH3wLcJN2t76kjBQxakWPEtwZbBoZXUeECtw50zdDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pgs56V0y6wk7pNiDVMJiraQtZF1guaC5x57/8UpT9K8=; b=LBg7elV0um45ViP9A9Z+3mb7GbMgYtLvlccGTyF/K4PpYWQiSHhUmtq2kZTcNFnV1yllyGRss6fnjdl17oZ7Kdw6UML+JEutu+fu6Sj/fEJZv1IzY24UhK/3GX+0bavOxITMv6JcgeIMV+8v4iS5DKmi2xhj06loQDRRLK3OmQg= Authentication-Results: vmware.com; dkim=none (message not signed) header.d=none;vmware.com; dmarc=none action=none header.from=amd.com; Received: from MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) by MN2PR12MB4608.namprd12.prod.outlook.com (2603:10b6:208:fd::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.21; Thu, 27 May 2021 11:59:01 +0000 Received: from MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::6d4d:4674:1cf6:8d34]) by MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::6d4d:4674:1cf6:8d34%6]) with mapi id 15.20.4173.024; Thu, 27 May 2021 11:59:01 +0000 Subject: Re: [PATCH 2/7] dma-buf: Rename dma_resv helpers from _rcu to _unlocked (v2) To: Daniel Vetter References: <20210525211753.1086069-1-jason@jlekstrand.net> <20210525211753.1086069-3-jason@jlekstrand.net> <82e16239-e8ea-8b03-6a90-c7d18a5f8a91@amd.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: Date: Thu, 27 May 2021 13:58:54 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-Originating-IP: [2a02:908:1252:fb60:e531:3aa1:4782:878a] X-ClientProxiedBy: PR0P264CA0253.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100::25) To MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2a02:908:1252:fb60:e531:3aa1:4782:878a] (2a02:908:1252:fb60:e531:3aa1:4782:878a) by PR0P264CA0253.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.20 via Frontend Transport; Thu, 27 May 2021 11:58:58 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5ac3e7bc-9fb8-4d8b-1782-08d92106d0d9 X-MS-TrafficTypeDiagnostic: MN2PR12MB4608: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AS4VbE0vjIShk3jklXa9sTQ308WkYWsTjheIqnFmmn7RNxpFJNMvtdUBzT/AOaij83iMixkg6WURZKJ0s8h86WBQn9O0HpOmGvpynkUnICS8JFvAIKIn1mlgusCGCavG50sGqNhxoMHV6AWnvUGN/O/ilyqOwqOpjtMa+W5AB0Iyr/nr4bGTNNQxk7kB0CzEL0xqzaTqZytriCJf4aS+ih+U1bxh8j8dIkYE2+wTPjkLT0gAfmJJXrsDY/SqNSTuWj/b8/U8PK1/qGEzbccIjcc9VXCxSeIMWRQRaFxhVCmm9tdMVk7CizQca417sIim6tAFjyYDkYNfqWgkj2FDeFungb9UdSwNEUxJtJNQCTBuSxybv7WfwC8GhKg97UGwVEVBKh/DywFjCWwqKKQ1j1yM+FEFsoG2tYH0VvickBLDT7IGBFZcYtjDBlwVQU2vB0VVfxdPBhQ7fwPfMDLFIdtO43Fg+QCDgKwlZmjd2uuFUMZPeq4TRKuiAUOJlxNXPIp3ELdCawM3GmvHUJM/0cNrBi5Zes10HAOVunWilbKeTOYJoJYhAw9bn6eTKO+hSLGsb1uXJ2c2OM1ct8WnEEFCxyHRF/3e/Q3pMX2cb2GqRhoAO0qr53h0k6SF8+eBhbNcISumMurXp2cWCufivy3Z7rDgMa2uJapMEurouUYPQM58wb6xjg2YVw3X4aH+ X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR12MB3775.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(136003)(366004)(376002)(39860400002)(346002)(5660300002)(66476007)(6666004)(86362001)(66556008)(66946007)(6486002)(31686004)(2906002)(31696002)(66574015)(83380400001)(30864003)(2616005)(36756003)(52116002)(16526019)(8936002)(6916009)(7416002)(186003)(4326008)(478600001)(54906003)(38100700002)(316002)(8676002)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?TXdxN0dvdEUxVHp4bCs2VU9laFpyOCtJbllia3Y1dHhFd1BIK21Qbk5yOW9I?= =?utf-8?B?UjJGVjI4d1J3cG5TV0k2ZGRQNDVHR1A2ZENSMnRXT2IweHBVVWF2NjVnTVNR?= =?utf-8?B?eitXTVlSaVpHTzJEUm5ubHFWd3VuQnN2TnBqdFE0UmU2b0JpQ0tUKzB3ZzVk?= =?utf-8?B?NS9adUo0WTZFWTA4ZmNyZVlIRGZQQXU0dXBSU0k5Y08rV3UwNFVmbkhVYkJK?= =?utf-8?B?eDRTSzhyVG85S2l6ZnZMRVVBUDZQMDFmVnR2ckZuMVNJczZXa3NKL2wxN01Q?= =?utf-8?B?VU84dDdVTWNFMHdyV29nSS9mVExjT3l1RTFGaEduQ3lBekhrclBFNTZaWFg1?= =?utf-8?B?dXI3UHBRWUtldm1SaVg1WVRzeThJcEtaYXI0RjRhYm9oMXQzdnY4VVZPTTVr?= =?utf-8?B?ekNkM2xGMlAwRUU2Z3BjLzlRRGwwSXQyT1BUajRkT3hHcDhEc2ZtMm5KSHB3?= =?utf-8?B?UnBURTlPMDgyV1VYR0t0OWdMaWFMVGRrYmxDZ1NPTlJiWHFHNjhHcTJpUTBp?= =?utf-8?B?NXhsRXU2ekpQM1lDZVBGeE1pTTFHN2pJZmJKRXNZMHo0UHE5M0hvVElScm93?= =?utf-8?B?anQ4MEZpQlM0OHZrSFY3OWJ5am43MkVnV0hhL2xFRUNIa04wRVNiOGc4Z3lW?= =?utf-8?B?TC9aOE0zYm9lMC9aUTRzYXVBUGcvZ3V6Ym95ZXorUVFCWEtsRmY1TmRJRHds?= =?utf-8?B?Z25xck44ZG40dGZieVNiM01ybkFmVmRyZW1yaldmbTgvVXgvVE51NjYrRFRM?= =?utf-8?B?M0wzZ3FEME45TUhYWklHbUlxdEhyeFgxV1RUSWxpT0kyL1A3UW5OcUEvVFZu?= =?utf-8?B?R2xuZTk0RzRGL1pOck5zbHBlTGxuSTZxeGNBTXJxZ293RitaUEI3Rk82L3dO?= =?utf-8?B?NEN2RlVYRnhWcHp3cUZNTlVsQklPeU1iWlRnSjZHVXJBclhVRUZYUE90eElj?= =?utf-8?B?blBYRDdPQnlGbnF0dExGN1BmY21XV2psbDNGUHZicTRhV1R2UEZoaHduRWpz?= =?utf-8?B?SmVnaU83S0FtNkozOVBtZnFIM1ZCWmNGOXlmVGJRRHhyeUZvOCtuMnNzYkNR?= =?utf-8?B?YVJSM3FYaTFqaVltQURUN3djQjNKS001N01kczNQeGNjS09BYlRjd3dYZ0Fv?= =?utf-8?B?OXhya3ErZk9MYUMwK1lVQjZQUGFWWElGN2xoR0VHemtwT3k4T2ordTRtVHpn?= =?utf-8?B?Q2dWZVBEWWRaTTUzQXlvVFJZTzFidUJQNFJZUXNlSzRtMlQxTGN2bldNTkZO?= =?utf-8?B?YUoybTZCak5QS2ZFSG5Wdm9KWUluMkxnVU1YT00zTjBLMGpXL2lFN0tPcVdm?= =?utf-8?B?ODNxZWZLZWp3bDRnSHUvV1BwbDlrcmx3dmV4dTIxeHNleDc1dWYzR2F0SHV5?= =?utf-8?B?dUF2NnJ1eU1Pam1FTXdpdHJKditzbzQrWjIzN1NLM3paL0lRRU1rTjg3Wm1y?= =?utf-8?B?cHAxY2I0Z1YwVHpHNlQ4b0ZabjVUaHFMMXBvYTN5UkdBdk1ZbWJzeVVIZUVS?= =?utf-8?B?VTdKM0pSdjlsbi9IUzRoTThqN2pFaWhnYVdWTE5RVEhNbHBYVzJqZEErTU5O?= =?utf-8?B?V2NtS0ErZ2EzVWg3M2FtNHpSbXZqOFJrV3FIOTlxY0RidERXMlcwQ3l6eS9x?= =?utf-8?B?SVZnMUxoMmlPbE1UZy9FNEdaWFU0UXl1MmRXc0hYOEx6Q25TbTNUQWdvVm5U?= =?utf-8?B?Z1lvbk05dzNubEJJblRrYW5RRXR1cTkxaEx4RXhMT2p0UzBsa0xiY2JDNUpD?= =?utf-8?B?Y2h1NU9vNVBRMzAvbDFzUkdjdkthNExyU1g4Rm9BdjBpSkU2QW84aUdrT3dN?= =?utf-8?B?dUpRUHBFc1RnL0VJTHFyMis0UGZ2WkcvaytZMU5yQTc5NEhydTNtVWo2dm5N?= =?utf-8?Q?Z/G2x+WRAWtLa?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5ac3e7bc-9fb8-4d8b-1782-08d92106d0d9 X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3775.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 May 2021 11:59:00.9483 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +LzlqoV/UpI2qbJusplcVmDdE4hxttCsN9ry3nfjeHARMbVNbtylY7CeR53NuG2G X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4608 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann , Thomas Zimmermann , Daniel Vetter , intel-gfx@lists.freedesktop.org, Huang Rui , VMware Graphics , dri-devel@lists.freedesktop.org, Jason Ekstrand , Sean Paul Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Am 27.05.21 um 12:39 schrieb Daniel Vetter: > On Wed, May 26, 2021 at 12:57:40PM +0200, Christian König wrote: >> Am 25.05.21 um 23:17 schrieb Jason Ekstrand: >>> None of these helpers actually leak any RCU details to the caller. They >>> all assume you have a genuine reference, take the RCU read lock, and >>> retry if needed. Naming them with an _rcu is likely to cause callers >>> more panic than needed. >> I'm really wondering if we need this postfix in the first place. >> >> If we use the right rcu_dereference_check() macro then those functions can >> be called with both the reservation object locked and unlocked. It shouldn't >> matter to them. >> >> But getting rid of the _rcu postfix sounds like a good idea in general to >> me. > So does that count as an ack or not? If yes I think we should land this > patch right away, since it's going to conflict real fast badly. I had some follow up discussion with Jason and I would rather like to switch to using rcu_dereference_check() in all places and completely remove the _rcu postfix. But yes I see the pain of rebasing this as well. Christian. > -Daniel > >> Christian. >> >>> v2 (Jason Ekstrand): >>> - Fix function argument indentation >>> >>> Signed-off-by: Jason Ekstrand >>> Suggested-by: Daniel Vetter >>> Cc: Christian König >>> Cc: Maarten Lankhorst >>> Cc: Maxime Ripard >>> Cc: Thomas Zimmermann >>> Cc: Lucas Stach >>> Cc: Rob Clark >>> Cc: Sean Paul >>> Cc: Huang Rui >>> Cc: Gerd Hoffmann >>> Cc: VMware Graphics >>> --- >>> drivers/dma-buf/dma-buf.c | 4 +-- >>> drivers/dma-buf/dma-resv.c | 28 +++++++++---------- >>> drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 6 ++-- >>> drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 2 +- >>> drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 4 +-- >>> drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c | 6 ++-- >>> drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c | 4 +-- >>> drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 4 +-- >>> drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 6 ++-- >>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 14 +++++----- >>> .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 6 ++-- >>> drivers/gpu/drm/drm_gem.c | 10 +++---- >>> drivers/gpu/drm/drm_gem_atomic_helper.c | 2 +- >>> drivers/gpu/drm/etnaviv/etnaviv_gem.c | 7 ++--- >>> drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c | 8 +++--- >>> drivers/gpu/drm/i915/display/intel_display.c | 2 +- >>> drivers/gpu/drm/i915/dma_resv_utils.c | 2 +- >>> drivers/gpu/drm/i915/gem/i915_gem_busy.c | 2 +- >>> .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 2 +- >>> drivers/gpu/drm/i915/gem/i915_gem_object.h | 2 +- >>> drivers/gpu/drm/i915/gem/i915_gem_userptr.c | 4 +-- >>> drivers/gpu/drm/i915/gem/i915_gem_wait.c | 10 +++---- >>> drivers/gpu/drm/i915/i915_request.c | 6 ++-- >>> drivers/gpu/drm/i915/i915_sw_fence.c | 4 +-- >>> drivers/gpu/drm/msm/msm_gem.c | 3 +- >>> drivers/gpu/drm/nouveau/dispnv50/wndw.c | 2 +- >>> drivers/gpu/drm/nouveau/nouveau_gem.c | 4 +-- >>> drivers/gpu/drm/panfrost/panfrost_drv.c | 4 +-- >>> drivers/gpu/drm/panfrost/panfrost_job.c | 2 +- >>> drivers/gpu/drm/radeon/radeon_gem.c | 6 ++-- >>> drivers/gpu/drm/radeon/radeon_mn.c | 4 +-- >>> drivers/gpu/drm/ttm/ttm_bo.c | 18 ++++++------ >>> drivers/gpu/drm/vgem/vgem_fence.c | 4 +-- >>> drivers/gpu/drm/virtio/virtgpu_ioctl.c | 6 ++-- >>> drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 2 +- >>> include/linux/dma-resv.h | 18 ++++++------ >>> 36 files changed, 108 insertions(+), 110 deletions(-) >>> >>> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c >>> index f264b70c383eb..ed6451d55d663 100644 >>> --- a/drivers/dma-buf/dma-buf.c >>> +++ b/drivers/dma-buf/dma-buf.c >>> @@ -1147,8 +1147,8 @@ static int __dma_buf_begin_cpu_access(struct dma_buf *dmabuf, >>> long ret; >>> /* Wait on any implicit rendering fences */ >>> - ret = dma_resv_wait_timeout_rcu(resv, write, true, >>> - MAX_SCHEDULE_TIMEOUT); >>> + ret = dma_resv_wait_timeout_unlocked(resv, write, true, >>> + MAX_SCHEDULE_TIMEOUT); >>> if (ret < 0) >>> return ret; >>> diff --git a/drivers/dma-buf/dma-resv.c b/drivers/dma-buf/dma-resv.c >>> index 6ddbeb5dfbf65..d6f1ed4cd4d55 100644 >>> --- a/drivers/dma-buf/dma-resv.c >>> +++ b/drivers/dma-buf/dma-resv.c >>> @@ -417,7 +417,7 @@ int dma_resv_copy_fences(struct dma_resv *dst, struct dma_resv *src) >>> EXPORT_SYMBOL(dma_resv_copy_fences); >>> /** >>> - * dma_resv_get_fences_rcu - Get an object's shared and exclusive >>> + * dma_resv_get_fences_unlocked - Get an object's shared and exclusive >>> * fences without update side lock held >>> * @obj: the reservation object >>> * @pfence_excl: the returned exclusive fence (or NULL) >>> @@ -429,10 +429,10 @@ EXPORT_SYMBOL(dma_resv_copy_fences); >>> * exclusive fence is not specified the fence is put into the array of the >>> * shared fences as well. Returns either zero or -ENOMEM. >>> */ >>> -int dma_resv_get_fences_rcu(struct dma_resv *obj, >>> - struct dma_fence **pfence_excl, >>> - unsigned *pshared_count, >>> - struct dma_fence ***pshared) >>> +int dma_resv_get_fences_unlocked(struct dma_resv *obj, >>> + struct dma_fence **pfence_excl, >>> + unsigned *pshared_count, >>> + struct dma_fence ***pshared) >>> { >>> struct dma_fence **shared = NULL; >>> struct dma_fence *fence_excl; >>> @@ -515,10 +515,10 @@ int dma_resv_get_fences_rcu(struct dma_resv *obj, >>> *pshared = shared; >>> return ret; >>> } >>> -EXPORT_SYMBOL_GPL(dma_resv_get_fences_rcu); >>> +EXPORT_SYMBOL_GPL(dma_resv_get_fences_unlocked); >>> /** >>> - * dma_resv_wait_timeout_rcu - Wait on reservation's objects >>> + * dma_resv_wait_timeout_unlocked - Wait on reservation's objects >>> * shared and/or exclusive fences. >>> * @obj: the reservation object >>> * @wait_all: if true, wait on all fences, else wait on just exclusive fence >>> @@ -529,9 +529,9 @@ EXPORT_SYMBOL_GPL(dma_resv_get_fences_rcu); >>> * Returns -ERESTARTSYS if interrupted, 0 if the wait timed out, or >>> * greater than zer on success. >>> */ >>> -long dma_resv_wait_timeout_rcu(struct dma_resv *obj, >>> - bool wait_all, bool intr, >>> - unsigned long timeout) >>> +long dma_resv_wait_timeout_unlocked(struct dma_resv *obj, >>> + bool wait_all, bool intr, >>> + unsigned long timeout) >>> { >>> struct dma_fence *fence; >>> unsigned seq, shared_count; >>> @@ -602,7 +602,7 @@ long dma_resv_wait_timeout_rcu(struct dma_resv *obj, >>> rcu_read_unlock(); >>> goto retry; >>> } >>> -EXPORT_SYMBOL_GPL(dma_resv_wait_timeout_rcu); >>> +EXPORT_SYMBOL_GPL(dma_resv_wait_timeout_unlocked); >>> static inline int dma_resv_test_signaled_single(struct dma_fence *passed_fence) >>> @@ -622,7 +622,7 @@ static inline int dma_resv_test_signaled_single(struct dma_fence *passed_fence) >>> } >>> /** >>> - * dma_resv_test_signaled_rcu - Test if a reservation object's >>> + * dma_resv_test_signaled_unlocked - Test if a reservation object's >>> * fences have been signaled. >>> * @obj: the reservation object >>> * @test_all: if true, test all fences, otherwise only test the exclusive >>> @@ -631,7 +631,7 @@ static inline int dma_resv_test_signaled_single(struct dma_fence *passed_fence) >>> * RETURNS >>> * true if all fences signaled, else false >>> */ >>> -bool dma_resv_test_signaled_rcu(struct dma_resv *obj, bool test_all) >>> +bool dma_resv_test_signaled_unlocked(struct dma_resv *obj, bool test_all) >>> { >>> unsigned seq, shared_count; >>> int ret; >>> @@ -680,4 +680,4 @@ bool dma_resv_test_signaled_rcu(struct dma_resv *obj, bool test_all) >>> rcu_read_unlock(); >>> return ret; >>> } >>> -EXPORT_SYMBOL_GPL(dma_resv_test_signaled_rcu); >>> +EXPORT_SYMBOL_GPL(dma_resv_test_signaled_unlocked); >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c >>> index 8a1fb8b6606e5..b8e24f199be9a 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c >>> @@ -203,9 +203,9 @@ int amdgpu_display_crtc_page_flip_target(struct drm_crtc *crtc, >>> goto unpin; >>> } >>> - r = dma_resv_get_fences_rcu(new_abo->tbo.base.resv, &work->excl, >>> - &work->shared_count, >>> - &work->shared); >>> + r = dma_resv_get_fences_unlocked(new_abo->tbo.base.resv, &work->excl, >>> + &work->shared_count, >>> + &work->shared); >>> if (unlikely(r != 0)) { >>> DRM_ERROR("failed to get fences for buffer\n"); >>> goto unpin; >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c >>> index baa980a477d94..0d0319bc51577 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c >>> @@ -98,7 +98,7 @@ __dma_resv_make_exclusive(struct dma_resv *obj) >>> if (!dma_resv_get_list(obj)) /* no shared fences to convert */ >>> return 0; >>> - r = dma_resv_get_fences_rcu(obj, NULL, &count, &fences); >>> + r = dma_resv_get_fences_unlocked(obj, NULL, &count, &fences); >>> if (r) >>> return r; >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >>> index 18974bd081f00..8e2996d6ba3ad 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c >>> @@ -471,8 +471,8 @@ int amdgpu_gem_wait_idle_ioctl(struct drm_device *dev, void *data, >>> return -ENOENT; >>> } >>> robj = gem_to_amdgpu_bo(gobj); >>> - ret = dma_resv_wait_timeout_rcu(robj->tbo.base.resv, true, true, >>> - timeout); >>> + ret = dma_resv_wait_timeout_unlocked(robj->tbo.base.resv, true, true, >>> + timeout); >>> /* ret == 0 means not signaled, >>> * ret > 0 means signaled >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c >>> index b4971e90b98cf..38e1b32dd2cef 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c >>> @@ -112,7 +112,7 @@ void amdgpu_pasid_free_delayed(struct dma_resv *resv, >>> unsigned count; >>> int r; >>> - r = dma_resv_get_fences_rcu(resv, NULL, &count, &fences); >>> + r = dma_resv_get_fences_unlocked(resv, NULL, &count, &fences); >>> if (r) >>> goto fallback; >>> @@ -156,8 +156,8 @@ void amdgpu_pasid_free_delayed(struct dma_resv *resv, >>> /* Not enough memory for the delayed delete, as last resort >>> * block for all the fences to complete. >>> */ >>> - dma_resv_wait_timeout_rcu(resv, true, false, >>> - MAX_SCHEDULE_TIMEOUT); >>> + dma_resv_wait_timeout_unlocked(resv, true, false, >>> + MAX_SCHEDULE_TIMEOUT); >>> amdgpu_pasid_free(pasid); >>> } >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c >>> index 828b5167ff128..0319c8b547c48 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c >>> @@ -75,8 +75,8 @@ static bool amdgpu_mn_invalidate_gfx(struct mmu_interval_notifier *mni, >>> mmu_interval_set_seq(mni, cur_seq); >>> - r = dma_resv_wait_timeout_rcu(bo->tbo.base.resv, true, false, >>> - MAX_SCHEDULE_TIMEOUT); >>> + r = dma_resv_wait_timeout_unlocked(bo->tbo.base.resv, true, false, >>> + MAX_SCHEDULE_TIMEOUT); >>> mutex_unlock(&adev->notifier_lock); >>> if (r <= 0) >>> DRM_ERROR("(%ld) failed to wait for user bo\n", r); >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c >>> index 0adffcace3263..de1c7c5501683 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c >>> @@ -791,8 +791,8 @@ int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr) >>> return 0; >>> } >>> - r = dma_resv_wait_timeout_rcu(bo->tbo.base.resv, false, false, >>> - MAX_SCHEDULE_TIMEOUT); >>> + r = dma_resv_wait_timeout_unlocked(bo->tbo.base.resv, false, false, >>> + MAX_SCHEDULE_TIMEOUT); >>> if (r < 0) >>> return r; >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c >>> index c6dbc08016045..4a2196404fb69 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c >>> @@ -1115,9 +1115,9 @@ static int amdgpu_uvd_send_msg(struct amdgpu_ring *ring, struct amdgpu_bo *bo, >>> ib->length_dw = 16; >>> if (direct) { >>> - r = dma_resv_wait_timeout_rcu(bo->tbo.base.resv, >>> - true, false, >>> - msecs_to_jiffies(10)); >>> + r = dma_resv_wait_timeout_unlocked(bo->tbo.base.resv, >>> + true, false, >>> + msecs_to_jiffies(10)); >>> if (r == 0) >>> r = -ETIMEDOUT; >>> if (r < 0) >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c >>> index 4a3e3f72e1277..7ba1c537d6584 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c >>> @@ -2007,14 +2007,14 @@ static void amdgpu_vm_prt_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm) >>> unsigned i, shared_count; >>> int r; >>> - r = dma_resv_get_fences_rcu(resv, &excl, >>> - &shared_count, &shared); >>> + r = dma_resv_get_fences_unlocked(resv, &excl, >>> + &shared_count, &shared); >>> if (r) { >>> /* Not enough memory to grab the fence list, as last resort >>> * block for all the fences to complete. >>> */ >>> - dma_resv_wait_timeout_rcu(resv, true, false, >>> - MAX_SCHEDULE_TIMEOUT); >>> + dma_resv_wait_timeout_unlocked(resv, true, false, >>> + MAX_SCHEDULE_TIMEOUT); >>> return; >>> } >>> @@ -2625,7 +2625,7 @@ bool amdgpu_vm_evictable(struct amdgpu_bo *bo) >>> return true; >>> /* Don't evict VM page tables while they are busy */ >>> - if (!dma_resv_test_signaled_rcu(bo->tbo.base.resv, true)) >>> + if (!dma_resv_test_signaled_unlocked(bo->tbo.base.resv, true)) >>> return false; >>> /* Try to block ongoing updates */ >>> @@ -2805,8 +2805,8 @@ void amdgpu_vm_adjust_size(struct amdgpu_device *adev, uint32_t min_vm_size, >>> */ >>> long amdgpu_vm_wait_idle(struct amdgpu_vm *vm, long timeout) >>> { >>> - timeout = dma_resv_wait_timeout_rcu(vm->root.base.bo->tbo.base.resv, >>> - true, true, timeout); >>> + timeout = dma_resv_wait_timeout_unlocked(vm->root.base.bo->tbo.base.resv, >>> + true, true, timeout); >>> if (timeout <= 0) >>> return timeout; >>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >>> index 9ca517b658546..0121d2817fa26 100644 >>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >>> @@ -8276,9 +8276,9 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state, >>> * deadlock during GPU reset when this fence will not signal >>> * but we hold reservation lock for the BO. >>> */ >>> - r = dma_resv_wait_timeout_rcu(abo->tbo.base.resv, true, >>> - false, >>> - msecs_to_jiffies(5000)); >>> + r = dma_resv_wait_timeout_unlocked(abo->tbo.base.resv, true, >>> + false, >>> + msecs_to_jiffies(5000)); >>> if (unlikely(r <= 0)) >>> DRM_ERROR("Waiting for fences timed out!"); >>> diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c >>> index 9989425e9875a..1241a421b9e81 100644 >>> --- a/drivers/gpu/drm/drm_gem.c >>> +++ b/drivers/gpu/drm/drm_gem.c >>> @@ -770,8 +770,8 @@ long drm_gem_dma_resv_wait(struct drm_file *filep, u32 handle, >>> return -EINVAL; >>> } >>> - ret = dma_resv_wait_timeout_rcu(obj->resv, wait_all, >>> - true, timeout); >>> + ret = dma_resv_wait_timeout_unlocked(obj->resv, wait_all, >>> + true, timeout); >>> if (ret == 0) >>> ret = -ETIME; >>> else if (ret > 0) >>> @@ -1375,13 +1375,13 @@ int drm_gem_fence_array_add_implicit(struct xarray *fence_array, >>> if (!write) { >>> struct dma_fence *fence = >>> - dma_resv_get_excl_rcu(obj->resv); >>> + dma_resv_get_excl_unlocked(obj->resv); >>> return drm_gem_fence_array_add(fence_array, fence); >>> } >>> - ret = dma_resv_get_fences_rcu(obj->resv, NULL, >>> - &fence_count, &fences); >>> + ret = dma_resv_get_fences_unlocked(obj->resv, NULL, >>> + &fence_count, &fences); >>> if (ret || !fence_count) >>> return ret; >>> diff --git a/drivers/gpu/drm/drm_gem_atomic_helper.c b/drivers/gpu/drm/drm_gem_atomic_helper.c >>> index a005c5a0ba46a..a27135084ae5c 100644 >>> --- a/drivers/gpu/drm/drm_gem_atomic_helper.c >>> +++ b/drivers/gpu/drm/drm_gem_atomic_helper.c >>> @@ -147,7 +147,7 @@ int drm_gem_plane_helper_prepare_fb(struct drm_plane *plane, struct drm_plane_st >>> return 0; >>> obj = drm_gem_fb_get_obj(state->fb, 0); >>> - fence = dma_resv_get_excl_rcu(obj->resv); >>> + fence = dma_resv_get_excl_unlocked(obj->resv); >>> drm_atomic_set_fence_for_plane(state, fence); >>> return 0; >>> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnaviv/etnaviv_gem.c >>> index db69f19ab5bca..4e6f5346e84e4 100644 >>> --- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c >>> +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c >>> @@ -390,14 +390,13 @@ int etnaviv_gem_cpu_prep(struct drm_gem_object *obj, u32 op, >>> } >>> if (op & ETNA_PREP_NOSYNC) { >>> - if (!dma_resv_test_signaled_rcu(obj->resv, >>> - write)) >>> + if (!dma_resv_test_signaled_unlocked(obj->resv, write)) >>> return -EBUSY; >>> } else { >>> unsigned long remain = etnaviv_timeout_to_jiffies(timeout); >>> - ret = dma_resv_wait_timeout_rcu(obj->resv, >>> - write, true, remain); >>> + ret = dma_resv_wait_timeout_unlocked(obj->resv, >>> + write, true, remain); >>> if (ret <= 0) >>> return ret == 0 ? -ETIMEDOUT : ret; >>> } >>> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c >>> index d05c359945799..6617fada4595d 100644 >>> --- a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c >>> +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c >>> @@ -189,13 +189,13 @@ static int submit_fence_sync(struct etnaviv_gem_submit *submit) >>> continue; >>> if (bo->flags & ETNA_SUBMIT_BO_WRITE) { >>> - ret = dma_resv_get_fences_rcu(robj, &bo->excl, >>> - &bo->nr_shared, >>> - &bo->shared); >>> + ret = dma_resv_get_fences_unlocked(robj, &bo->excl, >>> + &bo->nr_shared, >>> + &bo->shared); >>> if (ret) >>> return ret; >>> } else { >>> - bo->excl = dma_resv_get_excl_rcu(robj); >>> + bo->excl = dma_resv_get_excl_unlocked(robj); >>> } >>> } >>> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c >>> index 422b59ebf6dce..5f0b85a102159 100644 >>> --- a/drivers/gpu/drm/i915/display/intel_display.c >>> +++ b/drivers/gpu/drm/i915/display/intel_display.c >>> @@ -11040,7 +11040,7 @@ intel_prepare_plane_fb(struct drm_plane *_plane, >>> if (ret < 0) >>> goto unpin_fb; >>> - fence = dma_resv_get_excl_rcu(obj->base.resv); >>> + fence = dma_resv_get_excl_unlocked(obj->base.resv); >>> if (fence) { >>> add_rps_boost_after_vblank(new_plane_state->hw.crtc, >>> fence); >>> diff --git a/drivers/gpu/drm/i915/dma_resv_utils.c b/drivers/gpu/drm/i915/dma_resv_utils.c >>> index 9e508e7d4629f..bdfc6bf16a4e9 100644 >>> --- a/drivers/gpu/drm/i915/dma_resv_utils.c >>> +++ b/drivers/gpu/drm/i915/dma_resv_utils.c >>> @@ -10,7 +10,7 @@ >>> void dma_resv_prune(struct dma_resv *resv) >>> { >>> if (dma_resv_trylock(resv)) { >>> - if (dma_resv_test_signaled_rcu(resv, true)) >>> + if (dma_resv_test_signaled_unlocked(resv, true)) >>> dma_resv_add_excl_fence(resv, NULL); >>> dma_resv_unlock(resv); >>> } >>> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_busy.c b/drivers/gpu/drm/i915/gem/i915_gem_busy.c >>> index 25235ef630c10..754ad6d1bace9 100644 >>> --- a/drivers/gpu/drm/i915/gem/i915_gem_busy.c >>> +++ b/drivers/gpu/drm/i915/gem/i915_gem_busy.c >>> @@ -105,7 +105,7 @@ i915_gem_busy_ioctl(struct drm_device *dev, void *data, >>> * Alternatively, we can trade that extra information on read/write >>> * activity with >>> * args->busy = >>> - * !dma_resv_test_signaled_rcu(obj->resv, true); >>> + * !dma_resv_test_signaled_unlocked(obj->resv, true); >>> * to report the overall busyness. This is what the wait-ioctl does. >>> * >>> */ >>> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c >>> index 297143511f99b..e8f323564e57b 100644 >>> --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c >>> +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c >>> @@ -1481,7 +1481,7 @@ static inline bool use_reloc_gpu(struct i915_vma *vma) >>> if (DBG_FORCE_RELOC) >>> return false; >>> - return !dma_resv_test_signaled_rcu(vma->resv, true); >>> + return !dma_resv_test_signaled_unlocked(vma->resv, true); >>> } >>> static unsigned long vma_phys_addr(struct i915_vma *vma, u32 offset) >>> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.h b/drivers/gpu/drm/i915/gem/i915_gem_object.h >>> index 2ebd79537aea9..7c0eb425cb3b3 100644 >>> --- a/drivers/gpu/drm/i915/gem/i915_gem_object.h >>> +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.h >>> @@ -500,7 +500,7 @@ i915_gem_object_last_write_engine(struct drm_i915_gem_object *obj) >>> struct dma_fence *fence; >>> rcu_read_lock(); >>> - fence = dma_resv_get_excl_rcu(obj->base.resv); >>> + fence = dma_resv_get_excl_unlocked(obj->base.resv); >>> rcu_read_unlock(); >>> if (fence && dma_fence_is_i915(fence) && !dma_fence_is_signaled(fence)) >>> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c >>> index a657b99ec7606..44df18dc9669f 100644 >>> --- a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c >>> +++ b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c >>> @@ -85,8 +85,8 @@ static bool i915_gem_userptr_invalidate(struct mmu_interval_notifier *mni, >>> return true; >>> /* we will unbind on next submission, still have userptr pins */ >>> - r = dma_resv_wait_timeout_rcu(obj->base.resv, true, false, >>> - MAX_SCHEDULE_TIMEOUT); >>> + r = dma_resv_wait_timeout_unlocked(obj->base.resv, true, false, >>> + MAX_SCHEDULE_TIMEOUT); >>> if (r <= 0) >>> drm_err(&i915->drm, "(%ld) failed to wait for idle\n", r); >>> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_wait.c b/drivers/gpu/drm/i915/gem/i915_gem_wait.c >>> index 4b9856d5ba14f..5b6c52659ad4d 100644 >>> --- a/drivers/gpu/drm/i915/gem/i915_gem_wait.c >>> +++ b/drivers/gpu/drm/i915/gem/i915_gem_wait.c >>> @@ -45,7 +45,7 @@ i915_gem_object_wait_reservation(struct dma_resv *resv, >>> unsigned int count, i; >>> int ret; >>> - ret = dma_resv_get_fences_rcu(resv, &excl, &count, &shared); >>> + ret = dma_resv_get_fences_unlocked(resv, &excl, &count, &shared); >>> if (ret) >>> return ret; >>> @@ -73,7 +73,7 @@ i915_gem_object_wait_reservation(struct dma_resv *resv, >>> */ >>> prune_fences = count && timeout >= 0; >>> } else { >>> - excl = dma_resv_get_excl_rcu(resv); >>> + excl = dma_resv_get_excl_unlocked(resv); >>> } >>> if (excl && timeout >= 0) >>> @@ -158,8 +158,8 @@ i915_gem_object_wait_priority(struct drm_i915_gem_object *obj, >>> unsigned int count, i; >>> int ret; >>> - ret = dma_resv_get_fences_rcu(obj->base.resv, >>> - &excl, &count, &shared); >>> + ret = dma_resv_get_fences_unlocked(obj->base.resv, >>> + &excl, &count, &shared); >>> if (ret) >>> return ret; >>> @@ -170,7 +170,7 @@ i915_gem_object_wait_priority(struct drm_i915_gem_object *obj, >>> kfree(shared); >>> } else { >>> - excl = dma_resv_get_excl_rcu(obj->base.resv); >>> + excl = dma_resv_get_excl_unlocked(obj->base.resv); >>> } >>> if (excl) { >>> diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c >>> index 970d8f4986bbe..f1ed03ced7dd1 100644 >>> --- a/drivers/gpu/drm/i915/i915_request.c >>> +++ b/drivers/gpu/drm/i915/i915_request.c >>> @@ -1594,8 +1594,8 @@ i915_request_await_object(struct i915_request *to, >>> struct dma_fence **shared; >>> unsigned int count, i; >>> - ret = dma_resv_get_fences_rcu(obj->base.resv, >>> - &excl, &count, &shared); >>> + ret = dma_resv_get_fences_unlocked(obj->base.resv, >>> + &excl, &count, &shared); >>> if (ret) >>> return ret; >>> @@ -1611,7 +1611,7 @@ i915_request_await_object(struct i915_request *to, >>> dma_fence_put(shared[i]); >>> kfree(shared); >>> } else { >>> - excl = dma_resv_get_excl_rcu(obj->base.resv); >>> + excl = dma_resv_get_excl_unlocked(obj->base.resv); >>> } >>> if (excl) { >>> diff --git a/drivers/gpu/drm/i915/i915_sw_fence.c b/drivers/gpu/drm/i915/i915_sw_fence.c >>> index 2744558f30507..0bcb7ea44201e 100644 >>> --- a/drivers/gpu/drm/i915/i915_sw_fence.c >>> +++ b/drivers/gpu/drm/i915/i915_sw_fence.c >>> @@ -582,7 +582,7 @@ int i915_sw_fence_await_reservation(struct i915_sw_fence *fence, >>> struct dma_fence **shared; >>> unsigned int count, i; >>> - ret = dma_resv_get_fences_rcu(resv, &excl, &count, &shared); >>> + ret = dma_resv_get_fences_unlocked(resv, &excl, &count, &shared); >>> if (ret) >>> return ret; >>> @@ -606,7 +606,7 @@ int i915_sw_fence_await_reservation(struct i915_sw_fence *fence, >>> dma_fence_put(shared[i]); >>> kfree(shared); >>> } else { >>> - excl = dma_resv_get_excl_rcu(resv); >>> + excl = dma_resv_get_excl_unlocked(resv); >>> } >>> if (ret >= 0 && excl && excl->ops != exclude) { >>> diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c >>> index 56df86e5f7400..1aca60507bb14 100644 >>> --- a/drivers/gpu/drm/msm/msm_gem.c >>> +++ b/drivers/gpu/drm/msm/msm_gem.c >>> @@ -915,8 +915,7 @@ int msm_gem_cpu_prep(struct drm_gem_object *obj, uint32_t op, ktime_t *timeout) >>> op & MSM_PREP_NOSYNC ? 0 : timeout_to_jiffies(timeout); >>> long ret; >>> - ret = dma_resv_wait_timeout_rcu(obj->resv, write, >>> - true, remain); >>> + ret = dma_resv_wait_timeout_unlocked(obj->resv, write, true, remain); >>> if (ret == 0) >>> return remain == 0 ? -EBUSY : -ETIMEDOUT; >>> else if (ret < 0) >>> diff --git a/drivers/gpu/drm/nouveau/dispnv50/wndw.c b/drivers/gpu/drm/nouveau/dispnv50/wndw.c >>> index 0cb1f9d848d3e..8d048bacd6f02 100644 >>> --- a/drivers/gpu/drm/nouveau/dispnv50/wndw.c >>> +++ b/drivers/gpu/drm/nouveau/dispnv50/wndw.c >>> @@ -561,7 +561,7 @@ nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state *state) >>> asyw->image.handle[0] = ctxdma->object.handle; >>> } >>> - asyw->state.fence = dma_resv_get_excl_rcu(nvbo->bo.base.resv); >>> + asyw->state.fence = dma_resv_get_excl_unlocked(nvbo->bo.base.resv); >>> asyw->image.offset[0] = nvbo->offset; >>> if (wndw->func->prepare) { >>> diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c >>> index a70e82413fa75..bc6b09ee9b552 100644 >>> --- a/drivers/gpu/drm/nouveau/nouveau_gem.c >>> +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c >>> @@ -928,8 +928,8 @@ nouveau_gem_ioctl_cpu_prep(struct drm_device *dev, void *data, >>> return -ENOENT; >>> nvbo = nouveau_gem_object(gem); >>> - lret = dma_resv_wait_timeout_rcu(nvbo->bo.base.resv, write, true, >>> - no_wait ? 0 : 30 * HZ); >>> + lret = dma_resv_wait_timeout_unlocked(nvbo->bo.base.resv, write, true, >>> + no_wait ? 0 : 30 * HZ); >>> if (!lret) >>> ret = -EBUSY; >>> else if (lret > 0) >>> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c >>> index ca07098a61419..eef5b632ee0ce 100644 >>> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c >>> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c >>> @@ -311,8 +311,8 @@ panfrost_ioctl_wait_bo(struct drm_device *dev, void *data, >>> if (!gem_obj) >>> return -ENOENT; >>> - ret = dma_resv_wait_timeout_rcu(gem_obj->resv, true, >>> - true, timeout); >>> + ret = dma_resv_wait_timeout_unlocked(gem_obj->resv, true, >>> + true, timeout); >>> if (!ret) >>> ret = timeout ? -ETIMEDOUT : -EBUSY; >>> diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c b/drivers/gpu/drm/panfrost/panfrost_job.c >>> index 6003cfeb13221..2df3e999a38d0 100644 >>> --- a/drivers/gpu/drm/panfrost/panfrost_job.c >>> +++ b/drivers/gpu/drm/panfrost/panfrost_job.c >>> @@ -203,7 +203,7 @@ static void panfrost_acquire_object_fences(struct drm_gem_object **bos, >>> int i; >>> for (i = 0; i < bo_count; i++) >>> - implicit_fences[i] = dma_resv_get_excl_rcu(bos[i]->resv); >>> + implicit_fences[i] = dma_resv_get_excl_unlocked(bos[i]->resv); >>> } >>> static void panfrost_attach_object_fences(struct drm_gem_object **bos, >>> diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c >>> index 05ea2f39f6261..1a38b0bf36d11 100644 >>> --- a/drivers/gpu/drm/radeon/radeon_gem.c >>> +++ b/drivers/gpu/drm/radeon/radeon_gem.c >>> @@ -125,7 +125,7 @@ static int radeon_gem_set_domain(struct drm_gem_object *gobj, >>> } >>> if (domain == RADEON_GEM_DOMAIN_CPU) { >>> /* Asking for cpu access wait for object idle */ >>> - r = dma_resv_wait_timeout_rcu(robj->tbo.base.resv, true, true, 30 * HZ); >>> + r = dma_resv_wait_timeout_unlocked(robj->tbo.base.resv, true, true, 30 * HZ); >>> if (!r) >>> r = -EBUSY; >>> @@ -474,7 +474,7 @@ int radeon_gem_busy_ioctl(struct drm_device *dev, void *data, >>> } >>> robj = gem_to_radeon_bo(gobj); >>> - r = dma_resv_test_signaled_rcu(robj->tbo.base.resv, true); >>> + r = dma_resv_test_signaled_unlocked(robj->tbo.base.resv, true); >>> if (r == 0) >>> r = -EBUSY; >>> else >>> @@ -503,7 +503,7 @@ int radeon_gem_wait_idle_ioctl(struct drm_device *dev, void *data, >>> } >>> robj = gem_to_radeon_bo(gobj); >>> - ret = dma_resv_wait_timeout_rcu(robj->tbo.base.resv, true, true, 30 * HZ); >>> + ret = dma_resv_wait_timeout_unlocked(robj->tbo.base.resv, true, true, 30 * HZ); >>> if (ret == 0) >>> r = -EBUSY; >>> else if (ret < 0) >>> diff --git a/drivers/gpu/drm/radeon/radeon_mn.c b/drivers/gpu/drm/radeon/radeon_mn.c >>> index e37c9a57a7c36..a19be3f8a218c 100644 >>> --- a/drivers/gpu/drm/radeon/radeon_mn.c >>> +++ b/drivers/gpu/drm/radeon/radeon_mn.c >>> @@ -66,8 +66,8 @@ static bool radeon_mn_invalidate(struct mmu_interval_notifier *mn, >>> return true; >>> } >>> - r = dma_resv_wait_timeout_rcu(bo->tbo.base.resv, true, false, >>> - MAX_SCHEDULE_TIMEOUT); >>> + r = dma_resv_wait_timeout_unlocked(bo->tbo.base.resv, true, false, >>> + MAX_SCHEDULE_TIMEOUT); >>> if (r <= 0) >>> DRM_ERROR("(%ld) failed to wait for user bo\n", r); >>> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c >>> index ca1b098b6a561..215cad3149621 100644 >>> --- a/drivers/gpu/drm/ttm/ttm_bo.c >>> +++ b/drivers/gpu/drm/ttm/ttm_bo.c >>> @@ -294,7 +294,7 @@ static int ttm_bo_cleanup_refs(struct ttm_buffer_object *bo, >>> struct dma_resv *resv = &bo->base._resv; >>> int ret; >>> - if (dma_resv_test_signaled_rcu(resv, true)) >>> + if (dma_resv_test_signaled_unlocked(resv, true)) >>> ret = 0; >>> else >>> ret = -EBUSY; >>> @@ -306,8 +306,8 @@ static int ttm_bo_cleanup_refs(struct ttm_buffer_object *bo, >>> dma_resv_unlock(bo->base.resv); >>> spin_unlock(&bo->bdev->lru_lock); >>> - lret = dma_resv_wait_timeout_rcu(resv, true, interruptible, >>> - 30 * HZ); >>> + lret = dma_resv_wait_timeout_unlocked(resv, true, interruptible, >>> + 30 * HZ); >>> if (lret < 0) >>> return lret; >>> @@ -409,8 +409,8 @@ static void ttm_bo_release(struct kref *kref) >>> /* Last resort, if we fail to allocate memory for the >>> * fences block for the BO to become idle >>> */ >>> - dma_resv_wait_timeout_rcu(bo->base.resv, true, false, >>> - 30 * HZ); >>> + dma_resv_wait_timeout_unlocked(bo->base.resv, true, false, >>> + 30 * HZ); >>> } >>> if (bo->bdev->funcs->release_notify) >>> @@ -420,7 +420,7 @@ static void ttm_bo_release(struct kref *kref) >>> ttm_mem_io_free(bdev, &bo->mem); >>> } >>> - if (!dma_resv_test_signaled_rcu(bo->base.resv, true) || >>> + if (!dma_resv_test_signaled_unlocked(bo->base.resv, true) || >>> !dma_resv_trylock(bo->base.resv)) { >>> /* The BO is not idle, resurrect it for delayed destroy */ >>> ttm_bo_flush_all_fences(bo); >>> @@ -1116,14 +1116,14 @@ int ttm_bo_wait(struct ttm_buffer_object *bo, >>> long timeout = 15 * HZ; >>> if (no_wait) { >>> - if (dma_resv_test_signaled_rcu(bo->base.resv, true)) >>> + if (dma_resv_test_signaled_unlocked(bo->base.resv, true)) >>> return 0; >>> else >>> return -EBUSY; >>> } >>> - timeout = dma_resv_wait_timeout_rcu(bo->base.resv, true, >>> - interruptible, timeout); >>> + timeout = dma_resv_wait_timeout_unlocked(bo->base.resv, true, >>> + interruptible, timeout); >>> if (timeout < 0) >>> return timeout; >>> diff --git a/drivers/gpu/drm/vgem/vgem_fence.c b/drivers/gpu/drm/vgem/vgem_fence.c >>> index 2902dc6e64faf..010a82405e374 100644 >>> --- a/drivers/gpu/drm/vgem/vgem_fence.c >>> +++ b/drivers/gpu/drm/vgem/vgem_fence.c >>> @@ -151,8 +151,8 @@ int vgem_fence_attach_ioctl(struct drm_device *dev, >>> /* Check for a conflicting fence */ >>> resv = obj->resv; >>> - if (!dma_resv_test_signaled_rcu(resv, >>> - arg->flags & VGEM_FENCE_WRITE)) { >>> + if (!dma_resv_test_signaled_unlocked(resv, >>> + arg->flags & VGEM_FENCE_WRITE)) { >>> ret = -EBUSY; >>> goto err_fence; >>> } >>> diff --git a/drivers/gpu/drm/virtio/virtgpu_ioctl.c b/drivers/gpu/drm/virtio/virtgpu_ioctl.c >>> index 669f2ee395154..ab010c8e32816 100644 >>> --- a/drivers/gpu/drm/virtio/virtgpu_ioctl.c >>> +++ b/drivers/gpu/drm/virtio/virtgpu_ioctl.c >>> @@ -451,10 +451,10 @@ static int virtio_gpu_wait_ioctl(struct drm_device *dev, void *data, >>> return -ENOENT; >>> if (args->flags & VIRTGPU_WAIT_NOWAIT) { >>> - ret = dma_resv_test_signaled_rcu(obj->resv, true); >>> + ret = dma_resv_test_signaled_unlocked(obj->resv, true); >>> } else { >>> - ret = dma_resv_wait_timeout_rcu(obj->resv, true, true, >>> - timeout); >>> + ret = dma_resv_wait_timeout_unlocked(obj->resv, true, true, >>> + timeout); >>> } >>> if (ret == 0) >>> ret = -EBUSY; >>> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c >>> index 04dd49c4c2572..19e1ce23842a9 100644 >>> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c >>> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c >>> @@ -743,7 +743,7 @@ static int vmw_user_bo_synccpu_grab(struct vmw_user_buffer_object *user_bo, >>> if (flags & drm_vmw_synccpu_allow_cs) { >>> long lret; >>> - lret = dma_resv_wait_timeout_rcu >>> + lret = dma_resv_wait_timeout_unlocked >>> (bo->base.resv, true, true, >>> nonblock ? 0 : MAX_SCHEDULE_TIMEOUT); >>> if (!lret) >>> diff --git a/include/linux/dma-resv.h b/include/linux/dma-resv.h >>> index d44a77e8a7e34..99cfb7af966b8 100644 >>> --- a/include/linux/dma-resv.h >>> +++ b/include/linux/dma-resv.h >>> @@ -246,7 +246,7 @@ dma_resv_get_excl(struct dma_resv *obj) >>> } >>> /** >>> - * dma_resv_get_excl_rcu - get the reservation object's >>> + * dma_resv_get_excl_unlocked - get the reservation object's >>> * exclusive fence, without lock held. >>> * @obj: the reservation object >>> * >>> @@ -257,7 +257,7 @@ dma_resv_get_excl(struct dma_resv *obj) >>> * The exclusive fence or NULL if none >>> */ >>> static inline struct dma_fence * >>> -dma_resv_get_excl_rcu(struct dma_resv *obj) >>> +dma_resv_get_excl_unlocked(struct dma_resv *obj) >>> { >>> struct dma_fence *fence; >>> @@ -278,16 +278,16 @@ void dma_resv_add_shared_fence(struct dma_resv *obj, struct dma_fence *fence); >>> void dma_resv_add_excl_fence(struct dma_resv *obj, struct dma_fence *fence); >>> -int dma_resv_get_fences_rcu(struct dma_resv *obj, >>> - struct dma_fence **pfence_excl, >>> - unsigned *pshared_count, >>> - struct dma_fence ***pshared); >>> +int dma_resv_get_fences_unlocked(struct dma_resv *obj, >>> + struct dma_fence **pfence_excl, >>> + unsigned *pshared_count, >>> + struct dma_fence ***pshared); >>> int dma_resv_copy_fences(struct dma_resv *dst, struct dma_resv *src); >>> -long dma_resv_wait_timeout_rcu(struct dma_resv *obj, bool wait_all, bool intr, >>> - unsigned long timeout); >>> +long dma_resv_wait_timeout_unlocked(struct dma_resv *obj, bool wait_all, bool intr, >>> + unsigned long timeout); >>> -bool dma_resv_test_signaled_rcu(struct dma_resv *obj, bool test_all); >>> +bool dma_resv_test_signaled_unlocked(struct dma_resv *obj, bool test_all); >>> #endif /* _LINUX_RESERVATION_H */