From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 15CA7C31E5B for ; Wed, 19 Jun 2019 16:00:55 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C37202187F for ; Wed, 19 Jun 2019 16:00:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="QYQCW0td" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C37202187F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hdd0g-00066g-VC; Wed, 19 Jun 2019 16:00:30 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hdd0e-00066V-Rs for xen-devel@lists.xenproject.org; Wed, 19 Jun 2019 16:00:28 +0000 X-Inumbo-ID: 58f9bccc-92ab-11e9-8223-cf0a6d3c7a9a Received: from NAM02-SN1-obe.outbound.protection.outlook.com (unknown [40.107.77.44]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 58f9bccc-92ab-11e9-8223-cf0a6d3c7a9a; Wed, 19 Jun 2019 16:00:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xqyML+XD2bx+RdLLlXR8zSS/aN/2QRkJTSEajIWsWms=; b=QYQCW0tdyvHZTZjgRduG2w7YdNWr2UT7n5zFkD0jR9IkuBhQ+0DWI4+ZDYRk4ByrQ6R9sY3C3Gh6+ZUpUsv8A/Y+UsL0bhdr6urWDsspd81k0m55UH1OUkmfjaecNJo/6QO1GSDz9EkbO80ymiKILj0j3TdwyT2YVFbhPt/tBY4= Received: from DM6PR12MB3515.namprd12.prod.outlook.com (20.179.106.151) by DM6PR12MB3561.namprd12.prod.outlook.com (20.178.199.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.15; Wed, 19 Jun 2019 16:00:22 +0000 Received: from DM6PR12MB3515.namprd12.prod.outlook.com ([fe80::9dea:57a2:93ff:57b0]) by DM6PR12MB3515.namprd12.prod.outlook.com ([fe80::9dea:57a2:93ff:57b0%3]) with mapi id 15.20.1987.014; Wed, 19 Jun 2019 16:00:22 +0000 From: "Woods, Brian" To: Roger Pau Monne Thread-Topic: [PATCH v3 08/13] pci: switch pci_conf_read16 to use pci_sbdf_t Thread-Index: AQHVHRKrM3pQnDF3zk2dfeMeLLdni6ajNgsA Date: Wed, 19 Jun 2019 16:00:22 +0000 Message-ID: <20190619160019.GC20907@amd.com> References: <20190607092232.83179-1-roger.pau@citrix.com> <20190607092232.83179-9-roger.pau@citrix.com> In-Reply-To: <20190607092232.83179-9-roger.pau@citrix.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: DM6PR06CA0051.namprd06.prod.outlook.com (2603:10b6:5:54::28) To DM6PR12MB3515.namprd12.prod.outlook.com (2603:10b6:5:18a::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Brian.Woods@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [165.204.77.1] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 11a54e14-b6c9-4fdf-0593-08d6f4cf3c2d x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020); SRVR:DM6PR12MB3561; x-ms-traffictypediagnostic: DM6PR12MB3561: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3631; x-forefront-prvs: 0073BFEF03 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(376002)(346002)(366004)(136003)(39860400002)(189003)(199004)(2616005)(30864003)(256004)(476003)(8676002)(5660300002)(2906002)(8936002)(11346002)(81166006)(446003)(53936002)(53946003)(6512007)(81156014)(14444005)(6246003)(6916009)(1076003)(68736007)(316002)(229853002)(6436002)(6486002)(486006)(7416002)(36756003)(72206003)(33656002)(14454004)(186003)(26005)(6116002)(54906003)(102836004)(52116002)(99286004)(3846002)(76176011)(386003)(6506007)(66446008)(7736002)(66946007)(305945005)(71190400001)(71200400001)(4326008)(25786009)(66066001)(64756008)(66476007)(66556008)(86362001)(73956011)(478600001)(559001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR12MB3561; H:DM6PR12MB3515.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: I4RvBJwxr/Tf2vYjIw4nk5tRMGQWbeXeaA2dS45XR+thHgYHTi46DLd9vliG4j7zNqOLQbjgfmAKVhJq8volh+sfnsajOmpxih8jIKlhwBKzAWBw2OzEo5mIzFa21Qf5oheZjZUXGgm61AUopIiJcdjxPywLTEh3F97BwUaUYD+2YWL4kRFM7i92264w2yXfIXmIXbcJhw4TG8WfyTwf1Y2uFoeVe8yeaBZmr7eY/7K5szn+ux7P2p0Y8yVmg87n0I2I7XuG1zkG+UHnlZDFNQpMUEXpfo487YRFig4iXSIgbTJRYIs6IOgvTSu3TMUVtb3SGGyumtdH6lwkTmrOhkXi5yxr6N9ZqrSQ3OfNcol9bLr4vHCTkWCxjMffXj5xwZeWMa6/XXqMKljfUFvGrFjfny6A6pmDtmra7H6NkfM= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 11a54e14-b6c9-4fdf-0593-08d6f4cf3c2d X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Jun 2019 16:00:22.7593 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: brwoods@amd.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3561 Subject: Re: [Xen-devel] [PATCH v3 08/13] pci: switch pci_conf_read16 to use pci_sbdf_t X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Kevin Tian , Stefano Stabellini , "Suthikulpanit, Suravee" , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich , "xen-devel@lists.xenproject.org" , "Woods, Brian" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gRnJpLCBKdW4gMDcsIDIwMTkgYXQgMTE6MjI6MjdBTSArMDIwMCwgUm9nZXIgUGF1IE1vbm5l IHdyb3RlOgo+IFRoaXMgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgb2YgdGhlIGZ1 bmN0aW9uIHRvIHR3bywgYW5kCj4gc2ltcGxpZmllcyBzb21lIG9mIHRoZSBjYWxsaW5nIHNpdGVz Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXgu Y29tPgoKQXMgZmFyIGFzIEFNRCBJT01NVQoKQWNrZWQtYnk6IEJyaWFuIFdvb2RzIDxicmlhbi53 b29kc0BhbWQuY29tCgo+IC0tLQo+IENjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+ Cj4gQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cj4gQ2M6IFdl aSBMaXUgPHdsQHhlbi5vcmc+Cj4gQ2M6IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAZXUu Y2l0cml4LmNvbT4KPiBDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+ Cj4gQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+Cj4gQ2M6IEtvbnJhZCBS emVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KPiBDYzogU3RlZmFubyBTdGFi ZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgo+IENjOiBUaW0gRGVlZ2FuIDx0aW1AeGVu Lm9yZz4KPiBDYzogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRA YW1kLmNvbT4KPiBDYzogQnJpYW4gV29vZHMgPGJyaWFuLndvb2RzQGFtZC5jb20+Cj4gQ2M6IEtl dmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgo+IC0tLQo+ICB4ZW4vYXJjaC94ODYvZG1p X3NjYW4uYyAgICAgICAgICAgICAgICAgIHwgIDYgKy0KPiAgeGVuL2FyY2gveDg2L21zaS5jICAg ICAgICAgICAgICAgICAgICAgICB8IDczICsrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ICB4ZW4v YXJjaC94ODYveDg2XzY0L21tY29uZmlnLXNoYXJlZC5jICAgIHwgIDIgKy0KPiAgeGVuL2FyY2gv eDg2L3g4Nl82NC9wY2kuYyAgICAgICAgICAgICAgICB8IDI3ICsrKystLS0tLQo+ICB4ZW4vZHJp dmVycy9jaGFyL2VoY2ktZGJncC5jICAgICAgICAgICAgIHwgIDUgKy0KPiAgeGVuL2RyaXZlcnMv Y2hhci9uczE2NTUwLmMgICAgICAgICAgICAgICB8IDE2ICsrKystLQo+ICB4ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9hbWQvaW9tbXVfaW5pdC5jIHwgIDMgKy0KPiAgeGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvYXRzLmggICAgICAgICAgICB8ICA0ICstCj4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L3BjaS5jICAgICAgICAgICAgfCA0MCArKysrKy0tLS0tLS0tCj4gIHhlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3Z0ZC9xdWlya3MuYyAgICAgfCAgOSArKy0KPiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gveDg2L2F0cy5jICAgICAgICB8ICA5ICstLQo+ICB4ZW4vZHJpdmVycy9wY2kvcGNpLmMgICAg ICAgICAgICAgICAgICAgIHwgIDQgKy0KPiAgeGVuL2RyaXZlcnMvdmlkZW8vdmdhLmMgICAgICAg ICAgICAgICAgICB8ICA4ICstLQo+ICB4ZW4vZHJpdmVycy92cGNpL2hlYWRlci5jICAgICAgICAg ICAgICAgIHwgMTEgKystLQo+ICB4ZW4vZHJpdmVycy92cGNpL21zaS5jICAgICAgICAgICAgICAg ICAgIHwgIDMgKy0KPiAgeGVuL2RyaXZlcnMvdnBjaS9tc2l4LmMgICAgICAgICAgICAgICAgICB8 ICAzICstCj4gIHhlbi9kcml2ZXJzL3ZwY2kvdnBjaS5jICAgICAgICAgICAgICAgICAgfCAxMSAr Ky0tCj4gIHhlbi9pbmNsdWRlL3hlbi9wY2kuaCAgICAgICAgICAgICAgICAgICAgfCAgNCArLQo+ ICAxOCBmaWxlcyBjaGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCAxMzkgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kbWlfc2Nhbi5jIGIveGVuL2FyY2gveDg2L2Rt aV9zY2FuLmMKPiBpbmRleCBmY2RmMmQzOTUyLi4zMWNhYWQxMzNlIDEwMDY0NAo+IC0tLSBhL3hl bi9hcmNoL3g4Ni9kbWlfc2Nhbi5jCj4gKysrIGIveGVuL2FyY2gveDg2L2RtaV9zY2FuLmMKPiBA QCAtNDY5LDE1ICs0NjksMTUgQEAgc3RhdGljIGludCBfX2luaXQgaWNoMTBfYmlvc19xdWlyayhz dHJ1Y3QgZG1pX3N5c3RlbV9pZCAqZCkKPiAgewo+ICAgICAgdTMyIHBvcnQsIHNtaWN0bDsKPiAg Cj4gLSAgICBpZiAoIHBjaV9jb25mX3JlYWQxNigwLCAwLCAweDFmLCAwLCBQQ0lfVkVORE9SX0lE KSAhPSAweDgwODYgKQo+ICsgICAgaWYgKCBwY2lfY29uZl9yZWFkMTYoUENJX1NCREYoMCwgMCwg MHgxZiwgMCksIFBDSV9WRU5ET1JfSUQpICE9IDB4ODA4NiApCj4gICAgICAgICAgcmV0dXJuIDA7 Cj4gIAo+IC0gICAgc3dpdGNoICggcGNpX2NvbmZfcmVhZDE2KDAsIDAsIDB4MWYsIDAsIFBDSV9E RVZJQ0VfSUQpICkgewo+ICsgICAgc3dpdGNoICggcGNpX2NvbmZfcmVhZDE2KFBDSV9TQkRGKDAs IDAsIDB4MWYsIDApLCBQQ0lfREVWSUNFX0lEKSApIHsKPiAgICAgIGNhc2UgMHgzYTE0Ogo+ICAg ICAgY2FzZSAweDNhMTY6Cj4gICAgICBjYXNlIDB4M2ExODoKPiAgICAgIGNhc2UgMHgzYTFhOgo+ IC0gICAgICAgIHBvcnQgPSAocGNpX2NvbmZfcmVhZDE2KDAsIDAsIDB4MWYsIDAsIDB4NDApICYg MHhmZjgwKSArIDB4MzA7Cj4gKyAgICAgICAgcG9ydCA9IChwY2lfY29uZl9yZWFkMTYoUENJX1NC REYoMCwgMCwgMHgxZiwgMCksIDB4NDApICYgMHhmZjgwKSArIDB4MzA7Cj4gICAgICAgICAgc21p Y3RsID0gaW5sKHBvcnQpOwo+ICAgICAgICAgIC8qIHR1cm4gb2ZmIExFR0FDWV9VU0J7LDJ9X0VO IGlmIGVuYWJsZWQgKi8KPiAgICAgICAgICBpZiAoIHNtaWN0bCAmIDB4MjAwMDggKQo+IGRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvbXNpLmMgYi94ZW4vYXJjaC94ODYvbXNpLmMKPiBpbmRleCA2 NzMzOWVkYzY4Li5lZDk4NjI2MWMzIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tc2kuYwo+ ICsrKyBiL3hlbi9hcmNoL3g4Ni9tc2kuYwo+IEBAIC0xMjQsMjkgKzEyNCwyMCBAQCBzdGF0aWMg dm9pZCBtc2l4X3B1dF9maXhtYXAoc3RydWN0IGFyY2hfbXNpeCAqbXNpeCwgaW50IGlkeCkKPiAg Cj4gIHN0YXRpYyBib29sIG1lbW9yeV9kZWNvZGVkKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYp Cj4gIHsKPiAtICAgIHU4IGJ1cywgc2xvdCwgZnVuYzsKPiArICAgIHBjaV9zYmRmX3Qgc2JkZiA9 IGRldi0+c2JkZjsKPiAgCj4gLSAgICBpZiAoICFkZXYtPmluZm8uaXNfdmlydGZuICkKPiAtICAg IHsKPiAtICAgICAgICBidXMgPSBkZXYtPmJ1czsKPiAtICAgICAgICBzbG90ID0gUENJX1NMT1Qo ZGV2LT5kZXZmbik7Cj4gLSAgICAgICAgZnVuYyA9IFBDSV9GVU5DKGRldi0+ZGV2Zm4pOwo+IC0g ICAgfQo+IC0gICAgZWxzZQo+ICsgICAgaWYgKCBkZXYtPmluZm8uaXNfdmlydGZuICkKPiAgICAg IHsKPiAtICAgICAgICBidXMgPSBkZXYtPmluZm8ucGh5c2ZuLmJ1czsKPiAtICAgICAgICBzbG90 ID0gUENJX1NMT1QoZGV2LT5pbmZvLnBoeXNmbi5kZXZmbik7Cj4gLSAgICAgICAgZnVuYyA9IFBD SV9GVU5DKGRldi0+aW5mby5waHlzZm4uZGV2Zm4pOwo+ICsgICAgICAgIHNiZGYuYnVzID0gZGV2 LT5pbmZvLnBoeXNmbi5idXM7Cj4gKyAgICAgICAgc2JkZi5kZXZmbiA9IGRldi0+aW5mby5waHlz Zm4uZGV2Zm47Cj4gICAgICB9Cj4gIAo+IC0gICAgcmV0dXJuICEhKHBjaV9jb25mX3JlYWQxNihk ZXYtPnNlZywgYnVzLCBzbG90LCBmdW5jLCBQQ0lfQ09NTUFORCkgJgo+IC0gICAgICAgICAgICAg IFBDSV9DT01NQU5EX01FTU9SWSk7Cj4gKyAgICByZXR1cm4gcGNpX2NvbmZfcmVhZDE2KHNiZGYs IFBDSV9DT01NQU5EKSAmIFBDSV9DT01NQU5EX01FTU9SWTsKPiAgfQo+ICAKPiAgc3RhdGljIGJv b2wgbXNpeF9tZW1vcnlfZGVjb2RlZChjb25zdCBzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1bnNpZ25l ZCBpbnQgcG9zKQo+ICB7Cj4gLSAgICB1MTYgY29udHJvbCA9IHBjaV9jb25mX3JlYWQxNihkZXYt PnNlZywgZGV2LT5idXMsIFBDSV9TTE9UKGRldi0+ZGV2Zm4pLAo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUENJX0ZVTkMoZGV2LT5kZXZmbiksIG1zaXhfY29udHJvbF9yZWco cG9zKSk7Cj4gKyAgICB1aW50MTZfdCBjb250cm9sID0gcGNpX2NvbmZfcmVhZDE2KGRldi0+c2Jk ZiwgbXNpeF9jb250cm9sX3JlZyhwb3MpKTsKPiAgCj4gICAgICBpZiAoICEoY29udHJvbCAmIFBD SV9NU0lYX0ZMQUdTX0VOQUJMRSkgKQo+ICAgICAgICAgIHJldHVybiBmYWxzZTsKPiBAQCAtMjEx LDE0ICsyMDIsMTIgQEAgc3RhdGljIGJvb2wgcmVhZF9tc2lfbXNnKHN0cnVjdCBtc2lfZGVzYyAq ZW50cnksIHN0cnVjdCBtc2lfbXNnICptc2cpCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICBt c2ctPmFkZHJlc3NfaGkgPSBwY2lfY29uZl9yZWFkMzIoc2VnLCBidXMsIHNsb3QsIGZ1bmMsCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2lfdXBwZXJf YWRkcmVzc19yZWcocG9zKSk7Cj4gLSAgICAgICAgICAgIGRhdGEgPSBwY2lfY29uZl9yZWFkMTYo c2VnLCBidXMsIHNsb3QsIGZ1bmMsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbXNpX2RhdGFfcmVnKHBvcywgMSkpOwo+ICsgICAgICAgICAgICBkYXRhID0gcGNpX2NvbmZf cmVhZDE2KGRldi0+c2JkZiwgbXNpX2RhdGFfcmVnKHBvcywgMSkpOwo+ICAgICAgICAgIH0KPiAg ICAgICAgICBlbHNlCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICBtc2ctPmFkZHJlc3NfaGkg PSAwOwo+IC0gICAgICAgICAgICBkYXRhID0gcGNpX2NvbmZfcmVhZDE2KHNlZywgYnVzLCBzbG90 LCBmdW5jLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zaV9kYXRhX3Jl Zyhwb3MsIDApKTsKPiArICAgICAgICAgICAgZGF0YSA9IHBjaV9jb25mX3JlYWQxNihkZXYtPnNi ZGYsIG1zaV9kYXRhX3JlZyhwb3MsIDApKTsKPiAgICAgICAgICB9Cj4gICAgICAgICAgbXNnLT5k YXRhID0gZGF0YTsKPiAgICAgICAgICBicmVhazsKPiBAQCAtMzM3LDcgKzMyNiw4IEBAIHZvaWQg c2V0X21zaV9hZmZpbml0eShzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MsIGNvbnN0IGNwdW1hc2tfdCAq bWFzaykKPiAgCj4gIHZvaWQgX19tc2lfc2V0X2VuYWJsZSh1MTYgc2VnLCB1OCBidXMsIHU4IHNs b3QsIHU4IGZ1bmMsIGludCBwb3MsIGludCBlbmFibGUpCj4gIHsKPiAtICAgIHUxNiBjb250cm9s ID0gcGNpX2NvbmZfcmVhZDE2KHNlZywgYnVzLCBzbG90LCBmdW5jLCBwb3MgKyBQQ0lfTVNJX0ZM QUdTKTsKPiArICAgIHVpbnQxNl90IGNvbnRyb2wgPSBwY2lfY29uZl9yZWFkMTYoUENJX1NCREYo c2VnLCBidXMsIHNsb3QsIGZ1bmMpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwb3MgKyBQQ0lfTVNJX0ZMQUdTKTsKPiAgCj4gICAgICBjb250cm9sICY9IH5QQ0lf TVNJX0ZMQUdTX0VOQUJMRTsKPiAgICAgIGlmICggZW5hYmxlICkKPiBAQCAtMzY5LDcgKzM1OSw3 IEBAIHN0YXRpYyB2b2lkIG1zaXhfc2V0X2VuYWJsZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQg ZW5hYmxlKQo+ICAgICAgcG9zID0gcGNpX2ZpbmRfY2FwX29mZnNldChzZWcsIGJ1cywgc2xvdCwg ZnVuYywgUENJX0NBUF9JRF9NU0lYKTsKPiAgICAgIGlmICggcG9zICkKPiAgICAgIHsKPiAtICAg ICAgICBjb250cm9sID0gcGNpX2NvbmZfcmVhZDE2KHNlZywgYnVzLCBzbG90LCBmdW5jLCBtc2l4 X2NvbnRyb2xfcmVnKHBvcykpOwo+ICsgICAgICAgIGNvbnRyb2wgPSBwY2lfY29uZl9yZWFkMTYo ZGV2LT5zYmRmLCBtc2l4X2NvbnRyb2xfcmVnKHBvcykpOwo+ICAgICAgICAgIGNvbnRyb2wgJj0g flBDSV9NU0lYX0ZMQUdTX0VOQUJMRTsKPiAgICAgICAgICBpZiAoIGVuYWJsZSApCj4gICAgICAg ICAgICAgIGNvbnRyb2wgfD0gUENJX01TSVhfRkxBR1NfRU5BQkxFOwo+IEBAIC00MTQsNyArNDA0 LDcgQEAgc3RhdGljIGJvb2wgbXNpX3NldF9tYXNrX2JpdChzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2Ms IGJvb2wgaG9zdCwgYm9vbCBndWVzdCkKPiAgICAgICAgICBicmVhazsKPiAgICAgIGNhc2UgUENJ X0NBUF9JRF9NU0lYOgo+ICAgICAgICAgIG1hc2thbGwgPSBwZGV2LT5tc2l4LT5ob3N0X21hc2th bGw7Cj4gLSAgICAgICAgY29udHJvbCA9IHBjaV9jb25mX3JlYWQxNihzZWcsIGJ1cywgc2xvdCwg ZnVuYywKPiArICAgICAgICBjb250cm9sID0gcGNpX2NvbmZfcmVhZDE2KHBkZXYtPnNiZGYsCj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2l4X2NvbnRyb2xfcmVnKGVudHJ5 LT5tc2lfYXR0cmliLnBvcykpOwo+ICAgICAgICAgIGlmICggdW5saWtlbHkoIShjb250cm9sICYg UENJX01TSVhfRkxBR1NfRU5BQkxFKSkgKQo+ICAgICAgICAgIHsKPiBAQCAtNTk0LDggKzU4NCw3 IEBAIGludCBzZXR1cF9tc2lfaXJxKHN0cnVjdCBpcnFfZGVzYyAqZGVzYywgc3RydWN0IG1zaV9k ZXNjICptc2lkZXNjKQo+ICAKPiAgICAgIGlmICggbXNpZGVzYy0+bXNpX2F0dHJpYi50eXBlID09 IFBDSV9DQVBfSURfTVNJWCApCj4gICAgICB7Cj4gLSAgICAgICAgY29udHJvbCA9IHBjaV9jb25m X3JlYWQxNihwZGV2LT5zZWcsIHBkZXYtPmJ1cywgUENJX1NMT1QocGRldi0+ZGV2Zm4pLAo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0ZVTkMocGRldi0+ZGV2Zm4pLCBj cG9zKTsKPiArICAgICAgICBjb250cm9sID0gcGNpX2NvbmZfcmVhZDE2KHBkZXYtPnNiZGYsIGNw b3MpOwo+ICAgICAgICAgIGlmICggIShjb250cm9sICYgUENJX01TSVhfRkxBR1NfRU5BQkxFKSAp Cj4gICAgICAgICAgICAgIHBjaV9jb25mX3dyaXRlMTYocGRldi0+c2VnLCBwZGV2LT5idXMsIFBD SV9TTE9UKHBkZXYtPmRldmZuKSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lf RlVOQyhwZGV2LT5kZXZmbiksIGNwb3MsCj4gQEAgLTY5OCw3ICs2ODcsNyBAQCBzdGF0aWMgaW50 IG1zaV9jYXBhYmlsaXR5X2luaXQoc3RydWN0IHBjaV9kZXYgKmRldiwKPiAgICAgIHBvcyA9IHBj aV9maW5kX2NhcF9vZmZzZXQoc2VnLCBidXMsIHNsb3QsIGZ1bmMsIFBDSV9DQVBfSURfTVNJKTsK PiAgICAgIGlmICggIXBvcyApCj4gICAgICAgICAgcmV0dXJuIC1FTk9ERVY7Cj4gLSAgICBjb250 cm9sID0gcGNpX2NvbmZfcmVhZDE2KHNlZywgYnVzLCBzbG90LCBmdW5jLCBtc2lfY29udHJvbF9y ZWcocG9zKSk7Cj4gKyAgICBjb250cm9sID0gcGNpX2NvbmZfcmVhZDE2KGRldi0+c2JkZiwgbXNp X2NvbnRyb2xfcmVnKHBvcykpOwo+ICAgICAgbWF4dmVjID0gbXVsdGlfbXNpX2NhcGFibGUoY29u dHJvbCk7Cj4gICAgICBpZiAoIG52ZWMgPiBtYXh2ZWMgKQo+ICAgICAgICAgIHJldHVybiBtYXh2 ZWM7Cj4gQEAgLTc2OSwxMyArNzU4LDE0IEBAIHN0YXRpYyB1NjQgcmVhZF9wY2lfbWVtX2Jhcih1 MTYgc2VnLCB1OCBidXMsIHU4IHNsb3QsIHU4IGZ1bmMsIHU4IGJpciwgaW50IHZmKQo+ICAgICAg ICAgIHVuc2lnbmVkIGludCBwb3MgPSBwY2lfZmluZF9leHRfY2FwYWJpbGl0eShzZWcsIGJ1cywK PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJ X0RFVkZOKHNsb3QsIGZ1bmMpLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQQ0lfRVhUX0NBUF9JRF9TUklPVik7Cj4gLSAgICAgICAgdTE2IGN0 cmwgPSBwY2lfY29uZl9yZWFkMTYoc2VnLCBidXMsIHNsb3QsIGZ1bmMsIHBvcyArIFBDSV9TUklP Vl9DVFJMKTsKPiAtICAgICAgICB1MTYgbnVtX3ZmID0gcGNpX2NvbmZfcmVhZDE2KHNlZywgYnVz LCBzbG90LCBmdW5jLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9z ICsgUENJX1NSSU9WX05VTV9WRik7Cj4gLSAgICAgICAgdTE2IG9mZnNldCA9IHBjaV9jb25mX3Jl YWQxNihzZWcsIGJ1cywgc2xvdCwgZnVuYywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBvcyArIFBDSV9TUklPVl9WRl9PRkZTRVQpOwo+IC0gICAgICAgIHUxNiBzdHJp ZGUgPSBwY2lfY29uZl9yZWFkMTYoc2VnLCBidXMsIHNsb3QsIGZ1bmMsCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKyBQQ0lfU1JJT1ZfVkZfU1RSSURFKTsKPiAr ICAgICAgICB1aW50MTZfdCBjdHJsID0gcGNpX2NvbmZfcmVhZDE2KFBDSV9TQkRGKHNlZywgYnVz LCBzbG90LCBmdW5jKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBvcyArIFBDSV9TUklPVl9DVFJMKTsKPiArICAgICAgICB1aW50MTZfdCBudW1fdmYgPSBwY2lf Y29uZl9yZWFkMTYoUENJX1NCREYoc2VnLCBidXMsIHNsb3QsIGZ1bmMpLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKyBQQ0lfU1JJT1ZfTlVNX1ZGKTsK PiArICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBwY2lfY29uZl9yZWFkMTYoUENJX1NCREYoc2Vn LCBidXMsIHNsb3QsIGZ1bmMpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwb3MgKyBQQ0lfU1JJT1ZfVkZfT0ZGU0VUKTsKPiArICAgICAgICB1aW50MTZfdCBz dHJpZGUgPSBwY2lfY29uZl9yZWFkMTYoUENJX1NCREYoc2VnLCBidXMsIHNsb3QsIGZ1bmMpLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKyBQQ0lfU1JJ T1ZfVkZfU1RSSURFKTsKPiAgCj4gICAgICAgICAgaWYgKCAhcGRldiB8fCAhcG9zIHx8Cj4gICAg ICAgICAgICAgICAhKGN0cmwgJiBQQ0lfU1JJT1ZfQ1RSTF9WRkUpIHx8Cj4gQEAgLTg2NCw3ICs4 NTQsNyBAQCBzdGF0aWMgaW50IG1zaXhfY2FwYWJpbGl0eV9pbml0KHN0cnVjdCBwY2lfZGV2ICpk ZXYsCj4gIAo+ICAgICAgQVNTRVJUKHBjaWRldnNfbG9ja2VkKCkpOwo+ICAKPiAtICAgIGNvbnRy b2wgPSBwY2lfY29uZl9yZWFkMTYoc2VnLCBidXMsIHNsb3QsIGZ1bmMsIG1zaXhfY29udHJvbF9y ZWcocG9zKSk7Cj4gKyAgICBjb250cm9sID0gcGNpX2NvbmZfcmVhZDE2KGRldi0+c2JkZiwgbXNp eF9jb250cm9sX3JlZyhwb3MpKTsKPiAgICAgIC8qCj4gICAgICAgKiBFbnN1cmUgTVNJLVggaW50 ZXJydXB0cyBhcmUgbWFza2VkIGR1cmluZyBzZXR1cC4gU29tZSBkZXZpY2VzIHJlcXVpcmUKPiAg ICAgICAqIE1TSS1YIHRvIGJlIGVuYWJsZWQgYmVmb3JlIHdlIGNhbiB0b3VjaCB0aGUgTVNJLVgg cmVnaXN0ZXJzLiBXZSBuZWVkCj4gQEAgLTExMzEsOCArMTEyMSw3IEBAIHN0YXRpYyBpbnQgX19w Y2lfZW5hYmxlX21zaXgoc3RydWN0IG1zaV9pbmZvICptc2ksIHN0cnVjdCBtc2lfZGVzYyAqKmRl c2MpCj4gICAgICBpZiAoICFwZGV2IHx8ICFwb3MgKQo+ICAgICAgICAgIHJldHVybiAtRU5PREVW Owo+ICAKPiAtICAgIGNvbnRyb2wgPSBwY2lfY29uZl9yZWFkMTYobXNpLT5zZWcsIG1zaS0+YnVz LCBzbG90LCBmdW5jLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2l4X2NvbnRy b2xfcmVnKHBvcykpOwo+ICsgICAgY29udHJvbCA9IHBjaV9jb25mX3JlYWQxNihwZGV2LT5zYmRm LCBtc2l4X2NvbnRyb2xfcmVnKHBvcykpOwo+ICAgICAgbnJfZW50cmllcyA9IG11bHRpX21zaXhf Y2FwYWJsZShjb250cm9sKTsKPiAgICAgIGlmICggbXNpLT5lbnRyeV9uciA+PSBucl9lbnRyaWVz ICkKPiAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiBAQCAtMTE3OCw3ICsxMTY3LDcgQEAgc3Rh dGljIHZvaWQgX19wY2lfZGlzYWJsZV9tc2l4KHN0cnVjdCBtc2lfZGVzYyAqZW50cnkpCj4gICAg ICB1OCBmdW5jID0gUENJX0ZVTkMoZGV2LT5kZXZmbik7Cj4gICAgICB1bnNpZ25lZCBpbnQgcG9z ID0gcGNpX2ZpbmRfY2FwX29mZnNldChzZWcsIGJ1cywgc2xvdCwgZnVuYywKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9DQVBfSURfTVNJWCk7Cj4gLSAg ICB1MTYgY29udHJvbCA9IHBjaV9jb25mX3JlYWQxNihzZWcsIGJ1cywgc2xvdCwgZnVuYywKPiAr ICAgIHUxNiBjb250cm9sID0gcGNpX2NvbmZfcmVhZDE2KGRldi0+c2JkZiwKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1zaXhfY29udHJvbF9yZWcoZW50cnktPm1zaV9hdHRy aWIucG9zKSk7Cj4gICAgICBib29sIG1hc2thbGwgPSBkZXYtPm1zaXgtPmhvc3RfbWFza2FsbDsK PiAgCj4gQEAgLTEyMzYsOCArMTIyNSw4IEBAIGludCBwY2lfcHJlcGFyZV9tc2l4KHUxNiBzZWcs IHU4IGJ1cywgdTggZGV2Zm4sIGJvb2wgb2ZmKQo+ICAgICAgfQo+ICAgICAgZWxzZQo+ICAgICAg ewo+IC0gICAgICAgIHUxNiBjb250cm9sID0gcGNpX2NvbmZfcmVhZDE2KHNlZywgYnVzLCBzbG90 LCBmdW5jLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zaXhfY29u dHJvbF9yZWcocG9zKSk7Cj4gKyAgICAgICAgdWludDE2X3QgY29udHJvbCA9IHBjaV9jb25mX3Jl YWQxNihQQ0lfU0JERjMoc2VnLCBidXMsIGRldmZuKSwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1zaXhfY29udHJvbF9yZWcocG9zKSk7Cj4gIAo+ICAgICAg ICAgIHJjID0gbXNpeF9jYXBhYmlsaXR5X2luaXQocGRldiwgcG9zLCBOVUxMLCBOVUxMLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlfbXNpeF9jYXBhYmxlKGNvbnRy b2wpKTsKPiBAQCAtMTMzOCw3ICsxMzI3LDcgQEAgaW50IHBjaV9tc2lfY29uZl93cml0ZV9pbnRl cmNlcHQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCByZWcsCj4gICAgICAgICAg aWYgKCByZWcgPCBlbnRyeS0+bXNpLm1wb3MgfHwgcmVnID49IGVudHJ5LT5tc2kubXBvcyArIDQg fHwgc2l6ZSAhPSA0ICkKPiAgICAgICAgICAgICAgcmV0dXJuIC1FQUNDRVM7Cj4gIAo+IC0gICAg ICAgIGNudGwgPSBwY2lfY29uZl9yZWFkMTYoc2VnLCBidXMsIHNsb3QsIGZ1bmMsIG1zaV9jb250 cm9sX3JlZyhwb3MpKTsKPiArICAgICAgICBjbnRsID0gcGNpX2NvbmZfcmVhZDE2KHBkZXYtPnNi ZGYsIG1zaV9jb250cm9sX3JlZyhwb3MpKTsKPiAgICAgICAgICB1bnVzZWQgPSB+KHVpbnQzMl90 KTAgPj4gKDMyIC0gbXVsdGlfbXNpX2NhcGFibGUoY250bCkpOwo+ICAgICAgICAgIGZvciAoIHBv cyA9IDA7IHBvcyA8IGVudHJ5LT5tc2kubnZlYzsgKytwb3MsICsrZW50cnkgKQo+ICAgICAgICAg IHsKPiBAQCAtMTQxNCw4ICsxNDAzLDcgQEAgaW50IHBjaV9yZXN0b3JlX21zaV9zdGF0ZShzdHJ1 Y3QgcGNpX2RldiAqcGRldikKPiAgICAgICAgICB9Cj4gICAgICAgICAgZWxzZSBpZiAoICF0eXBl ICYmIGVudHJ5LT5tc2lfYXR0cmliLnR5cGUgPT0gUENJX0NBUF9JRF9NU0lYICkKPiAgICAgICAg ICB7Cj4gLSAgICAgICAgICAgIGNvbnRyb2wgPSBwY2lfY29uZl9yZWFkMTYocGRldi0+c2VnLCBw ZGV2LT5idXMsIHNsb3QsIGZ1bmMsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbXNpeF9jb250cm9sX3JlZyhwb3MpKTsKPiArICAgICAgICAgICAgY29udHJvbCA9IHBj aV9jb25mX3JlYWQxNihwZGV2LT5zYmRmLCBtc2l4X2NvbnRyb2xfcmVnKHBvcykpOwo+ICAgICAg ICAgICAgICBwY2lfY29uZl93cml0ZTE2KHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBmdW5j LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zaXhfY29udHJvbF9yZWcocG9zKSwK PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sIHwgKFBDSV9NU0lYX0ZMQUdT X0VOQUJMRSB8Cj4gQEAgLTE0NTcsOCArMTQ0NSw3IEBAIGludCBwY2lfcmVzdG9yZV9tc2lfc3Rh dGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgY3BvcyA9IG1zaV9jb250cm9sX3JlZyhwb3MpOwo+ICAKPiAtICAgICAgICAgICAg Y29udHJvbCA9IHBjaV9jb25mX3JlYWQxNihwZGV2LT5zZWcsIHBkZXYtPmJ1cywgc2xvdCwgZnVu YywgY3BvcykgJgo+IC0gICAgICAgICAgICAgICAgICAgICAgflBDSV9NU0lfRkxBR1NfUVNJWkU7 Cj4gKyAgICAgICAgICAgIGNvbnRyb2wgPSBwY2lfY29uZl9yZWFkMTYocGRldi0+c2JkZiwgY3Bv cykgJiB+UENJX01TSV9GTEFHU19RU0laRTsKPiAgICAgICAgICAgICAgbXVsdGlfbXNpX2VuYWJs ZShjb250cm9sLCBlbnRyeS0+bXNpLm52ZWMpOwo+ICAgICAgICAgICAgICBwY2lfY29uZl93cml0 ZTE2KHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBmdW5jLCBjcG9zLCBjb250cm9sKTsKPiAg Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW1jb25maWctc2hhcmVkLmMgYi94 ZW4vYXJjaC94ODYveDg2XzY0L21tY29uZmlnLXNoYXJlZC5jCj4gaW5kZXggOWUxYzgxZGNkMi4u OWQxZGI1OTBkOSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L21tY29uZmlnLXNo YXJlZC5jCj4gKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9tbWNvbmZpZy1zaGFyZWQuYwo+IEBA IC02NCw3ICs2NCw3IEBAIGN1c3RvbV9wYXJhbSgibW1jZmciLCBwYXJzZV9tbWNmZyk7Cj4gIHN0 YXRpYyBjb25zdCBjaGFyIF9faW5pdCAqcGNpX21tY2ZnX2U3NTIwKHZvaWQpCj4gIHsKPiAgICAg IHUzMiB3aW47Cj4gLSAgICB3aW4gPSBwY2lfY29uZl9yZWFkMTYoMCwgMCwgMCwgMCwgMHhjZSk7 Cj4gKyAgICB3aW4gPSBwY2lfY29uZl9yZWFkMTYoUENJX1NCREYoMCwgMCwgMCwgMCksIDB4Y2Up Owo+ICAKPiAgICAgIHdpbiA9IHdpbiAmIDB4ZjAwMDsKPiAgICAgIGlmKHdpbiA9PSAweDAwMDAg fHwgd2luID09IDB4ZjAwMCkKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82NC9wY2ku YyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvcGNpLmMKPiBpbmRleCBiNzAzODNmYjAzLi5mZTM2YjYw YzUwIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvcGNpLmMKPiArKysgYi94ZW4v YXJjaC94ODYveDg2XzY0L3BjaS5jCj4gQEAgLTI0LDI4ICsyNCwyMyBAQCB1aW50OF90IHBjaV9j b25mX3JlYWQ4KHBjaV9zYmRmX3Qgc2JkZiwgdW5zaWduZWQgaW50IHJlZykKPiAgICAgIHJldHVy biBwY2lfY29uZl9yZWFkKFBDSV9DT05GX0FERFJFU1Moc2JkZiwgcmVnKSwgcmVnICYgMywgMSk7 Cj4gIH0KPiAgCj4gLSN1bmRlZiBQQ0lfQ09ORl9BRERSRVNTCj4gLSNkZWZpbmUgUENJX0NPTkZf QUREUkVTUyhidXMsIGRldiwgZnVuYywgcmVnKSBcCj4gLSAgICAoMHg4MDAwMDAwMCB8IChidXMg PDwgMTYpIHwgKGRldiA8PCAxMSkgfCAoZnVuYyA8PCA4KSB8IChyZWcgJiB+MykpCj4gLQo+IC11 aW50MTZfdCBwY2lfY29uZl9yZWFkMTYoCj4gLSAgICB1bnNpZ25lZCBpbnQgc2VnLCB1bnNpZ25l ZCBpbnQgYnVzLCB1bnNpZ25lZCBpbnQgZGV2LCB1bnNpZ25lZCBpbnQgZnVuYywKPiAtICAgIHVu c2lnbmVkIGludCByZWcpCj4gK3VpbnQxNl90IHBjaV9jb25mX3JlYWQxNihwY2lfc2JkZl90IHNi ZGYsIHVuc2lnbmVkIGludCByZWcpCj4gIHsKPiAtICAgIHUzMiB2YWx1ZTsKPiAtCj4gLSAgICBp ZiAoIHNlZyB8fCByZWcgPiAyNTUgKQo+ICsgICAgaWYgKCBzYmRmLnNlZyB8fCByZWcgPiAyNTUg KQo+ICAgICAgewo+IC0gICAgICAgIHBjaV9tbWNmZ19yZWFkKHNlZywgYnVzLCBQQ0lfREVWRk4o ZGV2LCBmdW5jKSwgcmVnLCAyLCAmdmFsdWUpOwo+ICsgICAgICAgIHVpbnQzMl90IHZhbHVlOwo+ ICsKPiArICAgICAgICBwY2lfbW1jZmdfcmVhZChzYmRmLnNlZywgc2JkZi5idXMsIHNiZGYuZGV2 Zm4sIHJlZywgMiwgJnZhbHVlKTsKPiAgICAgICAgICByZXR1cm4gdmFsdWU7Cj4gICAgICB9Cj4g LSAgICBlbHNlCj4gLSAgICB7Cj4gLSAgICAgICAgQlVHX09OKChidXMgPiAyNTUpIHx8IChkZXYg PiAzMSkgfHwgKGZ1bmMgPiA3KSk7Cj4gLSAgICAgICAgcmV0dXJuIHBjaV9jb25mX3JlYWQoUENJ X0NPTkZfQUREUkVTUyhidXMsIGRldiwgZnVuYywgcmVnKSwgcmVnICYgMiwgMik7Cj4gLSAgICB9 Cj4gKwo+ICsgICAgcmV0dXJuIHBjaV9jb25mX3JlYWQoUENJX0NPTkZfQUREUkVTUyhzYmRmLCBy ZWcpLCByZWcgJiAyLCAyKTsKPiAgfQo+ICAKPiArI3VuZGVmIFBDSV9DT05GX0FERFJFU1MKPiAr I2RlZmluZSBQQ0lfQ09ORl9BRERSRVNTKGJ1cywgZGV2LCBmdW5jLCByZWcpIFwKPiArICAgICgw eDgwMDAwMDAwIHwgKGJ1cyA8PCAxNikgfCAoZGV2IDw8IDExKSB8IChmdW5jIDw8IDgpIHwgKHJl ZyAmIH4zKSkKPiArCj4gIHVpbnQzMl90IHBjaV9jb25mX3JlYWQzMigKPiAgICAgIHVuc2lnbmVk IGludCBzZWcsIHVuc2lnbmVkIGludCBidXMsIHVuc2lnbmVkIGludCBkZXYsIHVuc2lnbmVkIGlu dCBmdW5jLAo+ICAgICAgdW5zaWduZWQgaW50IHJlZykKPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZl cnMvY2hhci9laGNpLWRiZ3AuYyBiL3hlbi9kcml2ZXJzL2NoYXIvZWhjaS1kYmdwLmMKPiBpbmRl eCA3MWYwYWFhNmFjLi42NDI1OGRhMmRjIDEwMDY0NAo+IC0tLSBhL3hlbi9kcml2ZXJzL2NoYXIv ZWhjaS1kYmdwLmMKPiArKysgYi94ZW4vZHJpdmVycy9jaGFyL2VoY2ktZGJncC5jCj4gQEAgLTEw MTYsNyArMTAxNiw3IEBAIHN0YXRpYyB2b2lkIG52aWRpYV9zZXRfZGVidWdfcG9ydChzdHJ1Y3Qg ZWhjaV9kYmdwICpkYmdwLCB1bnNpZ25lZCBpbnQgcG9ydCkKPiAgCj4gIHN0YXRpYyB2b2lkIF9f aW5pdCBkZXRlY3Rfc2V0X2RlYnVnX3BvcnQoc3RydWN0IGVoY2lfZGJncCAqZGJncCkKPiAgewo+ IC0gICAgaWYgKCBwY2lfY29uZl9yZWFkMTYoMCwgZGJncC0+YnVzLCBkYmdwLT5zbG90LCBkYmdw LT5mdW5jLAo+ICsgICAgaWYgKCBwY2lfY29uZl9yZWFkMTYoUENJX1NCREYoMCwgZGJncC0+YnVz LCBkYmdwLT5zbG90LCBkYmdwLT5mdW5jKSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBD SV9WRU5ET1JfSUQpID09IDB4MTBkZSApCj4gICAgICB7Cj4gICAgICAgICAgZGJncF9wcmludGso InVzaW5nIG52aWRpYSBzZXRfZGVidWdfcG9ydFxuIik7Cj4gQEAgLTE0MTYsNyArMTQxNiw4IEBA IHN0YXRpYyB2b2lkIGVoY2lfZGJncF9zdXNwZW5kKHN0cnVjdCBzZXJpYWxfcG9ydCAqcG9ydCkK PiAgICAgIHN0b3BfdGltZXIoJmRiZ3AtPnRpbWVyKTsKPiAgICAgIGRiZ3AtPnRpbWVyLmV4cGly ZXMgPSAwOwo+ICAKPiAtICAgIGRiZ3AtPnBjaV9jciA9IHBjaV9jb25mX3JlYWQxNigwLCBkYmdw LT5idXMsIGRiZ3AtPnNsb3QsIGRiZ3AtPmZ1bmMsCj4gKyAgICBkYmdwLT5wY2lfY3IgPSBwY2lf Y29uZl9yZWFkMTYoUENJX1NCREYoMCwgZGJncC0+YnVzLCBkYmdwLT5zbG90LAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiZ3AtPmZ1bmMpLAo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9DT01NQU5EKTsKPiAgCj4gICAgICBk YmdwLT5zdGF0ZSA9IGRiZ3BfdW5zYWZlOwo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9jaGFy L25zMTY1NTAuYyBiL3hlbi9kcml2ZXJzL2NoYXIvbnMxNjU1MC5jCj4gaW5kZXggNTQ3MjcwZDBl MS4uOTljMTI1NGNhYyAxMDA2NDQKPiAtLS0gYS94ZW4vZHJpdmVycy9jaGFyL25zMTY1NTAuYwo+ ICsrKyBiL3hlbi9kcml2ZXJzL2NoYXIvbnMxNjU1MC5jCj4gQEAgLTg0Niw4ICs4NDYsOCBAQCBz dGF0aWMgdm9pZCBuczE2NTUwX3N1c3BlbmQoc3RydWN0IHNlcmlhbF9wb3J0ICpwb3J0KQo+ICAK PiAgI2lmZGVmIENPTkZJR19IQVNfUENJCj4gICAgICBpZiAoIHVhcnQtPmJhciApCj4gLSAgICAg ICB1YXJ0LT5jciA9IHBjaV9jb25mX3JlYWQxNigwLCB1YXJ0LT5wc19iZGZbMF0sIHVhcnQtPnBz X2JkZlsxXSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVhcnQtPnBzX2Jk ZlsyXSwgUENJX0NPTU1BTkQpOwo+ICsgICAgICAgdWFydC0+Y3IgPSBwY2lfY29uZl9yZWFkMTYo UENJX1NCREYoMCwgdWFydC0+cHNfYmRmWzBdLCB1YXJ0LT5wc19iZGZbMV0sCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1YXJ0LT5wc19iZGZbMl0pLCBQQ0lfQ09NTUFORCk7 Cj4gICNlbmRpZgo+ICB9Cj4gIAo+IEBAIC0xMDY0LDEwICsxMDY0LDEyIEBAIHBjaV91YXJ0X2Nv bmZpZyhzdHJ1Y3QgbnMxNjU1MCAqdWFydCwgYm9vbF90IHNraXBfYW10LCB1bnNpZ25lZCBpbnQg aWR4KQo+ICAgICAgICAgICAgICAgICAgdTY0IHNpemUgPSAwOwo+ICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IG5zMTY1NTBfY29uZmlnX3BhcmFtICpwYXJhbSA9IHVhcnRfcGFyYW07Cj4g IAo+IC0gICAgICAgICAgICAgICAgbmV4dGYgPSAoZiB8fCAocGNpX2NvbmZfcmVhZDE2KDAsIGIs IGQsIGYsIFBDSV9IRUFERVJfVFlQRSkgJgo+ICsgICAgICAgICAgICAgICAgbmV4dGYgPSAoZiB8 fCAocGNpX2NvbmZfcmVhZDE2KFBDSV9TQkRGKDAsIGIsIGQsIGYpLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9IRUFERVJfVFlQRSkgJgo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCkpID8gZiArIDEgOiA4Owo+ICAKPiAt ICAgICAgICAgICAgICAgIHN3aXRjaCAoIHBjaV9jb25mX3JlYWQxNigwLCBiLCBkLCBmLCBQQ0lf Q0xBU1NfREVWSUNFKSApCj4gKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCBwY2lfY29uZl9yZWFk MTYoUENJX1NCREYoMCwgYiwgZCwgZiksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUENJX0NMQVNTX0RFVklDRSkgKQo+ICAgICAgICAgICAgICAgICAgewo+ICAg ICAgICAgICAgICAgICAgY2FzZSAweDA3MDA6IC8qIHNpbmdsZSBwb3J0IHNlcmlhbCAqLwo+ICAg ICAgICAgICAgICAgICAgY2FzZSAweDA3MDI6IC8qIG11bHRpIHBvcnQgc2VyaWFsICovCj4gQEAg LTEwODQsOCArMTA4NiwxMCBAQCBwY2lfdWFydF9jb25maWcoc3RydWN0IG5zMTY1NTAgKnVhcnQs IGJvb2xfdCBza2lwX2FtdCwgdW5zaWduZWQgaW50IGlkeCkKPiAgICAgICAgICAgICAgICAgIC8q IENoZWNrIGZvciBwYXJhbXMgaW4gdWFydF9jb25maWcgbG9va3VwIHRhYmxlICovCj4gICAgICAg ICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUodWFydF9jb25maWcpOyBpKysg KQo+ICAgICAgICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAgICAgICAgIHUxNiB2ZW5kb3Ig PSBwY2lfY29uZl9yZWFkMTYoMCwgYiwgZCwgZiwgUENJX1ZFTkRPUl9JRCk7Cj4gLSAgICAgICAg ICAgICAgICAgICAgdTE2IGRldmljZSA9IHBjaV9jb25mX3JlYWQxNigwLCBiLCBkLCBmLCBQQ0lf REVWSUNFX0lEKTsKPiArICAgICAgICAgICAgICAgICAgICB1MTYgdmVuZG9yID0gcGNpX2NvbmZf cmVhZDE2KFBDSV9TQkRGKDAsIGIsIGQsIGYpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUENJX1ZFTkRPUl9JRCk7Cj4gKyAgICAgICAgICAgICAg ICAgICAgdTE2IGRldmljZSA9IHBjaV9jb25mX3JlYWQxNihQQ0lfU0JERigwLCBiLCBkLCBmKSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9E RVZJQ0VfSUQpOwo+ICAKPiAgICAgICAgICAgICAgICAgICAgICBpZiAoIHVhcnRfY29uZmlnW2ld LnZlbmRvcl9pZCA9PSB2ZW5kb3IgJiYKPiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVhcnRf Y29uZmlnW2ldLmRldl9pZCA9PSBkZXZpY2UgKQo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9hbWQvaW9tbXVfaW5pdC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1k L2lvbW11X2luaXQuYwo+IGluZGV4IDMwZGU2ODRmNmQuLjFiM2U3ZGUxMGQgMTAwNjQ0Cj4gLS0t IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2luaXQuYwo+ICsrKyBiL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9pbml0LmMKPiBAQCAtNzk4LDggKzc5OCw3IEBA IHN0YXRpYyBib29sX3QgX19pbml0IHNldF9pb21tdV9pbnRlcnJ1cHRfaGFuZGxlcihzdHJ1Y3Qg YW1kX2lvbW11ICppb21tdSkKPiAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX1NMT1QoaW9t bXUtPmJkZiksIFBDSV9GVU5DKGlvbW11LT5iZGYpKTsKPiAgICAgICAgICByZXR1cm4gMDsKPiAg ICAgIH0KPiAtICAgIGNvbnRyb2wgPSBwY2lfY29uZl9yZWFkMTYoaW9tbXUtPnNlZywgUENJX0JV Uyhpb21tdS0+YmRmKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX1NMT1Qo aW9tbXUtPmJkZiksIFBDSV9GVU5DKGlvbW11LT5iZGYpLAo+ICsgICAgY29udHJvbCA9IHBjaV9j b25mX3JlYWQxNihQQ0lfU0JERjIoaW9tbXUtPnNlZywgaW9tbXUtPmJkZiksCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlvbW11LT5tc2kubXNpX2F0dHJpYi5wb3MgKyBQQ0lfTVNJ X0ZMQUdTKTsKPiAgICAgIGlvbW11LT5tc2kubXNpLm52ZWMgPSAxOwo+ICAgICAgaWYgKCBpc19t YXNrX2JpdF9zdXBwb3J0KGNvbnRyb2wpICkKPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvYXRzLmggYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hdHMuaAo+IGluZGV4IGJl ZTEzOTExYzAuLjIyYWUyMDliMzcgMTAwNjQ0Cj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvYXRzLmgKPiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hdHMuaAo+IEBAIC0zNSw4 ICszNSw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IHBjaV9hdHNfZW5hYmxlZChpbnQgc2VnLCBpbnQg YnVzLCBpbnQgZGV2Zm4pCj4gICAgICBwb3MgPSBwY2lfZmluZF9leHRfY2FwYWJpbGl0eShzZWcs IGJ1cywgZGV2Zm4sIFBDSV9FWFRfQ0FQX0lEX0FUUyk7Cj4gICAgICBCVUdfT04oIXBvcyk7Cj4g IAo+IC0gICAgdmFsdWUgPSBwY2lfY29uZl9yZWFkMTYoc2VnLCBidXMsIFBDSV9TTE9UKGRldmZu KSwgUENJX0ZVTkMoZGV2Zm4pLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zICsg QVRTX1JFR19DVEwpOwo+ICsgICAgdmFsdWUgPSBwY2lfY29uZl9yZWFkMTYoUENJX1NCREYzKHNl ZywgYnVzLCBkZXZmbiksIHBvcyArIEFUU19SRUdfQ1RMKTsKPiArCj4gICAgICByZXR1cm4gdmFs dWUgJiBBVFNfRU5BQkxFOwo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC9wY2kuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jCj4gaW5kZXggMzQw ZTk1Nzk1NC4uNzAzMDU2ZjdiOSAxMDA2NDQKPiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9wY2kuYwo+ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jCj4gQEAgLTI0Niwx MSArMjQ2LDExIEBAIHN0YXRpYyB2b2lkIGNoZWNrX3BkZXYoY29uc3Qgc3RydWN0IHBjaV9kZXYg KnBkZXYpCj4gIAo+ICAgICAgaWYgKCBjb21tYW5kX21hc2sgKQo+ICAgICAgewo+IC0gICAgICAg IHZhbCA9IHBjaV9jb25mX3JlYWQxNihzZWcsIGJ1cywgZGV2LCBmdW5jLCBQQ0lfQ09NTUFORCk7 Cj4gKyAgICAgICAgdmFsID0gcGNpX2NvbmZfcmVhZDE2KHBkZXYtPnNiZGYsIFBDSV9DT01NQU5E KTsKPiAgICAgICAgICBpZiAoIHZhbCAmIGNvbW1hbmRfbWFzayApCj4gICAgICAgICAgICAgIHBj aV9jb25mX3dyaXRlMTYoc2VnLCBidXMsIGRldiwgZnVuYywgUENJX0NPTU1BTkQsCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdmFsICYgfmNvbW1hbmRfbWFzayk7Cj4gLSAgICAgICAg dmFsID0gcGNpX2NvbmZfcmVhZDE2KHNlZywgYnVzLCBkZXYsIGZ1bmMsIFBDSV9TVEFUVVMpOwo+ ICsgICAgICAgIHZhbCA9IHBjaV9jb25mX3JlYWQxNihwZGV2LT5zYmRmLCBQQ0lfU1RBVFVTKTsK PiAgICAgICAgICBpZiAoIHZhbCAmIFBDSV9TVEFUVVNfQ0hFQ0sgKQo+ICAgICAgICAgIHsKPiAg ICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZPICIlMDR4OiUwMng6JTAyeC4ldSBzdGF0dXMg JTA0eCAtPiAlMDR4XG4iLAo+IEBAIC0yNjUsMTEgKzI2NSwxMSBAQCBzdGF0aWMgdm9pZCBjaGVj a19wZGV2KGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2KQo+ICAgICAgY2FzZSBQQ0lfSEVBREVS X1RZUEVfQlJJREdFOgo+ICAgICAgICAgIGlmICggIWJyaWRnZV9jdGxfbWFzayApCj4gICAgICAg ICAgICAgIGJyZWFrOwo+IC0gICAgICAgIHZhbCA9IHBjaV9jb25mX3JlYWQxNihzZWcsIGJ1cywg ZGV2LCBmdW5jLCBQQ0lfQlJJREdFX0NPTlRST0wpOwo+ICsgICAgICAgIHZhbCA9IHBjaV9jb25m X3JlYWQxNihwZGV2LT5zYmRmLCBQQ0lfQlJJREdFX0NPTlRST0wpOwo+ICAgICAgICAgIGlmICgg dmFsICYgYnJpZGdlX2N0bF9tYXNrICkKPiAgICAgICAgICAgICAgcGNpX2NvbmZfd3JpdGUxNihz ZWcsIGJ1cywgZGV2LCBmdW5jLCBQQ0lfQlJJREdFX0NPTlRST0wsCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdmFsICYgfmJyaWRnZV9jdGxfbWFzayk7Cj4gLSAgICAgICAgdmFsID0g cGNpX2NvbmZfcmVhZDE2KHNlZywgYnVzLCBkZXYsIGZ1bmMsIFBDSV9TRUNfU1RBVFVTKTsKPiAr ICAgICAgICB2YWwgPSBwY2lfY29uZl9yZWFkMTYocGRldi0+c2JkZiwgUENJX1NFQ19TVEFUVVMp Owo+ICAgICAgICAgIGlmICggdmFsICYgUENJX1NUQVRVU19DSEVDSyApCj4gICAgICAgICAgewo+ ICAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0lORk8KPiBAQCAtMjg5LDEyICsyODksOCBAQCBz dGF0aWMgdm9pZCBjaGVja19wZGV2KGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2KQo+ICAKPiAg c3RhdGljIHZvaWQgYXBwbHlfcXVpcmtzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQo+ICB7Cj4gLSAg ICB1aW50MTZfdCB2ZW5kb3IgPSBwY2lfY29uZl9yZWFkMTYocGRldi0+c2VnLCBwZGV2LT5idXMs Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX1NMT1QocGRldi0+ ZGV2Zm4pLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9GVU5D KHBkZXYtPmRldmZuKSwgUENJX1ZFTkRPUl9JRCk7Cj4gLSAgICB1aW50MTZfdCBkZXZpY2UgPSBw Y2lfY29uZl9yZWFkMTYocGRldi0+c2VnLCBwZGV2LT5idXMsCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUENJX1NMT1QocGRldi0+ZGV2Zm4pLAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9GVU5DKHBkZXYtPmRldmZuKSwgUENJX0RF VklDRV9JRCk7Cj4gKyAgICB1aW50MTZfdCB2ZW5kb3IgPSBwY2lfY29uZl9yZWFkMTYocGRldi0+ c2JkZiwgUENJX1ZFTkRPUl9JRCk7Cj4gKyAgICB1aW50MTZfdCBkZXZpY2UgPSBwY2lfY29uZl9y ZWFkMTYocGRldi0+c2JkZiwgUENJX0RFVklDRV9JRCk7Cj4gICAgICBzdGF0aWMgY29uc3Qgc3Ry dWN0IHsKPiAgICAgICAgICB1aW50MTZfdCB2ZW5kb3IsIGRldmljZTsKPiAgICAgIH0gaWdub3Jl X2JhcnNbXSA9IHsKPiBAQCAtMzg3LDggKzM4Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGNpX2RldiAq YWxsb2NfcGRldihzdHJ1Y3QgcGNpX3NlZyAqcHNlZywgdTggYnVzLCB1OCBkZXZmbikKPiAgICAg ICAgICAgICAgcG9zID0gcGNpX2ZpbmRfY2FwX29mZnNldChwc2VnLT5uciwgYnVzLCBQQ0lfU0xP VChkZXZmbiksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0ZV TkMoZGV2Zm4pLCBQQ0lfQ0FQX0lEX0VYUCk7Cj4gICAgICAgICAgICAgIEJVR19PTighcG9zKTsK PiAtICAgICAgICAgICAgY2FwID0gcGNpX2NvbmZfcmVhZDE2KHBzZWctPm5yLCBidXMsIFBDSV9T TE9UKGRldmZuKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9GVU5D KGRldmZuKSwgcG9zICsgUENJX0VYUF9ERVZDQVApOwo+ICsgICAgICAgICAgICBjYXAgPSBwY2lf Y29uZl9yZWFkMTYocGRldi0+c2JkZiwgcG9zICsgUENJX0VYUF9ERVZDQVApOwo+ICAgICAgICAg ICAgICBpZiAoIGNhcCAmIFBDSV9FWFBfREVWQ0FQX1BIQU5UT00gKQo+ICAgICAgICAgICAgICB7 Cj4gICAgICAgICAgICAgICAgICBwZGV2LT5waGFudG9tX3N0cmlkZSA9IDggPj4gTUFTS19FWFRS KGNhcCwKPiBAQCAtNjExLDggKzYwNiw4IEBAIHN0YXRpYyB2b2lkIHBjaV9lbmFibGVfYWNzKHN0 cnVjdCBwY2lfZGV2ICpwZGV2KQo+ICAgICAgaWYgKCFwb3MpCj4gICAgICAgICAgcmV0dXJuOwo+ ICAKPiAtICAgIGNhcCA9IHBjaV9jb25mX3JlYWQxNihzZWcsIGJ1cywgZGV2LCBmdW5jLCBwb3Mg KyBQQ0lfQUNTX0NBUCk7Cj4gLSAgICBjdHJsID0gcGNpX2NvbmZfcmVhZDE2KHNlZywgYnVzLCBk ZXYsIGZ1bmMsIHBvcyArIFBDSV9BQ1NfQ1RSTCk7Cj4gKyAgICBjYXAgPSBwY2lfY29uZl9yZWFk MTYocGRldi0+c2JkZiwgcG9zICsgUENJX0FDU19DQVApOwo+ICsgICAgY3RybCA9IHBjaV9jb25m X3JlYWQxNihwZGV2LT5zYmRmLCBwb3MgKyBQQ0lfQUNTX0NUUkwpOwo+ICAKPiAgICAgIC8qIFNv dXJjZSBWYWxpZGF0aW9uICovCj4gICAgICBjdHJsIHw9IChjYXAgJiBQQ0lfQUNTX1NWKTsKPiBA QCAtNzQzLDcgKzczOCw3IEBAIGludCBwY2lfYWRkX2RldmljZSh1MTYgc2VnLCB1OCBidXMsIHU4 IGRldmZuLAo+ICAgICAgewo+ICAgICAgICAgIHVuc2lnbmVkIGludCBwb3MgPSBwY2lfZmluZF9l eHRfY2FwYWJpbGl0eShzZWcsIGJ1cywgZGV2Zm4sCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9FWFRfQ0FQX0lEX1NSSU9WKTsKPiAtICAg ICAgICB1MTYgY3RybCA9IHBjaV9jb25mX3JlYWQxNihzZWcsIGJ1cywgc2xvdCwgZnVuYywgcG9z ICsgUENJX1NSSU9WX0NUUkwpOwo+ICsgICAgICAgIHUxNiBjdHJsID0gcGNpX2NvbmZfcmVhZDE2 KHBkZXYtPnNiZGYsIHBvcyArIFBDSV9TUklPVl9DVFJMKTsKPiAgCj4gICAgICAgICAgaWYgKCAh cG9zICkKPiAgICAgICAgICAgICAgLyogTm90aGluZyAqLzsKPiBAQCAtOTM3LDEzICs5MzIsMTMg QEAgZW51bSBwZGV2X3R5cGUgcGRldl90eXBlKHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4pCj4g ICAgICB1OCBkID0gUENJX1NMT1QoZGV2Zm4pLCBmID0gUENJX0ZVTkMoZGV2Zm4pOwo+ICAgICAg aW50IHBvcyA9IHBjaV9maW5kX2NhcF9vZmZzZXQoc2VnLCBidXMsIGQsIGYsIFBDSV9DQVBfSURf RVhQKTsKPiAgCj4gLSAgICBjbGFzc19kZXZpY2UgPSBwY2lfY29uZl9yZWFkMTYoc2VnLCBidXMs IGQsIGYsIFBDSV9DTEFTU19ERVZJQ0UpOwo+ICsgICAgY2xhc3NfZGV2aWNlID0gcGNpX2NvbmZf cmVhZDE2KFBDSV9TQkRGKHNlZywgYnVzLCBkLCBmKSwgUENJX0NMQVNTX0RFVklDRSk7Cj4gICAg ICBzd2l0Y2ggKCBjbGFzc19kZXZpY2UgKQo+ICAgICAgewo+ICAgICAgY2FzZSBQQ0lfQ0xBU1Nf QlJJREdFX1BDSToKPiAgICAgICAgICBpZiAoICFwb3MgKQo+ICAgICAgICAgICAgICByZXR1cm4g REVWX1RZUEVfTEVHQUNZX1BDSV9CUklER0U7Cj4gLSAgICAgICAgY3JlZyA9IHBjaV9jb25mX3Jl YWQxNihzZWcsIGJ1cywgZCwgZiwgcG9zICsgUENJX0VYUF9GTEFHUyk7Cj4gKyAgICAgICAgY3Jl ZyA9IHBjaV9jb25mX3JlYWQxNihQQ0lfU0JERihzZWcsIGJ1cywgZCwgZiksIHBvcyArIFBDSV9F WFBfRkxBR1MpOwo+ICAgICAgICAgIHN3aXRjaCAoIChjcmVnICYgUENJX0VYUF9GTEFHU19UWVBF KSA+PiA0ICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgY2FzZSBQQ0lfRVhQX1RZUEVfUENJX0JS SURHRToKPiBAQCAtMTA0MCw4ICsxMDM1LDcgQEAgdm9pZCBwY2lfY2hlY2tfZGlzYWJsZV9kZXZp Y2UodTE2IHNlZywgdTggYnVzLCB1OCBkZXZmbikKPiAgICAgIC8qIFRlbGwgdGhlIGRldmljZSB0 byBzdG9wIERNQWluZzsgd2UgY2FuJ3QgcmVseSBvbiB0aGUgZ3Vlc3QgdG8KPiAgICAgICAqIGNv bnRyb2wgaXQgZm9yIHVzLiAqLwo+ICAgICAgZGV2Zm4gPSBwZGV2LT5kZXZmbjsKPiAtICAgIGN3 b3JkID0gcGNpX2NvbmZfcmVhZDE2KHNlZywgYnVzLCBQQ0lfU0xPVChkZXZmbiksIFBDSV9GVU5D KGRldmZuKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9DT01NQU5EKTsKPiAr ICAgIGN3b3JkID0gcGNpX2NvbmZfcmVhZDE2KHBkZXYtPnNiZGYsIFBDSV9DT01NQU5EKTsKPiAg ICAgIHBjaV9jb25mX3dyaXRlMTYoc2VnLCBidXMsIFBDSV9TTE9UKGRldmZuKSwgUENJX0ZVTkMo ZGV2Zm4pLAo+ICAgICAgICAgICAgICAgICAgICAgICBQQ0lfQ09NTUFORCwgY3dvcmQgJiB+UENJ X0NPTU1BTkRfTUFTVEVSKTsKPiAgfQo+IEBAIC0xMjA5LDEwICsxMjAzLDcgQEAgc3RhdGljIGJv b2xfdCBoZXN0X21hdGNoX3R5cGUoY29uc3Qgc3RydWN0IGFjcGlfaGVzdF9oZWFkZXIgKmhlc3Rf aGRyLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX1NM T1QocGRldi0+ZGV2Zm4pLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUENJX0ZVTkMocGRldi0+ZGV2Zm4pLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUENJX0NBUF9JRF9FWFApOwo+IC0gICAgdTggcGNpZSA9IE1BU0tf RVhUUihwY2lfY29uZl9yZWFkMTYocGRldi0+c2VnLCBwZGV2LT5idXMsCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfU0xPVChwZGV2LT5kZXZmbiksCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfRlVOQyhwZGV2LT5kZXZm biksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKyBQQ0lf RVhQX0ZMQUdTKSwKPiArICAgIHU4IHBjaWUgPSBNQVNLX0VYVFIocGNpX2NvbmZfcmVhZDE2KHBk ZXYtPnNiZGYsIHBvcyArIFBDSV9FWFBfRkxBR1MpLAo+ICAgICAgICAgICAgICAgICAgICAgICAg ICBQQ0lfRVhQX0ZMQUdTX1RZUEUpOwo+ICAKPiAgICAgIHN3aXRjaCAoIGhlc3RfaGRyLT50eXBl ICkKPiBAQCAtMTIyMiw4ICsxMjEzLDcgQEAgc3RhdGljIGJvb2xfdCBoZXN0X21hdGNoX3R5cGUo Y29uc3Qgc3RydWN0IGFjcGlfaGVzdF9oZWFkZXIgKmhlc3RfaGRyLAo+ICAgICAgY2FzZSBBQ1BJ X0hFU1RfVFlQRV9BRVJfRU5EUE9JTlQ6Cj4gICAgICAgICAgcmV0dXJuIHBjaWUgPT0gUENJX0VY UF9UWVBFX0VORFBPSU5UOwo+ICAgICAgY2FzZSBBQ1BJX0hFU1RfVFlQRV9BRVJfQlJJREdFOgo+ IC0gICAgICAgIHJldHVybiBwY2lfY29uZl9yZWFkMTYocGRldi0+c2VnLCBwZGV2LT5idXMsIFBD SV9TTE9UKHBkZXYtPmRldmZuKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBD SV9GVU5DKHBkZXYtPmRldmZuKSwgUENJX0NMQVNTX0RFVklDRSkgPT0KPiArICAgICAgICByZXR1 cm4gcGNpX2NvbmZfcmVhZDE2KHBkZXYtPnNiZGYsIFBDSV9DTEFTU19ERVZJQ0UpID09Cj4gICAg ICAgICAgICAgICAgIFBDSV9DTEFTU19CUklER0VfUENJOwo+ICAgICAgfQo+ICAKPiBkaWZmIC0t Z2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3F1aXJrcy5jIGIveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvdnRkL3F1aXJrcy5jCj4gaW5kZXggZmY3M2IwZTdmNC4uNDc1OTdjOTYwMCAx MDA2NDQKPiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvcXVpcmtzLmMKPiArKysg Yi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvcXVpcmtzLmMKPiBAQCAtNzQsNyArNzQsNyBA QCBpbnQgaXNfaWdkX3Z0X2VuYWJsZWRfcXVpcmsodm9pZCkKPiAgICAgICAgICByZXR1cm4gMTsK PiAgCj4gICAgICAvKiBpbnRlZ3JhdGVkIGdyYXBoaWNzIG9uIEludGVsIHBsYXRmb3JtcyBpcyBs b2NhdGVkIGF0IDA6Mi4wICovCj4gLSAgICBnZ2MgPSBwY2lfY29uZl9yZWFkMTYoMCwgMCwgSUdE X0RFViwgMCwgR0dDKTsKPiArICAgIGdnYyA9IHBjaV9jb25mX3JlYWQxNihQQ0lfU0JERigwLCAw LCBJR0RfREVWLCAwKSwgR0dDKTsKPiAgICAgIHJldHVybiAoIGdnYyAmIEdHQ19NRU1PUllfVlRf RU5BQkxFRCA/IDEgOiAwICk7Cj4gIH0KPiAgCj4gQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHZv aWQgX19pbml0IGNhbnRpZ2FfYjNfZXJyYXRhX2luaXQodm9pZCkKPiAgICAgIHUxNiB2aWQ7Cj4g ICAgICB1OCBkaWRfaGksIHJpZDsKPiAgCj4gLSAgICB2aWQgPSBwY2lfY29uZl9yZWFkMTYoMCwg MCwgSUdEX0RFViwgMCwgMCk7Cj4gKyAgICB2aWQgPSBwY2lfY29uZl9yZWFkMTYoUENJX1NCREYo MCwgMCwgSUdEX0RFViwgMCksIDApOwo+ICAgICAgaWYgKCB2aWQgIT0gMHg4MDg2ICkKPiAgICAg ICAgICByZXR1cm47Cj4gIAo+IEBAIC00MjQsMTEgKzQyNCwxMCBAQCB2b2lkIHBjaV92dGRfcXVp cmsoY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYpCj4gICAgICBwYWRkcl90IHBhOwo+ICAgICAg Y29uc3QgY2hhciAqYWN0aW9uOwo+ICAKPiAtICAgIGlmICggcGNpX2NvbmZfcmVhZDE2KHNlZywg YnVzLCBkZXYsIGZ1bmMsIFBDSV9WRU5ET1JfSUQpICE9Cj4gLSAgICAgICAgIFBDSV9WRU5ET1Jf SURfSU5URUwgKQo+ICsgICAgaWYgKCBwY2lfY29uZl9yZWFkMTYocGRldi0+c2JkZiwgUENJX1ZF TkRPUl9JRCkgIT0gUENJX1ZFTkRPUl9JRF9JTlRFTCApCj4gICAgICAgICAgcmV0dXJuOwo+ICAK PiAtICAgIHN3aXRjaCAoIHBjaV9jb25mX3JlYWQxNihzZWcsIGJ1cywgZGV2LCBmdW5jLCBQQ0lf REVWSUNFX0lEKSApCj4gKyAgICBzd2l0Y2ggKCBwY2lfY29uZl9yZWFkMTYocGRldi0+c2JkZiwg UENJX0RFVklDRV9JRCkgKQo+ICAgICAgewo+ICAgICAgLyoKPiAgICAgICAqIE1hc2sgcmVwb3J0 aW5nIEludGVsIFZULWQgZmF1bHRzIHRvIElPSCBjb3JlIGxvZ2ljOgo+IGRpZmYgLS1naXQgYS94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvYXRzLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC94ODYvYXRzLmMKPiBpbmRleCA1OWMxNjM0NTlhLi5jYjAyMmM1OThhIDEwMDY0NAo+IC0tLSBh L3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9hdHMuYwo+ICsrKyBiL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL3g4Ni9hdHMuYwo+IEBAIC0zNCw4ICszNCw3IEBAIGludCBlbmFibGVfYXRzX2Rl dmljZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IGxpc3RfaGVhZCAqYXRzX2xpc3QpCj4g ICAgICAgICAgZHByaW50ayhYRU5MT0dfSU5GTywgIiUwNHg6JTAyeDolMDJ4LiV1OiBBVFMgY2Fw YWJpbGl0eSBmb3VuZFxuIiwKPiAgICAgICAgICAgICAgICAgIHNlZywgYnVzLCBQQ0lfU0xPVChk ZXZmbiksIFBDSV9GVU5DKGRldmZuKSk7Cj4gIAo+IC0gICAgdmFsdWUgPSBwY2lfY29uZl9yZWFk MTYoc2VnLCBidXMsIFBDSV9TTE9UKGRldmZuKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFBDSV9GVU5DKGRldmZuKSwgcG9zICsgQVRTX1JFR19DVEwpOwo+ICsgICAgdmFsdWUgPSBw Y2lfY29uZl9yZWFkMTYocGRldi0+c2JkZiwgcG9zICsgQVRTX1JFR19DVEwpOwo+ICAgICAgaWYg KCB2YWx1ZSAmIEFUU19FTkFCTEUgKQo+ICAgICAgewo+ICAgICAgICAgIHN0cnVjdCBwY2lfZGV2 ICpvdGhlcjsKPiBAQCAtNTgsOCArNTcsNyBAQCBpbnQgZW5hYmxlX2F0c19kZXZpY2Uoc3RydWN0 IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmF0c19saXN0KQo+ICAgICAgaWYgKCBw b3MgKQo+ICAgICAgewo+ICAgICAgICAgIHBkZXYtPmF0cy5jYXBfcG9zID0gcG9zOwo+IC0gICAg ICAgIHZhbHVlID0gcGNpX2NvbmZfcmVhZDE2KHNlZywgYnVzLCBQQ0lfU0xPVChkZXZmbiksCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0ZVTkMoZGV2Zm4pLCBwb3MgKyBB VFNfUkVHX0NBUCk7Cj4gKyAgICAgICAgdmFsdWUgPSBwY2lfY29uZl9yZWFkMTYocGRldi0+c2Jk ZiwgcG9zICsgQVRTX1JFR19DQVApOwo+ICAgICAgICAgIHBkZXYtPmF0cy5xdWV1ZV9kZXB0aCA9 IHZhbHVlICYgQVRTX1FVRVVFX0RFUFRIX01BU0sgPzoKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBBVFNfUVVFVUVfREVQVEhfTUFTSyArIDE7Cj4gICAgICAgICAgbGlzdF9hZGQo JnBkZXYtPmF0cy5saXN0LCBhdHNfbGlzdCk7Cj4gQEAgLTgxLDggKzc5LDcgQEAgdm9pZCBkaXNh YmxlX2F0c19kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYpCj4gIAo+ICAgICAgQlVHX09OKCFw ZGV2LT5hdHMuY2FwX3Bvcyk7Cj4gIAo+IC0gICAgdmFsdWUgPSBwY2lfY29uZl9yZWFkMTYoc2Vn LCBidXMsIFBDSV9TTE9UKGRldmZuKSwgUENJX0ZVTkMoZGV2Zm4pLAo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGRldi0+YXRzLmNhcF9wb3MgKyBBVFNfUkVHX0NUTCk7Cj4gKyAgICB2 YWx1ZSA9IHBjaV9jb25mX3JlYWQxNihwZGV2LT5zYmRmLCBwZGV2LT5hdHMuY2FwX3BvcyArIEFU U19SRUdfQ1RMKTsKPiAgICAgIHZhbHVlICY9IH5BVFNfRU5BQkxFOwo+ICAgICAgcGNpX2NvbmZf d3JpdGUxNihzZWcsIGJ1cywgUENJX1NMT1QoZGV2Zm4pLCBQQ0lfRlVOQyhkZXZmbiksCj4gICAg ICAgICAgICAgICAgICAgICAgIHBkZXYtPmF0cy5jYXBfcG9zICsgQVRTX1JFR19DVEwsIHZhbHVl KTsKPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGNpL3BjaS5jIGIveGVuL2RyaXZlcnMvcGNp L3BjaS5jCj4gaW5kZXggZTNmODgzZmM1Yy4uNWU1ZTBmMDUzOCAxMDA2NDQKPiAtLS0gYS94ZW4v ZHJpdmVycy9wY2kvcGNpLmMKPiArKysgYi94ZW4vZHJpdmVycy9wY2kvcGNpLmMKPiBAQCAtMTUs NyArMTUsNyBAQCBpbnQgcGNpX2ZpbmRfY2FwX29mZnNldCh1MTYgc2VnLCB1OCBidXMsIHU4IGRl diwgdTggZnVuYywgdTggY2FwKQo+ICAgICAgdTggcG9zID0gUENJX0NBUEFCSUxJVFlfTElTVDsK PiAgICAgIHUxNiBzdGF0dXM7Cj4gIAo+IC0gICAgc3RhdHVzID0gcGNpX2NvbmZfcmVhZDE2KHNl ZywgYnVzLCBkZXYsIGZ1bmMsIFBDSV9TVEFUVVMpOwo+ICsgICAgc3RhdHVzID0gcGNpX2NvbmZf cmVhZDE2KFBDSV9TQkRGKHNlZywgYnVzLCBkZXYsIGZ1bmMpLCBQQ0lfU1RBVFVTKTsKPiAgICAg IGlmICggKHN0YXR1cyAmIFBDSV9TVEFUVVNfQ0FQX0xJU1QpID09IDAgKQo+ICAgICAgICAgIHJl dHVybiAwOwo+ICAKPiBAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgcGNpX2ludHgoY29uc3Qgc3Ry dWN0IHBjaV9kZXYgKnBkZXYsIGJvb2wgZW5hYmxlKQo+ICAgICAgdWludDhfdCBidXMgPSBwZGV2 LT5idXM7Cj4gICAgICB1aW50OF90IHNsb3QgPSBQQ0lfU0xPVChwZGV2LT5kZXZmbik7Cj4gICAg ICB1aW50OF90IGZ1bmMgPSBQQ0lfRlVOQyhwZGV2LT5kZXZmbik7Cj4gLSAgICB1aW50MTZfdCBj bWQgPSBwY2lfY29uZl9yZWFkMTYoc2VnLCBidXMsIHNsb3QsIGZ1bmMsIFBDSV9DT01NQU5EKTsK PiArICAgIHVpbnQxNl90IGNtZCA9IHBjaV9jb25mX3JlYWQxNihwZGV2LT5zYmRmLCBQQ0lfQ09N TUFORCk7Cj4gIAo+ICAgICAgaWYgKCBlbmFibGUgKQo+ICAgICAgICAgIGNtZCAmPSB+UENJX0NP TU1BTkRfSU5UWF9ESVNBQkxFOwo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy92aWRlby92Z2Eu YyBiL3hlbi9kcml2ZXJzL3ZpZGVvL3ZnYS5jCj4gaW5kZXggNzg1MzNhZDBiMS4uNDU0NDU3YWRl OCAxMDA2NDQKPiAtLS0gYS94ZW4vZHJpdmVycy92aWRlby92Z2EuYwo+ICsrKyBiL3hlbi9kcml2 ZXJzL3ZpZGVvL3ZnYS5jCj4gQEAgLTEyMSwxMCArMTIxLDkgQEAgdm9pZCBfX2luaXQgdmlkZW9f ZW5kYm9vdCh2b2lkKQo+ICAgICAgICAgICAgICAgICAgcGNpZGV2c191bmxvY2soKTsKPiAgCj4g ICAgICAgICAgICAgICAgICBpZiAoICFwZGV2IHx8Cj4gLSAgICAgICAgICAgICAgICAgICAgIHBj aV9jb25mX3JlYWQxNigwLCBidXMsIFBDSV9TTE9UKGRldmZuKSwgUENJX0ZVTkMoZGV2Zm4pLAo+ ICsgICAgICAgICAgICAgICAgICAgICBwY2lfY29uZl9yZWFkMTYoUENJX1NCREYzKDAsIGJ1cywg ZGV2Zm4pLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0NMQVNT X0RFVklDRSkgIT0gMHgwMzAwIHx8Cj4gLSAgICAgICAgICAgICAgICAgICAgICEocGNpX2NvbmZf cmVhZDE2KDAsIGJ1cywgUENJX1NMT1QoZGV2Zm4pLAo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQQ0lfRlVOQyhkZXZmbiksIFBDSV9DT01NQU5EKSAmCj4gKyAgICAg ICAgICAgICAgICAgICAgICEocGNpX2NvbmZfcmVhZDE2KFBDSV9TQkRGMygwLCBidXMsIGRldmZu KSwgUENJX0NPTU1BTkQpICYKPiAgICAgICAgICAgICAgICAgICAgICAgICAoUENJX0NPTU1BTkRf SU8gfCBQQ0lfQ09NTUFORF9NRU1PUlkpKSApCj4gICAgICAgICAgICAgICAgICAgICAgY29udGlu dWU7Cj4gIAo+IEBAIC0xNDEsOCArMTQwLDcgQEAgdm9pZCBfX2luaXQgdmlkZW9fZW5kYm9vdCh2 b2lkKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICB7Cj4gICAgICAgICAgICAgICAgICAgICAg ICAgIGNhc2UgUENJX0hFQURFUl9UWVBFX0JSSURHRToKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgY2FzZSBQQ0lfSEVBREVSX1RZUEVfQ0FSREJVUzoKPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmICggcGNpX2NvbmZfcmVhZDE2KDAsIGIsIFBDSV9TTE9UKGRmKSwKPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9GVU5DKGRmKSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcGNpX2NvbmZfcmVhZDE2KFBDSV9T QkRGMygwLCBiLCBkZiksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQQ0lfQlJJREdFX0NPTlRST0wpICYKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUENJX0JSSURHRV9DVExfVkdBICkKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb250aW51ZTsKPiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvdnBjaS9oZWFk ZXIuYyBiL3hlbi9kcml2ZXJzL3ZwY2kvaGVhZGVyLmMKPiBpbmRleCA1NjRjN2I2YTdkLi4wYjE3 NmI0OTBhIDEwMDY0NAo+IC0tLSBhL3hlbi9kcml2ZXJzL3ZwY2kvaGVhZGVyLmMKPiArKysgYi94 ZW4vZHJpdmVycy92cGNpL2hlYWRlci5jCj4gQEAgLTMzNiw4ICszMzYsNyBAQCBzdGF0aWMgdm9p ZCBjbWRfd3JpdGUoY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCByZWcs Cj4gICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjbWQsIHZvaWQgKmRhdGEpCj4gIHsK PiAgICAgIHVpbnQ4X3Qgc2xvdCA9IFBDSV9TTE9UKHBkZXYtPmRldmZuKSwgZnVuYyA9IFBDSV9G VU5DKHBkZXYtPmRldmZuKTsKPiAtICAgIHVpbnQxNl90IGN1cnJlbnRfY21kID0gcGNpX2NvbmZf cmVhZDE2KHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBmdW5jLAo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnKTsKPiArICAgIHVpbnQxNl90IGN1cnJl bnRfY21kID0gcGNpX2NvbmZfcmVhZDE2KHBkZXYtPnNiZGYsIHJlZyk7Cj4gIAo+ICAgICAgLyoK PiAgICAgICAqIExldCBEb20wIHBsYXkgd2l0aCBhbGwgdGhlIGJpdHMgZGlyZWN0bHkgZXhjZXB0 IGZvciB0aGUgbWVtb3J5Cj4gQEAgLTM3MSw4ICszNzAsNyBAQCBzdGF0aWMgdm9pZCBiYXJfd3Jp dGUoY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCByZWcsCj4gICAgICBl bHNlCj4gICAgICAgICAgdmFsICY9IFBDSV9CQVNFX0FERFJFU1NfTUVNX01BU0s7Cj4gIAo+IC0g ICAgaWYgKCBwY2lfY29uZl9yZWFkMTYocGRldi0+c2VnLCBwZGV2LT5idXMsIHNsb3QsIGZ1bmMs IFBDSV9DT01NQU5EKSAmCj4gLSAgICAgICAgIFBDSV9DT01NQU5EX01FTU9SWSApCj4gKyAgICBp ZiAoIHBjaV9jb25mX3JlYWQxNihwZGV2LT5zYmRmLCBQQ0lfQ09NTUFORCkgJiBQQ0lfQ09NTUFO RF9NRU1PUlkgKQo+ICAgICAgewo+ICAgICAgICAgIC8qIElmIHRoZSB2YWx1ZSB3cml0dGVuIGlz IHRoZSBjdXJyZW50IG9uZSBhdm9pZCBwcmludGluZyBhIHdhcm5pbmcuICovCj4gICAgICAgICAg aWYgKCB2YWwgIT0gKHVpbnQzMl90KShiYXItPmFkZHIgPj4gKGhpID8gMzIgOiAwKSkgKQo+IEBA IC00MDksOCArNDA3LDcgQEAgc3RhdGljIHZvaWQgcm9tX3dyaXRlKGNvbnN0IHN0cnVjdCBwY2lf ZGV2ICpwZGV2LCB1bnNpZ25lZCBpbnQgcmVnLAo+ICAgICAgc3RydWN0IHZwY2lfaGVhZGVyICpo ZWFkZXIgPSAmcGRldi0+dnBjaS0+aGVhZGVyOwo+ICAgICAgc3RydWN0IHZwY2lfYmFyICpyb20g PSBkYXRhOwo+ICAgICAgdWludDhfdCBzbG90ID0gUENJX1NMT1QocGRldi0+ZGV2Zm4pLCBmdW5j ID0gUENJX0ZVTkMocGRldi0+ZGV2Zm4pOwo+IC0gICAgdWludDE2X3QgY21kID0gcGNpX2NvbmZf cmVhZDE2KHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBmdW5jLAo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBDSV9DT01NQU5EKTsKPiArICAgIHVpbnQxNl90IGNtZCA9 IHBjaV9jb25mX3JlYWQxNihwZGV2LT5zYmRmLCBQQ0lfQ09NTUFORCk7Cj4gICAgICBib29sIG5l d19lbmFibGVkID0gdmFsICYgUENJX1JPTV9BRERSRVNTX0VOQUJMRTsKPiAgCj4gICAgICBpZiAo IChjbWQgJiBQQ0lfQ09NTUFORF9NRU1PUlkpICYmIGhlYWRlci0+cm9tX2VuYWJsZWQgJiYgbmV3 X2VuYWJsZWQgKQo+IEBAIC00ODksNyArNDg2LDcgQEAgc3RhdGljIGludCBpbml0X2JhcnMoc3Ry dWN0IHBjaV9kZXYgKnBkZXYpCj4gICAgICAgICAgcmV0dXJuIDA7Cj4gIAo+ICAgICAgLyogRGlz YWJsZSBtZW1vcnkgZGVjb2RpbmcgYmVmb3JlIHNpemluZy4gKi8KPiAtICAgIGNtZCA9IHBjaV9j b25mX3JlYWQxNihwZGV2LT5zZWcsIHBkZXYtPmJ1cywgc2xvdCwgZnVuYywgUENJX0NPTU1BTkQp Owo+ICsgICAgY21kID0gcGNpX2NvbmZfcmVhZDE2KHBkZXYtPnNiZGYsIFBDSV9DT01NQU5EKTsK PiAgICAgIGlmICggY21kICYgUENJX0NPTU1BTkRfTUVNT1JZICkKPiAgICAgICAgICBwY2lfY29u Zl93cml0ZTE2KHBkZXYtPnNlZywgcGRldi0+YnVzLCBzbG90LCBmdW5jLCBQQ0lfQ09NTUFORCwK PiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCAmIH5QQ0lfQ09NTUFORF9NRU1PUlkpOwo+ IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy92cGNpL21zaS5jIGIveGVuL2RyaXZlcnMvdnBjaS9t c2kuYwo+IGluZGV4IGM0ZTFkMmE0MTEuLjhmZTg5ZmM5MTIgMTAwNjQ0Cj4gLS0tIGEveGVuL2Ry aXZlcnMvdnBjaS9tc2kuYwo+ICsrKyBiL3hlbi9kcml2ZXJzL3ZwY2kvbXNpLmMKPiBAQCAtMjEx LDggKzIxMSw3IEBAIHN0YXRpYyBpbnQgaW5pdF9tc2koc3RydWN0IHBjaV9kZXYgKnBkZXYpCj4g ICAgICAgICAgcmV0dXJuIHJldDsKPiAgCj4gICAgICAvKiBHZXQgdGhlIG1heGltdW0gbnVtYmVy IG9mIHZlY3RvcnMgdGhlIGRldmljZSBzdXBwb3J0cy4gKi8KPiAtICAgIGNvbnRyb2wgPSBwY2lf Y29uZl9yZWFkMTYocGRldi0+c2VnLCBwZGV2LT5idXMsIHNsb3QsIGZ1bmMsCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1zaV9jb250cm9sX3JlZyhwb3MpKTsKPiArICAgIGNvbnRy b2wgPSBwY2lfY29uZl9yZWFkMTYocGRldi0+c2JkZiwgbXNpX2NvbnRyb2xfcmVnKHBvcykpOwo+ ICAKPiAgICAgIC8qCj4gICAgICAgKiBGSVhNRTogSSd2ZSBvbmx5IGJlZW4gYWJsZSB0byB0ZXN0 IHRoaXMgY29kZSB3aXRoIGRldmljZXMgdXNpbmcgYSBzaW5nbGUKPiBkaWZmIC0tZ2l0IGEveGVu L2RyaXZlcnMvdnBjaS9tc2l4LmMgYi94ZW4vZHJpdmVycy92cGNpL21zaXguYwo+IGluZGV4IGFm M2ZmYTA4N2QuLjhlNmNkMDcwZDAgMTAwNjQ0Cj4gLS0tIGEveGVuL2RyaXZlcnMvdnBjaS9tc2l4 LmMKPiArKysgYi94ZW4vZHJpdmVycy92cGNpL21zaXguYwo+IEBAIC00NTcsOCArNDU3LDcgQEAg c3RhdGljIGludCBpbml0X21zaXgoc3RydWN0IHBjaV9kZXYgKnBkZXYpCj4gICAgICBpZiAoICFt c2l4X29mZnNldCApCj4gICAgICAgICAgcmV0dXJuIDA7Cj4gIAo+IC0gICAgY29udHJvbCA9IHBj aV9jb25mX3JlYWQxNihwZGV2LT5zZWcsIHBkZXYtPmJ1cywgc2xvdCwgZnVuYywKPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbXNpeF9jb250cm9sX3JlZyhtc2l4X29mZnNldCkpOwo+ ICsgICAgY29udHJvbCA9IHBjaV9jb25mX3JlYWQxNihwZGV2LT5zYmRmLCBtc2l4X2NvbnRyb2xf cmVnKG1zaXhfb2Zmc2V0KSk7Cj4gIAo+ICAgICAgbWF4X2VudHJpZXMgPSBtc2l4X3RhYmxlX3Np emUoY29udHJvbCk7Cj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy92cGNpL3ZwY2kuYyBi L3hlbi9kcml2ZXJzL3ZwY2kvdnBjaS5jCj4gaW5kZXggYzQwMzAzMzNhNS4uMWE0YzJlZTRmMSAx MDA2NDQKPiAtLS0gYS94ZW4vZHJpdmVycy92cGNpL3ZwY2kuYwo+ICsrKyBiL3hlbi9kcml2ZXJz L3ZwY2kvdnBjaS5jCj4gQEAgLTExNCw4ICsxMTQsNyBAQCBzdGF0aWMgdm9pZCB2cGNpX2lnbm9y ZWRfd3JpdGUoY29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCByZWcsCj4g IHVpbnQzMl90IHZwY2lfaHdfcmVhZDE2KGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1bnNp Z25lZCBpbnQgcmVnLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKQo+ICB7 Cj4gLSAgICByZXR1cm4gcGNpX2NvbmZfcmVhZDE2KHBkZXYtPnNlZywgcGRldi0+YnVzLCBQQ0lf U0xPVChwZGV2LT5kZXZmbiksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9GVU5D KHBkZXYtPmRldmZuKSwgcmVnKTsKPiArICAgIHJldHVybiBwY2lfY29uZl9yZWFkMTYocGRldi0+ c2JkZiwgcmVnKTsKPiAgfQo+ICAKPiAgdWludDMyX3QgdnBjaV9od19yZWFkMzIoY29uc3Qgc3Ry dWN0IHBjaV9kZXYgKnBkZXYsIHVuc2lnbmVkIGludCByZWcsCj4gQEAgLTIyMywxOSArMjIyLDE3 IEBAIHN0YXRpYyB1aW50MzJfdCB2cGNpX3JlYWRfaHcocGNpX3NiZGZfdCBzYmRmLCB1bnNpZ25l ZCBpbnQgcmVnLAo+ICAgICAgICAgIGlmICggcmVnICYgMSApCj4gICAgICAgICAgewo+ICAgICAg ICAgICAgICBkYXRhID0gcGNpX2NvbmZfcmVhZDgoc2JkZiwgcmVnKTsKPiAtICAgICAgICAgICAg ZGF0YSB8PSBwY2lfY29uZl9yZWFkMTYoc2JkZi5zZWcsIHNiZGYuYnVzLCBzYmRmLmRldiwgc2Jk Zi5mbiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnICsgMSkgPDwg ODsKPiArICAgICAgICAgICAgZGF0YSB8PSBwY2lfY29uZl9yZWFkMTYoc2JkZiwgcmVnICsgMSkg PDwgODsKPiAgICAgICAgICB9Cj4gICAgICAgICAgZWxzZQo+ICAgICAgICAgIHsKPiAtICAgICAg ICAgICAgZGF0YSA9IHBjaV9jb25mX3JlYWQxNihzYmRmLnNlZywgc2JkZi5idXMsIHNiZGYuZGV2 LCBzYmRmLmZuLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZyk7Cj4g KyAgICAgICAgICAgIGRhdGEgPSBwY2lfY29uZl9yZWFkMTYoc2JkZiwgcmVnKTsKPiAgICAgICAg ICAgICAgZGF0YSB8PSBwY2lfY29uZl9yZWFkOChzYmRmLCByZWcgKyAyKSA8PCAxNjsKPiAgICAg ICAgICB9Cj4gICAgICAgICAgYnJlYWs7Cj4gIAo+ICAgICAgY2FzZSAyOgo+IC0gICAgICAgIGRh dGEgPSBwY2lfY29uZl9yZWFkMTYoc2JkZi5zZWcsIHNiZGYuYnVzLCBzYmRmLmRldiwgc2JkZi5m biwgcmVnKTsKPiArICAgICAgICBkYXRhID0gcGNpX2NvbmZfcmVhZDE2KHNiZGYsIHJlZyk7Cj4g ICAgICAgICAgYnJlYWs7Cj4gIAo+ICAgICAgY2FzZSAxOgo+IGRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS94ZW4vcGNpLmggYi94ZW4vaW5jbHVkZS94ZW4vcGNpLmgKPiBpbmRleCBiMmE2MmNiMzY2 Li5jZjRjMjIzZjdjIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL3hlbi9wY2kuaAo+ICsrKyBi L3hlbi9pbmNsdWRlL3hlbi9wY2kuaAo+IEBAIC0xNzMsOSArMTczLDcgQEAgc3RydWN0IHBjaV9k ZXYgKnBjaV9nZXRfcGRldl9ieV9kb21haW4oY29uc3Qgc3RydWN0IGRvbWFpbiAqLCBpbnQgc2Vn LAo+ICB2b2lkIHBjaV9jaGVja19kaXNhYmxlX2RldmljZSh1MTYgc2VnLCB1OCBidXMsIHU4IGRl dmZuKTsKPiAgCj4gIHVpbnQ4X3QgcGNpX2NvbmZfcmVhZDgocGNpX3NiZGZfdCBzYmRmLCB1bnNp Z25lZCBpbnQgcmVnKTsKPiAtdWludDE2X3QgcGNpX2NvbmZfcmVhZDE2KAo+IC0gICAgdW5zaWdu ZWQgaW50IHNlZywgdW5zaWduZWQgaW50IGJ1cywgdW5zaWduZWQgaW50IGRldiwgdW5zaWduZWQg aW50IGZ1bmMsCj4gLSAgICB1bnNpZ25lZCBpbnQgcmVnKTsKPiArdWludDE2X3QgcGNpX2NvbmZf cmVhZDE2KHBjaV9zYmRmX3Qgc2JkZiwgdW5zaWduZWQgaW50IHJlZyk7Cj4gIHVpbnQzMl90IHBj aV9jb25mX3JlYWQzMigKPiAgICAgIHVuc2lnbmVkIGludCBzZWcsIHVuc2lnbmVkIGludCBidXMs IHVuc2lnbmVkIGludCBkZXYsIHVuc2lnbmVkIGludCBmdW5jLAo+ICAgICAgdW5zaWduZWQgaW50 IHJlZyk7Cj4gLS0gCj4gMi4yMC4xIChBcHBsZSBHaXQtMTE3KQo+IAoKLS0gCkJyaWFuIFdvb2Rz CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs