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 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 01F2BC001DE for ; Wed, 26 Jul 2023 01:18:33 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.570012.891236 (Exim 4.92) (envelope-from ) id 1qOTAN-0002U3-FY; Wed, 26 Jul 2023 01:18:15 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 570012.891236; Wed, 26 Jul 2023 01:18:15 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qOTAN-0002Tw-Cq; Wed, 26 Jul 2023 01:18:15 +0000 Received: by outflank-mailman (input) for mailman id 570012; Wed, 26 Jul 2023 01:18:14 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1qOTAM-0002Tq-Fp for xen-devel@lists.xenproject.org; Wed, 26 Jul 2023 01:18:14 +0000 Received: from mx0b-0039f301.pphosted.com (mx0b-0039f301.pphosted.com [148.163.137.242]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 47a4a0a0-2b52-11ee-8613-37d641c3527e; Wed, 26 Jul 2023 03:18:09 +0200 (CEST) Received: from pps.filterd (m0174680.ppops.net [127.0.0.1]) by mx0b-0039f301.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36PFb7rm015969; Wed, 26 Jul 2023 01:18:04 GMT Received: from eur01-db5-obe.outbound.protection.outlook.com (mail-db5eur01lp2059.outbound.protection.outlook.com [104.47.2.59]) by mx0b-0039f301.pphosted.com (PPS) with ESMTPS id 3s2cyajgbn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 26 Jul 2023 01:18:03 +0000 Received: from VI1PR03MB3710.eurprd03.prod.outlook.com (2603:10a6:803:31::18) by AS2PR03MB8931.eurprd03.prod.outlook.com (2603:10a6:20b:5e4::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6609.33; Wed, 26 Jul 2023 01:17:59 +0000 Received: from VI1PR03MB3710.eurprd03.prod.outlook.com ([fe80::68d2:d90f:ac32:7c85]) by VI1PR03MB3710.eurprd03.prod.outlook.com ([fe80::68d2:d90f:ac32:7c85%3]) with mapi id 15.20.6631.026; Wed, 26 Jul 2023 01:17:58 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 47a4a0a0-2b52-11ee-8613-37d641c3527e ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kvGYdWVqaXNIqqDduQmkTY+tRzP7ZvGIAk6sOMclSCcJDQ3Tx+lhQFNdNzkHl/gRmZXkV+zVqgYZlzYj6KYXjtOJFPBvJh4MwykNZ8zsHhcNh1G4aqmaiTzT6lDx67mlbmAFnB3zPEArZcMiDvb5KRHnwgUofWmHLAJ6puauzeMrWNzXdNiTppS4lltE1cF4nTOnP1J0Qwzz12o22p1BwVtw0nVPHxww1lF0QpfwtQaz8qpU5LZg+7BXfz/4jwWbj2BW2ozm6atfkm7b2O5hmzh2DhpjSMO0QRlxSos3OX4Mp36sOh18mS6WEP61M8Hmkv+a4YtjkQJ6wa+NzwKT8A== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1wny++3Z+5dF2zHE07NGn++JV3fjfjds8cr0EYH+O24=; b=NT8QtnYTrh55NDUduA0TMX7+N64A5IOONMFVvksymwcNrcu/4n5omNvkwc2hmkV8LOvRHXZ/NLE1c0ytvZpRE2FyeNQa0124BluyyskqAeyChY6kj4vB8a9kLrkto1MP5H4fb1fOl76XWyOEkAryEZb/ZiKlFogqjp41Y/Em1w5HER3KfUE9UiceorVrDbSb84fNoeWFGZpyHnhxFnjKSFKw9MrmJo56BD/o302bnlVqyTqaBlQuYAJ3bP6SyKiWe8FHcepeKC6+HwTWlBdPnjvvIN3TPsXRg5MwvSmFyivTZhOKzNi9oNeKr+oaO87SeU4Dc4cbUSgwKLhWbufzyg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1wny++3Z+5dF2zHE07NGn++JV3fjfjds8cr0EYH+O24=; b=V/plGfWoNgwus4x9eHTCC0XdugPRPTXB3/9GoELp3kb9aMc2fzs4AJ72gXMfQ02WyoggKSqtJDy9ZGMapqNXfstpZUjJMUVq000/3CPn1mbmoYRtm9Uy7LnNjOMgQlorHewLO8zJP3YN4tDXdeIClPrkX+lzLFqzpOHfkJ+JEdTdESkfxfBnQ8FRVbpWvtjPU/K5Se/miwd4qe9NZNIGcDPjFFee0NQvIaP2gTVDvhf5aLjSh4dgP0UrlWYDxdIfRe3WkTSe84BAMSVZ++qtUi5iBY1x5B8IYwYOWrw2GSTrLToQWuJpjugbD0FkriaiGT1H3b4N2CXxrSpZAsvybg== From: Volodymyr Babchuk To: =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= CC: "xen-devel@lists.xenproject.org" , Oleksandr Andrushchenko , Jan Beulich Subject: Re: [PATCH v8 02/13] vpci: use per-domain PCI lock to protect vpci structure Thread-Topic: [PATCH v8 02/13] vpci: use per-domain PCI lock to protect vpci structure Thread-Index: AQHZuqGrLMJPz1ipBEu4urExXp8yi6/CgxUAgAWEoIA= Date: Wed, 26 Jul 2023 01:17:58 +0000 Message-ID: <87ila7cvy2.fsf@epam.com> References: <20230720003205.1828537-1-volodymyr_babchuk@epam.com> <20230720003205.1828537-3-volodymyr_babchuk@epam.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: mu4e 1.8.9; emacs 28.2 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: VI1PR03MB3710:EE_|AS2PR03MB8931:EE_ x-ms-office365-filtering-correlation-id: e8013b9a-9ca7-4b3e-02bf-08db8d76262c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: gIFFt1yrw0CVrdZU382iRzhM86v1xaPFSIqFxvJLTe3vYUhZ3KLHBe6ZCHsjLc3t9n1G9GAc86JYzIc6/xXavbNH26qAydug859fEDuxyq5ypRLE1ZMSzY7ANw9aEOkcfcqsy3pzdDcsh9aCV5f4vXYsWmo+CwRCmlJOV9aoqzyTCxUzCOM7+QaiuxOfRGibwc+MgWNF7+Bl4hLcqEXaqzT/XK86OBb39mBJPXYSOCYRTwiruqbK0RkttNyHgXVQcE/5OZQIv0BxBSub86Y4Xrigmq4Wf5LkwvI42aKKzm336Wn0J8nHwNolfdkDl3kzzqnL9uWStR6IvojG71XIRBnuqpS5s7bgifgfCB/K5fZmiPBtG43rFBH6u+uxKm+6N3wKVcUEJaDDBq8QZGOiDgiY7zm3J2V6chhM8AiZmkGvO40DbVeQj5LLpjGi898pkDZwQ/y28N7Vy15y7VktZY8YGU3g4K97+k1XSqIBfIdllrcXkzb7qJImxkcFT81z5x6yO0nvFHfJnvAx8Q3xdnkHCwe3t1dJVSCKqFAf3kN3mpwAC0sLMj2ufvCI8ibxVYmwpUxQBmccYnI7MbSLL6BB8ykXDDHTEgVwU1wIjsnIAy0p90BnNROpPl7SPlVQa5M9YeqtXMLS7DOr+wx1ew== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR03MB3710.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(396003)(366004)(39860400002)(346002)(136003)(376002)(451199021)(122000001)(66946007)(64756008)(2616005)(83380400001)(66476007)(66446008)(6916009)(66556008)(4326008)(316002)(71200400001)(6512007)(6486002)(478600001)(54906003)(186003)(91956017)(26005)(55236004)(6506007)(2906002)(76116006)(30864003)(36756003)(38070700005)(86362001)(41300700001)(38100700002)(8676002)(5660300002)(8936002)(579004)(309714004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TFMrUEZFZU9TbXkxUUtpZjA0Q0Fia2VmR1pzUUhsbm5zODgwakJMbFJBcUhy?= =?utf-8?B?empnUHhyMUJxZHdndlVmdUJNZU93eG1JaHV6RGcxQTRhd1FoUGVIYmFQenRZ?= =?utf-8?B?V2VZWmhUUVIrRHJQWUgwd05Kc2JTKy9KM3lZTW1NSXUvZkNBNzg3d1Rka0hy?= =?utf-8?B?TmJOMGd1QzNDTW9rSzZvc0s1R0l6Q1JnckJOa3dEb0xvNUdMNTdCV2RMR0lX?= =?utf-8?B?SE5QeG5SYkhwZzUzR0IyQUhYVHN5Vzk1UWRDUU5xL3lPemFBcUpTT3N0ekNv?= =?utf-8?B?eXVpYnp1eCtwblIySkdvQWtld3F0ZitWcVBxWXJnQTJCZ0FKRklkWXJWSFFi?= =?utf-8?B?T25EcDJyRk52UG92MldTNDhsMzFCcXZXQzdlSlRWNmpTYWI5cEZEOVk0Wmxw?= =?utf-8?B?ZmEzYUU3MS9hRnNBSURtcTY2dk1wcUtVMVZQTUpiL1FIVzl2TFMwZVdXQWE5?= =?utf-8?B?ZFRTVWs1SUppeVlya09TdmIrNGxlcjZxMDhXeWxjYUI5TStuSitHQjkvbE9x?= =?utf-8?B?SE5uaUhWZ1pnKzR5c0w5bVJNdUthd3FyNXF4RGhsMUNmb0dXUGg3L2pBQXYz?= =?utf-8?B?aFJoTnM2YWxmS05WeXY0UGthczNjSkFTZGZ4YW03dDdHZmkvZW8yeFh0eVYy?= =?utf-8?B?Q05FMlJ0TUN1YnhCNGN1WUlvM0RISTJkYzA3S3d1WG5vRURPcTFpT3VFeTdW?= =?utf-8?B?aEVNOEpZQ0NGWGxScER0L0tEV2d0bVZDb1d0aUtqVVlIRE1HYmhxeTg0ZUNw?= =?utf-8?B?SUJwb054K3RIYmVtTElzcXBaQVNEYWVtdmQ1Y1lJeVBMZU1tUjZTKzljMmpH?= =?utf-8?B?enpXbFEycnpZV1Zia1c2eWJNd0h4aUFwdDc3THh5WVFkS29DOHdseDlQNFpp?= =?utf-8?B?b1RQdURrNUhkQXo3VzYxbWtNRnZIaXNLRE4zYmF3RWppVWxNV3A2QXdKVDQy?= =?utf-8?B?UU9vbnh2aUFwY0pjeC9FREFyNUJtRjZkc1dmb0JLR0JEbUJLcFNKb1pVdEZ4?= =?utf-8?B?b2liVkRhV2F6YStPb01NcTd6ZXpPd1M4cnhzRzIrWkREampPL0tGL1JBODdr?= =?utf-8?B?cFZJU25QT3hLMWlYenpoTVNvOXVzeS9zRGRyZnlsV3EySllNVU11clQrMXlP?= =?utf-8?B?dThZdmx1V3RsS0lHa2dsRTgxRjNlNHNKRzBVb21GeER2cjduMHVnclZGdEhW?= =?utf-8?B?d3cyK0NwU0t3amUwcWZnVjJTV044d1NYS2RNUDJFOHh3cmRJTGsvdEJ4bmNv?= =?utf-8?B?ZEtOYVVwWFRtSVl3alJQelFkaG9YV0JGWWlwM21MMWo1aCtKVmVWclpUNUVW?= =?utf-8?B?MGYzc3B6SWkxR0lkM1FQa2k2K2NuUHNhTzNBWjd0MEplOWNNQzVQK05ISmw5?= =?utf-8?B?eHdCT2Nta1BrMFVQM1NabXVtMmFGdlRnaURUSDBVRmJ3cU5qTHU0eVRtM3Uy?= =?utf-8?B?R1dEM05hYnJwUHBMdjZOUEVSREJTSkdmZElteEJwWGxBSW9EV3E4VExQbjdv?= =?utf-8?B?d2pTV251KzFoNm13T05vdUliNlh4K2JpU2NHRGRRdGRSY211cUR5WU0zQVFO?= =?utf-8?B?YmJNRiswbDk1a28yS1VDTlRVOTJzdVlkSzJ4bTlCWFYyRTV5S20rRDZPYXR5?= =?utf-8?B?cWIzdVpuOTNJT294U0xRajF6MmVhWEx6ZEQydVFVdU5qK3cxeWY5dTJoVnNs?= =?utf-8?B?K1ZCZFZ2cVBYWFQ2b3dkMG14NHBMYTROZ2JuaGYvZnJyZ2hvMUJuT0ZoZTVx?= =?utf-8?B?QlpCUjVDbE84ZERiOVRFU1BZb1hTQnZzZFl5amY1T1QvWXhoVGNTVVU5VE5k?= =?utf-8?B?cVgwTmVRb0wwcmloTEc1WnR2d0FZZ2tkQzBHTEZGcmFObGEweER3VkdKMlRM?= =?utf-8?B?RjVlM2c4TmEzdmw1R25tVS96OU5iUitFRUY1bTliY25uOWdnSklrVVhVVXd3?= =?utf-8?B?a0lNaWdPSnNrb0RFbm5OWnYvclh3cmN3cnVBVkVWOGxCVHBudlQ1VjdJamdN?= =?utf-8?B?amFKZk1qZ0hGNzZCV1BVQW45Q0ZCaTBjdjZyL0QyVUMwL3J2VDRhdkJEUVFR?= =?utf-8?B?dUlLQ2c4V2t6N2JmNzhybVcyT0dWSGh0U0lBUHIxTUt1MTlVTjg0K3o2c0pO?= =?utf-8?B?bVo5T1YzNDI3WWF6M0hBakg2M2hyYlh0MkFJeFVUaTg5RGtwU0x1elpTR3Fz?= =?utf-8?B?bXc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <334F9A6A514D684BA3ECF4CA19D880C7@eurprd03.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: VI1PR03MB3710.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e8013b9a-9ca7-4b3e-02bf-08db8d76262c X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Jul 2023 01:17:58.8600 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: txeIr4RqsYFjhZS0fPr2ECshBd6nlFoV8awboG0G0IO7ryj28HVLnI5/XO+3ptGckxhZTU2PdAWgwuWE0pKN/YxmtW2wCbvsPWHunMT7CnI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR03MB8931 X-Proofpoint-ORIG-GUID: pGoUGR6hArc6j32MRKmv5zajHf2EJ4O9 X-Proofpoint-GUID: pGoUGR6hArc6j32MRKmv5zajHf2EJ4O9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-25_14,2023-07-25_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 impostorscore=0 adultscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 spamscore=0 suspectscore=0 clxscore=1015 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2306200000 definitions=main-2307260010 DQpIaSBSb2dlciwNCg0KUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+IHdy aXRlczoNCg0KPiBPbiBUaHUsIEp1bCAyMCwgMjAyMyBhdCAxMjozMjozMUFNICswMDAwLCBWb2xv ZHlteXIgQmFiY2h1ayB3cm90ZToNCj4+IEZyb206IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxv bGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4NCj4+IA0KPj4gVXNlIGEgcHJldmlvdXNs eSBpbnRyb2R1Y2VkIHBlci1kb21haW4gcmVhZC93cml0ZSBsb2NrIHRvIGNoZWNrDQo+PiB3aGV0 aGVyIHZwY2kgaXMgcHJlc2VudCwgc28gd2UgYXJlIHN1cmUgdGhlcmUgYXJlIG5vIGFjY2Vzc2Vz IHRvIHRoZQ0KPj4gY29udGVudHMgb2YgdGhlIHZwY2kgc3RydWN0IGlmIG5vdC4gVGhpcyBsb2Nr IGNhbiBiZSB1c2VkIChhbmQgaW4gYQ0KPj4gZmV3IGNhc2VzIGlzIHVzZWQgcmlnaHQgYXdheSkg c28gdGhhdCB2cGNpIHJlbW92YWwgY2FuIGJlIHBlcmZvcm1lZA0KPj4gd2hpbGUgaG9sZGluZyB0 aGUgbG9jayBpbiB3cml0ZSBtb2RlLiBQcmV2aW91c2x5IHN1Y2ggcmVtb3ZhbCBjb3VsZA0KPj4g cmFjZSB3aXRoIHZwY2lfcmVhZCBmb3IgZXhhbXBsZS4NCj4NCj4gVGhpcyBJIHRoaW5rIG5lZWRz IHRvIHN0YXRlIHRoZSBsb2NraW5nIG9yZGVyIG9mIHRoZSBwZXItZG9tYWluDQo+IHBjaV9sb2Nr IHdydCB0aGUgdnBjaS0+bG9jay4gIEFGQUlDVCB0aGF0J3MgZC0+cGNpX2xvY2sgZmlyc3QsIHRo ZW4NCj4gdnBjaS0+bG9jay4NCg0KV2lsbCBhZGQsIHRoYW5rcy4NCg0KPj4gMS4gUGVyLWRvbWFp bidzIHBjaV9yd2xvY2sgaXMgdXNlZCB0byBwcm90ZWN0IHBkZXYtPnZwY2kgc3RydWN0dXJlDQo+ PiBmcm9tIGJlaW5nIHJlbW92ZWQuDQo+PiANCj4+IDIuIFdyaXRpbmcgdGhlIGNvbW1hbmQgcmVn aXN0ZXIgYW5kIFJPTSBCQVIgcmVnaXN0ZXIgbWF5IHRyaWdnZXINCj4+IG1vZGlmeV9iYXJzIHRv IHJ1biwgd2hpY2ggaW4gdHVybiBtYXkgYWNjZXNzIG11bHRpcGxlIHBkZXZzIHdoaWxlDQo+PiBj aGVja2luZyBmb3IgdGhlIGV4aXN0aW5nIEJBUidzIG92ZXJsYXAuIFRoZSBvdmVybGFwcGluZyBj aGVjaywgaWYNCj4+IGRvbmUgdW5kZXIgdGhlIHJlYWQgbG9jaywgcmVxdWlyZXMgdnBjaS0+bG9j ayB0byBiZSBhY3F1aXJlZCBvbiBib3RoDQo+PiBkZXZpY2VzIGJlaW5nIGNvbXBhcmVkLCB3aGlj aCBtYXkgcHJvZHVjZSBhIGRlYWRsb2NrLiBJdCBpcyBub3QNCj4+IHBvc3NpYmxlIHRvIHVwZ3Jh ZGUgcmVhZCBsb2NrIHRvIHdyaXRlIGxvY2sgaW4gc3VjaCBhIGNhc2UuIFNvLCBpbg0KPj4gb3Jk ZXIgdG8gcHJldmVudCB0aGUgZGVhZGxvY2ssIHVzZSBkLT5wY2lfbG9jayBpbnN0ZWFkLiBUbyBw cmV2ZW50DQo+PiBkZWFkbG9jayB3aGlsZSBsb2NraW5nIGJvdGggaHdkb20tPnBjaV9sb2NrIGFu ZCBkb21feGVuLT5wY2lfbG9jaywNCj4+IGFsd2F5cyBsb2NrIGh3ZG9tIGZpcnN0Lg0KPj4gDQo+ PiBBbGwgb3RoZXIgY29kZSwgd2hpY2ggZG9lc24ndCBsZWFkIHRvIHBkZXYtPnZwY2kgZGVzdHJ1 Y3Rpb24gYW5kIGRvZXMNCj4+IG5vdCBhY2Nlc3MgbXVsdGlwbGUgcGRldnMgYXQgdGhlIHNhbWUg dGltZSwgY2FuIHN0aWxsIHVzZSBhDQo+PiBjb21iaW5hdGlvbiBvZiB0aGUgcmVhZCBsb2NrIGFu ZCBwZGV2LT52cGNpLT5sb2NrLg0KPj4gDQo+PiAzLiBEcm9wIGNvbnN0IHF1YWxpZmllciB3aGVy ZSB0aGUgbmV3IHJ3bG9jayBpcyB1c2VkIGFuZCB0aGlzIGlzDQo+PiBhcHByb3ByaWF0ZS4NCj4+ IA0KPj4gNC4gRG8gbm90IGNhbGwgcHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzIHdpdGggYW55IGxv Y2tzIGhlbGQuIEZvciB0aGF0DQo+PiB1bmxvY2sgcHJpb3IgdGhlIGNhbGwgYW5kIHJlLWFjcXVp cmUgdGhlIGxvY2tzIGFmdGVyLiBBZnRlcg0KPj4gcmUtYWNxdWlyaW5nIHRoZSBsb2NrIHRoZXJl IGlzIG5vIG5lZWQgdG8gY2hlY2sgaWYgcGRldi0+dnBjaSBleGlzdHM6DQo+PiAgLSBpbiBhcHBs eV9tYXAgYmVjYXVzZSBvZiB0aGUgY29udGV4dCBpdCBpcyBjYWxsZWQgKG5vIHJhY2UgY29uZGl0 aW9uDQo+PiAgICBwb3NzaWJsZSkNCj4+ICAtIGZvciBNU0kvTVNJLVggZGVidWcgY29kZSBiZWNh dXNlIGl0IGlzIGNhbGxlZCBhdCB0aGUgZW5kIG9mDQo+PiAgICBwZGV2LT52cGNpIGFjY2VzcyBh bmQgbm8gZnVydGhlciBhY2Nlc3MgdG8gcGRldi0+dnBjaSBpcyBtYWRlDQo+DQo+IEkgYXNzdW1l IHRoYXQncyB2cGNpX21zaXhfYXJjaF9wcmludCgpOiB0aGVyZSBhcmUgZnVydGhlciBhY2Nlc3Nl cyB0bw0KPiBwZGV2LT52cGNpLCBidXQgdGhvc2UgdXNlIHRoZSBtc2l4IGxvY2FsIHZhcmlhYmxl LCB3aGljaCBob2xkcyBhIGNvcHkNCj4gb2YgdGhlIHBvaW50ZXIgaW4gcGRldi0+dnBjaS0+bXNp eCwgc28gdGhhdCBsYXN0IHNlbnRlbmNlIGlzIG5vdCB0cnVlDQo+IEknbSBhZnJhaWQuDQoNClll cywgSSBzZWUuIEkgYW0gd29uZGVyaW5nIGlmIHdlIGNhbiBtZW1vcml6ZSBzYmRmIGFuZCBjYWxs IHBjaV9nZXRfcGRldigpDQphZnRlciByZS1hY3F1aXJpbmcgdGhlIGxvY2suIE9mIGNvdXJzZSwg dGhlcmUgaXMgYSBzbGlnaHQgY2hhbmNlIHRoYXQgd2UNCndpbGwgZ2V0IGFub3RoZXIgcGRldiB3 aXRoIHRoZSBzYW1lIHNiZGYuLi4NCg0KPiBIb3dldmVyIHRoZSBjb2RlIGFscmVhZHkgdHJ5IHRv IGNhdGVyIGZvciB0aGUgcGRldiBnb2luZyBhd2F5LCBhbmQNCj4gaGVuY2UgaXQncyBJTU8gZmlu ZS4gIElPVzogeW91ciBjaGFuZ2UgZG9lc24ndCBtYWtlIHRoaXMgYW55IGJldHRlciBvcg0KPiB3 b3JzZS4NCj4NCj4+IA0KPj4gNS4gSW50cm9kdWNlIHBjaWRldnNfdHJ5bG9jaywgc28gdGhlcmUg aXMgYSBwb3NzaWJpbGl0eSB0byB0cnkgbG9ja2luZw0KPj4gdGhlIHBjaWRldidzIGxvY2suDQo+ DQo+IEknbSBjb25mdXNlZCBieSB0aGlzIGFkZGl0aW9uLCB0aGUgbW9yZSB0aGF0J3Mgbm8gdXNl ZCBhbnl3aGVyZS4gIENhbg0KPiB5b3UgZGVmZXIgdGhlIGFkZGl0aW9uIHVudGlsIHRoZSBwYXRj aCB0aGF0IG1ha2VzIHVzZSBvZiBpdD8NCj4NCg0KWXVwLiBUaGlzIGlzIGFub3RoZXIgcmViYXNp bmcgYXJ0aWZhY3QuIFRoZXJlIHdlcmUgdXNlcnMgZm9yIHRoaXMNCmZ1bmN0aW9uIGl0IHRoZSBw cmV2aW91cyB2ZXJzaW9uIG9mIHRoZSBwYXRjaC4NCg0KPj4gDQo+PiA2LiBVc2UgZC0+cGNpX2xv Y2sgYXJvdW5kIGZvcl9lYWNoX3BkZXYgYW5kIHBjaV9nZXRfcGRldl9ieV9kb21haW4NCj4+IHdo aWxlIGFjY2Vzc2luZyBwZGV2cyBpbiB2cGNpIGNvZGUuDQo+PiANCj4+IFN1Z2dlc3RlZC1ieTog Um9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+DQo+PiBTdWdnZXN0ZWQtYnk6 IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4NCj4+IFNpZ25lZC1vZmYtYnk6IE9sZWtz YW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4NCj4+ IFNpZ25lZC1vZmYtYnk6IFZvbG9keW15ciBCYWJjaHVrIDx2b2xvZHlteXJfYmFiY2h1a0BlcGFt LmNvbT4NCj4+IA0KPj4gLS0tDQo+PiANCj4+IENoYW5nZXMgaW4gdjg6DQo+PiAgLSBjaGFuZ2Vk IGQtPnZwY2lfbG9jayB0byBkLT5wY2lfbG9jaw0KPj4gIC0gaW50cm9kdWNpbmcgZC0+cGNpX2xv Y2sgaW4gYSBzZXBhcmF0ZSBwYXRjaA0KPj4gIC0gZXh0ZW5kZWQgbG9ja2VkIHJlZ2lvbiBpbiB2 cGNpX3Byb2Nlc3NfcGVuZGluZw0KPj4gIC0gcmVtb3ZlZCBwY2lkZXZzX2xvY2tpcyB2cGNpX2R1 bXBfbXNpKCkNCj4+ICAtIHJlbW92ZWQgc29tZSBjaGFuZ2VzIGFzIHRoZXkgYXJlIG5vdCBuZWVk ZWQgd2l0aA0KPj4gICAgdGhlIG5ldyBsb2NraW5nIHNjaGVtZQ0KPj4gIC0gYWRkZWQgaGFuZGxp bmcgZm9yIGh3ZG9tICYmIGRvbV94ZW4gY2FzZQ0KPj4gLS0tDQo+PiAgeGVuL2FyY2gveDg2L2h2 bS92bXNpLmMgICAgICAgfCAgNCArKysNCj4+ICB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9wY2ku YyB8ICA3ICsrKysrDQo+PiAgeGVuL2RyaXZlcnMvdnBjaS9oZWFkZXIuYyAgICAgfCAxOCArKysr KysrKysrKysNCj4+ICB4ZW4vZHJpdmVycy92cGNpL21zaS5jICAgICAgICB8IDE0ICsrKysrKysr LS0NCj4+ICB4ZW4vZHJpdmVycy92cGNpL21zaXguYyAgICAgICB8IDUyICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tDQo+PiAgeGVuL2RyaXZlcnMvdnBjaS92cGNpLmMgICAgICAg fCA0NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tDQo+PiAgeGVuL2luY2x1ZGUveGVu L3BjaS5oICAgICAgICAgfCAgMSArDQo+PiAgNyBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0aW9u cygrKSwgMTMgZGVsZXRpb25zKC0pDQo+PiANCj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv aHZtL3Ztc2kuYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm1zaS5jDQo+PiBpbmRleCAzY2Q0OTIzMDYw Li44YzFiZDY2YjljIDEwMDY0NA0KPj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXNpLmMNCj4+ ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm1zaS5jDQo+PiBAQCAtODk1LDYgKzg5NSw4IEBAIGlu dCB2cGNpX21zaXhfYXJjaF9wcmludChjb25zdCBzdHJ1Y3QgdnBjaV9tc2l4ICptc2l4KQ0KPj4g IHsNCj4+ICAgICAgdW5zaWduZWQgaW50IGk7DQo+PiAgDQo+PiArICAgIEFTU0VSVChyd19pc19s b2NrZWQoJm1zaXgtPnBkZXYtPmRvbWFpbi0+cGNpX2xvY2spKTsNCj4+ICsNCj4+ICAgICAgZm9y ICggaSA9IDA7IGkgPCBtc2l4LT5tYXhfZW50cmllczsgaSsrICkNCj4+ICAgICAgew0KPj4gICAg ICAgICAgY29uc3Qgc3RydWN0IHZwY2lfbXNpeF9lbnRyeSAqZW50cnkgPSAmbXNpeC0+ZW50cmll c1tpXTsNCj4+IEBAIC05MTMsNyArOTE1LDkgQEAgaW50IHZwY2lfbXNpeF9hcmNoX3ByaW50KGNv bnN0IHN0cnVjdCB2cGNpX21zaXggKm1zaXgpDQo+PiAgICAgICAgICAgICAgc3RydWN0IHBjaV9k ZXYgKnBkZXYgPSBtc2l4LT5wZGV2Ow0KPj4gIA0KPj4gICAgICAgICAgICAgIHNwaW5fdW5sb2Nr KCZtc2l4LT5wZGV2LT52cGNpLT5sb2NrKTsNCj4+ICsgICAgICAgICAgICByZWFkX3VubG9jaygm cGRldi0+ZG9tYWluLT5wY2lfbG9jayk7DQo+PiAgICAgICAgICAgICAgcHJvY2Vzc19wZW5kaW5n X3NvZnRpcnFzKCk7DQo+PiArICAgICAgICAgICAgcmVhZF9sb2NrKCZwZGV2LT5kb21haW4tPnBj aV9sb2NrKTsNCj4NCj4gVGhpcyBzaG91bGQgYmUgYSByZWFkX3RyeWxvY2soKSwgbXVjaCBsaWtl IHRoZSBzcGluX3RyeWxvY2soKSBiZWxvdy4NCg0KdnBjaV9kdW1wX21zaSgpIGV4cGVjdHMgdGhh dCB2cGNpX21zaXhfYXJjaF9wcmludCgpIHdpbGwgcmV0dXJuIGhvbGRpbmcNCnRoaXMgbG9jay4g SSBjYW4gcmV3b3JrIGJvdGggZnVuY3Rpb25zLCBvZiBjb3Vyc2UuIEJ1dCB0aGVuIHdlIHdpbGwg aW4NCnNpdHVhdGlvbiB3aGVuIHdlIG5lZWQgdG8ga25vd24gZXhhY3QgYmVoYXZpb3Igb2YgdnBj aV9kdW1wX21zaSgpIHdydCBvZg0KbG9ja3MgaW4gdGhlIGNhbGxpbmcgY29kZS4uLg0KDQo+DQo+ PiAgICAgICAgICAgICAgLyogTkI6IHdlIGFzc3VtZSB0aGF0IHBkZXYgY2Fubm90IGdvIGF3YXkg Zm9yIGFuIGFsaXZlIGRvbWFpbi4gKi8NCj4+ICAgICAgICAgICAgICBpZiAoICFwZGV2LT52cGNp IHx8ICFzcGluX3RyeWxvY2soJnBkZXYtPnZwY2ktPmxvY2spICkNCj4+ICAgICAgICAgICAgICAg ICAgcmV0dXJuIC1FQlVTWTsNCj4+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9wY2kuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jDQo+PiBpbmRleCA1YjQ2MzJl YWQyLi42Zjg2OTJjZDljIDEwMDY0NA0KPj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv cGNpLmMNCj4+ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jDQo+PiBAQCAtNTcs NiArNTcsMTEgQEAgdm9pZCBwY2lkZXZzX2xvY2sodm9pZCkNCj4+ICAgICAgc3Bpbl9sb2NrX3Jl Y3Vyc2l2ZSgmX3BjaWRldnNfbG9jayk7DQo+PiAgfQ0KPj4gIA0KPj4gK2ludCBwY2lkZXZzX3Ry eWxvY2sodm9pZCkNCj4+ICt7DQo+PiArICAgIHJldHVybiBzcGluX3RyeWxvY2tfcmVjdXJzaXZl KCZfcGNpZGV2c19sb2NrKTsNCj4+ICt9DQo+PiArDQo+PiAgdm9pZCBwY2lkZXZzX3VubG9jayh2 b2lkKQ0KPj4gIHsNCj4+ICAgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZfcGNpZGV2c19sb2Nr KTsNCj4+IEBAIC0xMTQ0LDcgKzExNDksOSBAQCBzdGF0aWMgdm9pZCBfX2h3ZG9tX2luaXQgc2V0 dXBfb25lX2h3ZG9tX2RldmljZShjb25zdCBzdHJ1Y3Qgc2V0dXBfaHdkb20gKmN0eHQsDQo+PiAg ICAgIH0gd2hpbGUgKCBkZXZmbiAhPSBwZGV2LT5kZXZmbiAmJg0KPj4gICAgICAgICAgICAgICAg UENJX1NMT1QoZGV2Zm4pID09IFBDSV9TTE9UKHBkZXYtPmRldmZuKSApOw0KPj4gIA0KPj4gKyAg ICB3cml0ZV9sb2NrKCZjdHh0LT5kLT5wY2lfbG9jayk7DQo+PiAgICAgIGVyciA9IHZwY2lfYWRk X2hhbmRsZXJzKHBkZXYpOw0KPj4gKyAgICB3cml0ZV91bmxvY2soJmN0eHQtPmQtPnBjaV9sb2Nr KTsNCj4+ICAgICAgaWYgKCBlcnIgKQ0KPj4gICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgInNl dHVwIG9mIHZQQ0kgZm9yIGQlZCBmYWlsZWQ6ICVkXG4iLA0KPj4gICAgICAgICAgICAgICAgIGN0 eHQtPmQtPmRvbWFpbl9pZCwgZXJyKTsNCj4+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy92cGNp L2hlYWRlci5jIGIveGVuL2RyaXZlcnMvdnBjaS9oZWFkZXIuYw0KPj4gaW5kZXggYjQxNTU2ZDAw Ny4uMjc4MGZjYWU3MiAxMDA2NDQNCj4+IC0tLSBhL3hlbi9kcml2ZXJzL3ZwY2kvaGVhZGVyLmMN Cj4+ICsrKyBiL3hlbi9kcml2ZXJzL3ZwY2kvaGVhZGVyLmMNCj4+IEBAIC0xNTIsNiArMTUyLDcg QEAgYm9vbCB2cGNpX3Byb2Nlc3NfcGVuZGluZyhzdHJ1Y3QgdmNwdSAqdikNCj4+ICAgICAgICAg IGlmICggcmMgPT0gLUVSRVNUQVJUICkNCj4+ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCj4+ ICANCj4+ICsgICAgICAgIHdyaXRlX2xvY2soJnYtPmRvbWFpbi0+cGNpX2xvY2spOw0KPj4gICAg ICAgICAgc3Bpbl9sb2NrKCZ2LT52cGNpLnBkZXYtPnZwY2ktPmxvY2spOw0KPj4gICAgICAgICAg LyogRGlzYWJsZSBtZW1vcnkgZGVjb2RpbmcgdW5jb25kaXRpb25hbGx5IG9uIGZhaWx1cmUuICov DQo+PiAgICAgICAgICBtb2RpZnlfZGVjb2Rpbmcodi0+dnBjaS5wZGV2LA0KPj4gQEAgLTE3MCw2 ICsxNzEsNyBAQCBib29sIHZwY2lfcHJvY2Vzc19wZW5kaW5nKHN0cnVjdCB2Y3B1ICp2KQ0KPj4g ICAgICAgICAgICAgICAqIGZhaWx1cmUuDQo+PiAgICAgICAgICAgICAgICovDQo+PiAgICAgICAg ICAgICAgdnBjaV9yZW1vdmVfZGV2aWNlKHYtPnZwY2kucGRldik7DQo+PiArICAgICAgICB3cml0 ZV91bmxvY2soJnYtPmRvbWFpbi0+cGNpX2xvY2spOw0KPj4gICAgICB9DQo+DQo+IFRoZSBoYW5k bGluZyBpbiB2cGNpX3Byb2Nlc3NfcGVuZGluZygpIHdydCB2cGNpX3JlbW92ZV9kZXZpY2UoKSBp cw0KPiByYWN5IGFuZCB3aWxsIG5lZWQgc29tZSB0aGlua2luZyB0byBnZXQgaXQgc29sdmVkLiAg WW91ciBjaGFuZ2UNCj4gZG9lc24ndCBtYWtlIGl0IGFueSB3b3JzZSwgYnV0IEkgd291bGQgYWxz byBiZSBmaW5lIHdpdGggYWRkaW5nIGEgbm90ZQ0KPiBpbiB0aGUgY29tbWl0IG1lc3NhZ2UgdGhh dCB2cGNpX3Byb2Nlc3NfcGVuZGluZygpIGlzIG5vdCBhZGp1c3RlZCB0bw0KPiB1c2UgdGhlIG5l dyBsb2NrIGJlY2F1c2UgaXQgbmVlZHMgdG8gYmUgcmV3b3JrZWQgZmlyc3QgaW4gb3JkZXIgdG8g YmUNCj4gc2FmZSBhZ2FpbnN0IGEgY29uY3VycmVudCB2cGNpX3JlbW92ZV9kZXZpY2UoKSBjYWxs Lg0KDQpJdCBpcyByYWN5IGJlY2F1c2Ugd2UgYXJlIGFjY2Vzc2luZyB2LT52cGNpLnBkZXYtPnZw Y2ksIEkgc2VlLiBBdCBsZWFzdA0Kd2UgY2FuIGNoZWNrIGlmIGl0IGlzIG5vdCBOVUxMLi4uDQoN CkJ1dCB0aGUgcHJvYmxlbSBpcyBicm9hZGVyLCBvZiBjb3Vyc2UsIGFzIHZwY2kgc3RydWN0IGNv dWxkIGJlIGRlc3Ryb3llZA0KYW5kIGNyZWF0ZWQgYW5ldy4gVGhpcyBiZWdzIHRoZSBxdWVzdGlv biBpZiB3ZSBzaG91bGQgZGVsYXkNCnZwY2lfcHJvY2Vzc19wZW5kaW5nKCkgaW4gdGhlIGZpcnN0 IHBsYWNlLg0KDQo+PiAgDQo+PiAgICAgIHJldHVybiBmYWxzZTsNCj4+IEBAIC0xODEsOCArMTgz LDIwIEBAIHN0YXRpYyBpbnQgX19pbml0IGFwcGx5X21hcChzdHJ1Y3QgZG9tYWluICpkLCBjb25z dCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwNCj4+ICAgICAgc3RydWN0IG1hcF9kYXRhIGRhdGEgPSB7 IC5kID0gZCwgLm1hcCA9IHRydWUgfTsNCj4+ICAgICAgaW50IHJjOw0KPj4gIA0KPj4gKyAgICBB U1NFUlQocndfaXNfbG9ja2VkKCZkLT5wY2lfbG9jaykpOw0KPj4gKw0KPj4gICAgICB3aGlsZSAo IChyYyA9IHJhbmdlc2V0X2NvbnN1bWVfcmFuZ2VzKG1lbSwgbWFwX3JhbmdlLCAmZGF0YSkpID09 IC1FUkVTVEFSVCApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIC8qDQo+PiArICAgICAgICAgKiBJ dCdzIHNhZmUgdG8gZHJvcCBhbmQgcmVhY3F1aXJlIHRoZSBsb2NrIGluIHRoaXMgY29udGV4dA0K Pj4gKyAgICAgICAgICogd2l0aG91dCByaXNraW5nIHBkZXYgZGlzYXBwZWFyaW5nIGJlY2F1c2Ug ZGV2aWNlcyBjYW5ub3QgYmUNCj4+ICsgICAgICAgICAqIHJlbW92ZWQgdW50aWwgdGhlIGluaXRp YWwgZG9tYWluIGhhcyBiZWVuIHN0YXJ0ZWQuDQo+PiArICAgICAgICAgKi8NCj4+ICsgICAgICAg IHJlYWRfdW5sb2NrKCZkLT5wY2lfbG9jayk7DQo+PiAgICAgICAgICBwcm9jZXNzX3BlbmRpbmdf c29mdGlycXMoKTsNCj4+ICsgICAgICAgIHJlYWRfbG9jaygmZC0+cGNpX2xvY2spOw0KPj4gKyAg ICB9DQo+DQo+IFNpbmNlIHRoaXMgaXMgaW5pdCBvbmx5IGNvZGUgeW91IGNvdWxkIGxpa2VseSBm b3JlZ28gdGhlIHVzYWdlIG9mIHRoZQ0KPiBsb2NrcywgYnV0IEkgZ3Vlc3MgdGhhdCdzIG1vcmUg Y2h1cm4gdGhhbiBqdXN0IHVzaW5nIHRoZW0uICBJbiBhbnkNCj4gY2FzZSwgYXMgdGhpcyBnZXRz IGNhbGxlZCBmcm9tIG1vZGlmeV9iYXJzKCkgdGhlIGxvY2tzIG5lZWQgdG8gYmUNCj4gZHJvcHBl ZC90YWtlbiBpbiB3cml0ZSBtb2RlIChzZWUgY29tbWVudCBiZWxvdykuDQo+DQo+PiAgICAgIHJh bmdlc2V0X2Rlc3Ryb3kobWVtKTsNCj4+ICAgICAgaWYgKCAhcmMgKQ0KPj4gICAgICAgICAgbW9k aWZ5X2RlY29kaW5nKHBkZXYsIGNtZCwgZmFsc2UpOw0KPj4gQEAgLTIyMyw2ICsyMzcsOCBAQCBz dGF0aWMgaW50IG1vZGlmeV9iYXJzKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1aW50MTZf dCBjbWQsIGJvb2wgcm9tX29ubHkpDQo+PiAgICAgIHVuc2lnbmVkIGludCBpOw0KPj4gICAgICBp bnQgcmM7DQo+PiAgDQo+PiArICAgIEFTU0VSVChyd19pc19sb2NrZWQoJnBkZXYtPmRvbWFpbi0+ cGNpX2xvY2spKTsNCj4NCj4gVGhlIGxvY2sgaGVyZSBuZWVkcyB0byBiZSB0YWtlbiBpbiB3cml0 ZSBtb2RlIEkgdGhpbmssIHNvIHRoZSBjb2RlIGNhbg0KPiBzYWZlbHkgaXRlcmF0ZSBvdmVyIHRo ZSBjb250ZW50cyBvZiBlYWNoIHBkZXYtPnZwY2kgYXNzaWduZWQgdG8gdGhlDQo+IGRvbWFpbi4N Cj4NCg0KWWVwLCByZXdvcmtlZC4NCg0KPj4gKw0KPj4gICAgICBpZiAoICFtZW0gKQ0KPj4gICAg ICAgICAgcmV0dXJuIC1FTk9NRU07DQo+PiAgDQo+PiBAQCAtNTAyLDYgKzUxOCw4IEBAIHN0YXRp YyBpbnQgY2ZfY2hlY2sgaW5pdF9iYXJzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KPj4gICAgICBz dHJ1Y3QgdnBjaV9iYXIgKmJhcnMgPSBoZWFkZXItPmJhcnM7DQo+PiAgICAgIGludCByYzsNCj4+ ICANCj4+ICsgICAgQVNTRVJUKHJ3X2lzX2xvY2tlZCgmcGRldi0+ZG9tYWluLT5wY2lfbG9jaykp Ow0KPj4gKw0KPj4gICAgICBzd2l0Y2ggKCBwY2lfY29uZl9yZWFkOChwZGV2LT5zYmRmLCBQQ0lf SEVBREVSX1RZUEUpICYgMHg3ZiApDQo+PiAgICAgIHsNCj4+ICAgICAgY2FzZSBQQ0lfSEVBREVS X1RZUEVfTk9STUFMOg0KPj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3ZwY2kvbXNpLmMgYi94 ZW4vZHJpdmVycy92cGNpL21zaS5jDQo+PiBpbmRleCA4ZjJiNTllNjFhLi5lNjMxNTJjMjI0IDEw MDY0NA0KPj4gLS0tIGEveGVuL2RyaXZlcnMvdnBjaS9tc2kuYw0KPj4gKysrIGIveGVuL2RyaXZl cnMvdnBjaS9tc2kuYw0KPj4gQEAgLTE5MCw2ICsxOTAsOCBAQCBzdGF0aWMgaW50IGNmX2NoZWNr IGluaXRfbXNpKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KPj4gICAgICB1aW50MTZfdCBjb250cm9s Ow0KPj4gICAgICBpbnQgcmV0Ow0KPj4gIA0KPj4gKyAgICBBU1NFUlQocndfaXNfd3JpdGVfbG9j a2VkKCZwZGV2LT5kb21haW4tPnBjaV9sb2NrKSk7DQo+DQo+IEknbSBjb25mdXNlZCBieSB0aGUg ZGlmZmVyZW5jZSBpbiBsb2NrIHJlcXVpcmVtZW50cyBiZXR3ZWVuDQo+IGluaXRfYmFycygpIGFu ZCBpbml0X21zaSgpLiAgSW4gdGhlIGZvcm1lciB5b3UgYXNzZXJ0IGZvciB0aGUgbG9jaw0KPiBi ZWluZyB0YWtlbiBpbiByZWFkIG1vZGUsIHdoaWxlIHRoZSBsYXRlciBhc3NlcnRzIGZvciB3cml0 ZSBtb2RlLg0KPg0KPiBXZSB3YW50IHRvIGRvIGluaXRpYWxpemF0aW9uIGluIHdyaXRlIG1vZGUs IHNvIHRoYXQgbW9kaWZ5X2JhcnMoKQ0KPiBjYWxsZWQgYnkgaW5pdF9iYXJzKCkgaGFzIGV4Y2x1 c2l2ZSBhY2Nlc3MgdG8gdGhlIGNvbnRlbnRzIG9mDQo+IHBkZXYtPnZwY2kuDQo+DQoNClRha2lu ZyBpbnRvIGFjY291bnQgeW91ciBkaXNjdXNzaW9uIHdpdGggSmFuLCBJIHJlbW92ZWQgdGhpcyBB U1NFUlQgYXQgYWxsLiANCg0KPj4gKw0KPj4gICAgICBpZiAoICFwb3MgKQ0KPj4gICAgICAgICAg cmV0dXJuIDA7DQo+PiAgDQo+PiBAQCAtMjY1LDcgKzI2Nyw3IEBAIFJFR0lTVEVSX1ZQQ0lfSU5J VChpbml0X21zaSwgVlBDSV9QUklPUklUWV9MT1cpOw0KPj4gIA0KPj4gIHZvaWQgdnBjaV9kdW1w X21zaSh2b2lkKQ0KPj4gIHsNCj4+IC0gICAgY29uc3Qgc3RydWN0IGRvbWFpbiAqZDsNCj4+ICsg ICAgc3RydWN0IGRvbWFpbiAqZDsNCj4+ICANCj4+ICAgICAgcmN1X3JlYWRfbG9jaygmZG9tbGlz dF9yZWFkX2xvY2spOw0KPj4gICAgICBmb3JfZWFjaF9kb21haW4gKCBkICkNCj4+IEBAIC0yNzcs NiArMjc5LDkgQEAgdm9pZCB2cGNpX2R1bXBfbXNpKHZvaWQpDQo+PiAgDQo+PiAgICAgICAgICBw cmludGsoInZQQ0kgTVNJL01TSS1YIGQlZFxuIiwgZC0+ZG9tYWluX2lkKTsNCj4+ICANCj4+ICsg ICAgICAgIGlmICggIXJlYWRfdHJ5bG9jaygmZC0+cGNpX2xvY2spICkNCj4+ICsgICAgICAgICAg ICBjb250aW51ZTsNCj4+ICsNCj4+ICAgICAgICAgIGZvcl9lYWNoX3BkZXYgKCBkLCBwZGV2ICkN Cj4+ICAgICAgICAgIHsNCj4+ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdnBjaV9tc2kgKm1z aTsNCj4+IEBAIC0zMTgsMTQgKzMyMywxNyBAQCB2b2lkIHZwY2lfZHVtcF9tc2kodm9pZCkNCj4+ ICAgICAgICAgICAgICAgICAgICAgICAqIGhvbGRpbmcgdGhlIGxvY2suDQo+PiAgICAgICAgICAg ICAgICAgICAgICAgKi8NCj4+ICAgICAgICAgICAgICAgICAgICAgIHByaW50aygidW5hYmxlIHRv IHByaW50IGFsbCBNU0ktWCBlbnRyaWVzOiAlZFxuIiwgcmMpOw0KPj4gLSAgICAgICAgICAgICAg ICAgICAgcHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7DQo+PiAtICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsNCj4+ICsgICAgICAgICAgICAgICAgICAgIGdvdG8gcGRldl9kb25lOw0KPj4g ICAgICAgICAgICAgICAgICB9DQo+PiAgICAgICAgICAgICAgfQ0KPj4gIA0KPj4gICAgICAgICAg ICAgIHNwaW5fdW5sb2NrKCZwZGV2LT52cGNpLT5sb2NrKTsNCj4+ICsgcGRldl9kb25lOg0KPj4g KyAgICAgICAgICAgIHJlYWRfdW5sb2NrKCZkLT5wY2lfbG9jayk7DQo+PiAgICAgICAgICAgICAg cHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7DQo+PiArICAgICAgICAgICAgcmVhZF9sb2NrKCZk LT5wY2lfbG9jayk7DQo+DQo+IHJlYWRfdHJ5bG9jaygpLg0KPg0KPiBUaGlzIGlzIG5vdCB2ZXJ5 IHNhZmUsIGFzIHRoZSBsaXN0IGNvdWxkIGJlIG1vZGlmaWVkIHdoaWxlIHRoZSBsb2NrIGlzDQo+ IGRyb3BwZWQsIGJ1dCBpdCdzIGEgZGVidWcga2V5IGhhbmRsZXIgc28gSSdtIG5vdCB2ZXJ5IGNv bmNlcm5lZC4NCj4gSG93ZXZlciB3ZSBzaG91bGQgYXQgbGVhc3QgYWRkIGEgY29tbWVudCB0aGF0 IHRoaXMgcmVsaWVzIG9uIHRoZSBsaXN0DQo+IG5vdCBiZWluZyBhbHRlcmVkIHdoaWxlIHRoZSBs b2NrIGlzIGRyb3BwZWQuDQoNCkFkZGVkLCB0aGFua3MuDQoNCj4NCj4+ICAgICAgICAgIH0NCj4+ ICsgICAgICAgIHJlYWRfdW5sb2NrKCZkLT5wY2lfbG9jayk7DQo+PiAgICAgIH0NCj4+ICAgICAg cmN1X3JlYWRfdW5sb2NrKCZkb21saXN0X3JlYWRfbG9jayk7DQo+PiAgfQ0KPj4gZGlmZiAtLWdp dCBhL3hlbi9kcml2ZXJzL3ZwY2kvbXNpeC5jIGIveGVuL2RyaXZlcnMvdnBjaS9tc2l4LmMNCj4+ IGluZGV4IDI1YmRlNzc1ODYuLjk0ODEyNzQ1NzkgMTAwNjQ0DQo+PiAtLS0gYS94ZW4vZHJpdmVy cy92cGNpL21zaXguYw0KPj4gKysrIGIveGVuL2RyaXZlcnMvdnBjaS9tc2l4LmMNCj4+IEBAIC0x NDcsNiArMTQ3LDggQEAgc3RhdGljIHN0cnVjdCB2cGNpX21zaXggKm1zaXhfZmluZChjb25zdCBz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGFkZHIpDQo+PiAgew0KPj4gICAgICBzdHJ1 Y3QgdnBjaV9tc2l4ICptc2l4Ow0KPj4gIA0KPj4gKyAgICBBU1NFUlQocndfaXNfbG9ja2VkKCZk LT5wY2lfbG9jaykpOw0KPg0KPiBIbSwgaGVyZSB5b3UgYXJlIGl0ZXJhdGluZyBvdmVyIHBkZXYt PnZwY2ktPmhlYWRlci5iYXJzIGZvciBtdWx0aXBsZQ0KPiBkZXZpY2VzLCBzbyBJIHRoaW5rIGlu IGFkZGl0aW9uIHRvIHRoZSBwY2lfbG9jayBpbiByZWFkIG1vZGUgd2Ugc2hvdWxkDQo+IGFsc28g dGFrZSB0aGUgdnBjaS0+bG9jayBmb3IgZWFjaCBwZGV2Lg0KPg0KPiBJIHRoaW5rIEkgd291bGQg bGlrZSB0byByZXdvcmsgbXNpeF9maW5kKCkgc28gaXQncyBtc2l4X2dldCgpIGFuZA0KPiByZXR1 cm5zIHdpdGggdGhlIGFwcHJvcHJpYXRlIHZwY2ktPmxvY2sgdGFrZW4uICBBbnl3YXksIHRoYXQn cyBmb3IgYQ0KPiBkaWZmZXJlbnQgcGF0Y2gsIHRoZSB1c2FnZSBvZiB0aGUgbG9jayBpbiByZWFk IG1vZGUgc2VlbXMgY29ycmVjdCwNCj4gYWxiZWl0IEkgbWlnaHQgd2FudCB0byBtb3ZlIHRoZSBy ZWFkX2xvY2soKSBjYWxsIGluc2lkZSBvZiBtc2l4X2dldCgpDQo+IGluIHRoZSBmdXR1cmUuDQo+ DQo+PiArDQo+PiAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBtc2l4LCAmZC0+YXJjaC5odm0u bXNpeF90YWJsZXMsIG5leHQgKQ0KPj4gICAgICB7DQo+PiAgICAgICAgICBjb25zdCBzdHJ1Y3Qg dnBjaV9iYXIgKmJhcnMgPSBtc2l4LT5wZGV2LT52cGNpLT5oZWFkZXIuYmFyczsNCj4+IEBAIC0x NjMsNyArMTY1LDEzIEBAIHN0YXRpYyBzdHJ1Y3QgdnBjaV9tc2l4ICptc2l4X2ZpbmQoY29uc3Qg c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBhZGRyKQ0KPj4gIA0KPj4gIHN0YXRpYyBp bnQgY2ZfY2hlY2sgbXNpeF9hY2NlcHQoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgYWRk cikNCj4+ICB7DQo+PiAtICAgIHJldHVybiAhIW1zaXhfZmluZCh2LT5kb21haW4sIGFkZHIpOw0K Pj4gKyAgICBpbnQgcmM7DQo+PiArDQo+PiArICAgIHJlYWRfbG9jaygmdi0+ZG9tYWluLT5wY2lf bG9jayk7DQo+PiArICAgIHJjID0gISFtc2l4X2ZpbmQodi0+ZG9tYWluLCBhZGRyKTsNCj4+ICsg ICAgcmVhZF91bmxvY2soJnYtPmRvbWFpbi0+cGNpX2xvY2spOw0KPj4gKw0KPj4gKyAgICByZXR1 cm4gcmM7DQo+PiAgfQ0KPj4gIA0KPj4gIHN0YXRpYyBib29sIGFjY2Vzc19hbGxvd2VkKGNvbnN0 IHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1bnNpZ25lZCBsb25nIGFkZHIsDQo+PiBAQCAtMzU4LDIx ICszNjYsMzQgQEAgc3RhdGljIGludCBhZGphY2VudF9yZWFkKGNvbnN0IHN0cnVjdCBkb21haW4g KmQsIGNvbnN0IHN0cnVjdCB2cGNpX21zaXggKm1zaXgsDQo+PiAgc3RhdGljIGludCBjZl9jaGVj ayBtc2l4X3JlYWQoDQo+PiAgICAgIHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIs IHVuc2lnbmVkIGludCBsZW4sIHVuc2lnbmVkIGxvbmcgKmRhdGEpDQo+PiAgew0KPj4gLSAgICBj b25zdCBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOw0KPj4gLSAgICBzdHJ1Y3QgdnBjaV9t c2l4ICptc2l4ID0gbXNpeF9maW5kKGQsIGFkZHIpOw0KPj4gKyAgICBzdHJ1Y3QgZG9tYWluICpk ID0gdi0+ZG9tYWluOw0KPj4gKyAgICBzdHJ1Y3QgdnBjaV9tc2l4ICptc2l4Ow0KPj4gICAgICBj b25zdCBzdHJ1Y3QgdnBjaV9tc2l4X2VudHJ5ICplbnRyeTsNCj4+ICAgICAgdW5zaWduZWQgaW50 IG9mZnNldDsNCj4+ICANCj4+ICAgICAgKmRhdGEgPSB+MHVsOw0KPj4gIA0KPj4gKyAgICByZWFk X2xvY2soJmQtPnBjaV9sb2NrKTsNCj4+ICsNCj4+ICsgICAgbXNpeCA9IG1zaXhfZmluZChkLCBh ZGRyKTsNCj4+ICAgICAgaWYgKCAhbXNpeCApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIHJlYWRf dW5sb2NrKCZkLT5wY2lfbG9jayk7DQo+PiAgICAgICAgICByZXR1cm4gWDg2RU1VTF9SRVRSWTsN Cj4+ICsgICAgfQ0KPj4gIA0KPj4gICAgICBpZiAoIGFkamFjZW50X2hhbmRsZShtc2l4LCBhZGRy KSApDQo+PiAtICAgICAgICByZXR1cm4gYWRqYWNlbnRfcmVhZChkLCBtc2l4LCBhZGRyLCBsZW4s IGRhdGEpOw0KPj4gKyAgICB7DQo+PiArICAgICAgICBpbnQgcmMgPSBhZGphY2VudF9yZWFkKGQs IG1zaXgsIGFkZHIsIGxlbiwgZGF0YSk7DQo+DQo+IE5pdDogbWlzc2luZyBuZXdsaW5lIChoZXJl IGFuZCBiZWxvdykuDQo+DQo+PiArICAgICAgICByZWFkX3VubG9jaygmZC0+cGNpX2xvY2spOw0K Pj4gKyAgICAgICAgcmV0dXJuIHJjOw0KPj4gKyAgICB9DQo+PiAgDQo+PiAgICAgIGlmICggIWFj Y2Vzc19hbGxvd2VkKG1zaXgtPnBkZXYsIGFkZHIsIGxlbikgKQ0KPj4gKyAgICB7DQo+PiArICAg ICAgICByZWFkX3VubG9jaygmZC0+cGNpX2xvY2spOw0KPj4gICAgICAgICAgcmV0dXJuIFg4NkVN VUxfT0tBWTsNCj4+ICsgICAgfQ0KPj4gIA0KPj4gICAgICBzcGluX2xvY2soJm1zaXgtPnBkZXYt PnZwY2ktPmxvY2spOw0KPj4gICAgICBlbnRyeSA9IGdldF9lbnRyeShtc2l4LCBhZGRyKTsNCj4+ IEBAIC00MDQsNiArNDI1LDcgQEAgc3RhdGljIGludCBjZl9jaGVjayBtc2l4X3JlYWQoDQo+PiAg ICAgICAgICBicmVhazsNCj4+ICAgICAgfQ0KPj4gICAgICBzcGluX3VubG9jaygmbXNpeC0+cGRl di0+dnBjaS0+bG9jayk7DQo+PiArICAgIHJlYWRfdW5sb2NrKCZkLT5wY2lfbG9jayk7DQo+PiAg DQo+PiAgICAgIHJldHVybiBYODZFTVVMX09LQVk7DQo+PiAgfQ0KPj4gQEAgLTQ5MSwxOSArNTEz LDMyIEBAIHN0YXRpYyBpbnQgYWRqYWNlbnRfd3JpdGUoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwg Y29uc3Qgc3RydWN0IHZwY2lfbXNpeCAqbXNpeCwNCj4+ICBzdGF0aWMgaW50IGNmX2NoZWNrIG1z aXhfd3JpdGUoDQo+PiAgICAgIHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIsIHVu c2lnbmVkIGludCBsZW4sIHVuc2lnbmVkIGxvbmcgZGF0YSkNCj4+ICB7DQo+PiAtICAgIGNvbnN0 IHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47DQo+PiAtICAgIHN0cnVjdCB2cGNpX21zaXgg Km1zaXggPSBtc2l4X2ZpbmQoZCwgYWRkcik7DQo+PiArICAgIHN0cnVjdCBkb21haW4gKmQgPSB2 LT5kb21haW47DQo+PiArICAgIHN0cnVjdCB2cGNpX21zaXggKm1zaXg7DQo+PiAgICAgIHN0cnVj dCB2cGNpX21zaXhfZW50cnkgKmVudHJ5Ow0KPj4gICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0Ow0K Pj4gIA0KPj4gKyAgICByZWFkX2xvY2soJmQtPnBjaV9sb2NrKTsNCj4+ICsNCj4+ICsgICAgbXNp eCA9IG1zaXhfZmluZChkLCBhZGRyKTsNCj4+ICAgICAgaWYgKCAhbXNpeCApDQo+PiArICAgIHsN Cj4+ICsgICAgICAgIHJlYWRfdW5sb2NrKCZkLT5wY2lfbG9jayk7DQo+PiAgICAgICAgICByZXR1 cm4gWDg2RU1VTF9SRVRSWTsNCj4+ICsgICAgfQ0KPj4gIA0KPj4gICAgICBpZiAoIGFkamFjZW50 X2hhbmRsZShtc2l4LCBhZGRyKSApDQo+PiAtICAgICAgICByZXR1cm4gYWRqYWNlbnRfd3JpdGUo ZCwgbXNpeCwgYWRkciwgbGVuLCBkYXRhKTsNCj4+ICsgICAgew0KPj4gKyAgICAgICAgaW50IHJj ID0gYWRqYWNlbnRfd3JpdGUoZCwgbXNpeCwgYWRkciwgbGVuLCBkYXRhKTsNCj4+ICsgICAgICAg IHJlYWRfdW5sb2NrKCZkLT5wY2lfbG9jayk7DQo+PiArICAgICAgICByZXR1cm4gcmM7DQo+PiAr ICAgIH0NCj4+ICANCj4+ICAgICAgaWYgKCAhYWNjZXNzX2FsbG93ZWQobXNpeC0+cGRldiwgYWRk ciwgbGVuKSApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIHJlYWRfdW5sb2NrKCZkLT5wY2lfbG9j ayk7DQo+PiAgICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOw0KPj4gKyAgICB9DQo+PiAgDQo+ PiAgICAgIHNwaW5fbG9jaygmbXNpeC0+cGRldi0+dnBjaS0+bG9jayk7DQo+PiAgICAgIGVudHJ5 ID0gZ2V0X2VudHJ5KG1zaXgsIGFkZHIpOw0KPj4gQEAgLTU3OSw2ICs2MTQsNyBAQCBzdGF0aWMg aW50IGNmX2NoZWNrIG1zaXhfd3JpdGUoDQo+PiAgICAgICAgICBicmVhazsNCj4+ICAgICAgfQ0K Pj4gICAgICBzcGluX3VubG9jaygmbXNpeC0+cGRldi0+dnBjaS0+bG9jayk7DQo+PiArICAgIHJl YWRfdW5sb2NrKCZkLT5wY2lfbG9jayk7DQo+PiAgDQo+PiAgICAgIHJldHVybiBYODZFTVVMX09L QVk7DQo+PiAgfQ0KPj4gQEAgLTY2NSw2ICs3MDEsOCBAQCBzdGF0aWMgaW50IGNmX2NoZWNrIGlu aXRfbXNpeChzdHJ1Y3QgcGNpX2RldiAqcGRldikNCj4+ICAgICAgc3RydWN0IHZwY2lfbXNpeCAq bXNpeDsNCj4+ICAgICAgaW50IHJjOw0KPj4gIA0KPj4gKyAgICBBU1NFUlQocndfaXNfd3JpdGVf bG9ja2VkKCZwZGV2LT5kb21haW4tPnBjaV9sb2NrKSk7DQo+PiArDQo+PiAgICAgIG1zaXhfb2Zm c2V0ID0gcGNpX2ZpbmRfY2FwX29mZnNldChwZGV2LT5zZWcsIHBkZXYtPmJ1cywgc2xvdCwgZnVu YywNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9DQVBfSURf TVNJWCk7DQo+PiAgICAgIGlmICggIW1zaXhfb2Zmc2V0ICkNCj4+IGRpZmYgLS1naXQgYS94ZW4v ZHJpdmVycy92cGNpL3ZwY2kuYyBiL3hlbi9kcml2ZXJzL3ZwY2kvdnBjaS5jDQo+PiBpbmRleCBk NzNmYTc2MzAyLi5mMjJjYmYyMTEyIDEwMDY0NA0KPj4gLS0tIGEveGVuL2RyaXZlcnMvdnBjaS92 cGNpLmMNCj4+ICsrKyBiL3hlbi9kcml2ZXJzL3ZwY2kvdnBjaS5jDQo+PiBAQCAtMzgsNiArMzgs OCBAQCBleHRlcm4gdnBjaV9yZWdpc3Rlcl9pbml0X3QgKmNvbnN0IF9fZW5kX3ZwY2lfYXJyYXlb XTsNCj4+ICANCj4+ICB2b2lkIHZwY2lfcmVtb3ZlX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqcGRl dikNCj4+ICB7DQo+PiArICAgIEFTU0VSVChyd19pc193cml0ZV9sb2NrZWQoJnBkZXYtPmRvbWFp bi0+cGNpX2xvY2spKTsNCj4+ICsNCj4+ICAgICAgaWYgKCAhaGFzX3ZwY2kocGRldi0+ZG9tYWlu KSB8fCAhcGRldi0+dnBjaSApDQo+PiAgICAgICAgICByZXR1cm47DQo+PiAgDQo+PiBAQCAtNzMs NiArNzUsOCBAQCBpbnQgdnBjaV9hZGRfaGFuZGxlcnMoc3RydWN0IHBjaV9kZXYgKnBkZXYpDQo+ PiAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnJvX21hcDsNCj4+ICAgICAgaW50IHJjID0gMDsN Cj4+ICANCj4+ICsgICAgQVNTRVJUKHJ3X2lzX3dyaXRlX2xvY2tlZCgmcGRldi0+ZG9tYWluLT5w Y2lfbG9jaykpOw0KPj4gKw0KPj4gICAgICBpZiAoICFoYXNfdnBjaShwZGV2LT5kb21haW4pICkN Cj4+ICAgICAgICAgIHJldHVybiAwOw0KPj4gIA0KPj4gQEAgLTMyNiwxMSArMzMwLDEyIEBAIHN0 YXRpYyB1aW50MzJfdCBtZXJnZV9yZXN1bHQodWludDMyX3QgZGF0YSwgdWludDMyX3QgbmV3LCB1 bnNpZ25lZCBpbnQgc2l6ZSwNCj4+ICANCj4+ICB1aW50MzJfdCB2cGNpX3JlYWQocGNpX3NiZGZf dCBzYmRmLCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgc2l6ZSkNCj4+ICB7DQo+PiAt ICAgIGNvbnN0IHN0cnVjdCBkb21haW4gKmQgPSBjdXJyZW50LT5kb21haW47DQo+PiArICAgIHN0 cnVjdCBkb21haW4gKmQgPSBjdXJyZW50LT5kb21haW47DQo+PiAgICAgIGNvbnN0IHN0cnVjdCBw Y2lfZGV2ICpwZGV2Ow0KPj4gICAgICBjb25zdCBzdHJ1Y3QgdnBjaV9yZWdpc3RlciAqcjsNCj4+ ICAgICAgdW5zaWduZWQgaW50IGRhdGFfb2Zmc2V0ID0gMDsNCj4+ICAgICAgdWludDMyX3QgZGF0 YSA9IH4odWludDMyX3QpMDsNCj4+ICsgICAgcndsb2NrX3QgKmxvY2s7DQo+PiAgDQo+PiAgICAg IGlmICggIXNpemUgKQ0KPj4gICAgICB7DQo+PiBAQCAtMzQyLDExICszNDcsMjEgQEAgdWludDMy X3QgdnBjaV9yZWFkKHBjaV9zYmRmX3Qgc2JkZiwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQg aW50IHNpemUpDQo+PiAgICAgICAqIEZpbmQgdGhlIFBDSSBkZXYgbWF0Y2hpbmcgdGhlIGFkZHJl c3MsIHdoaWNoIGZvciBod2RvbSBhbHNvIHJlcXVpcmVzDQo+PiAgICAgICAqIGNvbnN1bHRpbmcg RG9tWEVOLiAgUGFzc3Rocm91Z2ggZXZlcnl0aGluZyB0aGF0J3Mgbm90IHRyYXBwZWQuDQo+PiAg ICAgICAqLw0KPj4gKyAgICBsb2NrID0gJmQtPnBjaV9sb2NrOw0KPj4gKyAgICByZWFkX2xvY2so bG9jayk7DQo+PiAgICAgIHBkZXYgPSBwY2lfZ2V0X3BkZXYoZCwgc2JkZik7DQo+PiAgICAgIGlm ICggIXBkZXYgJiYgaXNfaGFyZHdhcmVfZG9tYWluKGQpICkNCj4+ICsgICAgew0KPj4gKyAgICAg ICAgcmVhZF91bmxvY2sobG9jayk7DQo+PiArICAgICAgICBsb2NrID0gJmRvbV94ZW4tPnBjaV9s b2NrOw0KPj4gKyAgICAgICAgcmVhZF9sb2NrKGxvY2spOw0KPj4gICAgICAgICAgcGRldiA9IHBj aV9nZXRfcGRldihkb21feGVuLCBzYmRmKTsNCj4+ICsgICAgfQ0KPj4gICAgICBpZiAoICFwZGV2 IHx8ICFwZGV2LT52cGNpICkNCj4+ICsgICAgew0KPj4gKyAgICAgICAgcmVhZF91bmxvY2sobG9j ayk7DQo+PiAgICAgICAgICByZXR1cm4gdnBjaV9yZWFkX2h3KHNiZGYsIHJlZywgc2l6ZSk7DQo+ PiArICAgIH0NCj4+ICANCj4+ICAgICAgc3Bpbl9sb2NrKCZwZGV2LT52cGNpLT5sb2NrKTsNCj4+ ICANCj4+IEBAIC0zOTIsNiArNDA3LDcgQEAgdWludDMyX3QgdnBjaV9yZWFkKHBjaV9zYmRmX3Qg c2JkZiwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50IHNpemUpDQo+PiAgICAgICAgICBB U1NFUlQoZGF0YV9vZmZzZXQgPCBzaXplKTsNCj4+ICAgICAgfQ0KPj4gICAgICBzcGluX3VubG9j aygmcGRldi0+dnBjaS0+bG9jayk7DQo+PiArICAgIHJlYWRfdW5sb2NrKGxvY2spOw0KPj4gIA0K Pj4gICAgICBpZiAoIGRhdGFfb2Zmc2V0IDwgc2l6ZSApDQo+PiAgICAgIHsNCj4+IEBAIC00MzEs MTAgKzQ0NywyMyBAQCBzdGF0aWMgdm9pZCB2cGNpX3dyaXRlX2hlbHBlcihjb25zdCBzdHJ1Y3Qg cGNpX2RldiAqcGRldiwNCj4+ICAgICAgICAgICAgICAgci0+cHJpdmF0ZSk7DQo+PiAgfQ0KPj4g IA0KPj4gKy8qIEhlbHBlciBmdW5jdGlvbiB0byB1bmxvY2sgbG9ja3MgdGFrZW4gYnkgdnBjaV93 cml0ZSBpbiBwcm9wZXIgb3JkZXIgKi8NCj4+ICtzdGF0aWMgdm9pZCB1bmxvY2tfbG9ja3Moc3Ry dWN0IGRvbWFpbiAqZCkNCj4+ICt7DQo+PiArICAgIEFTU0VSVChyd19pc19sb2NrZWQoJmQtPnBj aV9sb2NrKSk7DQo+PiArDQo+PiArICAgIGlmICggaXNfaGFyZHdhcmVfZG9tYWluKGQpICkNCj4+ ICsgICAgew0KPj4gKyAgICAgICAgQVNTRVJUKHJ3X2lzX2xvY2tlZCgmZC0+cGNpX2xvY2spKTsN Cj4+ICsgICAgICAgIHJlYWRfdW5sb2NrKCZkb21feGVuLT5wY2lfbG9jayk7DQo+PiArICAgIH0N Cj4+ICsgICAgcmVhZF91bmxvY2soJmQtPnBjaV9sb2NrKTsNCj4+ICt9DQo+PiArDQo+PiAgdm9p ZCB2cGNpX3dyaXRlKHBjaV9zYmRmX3Qgc2JkZiwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQg aW50IHNpemUsDQo+PiAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRhdGEpDQo+PiAgew0KPj4g LSAgICBjb25zdCBzdHJ1Y3QgZG9tYWluICpkID0gY3VycmVudC0+ZG9tYWluOw0KPj4gKyAgICBz dHJ1Y3QgZG9tYWluICpkID0gY3VycmVudC0+ZG9tYWluOw0KPj4gICAgICBjb25zdCBzdHJ1Y3Qg cGNpX2RldiAqcGRldjsNCj4+ICAgICAgY29uc3Qgc3RydWN0IHZwY2lfcmVnaXN0ZXIgKnI7DQo+ PiAgICAgIHVuc2lnbmVkIGludCBkYXRhX29mZnNldCA9IDA7DQo+PiBAQCAtNDQ3LDggKzQ3Niwx NiBAQCB2b2lkIHZwY2lfd3JpdGUocGNpX3NiZGZfdCBzYmRmLCB1bnNpZ25lZCBpbnQgcmVnLCB1 bnNpZ25lZCBpbnQgc2l6ZSwNCj4+ICANCj4+ICAgICAgLyoNCj4+ICAgICAgICogRmluZCB0aGUg UENJIGRldiBtYXRjaGluZyB0aGUgYWRkcmVzcywgd2hpY2ggZm9yIGh3ZG9tIGFsc28gcmVxdWly ZXMNCj4+IC0gICAgICogY29uc3VsdGluZyBEb21YRU4uICBQYXNzdGhyb3VnaCBldmVyeXRoaW5n IHRoYXQncyBub3QgdHJhcHBlZC4NCj4+ICsgICAgICogY29uc3VsdGluZyBEb21YRU4uIFBhc3N0 aHJvdWdoIGV2ZXJ5dGhpbmcgdGhhdCdzIG5vdCB0cmFwcGVkLg0KPj4gKyAgICAgKiBJZiB0aGlz IGlzIGh3ZG9tLCB3ZSBuZWVkIHRvIGhvbGQgbG9ja3MgZm9yIGJvdGggZG9tYWluIGluIGNhc2Ug aWYNCj4+ICsgICAgICogbW9kaWZ5X2JhcnMgaXMgY2FsbGVkKCkNCj4NCj4gVHlwbzogdGhlICgp IHdhbnRzIHRvIGJlIGF0IHRoZSBlbmQgb2YgbW9kaWZ5X2JhcnMoKS4NCj4NCj4+ICAgICAgICov DQo+PiArICAgIHJlYWRfbG9jaygmZC0+cGNpX2xvY2spOw0KPj4gKw0KPj4gKyAgICAvKiBkb21f eGVuLT5wY2lfbG9jayBhbHdheXMgc2hvdWxkIGJlIHRha2VuIHNlY29uZCB0byBwcmV2ZW50IGRl YWRsb2NrICovDQo+PiArICAgIGlmICggaXNfaGFyZHdhcmVfZG9tYWluKGQpICkNCj4+ICsgICAg ICAgIHJlYWRfbG9jaygmZG9tX3hlbi0+cGNpX2xvY2spOw0KPg0KPiBGb3IgbW9kaWZ5X2JhcnMo KSB3ZSBhbHNvIHdhbnQgdGhlIGxvY2tzIHRvIGJlIGluIHdyaXRlIG1vZGUgKGF0IGxlYXN0DQo+ IHRoZSBodyBvbmUpLCBzbyB0aGF0IHRoZSBwb3NpdGlvbiBvZiB0aGUgQkFScyBjYW4ndCBiZSBj aGFuZ2VkIHdoaWxlDQo+IG1vZGlmeV9iYXJzKCkgaXMgaXRlcmF0aW5nIG92ZXIgdGhlbS4NCj4N Cj4gSXMgdGhpcyBzb21ldGhpbmcgdGhhdCB3aWxsIGJlIGRvbmUgaW4gYSBmb2xsb3d1cCBjaGFu Z2U/DQoNCkknbGwgZG9uZSBpdCBpbiB0aGlzIGNoYW5nZS4NCg0KPg0KPj4gKw0KPj4gICAgICBw ZGV2ID0gcGNpX2dldF9wZGV2KGQsIHNiZGYpOw0KPj4gICAgICBpZiAoICFwZGV2ICYmIGlzX2hh cmR3YXJlX2RvbWFpbihkKSApDQo+PiAgICAgICAgICBwZGV2ID0gcGNpX2dldF9wZGV2KGRvbV94 ZW4sIHNiZGYpOw0KPj4gQEAgLTQ1OSw2ICs0OTYsOCBAQCB2b2lkIHZwY2lfd3JpdGUocGNpX3Ni ZGZfdCBzYmRmLCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgc2l6ZSwNCj4+ICANCj4+ ICAgICAgICAgIGlmICggIXJvX21hcCB8fCAhdGVzdF9iaXQoc2JkZi5iZGYsIHJvX21hcCkgKQ0K Pj4gICAgICAgICAgICAgIHZwY2lfd3JpdGVfaHcoc2JkZiwgcmVnLCBzaXplLCBkYXRhKTsNCj4+ ICsNCj4+ICsgICAgICAgIHVubG9ja19sb2NrcyhkKTsNCj4+ICAgICAgICAgIHJldHVybjsNCj4+ ICAgICAgfQ0KPj4gIA0KPj4gQEAgLTQ5OCw2ICs1MzcsNyBAQCB2b2lkIHZwY2lfd3JpdGUocGNp X3NiZGZfdCBzYmRmLCB1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgc2l6ZSwNCj4+ICAg ICAgICAgIEFTU0VSVChkYXRhX29mZnNldCA8IHNpemUpOw0KPj4gICAgICB9DQo+PiAgICAgIHNw aW5fdW5sb2NrKCZwZGV2LT52cGNpLT5sb2NrKTsNCj4+ICsgICAgdW5sb2NrX2xvY2tzKGQpOw0K Pg0KPiBUaGVyZSdzIG9uZSBpc3N1ZSBoZXJlLCBzb21lIGhhbmRsZXJzIHdpbGwgY2FsIHBjaWRl dnNfbG9jaygpLCB3aGljaA0KPiB3aWxsIHJlc3VsdCBpbiBhIGxvY2sgb3ZlciBpbnZlcnNpb24s IGFzIGluIHRoZSBwcmV2aW91cyBwYXRjaCB3ZQ0KPiBhZ3JlZWQgdGhhdCB0aGUgbG9ja2luZyBv cmRlciB3YXMgcGNpZGV2c19sb2NrIGZpcnN0LCBkLT5wY2lfbG9jaw0KPiBhZnRlci4NCj4NCj4g Rm9yIGV4YW1wbGUgdGhlIE1TSSBjb250cm9sX3dyaXRlKCkgaGFuZGxlciB3aWxsIGNhbGwNCj4g dnBjaV9tc2lfYXJjaF9lbmFibGUoKSB3aGljaCB0YWtlcyB0aGUgcGNpZGV2cyBsb2NrLiAgSSB0 aGluayBJIHdpbGwNCj4gaGF2ZSB0byBsb29rIGludG8gdXNpbmcgYSBkZWRpY2F0ZWQgbG9jayBm b3IgTVNJIHJlbGF0ZWQgaGFuZGxpbmcsIGFzDQo+IHRoYXQncyB0aGUgb25seSBwbGFjZSB3aGVy ZSBJIHRoaW5rIHdlIGhhdmUgdGhpcyBwYXR0ZXJuIG9mIHRha2luZyB0aGUNCj4gcGNpZGV2c19s b2NrIGFmdGVyIHRoZSBkLT5wY2lfbG9jay4NCg0KSSdsbCBtZW50aW9uIHRoaXMgaW4gdGhlIGNv bW1pdCBtZXNzYWdlLiBJcyB0aGVyZSBzb21ldGhpbmcgZWxzZSB0aGF0IEkNCnNob3VsZCBkbyBy aWdodCBub3c/DQoNCi0tIA0KV0JSLCBWb2xvZHlteXI=