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=-9.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 AC1DBC43381 for ; Sun, 17 Mar 2019 19:06:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5B30320872 for ; Sun, 17 Mar 2019 19:06:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=microsoft.com header.i=@microsoft.com header.b="hgco4RWv" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726452AbfCQTGl (ORCPT ); Sun, 17 Mar 2019 15:06:41 -0400 Received: from mail-eopbgr760124.outbound.protection.outlook.com ([40.107.76.124]:35201 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726446AbfCQTGk (ORCPT ); Sun, 17 Mar 2019 15:06:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+YIjomxW80dqM5KwWllOtKY+0ESq2SD3LXyLtuqfVmQ=; b=hgco4RWvDQTauUQBz363BbhdOst3Zpo+RlxdyicrGfkIIoPK8o8AdqSarKXuj1TGI1Emi0DuuW8p5bw2HK5wAqRkArOS6dIx8YC+eR9gc2TGk2/tBt/6nSlPl3pHt1S0WZDZveYHhVt/RdSbLPDZoxBUkY8g8VzZmLjYPRa2ASQ= Received: from BN6PR21MB0466.namprd21.prod.outlook.com (10.172.111.144) by BN6PR21MB0788.namprd21.prod.outlook.com (10.175.132.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1730.0; Sun, 17 Mar 2019 19:06:17 +0000 Received: from BN6PR21MB0466.namprd21.prod.outlook.com ([fe80::f458:691d:54a:b05c]) by BN6PR21MB0466.namprd21.prod.outlook.com ([fe80::f458:691d:54a:b05c%13]) with mapi id 15.20.1730.008; Sun, 17 Mar 2019 19:06:17 +0000 From: Michael Kelley To: "will.deacon@arm.com" , "marc.zyngier@arm.com" , "linux-arm-kernel@lists.infradead.org" , "gregkh@linuxfoundation.org" , "linux-kernel@vger.kernel.org" , "linux-hyperv@vger.kernel.org" , "olaf@aepfle.de" , "apw@canonical.com" , vkuznets , "jasowang@redhat.com" , "marcelo.cerri@canonical.com" , Sunil Muthuswamy , KY Srinivasan CC: Michael Kelley , "catalin.marinas@arm.com" , "mark.rutland@arm.com" Subject: [PATCH v2 1/2] Drivers: hv: Create Hyper-V clocksource driver from existing clockevents code Thread-Topic: [PATCH v2 1/2] Drivers: hv: Create Hyper-V clocksource driver from existing clockevents code Thread-Index: AQHU3PR/1ks0xJJOT0qx5+YJAoKM+Q== Date: Sun, 17 Mar 2019 19:06:16 +0000 Message-ID: <1552849512-10063-2-git-send-email-mikelley@microsoft.com> References: <1552849512-10063-1-git-send-email-mikelley@microsoft.com> In-Reply-To: <1552849512-10063-1-git-send-email-mikelley@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: CO2PR18CA0050.namprd18.prod.outlook.com (2603:10b6:104:2::18) To BN6PR21MB0466.namprd21.prod.outlook.com (2603:10b6:404:b2::16) x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 1.8.3.1 x-originating-ip: [167.220.2.136] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bf01f286-392f-4936-a3d3-08d6ab0ba1c6 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)(7193020);SRVR:BN6PR21MB0788; x-ms-traffictypediagnostic: BN6PR21MB0788: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 09796A1B83 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(39860400002)(366004)(346002)(376002)(136003)(396003)(189003)(199004)(99286004)(486006)(8676002)(5660300002)(81166006)(81156014)(102836004)(26005)(52116002)(6506007)(8936002)(97736004)(76176011)(386003)(30864003)(6486002)(50226002)(6346003)(305945005)(86612001)(14454004)(7736002)(6636002)(7416002)(106356001)(186003)(36756003)(71190400001)(22452003)(10290500003)(54906003)(105586002)(6436002)(2906002)(478600001)(66066001)(71200400001)(110136005)(316002)(2501003)(4326008)(68736007)(6512007)(86362001)(1511001)(10090500001)(53946003)(6116002)(2616005)(4720700003)(25786009)(256004)(476003)(14444005)(446003)(53936002)(3846002)(11346002)(2201001)(921003)(1121003)(579004);DIR:OUT;SFP:1102;SCL:1;SRVR:BN6PR21MB0788;H:BN6PR21MB0466.namprd21.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) authentication-results: spf=none (sender IP is ) smtp.mailfrom=mikelley@microsoft.com; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: gccGkRwg3UHQx32glXNjX2sG8bIQz71t4+ow8p8pODdOYund/r4O6H3yHLYFWqVpopnSynxUzHldhMqBFRosKztEdqA6Ud4PwZZpI5FRc1hC5oSpm6qMrmS9hxbUj08wZM9jUwdi7TRM+wGbqqgrEh1y/7o+FHaDKZT+Vpru/JbBF023K2pDmHVkwVV94FSWmsc8qxx21hygRwmtapMAdLgI3r/DpkERPzd/b07KGye/DaQdxiGGOfS8gqD3G6nkZk9frdsmM3b4ZJXNxIjhmW393SQWRZXaR2m02ymEp9W3KviNwaK0/S2ekG9N+ClE1fAf/1N57ctnOo0iCKVKGKdpj9eNLbsCHxI9PcXGHe+vt76nYFwqr6oGS7iISBdU42s9RVFDgZgWVXRkyd+gnZetJSkUW2IJFXJ+mLwFYQY= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf01f286-392f-4936-a3d3-08d6ab0ba1c6 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Mar 2019 19:06:16.9566 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR21MB0788 Sender: linux-hyperv-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-hyperv@vger.kernel.org Q2xvY2tldmVudHMgY29kZSBmb3IgSHlwZXItViBzeW50aGV0aWMgdGltZXJzIGlzIGN1cnJlbnRs eSBtaXhlZA0KaW4gd2l0aCBvdGhlciBIeXBlci1WIGNvZGUuIE1vdmUgdGhlIGNvZGUgdG8gYSBI eXBlci1WIHNwZWNpZmljDQpkcml2ZXIgaW4gdGhlICJjbG9ja3NvdXJjZSIgZGlyZWN0b3J5LiBV cGRhdGUgdGhlIFZNYnVzIGRyaXZlcg0KdG8gY2FsbCBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51 cCByb3V0aW5lcyBzaW5jZSB0aGUgSHlwZXItVg0Kc3ludGhldGljIHRpbWVycyBhcmUgbm90IGlu ZGVwZW5kZW50bHkgZW51bWVyYXRlZCBpbiBBQ1BJLg0KDQpObyBiZWhhdmlvciBpcyBjaGFuZ2Vk IGFuZCBubyBuZXcgZnVuY3Rpb25hbGl0eSBpcyBhZGRlZC4NCg0KU3VnZ2VzdGVkLWJ5OiBNYXJj IFp5bmdpZXIgPG1hcmMuenluZ2llckBhcm0uY29tPg0KU2lnbmVkLW9mZi1ieTogTWljaGFlbCBL ZWxsZXkgPG1pa2VsbGV5QG1pY3Jvc29mdC5jb20+DQotLS0NCiBNQUlOVEFJTkVSUyAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICsNCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9oeXBlcnYtdGxm cy5oIHwgICA2ICsrDQogYXJjaC94ODYva2VybmVsL2NwdS9tc2h5cGVydi5jICAgICB8ICAgMiAr DQogZHJpdmVycy9jbG9ja3NvdXJjZS9NYWtlZmlsZSAgICAgICB8ICAgMSArDQogZHJpdmVycy9j bG9ja3NvdXJjZS9oeXBlcnZfdGltZXIuYyB8IDIwNiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrDQogZHJpdmVycy9odi9LY29uZmlnICAgICAgICAgICAgICAgICB8ICAgMyAr DQogZHJpdmVycy9odi9odi5jICAgICAgICAgICAgICAgICAgICB8IDE1NCAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCiBkcml2ZXJzL2h2L2h5cGVydl92bWJ1cy5oICAgICAgICAgIHwgICAz IC0NCiBkcml2ZXJzL2h2L3ZtYnVzX2Rydi5jICAgICAgICAgICAgIHwgIDM5ICsrKy0tLS0NCiBp bmNsdWRlL2Nsb2Nrc291cmNlL2h5cGVydl90aW1lci5oIHwgIDI2ICsrKysrDQogMTAgZmlsZXMg Y2hhbmdlZCwgMjY2IGluc2VydGlvbnMoKyksIDE3NiBkZWxldGlvbnMoLSkNCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9jbG9ja3NvdXJjZS9oeXBlcnZfdGltZXIuYw0KIGNyZWF0ZSBtb2Rl IDEwMDY0NCBpbmNsdWRlL2Nsb2Nrc291cmNlL2h5cGVydl90aW1lci5oDQoNCmRpZmYgLS1naXQg YS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTDQppbmRleCAyMWFiMDY0Li42MzE0MmRhIDEwMDY0 NA0KLS0tIGEvTUFJTlRBSU5FUlMNCisrKyBiL01BSU5UQUlORVJTDQpAQCAtNzE1OSw2ICs3MTU5 LDcgQEAgRjoJYXJjaC94ODYvaW5jbHVkZS9hc20vdHJhY2UvaHlwZXJ2LmgNCiBGOglhcmNoL3g4 Ni9pbmNsdWRlL2FzbS9oeXBlcnYtdGxmcy5oDQogRjoJYXJjaC94ODYva2VybmVsL2NwdS9tc2h5 cGVydi5jDQogRjoJYXJjaC94ODYvaHlwZXJ2DQorRjoJZHJpdmVycy9jbG9ja3NvdXJjZS9oeXBl cnZfdGltZXIuYw0KIEY6CWRyaXZlcnMvaGlkL2hpZC1oeXBlcnYuYw0KIEY6CWRyaXZlcnMvaHYv DQogRjoJZHJpdmVycy9pbnB1dC9zZXJpby9oeXBlcnYta2V5Ym9hcmQuYw0KQEAgLTcxNjgsNiAr NzE2OSw3IEBAIEY6CWRyaXZlcnMvc2NzaS9zdG9ydnNjX2Rydi5jDQogRjoJZHJpdmVycy91aW8v dWlvX2h2X2dlbmVyaWMuYw0KIEY6CWRyaXZlcnMvdmlkZW8vZmJkZXYvaHlwZXJ2X2ZiLmMNCiBG OgluZXQvdm13X3Zzb2NrL2h5cGVydl90cmFuc3BvcnQuYw0KK0Y6CWluY2x1ZGUvY2xvY2tzb3Vy Y2UvaHlwZXJ2X3RpbWVyLmgNCiBGOglpbmNsdWRlL2xpbnV4L2h5cGVydi5oDQogRjoJaW5jbHVk ZS91YXBpL2xpbnV4L2h5cGVydi5oDQogRjoJdG9vbHMvaHYvDQpkaWZmIC0tZ2l0IGEvYXJjaC94 ODYvaW5jbHVkZS9hc20vaHlwZXJ2LXRsZnMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2h5cGVy di10bGZzLmgNCmluZGV4IDJiZGJiYmMuLmVlNjJmNTcgMTAwNjQ0DQotLS0gYS9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9oeXBlcnYtdGxmcy5oDQorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9oeXBl cnYtdGxmcy5oDQpAQCAtNDAxLDYgKzQwMSwxMiBAQCBlbnVtIEhWX0dFTkVSSUNfU0VUX0ZPUk1B VCB7DQogI2RlZmluZSBIVl9TVEFUVVNfSU5WQUxJRF9DT05ORUNUSU9OX0lECQkxOA0KICNkZWZp bmUgSFZfU1RBVFVTX0lOU1VGRklDSUVOVF9CVUZGRVJTCQkxOQ0KIA0KKy8qDQorICogVGhlIEh5 cGVyLVYgVGltZVJlZkNvdW50IHJlZ2lzdGVyIGFuZCB0aGUgVFNDDQorICogcGFnZSBwcm92aWRl IGEgZ3Vlc3QgVk0gY2xvY2sgd2l0aCAxMDBucyB0aWNrIHJhdGUNCisgKi8NCisjZGVmaW5lIEhW X0NMT0NLX0haIChOU0VDX1BFUl9TRUMvMTAwKQ0KKw0KIHR5cGVkZWYgc3RydWN0IF9IVl9SRUZF UkVOQ0VfVFNDX1BBR0Ugew0KIAlfX3UzMiB0c2Nfc2VxdWVuY2U7DQogCV9fdTMyIHJlczE7DQpk aWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2NwdS9tc2h5cGVydi5jIGIvYXJjaC94ODYva2Vy bmVsL2NwdS9tc2h5cGVydi5jDQppbmRleCBlODFhMmRiLi5mNTNhMzVhIDEwMDY0NA0KLS0tIGEv YXJjaC94ODYva2VybmVsL2NwdS9tc2h5cGVydi5jDQorKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1 L21zaHlwZXJ2LmMNCkBAIC0yMSw2ICsyMSw3IEBADQogI2luY2x1ZGUgPGxpbnV4L2lycS5oPg0K ICNpbmNsdWRlIDxsaW51eC9rZXhlYy5oPg0KICNpbmNsdWRlIDxsaW51eC9pODI1My5oPg0KKyNp bmNsdWRlIDxsaW51eC9yYW5kb20uaD4NCiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPg0KICNp bmNsdWRlIDxhc20vaHlwZXJ2aXNvci5oPg0KICNpbmNsdWRlIDxhc20vaHlwZXJ2LXRsZnMuaD4N CkBAIC04NCw2ICs4NSw3IEBAIF9fdmlzaWJsZSB2b2lkIF9faXJxX2VudHJ5IGh2X3N0aW1lcjBf dmVjdG9yX2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpDQogCWluY19pcnFfc3RhdChoeXBl cnZfc3RpbWVyMF9jb3VudCk7DQogCWlmIChodl9zdGltZXIwX2hhbmRsZXIpDQogCQlodl9zdGlt ZXIwX2hhbmRsZXIoKTsNCisJYWRkX2ludGVycnVwdF9yYW5kb21uZXNzKEhZUEVSVl9TVElNRVIw X1ZFQ1RPUiwgMCk7DQogCWFja19BUElDX2lycSgpOw0KIA0KIAlleGl0aW5nX2lycSgpOw0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvY2xvY2tzb3VyY2UvTWFrZWZpbGUgYi9kcml2ZXJzL2Nsb2Nrc291 cmNlL01ha2VmaWxlDQppbmRleCBiZTZlMGZiLi5jZDI4NGE0IDEwMDY0NA0KLS0tIGEvZHJpdmVy cy9jbG9ja3NvdXJjZS9NYWtlZmlsZQ0KKysrIGIvZHJpdmVycy9jbG9ja3NvdXJjZS9NYWtlZmls ZQ0KQEAgLTgzLDMgKzgzLDQgQEAgb2JqLSQoQ09ORklHX0FUQ1BJVDEwMF9USU1FUikJCSs9IHRp bWVyLWF0Y3BpdDEwMC5vDQogb2JqLSQoQ09ORklHX1JJU0NWX1RJTUVSKQkJKz0gdGltZXItcmlz Y3Yubw0KIG9iai0kKENPTkZJR19DU0tZX01QX1RJTUVSKQkJKz0gdGltZXItbXAtY3NreS5vDQog b2JqLSQoQ09ORklHX0dYNjYwNVNfVElNRVIpCQkrPSB0aW1lci1neDY2MDVzLm8NCitvYmotJChD T05GSUdfSFlQRVJWX1RJTUVSKQkJKz0gaHlwZXJ2X3RpbWVyLm8NCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Nsb2Nrc291cmNlL2h5cGVydl90aW1lci5jIGIvZHJpdmVycy9jbG9ja3NvdXJjZS9oeXBl cnZfdGltZXIuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLmU4NTY1MjkN Ci0tLSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMvY2xvY2tzb3VyY2UvaHlwZXJ2X3RpbWVyLmMN CkBAIC0wLDAgKzEsMjA2IEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAN CisNCisvKg0KKyAqIENsb2Nrc291cmNlIGRyaXZlciBmb3IgdGhlIHN5bnRoZXRpYyBjb3VudGVy IGFuZCB0aW1lcnMNCisgKiBwcm92aWRlZCBieSB0aGUgSHlwZXItViBoeXBlcnZpc29yIHRvIGd1 ZXN0IFZNcywgYXMgZGVzY3JpYmVkDQorICogaW4gdGhlIEh5cGVyLVYgVG9wIExldmVsIEZ1bmN0 aW9uYWwgU3BlYyAoVExGUykuIFRoaXMgZHJpdmVyDQorICogaXMgaW5zdHJ1Y3Rpb24gc2V0IGFy Y2hpdGVjdHVyZSBpbmRlcGVuZGVudC4NCisgKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOSwgTWlj cm9zb2Z0LCBJbmMuDQorICoNCisgKiBBdXRob3I6ICBNaWNoYWVsIEtlbGxleSA8bWlrZWxsZXlA bWljcm9zb2Z0LmNvbT4NCisgKi8NCisNCisjaW5jbHVkZSA8bGludXgvcGVyY3B1Lmg+DQorI2lu Y2x1ZGUgPGxpbnV4L2NwdW1hc2suaD4NCisjaW5jbHVkZSA8bGludXgvY2xvY2tjaGlwcy5oPg0K KyNpbmNsdWRlIDxsaW51eC9jcHVob3RwbHVnLmg+DQorI2luY2x1ZGUgPGxpbnV4L21tLmg+DQor I2luY2x1ZGUgPGNsb2Nrc291cmNlL2h5cGVydl90aW1lci5oPg0KKyNpbmNsdWRlIDxhc20vaHlw ZXJ2LXRsZnMuaD4NCisjaW5jbHVkZSA8YXNtL21zaHlwZXJ2Lmg+DQorDQorc3RhdGljIHN0cnVj dCBjbG9ja19ldmVudF9kZXZpY2UgX19wZXJjcHUgKmh2X2Nsb2NrX2V2ZW50Ow0KKw0KKy8qDQor ICogSWYgZmFsc2UsIHdlJ3JlIHVzaW5nIHRoZSBvbGQgbWVjaGFuaXNtIGZvciBzdGltZXIwIGlu dGVycnVwdHMNCisgKiB3aGVyZSBpdCBzZW5kcyBhIFZNYnVzIG1lc3NhZ2Ugd2hlbiBpdCBleHBp cmVzLiBUaGUgb2xkDQorICogbWVjaGFuaXNtIGlzIHVzZWQgd2hlbiBydW5uaW5nIG9uIG9sZGVy IHZlcnNpb25zIG9mIEh5cGVyLVYNCisgKiB0aGF0IGRvbid0IHN1cHBvcnQgRGlyZWN0IE1vZGUu IFdoaWxlIEh5cGVyLVYgcHJvdmlkZXMNCisgKiBmb3VyIHN0aW1lcidzIHBlciBDUFUsIExpbnV4 IHVzZXMgb25seSBzdGltZXIwLg0KKyAqLw0KK3N0YXRpYyBib29sIGRpcmVjdF9tb2RlX2VuYWJs ZWQ7DQorDQorc3RhdGljIGludCBzdGltZXIwX2lycTsNCitzdGF0aWMgaW50IHN0aW1lcjBfdmVj dG9yOw0KK3N0YXRpYyBpbnQgc3RpbWVyMF9tZXNzYWdlX3NpbnQ7DQorc3RhdGljIGludCBzdGlt ZXIwX2NwdWhwX29ubGluZTsNCisNCisvKg0KKyAqIElTUiBmb3Igd2hlbiBzdGltZXIwIGlzIG9w ZXJhdGluZyBpbiBEaXJlY3QgTW9kZS4gIERpcmVjdCBNb2RlDQorICogZG9lcyBub3QgdXNlIFZN YnVzIG9yIGFueSBWTWJ1cyBtZXNzYWdlcywgc28gcHJvY2VzcyBoZXJlIGFuZCBub3QNCisgKiBp biB0aGUgVk1idXMgZHJpdmVyIGNvZGUuDQorICovDQordm9pZCBodl9zdGltZXIwX2lzcih2b2lk KQ0KK3sNCisJc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqY2U7DQorDQorCWNlID0gdGhpc19j cHVfcHRyKGh2X2Nsb2NrX2V2ZW50KTsNCisJY2UtPmV2ZW50X2hhbmRsZXIoY2UpOw0KK30NCitF WFBPUlRfU1lNQk9MX0dQTChodl9zdGltZXIwX2lzcik7DQorDQorc3RhdGljIGludCBodl9jZV9z ZXRfbmV4dF9ldmVudCh1bnNpZ25lZCBsb25nIGRlbHRhLA0KKwkJCQlzdHJ1Y3QgY2xvY2tfZXZl bnRfZGV2aWNlICpldnQpDQorew0KKwl1NjQgY3VycmVudF90aWNrOw0KKw0KKwlXQVJOX09OKCFj bG9ja2V2ZW50X3N0YXRlX29uZXNob3QoZXZ0KSk7DQorDQorCWN1cnJlbnRfdGljayA9IGh5cGVy dl9jcy0+cmVhZChOVUxMKTsNCisJY3VycmVudF90aWNrICs9IGRlbHRhOw0KKwlodl9pbml0X3Rp bWVyKDAsIGN1cnJlbnRfdGljayk7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IGh2 X2NlX3NodXRkb3duKHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmV2dCkNCit7DQorCWh2X2lu aXRfdGltZXIoMCwgMCk7DQorCWh2X2luaXRfdGltZXJfY29uZmlnKDAsIDApOw0KKwlpZiAoZGly ZWN0X21vZGVfZW5hYmxlZCkNCisJCWh2X2Rpc2FibGVfc3RpbWVyMF9wZXJjcHVfaXJxKHN0aW1l cjBfaXJxKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgaHZfY2Vfc2V0X29u ZXNob3Qoc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0KQ0KK3sNCisJdW5pb24gaHZfc3Rp bWVyX2NvbmZpZyB0aW1lcl9jZmc7DQorDQorCXRpbWVyX2NmZy5hc191aW50NjQgPSAwOw0KKwl0 aW1lcl9jZmcuZW5hYmxlID0gMTsNCisJdGltZXJfY2ZnLmF1dG9fZW5hYmxlID0gMTsNCisJaWYg KGRpcmVjdF9tb2RlX2VuYWJsZWQpIHsNCisJCS8qDQorCQkgKiBXaGVuIGl0IGV4cGlyZXMsIHRo ZSB0aW1lciB3aWxsIGRpcmVjdGx5IGludGVycnVwdA0KKwkJICogb24gdGhlIHNwZWNpZmllZCBo YXJkd2FyZSB2ZWN0b3IvSVJRLg0KKwkJICovDQorCQl0aW1lcl9jZmcuZGlyZWN0X21vZGUgPSAx Ow0KKwkJdGltZXJfY2ZnLmFwaWNfdmVjdG9yID0gc3RpbWVyMF92ZWN0b3I7DQorCQlodl9lbmFi bGVfc3RpbWVyMF9wZXJjcHVfaXJxKHN0aW1lcjBfaXJxKTsNCisJfSBlbHNlIHsNCisJCS8qDQor CQkgKiBXaGVuIGl0IGV4cGlyZXMsIHRoZSB0aW1lciB3aWxsIGdlbmVyYXRlIGEgVk1idXMgbWVz c2FnZSwNCisJCSAqIHRvIGJlIGhhbmRsZWQgYnkgdGhlIG5vcm1hbCBWTWJ1cyBpbnRlcnJ1cHQg aGFuZGxlci4NCisJCSAqLw0KKwkJdGltZXJfY2ZnLmRpcmVjdF9tb2RlID0gMDsNCisJCXRpbWVy X2NmZy5zaW50eCA9IHN0aW1lcjBfbWVzc2FnZV9zaW50Ow0KKwl9DQorCWh2X2luaXRfdGltZXJf Y29uZmlnKDAsIHRpbWVyX2NmZy5hc191aW50NjQpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyoN CisgKiBodl9zdGltZXJfaW5pdCAtIFBlci1jcHUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGNsb2Nr ZXZlbnQNCisgKi8NCitzdGF0aWMgaW50IGh2X3N0aW1lcl9pbml0KHVuc2lnbmVkIGludCBjcHUp DQorew0KKwlzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNlICpjZTsNCisNCisJaWYgKG1zX2h5cGVy di5mZWF0dXJlcyAmIEhWX01TUl9TWU5USU1FUl9BVkFJTEFCTEUpIHsNCisJCWNlID0gcGVyX2Nw dV9wdHIoaHZfY2xvY2tfZXZlbnQsIGNwdSk7DQorCQljZS0+bmFtZSA9ICJIeXBlci1WIGNsb2Nr ZXZlbnQiOw0KKwkJY2UtPmZlYXR1cmVzID0gQ0xPQ0tfRVZUX0ZFQVRfT05FU0hPVDsNCisJCWNl LT5jcHVtYXNrID0gY3B1bWFza19vZihjcHUpOw0KKwkJY2UtPnJhdGluZyA9IDEwMDA7DQorCQlj ZS0+c2V0X3N0YXRlX3NodXRkb3duID0gaHZfY2Vfc2h1dGRvd247DQorCQljZS0+c2V0X3N0YXRl X29uZXNob3QgPSBodl9jZV9zZXRfb25lc2hvdDsNCisJCWNlLT5zZXRfbmV4dF9ldmVudCA9IGh2 X2NlX3NldF9uZXh0X2V2ZW50Ow0KKw0KKwkJY2xvY2tldmVudHNfY29uZmlnX2FuZF9yZWdpc3Rl cihjZSwNCisJCQkJCQlIVl9DTE9DS19IWiwNCisJCQkJCQlIVl9NSU5fREVMVEFfVElDS1MsDQor CQkJCQkJSFZfTUFYX01BWF9ERUxUQV9USUNLUyk7DQorCX0NCisJcmV0dXJuIDA7DQorfQ0KKw0K Ky8qDQorICogaHZfc3RpbWVyX2NsZWFudXAgLSBQZXItY3B1IGNsZWFudXAgb2YgdGhlIGNsb2Nr ZXZlbnQNCisgKi8NCitpbnQgaHZfc3RpbWVyX2NsZWFudXAodW5zaWduZWQgaW50IGNwdSkNCit7 DQorCXN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmNlOw0KKw0KKwkvKiBUdXJuIG9mZiBjbG9j a2V2ZW50IGRldmljZSAqLw0KKwlpZiAobXNfaHlwZXJ2LmZlYXR1cmVzICYgSFZfTVNSX1NZTlRJ TUVSX0FWQUlMQUJMRSkgew0KKwkJY2UgPSBwZXJfY3B1X3B0cihodl9jbG9ja19ldmVudCwgY3B1 KTsNCisJCWNsb2NrZXZlbnRzX3VuYmluZF9kZXZpY2UoY2UsIGNwdSk7DQorCQlodl9jZV9zaHV0 ZG93bihjZSk7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KK0VYUE9SVF9TWU1CT0xfR1BMKGh2 X3N0aW1lcl9jbGVhbnVwKTsNCisNCisvKiBodl9zdGltZXJfYWxsb2MgLSBHbG9iYWwgaW5pdGlh bGl6YXRpb24gb2YgdGhlIGNsb2NrZXZlbnQgYW5kIHN0aW1lcjAgKi8NCitpbnQgaHZfc3RpbWVy X2FsbG9jKGludCBzaW50KQ0KK3sNCisJaW50CXJldDsNCisNCisJaHZfY2xvY2tfZXZlbnQgPSBh bGxvY19wZXJjcHUoc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSk7DQorCWlmICghaHZfY2xvY2tf ZXZlbnQpDQorCQlyZXR1cm4gLUVOT01FTTsNCisNCisJZGlyZWN0X21vZGVfZW5hYmxlZCA9IG1z X2h5cGVydi5taXNjX2ZlYXR1cmVzICYNCisJCQlIVl9TVElNRVJfRElSRUNUX01PREVfQVZBSUxB QkxFOw0KKwlpZiAoZGlyZWN0X21vZGVfZW5hYmxlZCAmJg0KKwkgICAgaHZfc2V0dXBfc3RpbWVy MF9pcnEoJnN0aW1lcjBfaXJxLCAmc3RpbWVyMF92ZWN0b3IsDQorCQkJCWh2X3N0aW1lcjBfaXNy KSkNCisJCWdvdG8gZXJyX2lycTsNCisNCisJc3RpbWVyMF9tZXNzYWdlX3NpbnQgPSBzaW50Ow0K Kw0KKwlyZXQgPSBjcHVocF9zZXR1cF9zdGF0ZShDUFVIUF9BUF9PTkxJTkVfRFlOLCAiaHlwZXJ2 L3N0aW1lcjA6b25saW5lIiwNCisJCQkJaHZfc3RpbWVyX2luaXQsIGh2X3N0aW1lcl9jbGVhbnVw KTsNCisJaWYgKHJldCA8IDApDQorCQlnb3RvIGVycl9jcHVocDsNCisJc3RpbWVyMF9jcHVocF9v bmxpbmUgPSByZXQ7DQorCXJldHVybiAwOw0KKw0KK2Vycl9jcHVocDoNCisJaWYgKGRpcmVjdF9t b2RlX2VuYWJsZWQpDQorCQlodl9yZW1vdmVfc3RpbWVyMF9pcnEoc3RpbWVyMF9pcnEpOw0KK2Vy cl9pcnE6DQorCWZyZWVfcGVyY3B1KGh2X2Nsb2NrX2V2ZW50KTsNCisJcmV0dXJuIC1FSU5WQUw7 DQorfQ0KK0VYUE9SVF9TWU1CT0xfR1BMKGh2X3N0aW1lcl9hbGxvYyk7DQorDQorLyogaHZfc3Rp bWVyX2ZyZWUgLSBGcmVlIGdsb2JhbCByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IGh2X3N0aW1lcl9h bGxvYygpICovDQordm9pZCBodl9zdGltZXJfZnJlZSh2b2lkKQ0KK3sNCisJY3B1aHBfcmVtb3Zl X3N0YXRlKHN0aW1lcjBfY3B1aHBfb25saW5lKTsNCisJaWYgKGRpcmVjdF9tb2RlX2VuYWJsZWQp DQorCQlodl9yZW1vdmVfc3RpbWVyMF9pcnEoc3RpbWVyMF9pcnEpOw0KKwlmcmVlX3BlcmNwdSho dl9jbG9ja19ldmVudCk7DQorfQ0KK0VYUE9SVF9TWU1CT0xfR1BMKGh2X3N0aW1lcl9mcmVlKTsN CisNCisvKg0KKyAqIERvIGEgZ2xvYmFsIGNsZWFudXAgb2YgY2xvY2tldmVudHMgZm9yIHRoZSBj YXNlcyBvZiBrZXhlYyBhbmQNCisgKiB2bWJ1cyBleGl0DQorICovDQordm9pZCBodl9zdGltZXJf Z2xvYmFsX2NsZWFudXAodm9pZCkNCit7DQorCWludAljcHU7DQorCXN0cnVjdCBjbG9ja19ldmVu dF9kZXZpY2UgKmNlOw0KKw0KKwlpZiAobXNfaHlwZXJ2LmZlYXR1cmVzICYgSFZfTVNSX1NZTlRJ TUVSX0FWQUlMQUJMRSkNCisJCWZvcl9lYWNoX3ByZXNlbnRfY3B1KGNwdSkgew0KKwkJCWNlID0g cGVyX2NwdV9wdHIoaHZfY2xvY2tfZXZlbnQsIGNwdSk7DQorCQkJY2xvY2tldmVudHNfdW5iaW5k X2RldmljZShjZSwgY3B1KTsNCisJCX0NCisJaHZfc3RpbWVyX2ZyZWUoKTsNCit9DQorRVhQT1JU X1NZTUJPTF9HUEwoaHZfc3RpbWVyX2dsb2JhbF9jbGVhbnVwKTsNCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2h2L0tjb25maWcgYi9kcml2ZXJzL2h2L0tjb25maWcNCmluZGV4IDFjMWEyNTEuLmM0MjNl NTcgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2h2L0tjb25maWcNCisrKyBiL2RyaXZlcnMvaHYvS2Nv bmZpZw0KQEAgLTEwLDYgKzEwLDkgQEAgY29uZmlnIEhZUEVSVg0KIAkgIFNlbGVjdCB0aGlzIG9w dGlvbiB0byBydW4gTGludXggYXMgYSBIeXBlci1WIGNsaWVudCBvcGVyYXRpbmcNCiAJICBzeXN0 ZW0uDQogDQorY29uZmlnIEhZUEVSVl9USU1FUg0KKwlkZWZfYm9vbCBIWVBFUlYNCisNCiBjb25m aWcgSFlQRVJWX1RTQ1BBR0UNCiAgICAgICAgZGVmX2Jvb2wgSFlQRVJWICYmIFg4Nl82NA0KIA0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHYvaHYuYyBiL2RyaXZlcnMvaHYvaHYuYw0KaW5kZXggNjMy ZDI1Ni4uZTNlZTAxMCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvaHYvaHYuYw0KKysrIGIvZHJpdmVy cy9odi9odi5jDQpAQCAtMzYsMjEgKzM2LDYgQEANCiBzdHJ1Y3QgaHZfY29udGV4dCBodl9jb250 ZXh0Ow0KIA0KIC8qDQotICogSWYgZmFsc2UsIHdlJ3JlIHVzaW5nIHRoZSBvbGQgbWVjaGFuaXNt IGZvciBzdGltZXIwIGludGVycnVwdHMNCi0gKiB3aGVyZSBpdCBzZW5kcyBhIFZNYnVzIG1lc3Nh Z2Ugd2hlbiBpdCBleHBpcmVzLiBUaGUgb2xkDQotICogbWVjaGFuaXNtIGlzIHVzZWQgd2hlbiBy dW5uaW5nIG9uIG9sZGVyIHZlcnNpb25zIG9mIEh5cGVyLVYNCi0gKiB0aGF0IGRvbid0IHN1cHBv cnQgRGlyZWN0IE1vZGUuIFdoaWxlIEh5cGVyLVYgcHJvdmlkZXMNCi0gKiBmb3VyIHN0aW1lcidz IHBlciBDUFUsIExpbnV4IHVzZXMgb25seSBzdGltZXIwLg0KLSAqLw0KLXN0YXRpYyBib29sIGRp cmVjdF9tb2RlX2VuYWJsZWQ7DQotc3RhdGljIGludCBzdGltZXIwX2lycTsNCi1zdGF0aWMgaW50 IHN0aW1lcjBfdmVjdG9yOw0KLQ0KLSNkZWZpbmUgSFZfVElNRVJfRlJFUVVFTkNZICgxMCAqIDEw MDAgKiAxMDAwKSAvKiAxMDBucyBwZXJpb2QgKi8NCi0jZGVmaW5lIEhWX01BWF9NQVhfREVMVEFf VElDS1MgMHhmZmZmZmZmZg0KLSNkZWZpbmUgSFZfTUlOX0RFTFRBX1RJQ0tTIDENCi0NCi0vKg0K ICAqIGh2X2luaXQgLSBNYWluIGluaXRpYWxpemF0aW9uIHJvdXRpbmUuDQogICoNCiAgKiBUaGlz IHJvdXRpbmUgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciByb3V0aW5lcyBpbiBoZXJl IGFyZSBjYWxsZWQNCkBAIC02MCw5ICs0NSw2IEBAIGludCBodl9pbml0KHZvaWQpDQogCWh2X2Nv bnRleHQuY3B1X2NvbnRleHQgPSBhbGxvY19wZXJjcHUoc3RydWN0IGh2X3Blcl9jcHVfY29udGV4 dCk7DQogCWlmICghaHZfY29udGV4dC5jcHVfY29udGV4dCkNCiAJCXJldHVybiAtRU5PTUVNOw0K LQ0KLQlkaXJlY3RfbW9kZV9lbmFibGVkID0gbXNfaHlwZXJ2Lm1pc2NfZmVhdHVyZXMgJg0KLQkJ CUhWX1NUSU1FUl9ESVJFQ1RfTU9ERV9BVkFJTEFCTEU7DQogCXJldHVybiAwOw0KIH0NCiANCkBA IC0xMDEsODkgKzgzLDYgQEAgaW50IGh2X3Bvc3RfbWVzc2FnZSh1bmlvbiBodl9jb25uZWN0aW9u X2lkIGNvbm5lY3Rpb25faWQsDQogCXJldHVybiBzdGF0dXMgJiAweEZGRkY7DQogfQ0KIA0KLS8q DQotICogSVNSIGZvciB3aGVuIHN0aW1lcjAgaXMgb3BlcmF0aW5nIGluIERpcmVjdCBNb2RlLiAg RGlyZWN0IE1vZGUNCi0gKiBkb2VzIG5vdCB1c2UgVk1idXMgb3IgYW55IFZNYnVzIG1lc3NhZ2Vz LCBzbyBwcm9jZXNzIGhlcmUgYW5kIG5vdA0KLSAqIGluIHRoZSBWTWJ1cyBkcml2ZXIgY29kZS4N Ci0gKi8NCi0NCi1zdGF0aWMgdm9pZCBodl9zdGltZXIwX2lzcih2b2lkKQ0KLXsNCi0Jc3RydWN0 IGh2X3Blcl9jcHVfY29udGV4dCAqaHZfY3B1Ow0KLQ0KLQlodl9jcHUgPSB0aGlzX2NwdV9wdHIo aHZfY29udGV4dC5jcHVfY29udGV4dCk7DQotCWh2X2NwdS0+Y2xrX2V2dC0+ZXZlbnRfaGFuZGxl cihodl9jcHUtPmNsa19ldnQpOw0KLQlhZGRfaW50ZXJydXB0X3JhbmRvbW5lc3Moc3RpbWVyMF92 ZWN0b3IsIDApOw0KLX0NCi0NCi1zdGF0aWMgaW50IGh2X2NlX3NldF9uZXh0X2V2ZW50KHVuc2ln bmVkIGxvbmcgZGVsdGEsDQotCQkJCXN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmV2dCkNCi17 DQotCXU2NCBjdXJyZW50X3RpY2s7DQotDQotCVdBUk5fT04oIWNsb2NrZXZlbnRfc3RhdGVfb25l c2hvdChldnQpKTsNCi0NCi0JY3VycmVudF90aWNrID0gaHlwZXJ2X2NzLT5yZWFkKE5VTEwpOw0K LQljdXJyZW50X3RpY2sgKz0gZGVsdGE7DQotCWh2X2luaXRfdGltZXIoMCwgY3VycmVudF90aWNr KTsNCi0JcmV0dXJuIDA7DQotfQ0KLQ0KLXN0YXRpYyBpbnQgaHZfY2Vfc2h1dGRvd24oc3RydWN0 IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0KQ0KLXsNCi0JaHZfaW5pdF90aW1lcigwLCAwKTsNCi0J aHZfaW5pdF90aW1lcl9jb25maWcoMCwgMCk7DQotCWlmIChkaXJlY3RfbW9kZV9lbmFibGVkKQ0K LQkJaHZfZGlzYWJsZV9zdGltZXIwX3BlcmNwdV9pcnEoc3RpbWVyMF9pcnEpOw0KLQ0KLQlyZXR1 cm4gMDsNCi19DQotDQotc3RhdGljIGludCBodl9jZV9zZXRfb25lc2hvdChzdHJ1Y3QgY2xvY2tf ZXZlbnRfZGV2aWNlICpldnQpDQotew0KLQl1bmlvbiBodl9zdGltZXJfY29uZmlnIHRpbWVyX2Nm ZzsNCi0NCi0JdGltZXJfY2ZnLmFzX3VpbnQ2NCA9IDA7DQotCXRpbWVyX2NmZy5lbmFibGUgPSAx Ow0KLQl0aW1lcl9jZmcuYXV0b19lbmFibGUgPSAxOw0KLQlpZiAoZGlyZWN0X21vZGVfZW5hYmxl ZCkgew0KLQkJLyoNCi0JCSAqIFdoZW4gaXQgZXhwaXJlcywgdGhlIHRpbWVyIHdpbGwgZGlyZWN0 bHkgaW50ZXJydXB0DQotCQkgKiBvbiB0aGUgc3BlY2lmaWVkIGhhcmR3YXJlIHZlY3Rvci9JUlEu DQotCQkgKi8NCi0JCXRpbWVyX2NmZy5kaXJlY3RfbW9kZSA9IDE7DQotCQl0aW1lcl9jZmcuYXBp Y192ZWN0b3IgPSBzdGltZXIwX3ZlY3RvcjsNCi0JCWh2X2VuYWJsZV9zdGltZXIwX3BlcmNwdV9p cnEoc3RpbWVyMF9pcnEpOw0KLQl9IGVsc2Ugew0KLQkJLyoNCi0JCSAqIFdoZW4gaXQgZXhwaXJl cywgdGhlIHRpbWVyIHdpbGwgZ2VuZXJhdGUgYSBWTWJ1cyBtZXNzYWdlLA0KLQkJICogdG8gYmUg aGFuZGxlZCBieSB0aGUgbm9ybWFsIFZNYnVzIGludGVycnVwdCBoYW5kbGVyLg0KLQkJICovDQot CQl0aW1lcl9jZmcuZGlyZWN0X21vZGUgPSAwOw0KLQkJdGltZXJfY2ZnLnNpbnR4ID0gVk1CVVNf TUVTU0FHRV9TSU5UOw0KLQl9DQotCWh2X2luaXRfdGltZXJfY29uZmlnKDAsIHRpbWVyX2NmZy5h c191aW50NjQpOw0KLQlyZXR1cm4gMDsNCi19DQotDQotc3RhdGljIHZvaWQgaHZfaW5pdF9jbG9j a2V2ZW50X2RldmljZShzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNlICpkZXYsIGludCBjcHUpDQot ew0KLQlkZXYtPm5hbWUgPSAiSHlwZXItViBjbG9ja2V2ZW50IjsNCi0JZGV2LT5mZWF0dXJlcyA9 IENMT0NLX0VWVF9GRUFUX09ORVNIT1Q7DQotCWRldi0+Y3B1bWFzayA9IGNwdW1hc2tfb2YoY3B1 KTsNCi0JZGV2LT5yYXRpbmcgPSAxMDAwOw0KLQkvKg0KLQkgKiBBdm9pZCBzZXR0aW50IGRldi0+ b3duZXIgPSBUSElTX01PRFVMRSBkZWxpYmVyYXRlbHkgYXMgZG9pbmcgc28gd2lsbA0KLQkgKiBy ZXN1bHQgaW4gY2xvY2tldmVudHNfY29uZmlnX2FuZF9yZWdpc3RlcigpIHRha2luZyBhZGRpdGlv bmFsDQotCSAqIHJlZmVyZW5jZXMgdG8gdGhlIGh2X3ZtYnVzIG1vZHVsZSBtYWtpbmcgaXQgaW1w b3NzaWJsZSB0byB1bmxvYWQuDQotCSAqLw0KLQ0KLQlkZXYtPnNldF9zdGF0ZV9zaHV0ZG93biA9 IGh2X2NlX3NodXRkb3duOw0KLQlkZXYtPnNldF9zdGF0ZV9vbmVzaG90ID0gaHZfY2Vfc2V0X29u ZXNob3Q7DQotCWRldi0+c2V0X25leHRfZXZlbnQgPSBodl9jZV9zZXRfbmV4dF9ldmVudDsNCi19 DQotDQotDQogaW50IGh2X3N5bmljX2FsbG9jKHZvaWQpDQogew0KIAlpbnQgY3B1Ow0KQEAgLTIx MiwxNCArMTExLDYgQEAgaW50IGh2X3N5bmljX2FsbG9jKHZvaWQpDQogCQl0YXNrbGV0X2luaXQo Jmh2X2NwdS0+bXNnX2RwYywNCiAJCQkgICAgIHZtYnVzX29uX21zZ19kcGMsICh1bnNpZ25lZCBs b25nKSBodl9jcHUpOw0KIA0KLQkJaHZfY3B1LT5jbGtfZXZ0ID0ga3phbGxvYyhzaXplb2Yoc3Ry dWN0IGNsb2NrX2V2ZW50X2RldmljZSksDQotCQkJCQkgIEdGUF9LRVJORUwpOw0KLQkJaWYgKGh2 X2NwdS0+Y2xrX2V2dCA9PSBOVUxMKSB7DQotCQkJcHJfZXJyKCJVbmFibGUgdG8gYWxsb2NhdGUg Y2xvY2sgZXZlbnQgZGV2aWNlXG4iKTsNCi0JCQlnb3RvIGVycjsNCi0JCX0NCi0JCWh2X2luaXRf Y2xvY2tldmVudF9kZXZpY2UoaHZfY3B1LT5jbGtfZXZ0LCBjcHUpOw0KLQ0KIAkJaHZfY3B1LT5z eW5pY19tZXNzYWdlX3BhZ2UgPQ0KIAkJCSh2b2lkICopZ2V0X3plcm9lZF9wYWdlKEdGUF9BVE9N SUMpOw0KIAkJaWYgKGh2X2NwdS0+c3luaWNfbWVzc2FnZV9wYWdlID09IE5VTEwpIHsNCkBAIC0y NDIsMTEgKzEzMyw2IEBAIGludCBodl9zeW5pY19hbGxvYyh2b2lkKQ0KIAkJSU5JVF9MSVNUX0hF QUQoJmh2X2NwdS0+Y2hhbl9saXN0KTsNCiAJfQ0KIA0KLQlpZiAoZGlyZWN0X21vZGVfZW5hYmxl ZCAmJg0KLQkgICAgaHZfc2V0dXBfc3RpbWVyMF9pcnEoJnN0aW1lcjBfaXJxLCAmc3RpbWVyMF92 ZWN0b3IsDQotCQkJCWh2X3N0aW1lcjBfaXNyKSkNCi0JCWdvdG8gZXJyOw0KLQ0KIAlyZXR1cm4g MDsNCiBlcnI6DQogCS8qDQpAQCAtMjY1LDcgKzE1MSw2IEBAIHZvaWQgaHZfc3luaWNfZnJlZSh2 b2lkKQ0KIAkJc3RydWN0IGh2X3Blcl9jcHVfY29udGV4dCAqaHZfY3B1DQogCQkJPSBwZXJfY3B1 X3B0cihodl9jb250ZXh0LmNwdV9jb250ZXh0LCBjcHUpOw0KIA0KLQkJa2ZyZWUoaHZfY3B1LT5j bGtfZXZ0KTsNCiAJCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylodl9jcHUtPnN5bmljX2V2ZW50 X3BhZ2UpOw0KIAkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWh2X2NwdS0+c3luaWNfbWVzc2Fn ZV9wYWdlKTsNCiAJCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylodl9jcHUtPnBvc3RfbXNnX3Bh Z2UpOw0KQEAgLTMyNCwzOSArMjA5LDEwIEBAIGludCBodl9zeW5pY19pbml0KHVuc2lnbmVkIGlu dCBjcHUpDQogDQogCWh2X3NldF9zeW5pY19zdGF0ZShzY3RybC5hc191aW50NjQpOw0KIA0KLQkv Kg0KLQkgKiBSZWdpc3RlciB0aGUgcGVyLWNwdSBjbG9ja2V2ZW50IHNvdXJjZS4NCi0JICovDQot CWlmIChtc19oeXBlcnYuZmVhdHVyZXMgJiBIVl9NU1JfU1lOVElNRVJfQVZBSUxBQkxFKQ0KLQkJ Y2xvY2tldmVudHNfY29uZmlnX2FuZF9yZWdpc3Rlcihodl9jcHUtPmNsa19ldnQsDQotCQkJCQkJ SFZfVElNRVJfRlJFUVVFTkNZLA0KLQkJCQkJCUhWX01JTl9ERUxUQV9USUNLUywNCi0JCQkJCQlI Vl9NQVhfTUFYX0RFTFRBX1RJQ0tTKTsNCiAJcmV0dXJuIDA7DQogfQ0KIA0KIC8qDQotICogaHZf c3luaWNfY2xvY2tldmVudHNfY2xlYW51cCAtIENsZWFudXAgY2xvY2tldmVudCBkZXZpY2VzDQot ICovDQotdm9pZCBodl9zeW5pY19jbG9ja2V2ZW50c19jbGVhbnVwKHZvaWQpDQotew0KLQlpbnQg Y3B1Ow0KLQ0KLQlpZiAoIShtc19oeXBlcnYuZmVhdHVyZXMgJiBIVl9NU1JfU1lOVElNRVJfQVZB SUxBQkxFKSkNCi0JCXJldHVybjsNCi0NCi0JaWYgKGRpcmVjdF9tb2RlX2VuYWJsZWQpDQotCQlo dl9yZW1vdmVfc3RpbWVyMF9pcnEoc3RpbWVyMF9pcnEpOw0KLQ0KLQlmb3JfZWFjaF9wcmVzZW50 X2NwdShjcHUpIHsNCi0JCXN0cnVjdCBodl9wZXJfY3B1X2NvbnRleHQgKmh2X2NwdQ0KLQkJCT0g cGVyX2NwdV9wdHIoaHZfY29udGV4dC5jcHVfY29udGV4dCwgY3B1KTsNCi0NCi0JCWNsb2NrZXZl bnRzX3VuYmluZF9kZXZpY2UoaHZfY3B1LT5jbGtfZXZ0LCBjcHUpOw0KLQl9DQotfQ0KLQ0KLS8q DQogICogaHZfc3luaWNfY2xlYW51cCAtIENsZWFudXAgcm91dGluZSBmb3IgaHZfc3luaWNfaW5p dCgpLg0KICAqLw0KIGludCBodl9zeW5pY19jbGVhbnVwKHVuc2lnbmVkIGludCBjcHUpDQpAQCAt NDAxLDE2ICsyNTcsNiBAQCBpbnQgaHZfc3luaWNfY2xlYW51cCh1bnNpZ25lZCBpbnQgY3B1KQ0K IAlpZiAoY2hhbm5lbF9mb3VuZCAmJiB2bWJ1c19jb25uZWN0aW9uLmNvbm5fc3RhdGUgPT0gQ09O TkVDVEVEKQ0KIAkJcmV0dXJuIC1FQlVTWTsNCiANCi0JLyogVHVybiBvZmYgY2xvY2tldmVudCBk ZXZpY2UgKi8NCi0JaWYgKG1zX2h5cGVydi5mZWF0dXJlcyAmIEhWX01TUl9TWU5USU1FUl9BVkFJ TEFCTEUpIHsNCi0JCXN0cnVjdCBodl9wZXJfY3B1X2NvbnRleHQgKmh2X2NwdQ0KLQkJCT0gdGhp c19jcHVfcHRyKGh2X2NvbnRleHQuY3B1X2NvbnRleHQpOw0KLQ0KLQkJY2xvY2tldmVudHNfdW5i aW5kX2RldmljZShodl9jcHUtPmNsa19ldnQsIGNwdSk7DQotCQlodl9jZV9zaHV0ZG93bihodl9j cHUtPmNsa19ldnQpOw0KLQkJcHV0X2NwdV9wdHIoaHZfY3B1KTsNCi0JfQ0KLQ0KIAlodl9nZXRf c3luaW50X3N0YXRlKFZNQlVTX01FU1NBR0VfU0lOVCwgc2hhcmVkX3NpbnQuYXNfdWludDY0KTsN CiANCiAJc2hhcmVkX3NpbnQubWFza2VkID0gMTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h2L2h5 cGVydl92bWJ1cy5oIGIvZHJpdmVycy9odi9oeXBlcnZfdm1idXMuaA0KaW5kZXggY2I4NmIxMzMu LmZmZDRhZDggMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2h2L2h5cGVydl92bWJ1cy5oDQorKysgYi9k cml2ZXJzL2h2L2h5cGVydl92bWJ1cy5oDQpAQCAtMTUxLDcgKzE1MSw2IEBAIHN0cnVjdCBodl9w ZXJfY3B1X2NvbnRleHQgew0KIAkgKiBwZXItY3B1IGxpc3Qgb2YgdGhlIGNoYW5uZWxzIGJhc2Vk IG9uIHRoZWlyIENQVSBhZmZpbml0eS4NCiAJICovDQogCXN0cnVjdCBsaXN0X2hlYWQgY2hhbl9s aXN0Ow0KLQlzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNlICpjbGtfZXZ0Ow0KIH07DQogDQogc3Ry dWN0IGh2X2NvbnRleHQgew0KQEAgLTE4OSw4ICsxODgsNiBAQCBleHRlcm4gaW50IGh2X3Bvc3Rf bWVzc2FnZSh1bmlvbiBodl9jb25uZWN0aW9uX2lkIGNvbm5lY3Rpb25faWQsDQogDQogZXh0ZXJu IGludCBodl9zeW5pY19jbGVhbnVwKHVuc2lnbmVkIGludCBjcHUpOw0KIA0KLWV4dGVybiB2b2lk IGh2X3N5bmljX2Nsb2NrZXZlbnRzX2NsZWFudXAodm9pZCk7DQotDQogLyogSW50ZXJmYWNlICov DQogDQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9odi92bWJ1c19kcnYuYyBiL2RyaXZlcnMvaHYv dm1idXNfZHJ2LmMNCmluZGV4IDAwMGI1M2UuLmU3MWIwNGIgMTAwNjQ0DQotLS0gYS9kcml2ZXJz L2h2L3ZtYnVzX2Rydi5jDQorKysgYi9kcml2ZXJzL2h2L3ZtYnVzX2Rydi5jDQpAQCAtNDMsNiAr NDMsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9rZGVidWcuaD4NCiAjaW5jbHVkZSA8bGludXgvZWZp Lmg+DQogI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPg0KKyNpbmNsdWRlIDxjbG9ja3NvdXJjZS9o eXBlcnZfdGltZXIuaD4NCiAjaW5jbHVkZSAiaHlwZXJ2X3ZtYnVzLmgiDQogDQogc3RydWN0IHZt YnVzX2R5bmlkIHsNCkBAIC05MzksMTcgKzk0MCw2IEBAIHN0YXRpYyB2b2lkIHZtYnVzX29ubWVz c2FnZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCiAJa2ZyZWUoY3R4KTsNCiB9DQog DQotc3RhdGljIHZvaWQgaHZfcHJvY2Vzc190aW1lcl9leHBpcmF0aW9uKHN0cnVjdCBodl9tZXNz YWdlICptc2csDQotCQkJCQlzdHJ1Y3QgaHZfcGVyX2NwdV9jb250ZXh0ICpodl9jcHUpDQotew0K LQlzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNlICpkZXYgPSBodl9jcHUtPmNsa19ldnQ7DQotDQot CWlmIChkZXYtPmV2ZW50X2hhbmRsZXIpDQotCQlkZXYtPmV2ZW50X2hhbmRsZXIoZGV2KTsNCi0N Ci0Jdm1idXNfc2lnbmFsX2VvbShtc2csIEhWTVNHX1RJTUVSX0VYUElSRUQpOw0KLX0NCi0NCiB2 b2lkIHZtYnVzX29uX21zZ19kcGModW5zaWduZWQgbG9uZyBkYXRhKQ0KIHsNCiAJc3RydWN0IGh2 X3Blcl9jcHVfY29udGV4dCAqaHZfY3B1ID0gKHZvaWQgKilkYXRhOw0KQEAgLTExNDMsOSArMTEz MywxMCBAQCBzdGF0aWMgdm9pZCB2bWJ1c19pc3Iodm9pZCkNCiANCiAJLyogQ2hlY2sgaWYgdGhl cmUgYXJlIGFjdHVhbCBtc2dzIHRvIGJlIHByb2Nlc3NlZCAqLw0KIAlpZiAobXNnLT5oZWFkZXIu bWVzc2FnZV90eXBlICE9IEhWTVNHX05PTkUpIHsNCi0JCWlmIChtc2ctPmhlYWRlci5tZXNzYWdl X3R5cGUgPT0gSFZNU0dfVElNRVJfRVhQSVJFRCkNCi0JCQlodl9wcm9jZXNzX3RpbWVyX2V4cGly YXRpb24obXNnLCBodl9jcHUpOw0KLQkJZWxzZQ0KKwkJaWYgKG1zZy0+aGVhZGVyLm1lc3NhZ2Vf dHlwZSA9PSBIVk1TR19USU1FUl9FWFBJUkVEKSB7DQorCQkJaHZfc3RpbWVyMF9pc3IoKTsNCisJ CQl2bWJ1c19zaWduYWxfZW9tKG1zZywgSFZNU0dfVElNRVJfRVhQSVJFRCk7DQorCQl9IGVsc2UN CiAJCQl0YXNrbGV0X3NjaGVkdWxlKCZodl9jcHUtPm1zZ19kcGMpOw0KIAl9DQogDQpAQCAtMTI0 OCw4ICsxMjM5LDggQEAgc3RhdGljIGludCB2bWJ1c19idXNfaW5pdCh2b2lkKQ0KIAlpZiAocmV0 KQ0KIAkJZ290byBlcnJfYWxsb2M7DQogCS8qDQotCSAqIEluaXRpYWxpemUgdGhlIHBlci1jcHUg aW50ZXJydXB0IHN0YXRlIGFuZA0KLQkgKiBjb25uZWN0IHRvIHRoZSBob3N0Lg0KKwkgKiBJbml0 aWFsaXplIHRoZSBwZXItY3B1IGludGVycnVwdCBzdGF0ZSBhbmQgc3RpbWVyIHN0YXRlLg0KKwkg KiBUaGVuIGNvbm5lY3QgdG8gdGhlIGhvc3QuDQogCSAqLw0KIAlyZXQgPSBjcHVocF9zZXR1cF9z dGF0ZShDUFVIUF9BUF9PTkxJTkVfRFlOLCAiaHlwZXJ2L3ZtYnVzOm9ubGluZSIsDQogCQkJCWh2 X3N5bmljX2luaXQsIGh2X3N5bmljX2NsZWFudXApOw0KQEAgLTEyNTcsNiArMTI0OCwxMCBAQCBz dGF0aWMgaW50IHZtYnVzX2J1c19pbml0KHZvaWQpDQogCQlnb3RvIGVycl9hbGxvYzsNCiAJaHlw ZXJ2X2NwdWhwX29ubGluZSA9IHJldDsNCiANCisJcmV0ID0gaHZfc3RpbWVyX2FsbG9jKFZNQlVT X01FU1NBR0VfU0lOVCk7DQorCWlmIChyZXQgPCAwKQ0KKwkJZ290byBlcnJfc3RpbWVyX2FsbG9j Ow0KKw0KIAlyZXQgPSB2bWJ1c19jb25uZWN0KCk7DQogCWlmIChyZXQpDQogCQlnb3RvIGVycl9j b25uZWN0Ow0KQEAgLTEzMDEsNiArMTI5Niw4IEBAIHN0YXRpYyBpbnQgdm1idXNfYnVzX2luaXQo dm9pZCkNCiAJcmV0dXJuIDA7DQogDQogZXJyX2Nvbm5lY3Q6DQorCWh2X3N0aW1lcl9mcmVlKCk7 DQorZXJyX3N0aW1lcl9hbGxvYzoNCiAJY3B1aHBfcmVtb3ZlX3N0YXRlKGh5cGVydl9jcHVocF9v bmxpbmUpOw0KIGVycl9hbGxvYzoNCiAJaHZfc3luaWNfZnJlZSgpOw0KQEAgLTE5NzEsNyArMTk2 OCw3IEBAIHN0YXRpYyBpbnQgdm1idXNfYWNwaV9hZGQoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZp Y2UpDQogDQogc3RhdGljIHZvaWQgaHZfa2V4ZWNfaGFuZGxlcih2b2lkKQ0KIHsNCi0JaHZfc3lu aWNfY2xvY2tldmVudHNfY2xlYW51cCgpOw0KKwlodl9zdGltZXJfZ2xvYmFsX2NsZWFudXAoKTsN CiAJdm1idXNfaW5pdGlhdGVfdW5sb2FkKGZhbHNlKTsNCiAJdm1idXNfY29ubmVjdGlvbi5jb25u X3N0YXRlID0gRElTQ09OTkVDVEVEOw0KIAkvKiBNYWtlIHN1cmUgY29ubl9zdGF0ZSBpcyBzZXQg YXMgaHZfc3luaWNfY2xlYW51cCBjaGVja3MgZm9yIGl0ICovDQpAQCAtMTk4Miw2ICsxOTc5LDgg QEAgc3RhdGljIHZvaWQgaHZfa2V4ZWNfaGFuZGxlcih2b2lkKQ0KIA0KIHN0YXRpYyB2b2lkIGh2 X2NyYXNoX2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpDQogew0KKwlpbnQgY3B1Ow0KKw0K IAl2bWJ1c19pbml0aWF0ZV91bmxvYWQodHJ1ZSk7DQogCS8qDQogCSAqIEluIGNyYXNoIGhhbmRs ZXIgd2UgY2FuJ3Qgc2NoZWR1bGUgc3luaWMgY2xlYW51cCBmb3IgYWxsIENQVXMsDQpAQCAtMTk4 OSw3ICsxOTg4LDkgQEAgc3RhdGljIHZvaWQgaHZfY3Jhc2hfaGFuZGxlcihzdHJ1Y3QgcHRfcmVn cyAqcmVncykNCiAJICogZm9yIGtkdW1wLg0KIAkgKi8NCiAJdm1idXNfY29ubmVjdGlvbi5jb25u X3N0YXRlID0gRElTQ09OTkVDVEVEOw0KLQlodl9zeW5pY19jbGVhbnVwKHNtcF9wcm9jZXNzb3Jf aWQoKSk7DQorCWNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsNCisJaHZfc3RpbWVyX2NsZWFudXAo Y3B1KTsNCisJaHZfc3luaWNfY2xlYW51cChjcHUpOw0KIAloeXBlcnZfY2xlYW51cCgpOw0KIH07 DQogDQpAQCAtMjAzOCw3ICsyMDM5LDcgQEAgc3RhdGljIHZvaWQgX19leGl0IHZtYnVzX2V4aXQo dm9pZCkNCiAJaHZfcmVtb3ZlX2tleGVjX2hhbmRsZXIoKTsNCiAJaHZfcmVtb3ZlX2NyYXNoX2hh bmRsZXIoKTsNCiAJdm1idXNfY29ubmVjdGlvbi5jb25uX3N0YXRlID0gRElTQ09OTkVDVEVEOw0K LQlodl9zeW5pY19jbG9ja2V2ZW50c19jbGVhbnVwKCk7DQorCWh2X3N0aW1lcl9nbG9iYWxfY2xl YW51cCgpOw0KIAl2bWJ1c19kaXNjb25uZWN0KCk7DQogCWh2X3JlbW92ZV92bWJ1c19pcnEoKTsN CiAJZm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHsNCmRpZmYgLS1naXQgYS9pbmNsdWRlL2Nsb2Nr c291cmNlL2h5cGVydl90aW1lci5oIGIvaW5jbHVkZS9jbG9ja3NvdXJjZS9oeXBlcnZfdGltZXIu aA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLjFhNTY5OGMNCi0tLSAvZGV2 L251bGwNCisrKyBiL2luY2x1ZGUvY2xvY2tzb3VyY2UvaHlwZXJ2X3RpbWVyLmgNCkBAIC0wLDAg KzEsMjYgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KKw0KKy8q DQorICogRGVmaW5pdGlvbnMgZm9yIHRoZSBjbG9ja3NvdXJjZSBwcm92aWRlZCBieSB0aGUgSHlw ZXItVg0KKyAqIGh5cGVydmlzb3IgdG8gZ3Vlc3QgVk1zLCBhcyBkZXNjcmliZWQgaW4gdGhlIEh5 cGVyLVYgVG9wDQorICogTGV2ZWwgRnVuY3Rpb25hbCBTcGVjIChUTEZTKS4NCisgKg0KKyAqIENv cHlyaWdodCAoQykgMjAxOSwgTWljcm9zb2Z0LCBJbmMuDQorICoNCisgKiBBdXRob3I6ICBNaWNo YWVsIEtlbGxleSA8bWlrZWxsZXlAbWljcm9zb2Z0LmNvbT4NCisgKi8NCisNCisjaWZuZGVmIF9f Q0xLU09VUkNFX0hZUEVSVl9USU1FUl9IDQorI2RlZmluZSBfX0NMS1NPVVJDRV9IWVBFUlZfVElN RVJfSA0KKw0KKyNkZWZpbmUgSFZfTUFYX01BWF9ERUxUQV9USUNLUyAweGZmZmZmZmZmDQorI2Rl ZmluZSBIVl9NSU5fREVMVEFfVElDS1MgMQ0KKw0KKy8qIFJvdXRpbmVzIGNhbGxlZCBieSB0aGUg Vk1idXMgZHJpdmVyICovDQorZXh0ZXJuIGludCBodl9zdGltZXJfYWxsb2MoaW50IHNpbnQpOw0K K2V4dGVybiB2b2lkIGh2X3N0aW1lcl9mcmVlKHZvaWQpOw0KK2V4dGVybiBpbnQgaHZfc3RpbWVy X2NsZWFudXAodW5zaWduZWQgaW50IGNwdSk7DQorZXh0ZXJuIHZvaWQgaHZfc3RpbWVyX2dsb2Jh bF9jbGVhbnVwKHZvaWQpOw0KK2V4dGVybiB2b2lkIGh2X3N0aW1lcjBfaXNyKHZvaWQpOw0KKw0K KyNlbmRpZg0KLS0gDQoxLjguMy4xDQoNCg==