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.1 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, 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 76FD6C47088 for ; Wed, 26 May 2021 10:57:53 +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 3C3496109E for ; Wed, 26 May 2021 10:57:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3C3496109E 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 590EB6EC78; Wed, 26 May 2021 10:57:51 +0000 (UTC) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2085.outbound.protection.outlook.com [40.107.220.85]) by gabe.freedesktop.org (Postfix) with ESMTPS id EF5746EC77; Wed, 26 May 2021 10:57:49 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D6UaDl6TQUW6mcs5Snfboa+G4cPnYx5soocc8SDfssjmYzMoDjjMHyuN8uuJYRk9a3C74VMBuWe6oJ6SEOFmpBo4nif+RJ5cJJELrxMEIayUoLa9P/64gYUtABKew1Ttnp7Kk7KX51M0j3z7Z3gIg+KytfrRS0t77nQN6nlK9BLGktVNIseayGC2k40TggPqq4qGjZFYimLDktoZzEIr2zwrJW3OE0BwhYa866lX3RozWVGyZc9A9Rv7VeZKj6QcoXRgfpd0mepwLmxVBczb6wdN3hQ2CUxq/vqJDNnqnZEOf20gd3vsB8AdNdGXSwfoZqwIOfaTJlNPSGcZLTDDRA== 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=6PD0y0mcVt5S9xEM5Cm9cqZQutG1/6PDl98KMRZeI/c=; b=XxImacR/AIHESO0914XG0g4yFWEx6yy5cYulRVdvtnLH7Meyt5kjMasx43d0X3vd3LbwyxKM8mKAMMzS6nRodi420fv5twHYUxUQEvXZdXK1JfkFWBMcwEA7xRu3Gm49hWJMjySRhkeFxxqbK4nDEd7cL/l9Vcjlm/4ec0iY2Qw0ocOxD48y7kSvNZcRPMNDTgw9Uj63UHqGY2nrnYiiDXcMkQClawPJ0vl7iMUbEWwUwqy33AqF64N8BDXUKkdFanX4NKv4Dl+Wr0IpJimyBG5ePtkxQY7QFdoqW3u1DPhsrRrgGe+JOwhrgiM7A6F5vvvQrdsxz9yrtZgN3jAcWw== 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=6PD0y0mcVt5S9xEM5Cm9cqZQutG1/6PDl98KMRZeI/c=; b=XAeAxp5iz21lo4M1uBwOFVW8w0zel47QNRn3jfzlyXGIOodPFn2454V7LTkAPrDB5hifb3dlbeJfXUcHD+uzXqGydvO/tCKqTI2QXLU6PM5WPZygvLEEjoCFUv0MhvmjMnw/RTg3bkoevTKx4GaFcMP3l2MS1KoTLt0exbBb2+M= 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 BL0PR12MB2483.namprd12.prod.outlook.com (2603:10b6:207:4c::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.25; Wed, 26 May 2021 10:57:45 +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.4150.027; Wed, 26 May 2021 10:57:45 +0000 To: Jason Ekstrand , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org References: <20210525211753.1086069-1-jason@jlekstrand.net> <20210525211753.1086069-3-jason@jlekstrand.net> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <82e16239-e8ea-8b03-6a90-c7d18a5f8a91@amd.com> Date: Wed, 26 May 2021 12:57:40 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 In-Reply-To: <20210525211753.1086069-3-jason@jlekstrand.net> Content-Language: en-US X-Originating-IP: [2a02:908:1252:fb60:7216:94bf:3812:bd88] X-ClientProxiedBy: AM4PR0101CA0068.eurprd01.prod.exchangelabs.com (2603:10a6:200:41::36) 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:7216:94bf:3812:bd88] (2a02:908:1252:fb60:7216:94bf:3812:bd88) by AM4PR0101CA0068.eurprd01.prod.exchangelabs.com (2603:10a6:200:41::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.20 via Frontend Transport; Wed, 26 May 2021 10:57:43 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c5570215-f867-4ff8-17f2-08d9203517ba X-MS-TrafficTypeDiagnostic: BL0PR12MB2483: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:741; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: X2aYRBSkrJZpeVNPgnJ0bokx1ZaMJbRPQY8rk2j/B1twd0DCq4AH4uMEm2PQ4agP9yRjNbvyxF0NW4pSYLL7+Nnwfb55+c7AxlZGe7qNq/YztC+61raAyhmJpwtN2/kH7d999oIAqW+FfTQHf6REVDIU+YZ0/hO73X1ckyVc2ZiVj1/8BTH8rfBnPoarEdjUf1pSerI06wnEgc15VexYzgUyJAdx8O7tVEdZOclKCpFNQAiCx/G0HTS0Mc5fYPYhk99bzJQWGdF9XsOhir8G41dnyDsdK7TzvRIH0eups6D8zatQ3cAOYRAYBd2HZGZDSJni0AhqU9kxMUis6hjS5CLacyH8n4LqYaIfcTukTM5Wx99P143rIfOLdWQLoz1pR4Bh9IcWfwE56gUYzKmJ/Kvg6b5rafyL+/73s7rj6pzL7D7QzY4XZYOu3cvAoFb/gExK24wbRH0ebX3n9J+TRFfmVCrMwUk5Ogxoe0ZjKG4qfUtlas/ALc4NbllFA73+TRNlOqpjBrHRS/NUKVDDRtar/4Ffez0248cqe1Qxk6HDnl+M4Abj+cdgsAwCkz4pSjKE4jI0zSWbxCiHy9NS2rM0paBTMOQsWpwyfDcaMch5QCg8fdtP74O6abP9NcVQV0mRbLHR2weKGjH2dQrSXcdaJu/+lmslb0MajmK6o6k= 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)(376002)(136003)(396003)(366004)(346002)(39860400002)(2906002)(6486002)(31696002)(54906003)(30864003)(5660300002)(7416002)(86362001)(66556008)(66476007)(31686004)(2616005)(478600001)(83380400001)(8676002)(66574015)(186003)(316002)(38100700002)(8936002)(52116002)(16526019)(4326008)(66946007)(36756003)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?ZHdsQVh4VjBLZ1VkdmR5ZVBGc2Q5U2NvNFl3cTkzOS91U25NTGExcHQ0cnBJ?= =?utf-8?B?WEN1K2dDdEtwRXJJUU56T2hlL1JBOXV5MEd5OWExL1IwSlJzYkUxdllPb3V4?= =?utf-8?B?UGVIaEJEN0IvU3BiYTlXYTJOSzhNMDdMWTVTWDR0bXFaMUloMWYzRkhKWko2?= =?utf-8?B?TFNFV2dFbGpnV2NGV0k4ZnU4MDB3UEpqM0FQSDllQWVXRmQrL20vVktqK2hJ?= =?utf-8?B?bWJZd0E2a2g1aE8zTzkvOGhUbXhEMVJEQmRIaEI4OVJFTlhNNmpFaWlZRjJo?= =?utf-8?B?ZmNZc3o0YTFCTURVREdRc0pYcWR4Q1k1M2tqNVZGZ2JTd1UwWjh1UnNLRXhu?= =?utf-8?B?V0w2YnJxVHppNWhnOFdIN3lSZlk1MldvYzI5eDBtSGt1dE9HTXJDeU5KYThl?= =?utf-8?B?MjF4anQ5dlQzWnk1ZkNMV0F0NGh1MTVzYURsTUJPa2lxQ0pnNzF0aTFiM1Zw?= =?utf-8?B?eEkyekFxNVJsYTJnZ1pXTi9YeFFPekg4cFh6NUJUVWVFc2REc2F1dFhILzRP?= =?utf-8?B?bldkQXJodFZvVmlaN1hYZ29PZTExN0FhVVVZS3pqdXROL0hWNTdHRERWa2ZW?= =?utf-8?B?TE5EUEFYeWlHRjRjTFp2Y09xc0JqWDk3NGJpVkFlOFRnR0hhVFJ5bXZUc0pP?= =?utf-8?B?bjFVNmtDVnZBRHlPTDB0RDgyQUw4eEJ6aUt4QWZTbEx0S0NrSFFIckQ4TjdN?= =?utf-8?B?eXUxOWpxdmh6OUVPUWFwVUdWRnk2RmNWY3pic2lrRUVRMFovSmZ2dU9NN0V2?= =?utf-8?B?MHNHYktOTU5qa01oSXorVlk1OXpRZ3lGQ3k2S1JuQ0ZGQlh1aGFJaUJnY0oz?= =?utf-8?B?N2g4NGoxbWxFU2p4NjBzMDd0dTF3WDJjQmovVmYwNklqSDhrTWdhcjZjeG4y?= =?utf-8?B?UVNFVktmN3ZsN3YwanpieG0vTS9ieVNZTlgxS05oZTNjdGx1bjRyeHlGRUpo?= =?utf-8?B?RmxwejR5OUNnZldlblB6S0FIaUhxRVZjbjdTVUFWMTFCM3lJYTMrMFp6WEpu?= =?utf-8?B?ZzNsVzZPYU5ESGI3aEp3d01WYytWNW1PcDJESGRzZUI3cjRRSnh6SzZLSlEr?= =?utf-8?B?aFlXOFlSTzRPV0dycEhWSmN5RGdOMHc0dU9qQXZ0cTNXSU14ZkFUSzEzQ1kz?= =?utf-8?B?aXlQU0FKazVMOWpYa0U3TGlvWStUM0ZNaTZFa21OaXJOQllkRko1OFMvV0pP?= =?utf-8?B?SUFOTGNQQ2QxM3p1aVBPTU95ZnU0QmtuOGRBa2ZLRkJ6TWh3ZmZMWjJyV1hs?= =?utf-8?B?NFkrWUx6alN0THlFbVYvNEplekVNd0l0d3NXSm5qSWlnYnQrUG1oMWY5UUly?= =?utf-8?B?VE1IcE5MWVR5T1NlUVFxSnNMcTVmdE5iN3d3WXByNmh6Yyswamt2c2c4K0xS?= =?utf-8?B?VlFHSXgwZFlzTHE1bTRsNDZYOUMvdUg1b2lqTytEa0VoNEQ5RTlSeWswWHAz?= =?utf-8?B?aW9DT2ZtblBoaldLQVZxcHBEdmtXMEVUb3ZZczkvWS84TExUSjVyUGJXaFJ6?= =?utf-8?B?bWRWWEo4RTJzNHpqeFhVS2RsV3k2VnJvdjFkR3J5bitYOWZzdGxWcStGdnNY?= =?utf-8?B?Q0xpcGNFRitlL3dIOEloZmtIbzJZRUtSSkFYa3pRSEVxNDZvODRLcXRTa0lX?= =?utf-8?B?TkNsWDJpK044dzFHRkNjeEZ3R29Cbm1EUUZCTXo4QUFBVU96RGluTFBVQmx0?= =?utf-8?B?YjdCbWovakZhMGZKRTZBTkwvcGdFZEZFNjgycWtCa2hTb3hzTG1NZ3pYbURO?= =?utf-8?B?T2NObnlsdit4dGN0QWZaWmhlQmxKREY2ZEtVOUh0MjcxYlNJcFB3UGpXWFVp?= =?utf-8?B?aEIwRTJ5ZjJ0M2VTblJmZWtNR0ltQysyWkxFKzdBSThhZ3hRb1FQWWM0ZGVK?= =?utf-8?Q?9ByKZvNVs9FHY?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5570215-f867-4ff8-17f2-08d9203517ba X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3775.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2021 10:57:45.7270 (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: TzGyZPHqd3cCT978LisvGKMH+oG6QHTH24+YIJFK1TqIhwnaIODlHRCr9CT7xRq2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB2483 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: Daniel Vetter , Maxime Ripard , Huang Rui , VMware Graphics , Gerd Hoffmann , Thomas Zimmermann , 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" QW0gMjUuMDUuMjEgdW0gMjM6MTcgc2NocmllYiBKYXNvbiBFa3N0cmFuZDoKPiBOb25lIG9mIHRo ZXNlIGhlbHBlcnMgYWN0dWFsbHkgbGVhayBhbnkgUkNVIGRldGFpbHMgdG8gdGhlIGNhbGxlci4g IFRoZXkKPiBhbGwgYXNzdW1lIHlvdSBoYXZlIGEgZ2VudWluZSByZWZlcmVuY2UsIHRha2UgdGhl IFJDVSByZWFkIGxvY2ssIGFuZAo+IHJldHJ5IGlmIG5lZWRlZC4gIE5hbWluZyB0aGVtIHdpdGgg YW4gX3JjdSBpcyBsaWtlbHkgdG8gY2F1c2UgY2FsbGVycwo+IG1vcmUgcGFuaWMgdGhhbiBuZWVk ZWQuCgpJJ20gcmVhbGx5IHdvbmRlcmluZyBpZiB3ZSBuZWVkIHRoaXMgcG9zdGZpeCBpbiB0aGUg Zmlyc3QgcGxhY2UuCgpJZiB3ZSB1c2UgdGhlIHJpZ2h0IHJjdV9kZXJlZmVyZW5jZV9jaGVjaygp IG1hY3JvIHRoZW4gdGhvc2UgZnVuY3Rpb25zIApjYW4gYmUgY2FsbGVkIHdpdGggYm90aCB0aGUg cmVzZXJ2YXRpb24gb2JqZWN0IGxvY2tlZCBhbmQgdW5sb2NrZWQuIEl0IApzaG91bGRuJ3QgbWF0 dGVyIHRvIHRoZW0uCgpCdXQgZ2V0dGluZyByaWQgb2YgdGhlIF9yY3UgcG9zdGZpeCBzb3VuZHMg bGlrZSBhIGdvb2QgaWRlYSBpbiBnZW5lcmFsIAp0byBtZS4KCkNocmlzdGlhbi4KCj4KPiB2MiAo SmFzb24gRWtzdHJhbmQpOgo+ICAgLSBGaXggZnVuY3Rpb24gYXJndW1lbnQgaW5kZW50YXRpb24K Pgo+IFNpZ25lZC1vZmYtYnk6IEphc29uIEVrc3RyYW5kIDxqYXNvbkBqbGVrc3RyYW5kLm5ldD4K PiBTdWdnZXN0ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4g Q2M6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KPiBDYzogTWFh cnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiBDYzog TWF4aW1lIFJpcGFyZCA8bXJpcGFyZEBrZXJuZWwub3JnPgo+IENjOiBUaG9tYXMgWmltbWVybWFu biA8dHppbW1lcm1hbm5Ac3VzZS5kZT4KPiBDYzogTHVjYXMgU3RhY2ggPGwuc3RhY2hAcGVuZ3V0 cm9uaXguZGU+Cj4gQ2M6IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4KPiBDYzogU2Vh biBQYXVsIDxzZWFuQHBvb3JseS5ydW4+Cj4gQ2M6IEh1YW5nIFJ1aSA8cmF5Lmh1YW5nQGFtZC5j b20+Cj4gQ2M6IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgo+IENjOiBWTXdhcmUg R3JhcGhpY3MgPGxpbnV4LWdyYXBoaWNzLW1haW50YWluZXJAdm13YXJlLmNvbT4KPiAtLS0KPiAg IGRyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLQo+ ICAgZHJpdmVycy9kbWEtYnVmL2RtYS1yZXN2LmMgICAgICAgICAgICAgICAgICAgIHwgMjggKysr KysrKysrLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rp c3BsYXkuYyAgIHwgIDYgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2RtYV9idWYuYyAgIHwgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9nZW0uYyAgICAgICB8ICA0ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2lkcy5jICAgICAgIHwgIDYgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X21uLmMgICAgICAgIHwgIDQgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfb2JqZWN0LmMgICAgfCAgNCArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV91dmQuYyAgICAgICB8ICA2ICsrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV92bS5jICAgICAgICB8IDE0ICsrKysrLS0tLS0KPiAgIC4uLi9ncHUvZHJt L2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYyB8ICA2ICsrLS0KPiAgIGRyaXZlcnMv Z3B1L2RybS9kcm1fZ2VtLmMgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKy0tLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2F0b21pY19oZWxwZXIuYyAgICAgICB8ICAyICstCj4gICBk cml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dlbS5jICAgICAgICAgfCAgNyArKy0tLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW1fc3VibWl0LmMgIHwgIDggKysr LS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyAgfCAg MiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZG1hX3Jlc3ZfdXRpbHMuYyAgICAgICAgIHwg IDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9idXN5LmMgICAgICB8 ICAyICstCj4gICAuLi4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgICAg fCAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oICAg IHwgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmMg ICB8ICA0ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3dhaXQuYyAg ICAgIHwgMTAgKysrLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMg ICAgICAgICAgIHwgIDYgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5j ZS5jICAgICAgICAgIHwgIDQgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uYyAg ICAgICAgICAgICAgICAgfCAgMyArLQo+ICAgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52 NTAvd25kdy5jICAgICAgIHwgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZl YXVfZ2VtLmMgICAgICAgICB8ICA0ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3Bh bmZyb3N0X2Rydi5jICAgICAgIHwgIDQgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3Qv cGFuZnJvc3Rfam9iLmMgICAgICAgfCAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9y YWRlb25fZ2VtLmMgICAgICAgICAgIHwgIDYgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb25fbW4uYyAgICAgICAgICAgIHwgIDQgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vdHRt L3R0bV9iby5jICAgICAgICAgICAgICAgICAgfCAxOCArKysrKystLS0tLS0KPiAgIGRyaXZlcnMv Z3B1L2RybS92Z2VtL3ZnZW1fZmVuY2UuYyAgICAgICAgICAgICB8ICA0ICstLQo+ICAgZHJpdmVy cy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmMgICAgICAgIHwgIDYgKystLQo+ICAgZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYm8uYyAgICAgICAgICAgIHwgIDIgKy0KPiAgIGlu Y2x1ZGUvbGludXgvZG1hLXJlc3YuaCAgICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrKy0t LS0tLQo+ICAgMzYgZmlsZXMgY2hhbmdlZCwgMTA4IGluc2VydGlvbnMoKyksIDExMCBkZWxldGlv bnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jIGIvZHJpdmVy cy9kbWEtYnVmL2RtYS1idWYuYwo+IGluZGV4IGYyNjRiNzBjMzgzZWIuLmVkNjQ1MWQ1NWQ2NjMg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+ICsrKyBiL2RyaXZlcnMv ZG1hLWJ1Zi9kbWEtYnVmLmMKPiBAQCAtMTE0Nyw4ICsxMTQ3LDggQEAgc3RhdGljIGludCBfX2Rt YV9idWZfYmVnaW5fY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAo+ICAgCWxvbmcg cmV0Owo+ICAgCj4gICAJLyogV2FpdCBvbiBhbnkgaW1wbGljaXQgcmVuZGVyaW5nIGZlbmNlcyAq Lwo+IC0JcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShyZXN2LCB3cml0ZSwgdHJ1ZSwK PiAtCQkJCQkJICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gKwlyZXQgPSBkbWFfcmVzdl93YWl0 X3RpbWVvdXRfdW5sb2NrZWQocmVzdiwgd3JpdGUsIHRydWUsCj4gKwkJCQkJICAgICBNQVhfU0NI RURVTEVfVElNRU9VVCk7Cj4gICAJaWYgKHJldCA8IDApCj4gICAJCXJldHVybiByZXQ7Cj4gICAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2RtYS1yZXN2LmMgYi9kcml2ZXJzL2RtYS1i dWYvZG1hLXJlc3YuYwo+IGluZGV4IDZkZGJlYjVkZmJmNjUuLmQ2ZjFlZDRjZDRkNTUgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9kbWEtYnVmL2RtYS1yZXN2LmMKPiArKysgYi9kcml2ZXJzL2RtYS1i dWYvZG1hLXJlc3YuYwo+IEBAIC00MTcsNyArNDE3LDcgQEAgaW50IGRtYV9yZXN2X2NvcHlfZmVu Y2VzKHN0cnVjdCBkbWFfcmVzdiAqZHN0LCBzdHJ1Y3QgZG1hX3Jlc3YgKnNyYykKPiAgIEVYUE9S VF9TWU1CT0woZG1hX3Jlc3ZfY29weV9mZW5jZXMpOwo+ICAgCj4gICAvKioKPiAtICogZG1hX3Jl c3ZfZ2V0X2ZlbmNlc19yY3UgLSBHZXQgYW4gb2JqZWN0J3Mgc2hhcmVkIGFuZCBleGNsdXNpdmUK PiArICogZG1hX3Jlc3ZfZ2V0X2ZlbmNlc191bmxvY2tlZCAtIEdldCBhbiBvYmplY3QncyBzaGFy ZWQgYW5kIGV4Y2x1c2l2ZQo+ICAgICogZmVuY2VzIHdpdGhvdXQgdXBkYXRlIHNpZGUgbG9jayBo ZWxkCj4gICAgKiBAb2JqOiB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0Cj4gICAgKiBAcGZlbmNlX2V4 Y2w6IHRoZSByZXR1cm5lZCBleGNsdXNpdmUgZmVuY2UgKG9yIE5VTEwpCj4gQEAgLTQyOSwxMCAr NDI5LDEwIEBAIEVYUE9SVF9TWU1CT0woZG1hX3Jlc3ZfY29weV9mZW5jZXMpOwo+ICAgICogZXhj bHVzaXZlIGZlbmNlIGlzIG5vdCBzcGVjaWZpZWQgdGhlIGZlbmNlIGlzIHB1dCBpbnRvIHRoZSBh cnJheSBvZiB0aGUKPiAgICAqIHNoYXJlZCBmZW5jZXMgYXMgd2VsbC4gUmV0dXJucyBlaXRoZXIg emVybyBvciAtRU5PTUVNLgo+ICAgICovCj4gLWludCBkbWFfcmVzdl9nZXRfZmVuY2VzX3JjdShz dHJ1Y3QgZG1hX3Jlc3YgKm9iaiwKPiAtCQkJICAgIHN0cnVjdCBkbWFfZmVuY2UgKipwZmVuY2Vf ZXhjbCwKPiAtCQkJICAgIHVuc2lnbmVkICpwc2hhcmVkX2NvdW50LAo+IC0JCQkgICAgc3RydWN0 IGRtYV9mZW5jZSAqKipwc2hhcmVkKQo+ICtpbnQgZG1hX3Jlc3ZfZ2V0X2ZlbmNlc191bmxvY2tl ZChzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwKPiArCQkJCSBzdHJ1Y3QgZG1hX2ZlbmNlICoqcGZlbmNl X2V4Y2wsCj4gKwkJCQkgdW5zaWduZWQgKnBzaGFyZWRfY291bnQsCj4gKwkJCQkgc3RydWN0IGRt YV9mZW5jZSAqKipwc2hhcmVkKQo+ICAgewo+ICAgCXN0cnVjdCBkbWFfZmVuY2UgKipzaGFyZWQg PSBOVUxMOwo+ICAgCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlX2V4Y2w7Cj4gQEAgLTUxNSwxMCAr NTE1LDEwIEBAIGludCBkbWFfcmVzdl9nZXRfZmVuY2VzX3JjdShzdHJ1Y3QgZG1hX3Jlc3YgKm9i aiwKPiAgIAkqcHNoYXJlZCA9IHNoYXJlZDsKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+IC1FWFBP UlRfU1lNQk9MX0dQTChkbWFfcmVzdl9nZXRfZmVuY2VzX3JjdSk7Cj4gK0VYUE9SVF9TWU1CT0xf R1BMKGRtYV9yZXN2X2dldF9mZW5jZXNfdW5sb2NrZWQpOwo+ICAgCj4gICAvKioKPiAtICogZG1h X3Jlc3Zfd2FpdF90aW1lb3V0X3JjdSAtIFdhaXQgb24gcmVzZXJ2YXRpb24ncyBvYmplY3RzCj4g KyAqIGRtYV9yZXN2X3dhaXRfdGltZW91dF91bmxvY2tlZCAtIFdhaXQgb24gcmVzZXJ2YXRpb24n cyBvYmplY3RzCj4gICAgKiBzaGFyZWQgYW5kL29yIGV4Y2x1c2l2ZSBmZW5jZXMuCj4gICAgKiBA b2JqOiB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0Cj4gICAgKiBAd2FpdF9hbGw6IGlmIHRydWUsIHdh aXQgb24gYWxsIGZlbmNlcywgZWxzZSB3YWl0IG9uIGp1c3QgZXhjbHVzaXZlIGZlbmNlCj4gQEAg LTUyOSw5ICs1MjksOSBAQCBFWFBPUlRfU1lNQk9MX0dQTChkbWFfcmVzdl9nZXRfZmVuY2VzX3Jj dSk7Cj4gICAgKiBSZXR1cm5zIC1FUkVTVEFSVFNZUyBpZiBpbnRlcnJ1cHRlZCwgMCBpZiB0aGUg d2FpdCB0aW1lZCBvdXQsIG9yCj4gICAgKiBncmVhdGVyIHRoYW4gemVyIG9uIHN1Y2Nlc3MuCj4g ICAgKi8KPiAtbG9uZyBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KHN0cnVjdCBkbWFfcmVzdiAq b2JqLAo+IC0JCQkgICAgICAgYm9vbCB3YWl0X2FsbCwgYm9vbCBpbnRyLAo+IC0JCQkgICAgICAg dW5zaWduZWQgbG9uZyB0aW1lb3V0KQo+ICtsb25nIGRtYV9yZXN2X3dhaXRfdGltZW91dF91bmxv Y2tlZChzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwKPiArCQkJCSAgICBib29sIHdhaXRfYWxsLCBib29s IGludHIsCj4gKwkJCQkgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0KQo+ICAgewo+ICAgCXN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlOwo+ICAgCXVuc2lnbmVkIHNlcSwgc2hhcmVkX2NvdW50Owo+IEBA IC02MDIsNyArNjAyLDcgQEAgbG9uZyBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KHN0cnVjdCBk bWFfcmVzdiAqb2JqLAo+ICAgCXJjdV9yZWFkX3VubG9jaygpOwo+ICAgCWdvdG8gcmV0cnk7Cj4g ICB9Cj4gLUVYUE9SVF9TWU1CT0xfR1BMKGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3UpOwo+ICtF WFBPUlRfU1lNQk9MX0dQTChkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQpOwo+ICAgCj4g ICAKPiAgIHN0YXRpYyBpbmxpbmUgaW50IGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfc2luZ2xlKHN0 cnVjdCBkbWFfZmVuY2UgKnBhc3NlZF9mZW5jZSkKPiBAQCAtNjIyLDcgKzYyMiw3IEBAIHN0YXRp YyBpbmxpbmUgaW50IGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfc2luZ2xlKHN0cnVjdCBkbWFfZmVu Y2UgKnBhc3NlZF9mZW5jZSkKPiAgIH0KPiAgIAo+ICAgLyoqCj4gLSAqIGRtYV9yZXN2X3Rlc3Rf c2lnbmFsZWRfcmN1IC0gVGVzdCBpZiBhIHJlc2VydmF0aW9uIG9iamVjdCdzCj4gKyAqIGRtYV9y ZXN2X3Rlc3Rfc2lnbmFsZWRfdW5sb2NrZWQgLSBUZXN0IGlmIGEgcmVzZXJ2YXRpb24gb2JqZWN0 J3MKPiAgICAqIGZlbmNlcyBoYXZlIGJlZW4gc2lnbmFsZWQuCj4gICAgKiBAb2JqOiB0aGUgcmVz ZXJ2YXRpb24gb2JqZWN0Cj4gICAgKiBAdGVzdF9hbGw6IGlmIHRydWUsIHRlc3QgYWxsIGZlbmNl cywgb3RoZXJ3aXNlIG9ubHkgdGVzdCB0aGUgZXhjbHVzaXZlCj4gQEAgLTYzMSw3ICs2MzEsNyBA QCBzdGF0aWMgaW5saW5lIGludCBkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3NpbmdsZShzdHJ1Y3Qg ZG1hX2ZlbmNlICpwYXNzZWRfZmVuY2UpCj4gICAgKiBSRVRVUk5TCj4gICAgKiB0cnVlIGlmIGFs bCBmZW5jZXMgc2lnbmFsZWQsIGVsc2UgZmFsc2UKPiAgICAqLwo+IC1ib29sIGRtYV9yZXN2X3Rl c3Rfc2lnbmFsZWRfcmN1KHN0cnVjdCBkbWFfcmVzdiAqb2JqLCBib29sIHRlc3RfYWxsKQo+ICti b29sIGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfdW5sb2NrZWQoc3RydWN0IGRtYV9yZXN2ICpvYmos IGJvb2wgdGVzdF9hbGwpCj4gICB7Cj4gICAJdW5zaWduZWQgc2VxLCBzaGFyZWRfY291bnQ7Cj4g ICAJaW50IHJldDsKPiBAQCAtNjgwLDQgKzY4MCw0IEBAIGJvb2wgZG1hX3Jlc3ZfdGVzdF9zaWdu YWxlZF9yY3Uoc3RydWN0IGRtYV9yZXN2ICpvYmosIGJvb2wgdGVzdF9hbGwpCj4gICAJcmN1X3Jl YWRfdW5sb2NrKCk7Cj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAtRVhQT1JUX1NZTUJPTF9HUEwo ZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF9yY3UpOwo+ICtFWFBPUlRfU1lNQk9MX0dQTChkbWFfcmVz dl90ZXN0X3NpZ25hbGVkX3VubG9ja2VkKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9kaXNwbGF5LmMKPiBpbmRleCA4YTFmYjhiNjYwNmU1Li5iOGUyNGYxOTliZTlhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzcGxheS5jCj4gQEAg LTIwMyw5ICsyMDMsOSBAQCBpbnQgYW1kZ3B1X2Rpc3BsYXlfY3J0Y19wYWdlX2ZsaXBfdGFyZ2V0 KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgIAkJZ290byB1bnBpbjsKPiAgIAl9Cj4gICAKPiAt CXIgPSBkbWFfcmVzdl9nZXRfZmVuY2VzX3JjdShuZXdfYWJvLT50Ym8uYmFzZS5yZXN2LCAmd29y ay0+ZXhjbCwKPiAtCQkJCQkgICAgICAmd29yay0+c2hhcmVkX2NvdW50LAo+IC0JCQkJCSAgICAg ICZ3b3JrLT5zaGFyZWQpOwo+ICsJciA9IGRtYV9yZXN2X2dldF9mZW5jZXNfdW5sb2NrZWQobmV3 X2Fiby0+dGJvLmJhc2UucmVzdiwgJndvcmstPmV4Y2wsCj4gKwkJCQkJICZ3b3JrLT5zaGFyZWRf Y291bnQsCj4gKwkJCQkJICZ3b3JrLT5zaGFyZWQpOwo+ICAgCWlmICh1bmxpa2VseShyICE9IDAp KSB7Cj4gICAJCURSTV9FUlJPUigiZmFpbGVkIHRvIGdldCBmZW5jZXMgZm9yIGJ1ZmZlclxuIik7 Cj4gICAJCWdvdG8gdW5waW47Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9kbWFfYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf ZG1hX2J1Zi5jCj4gaW5kZXggYmFhOTgwYTQ3N2Q5NC4uMGQwMzE5YmM1MTU3NyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuYwo+IEBAIC05OCw3ICs5 OCw3IEBAIF9fZG1hX3Jlc3ZfbWFrZV9leGNsdXNpdmUoc3RydWN0IGRtYV9yZXN2ICpvYmopCj4g ICAJaWYgKCFkbWFfcmVzdl9nZXRfbGlzdChvYmopKSAvKiBubyBzaGFyZWQgZmVuY2VzIHRvIGNv bnZlcnQgKi8KPiAgIAkJcmV0dXJuIDA7Cj4gICAKPiAtCXIgPSBkbWFfcmVzdl9nZXRfZmVuY2Vz X3JjdShvYmosIE5VTEwsICZjb3VudCwgJmZlbmNlcyk7Cj4gKwlyID0gZG1hX3Jlc3ZfZ2V0X2Zl bmNlc191bmxvY2tlZChvYmosIE5VTEwsICZjb3VudCwgJmZlbmNlcyk7Cj4gICAJaWYgKHIpCj4g ICAJCXJldHVybiByOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0u Ywo+IGluZGV4IDE4OTc0YmQwODFmMDAuLjhlMjk5NmQ2YmEzYWQgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCj4gQEAgLTQ3MSw4ICs0NzEsOCBAQCBpbnQgYW1k Z3B1X2dlbV93YWl0X2lkbGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKPiAgIAkJcmV0dXJuIC1FTk9FTlQ7Cj4gICAJfQo+ICAgCXJvYmogPSBnZW1fdG9fYW1kZ3B1 X2JvKGdvYmopOwo+IC0JcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShyb2JqLT50Ym8u YmFzZS5yZXN2LCB0cnVlLCB0cnVlLAo+IC0JCQkJCQkgIHRpbWVvdXQpOwo+ICsJcmV0ID0gZG1h X3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKHJvYmotPnRiby5iYXNlLnJlc3YsIHRydWUsIHRy dWUsCj4gKwkJCQkJICAgICB0aW1lb3V0KTsKPiAgIAo+ICAgCS8qIHJldCA9PSAwIG1lYW5zIG5v dCBzaWduYWxlZCwKPiAgIAkgKiByZXQgPiAwIG1lYW5zIHNpZ25hbGVkCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9pZHMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9pZHMuYwo+IGluZGV4IGI0OTcxZTkwYjk4Y2YuLjM4ZTFiMzJk ZDJjZWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2lk cy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2lkcy5jCj4gQEAg LTExMiw3ICsxMTIsNyBAQCB2b2lkIGFtZGdwdV9wYXNpZF9mcmVlX2RlbGF5ZWQoc3RydWN0IGRt YV9yZXN2ICpyZXN2LAo+ICAgCXVuc2lnbmVkIGNvdW50Owo+ICAgCWludCByOwo+ICAgCj4gLQly ID0gZG1hX3Jlc3ZfZ2V0X2ZlbmNlc19yY3UocmVzdiwgTlVMTCwgJmNvdW50LCAmZmVuY2VzKTsK PiArCXIgPSBkbWFfcmVzdl9nZXRfZmVuY2VzX3VubG9ja2VkKHJlc3YsIE5VTEwsICZjb3VudCwg JmZlbmNlcyk7Cj4gICAJaWYgKHIpCj4gICAJCWdvdG8gZmFsbGJhY2s7Cj4gICAKPiBAQCAtMTU2 LDggKzE1Niw4IEBAIHZvaWQgYW1kZ3B1X3Bhc2lkX2ZyZWVfZGVsYXllZChzdHJ1Y3QgZG1hX3Jl c3YgKnJlc3YsCj4gICAJLyogTm90IGVub3VnaCBtZW1vcnkgZm9yIHRoZSBkZWxheWVkIGRlbGV0 ZSwgYXMgbGFzdCByZXNvcnQKPiAgIAkgKiBibG9jayBmb3IgYWxsIHRoZSBmZW5jZXMgdG8gY29t cGxldGUuCj4gICAJICovCj4gLQlkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KHJlc3YsIHRydWUs IGZhbHNlLAo+IC0JCQkJCSAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gKwlkbWFfcmVzdl93 YWl0X3RpbWVvdXRfdW5sb2NrZWQocmVzdiwgdHJ1ZSwgZmFsc2UsCj4gKwkJCQkgICAgICAgTUFY X1NDSEVEVUxFX1RJTUVPVVQpOwo+ICAgCWFtZGdwdV9wYXNpZF9mcmVlKHBhc2lkKTsKPiAgIH0K PiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfbW4u YyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jCj4gaW5kZXggODI4YjUx NjdmZjEyOC4uMDMxOWM4YjU0N2M0OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfbW4uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9tbi5jCj4gQEAgLTc1LDggKzc1LDggQEAgc3RhdGljIGJvb2wgYW1kZ3B1X21uX2ludmFs aWRhdGVfZ2Z4KHN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXIgKm1uaSwKPiAgIAo+ICAgCW1t dV9pbnRlcnZhbF9zZXRfc2VxKG1uaSwgY3VyX3NlcSk7Cj4gICAKPiAtCXIgPSBkbWFfcmVzdl93 YWl0X3RpbWVvdXRfcmN1KGJvLT50Ym8uYmFzZS5yZXN2LCB0cnVlLCBmYWxzZSwKPiAtCQkJCSAg ICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiArCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRf dW5sb2NrZWQoYm8tPnRiby5iYXNlLnJlc3YsIHRydWUsIGZhbHNlLAo+ICsJCQkJCSAgIE1BWF9T Q0hFRFVMRV9USU1FT1VUKTsKPiAgIAltdXRleF91bmxvY2soJmFkZXYtPm5vdGlmaWVyX2xvY2sp Owo+ICAgCWlmIChyIDw9IDApCj4gICAJCURSTV9FUlJPUigiKCVsZCkgZmFpbGVkIHRvIHdhaXQg Zm9yIHVzZXIgYm9cbiIsIHIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf b2JqZWN0LmMKPiBpbmRleCAwYWRmZmNhY2UzMjYzLi5kZTFjN2M1NTAxNjgzIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+IEBAIC03OTEsOCArNzkx LDggQEAgaW50IGFtZGdwdV9ib19rbWFwKHN0cnVjdCBhbWRncHVfYm8gKmJvLCB2b2lkICoqcHRy KQo+ICAgCQlyZXR1cm4gMDsKPiAgIAl9Cj4gICAKPiAtCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVv dXRfcmN1KGJvLT50Ym8uYmFzZS5yZXN2LCBmYWxzZSwgZmFsc2UsCj4gLQkJCQkJCU1BWF9TQ0hF RFVMRV9USU1FT1VUKTsKPiArCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQoYm8t PnRiby5iYXNlLnJlc3YsIGZhbHNlLCBmYWxzZSwKPiArCQkJCQkgICBNQVhfU0NIRURVTEVfVElN RU9VVCk7Cj4gICAJaWYgKHIgPCAwKQo+ICAgCQlyZXR1cm4gcjsKPiAgIAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMKPiBpbmRleCBjNmRiYzA4MDE2MDQ1Li40YTIxOTY0 MDRmYjY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91 dmQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91dmQuYwo+IEBA IC0xMTE1LDkgKzExMTUsOSBAQCBzdGF0aWMgaW50IGFtZGdwdV91dmRfc2VuZF9tc2coc3RydWN0 IGFtZGdwdV9yaW5nICpyaW5nLCBzdHJ1Y3QgYW1kZ3B1X2JvICpibywKPiAgIAlpYi0+bGVuZ3Ro X2R3ID0gMTY7Cj4gICAKPiAgIAlpZiAoZGlyZWN0KSB7Cj4gLQkJciA9IGRtYV9yZXN2X3dhaXRf dGltZW91dF9yY3UoYm8tPnRiby5iYXNlLnJlc3YsCj4gLQkJCQkJCQl0cnVlLCBmYWxzZSwKPiAt CQkJCQkJCW1zZWNzX3RvX2ppZmZpZXMoMTApKTsKPiArCQlyID0gZG1hX3Jlc3Zfd2FpdF90aW1l b3V0X3VubG9ja2VkKGJvLT50Ym8uYmFzZS5yZXN2LAo+ICsJCQkJCQkgICB0cnVlLCBmYWxzZSwK PiArCQkJCQkJICAgbXNlY3NfdG9famlmZmllcygxMCkpOwo+ICAgCQlpZiAociA9PSAwKQo+ICAg CQkJciA9IC1FVElNRURPVVQ7Cj4gICAJCWlmIChyIDwgMCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfdm0uYwo+IGluZGV4IDRhM2UzZjcyZTEyNzcuLjdiYTFjNTM3ZDY1ODQgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+IEBAIC0yMDA3LDE0ICsy MDA3LDE0IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV92bV9wcnRfZmluaShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0pCj4gICAJdW5zaWduZWQgaSwgc2hhcmVk X2NvdW50Owo+ICAgCWludCByOwo+ICAgCj4gLQlyID0gZG1hX3Jlc3ZfZ2V0X2ZlbmNlc19yY3Uo cmVzdiwgJmV4Y2wsCj4gLQkJCQkJICAgICAgJnNoYXJlZF9jb3VudCwgJnNoYXJlZCk7Cj4gKwly ID0gZG1hX3Jlc3ZfZ2V0X2ZlbmNlc191bmxvY2tlZChyZXN2LCAmZXhjbCwKPiArCQkJCQkgJnNo YXJlZF9jb3VudCwgJnNoYXJlZCk7Cj4gICAJaWYgKHIpIHsKPiAgIAkJLyogTm90IGVub3VnaCBt ZW1vcnkgdG8gZ3JhYiB0aGUgZmVuY2UgbGlzdCwgYXMgbGFzdCByZXNvcnQKPiAgIAkJICogYmxv Y2sgZm9yIGFsbCB0aGUgZmVuY2VzIHRvIGNvbXBsZXRlLgo+ICAgCQkgKi8KPiAtCQlkbWFfcmVz dl93YWl0X3RpbWVvdXRfcmN1KHJlc3YsIHRydWUsIGZhbHNlLAo+IC0JCQkJCQkgICAgTUFYX1ND SEVEVUxFX1RJTUVPVVQpOwo+ICsJCWRtYV9yZXN2X3dhaXRfdGltZW91dF91bmxvY2tlZChyZXN2 LCB0cnVlLCBmYWxzZSwKPiArCQkJCQkgICAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+ICAg CQlyZXR1cm47Cj4gICAJfQo+ICAgCj4gQEAgLTI2MjUsNyArMjYyNSw3IEBAIGJvb2wgYW1kZ3B1 X3ZtX2V2aWN0YWJsZShzdHJ1Y3QgYW1kZ3B1X2JvICpibykKPiAgIAkJcmV0dXJuIHRydWU7Cj4g ICAKPiAgIAkvKiBEb24ndCBldmljdCBWTSBwYWdlIHRhYmxlcyB3aGlsZSB0aGV5IGFyZSBidXN5 ICovCj4gLQlpZiAoIWRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfcmN1KGJvLT50Ym8uYmFzZS5yZXN2 LCB0cnVlKSkKPiArCWlmICghZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF91bmxvY2tlZChiby0+dGJv LmJhc2UucmVzdiwgdHJ1ZSkpCj4gICAJCXJldHVybiBmYWxzZTsKPiAgIAo+ICAgCS8qIFRyeSB0 byBibG9jayBvbmdvaW5nIHVwZGF0ZXMgKi8KPiBAQCAtMjgwNSw4ICsyODA1LDggQEAgdm9pZCBh bWRncHVfdm1fYWRqdXN0X3NpemUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90 IG1pbl92bV9zaXplLAo+ICAgICovCj4gICBsb25nIGFtZGdwdV92bV93YWl0X2lkbGUoc3RydWN0 IGFtZGdwdV92bSAqdm0sIGxvbmcgdGltZW91dCkKPiAgIHsKPiAtCXRpbWVvdXQgPSBkbWFfcmVz dl93YWl0X3RpbWVvdXRfcmN1KHZtLT5yb290LmJhc2UuYm8tPnRiby5iYXNlLnJlc3YsCj4gLQkJ CQkJICAgIHRydWUsIHRydWUsIHRpbWVvdXQpOwo+ICsJdGltZW91dCA9IGRtYV9yZXN2X3dhaXRf dGltZW91dF91bmxvY2tlZCh2bS0+cm9vdC5iYXNlLmJvLT50Ym8uYmFzZS5yZXN2LAo+ICsJCQkJ CQkgdHJ1ZSwgdHJ1ZSwgdGltZW91dCk7Cj4gICAJaWYgKHRpbWVvdXQgPD0gMCkKPiAgIAkJcmV0 dXJuIHRpbWVvdXQ7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9h bWRncHVfZG0vYW1kZ3B1X2RtLmMKPiBpbmRleCA5Y2E1MTdiNjU4NTQ2Li4wMTIxZDI4MTdmYTI2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1k Z3B1X2RtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2Ft ZGdwdV9kbS5jCj4gQEAgLTgyNzYsOSArODI3Niw5IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9kbV9j b21taXRfcGxhbmVzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgIAkJICogZGVh ZGxvY2sgZHVyaW5nIEdQVSByZXNldCB3aGVuIHRoaXMgZmVuY2Ugd2lsbCBub3Qgc2lnbmFsCj4g ICAJCSAqIGJ1dCB3ZSBob2xkIHJlc2VydmF0aW9uIGxvY2sgZm9yIHRoZSBCTy4KPiAgIAkJICov Cj4gLQkJciA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3UoYWJvLT50Ym8uYmFzZS5yZXN2LCB0 cnVlLAo+IC0JCQkJCQkJZmFsc2UsCj4gLQkJCQkJCQltc2Vjc190b19qaWZmaWVzKDUwMDApKTsK PiArCQlyID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKGFiby0+dGJvLmJhc2UucmVz diwgdHJ1ZSwKPiArCQkJCQkJICAgZmFsc2UsCj4gKwkJCQkJCSAgIG1zZWNzX3RvX2ppZmZpZXMo NTAwMCkpOwo+ICAgCQlpZiAodW5saWtlbHkociA8PSAwKSkKPiAgIAkJCURSTV9FUlJPUigiV2Fp dGluZyBmb3IgZmVuY2VzIHRpbWVkIG91dCEiKTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYwo+IGluZGV4IDk5 ODk0MjVlOTg3NWEuLjEyNDFhNDIxYjllODEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMKPiBAQCAtNzcwLDgg Kzc3MCw4IEBAIGxvbmcgZHJtX2dlbV9kbWFfcmVzdl93YWl0KHN0cnVjdCBkcm1fZmlsZSAqZmls ZXAsIHUzMiBoYW5kbGUsCj4gICAJCXJldHVybiAtRUlOVkFMOwo+ICAgCX0KPiAgIAo+IC0JcmV0 ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShvYmotPnJlc3YsIHdhaXRfYWxsLAo+IC0JCQkJ CQkgIHRydWUsIHRpbWVvdXQpOwo+ICsJcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9j a2VkKG9iai0+cmVzdiwgd2FpdF9hbGwsCj4gKwkJCQkJICAgICB0cnVlLCB0aW1lb3V0KTsKPiAg IAlpZiAocmV0ID09IDApCj4gICAJCXJldCA9IC1FVElNRTsKPiAgIAllbHNlIGlmIChyZXQgPiAw KQo+IEBAIC0xMzc1LDEzICsxMzc1LDEzIEBAIGludCBkcm1fZ2VtX2ZlbmNlX2FycmF5X2FkZF9p bXBsaWNpdChzdHJ1Y3QgeGFycmF5ICpmZW5jZV9hcnJheSwKPiAgIAo+ICAgCWlmICghd3JpdGUp IHsKPiAgIAkJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UgPQo+IC0JCQlkbWFfcmVzdl9nZXRfZXhj bF9yY3Uob2JqLT5yZXN2KTsKPiArCQkJZG1hX3Jlc3ZfZ2V0X2V4Y2xfdW5sb2NrZWQob2JqLT5y ZXN2KTsKPiAgIAo+ICAgCQlyZXR1cm4gZHJtX2dlbV9mZW5jZV9hcnJheV9hZGQoZmVuY2VfYXJy YXksIGZlbmNlKTsKPiAgIAl9Cj4gICAKPiAtCXJldCA9IGRtYV9yZXN2X2dldF9mZW5jZXNfcmN1 KG9iai0+cmVzdiwgTlVMTCwKPiAtCQkJCQkJJmZlbmNlX2NvdW50LCAmZmVuY2VzKTsKPiArCXJl dCA9IGRtYV9yZXN2X2dldF9mZW5jZXNfdW5sb2NrZWQob2JqLT5yZXN2LCBOVUxMLAo+ICsJCQkJ CSAgICZmZW5jZV9jb3VudCwgJmZlbmNlcyk7Cj4gICAJaWYgKHJldCB8fCAhZmVuY2VfY291bnQp Cj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9nZW1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fYXRvbWljX2hl bHBlci5jCj4gaW5kZXggYTAwNWM1YTBiYTQ2YS4uYTI3MTM1MDg0YWU1YyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9hdG9taWNfaGVscGVyLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2dlbV9hdG9taWNfaGVscGVyLmMKPiBAQCAtMTQ3LDcgKzE0Nyw3IEBAIGlu dCBkcm1fZ2VtX3BsYW5lX2hlbHBlcl9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LCBzdHJ1Y3QgZHJtX3BsYW5lX3N0Cj4gICAJCXJldHVybiAwOwo+ICAgCj4gICAJb2JqID0gZHJt X2dlbV9mYl9nZXRfb2JqKHN0YXRlLT5mYiwgMCk7Cj4gLQlmZW5jZSA9IGRtYV9yZXN2X2dldF9l eGNsX3JjdShvYmotPnJlc3YpOwo+ICsJZmVuY2UgPSBkbWFfcmVzdl9nZXRfZXhjbF91bmxvY2tl ZChvYmotPnJlc3YpOwo+ICAgCWRybV9hdG9taWNfc2V0X2ZlbmNlX2Zvcl9wbGFuZShzdGF0ZSwg ZmVuY2UpOwo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9ldG5hdml2L2V0bmF2aXZfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2 X2dlbS5jCj4gaW5kZXggZGI2OWYxOWFiNWJjYS4uNGU2ZjUzNDZlODRlNCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dlbS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW0uYwo+IEBAIC0zOTAsMTQgKzM5MCwxMyBAQCBpbnQg ZXRuYXZpdl9nZW1fY3B1X3ByZXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHUzMiBvcCwK PiAgIAl9Cj4gICAKPiAgIAlpZiAob3AgJiBFVE5BX1BSRVBfTk9TWU5DKSB7Cj4gLQkJaWYgKCFk bWFfcmVzdl90ZXN0X3NpZ25hbGVkX3JjdShvYmotPnJlc3YsCj4gLQkJCQkJCQkgIHdyaXRlKSkK PiArCQlpZiAoIWRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfdW5sb2NrZWQob2JqLT5yZXN2LCB3cml0 ZSkpCj4gICAJCQlyZXR1cm4gLUVCVVNZOwo+ICAgCX0gZWxzZSB7Cj4gICAJCXVuc2lnbmVkIGxv bmcgcmVtYWluID0gZXRuYXZpdl90aW1lb3V0X3RvX2ppZmZpZXModGltZW91dCk7Cj4gICAKPiAt CQlyZXQgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KG9iai0+cmVzdiwKPiAtCQkJCQkJCSAg d3JpdGUsIHRydWUsIHJlbWFpbik7Cj4gKwkJcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3Vu bG9ja2VkKG9iai0+cmVzdiwKPiArCQkJCQkJICAgICB3cml0ZSwgdHJ1ZSwgcmVtYWluKTsKPiAg IAkJaWYgKHJldCA8PSAwKQo+ICAgCQkJcmV0dXJuIHJldCA9PSAwID8gLUVUSU1FRE9VVCA6IHJl dDsKPiAgIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZf Z2VtX3N1Ym1pdC5jIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW1fc3VibWl0 LmMKPiBpbmRleCBkMDVjMzU5OTQ1Nzk5Li42NjE3ZmFkYTQ1OTVkIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZ2VtX3N1Ym1pdC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW1fc3VibWl0LmMKPiBAQCAtMTg5LDEzICsxODks MTMgQEAgc3RhdGljIGludCBzdWJtaXRfZmVuY2Vfc3luYyhzdHJ1Y3QgZXRuYXZpdl9nZW1fc3Vi bWl0ICpzdWJtaXQpCj4gICAJCQljb250aW51ZTsKPiAgIAo+ICAgCQlpZiAoYm8tPmZsYWdzICYg RVROQV9TVUJNSVRfQk9fV1JJVEUpIHsKPiAtCQkJcmV0ID0gZG1hX3Jlc3ZfZ2V0X2ZlbmNlc19y Y3Uocm9iaiwgJmJvLT5leGNsLAo+IC0JCQkJCQkJCSZiby0+bnJfc2hhcmVkLAo+IC0JCQkJCQkJ CSZiby0+c2hhcmVkKTsKPiArCQkJcmV0ID0gZG1hX3Jlc3ZfZ2V0X2ZlbmNlc191bmxvY2tlZChy b2JqLCAmYm8tPmV4Y2wsCj4gKwkJCQkJCQkgICAmYm8tPm5yX3NoYXJlZCwKPiArCQkJCQkJCSAg ICZiby0+c2hhcmVkKTsKPiAgIAkJCWlmIChyZXQpCj4gICAJCQkJcmV0dXJuIHJldDsKPiAgIAkJ fSBlbHNlIHsKPiAtCQkJYm8tPmV4Y2wgPSBkbWFfcmVzdl9nZXRfZXhjbF9yY3Uocm9iaik7Cj4g KwkJCWJvLT5leGNsID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfdW5sb2NrZWQocm9iaik7Cj4gICAJCX0K PiAgIAo+ICAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXkuYwo+IGluZGV4IDQyMmI1OWViZjZkY2UuLjVmMGI4NWExMDIxNTkgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xMTA0MCw3ICsx MTA0MCw3IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5l LAo+ICAgCQlpZiAocmV0IDwgMCkKPiAgIAkJCWdvdG8gdW5waW5fZmI7Cj4gICAKPiAtCQlmZW5j ZSA9IGRtYV9yZXN2X2dldF9leGNsX3JjdShvYmotPmJhc2UucmVzdik7Cj4gKwkJZmVuY2UgPSBk bWFfcmVzdl9nZXRfZXhjbF91bmxvY2tlZChvYmotPmJhc2UucmVzdik7Cj4gICAJCWlmIChmZW5j ZSkgewo+ICAgCQkJYWRkX3Jwc19ib29zdF9hZnRlcl92YmxhbmsobmV3X3BsYW5lX3N0YXRlLT5o dy5jcnRjLAo+ICAgCQkJCQkJICAgZmVuY2UpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kbWFfcmVzdl91dGlscy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZG1hX3Jlc3Zf dXRpbHMuYwo+IGluZGV4IDllNTA4ZTdkNDYyOWYuLmJkZmM2YmYxNmE0ZTkgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZG1hX3Jlc3ZfdXRpbHMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2RtYV9yZXN2X3V0aWxzLmMKPiBAQCAtMTAsNyArMTAsNyBAQAo+ICAgdm9p ZCBkbWFfcmVzdl9wcnVuZShzdHJ1Y3QgZG1hX3Jlc3YgKnJlc3YpCj4gICB7Cj4gICAJaWYgKGRt YV9yZXN2X3RyeWxvY2socmVzdikpIHsKPiAtCQlpZiAoZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF9y Y3UocmVzdiwgdHJ1ZSkpCj4gKwkJaWYgKGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfdW5sb2NrZWQo cmVzdiwgdHJ1ZSkpCj4gICAJCQlkbWFfcmVzdl9hZGRfZXhjbF9mZW5jZShyZXN2LCBOVUxMKTsK PiAgIAkJZG1hX3Jlc3ZfdW5sb2NrKHJlc3YpOwo+ICAgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2J1c3kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9idXN5LmMKPiBpbmRleCAyNTIzNWVmNjMwYzEwLi43NTRhZDZkMWJhY2U5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9idXN5LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fYnVzeS5jCj4gQEAgLTEw NSw3ICsxMDUsNyBAQCBpOTE1X2dlbV9idXN5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCj4gICAJICogQWx0ZXJuYXRpdmVseSwgd2UgY2FuIHRyYWRlIHRoYXQgZXh0 cmEgaW5mb3JtYXRpb24gb24gcmVhZC93cml0ZQo+ICAgCSAqIGFjdGl2aXR5IHdpdGgKPiAgIAkg KglhcmdzLT5idXN5ID0KPiAtCSAqCQkhZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF9yY3Uob2JqLT5y ZXN2LCB0cnVlKTsKPiArCSAqCQkhZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF91bmxvY2tlZChvYmot PnJlc3YsIHRydWUpOwo+ICAgCSAqIHRvIHJlcG9ydCB0aGUgb3ZlcmFsbCBidXN5bmVzcy4gVGhp cyBpcyB3aGF0IHRoZSB3YWl0LWlvY3RsIGRvZXMuCj4gICAJICoKPiAgIAkgKi8KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRleCAyOTcx NDM1MTFmOTliLi5lOGYzMjM1NjRlNTdiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTE0ODEsNyArMTQ4MSw3IEBAIHN0YXRp YyBpbmxpbmUgYm9vbCB1c2VfcmVsb2NfZ3B1KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgCWlm IChEQkdfRk9SQ0VfUkVMT0MpCj4gICAJCXJldHVybiBmYWxzZTsKPiAgIAo+IC0JcmV0dXJuICFk bWFfcmVzdl90ZXN0X3NpZ25hbGVkX3JjdSh2bWEtPnJlc3YsIHRydWUpOwo+ICsJcmV0dXJuICFk bWFfcmVzdl90ZXN0X3NpZ25hbGVkX3VubG9ja2VkKHZtYS0+cmVzdiwgdHJ1ZSk7Cj4gICB9Cj4g ICAKPiAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIHZtYV9waHlzX2FkZHIoc3RydWN0IGk5MTVfdm1h ICp2bWEsIHUzMiBvZmZzZXQpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV9vYmplY3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9v YmplY3QuaAo+IGluZGV4IDJlYmQ3OTUzN2FlYTkuLjdjMGViNDI1Y2IzYjMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5oCj4gQEAgLTUwMCw3ICs1MDAs NyBAQCBpOTE1X2dlbV9vYmplY3RfbGFzdF93cml0ZV9lbmdpbmUoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKPiAgIAlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiAgIAo+ICAgCXJj dV9yZWFkX2xvY2soKTsKPiAtCWZlbmNlID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfcmN1KG9iai0+YmFz ZS5yZXN2KTsKPiArCWZlbmNlID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfdW5sb2NrZWQob2JqLT5iYXNl LnJlc3YpOwo+ICAgCXJjdV9yZWFkX3VubG9jaygpOwo+ICAgCj4gICAJaWYgKGZlbmNlICYmIGRt YV9mZW5jZV9pc19pOTE1KGZlbmNlKSAmJiAhZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGZlbmNlKSkK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmMKPiBpbmRleCBh NjU3Yjk5ZWM3NjA2Li40NGRmMThkYzk2NjlmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV91c2VycHRyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jCj4gQEAgLTg1LDggKzg1LDggQEAgc3RhdGljIGJvb2wg aTkxNV9nZW1fdXNlcnB0cl9pbnZhbGlkYXRlKHN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXIg Km1uaSwKPiAgIAkJcmV0dXJuIHRydWU7Cj4gICAKPiAgIAkvKiB3ZSB3aWxsIHVuYmluZCBvbiBu ZXh0IHN1Ym1pc3Npb24sIHN0aWxsIGhhdmUgdXNlcnB0ciBwaW5zICovCj4gLQlyID0gZG1hX3Jl c3Zfd2FpdF90aW1lb3V0X3JjdShvYmotPmJhc2UucmVzdiwgdHJ1ZSwgZmFsc2UsCj4gLQkJCQkg ICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gKwlyID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0 X3VubG9ja2VkKG9iai0+YmFzZS5yZXN2LCB0cnVlLCBmYWxzZSwKPiArCQkJCQkgICBNQVhfU0NI RURVTEVfVElNRU9VVCk7Cj4gICAJaWYgKHIgPD0gMCkKPiAgIAkJZHJtX2VycigmaTkxNS0+ZHJt LCAiKCVsZCkgZmFpbGVkIHRvIHdhaXQgZm9yIGlkbGVcbiIsIHIpOwo+ICAgCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV93YWl0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fd2FpdC5jCj4gaW5kZXggNGI5ODU2ZDViYTE0Zi4uNWI2 YzUyNjU5YWQ0ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fd2FpdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3dhaXQu Ywo+IEBAIC00NSw3ICs0NSw3IEBAIGk5MTVfZ2VtX29iamVjdF93YWl0X3Jlc2VydmF0aW9uKHN0 cnVjdCBkbWFfcmVzdiAqcmVzdiwKPiAgIAkJdW5zaWduZWQgaW50IGNvdW50LCBpOwo+ICAgCQlp bnQgcmV0Owo+ICAgCj4gLQkJcmV0ID0gZG1hX3Jlc3ZfZ2V0X2ZlbmNlc19yY3UocmVzdiwgJmV4 Y2wsICZjb3VudCwgJnNoYXJlZCk7Cj4gKwkJcmV0ID0gZG1hX3Jlc3ZfZ2V0X2ZlbmNlc191bmxv Y2tlZChyZXN2LCAmZXhjbCwgJmNvdW50LCAmc2hhcmVkKTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJ CXJldHVybiByZXQ7Cj4gICAKPiBAQCAtNzMsNyArNzMsNyBAQCBpOTE1X2dlbV9vYmplY3Rfd2Fp dF9yZXNlcnZhdGlvbihzdHJ1Y3QgZG1hX3Jlc3YgKnJlc3YsCj4gICAJCSAqLwo+ICAgCQlwcnVu ZV9mZW5jZXMgPSBjb3VudCAmJiB0aW1lb3V0ID49IDA7Cj4gICAJfSBlbHNlIHsKPiAtCQlleGNs ID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfcmN1KHJlc3YpOwo+ICsJCWV4Y2wgPSBkbWFfcmVzdl9nZXRf ZXhjbF91bmxvY2tlZChyZXN2KTsKPiAgIAl9Cj4gICAKPiAgIAlpZiAoZXhjbCAmJiB0aW1lb3V0 ID49IDApCj4gQEAgLTE1OCw4ICsxNTgsOCBAQCBpOTE1X2dlbV9vYmplY3Rfd2FpdF9wcmlvcml0 eShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCQl1bnNpZ25lZCBpbnQgY291 bnQsIGk7Cj4gICAJCWludCByZXQ7Cj4gICAKPiAtCQlyZXQgPSBkbWFfcmVzdl9nZXRfZmVuY2Vz X3JjdShvYmotPmJhc2UucmVzdiwKPiAtCQkJCQkgICAgICAmZXhjbCwgJmNvdW50LCAmc2hhcmVk KTsKPiArCQlyZXQgPSBkbWFfcmVzdl9nZXRfZmVuY2VzX3VubG9ja2VkKG9iai0+YmFzZS5yZXN2 LAo+ICsJCQkJCQkgICAmZXhjbCwgJmNvdW50LCAmc2hhcmVkKTsKPiAgIAkJaWYgKHJldCkKPiAg IAkJCXJldHVybiByZXQ7Cj4gICAKPiBAQCAtMTcwLDcgKzE3MCw3IEBAIGk5MTVfZ2VtX29iamVj dF93YWl0X3ByaW9yaXR5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAKPiAg IAkJa2ZyZWUoc2hhcmVkKTsKPiAgIAl9IGVsc2Ugewo+IC0JCWV4Y2wgPSBkbWFfcmVzdl9nZXRf ZXhjbF9yY3Uob2JqLT5iYXNlLnJlc3YpOwo+ICsJCWV4Y2wgPSBkbWFfcmVzdl9nZXRfZXhjbF91 bmxvY2tlZChvYmotPmJhc2UucmVzdik7Cj4gICAJfQo+ICAgCj4gICAJaWYgKGV4Y2wpIHsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IGluZGV4IDk3MGQ4ZjQ5ODZiYmUuLmYxZWQw M2NlZDdkZDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IEBAIC0xNTk0 LDggKzE1OTQsOCBAQCBpOTE1X3JlcXVlc3RfYXdhaXRfb2JqZWN0KHN0cnVjdCBpOTE1X3JlcXVl c3QgKnRvLAo+ICAgCQlzdHJ1Y3QgZG1hX2ZlbmNlICoqc2hhcmVkOwo+ICAgCQl1bnNpZ25lZCBp bnQgY291bnQsIGk7Cj4gICAKPiAtCQlyZXQgPSBkbWFfcmVzdl9nZXRfZmVuY2VzX3JjdShvYmot PmJhc2UucmVzdiwKPiAtCQkJCQkJCSZleGNsLCAmY291bnQsICZzaGFyZWQpOwo+ICsJCXJldCA9 IGRtYV9yZXN2X2dldF9mZW5jZXNfdW5sb2NrZWQob2JqLT5iYXNlLnJlc3YsCj4gKwkJCQkJCSAg ICZleGNsLCAmY291bnQsICZzaGFyZWQpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJl dDsKPiAgIAo+IEBAIC0xNjExLDcgKzE2MTEsNyBAQCBpOTE1X3JlcXVlc3RfYXdhaXRfb2JqZWN0 KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnRvLAo+ICAgCQkJZG1hX2ZlbmNlX3B1dChzaGFyZWRbaV0p Owo+ICAgCQlrZnJlZShzaGFyZWQpOwo+ICAgCX0gZWxzZSB7Cj4gLQkJZXhjbCA9IGRtYV9yZXN2 X2dldF9leGNsX3JjdShvYmotPmJhc2UucmVzdik7Cj4gKwkJZXhjbCA9IGRtYV9yZXN2X2dldF9l eGNsX3VubG9ja2VkKG9iai0+YmFzZS5yZXN2KTsKPiAgIAl9Cj4gICAKPiAgIAlpZiAoZXhjbCkg ewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMKPiBpbmRleCAyNzQ0NTU4ZjMwNTA3 Li4wYmNiN2VhNDQyMDFlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c3dfZmVuY2UuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuYwo+ IEBAIC01ODIsNyArNTgyLDcgQEAgaW50IGk5MTVfc3dfZmVuY2VfYXdhaXRfcmVzZXJ2YXRpb24o c3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlLAo+ICAgCQlzdHJ1Y3QgZG1hX2ZlbmNlICoqc2hh cmVkOwo+ICAgCQl1bnNpZ25lZCBpbnQgY291bnQsIGk7Cj4gICAKPiAtCQlyZXQgPSBkbWFfcmVz dl9nZXRfZmVuY2VzX3JjdShyZXN2LCAmZXhjbCwgJmNvdW50LCAmc2hhcmVkKTsKPiArCQlyZXQg PSBkbWFfcmVzdl9nZXRfZmVuY2VzX3VubG9ja2VkKHJlc3YsICZleGNsLCAmY291bnQsICZzaGFy ZWQpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJldDsKPiAgIAo+IEBAIC02MDYsNyAr NjA2LDcgQEAgaW50IGk5MTVfc3dfZmVuY2VfYXdhaXRfcmVzZXJ2YXRpb24oc3RydWN0IGk5MTVf c3dfZmVuY2UgKmZlbmNlLAo+ICAgCQkJZG1hX2ZlbmNlX3B1dChzaGFyZWRbaV0pOwo+ICAgCQlr ZnJlZShzaGFyZWQpOwo+ICAgCX0gZWxzZSB7Cj4gLQkJZXhjbCA9IGRtYV9yZXN2X2dldF9leGNs X3JjdShyZXN2KTsKPiArCQlleGNsID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfdW5sb2NrZWQocmVzdik7 Cj4gICAJfQo+ICAgCj4gICAJaWYgKHJldCA+PSAwICYmIGV4Y2wgJiYgZXhjbC0+b3BzICE9IGV4 Y2x1ZGUpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uYwo+IGluZGV4IDU2ZGY4NmU1Zjc0MDAuLjFhY2E2 MDUwN2JiMTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uYwo+IEBAIC05MTUsOCArOTE1LDcgQEAg aW50IG1zbV9nZW1fY3B1X3ByZXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHVpbnQzMl90 IG9wLCBrdGltZV90ICp0aW1lb3V0KQo+ICAgCQlvcCAmIE1TTV9QUkVQX05PU1lOQyA/IDAgOiB0 aW1lb3V0X3RvX2ppZmZpZXModGltZW91dCk7Cj4gICAJbG9uZyByZXQ7Cj4gICAKPiAtCXJldCA9 IGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3Uob2JqLT5yZXN2LCB3cml0ZSwKPiAtCQkJCQkJICB0 cnVlLCAgcmVtYWluKTsKPiArCXJldCA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF91bmxvY2tlZChv YmotPnJlc3YsIHdyaXRlLCB0cnVlLCByZW1haW4pOwo+ICAgCWlmIChyZXQgPT0gMCkKPiAgIAkJ cmV0dXJuIHJlbWFpbiA9PSAwID8gLUVCVVNZIDogLUVUSU1FRE9VVDsKPiAgIAllbHNlIGlmIChy ZXQgPCAwKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9kaXNwbnY1MC93 bmR3LmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9kaXNwbnY1MC93bmR3LmMKPiBpbmRleCAw Y2IxZjlkODQ4ZDNlLi44ZDA0OGJhY2Q2ZjAyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L2Rpc3BudjUwL3duZHcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1 L2Rpc3BudjUwL3duZHcuYwo+IEBAIC01NjEsNyArNTYxLDcgQEAgbnY1MF93bmR3X3ByZXBhcmVf ZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRl KQo+ICAgCQkJYXN5dy0+aW1hZ2UuaGFuZGxlWzBdID0gY3R4ZG1hLT5vYmplY3QuaGFuZGxlOwo+ ICAgCX0KPiAgIAo+IC0JYXN5dy0+c3RhdGUuZmVuY2UgPSBkbWFfcmVzdl9nZXRfZXhjbF9yY3Uo bnZiby0+Ym8uYmFzZS5yZXN2KTsKPiArCWFzeXctPnN0YXRlLmZlbmNlID0gZG1hX3Jlc3ZfZ2V0 X2V4Y2xfdW5sb2NrZWQobnZiby0+Ym8uYmFzZS5yZXN2KTsKPiAgIAlhc3l3LT5pbWFnZS5vZmZz ZXRbMF0gPSBudmJvLT5vZmZzZXQ7Cj4gICAKPiAgIAlpZiAod25kdy0+ZnVuYy0+cHJlcGFyZSkg ewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2dlbS5jIGIv ZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9nZW0uYwo+IGluZGV4IGE3MGU4MjQxM2Zh NzUuLmJjNmIwOWVlOWI1NTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUv bm91dmVhdV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZ2Vt LmMKPiBAQCAtOTI4LDggKzkyOCw4IEBAIG5vdXZlYXVfZ2VtX2lvY3RsX2NwdV9wcmVwKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJCXJldHVybiAtRU5PRU5UOwo+ICAg CW52Ym8gPSBub3V2ZWF1X2dlbV9vYmplY3QoZ2VtKTsKPiAgIAo+IC0JbHJldCA9IGRtYV9yZXN2 X3dhaXRfdGltZW91dF9yY3UobnZiby0+Ym8uYmFzZS5yZXN2LCB3cml0ZSwgdHJ1ZSwKPiAtCQkJ CQkJICAgbm9fd2FpdCA/IDAgOiAzMCAqIEhaKTsKPiArCWxyZXQgPSBkbWFfcmVzdl93YWl0X3Rp bWVvdXRfdW5sb2NrZWQobnZiby0+Ym8uYmFzZS5yZXN2LCB3cml0ZSwgdHJ1ZSwKPiArCQkJCQkg ICAgICBub193YWl0ID8gMCA6IDMwICogSFopOwo+ICAgCWlmICghbHJldCkKPiAgIAkJcmV0ID0g LUVCVVNZOwo+ICAgCWVsc2UgaWYgKGxyZXQgPiAwKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3Qv cGFuZnJvc3RfZHJ2LmMKPiBpbmRleCBjYTA3MDk4YTYxNDE5Li5lZWY1YjYzMmVlMGNlIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9kcnYuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9kcnYuYwo+IEBAIC0zMTEsOCArMzEx LDggQEAgcGFuZnJvc3RfaW9jdGxfd2FpdF9ibyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAo+ICAgCWlmICghZ2VtX29iaikKPiAgIAkJcmV0dXJuIC1FTk9FTlQ7Cj4gICAKPiAt CXJldCA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3UoZ2VtX29iai0+cmVzdiwgdHJ1ZSwKPiAt CQkJCQkJICB0cnVlLCB0aW1lb3V0KTsKPiArCXJldCA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF91 bmxvY2tlZChnZW1fb2JqLT5yZXN2LCB0cnVlLAo+ICsJCQkJCSAgICAgdHJ1ZSwgdGltZW91dCk7 Cj4gICAJaWYgKCFyZXQpCj4gICAJCXJldCA9IHRpbWVvdXQgPyAtRVRJTUVET1VUIDogLUVCVVNZ Owo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9q b2IuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9qb2IuYwo+IGluZGV4IDYw MDNjZmViMTMyMjEuLjJkZjNlOTk5YTM4ZDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3BhbmZyb3N0L3BhbmZyb3N0X2pvYi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0 L3BhbmZyb3N0X2pvYi5jCj4gQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGF0aWMgdm9pZCBwYW5mcm9z dF9hY3F1aXJlX29iamVjdF9mZW5jZXMoc3RydWN0IGRybV9nZW1fb2JqZWN0ICoqYm9zLAo+ICAg CWludCBpOwo+ICAgCj4gICAJZm9yIChpID0gMDsgaSA8IGJvX2NvdW50OyBpKyspCj4gLQkJaW1w bGljaXRfZmVuY2VzW2ldID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfcmN1KGJvc1tpXS0+cmVzdik7Cj4g KwkJaW1wbGljaXRfZmVuY2VzW2ldID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfdW5sb2NrZWQoYm9zW2ld LT5yZXN2KTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgcGFuZnJvc3RfYXR0YWNoX29iamVj dF9mZW5jZXMoc3RydWN0IGRybV9nZW1fb2JqZWN0ICoqYm9zLAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24v cmFkZW9uX2dlbS5jCj4gaW5kZXggMDVlYTJmMzlmNjI2MS4uMWEzOGIwYmYzNmQxMSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2dlbS5jCj4gQEAgLTEyNSw3ICsxMjUsNyBAQCBzdGF0 aWMgaW50IHJhZGVvbl9nZW1fc2V0X2RvbWFpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmos Cj4gICAJfQo+ICAgCWlmIChkb21haW4gPT0gUkFERU9OX0dFTV9ET01BSU5fQ1BVKSB7Cj4gICAJ CS8qIEFza2luZyBmb3IgY3B1IGFjY2VzcyB3YWl0IGZvciBvYmplY3QgaWRsZSAqLwo+IC0JCXIg PSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KHJvYmotPnRiby5iYXNlLnJlc3YsIHRydWUsIHRy dWUsIDMwICogSFopOwo+ICsJCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQocm9i ai0+dGJvLmJhc2UucmVzdiwgdHJ1ZSwgdHJ1ZSwgMzAgKiBIWik7Cj4gICAJCWlmICghcikKPiAg IAkJCXIgPSAtRUJVU1k7Cj4gICAKPiBAQCAtNDc0LDcgKzQ3NCw3IEBAIGludCByYWRlb25fZ2Vt X2J1c3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAl9Cj4g ICAJcm9iaiA9IGdlbV90b19yYWRlb25fYm8oZ29iaik7Cj4gICAKPiAtCXIgPSBkbWFfcmVzdl90 ZXN0X3NpZ25hbGVkX3JjdShyb2JqLT50Ym8uYmFzZS5yZXN2LCB0cnVlKTsKPiArCXIgPSBkbWFf cmVzdl90ZXN0X3NpZ25hbGVkX3VubG9ja2VkKHJvYmotPnRiby5iYXNlLnJlc3YsIHRydWUpOwo+ ICAgCWlmIChyID09IDApCj4gICAJCXIgPSAtRUJVU1k7Cj4gICAJZWxzZQo+IEBAIC01MDMsNyAr NTAzLDcgQEAgaW50IHJhZGVvbl9nZW1fd2FpdF9pZGxlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJfQo+ICAgCXJvYmogPSBnZW1fdG9fcmFkZW9uX2JvKGdv YmopOwo+ICAgCj4gLQlyZXQgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KHJvYmotPnRiby5i YXNlLnJlc3YsIHRydWUsIHRydWUsIDMwICogSFopOwo+ICsJcmV0ID0gZG1hX3Jlc3Zfd2FpdF90 aW1lb3V0X3VubG9ja2VkKHJvYmotPnRiby5iYXNlLnJlc3YsIHRydWUsIHRydWUsIDMwICogSFop Owo+ICAgCWlmIChyZXQgPT0gMCkKPiAgIAkJciA9IC1FQlVTWTsKPiAgIAllbHNlIGlmIChyZXQg PCAwKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5jIGIv ZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYwo+IGluZGV4IGUzN2M5YTU3YTdjMzYu LmExOWJlM2Y4YTIxOGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRl b25fbW4uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX21uLmMKPiBAQCAt NjYsOCArNjYsOCBAQCBzdGF0aWMgYm9vbCByYWRlb25fbW5faW52YWxpZGF0ZShzdHJ1Y3QgbW11 X2ludGVydmFsX25vdGlmaWVyICptbiwKPiAgIAkJcmV0dXJuIHRydWU7Cj4gICAJfQo+ICAgCj4g LQlyID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwgdHJ1ZSwg ZmFsc2UsCj4gLQkJCQkgICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gKwlyID0gZG1hX3Jl c3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKGJvLT50Ym8uYmFzZS5yZXN2LCB0cnVlLCBmYWxzZSwK PiArCQkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gICAJaWYgKHIgPD0gMCkKPiAgIAkJ RFJNX0VSUk9SKCIoJWxkKSBmYWlsZWQgdG8gd2FpdCBmb3IgdXNlciBib1xuIiwgcik7Cj4gICAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYyBiL2RyaXZlcnMvZ3B1 L2RybS90dG0vdHRtX2JvLmMKPiBpbmRleCBjYTFiMDk4YjZhNTYxLi4yMTVjYWQzMTQ5NjIxIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vdHRtL3R0bV9iby5jCj4gQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgaW50IHR0 bV9ib19jbGVhbnVwX3JlZnMoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKPiAgIAlzdHJ1 Y3QgZG1hX3Jlc3YgKnJlc3YgPSAmYm8tPmJhc2UuX3Jlc3Y7Cj4gICAJaW50IHJldDsKPiAgIAo+ IC0JaWYgKGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfcmN1KHJlc3YsIHRydWUpKQo+ICsJaWYgKGRt YV9yZXN2X3Rlc3Rfc2lnbmFsZWRfdW5sb2NrZWQocmVzdiwgdHJ1ZSkpCj4gICAJCXJldCA9IDA7 Cj4gICAJZWxzZQo+ICAgCQlyZXQgPSAtRUJVU1k7Cj4gQEAgLTMwNiw4ICszMDYsOCBAQCBzdGF0 aWMgaW50IHR0bV9ib19jbGVhbnVwX3JlZnMoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywK PiAgIAkJCWRtYV9yZXN2X3VubG9jayhiby0+YmFzZS5yZXN2KTsKPiAgIAkJc3Bpbl91bmxvY2so JmJvLT5iZGV2LT5scnVfbG9jayk7Cj4gICAKPiAtCQlscmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1l b3V0X3JjdShyZXN2LCB0cnVlLCBpbnRlcnJ1cHRpYmxlLAo+IC0JCQkJCQkgMzAgKiBIWik7Cj4g KwkJbHJldCA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF91bmxvY2tlZChyZXN2LCB0cnVlLCBpbnRl cnJ1cHRpYmxlLAo+ICsJCQkJCQkgICAgICAzMCAqIEhaKTsKPiAgIAo+ICAgCQlpZiAobHJldCA8 IDApCj4gICAJCQlyZXR1cm4gbHJldDsKPiBAQCAtNDA5LDggKzQwOSw4IEBAIHN0YXRpYyB2b2lk IHR0bV9ib19yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKQo+ICAgCQkJLyogTGFzdCByZXNvcnQs IGlmIHdlIGZhaWwgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUKPiAgIAkJCSAqIGZlbmNlcyBi bG9jayBmb3IgdGhlIEJPIHRvIGJlY29tZSBpZGxlCj4gICAJCQkgKi8KPiAtCQkJZG1hX3Jlc3Zf d2FpdF90aW1lb3V0X3JjdShiby0+YmFzZS5yZXN2LCB0cnVlLCBmYWxzZSwKPiAtCQkJCQkJICAz MCAqIEhaKTsKPiArCQkJZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKGJvLT5iYXNlLnJl c3YsIHRydWUsIGZhbHNlLAo+ICsJCQkJCQkgICAgICAgMzAgKiBIWik7Cj4gICAJCX0KPiAgIAo+ ICAgCQlpZiAoYm8tPmJkZXYtPmZ1bmNzLT5yZWxlYXNlX25vdGlmeSkKPiBAQCAtNDIwLDcgKzQy MCw3IEBAIHN0YXRpYyB2b2lkIHR0bV9ib19yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKQo+ICAg CQl0dG1fbWVtX2lvX2ZyZWUoYmRldiwgJmJvLT5tZW0pOwo+ICAgCX0KPiAgIAo+IC0JaWYgKCFk bWFfcmVzdl90ZXN0X3NpZ25hbGVkX3JjdShiby0+YmFzZS5yZXN2LCB0cnVlKSB8fAo+ICsJaWYg KCFkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3VubG9ja2VkKGJvLT5iYXNlLnJlc3YsIHRydWUpIHx8 Cj4gICAJICAgICFkbWFfcmVzdl90cnlsb2NrKGJvLT5iYXNlLnJlc3YpKSB7Cj4gICAJCS8qIFRo ZSBCTyBpcyBub3QgaWRsZSwgcmVzdXJyZWN0IGl0IGZvciBkZWxheWVkIGRlc3Ryb3kgKi8KPiAg IAkJdHRtX2JvX2ZsdXNoX2FsbF9mZW5jZXMoYm8pOwo+IEBAIC0xMTE2LDE0ICsxMTE2LDE0IEBA IGludCB0dG1fYm9fd2FpdChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAo+ICAgCWxvbmcg dGltZW91dCA9IDE1ICogSFo7Cj4gICAKPiAgIAlpZiAobm9fd2FpdCkgewo+IC0JCWlmIChkbWFf cmVzdl90ZXN0X3NpZ25hbGVkX3JjdShiby0+YmFzZS5yZXN2LCB0cnVlKSkKPiArCQlpZiAoZG1h X3Jlc3ZfdGVzdF9zaWduYWxlZF91bmxvY2tlZChiby0+YmFzZS5yZXN2LCB0cnVlKSkKPiAgIAkJ CXJldHVybiAwOwo+ICAgCQllbHNlCj4gICAJCQlyZXR1cm4gLUVCVVNZOwo+ICAgCX0KPiAgIAo+ IC0JdGltZW91dCA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3UoYm8tPmJhc2UucmVzdiwgdHJ1 ZSwKPiAtCQkJCQkJICAgICAgaW50ZXJydXB0aWJsZSwgdGltZW91dCk7Cj4gKwl0aW1lb3V0ID0g ZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKGJvLT5iYXNlLnJlc3YsIHRydWUsCj4gKwkJ CQkJCSBpbnRlcnJ1cHRpYmxlLCB0aW1lb3V0KTsKPiAgIAlpZiAodGltZW91dCA8IDApCj4gICAJ CXJldHVybiB0aW1lb3V0Owo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92Z2Vt L3ZnZW1fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZmVuY2UuYwo+IGluZGV4 IDI5MDJkYzZlNjRmYWYuLjAxMGE4MjQwNWUzNzQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3ZnZW0vdmdlbV9mZW5jZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9m ZW5jZS5jCj4gQEAgLTE1MSw4ICsxNTEsOCBAQCBpbnQgdmdlbV9mZW5jZV9hdHRhY2hfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAo+ICAgCS8qIENoZWNrIGZvciBhIGNvbmZsaWN0 aW5nIGZlbmNlICovCj4gICAJcmVzdiA9IG9iai0+cmVzdjsKPiAtCWlmICghZG1hX3Jlc3ZfdGVz dF9zaWduYWxlZF9yY3UocmVzdiwKPiAtCQkJCQkJICBhcmctPmZsYWdzICYgVkdFTV9GRU5DRV9X UklURSkpIHsKPiArCWlmICghZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF91bmxvY2tlZChyZXN2LAo+ ICsJCQkJCSAgICAgYXJnLT5mbGFncyAmIFZHRU1fRkVOQ0VfV1JJVEUpKSB7Cj4gICAJCXJldCA9 IC1FQlVTWTsKPiAgIAkJZ290byBlcnJfZmVuY2U7Cj4gICAJfQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0 aW8vdmlydGdwdV9pb2N0bC5jCj4gaW5kZXggNjY5ZjJlZTM5NTE1NC4uYWIwMTBjOGUzMjgxNiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmlydGlvL3ZpcnRncHVfaW9jdGwuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9pb2N0bC5jCj4gQEAgLTQ1MSwxMCAr NDUxLDEwIEBAIHN0YXRpYyBpbnQgdmlydGlvX2dwdV93YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJCXJldHVybiAtRU5PRU5UOwo+ICAgCj4gICAJaWYg KGFyZ3MtPmZsYWdzICYgVklSVEdQVV9XQUlUX05PV0FJVCkgewo+IC0JCXJldCA9IGRtYV9yZXN2 X3Rlc3Rfc2lnbmFsZWRfcmN1KG9iai0+cmVzdiwgdHJ1ZSk7Cj4gKwkJcmV0ID0gZG1hX3Jlc3Zf dGVzdF9zaWduYWxlZF91bmxvY2tlZChvYmotPnJlc3YsIHRydWUpOwo+ICAgCX0gZWxzZSB7Cj4g LQkJcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShvYmotPnJlc3YsIHRydWUsIHRydWUs Cj4gLQkJCQkJCXRpbWVvdXQpOwo+ICsJCXJldCA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF91bmxv Y2tlZChvYmotPnJlc3YsIHRydWUsIHRydWUsCj4gKwkJCQkJCSAgICAgdGltZW91dCk7Cj4gICAJ fQo+ICAgCWlmIChyZXQgPT0gMCkKPiAgIAkJcmV0ID0gLUVCVVNZOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9iby5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfYm8uYwo+IGluZGV4IDA0ZGQ0OWM0YzI1NzIuLjE5ZTFjZTIzODQyYTkgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYm8uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2JvLmMKPiBAQCAtNzQzLDcgKzc0Myw3IEBAIHN0YXRp YyBpbnQgdm13X3VzZXJfYm9fc3luY2NwdV9ncmFiKHN0cnVjdCB2bXdfdXNlcl9idWZmZXJfb2Jq ZWN0ICp1c2VyX2JvLAo+ICAgCWlmIChmbGFncyAmIGRybV92bXdfc3luY2NwdV9hbGxvd19jcykg ewo+ICAgCQlsb25nIGxyZXQ7Cj4gICAKPiAtCQlscmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0 X3JjdQo+ICsJCWxyZXQgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQKPiAgIAkJCShi by0+YmFzZS5yZXN2LCB0cnVlLCB0cnVlLAo+ICAgCQkJIG5vbmJsb2NrID8gMCA6IE1BWF9TQ0hF RFVMRV9USU1FT1VUKTsKPiAgIAkJaWYgKCFscmV0KQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L2RtYS1yZXN2LmggYi9pbmNsdWRlL2xpbnV4L2RtYS1yZXN2LmgKPiBpbmRleCBkNDRhNzdl OGE3ZTM0Li45OWNmYjdhZjk2NmI4IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGludXgvZG1hLXJl c3YuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvZG1hLXJlc3YuaAo+IEBAIC0yNDYsNyArMjQ2LDcg QEAgZG1hX3Jlc3ZfZ2V0X2V4Y2woc3RydWN0IGRtYV9yZXN2ICpvYmopCj4gICB9Cj4gICAKPiAg IC8qKgo+IC0gKiBkbWFfcmVzdl9nZXRfZXhjbF9yY3UgLSBnZXQgdGhlIHJlc2VydmF0aW9uIG9i amVjdCdzCj4gKyAqIGRtYV9yZXN2X2dldF9leGNsX3VubG9ja2VkIC0gZ2V0IHRoZSByZXNlcnZh dGlvbiBvYmplY3Qncwo+ICAgICogZXhjbHVzaXZlIGZlbmNlLCB3aXRob3V0IGxvY2sgaGVsZC4K PiAgICAqIEBvYmo6IHRoZSByZXNlcnZhdGlvbiBvYmplY3QKPiAgICAqCj4gQEAgLTI1Nyw3ICsy NTcsNyBAQCBkbWFfcmVzdl9nZXRfZXhjbChzdHJ1Y3QgZG1hX3Jlc3YgKm9iaikKPiAgICAqIFRo ZSBleGNsdXNpdmUgZmVuY2Ugb3IgTlVMTCBpZiBub25lCj4gICAgKi8KPiAgIHN0YXRpYyBpbmxp bmUgc3RydWN0IGRtYV9mZW5jZSAqCj4gLWRtYV9yZXN2X2dldF9leGNsX3JjdShzdHJ1Y3QgZG1h X3Jlc3YgKm9iaikKPiArZG1hX3Jlc3ZfZ2V0X2V4Y2xfdW5sb2NrZWQoc3RydWN0IGRtYV9yZXN2 ICpvYmopCj4gICB7Cj4gICAJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4gICAKPiBAQCAtMjc4 LDE2ICsyNzgsMTYgQEAgdm9pZCBkbWFfcmVzdl9hZGRfc2hhcmVkX2ZlbmNlKHN0cnVjdCBkbWFf cmVzdiAqb2JqLCBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSk7Cj4gICAKPiAgIHZvaWQgZG1hX3Jl c3ZfYWRkX2V4Y2xfZmVuY2Uoc3RydWN0IGRtYV9yZXN2ICpvYmosIHN0cnVjdCBkbWFfZmVuY2Ug KmZlbmNlKTsKPiAgIAo+IC1pbnQgZG1hX3Jlc3ZfZ2V0X2ZlbmNlc19yY3Uoc3RydWN0IGRtYV9y ZXN2ICpvYmosCj4gLQkJCSAgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqcGZlbmNlX2V4Y2wsCj4gLQkJ CSAgICB1bnNpZ25lZCAqcHNoYXJlZF9jb3VudCwKPiAtCQkJICAgIHN0cnVjdCBkbWFfZmVuY2Ug KioqcHNoYXJlZCk7Cj4gK2ludCBkbWFfcmVzdl9nZXRfZmVuY2VzX3VubG9ja2VkKHN0cnVjdCBk bWFfcmVzdiAqb2JqLAo+ICsJCQkJIHN0cnVjdCBkbWFfZmVuY2UgKipwZmVuY2VfZXhjbCwKPiAr CQkJCSB1bnNpZ25lZCAqcHNoYXJlZF9jb3VudCwKPiArCQkJCSBzdHJ1Y3QgZG1hX2ZlbmNlICoq KnBzaGFyZWQpOwo+ICAgCj4gICBpbnQgZG1hX3Jlc3ZfY29weV9mZW5jZXMoc3RydWN0IGRtYV9y ZXN2ICpkc3QsIHN0cnVjdCBkbWFfcmVzdiAqc3JjKTsKPiAgIAo+IC1sb25nIGRtYV9yZXN2X3dh aXRfdGltZW91dF9yY3Uoc3RydWN0IGRtYV9yZXN2ICpvYmosIGJvb2wgd2FpdF9hbGwsIGJvb2wg aW50ciwKPiAtCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7Cj4gK2xvbmcgZG1hX3Jl c3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKHN0cnVjdCBkbWFfcmVzdiAqb2JqLCBib29sIHdhaXRf YWxsLCBib29sIGludHIsCj4gKwkJCQkgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0KTsKPiAgIAo+ IC1ib29sIGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfcmN1KHN0cnVjdCBkbWFfcmVzdiAqb2JqLCBi b29sIHRlc3RfYWxsKTsKPiArYm9vbCBkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3VubG9ja2VkKHN0 cnVjdCBkbWFfcmVzdiAqb2JqLCBib29sIHRlc3RfYWxsKTsKPiAgIAo+ICAgI2VuZGlmIC8qIF9M SU5VWF9SRVNFUlZBVElPTl9IICovCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK 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.3 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,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 B61E4C2B9F7 for ; Wed, 26 May 2021 10:57:51 +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 7062E6109E for ; Wed, 26 May 2021 10:57:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7062E6109E 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 ECFAA6EC77; Wed, 26 May 2021 10:57:50 +0000 (UTC) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2085.outbound.protection.outlook.com [40.107.220.85]) by gabe.freedesktop.org (Postfix) with ESMTPS id EF5746EC77; Wed, 26 May 2021 10:57:49 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D6UaDl6TQUW6mcs5Snfboa+G4cPnYx5soocc8SDfssjmYzMoDjjMHyuN8uuJYRk9a3C74VMBuWe6oJ6SEOFmpBo4nif+RJ5cJJELrxMEIayUoLa9P/64gYUtABKew1Ttnp7Kk7KX51M0j3z7Z3gIg+KytfrRS0t77nQN6nlK9BLGktVNIseayGC2k40TggPqq4qGjZFYimLDktoZzEIr2zwrJW3OE0BwhYa866lX3RozWVGyZc9A9Rv7VeZKj6QcoXRgfpd0mepwLmxVBczb6wdN3hQ2CUxq/vqJDNnqnZEOf20gd3vsB8AdNdGXSwfoZqwIOfaTJlNPSGcZLTDDRA== 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=6PD0y0mcVt5S9xEM5Cm9cqZQutG1/6PDl98KMRZeI/c=; b=XxImacR/AIHESO0914XG0g4yFWEx6yy5cYulRVdvtnLH7Meyt5kjMasx43d0X3vd3LbwyxKM8mKAMMzS6nRodi420fv5twHYUxUQEvXZdXK1JfkFWBMcwEA7xRu3Gm49hWJMjySRhkeFxxqbK4nDEd7cL/l9Vcjlm/4ec0iY2Qw0ocOxD48y7kSvNZcRPMNDTgw9Uj63UHqGY2nrnYiiDXcMkQClawPJ0vl7iMUbEWwUwqy33AqF64N8BDXUKkdFanX4NKv4Dl+Wr0IpJimyBG5ePtkxQY7QFdoqW3u1DPhsrRrgGe+JOwhrgiM7A6F5vvvQrdsxz9yrtZgN3jAcWw== 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=6PD0y0mcVt5S9xEM5Cm9cqZQutG1/6PDl98KMRZeI/c=; b=XAeAxp5iz21lo4M1uBwOFVW8w0zel47QNRn3jfzlyXGIOodPFn2454V7LTkAPrDB5hifb3dlbeJfXUcHD+uzXqGydvO/tCKqTI2QXLU6PM5WPZygvLEEjoCFUv0MhvmjMnw/RTg3bkoevTKx4GaFcMP3l2MS1KoTLt0exbBb2+M= 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 BL0PR12MB2483.namprd12.prod.outlook.com (2603:10b6:207:4c::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.25; Wed, 26 May 2021 10:57:45 +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.4150.027; Wed, 26 May 2021 10:57:45 +0000 Subject: Re: [PATCH 2/7] dma-buf: Rename dma_resv helpers from _rcu to _unlocked (v2) To: Jason Ekstrand , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org References: <20210525211753.1086069-1-jason@jlekstrand.net> <20210525211753.1086069-3-jason@jlekstrand.net> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <82e16239-e8ea-8b03-6a90-c7d18a5f8a91@amd.com> Date: Wed, 26 May 2021 12:57:40 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 In-Reply-To: <20210525211753.1086069-3-jason@jlekstrand.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-Originating-IP: [2a02:908:1252:fb60:7216:94bf:3812:bd88] X-ClientProxiedBy: AM4PR0101CA0068.eurprd01.prod.exchangelabs.com (2603:10a6:200:41::36) 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:7216:94bf:3812:bd88] (2a02:908:1252:fb60:7216:94bf:3812:bd88) by AM4PR0101CA0068.eurprd01.prod.exchangelabs.com (2603:10a6:200:41::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.20 via Frontend Transport; Wed, 26 May 2021 10:57:43 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c5570215-f867-4ff8-17f2-08d9203517ba X-MS-TrafficTypeDiagnostic: BL0PR12MB2483: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:741; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: X2aYRBSkrJZpeVNPgnJ0bokx1ZaMJbRPQY8rk2j/B1twd0DCq4AH4uMEm2PQ4agP9yRjNbvyxF0NW4pSYLL7+Nnwfb55+c7AxlZGe7qNq/YztC+61raAyhmJpwtN2/kH7d999oIAqW+FfTQHf6REVDIU+YZ0/hO73X1ckyVc2ZiVj1/8BTH8rfBnPoarEdjUf1pSerI06wnEgc15VexYzgUyJAdx8O7tVEdZOclKCpFNQAiCx/G0HTS0Mc5fYPYhk99bzJQWGdF9XsOhir8G41dnyDsdK7TzvRIH0eups6D8zatQ3cAOYRAYBd2HZGZDSJni0AhqU9kxMUis6hjS5CLacyH8n4LqYaIfcTukTM5Wx99P143rIfOLdWQLoz1pR4Bh9IcWfwE56gUYzKmJ/Kvg6b5rafyL+/73s7rj6pzL7D7QzY4XZYOu3cvAoFb/gExK24wbRH0ebX3n9J+TRFfmVCrMwUk5Ogxoe0ZjKG4qfUtlas/ALc4NbllFA73+TRNlOqpjBrHRS/NUKVDDRtar/4Ffez0248cqe1Qxk6HDnl+M4Abj+cdgsAwCkz4pSjKE4jI0zSWbxCiHy9NS2rM0paBTMOQsWpwyfDcaMch5QCg8fdtP74O6abP9NcVQV0mRbLHR2weKGjH2dQrSXcdaJu/+lmslb0MajmK6o6k= 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)(376002)(136003)(396003)(366004)(346002)(39860400002)(2906002)(6486002)(31696002)(54906003)(30864003)(5660300002)(7416002)(86362001)(66556008)(66476007)(31686004)(2616005)(478600001)(83380400001)(8676002)(66574015)(186003)(316002)(38100700002)(8936002)(52116002)(16526019)(4326008)(66946007)(36756003)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?ZHdsQVh4VjBLZ1VkdmR5ZVBGc2Q5U2NvNFl3cTkzOS91U25NTGExcHQ0cnBJ?= =?utf-8?B?WEN1K2dDdEtwRXJJUU56T2hlL1JBOXV5MEd5OWExL1IwSlJzYkUxdllPb3V4?= =?utf-8?B?UGVIaEJEN0IvU3BiYTlXYTJOSzhNMDdMWTVTWDR0bXFaMUloMWYzRkhKWko2?= =?utf-8?B?TFNFV2dFbGpnV2NGV0k4ZnU4MDB3UEpqM0FQSDllQWVXRmQrL20vVktqK2hJ?= =?utf-8?B?bWJZd0E2a2g1aE8zTzkvOGhUbXhEMVJEQmRIaEI4OVJFTlhNNmpFaWlZRjJo?= =?utf-8?B?ZmNZc3o0YTFCTURVREdRc0pYcWR4Q1k1M2tqNVZGZ2JTd1UwWjh1UnNLRXhu?= =?utf-8?B?V0w2YnJxVHppNWhnOFdIN3lSZlk1MldvYzI5eDBtSGt1dE9HTXJDeU5KYThl?= =?utf-8?B?MjF4anQ5dlQzWnk1ZkNMV0F0NGh1MTVzYURsTUJPa2lxQ0pnNzF0aTFiM1Zw?= =?utf-8?B?eEkyekFxNVJsYTJnZ1pXTi9YeFFPekg4cFh6NUJUVWVFc2REc2F1dFhILzRP?= =?utf-8?B?bldkQXJodFZvVmlaN1hYZ29PZTExN0FhVVVZS3pqdXROL0hWNTdHRERWa2ZW?= =?utf-8?B?TE5EUEFYeWlHRjRjTFp2Y09xc0JqWDk3NGJpVkFlOFRnR0hhVFJ5bXZUc0pP?= =?utf-8?B?bjFVNmtDVnZBRHlPTDB0RDgyQUw4eEJ6aUt4QWZTbEx0S0NrSFFIckQ4TjdN?= =?utf-8?B?eXUxOWpxdmh6OUVPUWFwVUdWRnk2RmNWY3pic2lrRUVRMFovSmZ2dU9NN0V2?= =?utf-8?B?MHNHYktOTU5qa01oSXorVlk1OXpRZ3lGQ3k2S1JuQ0ZGQlh1aGFJaUJnY0oz?= =?utf-8?B?N2g4NGoxbWxFU2p4NjBzMDd0dTF3WDJjQmovVmYwNklqSDhrTWdhcjZjeG4y?= =?utf-8?B?UVNFVktmN3ZsN3YwanpieG0vTS9ieVNZTlgxS05oZTNjdGx1bjRyeHlGRUpo?= =?utf-8?B?RmxwejR5OUNnZldlblB6S0FIaUhxRVZjbjdTVUFWMTFCM3lJYTMrMFp6WEpu?= =?utf-8?B?ZzNsVzZPYU5ESGI3aEp3d01WYytWNW1PcDJESGRzZUI3cjRRSnh6SzZLSlEr?= =?utf-8?B?aFlXOFlSTzRPV0dycEhWSmN5RGdOMHc0dU9qQXZ0cTNXSU14ZkFUSzEzQ1kz?= =?utf-8?B?aXlQU0FKazVMOWpYa0U3TGlvWStUM0ZNaTZFa21OaXJOQllkRko1OFMvV0pP?= =?utf-8?B?SUFOTGNQQ2QxM3p1aVBPTU95ZnU0QmtuOGRBa2ZLRkJ6TWh3ZmZMWjJyV1hs?= =?utf-8?B?NFkrWUx6alN0THlFbVYvNEplekVNd0l0d3NXSm5qSWlnYnQrUG1oMWY5UUly?= =?utf-8?B?VE1IcE5MWVR5T1NlUVFxSnNMcTVmdE5iN3d3WXByNmh6Yyswamt2c2c4K0xS?= =?utf-8?B?VlFHSXgwZFlzTHE1bTRsNDZYOUMvdUg1b2lqTytEa0VoNEQ5RTlSeWswWHAz?= =?utf-8?B?aW9DT2ZtblBoaldLQVZxcHBEdmtXMEVUb3ZZczkvWS84TExUSjVyUGJXaFJ6?= =?utf-8?B?bWRWWEo4RTJzNHpqeFhVS2RsV3k2VnJvdjFkR3J5bitYOWZzdGxWcStGdnNY?= =?utf-8?B?Q0xpcGNFRitlL3dIOEloZmtIbzJZRUtSSkFYa3pRSEVxNDZvODRLcXRTa0lX?= =?utf-8?B?TkNsWDJpK044dzFHRkNjeEZ3R29Cbm1EUUZCTXo4QUFBVU96RGluTFBVQmx0?= =?utf-8?B?YjdCbWovakZhMGZKRTZBTkwvcGdFZEZFNjgycWtCa2hTb3hzTG1NZ3pYbURO?= =?utf-8?B?T2NObnlsdit4dGN0QWZaWmhlQmxKREY2ZEtVOUh0MjcxYlNJcFB3UGpXWFVp?= =?utf-8?B?aEIwRTJ5ZjJ0M2VTblJmZWtNR0ltQysyWkxFKzdBSThhZ3hRb1FQWWM0ZGVK?= =?utf-8?Q?9ByKZvNVs9FHY?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: c5570215-f867-4ff8-17f2-08d9203517ba X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3775.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2021 10:57:45.7270 (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: TzGyZPHqd3cCT978LisvGKMH+oG6QHTH24+YIJFK1TqIhwnaIODlHRCr9CT7xRq2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB2483 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: Daniel Vetter , Huang Rui , VMware Graphics , Gerd Hoffmann , Thomas Zimmermann , Sean Paul Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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. 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 */