Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp506161pxk; Wed, 16 Sep 2020 09:24:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwSdO2PprkDOaU+Ls2nIh/QVwZFIw052gb6Hkz41NS51tXuPyu9XcEbjyeEpzKwRzh7ssY5 X-Received: by 2002:a17:906:c0d1:: with SMTP id bn17mr25400945ejb.311.1600273458704; Wed, 16 Sep 2020 09:24:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600273458; cv=none; d=google.com; s=arc-20160816; b=uvXLsNEw7PVhKOOOT3BihCq3GkpWmOxM1cTrm3CJYAJCaoXC3Tn7qQeEWoIYbfRurr Stugr9InMRKo4nV0hkZFtJ0rGJT6NKfaz/TT8zoBJ/aIRNjkelGPnRAlKpdi6fpj4WsJ w/66S6GeNVT03KrHVz3hgOK+z/Eyt1QxD1uPL6OzA9Ctr0JTCC8e5GeyyDF3OfxrStRV W6Gx2LZePlonuLGKGysrQgFtz297ZCULhUCv4wgTd5VOtaUEgWzW9k28XHtUMotuXH/J Tr0TGsCmvoJnl/Tlw2pAm1mOPG/WYdWW5eFky+ijyf5vRoTt/O+K3T9hkoCW3X+ydAxO +SYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :dkim-signature; bh=GDMjgBdQ+nW6DZ85orJ6vHwVjwV5AIjLkautMBIp2u8=; b=w9SQimARP6sdbTTJlTL8wf+k7JnzCmJ3l6tF7ZI5d0S1E8s5+S3Rho7WJZJlk1Z/Qn 7agZ1a4I2o+rWJ7AZgEDoaiDVTrt3tWGAmJCIH0pgoQf/5B2JBDHB5TO5cfdhvW2+1Ve n5WMhZUq6mXyMZ+6kJj760DF3/hlKWKYRHqImxuCjqMlSatjlo/42+GYi65C6yIBIb10 HJwp1yln8XcBciM6hoPm58TlVZKrCGVXixlhd5BAg7fZLnlQJy482XYht0XJroVEM91+ ZKo+hvgqIP6ycm4SiCJHU9dfpRWF6VsWYmrHo168LOWxipPDqEJU64JQMYCSwHy4H/al e/UA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=d9+i2rVV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x20si12126992edv.305.2020.09.16.09.23.54; Wed, 16 Sep 2020 09:24:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=d9+i2rVV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726260AbgIPQW7 (ORCPT + 99 others); Wed, 16 Sep 2020 12:22:59 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:58707 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726526AbgIPQUE (ORCPT ); Wed, 16 Sep 2020 12:20:04 -0400 X-UUID: 28fa8cf56ddc426eb522439511243b42-20200916 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=GDMjgBdQ+nW6DZ85orJ6vHwVjwV5AIjLkautMBIp2u8=; b=d9+i2rVVGNDxSM9lHihxOmyHblGeTI52Ca8IlZy2TZvaUIbIChbN8x7akQNDuGYNX61ZGY1vVZsDSQJptKIlNTxX/MUhgPItk3f9jPKXKNgfq/TMQno+L3Q3wSLBMRleK4XUeIVMVKrQzU8qJOLdlunVnarBNVLHFzNrbHOOHeA=; X-UUID: 28fa8cf56ddc426eb522439511243b42-20200916 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1245974814; Wed, 16 Sep 2020 20:51:12 +0800 Received: from MTKCAS32.mediatek.inc (172.27.4.184) by mtkmbs05n1.mediatek.inc (172.21.101.15) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 16 Sep 2020 20:51:08 +0800 Received: from [10.17.3.153] (10.17.3.153) by MTKCAS32.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 16 Sep 2020 20:51:08 +0800 Message-ID: <1600260543.2521.56.camel@mhfsdcap03> Subject: Re: [v2,2/3] PCI: mediatek: Add new generation controller support From: Jianjun Wang To: Rob Herring CC: , Lorenzo Pieralisi , Mauro Carvalho Chehab , PCI , "linux-kernel@vger.kernel.org" , "Bjorn Helgaas" , Sj Huang , Ryder Lee , "moderated list:ARM/Mediatek SoC support" , Philipp Zabel , Matthias Brugger , "David Miller" , linux-arm-kernel Date: Wed, 16 Sep 2020 20:49:03 +0800 In-Reply-To: References: <20200910034536.30860-1-jianjun.wang@mediatek.com> <20200910034536.30860-3-jianjun.wang@mediatek.com> <20200911224434.GA2905744@bogus> <1600081533.2521.49.camel@mhfsdcap03> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gTW9uLCAyMDIwLTA5LTE0IGF0IDA4OjMyIC0wNjAwLCBSb2IgSGVycmluZyB3cm90ZToNCj4g T24gTW9uLCBTZXAgMTQsIDIwMjAgYXQgNTowNyBBTSBKaWFuanVuIFdhbmcgPGppYW5qdW4ud2Fu Z0BtZWRpYXRlay5jb20+IHdyb3RlOg0KPiA+DQo+ID4gT24gRnJpLCAyMDIwLTA5LTExIGF0IDE2 OjQ0IC0wNjAwLCBSb2IgSGVycmluZyB3cm90ZToNCj4gPiA+IE9uIFRodSwgU2VwIDEwLCAyMDIw IGF0IDExOjQ1OjM1QU0gKzA4MDAsIEppYW5qdW4gV2FuZyB3cm90ZToNCj4gPiA+ID4gTWVkaWFU ZWsncyBQQ0llIGhvc3QgY29udHJvbGxlciBoYXMgdGhyZWUgZ2VuZXJhdGlvbiBIV3MsIHRoZSBu ZXcNCj4gPiA+ID4gZ2VuZXJhdGlvbiBIVyBpcyBhbiBpbmRpdmlkdWFsIGJyaWRnZSwgaXQgc3Vw b29ydHMgR2VuMyBzcGVlZCBhbmQNCj4gPiA+ID4gdXAgdG8gMjU2IE1TSSBpbnRlcnJ1cHQgbnVt YmVycyBmb3IgbXVsdGktZnVuY3Rpb24gZGV2aWNlcy4NCj4gPiA+ID4NCj4gPiA+ID4gQWRkIHN1 cHBvcnQgZm9yIG5ldyBHZW4zIGNvbnRyb2xsZXIgd2hpY2ggY2FuIGJlIGZvdW5kIG9uIE1UODE5 Mi4NCj4gPiA+ID4NCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogSmlhbmp1biBXYW5nIDxqaWFuanVu LndhbmdAbWVkaWF0ZWsuY29tPg0KPiA+ID4gPiBBY2tlZC1ieTogUnlkZXIgTGVlIDxyeWRlci5s ZWVAbWVkaWF0ZWsuY29tPg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4gIGRyaXZlcnMvcGNpL2NvbnRy b2xsZXIvS2NvbmZpZyAgICAgICAgICAgICAgfCAgIDE0ICsNCj4gPiA+ID4gIGRyaXZlcnMvcGNp L2NvbnRyb2xsZXIvTWFrZWZpbGUgICAgICAgICAgICAgfCAgICAxICsNCj4gPiA+ID4gIGRyaXZl cnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1tZWRpYXRlay1nZW4zLmMgfCAxMDc2ICsrKysrKysrKysr KysrKysrKysNCj4gPiA+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMTA5MSBpbnNlcnRpb25zKCspDQo+ ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLW1l ZGlhdGVrLWdlbjMuYw0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kv Y29udHJvbGxlci9LY29uZmlnIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnDQo+ID4g PiA+IGluZGV4IGYxOGMzNzI1ZWY4MC4uODNkYWE3NzI1OTViIDEwMDY0NA0KPiA+ID4gPiAtLS0g YS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWcNCj4gPiA+ID4gKysrIGIvZHJpdmVycy9w Y2kvY29udHJvbGxlci9LY29uZmlnDQo+ID4gPiA+IEBAIC0yMzksNiArMjM5LDIwIEBAIGNvbmZp ZyBQQ0lFX01FRElBVEVLDQo+ID4gPiA+ICAgICAgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8g ZW5hYmxlIFBDSWUgY29udHJvbGxlciBzdXBwb3J0IG9uDQo+ID4gPiA+ICAgICAgIE1lZGlhVGVr IFNvQ3MuDQo+ID4gPiA+DQo+ID4gPiA+ICtjb25maWcgUENJRV9NRURJQVRFS19HRU4zDQo+ID4g PiA+ICsgICB0cmlzdGF0ZSAiTWVkaWFUZWsgR0VOMyBQQ0llIGNvbnRyb2xsZXIiDQo+ID4gPiA+ ICsgICBkZXBlbmRzIG9uIEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUDQo+ID4gPiA+ICsg ICBkZXBlbmRzIG9uIE9GDQo+ID4gPiA+ICsgICBkZXBlbmRzIG9uIFBDSV9NU0lfSVJRX0RPTUFJ Tg0KPiA+ID4gPiArICAgaGVscA0KPiA+ID4gPiArICAgICBBZGRzIHN1cHBvcnQgZm9yIFBDSWUg R2VuMyBNQUMgY29udHJvbGxlciBmb3IgTWVkaWFUZWsgU29Dcy4NCj4gPiA+ID4gKyAgICAgVGhp cyBQQ0llIGNvbnRyb2xsZXIgcHJvdmlkZXMgdGhlIGNhcGFibGUgb2YgR2VuMywgR2VuMiBhbmQN Cj4gPiA+ID4gKyAgICAgR2VuMSBzcGVlZCwgYW5kIHN1cHBvcnQgdXAgdG8gMjU2IE1TSSBpbnRl cnJ1cHQgbnVtYmVycyBmb3INCj4gPiA+ID4gKyAgICAgbXVsdGktZnVuY3Rpb24gZGV2aWNlcy4N Cj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJs ZSBHZW4zIFBDSWUgY29udHJvbGxlciBzdXBwb3J0IG9uDQo+ID4gPiA+ICsgICAgIE1lZGlhVGVr IFNvQ3MuDQo+ID4gPiA+ICsNCj4gPiA+ID4gIGNvbmZpZyBQQ0lFX1RBTkdPX1NNUDg3NTkNCj4g PiA+ID4gICAgIGJvb2wgIlRhbmdvIFNNUDg3NTkgUENJZSBjb250cm9sbGVyIChEQU5HRVJPVVMp Ig0KPiA+ID4gPiAgICAgZGVwZW5kcyBvbiBBUkNIX1RBTkdPICYmIFBDSV9NU0kgJiYgT0YNCj4g PiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvTWFrZWZpbGUgYi9kcml2 ZXJzL3BjaS9jb250cm9sbGVyL01ha2VmaWxlDQo+ID4gPiA+IGluZGV4IGJjZGJmNDlhYjFlNC4u OWMxYjk2Nzc3NTk3IDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVy L01ha2VmaWxlDQo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvTWFrZWZpbGUN Cj4gPiA+ID4gQEAgLTI3LDYgKzI3LDcgQEAgb2JqLSQoQ09ORklHX1BDSUVfUk9DS0NISVApICs9 IHBjaWUtcm9ja2NoaXAubw0KPiA+ID4gPiAgb2JqLSQoQ09ORklHX1BDSUVfUk9DS0NISVBfRVAp ICs9IHBjaWUtcm9ja2NoaXAtZXAubw0KPiA+ID4gPiAgb2JqLSQoQ09ORklHX1BDSUVfUk9DS0NI SVBfSE9TVCkgKz0gcGNpZS1yb2NrY2hpcC1ob3N0Lm8NCj4gPiA+ID4gIG9iai0kKENPTkZJR19Q Q0lFX01FRElBVEVLKSArPSBwY2llLW1lZGlhdGVrLm8NCj4gPiA+ID4gK29iai0kKENPTkZJR19Q Q0lFX01FRElBVEVLX0dFTjMpICs9IHBjaWUtbWVkaWF0ZWstZ2VuMy5vDQo+ID4gPiA+ICBvYmot JChDT05GSUdfUENJRV9UQU5HT19TTVA4NzU5KSArPSBwY2llLXRhbmdvLm8NCj4gPiA+ID4gIG9i ai0kKENPTkZJR19WTUQpICs9IHZtZC5vDQo+ID4gPiA+ICBvYmotJChDT05GSUdfUENJRV9CUkNN U1RCKSArPSBwY2llLWJyY21zdGIubw0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kv Y29udHJvbGxlci9wY2llLW1lZGlhdGVrLWdlbjMuYyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIv cGNpZS1tZWRpYXRlay1nZW4zLmMNCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5mOGM4YmRmODhkMzMNCj4gPiA+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ID4gPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbWVkaWF0ZWstZ2Vu My5jDQo+ID4gPiA+IEBAIC0wLDAgKzEsMTA3NiBAQA0KPiA+ID4gPiArLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjANCj4gPiA+ID4gKy8qDQo+ID4gPiA+ICsgKiBNZWRpYVRlayBQ Q0llIGhvc3QgY29udHJvbGxlciBkcml2ZXIuDQo+ID4gPiA+ICsgKg0KPiA+ID4gPiArICogQ29w eXJpZ2h0IChjKSAyMDIwIE1lZGlhVGVrIEluYy4NCj4gPiA+ID4gKyAqIEF1dGhvcjogSmlhbmp1 biBXYW5nIDxqaWFuanVuLndhbmdAbWVkaWF0ZWsuY29tPg0KPiA+ID4gPiArICovDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxs aW51eC9kZWxheS5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPg0KPiA+ID4g PiArI2luY2x1ZGUgPGxpbnV4L2lycS5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2lycWNo aXAvY2hhaW5lZF9pcnEuaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9pcnFkb21haW4uaD4N Cj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9tc2kuaD4NCj4gPiA+ID4g KyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+DQo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgv b2ZfY2xrLmg+DQo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfcGNpLmg+DQo+ID4gPiA+ICsj aW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9w Y2kuaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+DQo+ID4gPiA+ICsjaW5j bHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgv cG1fZG9tYWluLmg+DQo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPg0KPiA+ ID4gPiArI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNpbmNs dWRlICIuLi9wY2kuaCINCj4gPiA+ID4gKw0KPiA+ID4gPiArI2RlZmluZSBQQ0lFX1NFVFRJTkdf UkVHICAgICAgICAgICAweDgwDQo+ID4gPiA+ICsjZGVmaW5lIFBDSUVfUENJX0lEU18xICAgICAg ICAgICAgICAgICAgICAgMHg5Yw0KPiA+ID4gPiArI2RlZmluZSBQQ0lfQ0xBU1MoY2xhc3MpICAg ICAgICAgICAoY2xhc3MgPDwgOCkNCj4gPiA+ID4gKyNkZWZpbmUgUENJRV9SQ19NT0RFICAgICAg ICAgICAgICAgICAgICAgICBCSVQoMCkNCj4gPiA+ID4gKw0KPiA+ID4gPiArI2RlZmluZSBQQ0lF X0NGR05VTV9SRUcgICAgICAgICAgICAgICAgICAgIDB4MTQwDQo+ID4gPiA+ICsjZGVmaW5lIFBD SUVfQ0ZHX0RFVkZOKGRldmZuKSAgICAgICAgICAgICAgKChkZXZmbikgJiBHRU5NQVNLKDcsIDAp KQ0KPiA+ID4gPiArI2RlZmluZSBQQ0lFX0NGR19CVVMoYnVzKSAgICAgICAgICAoKChidXMpIDw8 IDgpICYgR0VOTUFTSygxNSwgOCkpDQo+ID4gPiA+ICsjZGVmaW5lIFBDSUVfQ0ZHX0JZVEVfRU4o Ynl0ZXMpICAgICAgICAgICAgKCgoYnl0ZXMpIDw8IDE2KSAmIEdFTk1BU0soMTksIDE2KSkNCj4g PiA+ID4gKyNkZWZpbmUgUENJRV9DRkdfRk9SQ0VfQllURV9FTiAgICAgICAgICAgICBCSVQoMjAp DQo+ID4gPiA+ICsjZGVmaW5lIFBDSUVfQ0ZHX09GRlNFVF9BRERSICAgICAgICAgICAgICAgMHgx MDAwDQo+ID4gPiA+ICsjZGVmaW5lIFBDSUVfQ0ZHX0hFQURFUihkZXZmbiwgYnVzKSBcDQo+ID4g PiA+ICsgICAoUENJRV9DRkdfREVWRk4oZGV2Zm4pIHwgUENJRV9DRkdfQlVTKGJ1cykpDQo+ID4g PiA+ICsNCj4gPiA+ID4gKyNkZWZpbmUgUENJRV9DRkdfSEVBREVSX0ZPUkNFX0JFKGRldmZuLCBi dXMsIGJ5dGVzKSBcDQo+ID4gPiA+ICsgICAoUENJRV9DRkdfSEVBREVSKGRldmZuLCBidXMpIHwg UENJRV9DRkdfQllURV9FTihieXRlcykgXA0KPiA+ID4gPiArICAgIHwgUENJRV9DRkdfRk9SQ0Vf QllURV9FTikNCj4gPiA+ID4gKw0KPiA+ID4gPiArI2RlZmluZSBQQ0lFX1JTVF9DVFJMX1JFRyAg ICAgICAgICAweDE0OA0KPiA+ID4gPiArI2RlZmluZSBQQ0lFX01BQ19SU1RCICAgICAgICAgICAg ICAgICAgICAgIEJJVCgwKQ0KPiA+ID4gPiArI2RlZmluZSBQQ0lFX1BIWV9SU1RCICAgICAgICAg ICAgICAgICAgICAgIEJJVCgxKQ0KPiA+ID4gPiArI2RlZmluZSBQQ0lFX0JSR19SU1RCICAgICAg ICAgICAgICAgICAgICAgIEJJVCgyKQ0KPiA+ID4gPiArI2RlZmluZSBQQ0lFX1BFX1JTVEIgICAg ICAgICAgICAgICAgICAgICAgIEJJVCgzKQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsjZGVmaW5lIFBD SUVfTUlTQ19TVEFUVVNfUkVHICAgICAgICAgICAgICAgMHgxNEMNCj4gPiA+ID4gKyNkZWZpbmUg UENJRV9MVFJfTVNHX1JFQ0VJVkVEICAgICAgICAgICAgICBCSVQoMCkNCj4gPiA+ID4gKyNkZWZp bmUgUENJRV9QQ0lFX01TR19SRUNFSVZFRCAgICAgICAgICAgICBCSVQoMSkNCj4gPiA+ID4gKw0K PiA+ID4gPiArI2RlZmluZSBQQ0lFX0xUU1NNX1NUQVRVU19SRUcgICAgICAgICAgICAgIDB4MTUw DQo+ID4gPiA+ICsjZGVmaW5lIFBDSUVfTFRTU01fU1RBVEVfTUFTSyAgICAgICAgICAgICAgR0VO TUFTSygyOCwgMjQpDQo+ID4gPiA+ICsjZGVmaW5lIFBDSUVfTFRTU01fU1RBVEUodmFsKSAgICAg ICAgICAgICAgKCh2YWwgJiBQQ0lFX0xUU1NNX1NUQVRFX01BU0spID4+IDI0KQ0KPiA+ID4gPiAr I2RlZmluZSBQQ0lFX0xUU1NNX1NUQVRFX0wwICAgICAgICAgICAgICAgIDB4MTANCj4gPiA+ID4g KyNkZWZpbmUgUENJRV9MVFNTTV9TVEFURV9MMV9JRExFICAgMHgxMw0KPiA+ID4gPiArI2RlZmlu ZSBQQ0lFX0xUU1NNX1NUQVRFX0wyX0lETEUgICAweDE0DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNk ZWZpbmUgUENJRV9MSU5LX1NUQVRVU19SRUcgICAgICAgICAgICAgICAweDE1NA0KPiA+ID4gPiAr I2RlZmluZSBQQ0lFX1BPUlRfTElOS1VQICAgICAgICAgICBCSVQoOCkNCj4gPiA+ID4gKw0KPiA+ ID4gPiArI2RlZmluZSBQQ0lFX01TSV9TRVRfTlVNICAgICAgICAgICA4DQo+ID4gPiA+ICsjZGVm aW5lIFBDSUVfTVNJX0lSUVNfUEVSX1NFVCAgICAgICAgICAgICAgMzINCj4gPiA+ID4gKyNkZWZp bmUgUENJRV9NU0lfSVJRU19OVU0gXA0KPiA+ID4gPiArICAgKFBDSUVfTVNJX0lSUVNfUEVSX1NF VCAqIChQQ0lFX01TSV9TRVRfTlVNKSkNCj4gPiA+ID4gKw0KPiA+ID4gPiArI2RlZmluZSBQQ0lF X0lOVF9FTkFCTEVfUkVHICAgICAgICAgICAgICAgIDB4MTgwDQo+ID4gPiA+ICsjZGVmaW5lIFBD SUVfTVNJX01BU0sgICAgICAgICAgICAgICAgICAgICAgR0VOTUFTSyhQQ0lFX01TSV9TRVRfTlVN ICsgOCAtIDEsIDgpDQo+ID4gPiA+ICsjZGVmaW5lIFBDSUVfTVNJX1NISUZUICAgICAgICAgICAg ICAgICAgICAgOA0KPiA+ID4gPiArI2RlZmluZSBQQ0lFX0lOVFhfU0hJRlQgICAgICAgICAgICAg ICAgICAgIDI0DQo+ID4gPiA+ICsjZGVmaW5lIFBDSUVfSU5UWF9NQVNLICAgICAgICAgICAgICAg ICAgICAgR0VOTUFTSygyNywgMjQpDQo+ID4gPiA+ICsjZGVmaW5lIFBDSUVfTVNHX01BU0sgICAg ICAgICAgICAgICAgICAgICAgQklUKDI4KQ0KPiA+ID4gPiArI2RlZmluZSBQQ0lFX0FFUl9NQVNL ICAgICAgICAgICAgICAgICAgICAgIEJJVCgyOSkNCj4gPiA+ID4gKyNkZWZpbmUgUENJRV9QTV9N QVNLICAgICAgICAgICAgICAgICAgICAgICBCSVQoMzApDQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNk ZWZpbmUgUENJRV9JTlRfU1RBVFVTX1JFRyAgICAgICAgICAgICAgICAweDE4NA0KPiA+ID4gPiAr I2RlZmluZSBQQ0lFX01TSV9TRVRfRU5BQkxFX1JFRyAgICAgICAgICAgIDB4MTkwDQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyNkZWZpbmUgUENJRV9MT1dfUE9XRVJfQ1RSTF9SRUcgICAgICAgICAgICAw eDE5NA0KPiA+ID4gPiArI2RlZmluZSBQQ0lFX0RJU19MT1dQV1JfTUFTSyAgICAgICAgICAgICAg IEdFTk1BU0soMywgMCkNCj4gPiA+ID4gKyNkZWZpbmUgUENJRV9ESVNfTDBTX01BU0sgICAgICAg ICAgQklUKDApDQo+ID4gPiA+ICsjZGVmaW5lIFBDSUVfRElTX0wxX01BU0sgICAgICAgICAgIEJJ VCgxKQ0KPiA+ID4gPiArI2RlZmluZSBQQ0lFX0RJU19MMTFfTUFTSyAgICAgICAgICBCSVQoMikN Cj4gPiA+ID4gKyNkZWZpbmUgUENJRV9ESVNfTDEyX01BU0sgICAgICAgICAgQklUKDMpDQo+ID4g PiA+ICsjZGVmaW5lIFBDSUVfRk9SQ0VfRElTX0xPV1BXUiAgICAgICAgICAgICAgR0VOTUFTSygx MSwgOCkNCj4gPiA+ID4gKyNkZWZpbmUgUENJRV9GT1JDRV9ESVNfTDBTICAgICAgICAgQklUKDgp DQo+ID4gPiA+ICsjZGVmaW5lIFBDSUVfRk9SQ0VfRElTX0wxICAgICAgICAgIEJJVCg5KQ0KPiA+ ID4gPiArI2RlZmluZSBQQ0lFX0ZPUkNFX0RJU19MMTEgICAgICAgICBCSVQoMTApDQo+ID4gPiA+ ICsjZGVmaW5lIFBDSUVfRk9SQ0VfRElTX0wxMiAgICAgICAgIEJJVCgxMSkNCj4gPiA+ID4gKw0K PiA+ID4gPiArI2RlZmluZSBQQ0lFX0lDTURfUE1fUkVHICAgICAgICAgICAweDE5OA0KPiA+ID4g PiArI2RlZmluZSBQQ0lFX1RVUk5fT0ZGX0xJTksgICAgICAgICBCSVQoNCkNCj4gPiA+ID4gKw0K PiA+ID4gPiArI2RlZmluZSBQQ0lFX01TSV9BRERSX0JBU0VfUkVHICAgICAgICAgICAgIDB4YzAw DQo+ID4gPiA+ICsjZGVmaW5lIFBDSUVfTVNJX1NFVF9PRkZTRVQgICAgICAgICAgICAgICAgMHgx MA0KPiA+ID4gPiArI2RlZmluZSBQQ0lFX01TSV9TVEFUVVNfT0ZGU0VUICAgICAgICAgICAgIDB4 MDQNCj4gPiA+ID4gKyNkZWZpbmUgUENJRV9NU0lfRU5BQkxFX09GRlNFVCAgICAgICAgICAgICAw eDA4DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyNkZWZpbmUgUENJRV9UUkFOU19UQUJMRV9CQVNFX1JF RyAgMHg4MDANCj4gPiA+ID4gKyNkZWZpbmUgUENJRV9BVFJfU1JDX0FERFJfTVNCX09GRlNFVCAg ICAgICAweDQNCj4gPiA+ID4gKyNkZWZpbmUgUENJRV9BVFJfVFJTTF9BRERSX0xTQl9PRkZTRVQg ICAgICAweDgNCj4gPiA+ID4gKyNkZWZpbmUgUENJRV9BVFJfVFJTTF9BRERSX01TQl9PRkZTRVQg ICAgICAweGMNCj4gPiA+ID4gKyNkZWZpbmUgUENJRV9BVFJfVFJTTF9QQVJBTV9PRkZTRVQgMHgx MA0KPiA+ID4gPiArI2RlZmluZSBQQ0lFX0FUUl9UTEJfU0VUX09GRlNFVCAgICAgICAgICAgIDB4 MjANCj4gPiA+ID4gKw0KPiA+ID4gPiArI2RlZmluZSBQQ0lFX01BWF9UUkFOU19UQUJMRVMgICAg ICAgICAgICAgIDgNCj4gPiA+ID4gKyNkZWZpbmUgQVRSX0VOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBCSVQoMCkNCj4gPiA+ID4gKyNkZWZpbmUgQVRSX1NJWkUoc2l6ZSkgICAgICAgICAg ICAgICAgICAgICAoKCgoc2l6ZSkgLSAxKSA8PCAxKSAmIEdFTk1BU0soNiwgMSkpDQo+ID4gPiA+ ICsjZGVmaW5lIEFUUl9JRChpZCkgICAgICAgICAgICAgICAgIChpZCAmIEdFTk1BU0soMywgMCkp DQo+ID4gPiA+ICsjZGVmaW5lIEFUUl9QQVJBTShwYXJhbSkgICAgICAgICAgICgoKHBhcmFtKSA8 PCAxNikgJiBHRU5NQVNLKDI3LCAxNikpDQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4g PiArICogc3RydWN0IG10a19wY2llX21zaSAtIE1TSSBpbmZvcm1hdGlvbiBmb3IgZWFjaCBzZXQN Cj4gPiA+ID4gKyAqIEBiYXNlOiBJTyBtYXBwZWQgcmVnaXN0ZXIgYmFzZQ0KPiA+ID4gPiArICog QGh3aXJxOiBIYXJkd2FyZSBpbnRlcnJ1cHQgbnVtYmVyDQo+ID4gPiA+ICsgKiBAaXJxOiBNU0kg c2V0IEludGVycnVwdCBudW1iZXINCj4gPiA+ID4gKyAqIEBpbmRleDogTVNJIHNldCBudW1iZXIN Cj4gPiA+ID4gKyAqIEBtc2dfYWRkcjogTVNJIG1lc3NhZ2UgYWRkcmVzcw0KPiA+ID4gPiArICog QGRvbWFpbjogSVJRIGRvbWFpbg0KPiA+ID4gPiArICovDQo+ID4gPiA+ICtzdHJ1Y3QgbXRrX3Bj aWVfbXNpIHsNCj4gPiA+ID4gKyAgIHZvaWQgX19pb21lbSAqYmFzZTsNCj4gPiA+ID4gKyAgIGlu dCBod2lycTsNCj4gPiA+ID4gKyAgIGludCBpcnE7DQo+ID4gPiA+ICsgICBpbnQgaW5kZXg7DQo+ ID4gPiA+ICsgICBwaHlzX2FkZHJfdCBtc2dfYWRkcjsNCj4gPiA+ID4gKyAgIHN0cnVjdCBpcnFf ZG9tYWluICpkb21haW47DQo+ID4gPiA+ICt9Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICsvKioNCj4g PiA+ID4gKyAqIHN0cnVjdCBtdGtfcGNpZV9wb3J0IC0gUENJZSBwb3J0IGluZm9ybWF0aW9uDQo+ ID4gPiA+ICsgKiBAZGV2OiBQQ0llIGRldmljZQ0KPiA+ID4gPiArICogQGJhc2U6IElPIG1hcHBl ZCByZWdpc3RlciBiYXNlDQo+ID4gPiA+ICsgKiBAcmVnX2Jhc2U6IFBoeXNpY2FsIHJlZ2lzdGVy IGJhc2UNCj4gPiA+ID4gKyAqIEBtYWNfcmVzZXQ6IG1hYyByZXNldCBjb250cm9sDQo+ID4gPiA+ ICsgKiBAcGh5X3Jlc2V0OiBwaHkgcmVzZXQgY29udHJvbA0KPiA+ID4gPiArICogQHBoeTogUEhZ IGNvbnRyb2xsZXIgYmxvY2sNCj4gPiA+ID4gKyAqIEBjbGtzOiBQQ0llIGNsb2Nrcw0KPiA+ID4g PiArICogQG51bV9jbGtzOiBQQ0llIGNsb2NrcyBjb3VudCBmb3IgdGhpcyBwb3J0DQo+ID4gPiA+ ICsgKiBAaXNfc3VzcGVuZGVkOiBkZXZpY2Ugc3VzcGVuZCBzdGF0ZQ0KPiA+ID4gPiArICogQGly cTogUENJZSBjb250cm9sbGVyIGludGVycnVwdCBudW1iZXINCj4gPiA+ID4gKyAqIEBpbnR4X2Rv bWFpbjogbGVnYWN5IElOVHggSVJRIGRvbWFpbg0KPiA+ID4gPiArICogQG1zaV9kb21haW46IE1T SSBJUlEgZG9tYWluDQo+ID4gPiA+ICsgKiBAbXNpX3RvcF9kb21haW46IE1TSSBJUlEgdG9wIGRv bWFpbg0KPiA+ID4gPiArICogQG1zaV9pbmZvOiBNU0kgc2V0cyBpbmZvcm1hdGlvbg0KPiA+ID4g PiArICogQGxvY2s6IGxvY2sgcHJvdGVjdGluZyBJUlEgYml0IG1hcA0KPiA+ID4gPiArICogQG1z aV9pcnFfaW5fdXNlOiBiaXQgbWFwIGZvciBhc3NpZ25lZCBNU0kgSVJRDQo+ID4gPiA+ICsgKi8N Cj4gPiA+ID4gK3N0cnVjdCBtdGtfcGNpZV9wb3J0IHsNCj4gPiA+ID4gKyAgIHN0cnVjdCBkZXZp Y2UgKmRldjsNCj4gPiA+ID4gKyAgIHZvaWQgX19pb21lbSAqYmFzZTsNCj4gPiA+ID4gKyAgIHBo eXNfYWRkcl90IHJlZ19iYXNlOw0KPiA+ID4gPiArICAgc3RydWN0IHJlc2V0X2NvbnRyb2wgKm1h Y19yZXNldDsNCj4gPiA+ID4gKyAgIHN0cnVjdCByZXNldF9jb250cm9sICpwaHlfcmVzZXQ7DQo+ ID4gPiA+ICsgICBzdHJ1Y3QgcGh5ICpwaHk7DQo+ID4gPiA+ICsgICBzdHJ1Y3QgY2xrICoqY2xr czsNCj4gPiA+ID4gKyAgIGludCBudW1fY2xrczsNCj4gPiA+ID4gKyAgIGJvb2wgaXNfc3VzcGVu ZGVkOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICBpbnQgaXJxOw0KPiA+ID4gPiArICAgc3RydWN0 IGlycV9kb21haW4gKmludHhfZG9tYWluOw0KPiA+ID4gPiArICAgc3RydWN0IGlycV9kb21haW4g Km1zaV9kb21haW47DQo+ID4gPiA+ICsgICBzdHJ1Y3QgaXJxX2RvbWFpbiAqbXNpX3RvcF9kb21h aW47DQo+ID4gPiA+ICsgICBzdHJ1Y3QgbXRrX3BjaWVfbXNpICoqbXNpX2luZm87DQo+ID4gPiA+ ICsgICBzdHJ1Y3QgbXV0ZXggbG9jazsNCj4gPiA+ID4gKyAgIERFQ0xBUkVfQklUTUFQKG1zaV9p cnFfaW5fdXNlLCBQQ0lFX01TSV9JUlFTX05VTSk7DQo+ID4gPiA+ICt9Ow0KPiA+ID4gPiArDQo+ ID4gPiA+ICtzdGF0aWMgaW50IG10a19wY2llX2NvbmZpZ19yZWFkKHN0cnVjdCBwY2lfYnVzICpi dXMsIHVuc2lnbmVkIGludCBkZXZmbiwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgd2hlcmUsIGludCBzaXplLCB1MzIgKnZhbCkNCj4gPiA+ID4gK3sNCj4gPiA+ ID4gKyAgIHN0cnVjdCBtdGtfcGNpZV9wb3J0ICpwb3J0ID0gYnVzLT5zeXNkYXRhOw0KPiA+ID4g PiArICAgaW50IGJ5dGVzOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICBieXRlcyA9ICgoMSA8PCBz aXplKSAtIDEpIDw8ICh3aGVyZSAmIDB4Myk7DQo+ID4gPiA+ICsgICB3cml0ZWwoUENJRV9DRkdf SEVBREVSX0ZPUkNFX0JFKGRldmZuLCBidXMtPm51bWJlciwgYnl0ZXMpLA0KPiA+ID4gPiArICAg ICAgICAgIHBvcnQtPmJhc2UgKyBQQ0lFX0NGR05VTV9SRUcpOw0KPiA+ID4gPiArDQo+ID4gPiA+ ICsgICAqdmFsID0gcmVhZGwocG9ydC0+YmFzZSArIFBDSUVfQ0ZHX09GRlNFVF9BRERSICsgKHdo ZXJlICYgfjB4MykpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICBpZiAoc2l6ZSA8PSAyKQ0KPiA+ ID4gPiArICAgICAgICAgICAqdmFsID0gKCp2YWwgPj4gKDggKiAod2hlcmUgJiAweDMpKSkgJiAo KDEgPDwgKHNpemUgKiA4KSkgLSAxKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgcmV0dXJuIFBD SUJJT1NfU1VDQ0VTU0ZVTDsNCj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGlj IGludCBtdGtfcGNpZV9jb25maWdfd3JpdGUoc3RydWN0IHBjaV9idXMgKmJ1cywgdW5zaWduZWQg aW50IGRldmZuLA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg d2hlcmUsIGludCBzaXplLCB1MzIgdmFsKQ0KPiA+ID4gPiArew0KPiA+ID4gPiArICAgc3RydWN0 IG10a19wY2llX3BvcnQgKnBvcnQgPSBidXMtPnN5c2RhdGE7DQo+ID4gPiA+ICsgICBpbnQgYnl0 ZXM7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgIGJ5dGVzID0gKCgxIDw8IHNpemUpIC0gMSkgPDwg KHdoZXJlICYgMHgzKTsNCj4gPiA+ID4gKyAgIHdyaXRlbChQQ0lFX0NGR19IRUFERVJfRk9SQ0Vf QkUoZGV2Zm4sIGJ1cy0+bnVtYmVyLCBieXRlcyksDQo+ID4gPiA+ICsgICAgICAgICAgcG9ydC0+ YmFzZSArIFBDSUVfQ0ZHTlVNX1JFRyk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgIGlmIChzaXpl IDw9IDIpDQo+ID4gPiA+ICsgICAgICAgICAgIHZhbCA9ICh2YWwgJiAoKDEgPDwgKHNpemUgKiA4 KSkgLSAxKSkgPDwgKCh3aGVyZSAmIDB4MykgKiA4KTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAg d3JpdGVsKHZhbCwgcG9ydC0+YmFzZSArIFBDSUVfQ0ZHX09GRlNFVF9BRERSICsgKHdoZXJlICYg fjB4MykpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICByZXR1cm4gUENJQklPU19TVUNDRVNTRlVM Ow0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgc3RydWN0IHBjaV9vcHMg bXRrX3BjaWVfb3BzID0gew0KPiA+ID4gPiArICAgLnJlYWQgID0gbXRrX3BjaWVfY29uZmlnX3Jl YWQsDQo+ID4gPiA+ICsgICAud3JpdGUgPSBtdGtfcGNpZV9jb25maWdfd3JpdGUsDQo+ID4gPiA+ ICt9Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0aWMgdm9pZCBtdGtfcGNpZV9zZXRfdHJhbnNf d2luZG93KHZvaWQgX19pb21lbSAqcmVnLA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzb3VyY2Vfc2l6ZV90IGNwdV9hZGRyLA0KPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2Vfc2l6ZV90IHBjaV9hZGRyLCBzaXplX3Qg c2l6ZSkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgIHdyaXRlbChsb3dlcl8zMl9iaXRzKGNwdV9h ZGRyKSB8IEFUUl9TSVpFKGZscyhzaXplKSAtIDEpIHwgQVRSX0VOLCByZWcpOw0KPiA+ID4gPiAr ICAgd3JpdGVsKHVwcGVyXzMyX2JpdHMoY3B1X2FkZHIpLCByZWcgKyBQQ0lFX0FUUl9TUkNfQURE Ul9NU0JfT0ZGU0VUKTsNCj4gPiA+ID4gKyAgIHdyaXRlbChsb3dlcl8zMl9iaXRzKHBjaV9hZGRy KSwgcmVnICsgUENJRV9BVFJfVFJTTF9BRERSX0xTQl9PRkZTRVQpOw0KPiA+ID4gPiArICAgd3Jp dGVsKHVwcGVyXzMyX2JpdHMocGNpX2FkZHIpLCByZWcgKyBQQ0lFX0FUUl9UUlNMX0FERFJfTVNC X09GRlNFVCk7DQo+ID4gPiA+ICsgICB3cml0ZWwoQVRSX0lEKDApIHwgQVRSX1BBUkFNKDApLCBy ZWcgKyBQQ0lFX0FUUl9UUlNMX1BBUkFNX09GRlNFVCk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsN Cj4gPiA+ID4gK3N0YXRpYyBpbnQgbXRrX3BjaWVfc2V0X3RyYW5zX3RhYmxlKHZvaWQgX19pb21l bSAqcmVnLA0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNl X3NpemVfdCBjcHVfYWRkciwNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXNvdXJjZV9zaXplX3QgcGNpX2FkZHIsIHNpemVfdCBzaXplLA0KPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW0pDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsg ICB2b2lkIF9faW9tZW0gKnRhYmxlX2Jhc2U7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgIGlmIChu dW0gPiBQQ0lFX01BWF9UUkFOU19UQUJMRVMpDQo+ID4gPiA+ICsgICAgICAgICAgIHJldHVybiAt RU5PREVWOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICB0YWJsZV9iYXNlID0gcmVnICsgbnVtICog UENJRV9BVFJfVExCX1NFVF9PRkZTRVQ7DQo+ID4gPiA+ICsgICBtdGtfcGNpZV9zZXRfdHJhbnNf d2luZG93KHRhYmxlX2Jhc2UsIGNwdV9hZGRyLCBwY2lfYWRkciwgc2l6ZSk7DQo+ID4gPiA+ICsN Cj4gPiA+ID4gKyAgIHJldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtz dGF0aWMgaW50IG10a19wY2llX3N0YXJ0dXBfcG9ydChzdHJ1Y3QgbXRrX3BjaWVfcG9ydCAqcG9y dCkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKyAgIHN0cnVjdCByZXNvdXJjZV9lbnRyeSAqZW50cnk7 DQo+ID4gPiA+ICsgICBzdHJ1Y3QgcGNpX2hvc3RfYnJpZGdlICpob3N0ID0gcGNpX2hvc3RfYnJp ZGdlX2Zyb21fcHJpdihwb3J0KTsNCj4gPiA+ID4gKyAgIHUzMiB2YWw7DQo+ID4gPiA+ICsgICBp bnQgZXJyID0gMCwgdGFibGVfaW5kZXggPSAwOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAvKiBT ZXQgYXMgUkMgbW9kZSAqLw0KPiA+ID4gPiArICAgdmFsID0gcmVhZGwocG9ydC0+YmFzZSArIFBD SUVfU0VUVElOR19SRUcpOw0KPiA+ID4gPiArICAgdmFsIHw9IFBDSUVfUkNfTU9ERTsNCj4gPiA+ ID4gKyAgIHdyaXRlbCh2YWwsIHBvcnQtPmJhc2UgKyBQQ0lFX1NFVFRJTkdfUkVHKTsNCj4gPiA+ ID4gKw0KPiA+ID4gPiArICAgLyogU2V0IGNsYXNzIGNvZGUgKi8NCj4gPiA+ID4gKyAgIHZhbCA9 IHJlYWRsKHBvcnQtPmJhc2UgKyBQQ0lFX1BDSV9JRFNfMSk7DQo+ID4gPiA+ICsgICB2YWwgJj0g fkdFTk1BU0soMzEsIDgpOw0KPiA+ID4gPiArICAgdmFsIHw9IFBDSV9DTEFTUyhQQ0lfQ0xBU1Nf QlJJREdFX1BDSSA8PCA4KTsNCj4gPiA+ID4gKyAgIHdyaXRlbCh2YWwsIHBvcnQtPmJhc2UgKyBQ Q0lFX1BDSV9JRFNfMSk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgIC8qIEFzc2VydCBhbGwgcmVz ZXQgc2lnbmFscyAqLw0KPiA+ID4gPiArICAgdmFsID0gcmVhZGwocG9ydC0+YmFzZSArIFBDSUVf UlNUX0NUUkxfUkVHKTsNCj4gPiA+ID4gKyAgIHZhbCB8PSBQQ0lFX01BQ19SU1RCIHwgUENJRV9Q SFlfUlNUQiB8IFBDSUVfQlJHX1JTVEIgfCBQQ0lFX1BFX1JTVEI7DQo+ID4gPiA+ICsgICB3cml0 ZWwodmFsLCBwb3J0LT5iYXNlICsgUENJRV9SU1RfQ1RSTF9SRUcpOw0KPiA+ID4gPiArDQo+ID4g PiA+ICsgICAvKiBEZS1hc3NlcnQgcmVzZXQgc2lnbmFscyovDQo+ID4gPiA+ICsgICB2YWwgJj0g fihQQ0lFX01BQ19SU1RCIHwgUENJRV9QSFlfUlNUQiB8IFBDSUVfQlJHX1JTVEIpOw0KPiA+ID4g PiArICAgd3JpdGVsKHZhbCwgcG9ydC0+YmFzZSArIFBDSUVfUlNUX0NUUkxfUkVHKTsNCj4gPiA+ ID4gKw0KPiA+ID4gPiArICAgdXNsZWVwX3JhbmdlKDEwMCAqIDEwMDAsIDEyMCAqIDEwMDApOw0K PiA+ID4NCj4gPiA+IFNlZW1zIGxpa2UgYSBsb25nIGRlbGF5Li4uDQo+ID4NCj4gPiBZZXMsIGl0 J3MgdHJ1bHkgYSBsb25nIGRlbGF5LCB0aGUgUENJIEV4cHJlc3MgQ2FyZCBFbGVjdHJvbWVjaGFu aWNhbA0KPiA+IFNwZWNpZmljYXRpb24gc3VnZ2VzdHMgdGhhdCB0aGUgZGUtYXNzZXJ0aW9uIG9m IFBFUlNUIyBzaG91bGQgYmUgZGVsYXllZA0KPiA+IDEwMG1zIHRvIHdhaXQgdGhlIHJlZmVyZW5j ZSBjbG9ja3MgYmVjb21lIHN0YWJsZS5JIHdpbGwgZGlzY3VzcyB3aXRoIHRoZQ0KPiA+IGRlc2ln bmVycyB0byBjaGVjayBpZiB3ZSByZWFsbHkgbmVlZCB0aGF0IGxvbmcgdGltZSBhbmQgdHJ5IHRv IG1ha2UgaXQNCj4gPiBzaG9ydGVyLg0KPiANCj4gSnVzdCBhZGQgYSBjb21tZW50IGFzIHRvIHdo YXQgdGhlIGRlbGF5IGlzIGZvciBvciBiYXNlZCBvbi4NCj4gDQo+IFsuLi5dDQo+IA0KPiA+ID4g PiArc3RhdGljIGludCBfX21heWJlX3VudXNlZCBtdGtfcGNpZV9zdXNwZW5kX25vaXJxKHN0cnVj dCBkZXZpY2UgKmRldikNCj4gPiA+DQo+ID4gPiBXaHkgZG8geW91IG5lZWQgdGhlIG5vaXJxIHZh cmlhbnQ/DQo+ID4NCj4gPiBJIHRoaW5rIHRoZSBzdXNwZW5kIG9mIGJ1cyBjb250cm9sbGVyIHNo b3VsZCBiZSB0aGUgbGFzdCBjYWxsYmFjaw0KPiA+IGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2Fs bGVkLCBzbyBJIGFkZCBub2lycSB2YXJpYW50IHRvIG1ha2Ugc3VyZSBpdCdzDQo+ID4gY2FsbGVk IGFmdGVyIHRoZSBkZXZpY2UgZHJpdmVyJ3Mgc3VzcGVuZCBmdW5jdGlvbi4NCj4gDQo+IFRoZSBM aW51eCBkcml2ZXIgbW9kZWwgd2lsbCBlbnN1cmUgdGhhdC4gQ2hpbGQgZGV2aWNlcyB3aWxsIGJl DQo+IHN1c3BlbmRlZCBiZWZvcmUgdGhlIHBhcmVudC4gSWYgdGhlcmUncyBzb21lIG5vbiBwYXJl bnQtY2hpbGQNCj4gZGVwZW5kZW5jeSwgdGhhdCBzaG91bGQgZ2V0IGhhbmRsZWQgd2l0aCBkZXZs aW5rcy4NCj4gDQo+IFJvYg0KDQpIaSBSb2IsDQoNCklmIEkgd2FudCB0byB0cmlnZ2VyIHRoZSBQ Q0llIGxpbmsgdG8gTDIgc3RhdGUsIGRpc2FibGUgY2xvY2tzIGFuZCBwb3dlcg0Kb2ZmIHRoZSBN QUMgYW5kIFBIWSB3aGVuIHN5c3RlbSBzdXNwZW5kLCBzaG91bGQgSSB1c2UgdGhlICpub2lycSoN CmNhbGxiYWNrcyB0byBkbyBzbyBvciBqdXN0IHRoZSBub3JtYWwgc3VzcGVuZCBpcyBzdWZmaWNp ZW50PyANCg0KVGhhbmtzLg0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18NCj4gTGludXgtbWVkaWF0ZWsgbWFpbGluZyBsaXN0DQo+IExpbnV4LW1l ZGlhdGVrQGxpc3RzLmluZnJhZGVhZC5vcmcNCj4gaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1tZWRpYXRlaw0KDQo=