Received: by 2002:ac0:aed5:0:0:0:0:0 with SMTP id t21csp2218227imb; Sun, 3 Mar 2019 22:39:35 -0800 (PST) X-Google-Smtp-Source: APXvYqxU3mBFFTXDoPVprD35dqXfLV1h9hwFjbynCyeFD376Ptb/mXjiIEhg5IXiT5KziKy5UziH X-Received: by 2002:a65:5844:: with SMTP id s4mr16965984pgr.77.1551681575302; Sun, 03 Mar 2019 22:39:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551681575; cv=none; d=google.com; s=arc-20160816; b=TNsZA6lq6Q1HIMgJOTZZv3xYldAs3JtlYjL1LuP1EpTtXEZDO9sAEGrdtQFJZY+AOx urYM3TFacsrJo2YiD3If9Qr78C2Oro3wnoLNtSoxm+ZFWi+Enoq0fB/vj9On23DlLRM+ 13CcAVEipWz/76+7/A29Pe4XuYh7Epd/1P8wNWO220aaypPwVMep68zGr3e/4yCtKVfF 3gmiKakq8L5nhGSS0a0PtDeeITnNmdxn1rmi8FmGRGgQSJXsI0BU/73aLtkQCThF1pCZ gCXLrgA/r3WiHkBmoTs9gNRJVs5ZOz1AkfT7Gu4hzJoUbvSFQcg+rbtd5KJ60ufSf6gC yRiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=CT1OAUYjdW0deh/Ew3adyJJf6eCaDXcmh0aPphu5zfI=; b=zXMia1dEU1yJSnfV8b1mssUC+kI2bSpjAY55DlyDIDhYYiEWG2yKQP2qW9ctfAIsyZ 6Af85/UzNPIMimOvMh3KLtbSI8la+9qDCmIAgxYIljAk1QffdzeLZOsGx2w4k8J6MoFF PjSEBQz/t9/Mav65QhnplPGHSZpaqTrLWxo1eXXKbiBhpyrhYoip3PobVtKqg20DXQNu 5hJY8ULyIDIi3itsmuvjIU8Rr05JDFwtcj59Y9Buw/p35nrxELl3QZmlxsoCT1CHPtuS ScOeCtNWXxdbE5AqiIsT7kkDW5/2WnGQ8oevZmwc1YJflTHhdWftiVdj6OcJhDyMrESb ASyQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector1 header.b=N036ReMr; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 21si4716539pgl.308.2019.03.03.22.39.19; Sun, 03 Mar 2019 22:39:35 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector1 header.b=N036ReMr; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726073AbfCDGhd (ORCPT + 99 others); Mon, 4 Mar 2019 01:37:33 -0500 Received: from mail-eopbgr50082.outbound.protection.outlook.com ([40.107.5.82]:55221 "EHLO EUR03-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725550AbfCDGhd (ORCPT ); Mon, 4 Mar 2019 01:37:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CT1OAUYjdW0deh/Ew3adyJJf6eCaDXcmh0aPphu5zfI=; b=N036ReMrd0nfyaRPqVzxNvhdPaahlz94dn9AXbLHnaBAd62jH8k36u71jU+yJktoxi5Lc9jm+2W7HwiY4bTmTpiYa3VFQfgFs/4SSt53HcwEU0xqDESICjBD8PloztJL7UR/50RGUgGCe+5uJj5gebb6G/qY7UQYXl79n5rPY5Y= Received: from AM0PR04MB4481.eurprd04.prod.outlook.com (52.135.147.15) by AM0PR04MB5092.eurprd04.prod.outlook.com (20.177.40.161) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1665.17; Mon, 4 Mar 2019 06:36:56 +0000 Received: from AM0PR04MB4481.eurprd04.prod.outlook.com ([fe80::a51f:134d:b530:f185]) by AM0PR04MB4481.eurprd04.prod.outlook.com ([fe80::a51f:134d:b530:f185%5]) with mapi id 15.20.1665.019; Mon, 4 Mar 2019 06:36:56 +0000 From: Peng Fan To: Dennis Zhou CC: Tejun Heo , Christoph Lameter , Vlad Buslov , "kernel-team@fb.com" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH 11/12] percpu: convert chunk hints to be based on pcpu_block_md Thread-Topic: [PATCH 11/12] percpu: convert chunk hints to be based on pcpu_block_md Thread-Index: AQHUzwwClvV3sVc68UW4NSgsa5lMs6X5eYQQgADmAoCAAKrEoA== Date: Mon, 4 Mar 2019 06:36:56 +0000 Message-ID: References: <20190228021839.55779-1-dennis@kernel.org> <20190228021839.55779-12-dennis@kernel.org> <20190303202223.GA4868@dennisz-mbp.dhcp.thefacebook.com> In-Reply-To: <20190303202223.GA4868@dennisz-mbp.dhcp.thefacebook.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; x-originating-ip: [92.121.36.198] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 88eb083e-e151-4774-a199-08d6a06bcbf6 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);SRVR:AM0PR04MB5092; x-ms-traffictypediagnostic: AM0PR04MB5092: x-microsoft-exchange-diagnostics: =?utf-8?B?MTtBTTBQUjA0TUI1MDkyOzIzOkdzenk1OWhoSzgyODgwYzdUVEpnV0FSUE9i?= =?utf-8?B?MTdDb2dPRWVXbFROWHBIWnV3R2NSYTFaVHp6QVplb0FoNm00ZElKcFA1citY?= =?utf-8?B?TGhQNVNZRFFGOUtPUnMxR0RWVjBEcTFRcXEwSjFLYUpxVnRnaXM5eDR4ekl0?= =?utf-8?B?aXZudk9HclNPMUdTSmVaN1ZNZEN6aXl4Q0lFOTlYNjBHUXdFbExnb1Riem9C?= =?utf-8?B?bitIVkVFYW9aY0dWbHU3WHhMT0oyUGExOE5EWXdmd0RxcnFlRmJvZVkzaW90?= =?utf-8?B?Si96UWtwTzFWWW1uZ0FsYkgvandwU1NocnFoLzFEaXB2NU1UWDVMMUlnRW4w?= =?utf-8?B?TElvdld3VGtFNEF0eW9XMjRIcjJYMXdZVEpMM0hqWVRxRi8vRmJuSldkc0kw?= =?utf-8?B?R01oYjB1YUUvcDZnc0JpWVcxUmVBMEQ5WWpxdVZoK3lTY3hVQytEUDg2Yysx?= =?utf-8?B?ZGsyS3JoZ1VnODl5aHU0V25XaThZd05qR0NzUTg3V3BjLzd5U1JSQzVYOXIy?= =?utf-8?B?STBXTFdGajhoZ1phWVI4bFBvY1ZJOG44ZFZXODFSdXNBaTZXUzg1NDU2WUsr?= =?utf-8?B?RXlMV2xWZDBUZ1d5OTlEdk1WV0dZMTl6MENGQ2xTZVdpS2NXdGpnODcxMHNn?= =?utf-8?B?TmQ3dXc2TytOT3FTbkt4TGFabGQ1V3AzY2JDcHdvMnRjeStuY09ZaWY3K3Q2?= =?utf-8?B?c2NGdFNtSFRlZFJoYU9mdEE4M091L2JHTEF1c2RiZmtxZGJYNWdJVkgxTmh3?= =?utf-8?B?YlM0VlpBN2JzeUhjYXJJb1BEQTJadXQyOTVoNWZXNEFzanRmYTROZUpHbnVl?= =?utf-8?B?Q3VubFFHVDAvclgrWm11SXV5Z054SWhaM3BHNDFCQTVQMmZiczRtYWd5cjZ0?= =?utf-8?B?dmwxV1RrV0lFSGVGU3RiK0hPZDlQODU4czFldVFVVkp6Tlp2SG5kNlpRTjRy?= =?utf-8?B?eXhlZ01IUTNrQXBTMWMvNEFOb2hFblB6OTlZR0hscElvRTZTUXhYclhBaW1t?= =?utf-8?B?TzhIcGU0U1FBdnJLM0Z2T1JmcXdSOG5INk1ZWUViZDg1dE5QcDd6SHJqMS9m?= =?utf-8?B?NkRwZjR2bEM2VjZ2WlV6NUVheFlTWFNxWHFyVXNnTVc0TUgyM1QzcnFWL3lp?= =?utf-8?B?OEs0czd4SVhrazdNcTk5QnFyMElSVFVtRG1ONUV5RE5vbHYxYTRWdWRZd056?= =?utf-8?B?cG5ob2ZXMUMrWDVmeHJmUUZLazFQWXBtNlRIcWNDZ3VzZFRVYnFaZDkrNU9F?= =?utf-8?B?NXk1KzI1K0JMRnlWMHlXbTU2T3FINENGNTBSd0RKNjFFbFJTQnRqK25pRGJ2?= =?utf-8?B?Q0RpZnNBd2U1eVFoaDVZK1V1OWZYU0w5RTVlZEpLRjVTK2NMMExRUmpVZ3dt?= =?utf-8?B?ZFgwbEVQR091UUw5a3hnQWEwME01MVRhUUZWYzBHUS9NZ3ZpSXU2dEdKdmp2?= =?utf-8?B?NFVlM0M0STRienlOMzltNzFMc2tJK1BlNHJIemxLbkVyUHBpUkNVY3RwMjZZ?= =?utf-8?B?cUpqVWwrNkwweUNqempJL1BGUmtyRlg0Q1hDaUFwK0piR1ZUR2lPeUFvY1Jn?= =?utf-8?B?dXFsMHNMU2NoeGlHY0xaUnJ3bVNzb1B1TFhkT0xBRW5NSlVPWnRFcldXblMx?= =?utf-8?B?UW9GS1d0alJGU1lEcVlLeTJ1N3MxaDNPVG04Z1ZQclNQUVRSWmc1TE8ydFd6?= =?utf-8?B?SEh6NG8xMnpVRFNuTXV1Nyt6RW52S2hNSzkzUWJtT0JIRVpTQnJQTlNhdWJE?= =?utf-8?B?dHFkTGkrcGxwREliVzVzeGpnL09sZDVpdm1aSm9XUDQ5akJnemtkZHpzTlRl?= =?utf-8?Q?pngLsR4Q+82PC?= x-microsoft-antispam-prvs: x-forefront-prvs: 09669DB681 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(346002)(376002)(366004)(396003)(39860400002)(13464003)(199004)(189003)(97736004)(86362001)(54906003)(44832011)(11346002)(446003)(93886005)(6916009)(486006)(316002)(105586002)(66066001)(476003)(9686003)(2906002)(55016002)(33656002)(74316002)(68736007)(7736002)(30864003)(256004)(14444005)(53936002)(106356001)(229853002)(76176011)(7696005)(6506007)(53546011)(102836004)(26005)(52536013)(5660300002)(305945005)(478600001)(6436002)(81166006)(81156014)(186003)(99286004)(25786009)(3846002)(6116002)(14454004)(8676002)(4326008)(71200400001)(8936002)(6246003)(71190400001);DIR:OUT;SFP:1101;SCL:1;SRVR:AM0PR04MB5092;H:AM0PR04MB4481.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: l9LZMSX/x/Qf2a4o0AtArHlQDxGfG9JfVt0+0NBvzWHW3Oek5ra0Df9gFwG7BtKWsWvzNgTOGUsaS9cPkrSBmQjp0IB7viNWwgaoj7KLE3/dqtV+rZWKGqTDkyguOJLmFvhaZJrq9xwI/lWRe0BlBT7cOXx+Pn+l6rrqt8GN6NSfhL+HLm8Ikeg5fcDkNYKEjU0TCrEIYrlyUKe39/LTpl9Cro/F/6125w/cOsgetmE4idW/ZP+FhaxjwfXRYwSQMQRneo4Fs/22yWwPRo+fEjxwp5oBVL8fHk/oR47mvCXa1aaum/R9LvRw28czoIPDFEbrQjFVHjTiE7BmFxwjKJGcoZ8+PuJ5UGgfuxLbnIEoE/ulb8WnaVFkMPD531FRryhRfdgWPe1W3Xr50p9qXF5Xd6NF0ZBFHdrgYjQ8edw= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 88eb083e-e151-4774-a199-08d6a06bcbf6 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Mar 2019 06:36:56.2966 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5092 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogRGVubmlzIFpob3UgW21h aWx0bzpkZW5uaXNAa2VybmVsLm9yZ10NCj4gU2VudDogMjAxOeW5tDPmnIg05pelIDQ6MjINCj4g VG86IFBlbmcgRmFuIDxwZW5nLmZhbkBueHAuY29tPg0KPiBDYzogRGVubmlzIFpob3UgPGRlbm5p c0BrZXJuZWwub3JnPjsgVGVqdW4gSGVvIDx0akBrZXJuZWwub3JnPjsgQ2hyaXN0b3BoDQo+IExh bWV0ZXIgPGNsQGxpbnV4LmNvbT47IFZsYWQgQnVzbG92IDx2bGFkYnVAbWVsbGFub3guY29tPjsN Cj4ga2VybmVsLXRlYW1AZmIuY29tOyBsaW51eC1tbUBrdmFjay5vcmc7IGxpbnV4LWtlcm5lbEB2 Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCAxMS8xMl0gcGVyY3B1OiBjb252 ZXJ0IGNodW5rIGhpbnRzIHRvIGJlIGJhc2VkIG9uDQo+IHBjcHVfYmxvY2tfbWQNCj4gDQo+IE9u IFN1biwgTWFyIDAzLCAyMDE5IGF0IDA4OjE4OjQ5QU0gKzAwMDAsIFBlbmcgRmFuIHdyb3RlOg0K PiA+DQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBv d25lci1saW51eC1tbUBrdmFjay5vcmcgW21haWx0bzpvd25lci1saW51eC1tbUBrdmFjay5vcmdd DQo+IE9uDQo+ID4gPiBCZWhhbGYgT2YgRGVubmlzIFpob3UNCj4gPiA+IFNlbnQ6IDIwMTnlubQy 5pyIMjjml6UgMTA6MTkNCj4gPiA+IFRvOiBEZW5uaXMgWmhvdSA8ZGVubmlzQGtlcm5lbC5vcmc+ OyBUZWp1biBIZW8gPHRqQGtlcm5lbC5vcmc+Ow0KPiA+ID4gQ2hyaXN0b3BoIExhbWV0ZXIgPGNs QGxpbnV4LmNvbT4NCj4gPiA+IENjOiBWbGFkIEJ1c2xvdiA8dmxhZGJ1QG1lbGxhbm94LmNvbT47 IGtlcm5lbC10ZWFtQGZiLmNvbTsNCj4gPiA+IGxpbnV4LW1tQGt2YWNrLm9yZzsgbGludXgta2Vy bmVsQHZnZXIua2VybmVsLm9yZw0KPiA+ID4gU3ViamVjdDogW1BBVENIIDExLzEyXSBwZXJjcHU6 IGNvbnZlcnQgY2h1bmsgaGludHMgdG8gYmUgYmFzZWQgb24NCj4gPiA+IHBjcHVfYmxvY2tfbWQN Cj4gPiA+DQo+ID4gPiBBcyBtZW50aW9uZWQgaW4gdGhlIGxhc3QgcGF0Y2gsIGEgY2h1bmsncyBo aW50cyBhcmUgbm8gZGlmZmVyZW50DQo+ID4gPiB0aGFuIGEgYmxvY2sganVzdCByZXNwb25zaWJs ZSBmb3IgbW9yZSBiaXRzLiBUaGlzIGNvbnZlcnRzIGNodW5rDQo+ID4gPiBsZXZlbCBoaW50cyB0 byB1c2UgYSBwY3B1X2Jsb2NrX21kIHRvIG1haW50YWluIHRoZW0uIFRoaXMgbGV0cyB1cw0KPiA+ ID4gcmV1c2UgdGhlIHNhbWUgaGludCBoZWxwZXIgZnVuY3Rpb25zIGFzIGEgYmxvY2suIFRoZSBs ZWZ0X2ZyZWUgYW5kDQo+ID4gPiByaWdodF9mcmVlIGFyZSB1bnVzZWQgYnkgdGhlIGNodW5rJ3Mg cGNwdV9ibG9ja19tZC4NCj4gPiA+DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBEZW5uaXMgWmhvdSA8 ZGVubmlzQGtlcm5lbC5vcmc+DQo+ID4gPiAtLS0NCj4gPiA+ICBtbS9wZXJjcHUtaW50ZXJuYWwu aCB8ICAgNSArLQ0KPiA+ID4gIG1tL3BlcmNwdS1zdGF0cy5jICAgIHwgICA1ICstDQo+ID4gPiAg bW0vcGVyY3B1LmMgICAgICAgICAgfCAxMjANCj4gKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygr KSwgNzMgZGVsZXRpb25zKC0pDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL21tL3BlcmNwdS1p bnRlcm5hbC5oIGIvbW0vcGVyY3B1LWludGVybmFsLmggaW5kZXgNCj4gPiA+IDExOWJkMTExOWFh Ny4uMDQ2OGJhNTAwYmQ0IDEwMDY0NA0KPiA+ID4gLS0tIGEvbW0vcGVyY3B1LWludGVybmFsLmgN Cj4gPiA+ICsrKyBiL21tL3BlcmNwdS1pbnRlcm5hbC5oDQo+ID4gPiBAQCAtMzksOSArMzksNyBA QCBzdHJ1Y3QgcGNwdV9jaHVuayB7DQo+ID4gPg0KPiA+ID4gIAlzdHJ1Y3QgbGlzdF9oZWFkCWxp c3Q7CQkvKiBsaW5rZWQgdG8gcGNwdV9zbG90IGxpc3RzICovDQo+ID4gPiAgCWludAkJCWZyZWVf Ynl0ZXM7CS8qIGZyZWUgYnl0ZXMgaW4gdGhlIGNodW5rICovDQo+ID4gPiAtCWludAkJCWNvbnRp Z19iaXRzOwkvKiBtYXggY29udGlndW91cyBzaXplIGhpbnQgKi8NCj4gPiA+IC0JaW50CQkJY29u dGlnX2JpdHNfc3RhcnQ7IC8qIGNvbnRpZ19iaXRzIHN0YXJ0aW5nDQo+ID4gPiAtCQkJCQkJICAg ICAgb2Zmc2V0ICovDQo+ID4gPiArCXN0cnVjdCBwY3B1X2Jsb2NrX21kCWNodW5rX21kOw0KPiA+ ID4gIAl2b2lkCQkJKmJhc2VfYWRkcjsJLyogYmFzZSBhZGRyZXNzIG9mIHRoaXMgY2h1bmsgKi8N Cj4gPiA+DQo+ID4gPiAgCXVuc2lnbmVkIGxvbmcJCSphbGxvY19tYXA7CS8qIGFsbG9jYXRpb24g bWFwICovDQo+ID4gPiBAQCAtNDksNyArNDcsNiBAQCBzdHJ1Y3QgcGNwdV9jaHVuayB7DQo+ID4g PiAgCXN0cnVjdCBwY3B1X2Jsb2NrX21kCSptZF9ibG9ja3M7CS8qIG1ldGFkYXRhIGJsb2NrcyAq Lw0KPiA+ID4NCj4gPiA+ICAJdm9pZAkJCSpkYXRhOwkJLyogY2h1bmsgZGF0YSAqLw0KPiA+ID4g LQlpbnQJCQlmaXJzdF9iaXQ7CS8qIG5vIGZyZWUgYmVsb3cgdGhpcyAqLw0KPiA+ID4gIAlib29s CQkJaW1tdXRhYmxlOwkvKiBubyBbZGVdcG9wdWxhdGlvbiBhbGxvd2VkICovDQo+ID4gPiAgCWlu dAkJCXN0YXJ0X29mZnNldDsJLyogdGhlIG92ZXJsYXAgd2l0aCB0aGUgcHJldmlvdXMNCj4gPiA+ ICAJCQkJCQkgICByZWdpb24gdG8gaGF2ZSBhIHBhZ2UgYWxpZ25lZCBkaWZmIC0tZ2l0DQo+ID4g PiBhL21tL3BlcmNwdS1zdGF0cy5jIGIvbW0vcGVyY3B1LXN0YXRzLmMgaW5kZXgNCj4gPiA+IGI1 ZmRkNDNiNjBjOS4uZWY1MDM0YTA0NjRlIDEwMDY0NA0KPiA+ID4gLS0tIGEvbW0vcGVyY3B1LXN0 YXRzLmMNCj4gPiA+ICsrKyBiL21tL3BlcmNwdS1zdGF0cy5jDQo+ID4gPiBAQCAtNTMsNiArNTMs NyBAQCBzdGF0aWMgaW50IGZpbmRfbWF4X25yX2FsbG9jKHZvaWQpICBzdGF0aWMgdm9pZA0KPiA+ ID4gY2h1bmtfbWFwX3N0YXRzKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHBjcHVfY2h1bmsg KmNodW5rLA0KPiA+ID4gIAkJCSAgICBpbnQgKmJ1ZmZlcikNCj4gPiA+ICB7DQo+ID4gPiArCXN0 cnVjdCBwY3B1X2Jsb2NrX21kICpjaHVua19tZCA9ICZjaHVuay0+Y2h1bmtfbWQ7DQo+ID4gPiAg CWludCBpLCBsYXN0X2FsbG9jLCBhc19sZW4sIHN0YXJ0LCBlbmQ7DQo+ID4gPiAgCWludCAqYWxs b2Nfc2l6ZXMsICpwOw0KPiA+ID4gIAkvKiBzdGF0aXN0aWNzICovDQo+ID4gPiBAQCAtMTIxLDkg KzEyMiw5IEBAIHN0YXRpYyB2b2lkIGNodW5rX21hcF9zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s DQo+ID4gPiBzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmssDQo+ID4gPiAgCVAoIm5yX2FsbG9jIiwg Y2h1bmstPm5yX2FsbG9jKTsNCj4gPiA+ICAJUCgibWF4X2FsbG9jX3NpemUiLCBjaHVuay0+bWF4 X2FsbG9jX3NpemUpOw0KPiA+ID4gIAlQKCJlbXB0eV9wb3BfcGFnZXMiLCBjaHVuay0+bnJfZW1w dHlfcG9wX3BhZ2VzKTsNCj4gPiA+IC0JUCgiZmlyc3RfYml0IiwgY2h1bmstPmZpcnN0X2JpdCk7 DQo+ID4gPiArCVAoImZpcnN0X2JpdCIsIGNodW5rX21kLT5maXJzdF9mcmVlKTsNCj4gPiA+ICAJ UCgiZnJlZV9ieXRlcyIsIGNodW5rLT5mcmVlX2J5dGVzKTsNCj4gPiA+IC0JUCgiY29udGlnX2J5 dGVzIiwgY2h1bmstPmNvbnRpZ19iaXRzICogUENQVV9NSU5fQUxMT0NfU0laRSk7DQo+ID4gPiAr CVAoImNvbnRpZ19ieXRlcyIsIGNodW5rX21kLT5jb250aWdfaGludCAqDQo+IFBDUFVfTUlOX0FM TE9DX1NJWkUpOw0KPiA+ID4gIAlQKCJzdW1fZnJhZyIsIHN1bV9mcmFnKTsNCj4gPiA+ICAJUCgi bWF4X2ZyYWciLCBtYXhfZnJhZyk7DQo+ID4gPiAgCVAoImN1cl9taW5fYWxsb2MiLCBjdXJfbWlu X2FsbG9jKTsgZGlmZiAtLWdpdCBhL21tL3BlcmNwdS5jDQo+ID4gPiBiL21tL3BlcmNwdS5jIGlu ZGV4IDdjZGYxNGMyNDJkZS4uMTk3NDc5ZjJjNDg5IDEwMDY0NA0KPiA+ID4gLS0tIGEvbW0vcGVy Y3B1LmMNCj4gPiA+ICsrKyBiL21tL3BlcmNwdS5jDQo+ID4gPiBAQCAtMjMzLDEwICsyMzMsMTMg QEAgc3RhdGljIGludCBwY3B1X3NpemVfdG9fc2xvdChpbnQgc2l6ZSkNCj4gPiA+DQo+ID4gPiAg c3RhdGljIGludCBwY3B1X2NodW5rX3Nsb3QoY29uc3Qgc3RydWN0IHBjcHVfY2h1bmsgKmNodW5r KSAgew0KPiA+ID4gLQlpZiAoY2h1bmstPmZyZWVfYnl0ZXMgPCBQQ1BVX01JTl9BTExPQ19TSVpF IHx8IGNodW5rLT5jb250aWdfYml0cw0KPiA+ID4gPT0gMCkNCj4gPiA+ICsJY29uc3Qgc3RydWN0 IHBjcHVfYmxvY2tfbWQgKmNodW5rX21kID0gJmNodW5rLT5jaHVua19tZDsNCj4gPiA+ICsNCj4g PiA+ICsJaWYgKGNodW5rLT5mcmVlX2J5dGVzIDwgUENQVV9NSU5fQUxMT0NfU0laRSB8fA0KPiA+ ID4gKwkgICAgY2h1bmtfbWQtPmNvbnRpZ19oaW50ID09IDApDQo+ID4gPiAgCQlyZXR1cm4gMDsN Cj4gPiA+DQo+ID4gPiAtCXJldHVybiBwY3B1X3NpemVfdG9fc2xvdChjaHVuay0+Y29udGlnX2Jp dHMgKiBQQ1BVX01JTl9BTExPQ19TSVpFKTsNCj4gPiA+ICsJcmV0dXJuIHBjcHVfc2l6ZV90b19z bG90KGNodW5rX21kLT5jb250aWdfaGludCAqDQo+ID4gPiBQQ1BVX01JTl9BTExPQ19TSVpFKTsN Cj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gIC8qIHNldCB0aGUgcG9pbnRlciB0byBhIGNodW5rIGlu IGEgcGFnZSBzdHJ1Y3QgKi8gQEAgLTU5Miw1NCArNTk1LDYNCj4gPiA+IEBAIHN0YXRpYyBpbmxp bmUgYm9vbCBwY3B1X3JlZ2lvbl9vdmVybGFwKGludCBhLCBpbnQgYiwgaW50IHgsIGludCB5KQ0K PiA+ID4gIAlyZXR1cm4gZmFsc2U7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+IC0vKioNCj4gPiA+ IC0gKiBwY3B1X2NodW5rX3VwZGF0ZSAtIHVwZGF0ZXMgdGhlIGNodW5rIG1ldGFkYXRhIGdpdmVu IGEgZnJlZSBhcmVhDQo+ID4gPiAtICogQGNodW5rOiBjaHVuayBvZiBpbnRlcmVzdA0KPiA+ID4g LSAqIEBiaXRfb2ZmOiBjaHVuayBvZmZzZXQNCj4gPiA+IC0gKiBAYml0czogc2l6ZSBvZiBmcmVl IGFyZWENCj4gPiA+IC0gKg0KPiA+ID4gLSAqIFRoaXMgdXBkYXRlcyB0aGUgY2h1bmsncyBjb250 aWcgaGludCBhbmQgc3RhcnRpbmcgb2Zmc2V0IGdpdmVuIGEgZnJlZQ0KPiBhcmVhLg0KPiA+ID4g LSAqIENob29zZSB0aGUgYmVzdCBzdGFydGluZyBvZmZzZXQgaWYgdGhlIGNvbnRpZyBoaW50IGlz IGVxdWFsLg0KPiA+ID4gLSAqLw0KPiA+ID4gLXN0YXRpYyB2b2lkIHBjcHVfY2h1bmtfdXBkYXRl KHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaywgaW50DQo+ID4gPiBiaXRfb2ZmLCBpbnQgYml0cykg LXsNCj4gPiA+IC0JaWYgKGJpdHMgPiBjaHVuay0+Y29udGlnX2JpdHMpIHsNCj4gPiA+IC0JCWNo dW5rLT5jb250aWdfYml0c19zdGFydCA9IGJpdF9vZmY7DQo+ID4gPiAtCQljaHVuay0+Y29udGln X2JpdHMgPSBiaXRzOw0KPiA+ID4gLQl9IGVsc2UgaWYgKGJpdHMgPT0gY2h1bmstPmNvbnRpZ19i aXRzICYmIGNodW5rLT5jb250aWdfYml0c19zdGFydCAmJg0KPiA+ID4gLQkJICAgKCFiaXRfb2Zm IHx8DQo+ID4gPiAtCQkgICAgX19mZnMoYml0X29mZikgPiBfX2ZmcyhjaHVuay0+Y29udGlnX2Jp dHNfc3RhcnQpKSkgew0KPiA+ID4gLQkJLyogdXNlIHRoZSBzdGFydCB3aXRoIHRoZSBiZXN0IGFs aWdubWVudCAqLw0KPiA+ID4gLQkJY2h1bmstPmNvbnRpZ19iaXRzX3N0YXJ0ID0gYml0X29mZjsN Cj4gPiA+IC0JfQ0KPiA+ID4gLX0NCj4gPiA+IC0NCj4gPiA+IC0vKioNCj4gPiA+IC0gKiBwY3B1 X2NodW5rX3JlZnJlc2hfaGludCAtIHVwZGF0ZXMgbWV0YWRhdGEgYWJvdXQgYSBjaHVuaw0KPiA+ ID4gLSAqIEBjaHVuazogY2h1bmsgb2YgaW50ZXJlc3QNCj4gPiA+IC0gKg0KPiA+ID4gLSAqIEl0 ZXJhdGVzIG92ZXIgdGhlIG1ldGFkYXRhIGJsb2NrcyB0byBmaW5kIHRoZSBsYXJnZXN0IGNvbnRp ZyBhcmVhLg0KPiA+ID4gLSAqIEl0IGFsc28gY291bnRzIHRoZSBwb3B1bGF0ZWQgcGFnZXMgYW5k IHVzZXMgdGhlIGRlbHRhIHRvIHVwZGF0ZQ0KPiA+ID4gdGhlDQo+ID4gPiAtICogZ2xvYmFsIGNv dW50Lg0KPiA+ID4gLSAqDQo+ID4gPiAtICogVXBkYXRlczoNCj4gPiA+IC0gKiAgICAgIGNodW5r LT5jb250aWdfYml0cw0KPiA+ID4gLSAqICAgICAgY2h1bmstPmNvbnRpZ19iaXRzX3N0YXJ0DQo+ ID4gPiAtICovDQo+ID4gPiAtc3RhdGljIHZvaWQgcGNwdV9jaHVua19yZWZyZXNoX2hpbnQoc3Ry dWN0IHBjcHVfY2h1bmsgKmNodW5rKSAtew0KPiA+ID4gLQlpbnQgYml0X29mZiwgYml0czsNCj4g PiA+IC0NCj4gPiA+IC0JLyogY2xlYXIgbWV0YWRhdGEgKi8NCj4gPiA+IC0JY2h1bmstPmNvbnRp Z19iaXRzID0gMDsNCj4gPiA+IC0NCj4gPiA+IC0JYml0X29mZiA9IGNodW5rLT5maXJzdF9iaXQ7 DQo+ID4gPiAtCWJpdHMgPSAwOw0KPiA+ID4gLQlwY3B1X2Zvcl9lYWNoX21kX2ZyZWVfcmVnaW9u KGNodW5rLCBiaXRfb2ZmLCBiaXRzKSB7DQo+ID4gPiAtCQlwY3B1X2NodW5rX3VwZGF0ZShjaHVu aywgYml0X29mZiwgYml0cyk7DQo+ID4gPiAtCX0NCj4gPiA+IC19DQo+ID4gPiAtDQo+ID4gPiAg LyoqDQo+ID4gPiAgICogcGNwdV9ibG9ja191cGRhdGUgLSB1cGRhdGVzIGEgYmxvY2sgZ2l2ZW4g YSBmcmVlIGFyZWENCj4gPiA+ICAgKiBAYmxvY2s6IGJsb2NrIG9mIGludGVyZXN0DQo+ID4gPiBA QCAtNzUzLDYgKzcwOCwyOSBAQCBzdGF0aWMgdm9pZCBwY3B1X2Jsb2NrX3VwZGF0ZV9zY2FuKHN0 cnVjdA0KPiA+ID4gcGNwdV9jaHVuayAqY2h1bmssIGludCBiaXRfb2ZmLA0KPiA+ID4gIAlwY3B1 X2Jsb2NrX3VwZGF0ZShibG9jaywgc19vZmYsIGVfb2ZmKTsgIH0NCj4gPiA+DQo+ID4gPiArLyoq DQo+ID4gPiArICogcGNwdV9jaHVua19yZWZyZXNoX2hpbnQgLSB1cGRhdGVzIG1ldGFkYXRhIGFi b3V0IGEgY2h1bmsNCj4gPiA+ICsgKiBAY2h1bms6IGNodW5rIG9mIGludGVyZXN0DQo+ID4gPiAr ICoNCj4gPiA+ICsgKiBJdGVyYXRlcyBvdmVyIHRoZSBtZXRhZGF0YSBibG9ja3MgdG8gZmluZCB0 aGUgbGFyZ2VzdCBjb250aWcgYXJlYS4NCj4gPiA+ICsgKiBJdCBhbHNvIGNvdW50cyB0aGUgcG9w dWxhdGVkIHBhZ2VzIGFuZCB1c2VzIHRoZSBkZWx0YSB0byB1cGRhdGUNCj4gPiA+ICt0aGUNCj4g PiA+ICsgKiBnbG9iYWwgY291bnQuDQo+ID4gPiArICovDQo+ID4gPiArc3RhdGljIHZvaWQgcGNw dV9jaHVua19yZWZyZXNoX2hpbnQoc3RydWN0IHBjcHVfY2h1bmsgKmNodW5rKSB7DQo+ID4gPiAr CXN0cnVjdCBwY3B1X2Jsb2NrX21kICpjaHVua19tZCA9ICZjaHVuay0+Y2h1bmtfbWQ7DQo+ID4g PiArCWludCBiaXRfb2ZmLCBiaXRzOw0KPiA+ID4gKw0KPiA+ID4gKwkvKiBjbGVhciBtZXRhZGF0 YSAqLw0KPiA+ID4gKwljaHVua19tZC0+Y29udGlnX2hpbnQgPSAwOw0KPiA+ID4gKw0KPiA+ID4g KwliaXRfb2ZmID0gY2h1bmtfbWQtPmZpcnN0X2ZyZWU7DQo+ID4gPiArCWJpdHMgPSAwOw0KPiA+ ID4gKwlwY3B1X2Zvcl9lYWNoX21kX2ZyZWVfcmVnaW9uKGNodW5rLCBiaXRfb2ZmLCBiaXRzKSB7 DQo+ID4gPiArCQlwY3B1X2Jsb2NrX3VwZGF0ZShjaHVua19tZCwgYml0X29mZiwgYml0X29mZiAr IGJpdHMpOw0KPiA+ID4gKwl9DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gIC8qKg0KPiA+ID4g ICAqIHBjcHVfYmxvY2tfcmVmcmVzaF9oaW50DQo+ID4gPiAgICogQGNodW5rOiBjaHVuayBvZiBp bnRlcmVzdA0KPiA+ID4gQEAgLTgwMCw2ICs3NzgsNyBAQCBzdGF0aWMgdm9pZCBwY3B1X2Jsb2Nr X3JlZnJlc2hfaGludChzdHJ1Y3QNCj4gPiA+IHBjcHVfY2h1bmsgKmNodW5rLCBpbnQgaW5kZXgp ICBzdGF0aWMgdm9pZA0KPiA+ID4gcGNwdV9ibG9ja191cGRhdGVfaGludF9hbGxvYyhzdHJ1Y3Qg cGNwdV9jaHVuayAqY2h1bmssIGludCBiaXRfb2ZmLA0KPiA+ID4gIAkJCQkJIGludCBiaXRzKQ0K PiA+ID4gIHsNCj4gPiA+ICsJc3RydWN0IHBjcHVfYmxvY2tfbWQgKmNodW5rX21kID0gJmNodW5r LT5jaHVua19tZDsNCj4gPiA+ICAJaW50IG5yX2VtcHR5X3BhZ2VzID0gMDsNCj4gPiA+ICAJc3Ry dWN0IHBjcHVfYmxvY2tfbWQgKnNfYmxvY2ssICplX2Jsb2NrLCAqYmxvY2s7DQo+ID4gPiAgCWlu dCBzX2luZGV4LCBlX2luZGV4OwkvKiBibG9jayBpbmRleGVzIG9mIHRoZSBmcmVlZCBhbGxvY2F0 aW9uICovDQo+ID4gPiBAQCAtOTEwLDggKzg4OSw5IEBAIHN0YXRpYyB2b2lkIHBjcHVfYmxvY2tf dXBkYXRlX2hpbnRfYWxsb2Moc3RydWN0DQo+ID4gPiBwY3B1X2NodW5rICpjaHVuaywgaW50IGJp dF9vZmYsDQo+ID4gPiAgCSAqIGNvbnRpZyBoaW50IGlzIGJyb2tlbi4gIE90aGVyd2lzZSwgaXQg bWVhbnMgYSBzbWFsbGVyIHNwYWNlDQo+ID4gPiAgCSAqIHdhcyB1c2VkIGFuZCB0aGVyZWZvcmUg dGhlIGNodW5rIGNvbnRpZyBoaW50IGlzIHN0aWxsIGNvcnJlY3QuDQo+ID4gPiAgCSAqLw0KPiA+ ID4gLQlpZiAocGNwdV9yZWdpb25fb3ZlcmxhcChjaHVuay0+Y29udGlnX2JpdHNfc3RhcnQsDQo+ ID4gPiAtCQkJCWNodW5rLT5jb250aWdfYml0c19zdGFydCArIGNodW5rLT5jb250aWdfYml0cywN Cj4gPiA+ICsJaWYgKHBjcHVfcmVnaW9uX292ZXJsYXAoY2h1bmtfbWQtPmNvbnRpZ19oaW50X3N0 YXJ0LA0KPiA+ID4gKwkJCQljaHVua19tZC0+Y29udGlnX2hpbnRfc3RhcnQgKw0KPiA+ID4gKwkJ CQljaHVua19tZC0+Y29udGlnX2hpbnQsDQo+ID4gPiAgCQkJCWJpdF9vZmYsDQo+ID4gPiAgCQkJ CWJpdF9vZmYgKyBiaXRzKSkNCj4gPiA+ICAJCXBjcHVfY2h1bmtfcmVmcmVzaF9oaW50KGNodW5r KTsNCj4gPiA+IEBAIC05MzAsOSArOTEwLDEwIEBAIHN0YXRpYyB2b2lkIHBjcHVfYmxvY2tfdXBk YXRlX2hpbnRfYWxsb2Moc3RydWN0DQo+ID4gPiBwY3B1X2NodW5rICpjaHVuaywgaW50IGJpdF9v ZmYsDQo+ID4gPiAgICoNCj4gPiA+ICAgKiBBIGNodW5rIHVwZGF0ZSBpcyB0cmlnZ2VyZWQgaWYg YSBwYWdlIGJlY29tZXMgZnJlZSwgYSBibG9jayBiZWNvbWVzDQo+IGZyZWUsDQo+ID4gPiAgICog b3IgdGhlIGZyZWUgc3BhbnMgYWNyb3NzIGJsb2Nrcy4gIFRoaXMgdHJhZGVvZmYgaXMgdG8gbWlu aW1pemUNCj4gPiA+IGl0ZXJhdGluZw0KPiA+ID4gLSAqIG92ZXIgdGhlIGJsb2NrIG1ldGFkYXRh IHRvIHVwZGF0ZSBjaHVuay0+Y29udGlnX2JpdHMuDQo+ID4gPiBjaHVuay0+Y29udGlnX2JpdHMN Cj4gPiA+IC0gKiBtYXkgYmUgb2ZmIGJ5IHVwIHRvIGEgcGFnZSwgYnV0IGl0IHdpbGwgbmV2ZXIg YmUgbW9yZSB0aGFuIHRoZQ0KPiA+ID4gYXZhaWxhYmxlDQo+ID4gPiAtICogc3BhY2UuICBJZiB0 aGUgY29udGlnIGhpbnQgaXMgY29udGFpbmVkIGluIG9uZSBibG9jaywgaXQgd2lsbCBiZSBhY2N1 cmF0ZS4NCj4gPiA+ICsgKiBvdmVyIHRoZSBibG9jayBtZXRhZGF0YSB0byB1cGRhdGUgY2h1bmtf bWQtPmNvbnRpZ19oaW50Lg0KPiA+ID4gKyAqIGNodW5rX21kLT5jb250aWdfaGludCBtYXkgYmUg b2ZmIGJ5IHVwIHRvIGEgcGFnZSwgYnV0IGl0IHdpbGwNCj4gPiA+ICsgbmV2ZXIgYmUgbW9yZQ0K PiA+ID4gKyAqIHRoYW4gdGhlIGF2YWlsYWJsZSBzcGFjZS4gIElmIHRoZSBjb250aWcgaGludCBp cyBjb250YWluZWQgaW4NCj4gPiA+ICsgb25lIGJsb2NrLCBpdA0KPiA+ID4gKyAqIHdpbGwgYmUg YWNjdXJhdGUuDQo+ID4gPiAgICovDQo+ID4gPiAgc3RhdGljIHZvaWQgcGNwdV9ibG9ja191cGRh dGVfaGludF9mcmVlKHN0cnVjdCBwY3B1X2NodW5rICpjaHVuaywNCj4gPiA+IGludCBiaXRfb2Zm LA0KPiA+ID4gIAkJCQkJaW50IGJpdHMpDQo+ID4gPiBAQCAtMTAyNiw4ICsxMDA3LDkgQEAgc3Rh dGljIHZvaWQgcGNwdV9ibG9ja191cGRhdGVfaGludF9mcmVlKHN0cnVjdA0KPiA+ID4gcGNwdV9j aHVuayAqY2h1bmssIGludCBiaXRfb2ZmLA0KPiA+ID4gIAlpZiAoKChlbmQgLSBzdGFydCkgPj0g UENQVV9CSVRNQVBfQkxPQ0tfQklUUykgfHwgc19pbmRleCAhPQ0KPiBlX2luZGV4KQ0KPiA+ID4g IAkJcGNwdV9jaHVua19yZWZyZXNoX2hpbnQoY2h1bmspOw0KPiA+ID4gIAllbHNlDQo+ID4gPiAt CQlwY3B1X2NodW5rX3VwZGF0ZShjaHVuaywgcGNwdV9ibG9ja19vZmZfdG9fb2ZmKHNfaW5kZXgs IHN0YXJ0KSwNCj4gPiA+IC0JCQkJICBlbmQgLSBzdGFydCk7DQo+ID4gPiArCQlwY3B1X2Jsb2Nr X3VwZGF0ZSgmY2h1bmstPmNodW5rX21kLA0KPiA+ID4gKwkJCQkgIHBjcHVfYmxvY2tfb2ZmX3Rv X29mZihzX2luZGV4LCBzdGFydCksDQo+ID4gPiArCQkJCSAgZW5kKTsNCj4gPiA+ICB9DQo+ID4g Pg0KPiA+ID4gIC8qKg0KPiA+ID4gQEAgLTEwODIsNiArMTA2NCw3IEBAIHN0YXRpYyBib29sIHBj cHVfaXNfcG9wdWxhdGVkKHN0cnVjdA0KPiA+ID4gcGNwdV9jaHVuayAqY2h1bmssIGludCBiaXRf b2ZmLCBpbnQgYml0cywgIHN0YXRpYyBpbnQNCj4gPiA+IHBjcHVfZmluZF9ibG9ja19maXQoc3Ry dWN0IHBjcHVfY2h1bmsgKmNodW5rLCBpbnQgYWxsb2NfYml0cywNCj4gPiA+ICAJCQkgICAgICAg c2l6ZV90IGFsaWduLCBib29sIHBvcF9vbmx5KSAgew0KPiA+ID4gKwlzdHJ1Y3QgcGNwdV9ibG9j a19tZCAqY2h1bmtfbWQgPSAmY2h1bmstPmNodW5rX21kOw0KPiA+ID4gIAlpbnQgYml0X29mZiwg Yml0cywgbmV4dF9vZmY7DQo+ID4gPg0KPiA+ID4gIAkvKg0KPiA+ID4gQEAgLTEwOTAsMTIgKzEw NzMsMTIgQEAgc3RhdGljIGludCBwY3B1X2ZpbmRfYmxvY2tfZml0KHN0cnVjdA0KPiA+ID4gcGNw dV9jaHVuayAqY2h1bmssIGludCBhbGxvY19iaXRzLA0KPiA+ID4gIAkgKiBjYW5ub3QgZml0IGlu IHRoZSBnbG9iYWwgaGludCwgdGhlcmUgaXMgbWVtb3J5IHByZXNzdXJlIGFuZA0KPiBjcmVhdGlu Zw0KPiA+ID4gIAkgKiBhIG5ldyBjaHVuayB3b3VsZCBoYXBwZW4gc29vbi4NCj4gPiA+ICAJICov DQo+ID4gPiAtCWJpdF9vZmYgPSBBTElHTihjaHVuay0+Y29udGlnX2JpdHNfc3RhcnQsIGFsaWdu KSAtDQo+ID4gPiAtCQkgIGNodW5rLT5jb250aWdfYml0c19zdGFydDsNCj4gPiA+IC0JaWYgKGJp dF9vZmYgKyBhbGxvY19iaXRzID4gY2h1bmstPmNvbnRpZ19iaXRzKQ0KPiA+ID4gKwliaXRfb2Zm ID0gQUxJR04oY2h1bmtfbWQtPmNvbnRpZ19oaW50X3N0YXJ0LCBhbGlnbikgLQ0KPiA+ID4gKwkJ ICBjaHVua19tZC0+Y29udGlnX2hpbnRfc3RhcnQ7DQo+ID4gPiArCWlmIChiaXRfb2ZmICsgYWxs b2NfYml0cyA+IGNodW5rX21kLT5jb250aWdfaGludCkNCj4gPiA+ICAJCXJldHVybiAtMTsNCj4g PiA+DQo+ID4gPiAtCWJpdF9vZmYgPSBjaHVuay0+Zmlyc3RfYml0Ow0KPiA+ID4gKwliaXRfb2Zm ID0gY2h1bmtfbWQtPmZpcnN0X2ZyZWU7DQo+ID4gPiAgCWJpdHMgPSAwOw0KPiA+ID4gIAlwY3B1 X2Zvcl9lYWNoX2ZpdF9yZWdpb24oY2h1bmssIGFsbG9jX2JpdHMsIGFsaWduLCBiaXRfb2ZmLCBi aXRzKSB7DQo+ID4gPiAgCQlpZiAoIXBvcF9vbmx5IHx8IHBjcHVfaXNfcG9wdWxhdGVkKGNodW5r LCBiaXRfb2ZmLCBiaXRzLCBAQA0KPiA+ID4gLTExOTAsNg0KPiA+ID4gKzExNzMsNyBAQCBzdGF0 aWMgdW5zaWduZWQgbG9uZyBwY3B1X2ZpbmRfemVyb19hcmVhKHVuc2lnbmVkIGxvbmcNCj4gPiA+ ICsqbWFwLA0KPiA+ID4gc3RhdGljIGludCBwY3B1X2FsbG9jX2FyZWEoc3RydWN0IHBjcHVfY2h1 bmsgKmNodW5rLCBpbnQgYWxsb2NfYml0cywNCj4gPiA+ICAJCQkgICBzaXplX3QgYWxpZ24sIGlu dCBzdGFydCkNCj4gPiA+ICB7DQo+ID4gPiArCXN0cnVjdCBwY3B1X2Jsb2NrX21kICpjaHVua19t ZCA9ICZjaHVuay0+Y2h1bmtfbWQ7DQo+ID4gPiAgCXNpemVfdCBhbGlnbl9tYXNrID0gKGFsaWdu KSA/IChhbGlnbiAtIDEpIDogMDsNCj4gPiA+ICAJdW5zaWduZWQgbG9uZyBhcmVhX29mZiA9IDAs IGFyZWFfYml0cyA9IDA7DQo+ID4gPiAgCWludCBiaXRfb2ZmLCBlbmQsIG9zbG90Ow0KPiA+ID4g QEAgLTEyMjIsOCArMTIwNiw4IEBAIHN0YXRpYyBpbnQgcGNwdV9hbGxvY19hcmVhKHN0cnVjdCBw Y3B1X2NodW5rDQo+ID4gPiAqY2h1bmssIGludCBhbGxvY19iaXRzLA0KPiA+ID4gIAljaHVuay0+ ZnJlZV9ieXRlcyAtPSBhbGxvY19iaXRzICogUENQVV9NSU5fQUxMT0NfU0laRTsNCj4gPiA+DQo+ ID4gPiAgCS8qIHVwZGF0ZSBmaXJzdCBmcmVlIGJpdCAqLw0KPiA+ID4gLQlpZiAoYml0X29mZiA9 PSBjaHVuay0+Zmlyc3RfYml0KQ0KPiA+ID4gLQkJY2h1bmstPmZpcnN0X2JpdCA9IGZpbmRfbmV4 dF96ZXJvX2JpdCgNCj4gPiA+ICsJaWYgKGJpdF9vZmYgPT0gY2h1bmtfbWQtPmZpcnN0X2ZyZWUp DQo+ID4gPiArCQljaHVua19tZC0+Zmlyc3RfZnJlZSA9IGZpbmRfbmV4dF96ZXJvX2JpdCgNCj4g PiA+ICAJCQkJCWNodW5rLT5hbGxvY19tYXAsDQo+ID4gPiAgCQkJCQlwY3B1X2NodW5rX21hcF9i aXRzKGNodW5rKSwNCj4gPiA+ICAJCQkJCWJpdF9vZmYgKyBhbGxvY19iaXRzKTsNCj4gPiA+IEBA IC0xMjQ1LDYgKzEyMjksNyBAQCBzdGF0aWMgaW50IHBjcHVfYWxsb2NfYXJlYShzdHJ1Y3QgcGNw dV9jaHVuaw0KPiA+ID4gKmNodW5rLCBpbnQgYWxsb2NfYml0cywNCj4gPiA+ICAgKi8NCj4gPiA+ ICBzdGF0aWMgdm9pZCBwY3B1X2ZyZWVfYXJlYShzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmssIGlu dCBvZmYpICB7DQo+ID4gPiArCXN0cnVjdCBwY3B1X2Jsb2NrX21kICpjaHVua19tZCA9ICZjaHVu ay0+Y2h1bmtfbWQ7DQo+ID4gPiAgCWludCBiaXRfb2ZmLCBiaXRzLCBlbmQsIG9zbG90Ow0KPiA+ ID4NCj4gPiA+ICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmcGNwdV9sb2NrKTsNCj4gPiA+IEBAIC0x MjY0LDcgKzEyNDksNyBAQCBzdGF0aWMgdm9pZCBwY3B1X2ZyZWVfYXJlYShzdHJ1Y3QgcGNwdV9j aHVuaw0KPiA+ID4gKmNodW5rLCBpbnQgb2ZmKQ0KPiA+ID4gIAljaHVuay0+ZnJlZV9ieXRlcyAr PSBiaXRzICogUENQVV9NSU5fQUxMT0NfU0laRTsNCj4gPiA+DQo+ID4gPiAgCS8qIHVwZGF0ZSBm aXJzdCBmcmVlIGJpdCAqLw0KPiA+ID4gLQljaHVuay0+Zmlyc3RfYml0ID0gbWluKGNodW5rLT5m aXJzdF9iaXQsIGJpdF9vZmYpOw0KPiA+ID4gKwljaHVua19tZC0+Zmlyc3RfZnJlZSA9IG1pbihj aHVua19tZC0+Zmlyc3RfZnJlZSwgYml0X29mZik7DQo+ID4gPg0KPiA+ID4gIAlwY3B1X2Jsb2Nr X3VwZGF0ZV9oaW50X2ZyZWUoY2h1bmssIGJpdF9vZmYsIGJpdHMpOw0KPiA+ID4NCj4gPiA+IEBA IC0xMjg1LDYgKzEyNzAsOSBAQCBzdGF0aWMgdm9pZCBwY3B1X2luaXRfbWRfYmxvY2tzKHN0cnVj dA0KPiA+ID4gcGNwdV9jaHVuaw0KPiA+ID4gKmNodW5rKSAgew0KPiA+ID4gIAlzdHJ1Y3QgcGNw dV9ibG9ja19tZCAqbWRfYmxvY2s7DQo+ID4gPg0KPiA+ID4gKwkvKiBpbml0IHRoZSBjaHVuaydz IGJsb2NrICovDQo+ID4gPiArCXBjcHVfaW5pdF9tZF9ibG9jaygmY2h1bmstPmNodW5rX21kLA0K PiA+ID4gcGNwdV9jaHVua19tYXBfYml0cyhjaHVuaykpOw0KPiA+ID4gKw0KPiA+ID4gIAlmb3Ig KG1kX2Jsb2NrID0gY2h1bmstPm1kX2Jsb2NrczsNCj4gPiA+ICAJICAgICBtZF9ibG9jayAhPSBj aHVuay0+bWRfYmxvY2tzICsNCj4gcGNwdV9jaHVua19ucl9ibG9ja3MoY2h1bmspOw0KPiA+ID4g IAkgICAgIG1kX2Jsb2NrKyspDQo+ID4gPiBAQCAtMTM1Miw3ICsxMzQwLDYgQEAgc3RhdGljIHN0 cnVjdCBwY3B1X2NodW5rICogX19pbml0DQo+ID4gPiBwY3B1X2FsbG9jX2ZpcnN0X2NodW5rKHVu c2lnbmVkIGxvbmcgdG1wX2FkZHIsDQo+ID4gPiAgCWNodW5rLT5ucl9wb3B1bGF0ZWQgPSBjaHVu ay0+bnJfcGFnZXM7DQo+ID4gPiAgCWNodW5rLT5ucl9lbXB0eV9wb3BfcGFnZXMgPSBjaHVuay0+ bnJfcGFnZXM7DQo+ID4gPg0KPiA+ID4gLQljaHVuay0+Y29udGlnX2JpdHMgPSBtYXBfc2l6ZSAv IFBDUFVfTUlOX0FMTE9DX1NJWkU7DQo+ID4gPiAgCWNodW5rLT5mcmVlX2J5dGVzID0gbWFwX3Np emU7DQo+ID4gPg0KPiA+ID4gIAlpZiAoY2h1bmstPnN0YXJ0X29mZnNldCkgew0KPiA+ID4gQEAg LTEzNjIsNyArMTM0OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGNwdV9jaHVuayAqIF9faW5pdA0KPiA+ ID4gcGNwdV9hbGxvY19maXJzdF9jaHVuayh1bnNpZ25lZCBsb25nIHRtcF9hZGRyLA0KPiA+ID4g IAkJc2V0X2JpdCgwLCBjaHVuay0+Ym91bmRfbWFwKTsNCj4gPiA+ICAJCXNldF9iaXQob2Zmc2V0 X2JpdHMsIGNodW5rLT5ib3VuZF9tYXApOw0KPiA+ID4NCj4gPiA+IC0JCWNodW5rLT5maXJzdF9i aXQgPSBvZmZzZXRfYml0czsNCj4gPiA+ICsJCWNodW5rLT5jaHVua19tZC5maXJzdF9mcmVlID0g b2Zmc2V0X2JpdHM7DQo+ID4gPg0KPiA+ID4gIAkJcGNwdV9ibG9ja191cGRhdGVfaGludF9hbGxv YyhjaHVuaywgMCwgb2Zmc2V0X2JpdHMpOw0KPiA+ID4gIAl9DQo+ID4gPiBAQCAtMTQxNSw3ICsx NDAyLDYgQEAgc3RhdGljIHN0cnVjdCBwY3B1X2NodW5rDQo+ID4gPiAqcGNwdV9hbGxvY19jaHVu ayhnZnBfdA0KPiA+ID4gZ2ZwKQ0KPiA+ID4gIAlwY3B1X2luaXRfbWRfYmxvY2tzKGNodW5rKTsN Cj4gPiA+DQo+ID4gPiAgCS8qIGluaXQgbWV0YWRhdGEgKi8NCj4gPiA+IC0JY2h1bmstPmNvbnRp Z19iaXRzID0gcmVnaW9uX2JpdHM7DQo+ID4gPiAgCWNodW5rLT5mcmVlX2J5dGVzID0gY2h1bmst Pm5yX3BhZ2VzICogUEFHRV9TSVpFOw0KPiA+ID4NCj4gPiA+ICAJcmV0dXJuIGNodW5rOw0KPiA+ DQo+ID4gUmV2aWV3ZWQtYnk6IFBlbmcgRmFuIDxwZW5nLmZhbkBueHAuY29tPg0KPiA+DQo+ID4g Tml0cGljaywgaG93IGFib3V0IG5hbWUgYSBmdW5jdGlvbiBfX3BjcHVfbWRfdXBkYXRlLCBhbmQg bGV0DQo+ID4gcGNwdV9jaHVua191cGRhdGUgYW5kIHBjcHVfYmxvY2tfdXBkYXRlIHRvIGNhbGwg X19wY3B1X21kX3VwZGF0ZS4gSWYNCj4gPiB5b3UgcHJlZmVyLCBJIGNvdWxkIHN1Ym1pdCBhIHBh dGNoLg0KPiA+DQo+IA0KPiBJIGRvbid0IGhhdmUgYSBwcmVmZXJlbmNlLiBCdXQgSSBkbyBub3Qg cmVhbGx5IHdhbnQgdG8gaGF2ZSAyIGZ1bmN0aW9ucyB0aGF0IGp1c3QNCj4gd3JhcCB0aGUgc2Ft ZSBmdW5jdGlvbi4gSSB0aGluayBvdmVyYWxsIGl0J2xsIG1ha2Ugc2Vuc2UgdG8gcmVuYW1lIGl0 LCBidXQgSQ0KPiBoYXZlbid0IHRob3VnaHQgYWJvdXQgd2hhdCB0byByZW5hbWUgaXQgdG8gYXMg aXQnbGwgcHJvYmFibHkgYmUgaW5mbHVlbmNlIGJ5DQo+IHRoZSBwb3NzaWJsZSBkaXJlY3Rpb24g dGhhdCBwZXJjcHUgZW5kcyB1cCBnb2luZy4NCg0Kb2ssIHRoZW4gSSBqdXN0IGxlYXZlIGl0IHVw IHRvIHlvdS4NCg0KVGhhbmtzLA0KUGVuZy4NCg0KPiANCj4gVGhhbmtzLA0KPiBEZW5uaXMNCg==