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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1BF64C433F5 for ; Fri, 6 May 2022 17:07:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1444052AbiEFRLa (ORCPT ); Fri, 6 May 2022 13:11:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45956 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1444084AbiEFRL1 (ORCPT ); Fri, 6 May 2022 13:11:27 -0400 Received: from mx0d-0054df01.pphosted.com (mx0d-0054df01.pphosted.com [67.231.150.19]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 118386E8D9 for ; Fri, 6 May 2022 10:07:42 -0700 (PDT) Received: from pps.filterd (m0209000.ppops.net [127.0.0.1]) by mx0c-0054df01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 246AtC6i003450; Fri, 6 May 2022 13:07:24 -0400 Received: from can01-yt3-obe.outbound.protection.outlook.com (mail-yt3can01lp2171.outbound.protection.outlook.com [104.47.75.171]) by mx0c-0054df01.pphosted.com (PPS) with ESMTPS id 3fv43713d3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 06 May 2022 13:07:24 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FRlciW2kWFl3GeAWDIzOybUlhNtnuu/QpoNl4Og3M6a+MWosd9nWK2FvUi90jCKAe76eIOr9ZxAaEIOp5qjfdOoR2kJ70+EsDJ81WynehPNakJ+28iLAKYPA8ZMJ10BBvEzFxiLZqmBtFBwk/SELdkIUFqfBOKZLsXYtE+YzKHX9d6OfMxOs9gx6nuxLwYxaART3QeVU9WlmJYYCEH93MS0auY+jG5t+0N5s11xELC/K+2ftO7aLDyqSy9ZKGmHEO/6Bcr8iJGDkWJ4853iQVsRKCZIxtVoqrnxLSp0XHCp7Nnhv++q/uoGMMfUyyVa0g+69l0HvwG3j1WnSSNSnQw== 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=mbS98T++OyBpuAGKgCUmmbkHlSczSWCb4Tv8/GC6IrE=; b=grq4/uplFYkbYqIaUlQm6S7N211YAnJy4AFpOwDYE/Q2HAPkDpm+inrFY+5Of9WSo/eqKFOLERJEOc5uBNkjM/EDlgx5ljJWsMqsiXJ2fX1ussj5Ql9jmpijcSHV2ziEAckDglyhWts7O+xMRG8T+W6CSemRt9TdD/uU3tJJYpH5QnNWMs0Qvrh1AohoYJuSYQExc/yydqteIf94dGiooL/kJpBpuEbtb+rpkrK6uxQ8IPYzaZLSbdpiGB1a8C4k02RZ2ITyuSwgV37IqtjhdTcl09pbjNxn1SiMyDrjlGThqUXh4Ac/g4RiBXp1JjY/8VrtnWyHiM9Y29xpPNglTA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=calian.com; dmarc=pass action=none header.from=calian.com; dkim=pass header.d=calian.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=calian.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mbS98T++OyBpuAGKgCUmmbkHlSczSWCb4Tv8/GC6IrE=; b=m8f3E+F2lmcKWj8b7EA+b7rthFBlKx37mX4YthX0D4mROJ3LOcNVWOmDIJLRBs11nQF6JZ9ekPCmUIGBQYh12RKTvW+Wi7omQOAFKgDLYnDNN+QipVqbXbz/gbV+/ItsGtB47Pr8jyxAXMEjf6F8as+v6vDqXJ8CxbO5B+z4q80= Received: from YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:66::9) by YT1PR01MB2730.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:3::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.24; Fri, 6 May 2022 17:07:22 +0000 Received: from YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM ([fe80::4dea:7f7d:cc9a:1c83]) by YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM ([fe80::4dea:7f7d:cc9a:1c83%2]) with mapi id 15.20.5227.020; Fri, 6 May 2022 17:07:22 +0000 From: Robert Hancock To: "netdev@vger.kernel.org" CC: "pabeni@redhat.com" , "davem@davemloft.net" , "kuba@kernel.org" , "michal.simek@xilinx.com" , "radhey.shyam.pandey@xilinx.com" , "edumazet@google.com" , "linux-arm-kernel@lists.infradead.org" Subject: Re: [PATCH net-next v4] net: axienet: Use NAPI for TX completion path Thread-Topic: [PATCH net-next v4] net: axienet: Use NAPI for TX completion path Thread-Index: AQHYYOBgjxbs2La1qUOFLbHi6Tt+f60SFb6A Date: Fri, 6 May 2022 17:07:22 +0000 Message-ID: <2f9567e8b0a15cbf35d43f11b414ddf82fb50997.camel@calian.com> References: <20220506002904.4075805-1-robert.hancock@calian.com> In-Reply-To: <20220506002904.4075805-1-robert.hancock@calian.com> Accept-Language: en-CA, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.28.5 (3.28.5-18.el8) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b40ee873-eb83-4422-9047-08da2f82e2ce x-ms-traffictypediagnostic: YT1PR01MB2730:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: aE3h5+FCdVIU950/Nt9IBgmmUlpockHsQNLQz1UmaWQWPuYVLUqKgLLu3kdsOP487icnPnAB9Pf0o+eTIDL4ny2x55qQqmUn78M4sFpLqthRJt8ad50GBeLU28IldFbniUHDIAYU/+APLnGn1Yd+ilIOmiYgp2XtgO3H4DfwSSm8J5yyUHqT9urx/6m9uHtufN8IOace/YJL9JVUUWNBCXqnTinZplnMmkFIhT5rXqz3E+z94y3HG/rMBp9xoZaNKXtHRFkaIcdpAjgCvkyTiLiHck95kH44hBOtd42LmG/r2vdGiT85sqdAvwo7eUx66jnRhYN1jFiPZAopQKpNCVPr2qI8dx43N9/afKU3V0xGFo06B9Q2h3ADS9jlJu3tIicx/ebU9g9QMJpY6YjqUKbt0NPdRM3QdTGQJvK+lqv2wuc86oDmgo+87UBRrnXKhcpi2N/rNFmLEsFvWgSFe3yG7rgD0M02+t9LOW8Ak3DsAENPUJiTivAX0ybB0ut50huZeySbVkk1enIXVZQwsu/3Gs+LGTf49l/+fahah8RdyYCi1IPZ7DlDAzfmykzpjYOEf65VXWr5tDNdzIOX+Vs2F7ix/2rnrBHFyL5zJtb4t2KrXa+qHT/L3EjGAGNOo/NUObTojd4lczJ/PkEQWO1UYehDVzedBgDKf3MfJ7Aw75IuPBGa/2ULr49iX2B8YpbAgyOvg/uvYmO4kaCwKLM3oiKc0Xglto7/z4Cdvvu8JEag3oJAWiYvyzWbIrx8 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(36756003)(66446008)(66556008)(66476007)(6506007)(66946007)(8936002)(76116006)(64756008)(6512007)(38100700002)(6486002)(6916009)(71200400001)(2906002)(38070700005)(122000001)(26005)(86362001)(54906003)(44832011)(83380400001)(30864003)(508600001)(186003)(2616005)(316002)(5660300002)(4326008)(8676002)(375104004)(99106002)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UThSQzMrNlEvUXZ1eUQ5V2J5UFNnNHdHWk5NR1BZZDRBZWFvOFFRMGszSEVy?= =?utf-8?B?emhnT0MyVk9sbEFaVUl3OEdHV3h4dTBYUGJpY2VGTEtTNkNQRVBadklML0lt?= =?utf-8?B?RUt4REdsMjVrcm5CcEZjY2wvc3RzYnRIU0RvakMxZTk5WW94RlkxS3VHSUdX?= =?utf-8?B?QWZDS1ZheCs4UkR2bmVTcE9ZNDFCTGY4ejRTdHFRNTIrN2dmYlVoOTZacjlI?= =?utf-8?B?U0ZRNEVzUUplZUR3c2lzc0NYWWpYdlowcnlHdnFtakhqbGg4bERWb1Z6UHhw?= =?utf-8?B?LzJsb0JxdnFkbU9PVmczVTFob3VhalJNK3FycGtsTDVOOThsNjVWOHhkR09K?= =?utf-8?B?VGN4OHF4VlJvc2pRcjlnNkFaWG1LdUNFQzltODFFSWNXeGh0emNoamFrQjlQ?= =?utf-8?B?OE4rUForMkhWMld0TU01MXJGWkV5Y2RwSXhtSmZpa2RKd2hTRS9odG00NXJo?= =?utf-8?B?M25COTMwaEpKcVJHSTN0TkNDYURWOUFySTRtSFAvbDNZZWJ2NmhQbnJDS2t2?= =?utf-8?B?YTlHdmd6dVJidmZEWDhoaXNEVURSUjlJdXdpZWFNa2J0OUl3UytqWVFKTFNk?= =?utf-8?B?SWc3V2lxTWYwSy9URXVZY1BnSkdFZ1c4YnV4QXNTUi9Qck01ZHVFTDNNelBI?= =?utf-8?B?bXJEZWhERkx6eXBDMU1lMkV4ZWdSMmlZMGsxQU04ZFhtc2tJVkpNMExTTDZW?= =?utf-8?B?RVNlTzNORHdsWW1hTWVzOWtyOTd5dFNaaG5uaWxURFhneG5NMkJvQWhibEJa?= =?utf-8?B?MTE4Zkl2Z1BhQmdNeVQ2RTdQSC9SZzllS0w4QzFYM2pYYmFlVjhGVS9zMVZD?= =?utf-8?B?TUVoYUJ2TTF6OUQ3SUpZMThUQ3IzbFVUNmdYZExOTDVMT2pIZ2xZVU9KWkNT?= =?utf-8?B?YTVyMVdRQUZ1SnJSeXFCeldJcVRPUW8vM0dVcnA3NUcvL01PcnRFSzZUUjNa?= =?utf-8?B?TENkampGVmlsUDNNa0lQR0h5dW9CaTVKVjVwTEpjbStSdElYdFlEZUFJd2tC?= =?utf-8?B?c05WME5UQUlsRndKRVYvQmtXYlh1cWo5a29PaG1ubkxrZzVNRWFYOHM1UDUr?= =?utf-8?B?SDVMcDUxcFdCaUhLeDdQdkRDOHVMZmM0UGR2eVVTYzl6MlBJY2Nqc0lET1BD?= =?utf-8?B?WHgrU2labkVsOVdKSjkwOVhGQzBUVEpsNHgrQXRRMmMwK1JDTkxYNmtuZERC?= =?utf-8?B?enRnUFgyQ1FBUDNnRVpmZTNHS3ZpVk41T2NrUkkwVjdHZmE2b29vVUNyTDN6?= =?utf-8?B?NU1SWDZYcTRHY1lZSmFxQmtybUJEOFdKdTB6d2xZSVlSVldCenYwdHJZU0tH?= =?utf-8?B?MWx1YVo2NVlPcUh2aFl1b3ZhM3owNXp1UnBXMmEzakttSDhvRkJJQXZyTkFq?= =?utf-8?B?SmxxdWU1cVZCL2o4WkRhK3NsRGZLQ1ZSQUMyUFZ2MzB4RFBPK0J2N1Z3NUFl?= =?utf-8?B?RW10Z1gveG1pV29vc0l3Ryt2eEpIc2o4QjRLQmdadUk5NzJOQ2hqSkNxM2V3?= =?utf-8?B?ZkVmMHhwN21kN1c3UTM1OEdvaS9DODhFODhuVEsyN3pwVmNXaXBnbUZob3Vi?= =?utf-8?B?cnNhNVJhMUR4U2dpbUVLandMczhNVE9lWUpvUnp5SjBDTkRDaUh2KzQ4b0p5?= =?utf-8?B?Wms3ZDFoODRRNnFwdEpOUGYvekFKeE1rc3F4UFdneThqWUk4Z3l6N2c0YUZU?= =?utf-8?B?RS9JbnF0bm8vWlhZZnh1a1dlYjJ6S2w4YWlzNTFxalAraFFCOGJ0WCt2Yy9R?= =?utf-8?B?OWErRHVUeUZ4d0VETkxVdG9wSUpLSGF5TDA5Zml0VndDUzIxTyt5RG9YQWFG?= =?utf-8?B?KzBrOE5ReFc3SVNkVUx1bjMwZDhwS3ZJblNXaFlIcWdzMXF0dUY5cTlWUEw3?= =?utf-8?B?RmV3a1U1djFaMDVoRW5yeElXRFRiN1hDU0IvY2JrTVlNZlVmSkVZUTVaTGxP?= =?utf-8?B?Ym5BVm9NMWFiZjUzQWZmelk4M1I4WGpRWDd6NUtEWnhhVGhCbTJZL3gwODlI?= =?utf-8?B?K21qWnJTQ0xLeG1zdThHbjg2UHc1c2IrSUFicjRxR2ZEOG42NFhZUnpJd2U4?= =?utf-8?B?R0ZwaW91c05LNHdnN0J0OWl5MXNScEVnMnM1bm8zcE96VTJCQVJzaStJT3hY?= =?utf-8?B?b1JOZmtiZWFjMWhrWldNRVRsRGV2NUIxVFhST3pDWWszb0hKbkJkTUtQdS8y?= =?utf-8?B?SHowU2JSV1BCME5idk04aVJ2dHJPVXFsNG1wMEpEZ3A2ODhXZkpXeHZOaC9L?= =?utf-8?B?YXZYSG9OY0U1WTBrSVBncVd1M3J2K3kwbmtIUGNqcmRNOGR3MTJlbG9BcTFK?= =?utf-8?B?SUtNQTBzbExCWG9EWFlUY3BRVzhsNW5QeHhINVh5M2dyNFNRM3VBRDVLQmV0?= =?utf-8?Q?X0VCRKQ0Z11ffiUE=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <9A5BF9106791274EBD40BCFF57489500@CANPRD01.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: calian.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: YT3PR01MB6274.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: b40ee873-eb83-4422-9047-08da2f82e2ce X-MS-Exchange-CrossTenant-originalarrivaltime: 06 May 2022 17:07:22.3163 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 23b57807-562f-49ad-92c4-3bb0f07a1fdf X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8apvuJbjIkx0JJXiuR+zxj2KJOLnnpjMbgsO9u2z+5S/6aMFmyhAjIO962M95G3OajTSSE7jY/W7VloDcfyjjW/emwHoPTLq9ORNwHzVgvw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: YT1PR01MB2730 X-Proofpoint-ORIG-GUID: yPYxUEKVTcWsa9QuCKb4L37cIPhOsGar X-Proofpoint-GUID: yPYxUEKVTcWsa9QuCKb4L37cIPhOsGar X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-05-06_06,2022-05-06_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 priorityscore=1501 adultscore=0 malwarescore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 spamscore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205060087 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org T24gVGh1LCAyMDIyLTA1LTA1IGF0IDE4OjI5IC0wNjAwLCBSb2JlcnQgSGFuY29jayB3cm90ZToN Cj4gVGhpcyBkcml2ZXIgd2FzIHVzaW5nIHRoZSBUWCBJUlEgaGFuZGxlciB0byBwZXJmb3JtIGFs bCBUWCBjb21wbGV0aW9uDQo+IHRhc2tzLiBVbmRlciBoZWF2eSBUWCBuZXR3b3JrIGxvYWQsIHRo aXMgY2FuIGNhdXNlIHNpZ25pZmljYW50IGlycXMtb2ZmDQo+IGxhdGVuY2llcyAoZm91bmQgdG8g YmUgaW4gdGhlIGh1bmRyZWRzIG9mIG1pY3Jvc2Vjb25kcyB1c2luZyBmdHJhY2UpLg0KPiBUaGlz IGNhbiBjYXVzZSBvdGhlciBpc3N1ZXMsIHN1Y2ggYXMgb3ZlcnJ1bm5pbmcgc2VyaWFsIFVBUlQg RklGT3Mgd2hlbg0KPiB1c2luZyBoaWdoIGJhdWQgcmF0ZXMgd2l0aCBsaW1pdGVkIFVBUlQgRklG TyBzaXplcy4NCj4gDQo+IFN3aXRjaCB0byB1c2luZyBhIE5BUEkgcG9sbCBoYW5kbGVyIHRvIHBl cmZvcm0gdGhlIFRYIGNvbXBsZXRpb24gd29yaw0KPiB0byBnZXQgdGhpcyBvdXQgb2YgaGFyZCBJ UlEgY29udGV4dCBhbmQgYXZvaWQgdGhlIElSUSBsYXRlbmN5IGltcGFjdC4NCj4gQSBzZXBhcmF0 ZSBwb2xsIGhhbmRsZXIgaXMgdXNlZCBmb3IgVFggYW5kIFJYIHNpbmNlIHRoZXkgaGF2ZSBzZXBh cmF0ZQ0KPiBJUlFzIG9uIHRoaXMgY29udHJvbGxlciwgc28gdGhhdCB0aGUgY29tcGxldGlvbiB3 b3JrIGZvciBlYWNoIG9mIHRoZW0NCj4gc3RheXMgb24gdGhlIHNhbWUgQ1BVIGFzIHRoZSBpbnRl cnJ1cHQuDQo+IA0KPiBUZXN0aW5nIG9uIGEgWGlsaW54IE1QU29DIFpVOUVHIHBsYXRmb3JtIHVz aW5nIGlwZXJmMyBmcm9tIGEgTGludXggUEMNCj4gdGhyb3VnaCBhIHN3aXRjaCBhdCAxRyBsaW5r IHNwZWVkIHNob3dlZCBubyBzaWduaWZpY2FudCBjaGFuZ2UgaW4gVFggb3INCj4gUlggdGhyb3Vn aHB1dCwgd2l0aCBhcHByb3hpbWF0ZWx5IDk0MSBNYnBzIGJlZm9yZSBhbmQgYWZ0ZXIuIEhhcmQg SVJRDQo+IHRpbWUgaW4gdGhlIFRYIHRocm91Z2hwdXQgdGVzdCB3YXMgc2lnbmlmaWNhbnRseSBy ZWR1Y2VkIGZyb20gMTIlIHRvDQo+IGJlbG93IDElIG9uIHRoZSBDUFUgaGFuZGxpbmcgVFggaW50 ZXJydXB0cywgd2l0aCB0b3RhbCBoYXJkK3NvZnQgSVJRIENQVQ0KPiB1c2FnZSBkcm9wcGluZyBm cm9tIGFib3V0IDU2JSBkb3duIHRvIDQ4JS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFJvYmVydCBI YW5jb2NrIDxyb2JlcnQuaGFuY29ja0BjYWxpYW4uY29tPg0KDQpJJ20gbm93IHNlZWluZyBhIHBv c3NpYmxlIHN0YWJpbGl0eSBpc3N1ZSB3aXRoIHRoaXMgY2hhbmdlLCBzbyB3ZSBtYXkgd2FudCB0 bw0KaG9sZCBvZmYgb24gbWVyZ2luZyB0aGlzIGZvciBub3cuIEknbSBsb29raW5nIHN1c3BpY2lv dXNseSBhdCB0aGUgbGFjayBvZiBhbnkNCmxvY2tpbmcgaW4gdGhpcyBkcml2ZXIgYXJvdW5kIHRo ZSBUWCByaW5nIG1hbmFnZW1lbnQsIHdoaWNoIGNhbiBwb3RlbnRpYWxseSBiZQ0KYWNjZXNzZWQg YnkgdGhlIHN0YXJ0X3htaXQgcGF0aCBhcyB3ZWxsIGFzIHRoZSBUWCBOQVBJIHBvbGxpbmcgKHBy ZXZpb3VzbHkgdGhlDQpUWCBJUlEgaGFuZGxlcikuIFRoYXQgd291bGQgYWxyZWFkeSBoYXZlIGJl ZW4gYW4gaXNzdWUsIGJ1dCBpdCdzIHBvc3NpYmxlIHRoYXQNCnN3aXRjaGluZyB0aGF0IHdvcmsg ZnJvbSB0aGUgSVJRIHRvIHNvZnRpcnEgbWFrZXMgaXQgbW9yZSBub3RpY2VhYmxlLiBJZiBvbmUN CnNpZGUgaXMgaW4gdGhlIG1pZGRsZSBvZiB1cGRhdGluZyB0aGUgVFggcmluZyBwb2ludGVycyB3 aGVuIHRoZSBvdGhlciBzaWRlIGlzDQpsb29raW5nIGF0IHZhbHVlcyBhcyB3ZWxsLCBpdCdzIHBv c3NpYmxlIG9uZSBvZiB0aGVtIGNvdWxkIHNlZSBhbiBvdXQgb2YgcmFuZ2UNCnZhbHVlIGFuZCBl bmQgdXAgcmVhZGluZyBvciBzdG9tcGluZyBvbiBvdXQgb2YgYm91bmRzIG1lbW9yeS4NCg0KSSds bCBsb29rIGF0IGFkZGluZyBpbiBzb21lIGxvY2tpbmcgYW5kIHNlZSBpZiB0aGF0IG1ha2VzIHRo aW5ncyBiZXR0ZXINCmJlaGF2ZWQuDQoNCj4gLS0tDQo+IA0KPiBDaGFuZ2VkIHNpbmNlIHYzOiBG aXhlZCByZWZlcmVuY2VzIHRvIHJlbmFtZWQgZnVuY3Rpb24gaW4gY29tbWVudHMNCj4gDQo+IENo YW5nZWQgc2luY2UgdjI6IFVzZSBzZXBhcmF0ZSBUWCBhbmQgUlggTkFQSSBwb2xsIGhhbmRsZXJz IHRvIGtlZXANCj4gY29tcGxldGlvbiBoYW5kbGluZyBvbiBzYW1lIENQVSBhcyBUWC9SWCBJUlEu IEFkZGVkIGhhcmQvc29mdCBJUlENCj4gYmVuY2htYXJrIGluZm9ybWF0aW9uIHRvIGNvbW1pdCBt ZXNzYWdlLg0KPiANCj4gQ2hhbmdlZCBzaW5jZSB2MTogQWRkZWQgYmVuY2htYXJrIGluZm9ybWF0 aW9uIHRvIGNvbW1pdCBtZXNzYWdlLCBubw0KPiBjb2RlIGNoYW5nZXMuDQo+IA0KPiAgZHJpdmVy cy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0LmggIHwgIDUzICsrKy0tLS0NCj4g IC4uLi9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYyB8IDEzOCArKysr KysrKysrLS0tLS0tLS0NCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTA5IGluc2VydGlvbnMoKyksIDgy IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hp bGlueC94aWxpbnhfYXhpZW5ldC5oDQo+IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hp bGlueF9heGllbmV0LmgNCj4gaW5kZXggZDVjMWU1YzRhNTA4Li43NmZkYWFjMTMxNDYgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oDQo+ ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldC5oDQo+IEBA IC0zODUsNyArMzg1LDYgQEAgc3RydWN0IGF4aWRtYV9iZCB7DQo+ICAgKiBAcGh5X25vZGU6CVBv aW50ZXIgdG8gZGV2aWNlIG5vZGUgc3RydWN0dXJlDQo+ICAgKiBAcGh5bGluazoJUG9pbnRlciB0 byBwaHlsaW5rIGluc3RhbmNlDQo+ICAgKiBAcGh5bGlua19jb25maWc6IHBoeWxpbmsgY29uZmln dXJhdGlvbiBzZXR0aW5ncw0KPiAtICogQG5hcGk6CU5BUEkgY29udHJvbCBzdHJ1Y3R1cmUNCj4g ICAqIEBwY3NfcGh5OglSZWZlcmVuY2UgdG8gUENTL1BNQSBQSFkgaWYgdXNlZA0KPiAgICogQHBj czoJcGh5bGluayBwY3Mgc3RydWN0dXJlIGZvciBQQ1MgUEhZDQo+ICAgKiBAc3dpdGNoX3hfc2dt aWk6IFdoZXRoZXIgc3dpdGNoYWJsZSAxMDAwQmFzZVgvU0dNSUkgbW9kZSBpcyBlbmFibGVkIGlu DQo+IHRoZSBjb3JlDQo+IEBAIC0zOTYsMjcgKzM5NSwzMCBAQCBzdHJ1Y3QgYXhpZG1hX2JkIHsN Cj4gICAqIEByZWdzX3N0YXJ0OiBSZXNvdXJjZSBzdGFydCBmb3IgYXhpZW5ldCBkZXZpY2UgYWRk cmVzc2VzDQo+ICAgKiBAcmVnczoJQmFzZSBhZGRyZXNzIGZvciB0aGUgYXhpZW5ldF9sb2NhbCBk ZXZpY2UgYWRkcmVzcyBzcGFjZQ0KPiAgICogQGRtYV9yZWdzOglCYXNlIGFkZHJlc3MgZm9yIHRo ZSBheGlkbWEgZGV2aWNlIGFkZHJlc3Mgc3BhY2UNCj4gKyAqIEBuYXBpX3J4OglOQVBJIFJYIGNv bnRyb2wgc3RydWN0dXJlDQo+ICAgKiBAcnhfZG1hX2NyOiAgTm9taW5hbCBjb250ZW50IG9mIFJY IERNQSBjb250cm9sIHJlZ2lzdGVyDQo+IC0gKiBAZG1hX2Vycl90YXNrOiBXb3JrIHN0cnVjdHVy ZSB0byBwcm9jZXNzIEF4aSBETUEgZXJyb3JzDQo+IC0gKiBAdHhfaXJxOglBeGlkbWEgVFggSVJR IG51bWJlcg0KPiAtICogQHJ4X2lycToJQXhpZG1hIFJYIElSUSBudW1iZXINCj4gLSAqIEBldGhf aXJxOglFdGhlcm5ldCBjb3JlIElSUSBudW1iZXINCj4gLSAqIEBwaHlfbW9kZToJUGh5IHR5cGUg dG8gaWRlbnRpZnkgYmV0d2VlbiBNSUkvR01JSS9SR01JSS9TR01JSS8xMDAwDQo+IEJhc2UtWA0K PiAtICogQG9wdGlvbnM6CUF4aUV0aGVybmV0IG9wdGlvbiB3b3JkDQo+IC0gKiBAZmVhdHVyZXM6 CVN0b3JlcyB0aGUgZXh0ZW5kZWQgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHRoZSBheGllbmV0DQo+ IGh3DQo+IC0gKiBAdHhfYmRfdjoJVmlydHVhbCBhZGRyZXNzIG9mIHRoZSBUWCBidWZmZXIgZGVz Y3JpcHRvciByaW5nDQo+IC0gKiBAdHhfYmRfcDoJUGh5c2ljYWwgYWRkcmVzcyhzdGFydCBhZGRy ZXNzKSBvZiB0aGUgVFggYnVmZmVyIGRlc2NyLiByaW5nDQo+IC0gKiBAdHhfYmRfbnVtOglTaXpl IG9mIFRYIGJ1ZmZlciBkZXNjcmlwdG9yIHJpbmcNCj4gICAqIEByeF9iZF92OglWaXJ0dWFsIGFk ZHJlc3Mgb2YgdGhlIFJYIGJ1ZmZlciBkZXNjcmlwdG9yIHJpbmcNCj4gICAqIEByeF9iZF9wOglQ aHlzaWNhbCBhZGRyZXNzKHN0YXJ0IGFkZHJlc3MpIG9mIHRoZSBSWCBidWZmZXIgZGVzY3IuIHJp bmcNCj4gICAqIEByeF9iZF9udW06CVNpemUgb2YgUlggYnVmZmVyIGRlc2NyaXB0b3IgcmluZw0K PiArICogQHJ4X2JkX2NpOglTdG9yZXMgdGhlIGluZGV4IG9mIHRoZSBSeCBidWZmZXIgZGVzY3Jp cHRvciBpbiB0aGUNCj4gcmluZyBiZWluZw0KPiArICoJCWFjY2Vzc2VkIGN1cnJlbnRseS4NCj4g KyAqIEBuYXBpX3R4OglOQVBJIFRYIGNvbnRyb2wgc3RydWN0dXJlDQo+ICsgKiBAdHhfZG1hX2Ny OiAgTm9taW5hbCBjb250ZW50IG9mIFRYIERNQSBjb250cm9sIHJlZ2lzdGVyDQo+ICsgKiBAdHhf YmRfdjoJVmlydHVhbCBhZGRyZXNzIG9mIHRoZSBUWCBidWZmZXIgZGVzY3JpcHRvciByaW5nDQo+ ICsgKiBAdHhfYmRfcDoJUGh5c2ljYWwgYWRkcmVzcyhzdGFydCBhZGRyZXNzKSBvZiB0aGUgVFgg YnVmZmVyIGRlc2NyLiByaW5nDQo+ICsgKiBAdHhfYmRfbnVtOglTaXplIG9mIFRYIGJ1ZmZlciBk ZXNjcmlwdG9yIHJpbmcNCj4gICAqIEB0eF9iZF9jaToJU3RvcmVzIHRoZSBpbmRleCBvZiB0aGUg VHggYnVmZmVyIGRlc2NyaXB0b3IgaW4gdGhlDQo+IHJpbmcgYmVpbmcNCj4gICAqCQlhY2Nlc3Nl ZCBjdXJyZW50bHkuIFVzZWQgd2hpbGUgYWxsb2MuIEJEcyBiZWZvcmUgYSBUWCBzdGFydHMNCj4g ICAqIEB0eF9iZF90YWlsOglTdG9yZXMgdGhlIGluZGV4IG9mIHRoZSBUeCBidWZmZXIgZGVzY3Jp cHRvciBpbiB0aGUNCj4gcmluZyBiZWluZw0KPiAgICoJCWFjY2Vzc2VkIGN1cnJlbnRseS4gVXNl ZCB3aGlsZSBwcm9jZXNzaW5nIEJEcyBhZnRlciB0aGUgVFgNCj4gICAqCQljb21wbGV0ZWQuDQo+ IC0gKiBAcnhfYmRfY2k6CVN0b3JlcyB0aGUgaW5kZXggb2YgdGhlIFJ4IGJ1ZmZlciBkZXNjcmlw dG9yIGluIHRoZQ0KPiByaW5nIGJlaW5nDQo+IC0gKgkJYWNjZXNzZWQgY3VycmVudGx5Lg0KPiAr ICogQGRtYV9lcnJfdGFzazogV29yayBzdHJ1Y3R1cmUgdG8gcHJvY2VzcyBBeGkgRE1BIGVycm9y cw0KPiArICogQHR4X2lycToJQXhpZG1hIFRYIElSUSBudW1iZXINCj4gKyAqIEByeF9pcnE6CUF4 aWRtYSBSWCBJUlEgbnVtYmVyDQo+ICsgKiBAZXRoX2lycToJRXRoZXJuZXQgY29yZSBJUlEgbnVt YmVyDQo+ICsgKiBAcGh5X21vZGU6CVBoeSB0eXBlIHRvIGlkZW50aWZ5IGJldHdlZW4gTUlJL0dN SUkvUkdNSUkvU0dNSUkvMTAwMA0KPiBCYXNlLVgNCj4gKyAqIEBvcHRpb25zOglBeGlFdGhlcm5l dCBvcHRpb24gd29yZA0KPiArICogQGZlYXR1cmVzOglTdG9yZXMgdGhlIGV4dGVuZGVkIGZlYXR1 cmVzIHN1cHBvcnRlZCBieSB0aGUgYXhpZW5ldA0KPiBodw0KPiAgICogQG1heF9mcm1fc2l6ZTog U3RvcmVzIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGZyYW1lIHRoYXQgY2FuIGJlIHRoYXQNCj4g ICAqCQkgIFR4ZWQvUnhlZCBpbiB0aGUgZXhpc3RpbmcgaGFyZHdhcmUuIElmIGp1bWJvIG9wdGlv biBpcw0KPiAgICoJCSAgc3VwcG9ydGVkLCB0aGUgbWF4aW11bSBmcmFtZSBzaXplIHdvdWxkIGJl IDlrLiBFbHNlIGl0IGlzDQo+IEBAIC00MzYsOCArNDM4LDYgQEAgc3RydWN0IGF4aWVuZXRfbG9j YWwgew0KPiAgCXN0cnVjdCBwaHlsaW5rICpwaHlsaW5rOw0KPiAgCXN0cnVjdCBwaHlsaW5rX2Nv bmZpZyBwaHlsaW5rX2NvbmZpZzsNCj4gIA0KPiAtCXN0cnVjdCBuYXBpX3N0cnVjdCBuYXBpOw0K PiAtDQo+ICAJc3RydWN0IG1kaW9fZGV2aWNlICpwY3NfcGh5Ow0KPiAgCXN0cnVjdCBwaHlsaW5r X3BjcyBwY3M7DQo+ICANCj4gQEAgLTQ1Myw3ICs0NTMsMjAgQEAgc3RydWN0IGF4aWVuZXRfbG9j YWwgew0KPiAgCXZvaWQgX19pb21lbSAqcmVnczsNCj4gIAl2b2lkIF9faW9tZW0gKmRtYV9yZWdz Ow0KPiAgDQo+ICsJc3RydWN0IG5hcGlfc3RydWN0IG5hcGlfcng7DQo+ICAJdTMyIHJ4X2RtYV9j cjsNCj4gKwlzdHJ1Y3QgYXhpZG1hX2JkICpyeF9iZF92Ow0KPiArCWRtYV9hZGRyX3QgcnhfYmRf cDsNCj4gKwl1MzIgcnhfYmRfbnVtOw0KPiArCXUzMiByeF9iZF9jaTsNCj4gKw0KPiArCXN0cnVj dCBuYXBpX3N0cnVjdCBuYXBpX3R4Ow0KPiArCXUzMiB0eF9kbWFfY3I7DQo+ICsJc3RydWN0IGF4 aWRtYV9iZCAqdHhfYmRfdjsNCj4gKwlkbWFfYWRkcl90IHR4X2JkX3A7DQo+ICsJdTMyIHR4X2Jk X251bTsNCj4gKwl1MzIgdHhfYmRfY2k7DQo+ICsJdTMyIHR4X2JkX3RhaWw7DQo+ICANCj4gIAlz dHJ1Y3Qgd29ya19zdHJ1Y3QgZG1hX2Vycl90YXNrOw0KPiAgDQo+IEBAIC00NjUsMTYgKzQ3OCw2 IEBAIHN0cnVjdCBheGllbmV0X2xvY2FsIHsNCj4gIAl1MzIgb3B0aW9uczsNCj4gIAl1MzIgZmVh dHVyZXM7DQo+ICANCj4gLQlzdHJ1Y3QgYXhpZG1hX2JkICp0eF9iZF92Ow0KPiAtCWRtYV9hZGRy X3QgdHhfYmRfcDsNCj4gLQl1MzIgdHhfYmRfbnVtOw0KPiAtCXN0cnVjdCBheGlkbWFfYmQgKnJ4 X2JkX3Y7DQo+IC0JZG1hX2FkZHJfdCByeF9iZF9wOw0KPiAtCXUzMiByeF9iZF9udW07DQo+IC0J dTMyIHR4X2JkX2NpOw0KPiAtCXUzMiB0eF9iZF90YWlsOw0KPiAtCXUzMiByeF9iZF9jaTsNCj4g LQ0KPiAgCXUzMiBtYXhfZnJtX3NpemU7DQo+ICAJdTMyIHJ4bWVtOw0KPiAgDQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jDQo+ IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYw0KPiBp bmRleCBkNmZjM2Y3YWNkZjAuLjg4ODIxZjczZmI5ZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9u ZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYw0KPiArKysgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jDQo+IEBAIC0yNTQsOCAr MjU0LDYgQEAgc3RhdGljIHUzMiBheGllbmV0X3VzZWNfdG9fdGltZXIoc3RydWN0IGF4aWVuZXRf bG9jYWwNCj4gKmxwLCB1MzIgY29hbGVzY2VfdXNlYykNCj4gICAqLw0KPiAgc3RhdGljIHZvaWQg YXhpZW5ldF9kbWFfc3RhcnQoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKQ0KPiAgew0KPiAtCXUz MiB0eF9jcjsNCj4gLQ0KPiAgCS8qIFN0YXJ0IHVwZGF0aW5nIHRoZSBSeCBjaGFubmVsIGNvbnRy b2wgcmVnaXN0ZXIgKi8NCj4gIAlscC0+cnhfZG1hX2NyID0gKGxwLT5jb2FsZXNjZV9jb3VudF9y eCA8PCBYQVhJRE1BX0NPQUxFU0NFX1NISUZUKSB8DQo+ICAJCQlYQVhJRE1BX0lSUV9JT0NfTUFT SyB8IFhBWElETUFfSVJRX0VSUk9SX01BU0s7DQo+IEBAIC0yNjksMTYgKzI2NywxNiBAQCBzdGF0 aWMgdm9pZCBheGllbmV0X2RtYV9zdGFydChzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHApDQo+ICAJ YXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfUlhfQ1JfT0ZGU0VULCBscC0+cnhfZG1hX2Ny KTsNCj4gIA0KPiAgCS8qIFN0YXJ0IHVwZGF0aW5nIHRoZSBUeCBjaGFubmVsIGNvbnRyb2wgcmVn aXN0ZXIgKi8NCj4gLQl0eF9jciA9IChscC0+Y29hbGVzY2VfY291bnRfdHggPDwgWEFYSURNQV9D T0FMRVNDRV9TSElGVCkgfA0KPiAtCQlYQVhJRE1BX0lSUV9JT0NfTUFTSyB8IFhBWElETUFfSVJR X0VSUk9SX01BU0s7DQo+ICsJbHAtPnR4X2RtYV9jciA9IChscC0+Y29hbGVzY2VfY291bnRfdHgg PDwgWEFYSURNQV9DT0FMRVNDRV9TSElGVCkgfA0KPiArCQkJWEFYSURNQV9JUlFfSU9DX01BU0sg fCBYQVhJRE1BX0lSUV9FUlJPUl9NQVNLOw0KPiAgCS8qIE9ubHkgc2V0IGludGVycnVwdCBkZWxh eSB0aW1lciBpZiBub3QgZ2VuZXJhdGluZyBhbiBpbnRlcnJ1cHQgb24NCj4gIAkgKiB0aGUgZmly c3QgVFggcGFja2V0LiBPdGhlcndpc2UgbGVhdmUgYXQgMCB0byBkaXNhYmxlIGRlbGF5DQo+IGlu dGVycnVwdC4NCj4gIAkgKi8NCj4gIAlpZiAobHAtPmNvYWxlc2NlX2NvdW50X3R4ID4gMSkNCj4g LQkJdHhfY3IgfD0gKGF4aWVuZXRfdXNlY190b190aW1lcihscCwgbHAtPmNvYWxlc2NlX3VzZWNf dHgpDQo+IC0JCQkJPDwgWEFYSURNQV9ERUxBWV9TSElGVCkgfA0KPiAtCQkJIFhBWElETUFfSVJR X0RFTEFZX01BU0s7DQo+IC0JYXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfVFhfQ1JfT0ZG U0VULCB0eF9jcik7DQo+ICsJCWxwLT50eF9kbWFfY3IgfD0gKGF4aWVuZXRfdXNlY190b190aW1l cihscCwgbHAtDQo+ID5jb2FsZXNjZV91c2VjX3R4KQ0KPiArCQkJCQk8PCBYQVhJRE1BX0RFTEFZ X1NISUZUKSB8DQo+ICsJCQkJIFhBWElETUFfSVJRX0RFTEFZX01BU0s7DQo+ICsJYXhpZW5ldF9k bWFfb3V0MzIobHAsIFhBWElETUFfVFhfQ1JfT0ZGU0VULCBscC0+dHhfZG1hX2NyKTsNCj4gIA0K PiAgCS8qIFBvcHVsYXRlIHRoZSB0YWlsIHBvaW50ZXIgYW5kIGJyaW5nIHRoZSBSeCBBeGkgRE1B IGVuZ2luZSBvdXQgb2YNCj4gIAkgKiBoYWx0ZWQgc3RhdGUuIFRoaXMgd2lsbCBtYWtlIHRoZSBS eCBzaWRlIHJlYWR5IGZvciByZWNlcHRpb24uDQo+IEBAIC0yOTQsOCArMjkyLDggQEAgc3RhdGlj IHZvaWQgYXhpZW5ldF9kbWFfc3RhcnQoc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwKQ0KPiAgCSAq IHRhaWwgcG9pbnRlciByZWdpc3RlciB0aGF0IHRoZSBUeCBjaGFubmVsIHdpbGwgc3RhcnQgdHJh bnNtaXR0aW5nLg0KPiAgCSAqLw0KPiAgCWF4aWVuZXRfZG1hX291dF9hZGRyKGxwLCBYQVhJRE1B X1RYX0NERVNDX09GRlNFVCwgbHAtPnR4X2JkX3ApOw0KPiAtCXR4X2NyIHw9IFhBWElETUFfQ1Jf UlVOU1RPUF9NQVNLOw0KPiAtCWF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJRE1BX1RYX0NSX09G RlNFVCwgdHhfY3IpOw0KPiArCWxwLT50eF9kbWFfY3IgfD0gWEFYSURNQV9DUl9SVU5TVE9QX01B U0s7DQo+ICsJYXhpZW5ldF9kbWFfb3V0MzIobHAsIFhBWElETUFfVFhfQ1JfT0ZGU0VULCBscC0+ dHhfZG1hX2NyKTsNCj4gIH0NCj4gIA0KPiAgLyoqDQo+IEBAIC02NjYsMzcgKzY2NCwzNCBAQCBz dGF0aWMgaW50IGF4aWVuZXRfZGV2aWNlX3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlDQo+ICpuZGV2 KQ0KPiAgDQo+ICAvKioNCj4gICAqIGF4aWVuZXRfZnJlZV90eF9jaGFpbiAtIENsZWFuIHVwIGEg c2VyaWVzIG9mIGxpbmtlZCBUWCBkZXNjcmlwdG9ycy4NCj4gLSAqIEBuZGV2OglQb2ludGVyIHRv IHRoZSBuZXRfZGV2aWNlIHN0cnVjdHVyZQ0KPiArICogQGxwOgkJUG9pbnRlciB0byB0aGUgYXhp ZW5ldF9sb2NhbCBzdHJ1Y3R1cmUNCj4gICAqIEBmaXJzdF9iZDoJSW5kZXggb2YgZmlyc3QgZGVz Y3JpcHRvciB0byBjbGVhbiB1cA0KPiAtICogQG5yX2JkczoJTnVtYmVyIG9mIGRlc2NyaXB0b3Jz IHRvIGNsZWFuIHVwLCBjYW4gYmUgLTEgaWYgdW5rbm93bi4NCj4gKyAqIEBucl9iZHM6CU1heCBu dW1iZXIgb2YgZGVzY3JpcHRvcnMgdG8gY2xlYW4gdXANCj4gKyAqIEBmb3JjZToJV2hldGhlciB0 byBjbGVhbiBkZXNjcmlwdG9ycyBldmVuIGlmIG5vdCBjb21wbGV0ZQ0KPiAgICogQHNpemVwOglQ b2ludGVyIHRvIGEgdTMyIGZpbGxlZCB3aXRoIHRoZSB0b3RhbCBzdW0gb2YgYWxsIGJ5dGVzDQo+ ICAgKiAJCWluIGFsbCBjbGVhbmVkLXVwIGRlc2NyaXB0b3JzLiBJZ25vcmVkIGlmIE5VTEwuDQo+ ICsgKiBAYnVkZ2V0OglOQVBJIGJ1ZGdldCAodXNlIDAgd2hlbiBub3QgY2FsbGVkIGZyb20gTkFQ SSBwb2xsKQ0KPiAgICoNCj4gICAqIFdvdWxkIGVpdGhlciBiZSBjYWxsZWQgYWZ0ZXIgYSBzdWNj ZXNzZnVsIHRyYW5zbWl0IG9wZXJhdGlvbiwgb3IgYWZ0ZXINCj4gICAqIHRoZXJlIHdhcyBhbiBl cnJvciB3aGVuIHNldHRpbmcgdXAgdGhlIGNoYWluLg0KPiAgICogUmV0dXJucyB0aGUgbnVtYmVy IG9mIGRlc2NyaXB0b3JzIGhhbmRsZWQuDQo+ICAgKi8NCj4gLXN0YXRpYyBpbnQgYXhpZW5ldF9m cmVlX3R4X2NoYWluKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgZmlyc3RfYmQsDQo+IC0J CQkJIGludCBucl9iZHMsIHUzMiAqc2l6ZXApDQo+ICtzdGF0aWMgaW50IGF4aWVuZXRfZnJlZV90 eF9jaGFpbihzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAsIHUzMiBmaXJzdF9iZCwNCj4gKwkJCQkg aW50IG5yX2JkcywgYm9vbCBmb3JjZSwgdTMyICpzaXplcCwgaW50DQo+IGJ1ZGdldCkNCj4gIHsN Cj4gLQlzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTsNCj4gIAlz dHJ1Y3QgYXhpZG1hX2JkICpjdXJfcDsNCj4gLQlpbnQgbWF4X2JkcyA9IG5yX2JkczsNCj4gIAl1 bnNpZ25lZCBpbnQgc3RhdHVzOw0KPiAgCWRtYV9hZGRyX3QgcGh5czsNCj4gIAlpbnQgaTsNCj4g IA0KPiAtCWlmIChtYXhfYmRzID09IC0xKQ0KPiAtCQltYXhfYmRzID0gbHAtPnR4X2JkX251bTsN Cj4gLQ0KPiAtCWZvciAoaSA9IDA7IGkgPCBtYXhfYmRzOyBpKyspIHsNCj4gKwlmb3IgKGkgPSAw OyBpIDwgbnJfYmRzOyBpKyspIHsNCj4gIAkJY3VyX3AgPSAmbHAtPnR4X2JkX3ZbKGZpcnN0X2Jk ICsgaSkgJSBscC0+dHhfYmRfbnVtXTsNCj4gIAkJc3RhdHVzID0gY3VyX3AtPnN0YXR1czsNCj4g IA0KPiAtCQkvKiBJZiBubyBudW1iZXIgaXMgZ2l2ZW4sIGNsZWFuIHVwICphbGwqIGRlc2NyaXB0 b3JzIHRoYXQgaGF2ZQ0KPiAtCQkgKiBiZWVuIGNvbXBsZXRlZCBieSB0aGUgTUFDLg0KPiArCQkv KiBJZiBmb3JjZSBpcyBub3Qgc3BlY2lmaWVkLCBjbGVhbiB1cCBvbmx5IGRlc2NyaXB0b3JzDQo+ ICsJCSAqIHRoYXQgaGF2ZSBiZWVuIGNvbXBsZXRlZCBieSB0aGUgTUFDLg0KPiAgCQkgKi8NCj4g LQkJaWYgKG5yX2JkcyA9PSAtMSAmJiAhKHN0YXR1cyAmIFhBWElETUFfQkRfU1RTX0NPTVBMRVRF X01BU0spKQ0KPiArCQlpZiAoIWZvcmNlICYmICEoc3RhdHVzICYgWEFYSURNQV9CRF9TVFNfQ09N UExFVEVfTUFTSykpDQo+ICAJCQlicmVhazsNCj4gIA0KPiAgCQkvKiBFbnN1cmUgd2Ugc2VlIGNv bXBsZXRlIGRlc2NyaXB0b3IgdXBkYXRlICovDQo+IEBAIC03MDcsNyArNzAyLDcgQEAgc3RhdGlj IGludCBheGllbmV0X2ZyZWVfdHhfY2hhaW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsDQo+IHUz MiBmaXJzdF9iZCwNCj4gIAkJCQkgRE1BX1RPX0RFVklDRSk7DQo+ICANCj4gIAkJaWYgKGN1cl9w LT5za2IgJiYgKHN0YXR1cyAmIFhBWElETUFfQkRfU1RTX0NPTVBMRVRFX01BU0spKQ0KPiAtCQkJ ZGV2X2NvbnN1bWVfc2tiX2lycShjdXJfcC0+c2tiKTsNCj4gKwkJCW5hcGlfY29uc3VtZV9za2Io Y3VyX3AtPnNrYiwgYnVkZ2V0KTsNCj4gIA0KPiAgCQljdXJfcC0+YXBwMCA9IDA7DQo+ICAJCWN1 cl9wLT5hcHAxID0gMDsNCj4gQEAgLTc1MywzNiArNzQ4LDUxIEBAIHN0YXRpYyBpbmxpbmUgaW50 IGF4aWVuZXRfY2hlY2tfdHhfYmRfc3BhY2Uoc3RydWN0DQo+IGF4aWVuZXRfbG9jYWwgKmxwLA0K PiAgfQ0KPiAgDQo+ICAvKioNCj4gLSAqIGF4aWVuZXRfc3RhcnRfeG1pdF9kb25lIC0gSW52b2tl ZCBvbmNlIGEgdHJhbnNtaXQgaXMgY29tcGxldGVkIGJ5IHRoZQ0KPiArICogYXhpZW5ldF90eF9w b2xsIC0gSW52b2tlZCBvbmNlIGEgdHJhbnNtaXQgaXMgY29tcGxldGVkIGJ5IHRoZQ0KPiAgICog QXhpIERNQSBUeCBjaGFubmVsLg0KPiAtICogQG5kZXY6CVBvaW50ZXIgdG8gdGhlIG5ldF9kZXZp Y2Ugc3RydWN0dXJlDQo+ICsgKiBAbmFwaToJUG9pbnRlciB0byBOQVBJIHN0cnVjdHVyZS4NCj4g KyAqIEBidWRnZXQ6CU1heCBudW1iZXIgb2YgVFggcGFja2V0cyB0byBwcm9jZXNzLg0KPiArICoN Cj4gKyAqIFJldHVybjogTnVtYmVyIG9mIFRYIHBhY2tldHMgcHJvY2Vzc2VkLg0KPiAgICoNCj4g LSAqIFRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCBmcm9tIHRoZSBBeGkgRE1BIFR4IGlzciB0byBu b3RpZnkgdGhlIGNvbXBsZXRpb24NCj4gKyAqIFRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZCBmcm9t IHRoZSBOQVBJIHByb2Nlc3NpbmcgdG8gbm90aWZ5IHRoZQ0KPiBjb21wbGV0aW9uDQo+ICAgKiBv ZiB0cmFuc21pdCBvcGVyYXRpb24uIEl0IGNsZWFycyBmaWVsZHMgaW4gdGhlIGNvcnJlc3BvbmRp bmcgVHggQkRzIGFuZA0KPiAgICogdW5tYXBzIHRoZSBjb3JyZXNwb25kaW5nIGJ1ZmZlciBzbyB0 aGF0IENQVSBjYW4gcmVnYWluIG93bmVyc2hpcCBvZiB0aGUNCj4gICAqIGJ1ZmZlci4gSXQgZmlu YWxseSBpbnZva2VzICJuZXRpZl93YWtlX3F1ZXVlIiB0byByZXN0YXJ0IHRyYW5zbWlzc2lvbiBp Zg0KPiAgICogcmVxdWlyZWQuDQo+ICAgKi8NCj4gLXN0YXRpYyB2b2lkIGF4aWVuZXRfc3RhcnRf eG1pdF9kb25lKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQ0KPiArc3RhdGljIGludCBheGllbmV0 X3R4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KQ0KPiAgew0KPiAt CXN0cnVjdCBheGllbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpOw0KPiAtCXUzMiBw YWNrZXRzID0gMDsNCj4gKwlzdHJ1Y3QgYXhpZW5ldF9sb2NhbCAqbHAgPSBjb250YWluZXJfb2Yo bmFwaSwgc3RydWN0IGF4aWVuZXRfbG9jYWwsDQo+IG5hcGlfdHgpOw0KPiArCXN0cnVjdCBuZXRf ZGV2aWNlICpuZGV2ID0gbHAtPm5kZXY7DQo+ICAJdTMyIHNpemUgPSAwOw0KPiArCWludCBwYWNr ZXRzOw0KPiAgDQo+IC0JcGFja2V0cyA9IGF4aWVuZXRfZnJlZV90eF9jaGFpbihuZGV2LCBscC0+ dHhfYmRfY2ksIC0xLCAmc2l6ZSk7DQo+ICsJcGFja2V0cyA9IGF4aWVuZXRfZnJlZV90eF9jaGFp bihscCwgbHAtPnR4X2JkX2NpLCBidWRnZXQsIGZhbHNlLCAmc2l6ZSwNCj4gYnVkZ2V0KTsNCj4g IA0KPiAtCWxwLT50eF9iZF9jaSArPSBwYWNrZXRzOw0KPiAtCWlmIChscC0+dHhfYmRfY2kgPj0g bHAtPnR4X2JkX251bSkNCj4gLQkJbHAtPnR4X2JkX2NpIC09IGxwLT50eF9iZF9udW07DQo+ICsJ aWYgKHBhY2tldHMpIHsNCj4gKwkJbHAtPnR4X2JkX2NpICs9IHBhY2tldHM7DQo+ICsJCWlmIChs cC0+dHhfYmRfY2kgPj0gbHAtPnR4X2JkX251bSkNCj4gKwkJCWxwLT50eF9iZF9jaSAlPSBscC0+ dHhfYmRfbnVtOw0KPiAgDQo+IC0JbmRldi0+c3RhdHMudHhfcGFja2V0cyArPSBwYWNrZXRzOw0K PiAtCW5kZXYtPnN0YXRzLnR4X2J5dGVzICs9IHNpemU7DQo+ICsJCW5kZXYtPnN0YXRzLnR4X3Bh Y2tldHMgKz0gcGFja2V0czsNCj4gKwkJbmRldi0+c3RhdHMudHhfYnl0ZXMgKz0gc2l6ZTsNCj4g IA0KPiAtCS8qIE1hdGNoZXMgYmFycmllciBpbiBheGllbmV0X3N0YXJ0X3htaXQgKi8NCj4gLQlz bXBfbWIoKTsNCj4gKwkJLyogTWF0Y2hlcyBiYXJyaWVyIGluIGF4aWVuZXRfc3RhcnRfeG1pdCAq Lw0KPiArCQlzbXBfbWIoKTsNCj4gIA0KPiAtCWlmICghYXhpZW5ldF9jaGVja190eF9iZF9zcGFj ZShscCwgTUFYX1NLQl9GUkFHUyArIDEpKQ0KPiAtCQluZXRpZl93YWtlX3F1ZXVlKG5kZXYpOw0K PiArCQlpZiAoIWF4aWVuZXRfY2hlY2tfdHhfYmRfc3BhY2UobHAsIE1BWF9TS0JfRlJBR1MgKyAx KSkNCj4gKwkJCW5ldGlmX3dha2VfcXVldWUobmRldik7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKHBh Y2tldHMgPCBidWRnZXQgJiYgbmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHBhY2tldHMpKSB7DQo+ ICsJCS8qIFJlLWVuYWJsZSBUWCBjb21wbGV0aW9uIGludGVycnVwdHMuIFRoaXMgc2hvdWxkDQo+ ICsJCSAqIGNhdXNlIGFuIGltbWVkaWF0ZSBpbnRlcnJ1cHQgaWYgYW55IFRYIHBhY2tldHMgYXJl DQo+ICsJCSAqIGFscmVhZHkgcGVuZGluZy4NCj4gKwkJICovDQo+ICsJCWF4aWVuZXRfZG1hX291 dDMyKGxwLCBYQVhJRE1BX1RYX0NSX09GRlNFVCwgbHAtPnR4X2RtYV9jcik7DQo+ICsJfQ0KPiAr CXJldHVybiBwYWNrZXRzOw0KPiAgfQ0KPiAgDQo+ICAvKioNCj4gQEAgLTg2NCw4ICs4NzQsOCBA QCBheGllbmV0X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZp Y2UNCj4gKm5kZXYpDQo+ICAJCQlpZiAobmV0X3JhdGVsaW1pdCgpKQ0KPiAgCQkJCW5ldGRldl9l cnIobmRldiwgIlRYIERNQSBtYXBwaW5nIGVycm9yXG4iKTsNCj4gIAkJCW5kZXYtPnN0YXRzLnR4 X2Ryb3BwZWQrKzsNCj4gLQkJCWF4aWVuZXRfZnJlZV90eF9jaGFpbihuZGV2LCBvcmlnX3RhaWxf cHRyLCBpaSArIDEsDQo+IC0JCQkJCSAgICAgIE5VTEwpOw0KPiArCQkJYXhpZW5ldF9mcmVlX3R4 X2NoYWluKGxwLCBvcmlnX3RhaWxfcHRyLCBpaSArIDEsDQo+ICsJCQkJCSAgICAgIHRydWUsIE5V TEwsIDApOw0KPiAgCQkJbHAtPnR4X2JkX3RhaWwgPSBvcmlnX3RhaWxfcHRyOw0KPiAgDQo+ICAJ CQlyZXR1cm4gTkVUREVWX1RYX09LOw0KPiBAQCAtODg3LDcgKzg5Nyw3IEBAIGF4aWVuZXRfc3Rh cnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZQ0KPiAqbmRldikN Cj4gIAlpZiAoYXhpZW5ldF9jaGVja190eF9iZF9zcGFjZShscCwgTUFYX1NLQl9GUkFHUyArIDEp KSB7DQo+ICAJCW5ldGlmX3N0b3BfcXVldWUobmRldik7DQo+ICANCj4gLQkJLyogTWF0Y2hlcyBi YXJyaWVyIGluIGF4aWVuZXRfc3RhcnRfeG1pdF9kb25lICovDQo+ICsJCS8qIE1hdGNoZXMgYmFy cmllciBpbiBheGllbmV0X3R4X3BvbGwgKi8NCj4gIAkJc21wX21iKCk7DQo+ICANCj4gIAkJLyog U3BhY2UgbWlnaHQgaGF2ZSBqdXN0IGJlZW4gZnJlZWQgLSBjaGVjayBhZ2FpbiAqLw0KPiBAQCAt ODk5LDEzICs5MDksMTMgQEAgYXhpZW5ldF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2Is IHN0cnVjdA0KPiBuZXRfZGV2aWNlICpuZGV2KQ0KPiAgfQ0KPiAgDQo+ICAvKioNCj4gLSAqIGF4 aWVuZXRfcG9sbCAtIFRyaWdnZXJlZCBieSBSWCBJU1IgdG8gY29tcGxldGUgdGhlIHJlY2VpdmVk IEJEDQo+IHByb2Nlc3NpbmcuDQo+ICsgKiBheGllbmV0X3J4X3BvbGwgLSBUcmlnZ2VyZWQgYnkg UlggSVNSIHRvIGNvbXBsZXRlIHRoZSBCRCBwcm9jZXNzaW5nLg0KPiAgICogQG5hcGk6CVBvaW50 ZXIgdG8gTkFQSSBzdHJ1Y3R1cmUuDQo+IC0gKiBAYnVkZ2V0OglNYXggbnVtYmVyIG9mIHBhY2tl dHMgdG8gcHJvY2Vzcy4NCj4gKyAqIEBidWRnZXQ6CU1heCBudW1iZXIgb2YgUlggcGFja2V0cyB0 byBwcm9jZXNzLg0KPiAgICoNCj4gICAqIFJldHVybjogTnVtYmVyIG9mIFJYIHBhY2tldHMgcHJv Y2Vzc2VkLg0KPiAgICovDQo+IC1zdGF0aWMgaW50IGF4aWVuZXRfcG9sbChzdHJ1Y3QgbmFwaV9z dHJ1Y3QgKm5hcGksIGludCBidWRnZXQpDQo+ICtzdGF0aWMgaW50IGF4aWVuZXRfcnhfcG9sbChz dHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpDQo+ICB7DQo+ICAJdTMyIGxlbmd0 aDsNCj4gIAl1MzIgY3N1bXN0YXR1czsNCj4gQEAgLTkxNCw3ICs5MjQsNyBAQCBzdGF0aWMgaW50 IGF4aWVuZXRfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludA0KPiBidWRnZXQpDQo+ ICAJZG1hX2FkZHJfdCB0YWlsX3AgPSAwOw0KPiAgCXN0cnVjdCBheGlkbWFfYmQgKmN1cl9wOw0K PiAgCXN0cnVjdCBza19idWZmICpza2IsICpuZXdfc2tiOw0KPiAtCXN0cnVjdCBheGllbmV0X2xv Y2FsICpscCA9IGNvbnRhaW5lcl9vZihuYXBpLCBzdHJ1Y3QgYXhpZW5ldF9sb2NhbCwNCj4gbmFw aSk7DQo+ICsJc3RydWN0IGF4aWVuZXRfbG9jYWwgKmxwID0gY29udGFpbmVyX29mKG5hcGksIHN0 cnVjdCBheGllbmV0X2xvY2FsLA0KPiBuYXBpX3J4KTsNCj4gIA0KPiAgCWN1cl9wID0gJmxwLT5y eF9iZF92W2xwLT5yeF9iZF9jaV07DQo+ICANCj4gQEAgLTEwMTcsOCArMTAyNyw4IEBAIHN0YXRp YyBpbnQgYXhpZW5ldF9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50DQo+IGJ1ZGdl dCkNCj4gICAqDQo+ICAgKiBSZXR1cm46IElSUV9IQU5ETEVEIGlmIGRldmljZSBnZW5lcmF0ZWQg YSBUWCBpbnRlcnJ1cHQsIElSUV9OT05FDQo+IG90aGVyd2lzZS4NCj4gICAqDQo+IC0gKiBUaGlz IGlzIHRoZSBBeGkgRE1BIFR4IGRvbmUgSXNyLiBJdCBpbnZva2VzICJheGllbmV0X3N0YXJ0X3ht aXRfZG9uZSINCj4gLSAqIHRvIGNvbXBsZXRlIHRoZSBCRCBwcm9jZXNzaW5nLg0KPiArICogVGhp cyBpcyB0aGUgQXhpIERNQSBUeCBkb25lIElzci4gSXQgaW52b2tlcyBOQVBJIHBvbGxpbmcgdG8g Y29tcGxldGUgdGhlDQo+ICsgKiBUWCBCRCBwcm9jZXNzaW5nLg0KPiAgICovDQo+ICBzdGF0aWMg aXJxcmV0dXJuX3QgYXhpZW5ldF90eF9pcnEoaW50IGlycSwgdm9pZCAqX25kZXYpDQo+ICB7DQo+ IEBAIC0xMDQwLDcgKzEwNTAsMTUgQEAgc3RhdGljIGlycXJldHVybl90IGF4aWVuZXRfdHhfaXJx KGludCBpcnEsIHZvaWQNCj4gKl9uZGV2KQ0KPiAgCQkJICAgKGxwLT50eF9iZF92W2xwLT50eF9i ZF9jaV0pLnBoeXMpOw0KPiAgCQlzY2hlZHVsZV93b3JrKCZscC0+ZG1hX2Vycl90YXNrKTsNCj4g IAl9IGVsc2Ugew0KPiAtCQlheGllbmV0X3N0YXJ0X3htaXRfZG9uZShscC0+bmRldik7DQo+ICsJ CS8qIERpc2FibGUgZnVydGhlciBUWCBjb21wbGV0aW9uIGludGVycnVwdHMgYW5kIHNjaGVkdWxl DQo+ICsJCSAqIE5BUEkgdG8gaGFuZGxlIHRoZSBjb21wbGV0aW9ucy4NCj4gKwkJICovDQo+ICsJ CXUzMiBjciA9IGxwLT50eF9kbWFfY3I7DQo+ICsNCj4gKwkJY3IgJj0gfihYQVhJRE1BX0lSUV9J T0NfTUFTSyB8IFhBWElETUFfSVJRX0RFTEFZX01BU0spOw0KPiArCQlheGllbmV0X2RtYV9vdXQz MihscCwgWEFYSURNQV9UWF9DUl9PRkZTRVQsIGNyKTsNCj4gKw0KPiArCQluYXBpX3NjaGVkdWxl KCZscC0+bmFwaV90eCk7DQo+ICAJfQ0KPiAgDQo+ICAJcmV0dXJuIElSUV9IQU5ETEVEOw0KPiBA QCAtMTA4NCw3ICsxMTAyLDcgQEAgc3RhdGljIGlycXJldHVybl90IGF4aWVuZXRfcnhfaXJxKGlu dCBpcnEsIHZvaWQgKl9uZGV2KQ0KPiAgCQljciAmPSB+KFhBWElETUFfSVJRX0lPQ19NQVNLIHwg WEFYSURNQV9JUlFfREVMQVlfTUFTSyk7DQo+ICAJCWF4aWVuZXRfZG1hX291dDMyKGxwLCBYQVhJ RE1BX1JYX0NSX09GRlNFVCwgY3IpOw0KPiAgDQo+IC0JCW5hcGlfc2NoZWR1bGUoJmxwLT5uYXBp KTsNCj4gKwkJbmFwaV9zY2hlZHVsZSgmbHAtPm5hcGlfcngpOw0KPiAgCX0NCj4gIA0KPiAgCXJl dHVybiBJUlFfSEFORExFRDsNCj4gQEAgLTExNjAsNyArMTE3OCw4IEBAIHN0YXRpYyBpbnQgYXhp ZW5ldF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQ0KPiAgCS8qIEVuYWJsZSB3b3JrZXIg dGhyZWFkIGZvciBBeGkgRE1BIGVycm9yIGhhbmRsaW5nICovDQo+ICAJSU5JVF9XT1JLKCZscC0+ ZG1hX2Vycl90YXNrLCBheGllbmV0X2RtYV9lcnJfaGFuZGxlcik7DQo+ICANCj4gLQluYXBpX2Vu YWJsZSgmbHAtPm5hcGkpOw0KPiArCW5hcGlfZW5hYmxlKCZscC0+bmFwaV9yeCk7DQo+ICsJbmFw aV9lbmFibGUoJmxwLT5uYXBpX3R4KTsNCj4gIA0KPiAgCS8qIEVuYWJsZSBpbnRlcnJ1cHRzIGZv ciBBeGkgRE1BIFR4ICovDQo+ICAJcmV0ID0gcmVxdWVzdF9pcnEobHAtPnR4X2lycSwgYXhpZW5l dF90eF9pcnEsIElSUUZfU0hBUkVELA0KPiBAQCAtMTE4Nyw3ICsxMjA2LDggQEAgc3RhdGljIGlu dCBheGllbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpDQo+ICBlcnJfcnhfaXJxOg0K PiAgCWZyZWVfaXJxKGxwLT50eF9pcnEsIG5kZXYpOw0KPiAgZXJyX3R4X2lycToNCj4gLQluYXBp X2Rpc2FibGUoJmxwLT5uYXBpKTsNCj4gKwluYXBpX2Rpc2FibGUoJmxwLT5uYXBpX3R4KTsNCj4g KwluYXBpX2Rpc2FibGUoJmxwLT5uYXBpX3J4KTsNCj4gIAlwaHlsaW5rX3N0b3AobHAtPnBoeWxp bmspOw0KPiAgCXBoeWxpbmtfZGlzY29ubmVjdF9waHkobHAtPnBoeWxpbmspOw0KPiAgCWNhbmNl bF93b3JrX3N5bmMoJmxwLT5kbWFfZXJyX3Rhc2spOw0KPiBAQCAtMTIxMSw3ICsxMjMxLDggQEAg c3RhdGljIGludCBheGllbmV0X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpDQo+ICANCj4g IAlkZXZfZGJnKCZuZGV2LT5kZXYsICJheGllbmV0X2Nsb3NlKClcbiIpOw0KPiAgDQo+IC0JbmFw aV9kaXNhYmxlKCZscC0+bmFwaSk7DQo+ICsJbmFwaV9kaXNhYmxlKCZscC0+bmFwaV90eCk7DQo+ ICsJbmFwaV9kaXNhYmxlKCZscC0+bmFwaV9yeCk7DQo+ICANCj4gIAlwaHlsaW5rX3N0b3AobHAt PnBoeWxpbmspOw0KPiAgCXBoeWxpbmtfZGlzY29ubmVjdF9waHkobHAtPnBoeWxpbmspOw0KPiBA QCAtMTczMiw3ICsxNzUzLDggQEAgc3RhdGljIHZvaWQgYXhpZW5ldF9kbWFfZXJyX2hhbmRsZXIo c3RydWN0IHdvcmtfc3RydWN0DQo+ICp3b3JrKQ0KPiAgCQkJCQkJZG1hX2Vycl90YXNrKTsNCj4g IAlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IGxwLT5uZGV2Ow0KPiAgDQo+IC0JbmFwaV9kaXNh YmxlKCZscC0+bmFwaSk7DQo+ICsJbmFwaV9kaXNhYmxlKCZscC0+bmFwaV90eCk7DQo+ICsJbmFw aV9kaXNhYmxlKCZscC0+bmFwaV9yeCk7DQo+ICANCj4gIAlheGllbmV0X3NldG9wdGlvbnMobmRl diwgbHAtPm9wdGlvbnMgJg0KPiAgCQkJICAgfihYQUVfT1BUSU9OX1RYRU4gfCBYQUVfT1BUSU9O X1JYRU4pKTsNCj4gQEAgLTE3OTgsNyArMTgyMCw4IEBAIHN0YXRpYyB2b2lkIGF4aWVuZXRfZG1h X2Vycl9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdA0KPiAqd29yaykNCj4gIAlheGllbmV0X3Nl dF9tYWNfYWRkcmVzcyhuZGV2LCBOVUxMKTsNCj4gIAlheGllbmV0X3NldF9tdWx0aWNhc3RfbGlz dChuZGV2KTsNCj4gIAlheGllbmV0X3NldG9wdGlvbnMobmRldiwgbHAtPm9wdGlvbnMpOw0KPiAt CW5hcGlfZW5hYmxlKCZscC0+bmFwaSk7DQo+ICsJbmFwaV9lbmFibGUoJmxwLT5uYXBpX3J4KTsN Cj4gKwluYXBpX2VuYWJsZSgmbHAtPm5hcGlfdHgpOw0KPiAgfQ0KPiAgDQo+ICAvKioNCj4gQEAg LTE4NDcsNyArMTg3MCw4IEBAIHN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQ0KPiAgCWxwLT5yeF9iZF9udW0gPSBSWF9CRF9OVU1fREVGQVVMVDsN Cj4gIAlscC0+dHhfYmRfbnVtID0gVFhfQkRfTlVNX0RFRkFVTFQ7DQo+ICANCj4gLQluZXRpZl9u YXBpX2FkZChuZGV2LCAmbHAtPm5hcGksIGF4aWVuZXRfcG9sbCwgTkFQSV9QT0xMX1dFSUdIVCk7 DQo+ICsJbmV0aWZfbmFwaV9hZGQobmRldiwgJmxwLT5uYXBpX3J4LCBheGllbmV0X3J4X3BvbGws IE5BUElfUE9MTF9XRUlHSFQpOw0KPiArCW5ldGlmX25hcGlfYWRkKG5kZXYsICZscC0+bmFwaV90 eCwgYXhpZW5ldF90eF9wb2xsLCBOQVBJX1BPTExfV0VJR0hUKTsNCj4gIA0KPiAgCWxwLT5heGlf Y2xrID0gZGV2bV9jbGtfZ2V0X29wdGlvbmFsKCZwZGV2LT5kZXYsICJzX2F4aV9saXRlX2NsayIp Ow0KPiAgCWlmICghbHAtPmF4aV9jbGspIHsNCg==