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=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,T_DKIMWL_WL_HIGH,USER_AGENT_GIT autolearn=unavailable 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 0C98FC072B1 for ; Mon, 27 May 2019 14:59:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C48C1217F4 for ; Mon, 27 May 2019 14:59:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=microsoft.com header.i=@microsoft.com header.b="hcPhb6tu" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726799AbfE0O73 (ORCPT ); Mon, 27 May 2019 10:59:29 -0400 Received: from mail-eopbgr690120.outbound.protection.outlook.com ([40.107.69.120]:52197 "EHLO NAM04-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726276AbfE0O72 (ORCPT ); Mon, 27 May 2019 10:59:28 -0400 ARC-Seal: i=1; a=rsa-sha256; s=testarcselector01; d=microsoft.com; cv=none; b=UvulpEIXTeA8ub6LZJMHJ0YTA3gSp1UKlVE+Jdv5E27R6nu6s+agm9rOZcKFitfRX8jx4t0Ar2hhUVdzsYIV6g0E5xUH47IGdyJ4/O1lPP0EemR7qOB0vhZNUyMWJhe76ergENApPF6ENfm4d4bIsFjg3efl1RU+Y+ur93doyaY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=testarcselector01; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MXpU7pJWrAtgVeWyKVlFehNlE8mFtLhT+Ht1G/d/EAQ=; b=WZoxs5R12Bu35cfgzX4wFKQPdRtzzzfLl2iCFMLTI/rexuD5Prxw0q8hHKu8j7Q0HabHenGstPM5AY7/bpk7uNdNpDm31Eb234NkU4QtUNWGewju/RGovMbkTJMDNXFzqeIfszPe9Vv9wUiPEfn0qSN+74GjHZdUTJ3NKSymNJc= ARC-Authentication-Results: i=1; test.office365.com 1;spf=none;dmarc=none action=none header.from=microsoft.com;dkim=none (message not signed);arc=none 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=MXpU7pJWrAtgVeWyKVlFehNlE8mFtLhT+Ht1G/d/EAQ=; b=hcPhb6tuOuJNW7CiqWXgfUOpyWhLM/PH5P2gJOorSsSN9KqYnhxL1J5H7AC1VUpkKIEQh5VqeKUoYawAfV3EEHsRvSFA6cnrr91OmXHPGtRjzfd1lspxa9gi7fDSgiwYB3KIZT4+2Xt2mLTLhACx2vxLnZBa8sXadTNEDcr1Avk= Received: from DM6PR21MB1340.namprd21.prod.outlook.com (2603:10b6:5:175::19) by DM6PR21MB1339.namprd21.prod.outlook.com (2603:10b6:5:175::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1878.9; Mon, 27 May 2019 14:59:22 +0000 Received: from DM6PR21MB1340.namprd21.prod.outlook.com ([fe80::5057:9e3c:bcc5:9470]) by DM6PR21MB1340.namprd21.prod.outlook.com ([fe80::5057:9e3c:bcc5:9470%3]) with mapi id 15.20.1943.006; Mon, 27 May 2019 14:59:22 +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 v3 1/2] Drivers: hv: Create Hyper-V clocksource driver from existing clockevents code Thread-Topic: [PATCH v3 1/2] Drivers: hv: Create Hyper-V clocksource driver from existing clockevents code Thread-Index: AQHVFJzEz/iHM1ScbUyeLyioewvyRw== Date: Mon, 27 May 2019 14:59:21 +0000 Message-ID: <1558969089-13204-2-git-send-email-mikelley@microsoft.com> References: <1558969089-13204-1-git-send-email-mikelley@microsoft.com> In-Reply-To: <1558969089-13204-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: MWHPR12CA0056.namprd12.prod.outlook.com (2603:10b6:300:103::18) To DM6PR21MB1340.namprd21.prod.outlook.com (2603:10b6:5:175::19) authentication-results: spf=none (sender IP is ) smtp.mailfrom=mikelley@microsoft.com; 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: b53ce6e1-85f4-4421-0ea9-08d6e2b3e6bd x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600148)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DM6PR21MB1339; x-ms-traffictypediagnostic: DM6PR21MB1339: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 0050CEFE70 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(39860400002)(376002)(136003)(346002)(396003)(199004)(189003)(52116002)(7416002)(52396003)(64756008)(81166006)(14454004)(99286004)(6512007)(6436002)(2616005)(6636002)(76176011)(71190400001)(256004)(53936002)(71200400001)(476003)(26005)(73956011)(66476007)(66446008)(6486002)(68736007)(8936002)(4720700003)(478600001)(1511001)(53946003)(7736002)(66946007)(386003)(11346002)(446003)(66066001)(66556008)(2501003)(2201001)(50226002)(54906003)(102836004)(22452003)(81156014)(305945005)(486006)(10090500001)(8676002)(186003)(316002)(25786009)(14444005)(3846002)(36756003)(4326008)(30864003)(10290500003)(5660300002)(86362001)(110136005)(6116002)(86612001)(6506007)(2906002)(921003)(1121003)(579004);DIR:OUT;SFP:1102;SCL:1;SRVR:DM6PR21MB1339;H:DM6PR21MB1340.namprd21.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: /ieHofaDVjoFlkZGBqs9JT5sG/zof1g02b2O2eRQ0g2/K7Eqy6TfaM6TvlXH34v9ACchE0+v6CidVE9J7v8aGxvuTDLr1hewiLB6YH2mNckRMkhnFYXXStPNM/ug05L/Zvw3ZowhwPJaqqsrVfxZ5sM8YE4Bzv0k7sU9weLnXdcnUmc/cD5AjZY/uswCaftRxWNPLa70gbtGhrY6c/cPhnSAm9mC6lDQAKbvFl12jnM5Q670Gllyj6y6iAGE419JoCVHNbqV7T2yADTgeZDUloGiDwPXMd6BWqnVxyFieu8TLfzgB5VSHJqOAJDtzQcH5tS3trV7r7UUku9hyXylyvcVgQnVoo0XeHoCXDAeXfY0pr8d2Kx0WZRsldm524I0rKNnmlsMdw9glptRvM2PwQw9kgiTPaoW8/wDG9mg3Tk= 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: b53ce6e1-85f4-4421-0ea9-08d6e2b3e6bd X-MS-Exchange-CrossTenant-originalarrivaltime: 27 May 2019 14:59:21.9408 (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: DM6PR21MB1339 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Q2xvY2tldmVudHMgY29kZSBmb3IgSHlwZXItViBzeW50aGV0aWMgdGltZXJzIGlzIGN1cnJlbnRs eSBtaXhlZA0KaW4gd2l0aCBvdGhlciBIeXBlci1WIGNvZGUuIE1vdmUgdGhlIGNvZGUgdG8gYSBI eXBlci1WIHNwZWNpZmljDQpkcml2ZXIgaW4gdGhlICJjbG9ja3NvdXJjZSIgZGlyZWN0b3J5LiBV cGRhdGUgdGhlIFZNYnVzIGRyaXZlcg0KdG8gY2FsbCBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51 cCByb3V0aW5lcyBzaW5jZSB0aGUgSHlwZXItVg0Kc3ludGhldGljIHRpbWVycyBhcmUgbm90IGlu ZGVwZW5kZW50bHkgZW51bWVyYXRlZCBpbiBBQ1BJLg0KDQpObyBiZWhhdmlvciBpcyBjaGFuZ2Vk IGFuZCBubyBuZXcgZnVuY3Rpb25hbGl0eSBpcyBhZGRlZC4NCg0KU3VnZ2VzdGVkLWJ5OiBNYXJj IFp5bmdpZXIgPG1hcmMuenluZ2llckBhcm0uY29tPg0KU2lnbmVkLW9mZi1ieTogTWljaGFlbCBL ZWxsZXkgPG1pa2VsbGV5QG1pY3Jvc29mdC5jb20+DQotLS0NCiBNQUlOVEFJTkVSUyAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICsNCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9oeXBlcnYtdGxm cy5oIHwgICA2ICsrDQogYXJjaC94ODYva2VybmVsL2NwdS9tc2h5cGVydi5jICAgICB8ICAgMiAr DQogZHJpdmVycy9jbG9ja3NvdXJjZS9NYWtlZmlsZSAgICAgICB8ICAgMSArDQogZHJpdmVycy9j bG9ja3NvdXJjZS9oeXBlcnZfdGltZXIuYyB8IDE5MSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrDQogZHJpdmVycy9odi9LY29uZmlnICAgICAgICAgICAgICAgICB8ICAgMyAr DQogZHJpdmVycy9odi9odi5jICAgICAgICAgICAgICAgICAgICB8IDE1NiArLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCiBkcml2ZXJzL2h2L2h5cGVydl92bWJ1cy5oICAgICAgICAgIHwg ICAzIC0NCiBkcml2ZXJzL2h2L3ZtYnVzX2Rydi5jICAgICAgICAgICAgIHwgIDQyICsrKystLS0t DQogaW5jbHVkZS9jbG9ja3NvdXJjZS9oeXBlcnZfdGltZXIuaCB8ICAyNyArKysrKysNCiAxMCBm aWxlcyBjaGFuZ2VkLCAyNTggaW5zZXJ0aW9ucygrKSwgMTc1IGRlbGV0aW9ucygtKQ0KIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2Nsb2Nrc291cmNlL2h5cGVydl90aW1lci5jDQogY3JlYXRl IG1vZGUgMTAwNjQ0IGluY2x1ZGUvY2xvY2tzb3VyY2UvaHlwZXJ2X3RpbWVyLmgNCg0KZGlmZiAt LWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMNCmluZGV4IDk5MmYxZGQuLmNmMmE1Yjcg MTAwNjQ0DQotLS0gYS9NQUlOVEFJTkVSUw0KKysrIGIvTUFJTlRBSU5FUlMNCkBAIC03Mjk0LDYg KzcyOTQsNyBAQCBGOglhcmNoL3g4Ni9pbmNsdWRlL2FzbS90cmFjZS9oeXBlcnYuaA0KIEY6CWFy Y2gveDg2L2luY2x1ZGUvYXNtL2h5cGVydi10bGZzLmgNCiBGOglhcmNoL3g4Ni9rZXJuZWwvY3B1 L21zaHlwZXJ2LmMNCiBGOglhcmNoL3g4Ni9oeXBlcnYNCitGOglkcml2ZXJzL2Nsb2Nrc291cmNl L2h5cGVydl90aW1lci5jDQogRjoJZHJpdmVycy9oaWQvaGlkLWh5cGVydi5jDQogRjoJZHJpdmVy cy9odi8NCiBGOglkcml2ZXJzL2lucHV0L3NlcmlvL2h5cGVydi1rZXlib2FyZC5jDQpAQCAtNzMw NCw2ICs3MzA1LDcgQEAgRjoJZHJpdmVycy91aW8vdWlvX2h2X2dlbmVyaWMuYw0KIEY6CWRyaXZl cnMvdmlkZW8vZmJkZXYvaHlwZXJ2X2ZiLmMNCiBGOglkcml2ZXJzL2lvbW11L2h5cGVydl9pb21t dS5jDQogRjoJbmV0L3Ztd192c29jay9oeXBlcnZfdHJhbnNwb3J0LmMNCitGOglpbmNsdWRlL2Ns b2Nrc291cmNlL2h5cGVydl90aW1lci5oDQogRjoJaW5jbHVkZS9saW51eC9oeXBlcnYuaA0KIEY6 CWluY2x1ZGUvdWFwaS9saW51eC9oeXBlcnYuaA0KIEY6CXRvb2xzL2h2Lw0KZGlmZiAtLWdpdCBh L2FyY2gveDg2L2luY2x1ZGUvYXNtL2h5cGVydi10bGZzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9oeXBlcnYtdGxmcy5oDQppbmRleCBjZGY0NGFhLi5hZjc4Y2Q3IDEwMDY0NA0KLS0tIGEvYXJj aC94ODYvaW5jbHVkZS9hc20vaHlwZXJ2LXRsZnMuaA0KKysrIGIvYXJjaC94ODYvaW5jbHVkZS9h c20vaHlwZXJ2LXRsZnMuaA0KQEAgLTQwMSw2ICs0MDEsMTIgQEAgZW51bSBIVl9HRU5FUklDX1NF VF9GT1JNQVQgew0KICNkZWZpbmUgSFZfU1RBVFVTX0lOVkFMSURfQ09OTkVDVElPTl9JRAkJMTgN CiAjZGVmaW5lIEhWX1NUQVRVU19JTlNVRkZJQ0lFTlRfQlVGRkVSUwkJMTkNCiANCisvKg0KKyAq IFRoZSBIeXBlci1WIFRpbWVSZWZDb3VudCByZWdpc3RlciBhbmQgdGhlIFRTQw0KKyAqIHBhZ2Ug cHJvdmlkZSBhIGd1ZXN0IFZNIGNsb2NrIHdpdGggMTAwbnMgdGljayByYXRlDQorICovDQorI2Rl ZmluZSBIVl9DTE9DS19IWiAoTlNFQ19QRVJfU0VDLzEwMCkNCisNCiB0eXBlZGVmIHN0cnVjdCBf SFZfUkVGRVJFTkNFX1RTQ19QQUdFIHsNCiAJX191MzIgdHNjX3NlcXVlbmNlOw0KIAlfX3UzMiBy ZXMxOw0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbXNoeXBlcnYuYyBiL2FyY2gv eDg2L2tlcm5lbC9jcHUvbXNoeXBlcnYuYw0KaW5kZXggZmFhZTYxMS4uYjE4ZWRlNCAxMDA2NDQN Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbXNoeXBlcnYuYw0KKysrIGIvYXJjaC94ODYva2Vy bmVsL2NwdS9tc2h5cGVydi5jDQpAQCAtMjEsNiArMjEsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9p cnEuaD4NCiAjaW5jbHVkZSA8bGludXgva2V4ZWMuaD4NCiAjaW5jbHVkZSA8bGludXgvaTgyNTMu aD4NCisjaW5jbHVkZSA8bGludXgvcmFuZG9tLmg+DQogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3Iu aD4NCiAjaW5jbHVkZSA8YXNtL2h5cGVydmlzb3IuaD4NCiAjaW5jbHVkZSA8YXNtL2h5cGVydi10 bGZzLmg+DQpAQCAtODQsNiArODUsNyBAQCBfX3Zpc2libGUgdm9pZCBfX2lycV9lbnRyeSBodl9z dGltZXIwX3ZlY3Rvcl9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQ0KIAlpbmNfaXJxX3N0 YXQoaHlwZXJ2X3N0aW1lcjBfY291bnQpOw0KIAlpZiAoaHZfc3RpbWVyMF9oYW5kbGVyKQ0KIAkJ aHZfc3RpbWVyMF9oYW5kbGVyKCk7DQorCWFkZF9pbnRlcnJ1cHRfcmFuZG9tbmVzcyhIWVBFUlZf U1RJTUVSMF9WRUNUT1IsIDApOw0KIAlhY2tfQVBJQ19pcnEoKTsNCiANCiAJZXhpdGluZ19pcnEo KTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsb2Nrc291cmNlL01ha2VmaWxlIGIvZHJpdmVycy9j bG9ja3NvdXJjZS9NYWtlZmlsZQ0KaW5kZXggMjM2ODU4Zi4uMmI2NWM1ZiAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvY2xvY2tzb3VyY2UvTWFrZWZpbGUNCisrKyBiL2RyaXZlcnMvY2xvY2tzb3VyY2Uv TWFrZWZpbGUNCkBAIC04NCwzICs4NCw0IEBAIG9iai0kKENPTkZJR19BVENQSVQxMDBfVElNRVIp CQkrPSB0aW1lci1hdGNwaXQxMDAubw0KIG9iai0kKENPTkZJR19SSVNDVl9USU1FUikJCSs9IHRp bWVyLXJpc2N2Lm8NCiBvYmotJChDT05GSUdfQ1NLWV9NUF9USU1FUikJCSs9IHRpbWVyLW1wLWNz a3kubw0KIG9iai0kKENPTkZJR19HWDY2MDVTX1RJTUVSKQkJKz0gdGltZXItZ3g2NjA1cy5vDQor b2JqLSQoQ09ORklHX0hZUEVSVl9USU1FUikJCSs9IGh5cGVydl90aW1lci5vDQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9jbG9ja3NvdXJjZS9oeXBlcnZfdGltZXIuYyBiL2RyaXZlcnMvY2xvY2tzb3Vy Y2UvaHlwZXJ2X3RpbWVyLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi4z MDYxNWYzDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL2Nsb2Nrc291cmNlL2h5cGVydl90 aW1lci5jDQpAQCAtMCwwICsxLDE5MSBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wDQorDQorLyoNCisgKiBDbG9ja3NvdXJjZSBkcml2ZXIgZm9yIHRoZSBzeW50aGV0aWMg Y291bnRlciBhbmQgdGltZXJzDQorICogcHJvdmlkZWQgYnkgdGhlIEh5cGVyLVYgaHlwZXJ2aXNv ciB0byBndWVzdCBWTXMsIGFzIGRlc2NyaWJlZA0KKyAqIGluIHRoZSBIeXBlci1WIFRvcCBMZXZl bCBGdW5jdGlvbmFsIFNwZWMgKFRMRlMpLiBUaGlzIGRyaXZlcg0KKyAqIGlzIGluc3RydWN0aW9u IHNldCBhcmNoaXRlY3R1cmUgaW5kZXBlbmRlbnQuDQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDIw MTksIE1pY3Jvc29mdCwgSW5jLg0KKyAqDQorICogQXV0aG9yOiAgTWljaGFlbCBLZWxsZXkgPG1p a2VsbGV5QG1pY3Jvc29mdC5jb20+DQorICovDQorDQorI2luY2x1ZGUgPGxpbnV4L3BlcmNwdS5o Pg0KKyNpbmNsdWRlIDxsaW51eC9jcHVtYXNrLmg+DQorI2luY2x1ZGUgPGxpbnV4L2Nsb2NrY2hp cHMuaD4NCisjaW5jbHVkZSA8bGludXgvbW0uaD4NCisjaW5jbHVkZSA8Y2xvY2tzb3VyY2UvaHlw ZXJ2X3RpbWVyLmg+DQorI2luY2x1ZGUgPGFzbS9oeXBlcnYtdGxmcy5oPg0KKyNpbmNsdWRlIDxh c20vbXNoeXBlcnYuaD4NCisNCitzdGF0aWMgc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSBfX3Bl cmNwdSAqaHZfY2xvY2tfZXZlbnQ7DQorDQorLyoNCisgKiBJZiBmYWxzZSwgd2UncmUgdXNpbmcg dGhlIG9sZCBtZWNoYW5pc20gZm9yIHN0aW1lcjAgaW50ZXJydXB0cw0KKyAqIHdoZXJlIGl0IHNl bmRzIGEgVk1idXMgbWVzc2FnZSB3aGVuIGl0IGV4cGlyZXMuIFRoZSBvbGQNCisgKiBtZWNoYW5p c20gaXMgdXNlZCB3aGVuIHJ1bm5pbmcgb24gb2xkZXIgdmVyc2lvbnMgb2YgSHlwZXItVg0KKyAq IHRoYXQgZG9uJ3Qgc3VwcG9ydCBEaXJlY3QgTW9kZS4gV2hpbGUgSHlwZXItViBwcm92aWRlcw0K KyAqIGZvdXIgc3RpbWVyJ3MgcGVyIENQVSwgTGludXggdXNlcyBvbmx5IHN0aW1lcjAuDQorICov DQorc3RhdGljIGJvb2wgZGlyZWN0X21vZGVfZW5hYmxlZDsNCisNCitzdGF0aWMgaW50IHN0aW1l cjBfaXJxOw0KK3N0YXRpYyBpbnQgc3RpbWVyMF92ZWN0b3I7DQorc3RhdGljIGludCBzdGltZXIw X21lc3NhZ2Vfc2ludDsNCisNCisvKg0KKyAqIElTUiBmb3Igd2hlbiBzdGltZXIwIGlzIG9wZXJh dGluZyBpbiBEaXJlY3QgTW9kZS4gIERpcmVjdCBNb2RlDQorICogZG9lcyBub3QgdXNlIFZNYnVz IG9yIGFueSBWTWJ1cyBtZXNzYWdlcywgc28gcHJvY2VzcyBoZXJlIGFuZCBub3QNCisgKiBpbiB0 aGUgVk1idXMgZHJpdmVyIGNvZGUuDQorICovDQordm9pZCBodl9zdGltZXIwX2lzcih2b2lkKQ0K K3sNCisJc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqY2U7DQorDQorCWNlID0gdGhpc19jcHVf cHRyKGh2X2Nsb2NrX2V2ZW50KTsNCisJY2UtPmV2ZW50X2hhbmRsZXIoY2UpOw0KK30NCitFWFBP UlRfU1lNQk9MX0dQTChodl9zdGltZXIwX2lzcik7DQorDQorc3RhdGljIGludCBodl9jZV9zZXRf bmV4dF9ldmVudCh1bnNpZ25lZCBsb25nIGRlbHRhLA0KKwkJCQlzdHJ1Y3QgY2xvY2tfZXZlbnRf ZGV2aWNlICpldnQpDQorew0KKwl1NjQgY3VycmVudF90aWNrOw0KKw0KKwlXQVJOX09OKCFjbG9j a2V2ZW50X3N0YXRlX29uZXNob3QoZXZ0KSk7DQorDQorCWN1cnJlbnRfdGljayA9IGh5cGVydl9j cy0+cmVhZChOVUxMKTsNCisJY3VycmVudF90aWNrICs9IGRlbHRhOw0KKwlodl9pbml0X3RpbWVy KDAsIGN1cnJlbnRfdGljayk7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IGh2X2Nl X3NodXRkb3duKHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmV2dCkNCit7DQorCWh2X2luaXRf dGltZXIoMCwgMCk7DQorCWh2X2luaXRfdGltZXJfY29uZmlnKDAsIDApOw0KKwlpZiAoZGlyZWN0 X21vZGVfZW5hYmxlZCkNCisJCWh2X2Rpc2FibGVfc3RpbWVyMF9wZXJjcHVfaXJxKHN0aW1lcjBf aXJxKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgaHZfY2Vfc2V0X29uZXNo b3Qoc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0KQ0KK3sNCisJdW5pb24gaHZfc3RpbWVy X2NvbmZpZyB0aW1lcl9jZmc7DQorDQorCXRpbWVyX2NmZy5hc191aW50NjQgPSAwOw0KKwl0aW1l cl9jZmcuZW5hYmxlID0gMTsNCisJdGltZXJfY2ZnLmF1dG9fZW5hYmxlID0gMTsNCisJaWYgKGRp cmVjdF9tb2RlX2VuYWJsZWQpIHsNCisJCS8qDQorCQkgKiBXaGVuIGl0IGV4cGlyZXMsIHRoZSB0 aW1lciB3aWxsIGRpcmVjdGx5IGludGVycnVwdA0KKwkJICogb24gdGhlIHNwZWNpZmllZCBoYXJk d2FyZSB2ZWN0b3IvSVJRLg0KKwkJICovDQorCQl0aW1lcl9jZmcuZGlyZWN0X21vZGUgPSAxOw0K KwkJdGltZXJfY2ZnLmFwaWNfdmVjdG9yID0gc3RpbWVyMF92ZWN0b3I7DQorCQlodl9lbmFibGVf c3RpbWVyMF9wZXJjcHVfaXJxKHN0aW1lcjBfaXJxKTsNCisJfSBlbHNlIHsNCisJCS8qDQorCQkg KiBXaGVuIGl0IGV4cGlyZXMsIHRoZSB0aW1lciB3aWxsIGdlbmVyYXRlIGEgVk1idXMgbWVzc2Fn ZSwNCisJCSAqIHRvIGJlIGhhbmRsZWQgYnkgdGhlIG5vcm1hbCBWTWJ1cyBpbnRlcnJ1cHQgaGFu ZGxlci4NCisJCSAqLw0KKwkJdGltZXJfY2ZnLmRpcmVjdF9tb2RlID0gMDsNCisJCXRpbWVyX2Nm Zy5zaW50eCA9IHN0aW1lcjBfbWVzc2FnZV9zaW50Ow0KKwl9DQorCWh2X2luaXRfdGltZXJfY29u ZmlnKDAsIHRpbWVyX2NmZy5hc191aW50NjQpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyoNCisg KiBodl9zdGltZXJfaW5pdCAtIFBlci1jcHUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGNsb2NrZXZl bnQNCisgKi8NCitpbnQgaHZfc3RpbWVyX2luaXQodW5zaWduZWQgaW50IGNwdSkNCit7DQorCXN0 cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmNlOw0KKw0KKwlpZiAobXNfaHlwZXJ2LmZlYXR1cmVz ICYgSFZfTVNSX1NZTlRJTUVSX0FWQUlMQUJMRSkgew0KKwkJY2UgPSBwZXJfY3B1X3B0cihodl9j bG9ja19ldmVudCwgY3B1KTsNCisJCWNlLT5uYW1lID0gIkh5cGVyLVYgY2xvY2tldmVudCI7DQor CQljZS0+ZmVhdHVyZXMgPSBDTE9DS19FVlRfRkVBVF9PTkVTSE9UOw0KKwkJY2UtPmNwdW1hc2sg PSBjcHVtYXNrX29mKGNwdSk7DQorCQljZS0+cmF0aW5nID0gMTAwMDsNCisJCWNlLT5zZXRfc3Rh dGVfc2h1dGRvd24gPSBodl9jZV9zaHV0ZG93bjsNCisJCWNlLT5zZXRfc3RhdGVfb25lc2hvdCA9 IGh2X2NlX3NldF9vbmVzaG90Ow0KKwkJY2UtPnNldF9uZXh0X2V2ZW50ID0gaHZfY2Vfc2V0X25l eHRfZXZlbnQ7DQorDQorCQljbG9ja2V2ZW50c19jb25maWdfYW5kX3JlZ2lzdGVyKGNlLA0KKwkJ CQkJCUhWX0NMT0NLX0haLA0KKwkJCQkJCUhWX01JTl9ERUxUQV9USUNLUywNCisJCQkJCQlIVl9N QVhfTUFYX0RFTFRBX1RJQ0tTKTsNCisJfQ0KKwlyZXR1cm4gMDsNCit9DQorRVhQT1JUX1NZTUJP TF9HUEwoaHZfc3RpbWVyX2luaXQpOw0KKw0KKy8qDQorICogaHZfc3RpbWVyX2NsZWFudXAgLSBQ ZXItY3B1IGNsZWFudXAgb2YgdGhlIGNsb2NrZXZlbnQNCisgKi8NCitpbnQgaHZfc3RpbWVyX2Ns ZWFudXAodW5zaWduZWQgaW50IGNwdSkNCit7DQorCXN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2Ug KmNlOw0KKw0KKwkvKiBUdXJuIG9mZiBjbG9ja2V2ZW50IGRldmljZSAqLw0KKwlpZiAobXNfaHlw ZXJ2LmZlYXR1cmVzICYgSFZfTVNSX1NZTlRJTUVSX0FWQUlMQUJMRSkgew0KKwkJY2UgPSBwZXJf Y3B1X3B0cihodl9jbG9ja19ldmVudCwgY3B1KTsNCisJCWNsb2NrZXZlbnRzX3VuYmluZF9kZXZp Y2UoY2UsIGNwdSk7DQorCQlodl9jZV9zaHV0ZG93bihjZSk7DQorCX0NCisNCisJcmV0dXJuIDA7 DQorfQ0KK0VYUE9SVF9TWU1CT0xfR1BMKGh2X3N0aW1lcl9jbGVhbnVwKTsNCisNCisvKiBodl9z dGltZXJfYWxsb2MgLSBHbG9iYWwgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGNsb2NrZXZlbnQgYW5k IHN0aW1lcjAgKi8NCitpbnQgaHZfc3RpbWVyX2FsbG9jKGludCBzaW50KQ0KK3sNCisJaHZfY2xv Y2tfZXZlbnQgPSBhbGxvY19wZXJjcHUoc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSk7DQorCWlm ICghaHZfY2xvY2tfZXZlbnQpDQorCQlyZXR1cm4gLUVOT01FTTsNCisNCisJZGlyZWN0X21vZGVf ZW5hYmxlZCA9IG1zX2h5cGVydi5taXNjX2ZlYXR1cmVzICYNCisJCQlIVl9TVElNRVJfRElSRUNU X01PREVfQVZBSUxBQkxFOw0KKwlpZiAoZGlyZWN0X21vZGVfZW5hYmxlZCAmJg0KKwkgICAgaHZf c2V0dXBfc3RpbWVyMF9pcnEoJnN0aW1lcjBfaXJxLCAmc3RpbWVyMF92ZWN0b3IsDQorCQkJCWh2 X3N0aW1lcjBfaXNyKSkgew0KKwkJZnJlZV9wZXJjcHUoaHZfY2xvY2tfZXZlbnQpOw0KKwkJcmV0 dXJuIC1FSU5WQUw7DQorCX0NCisNCisJc3RpbWVyMF9tZXNzYWdlX3NpbnQgPSBzaW50Ow0KKwly ZXR1cm4gMDsNCit9DQorRVhQT1JUX1NZTUJPTF9HUEwoaHZfc3RpbWVyX2FsbG9jKTsNCisNCisv KiBodl9zdGltZXJfZnJlZSAtIEZyZWUgZ2xvYmFsIHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgaHZf c3RpbWVyX2FsbG9jKCkgKi8NCit2b2lkIGh2X3N0aW1lcl9mcmVlKHZvaWQpDQorew0KKwlpZiAo ZGlyZWN0X21vZGVfZW5hYmxlZCkNCisJCWh2X3JlbW92ZV9zdGltZXIwX2lycShzdGltZXIwX2ly cSk7DQorCWZyZWVfcGVyY3B1KGh2X2Nsb2NrX2V2ZW50KTsNCit9DQorRVhQT1JUX1NZTUJPTF9H UEwoaHZfc3RpbWVyX2ZyZWUpOw0KKw0KKy8qDQorICogRG8gYSBnbG9iYWwgY2xlYW51cCBvZiBj bG9ja2V2ZW50cyBmb3IgdGhlIGNhc2VzIG9mIGtleGVjIGFuZA0KKyAqIHZtYnVzIGV4aXQNCisg Ki8NCit2b2lkIGh2X3N0aW1lcl9nbG9iYWxfY2xlYW51cCh2b2lkKQ0KK3sNCisJaW50CWNwdTsN CisJc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqY2U7DQorDQorCWlmIChtc19oeXBlcnYuZmVh dHVyZXMgJiBIVl9NU1JfU1lOVElNRVJfQVZBSUxBQkxFKQ0KKwkJZm9yX2VhY2hfcHJlc2VudF9j cHUoY3B1KSB7DQorCQkJY2UgPSBwZXJfY3B1X3B0cihodl9jbG9ja19ldmVudCwgY3B1KTsNCisJ CQljbG9ja2V2ZW50c191bmJpbmRfZGV2aWNlKGNlLCBjcHUpOw0KKwkJfQ0KKwlodl9zdGltZXJf ZnJlZSgpOw0KK30NCitFWFBPUlRfU1lNQk9MX0dQTChodl9zdGltZXJfZ2xvYmFsX2NsZWFudXAp Ow0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHYvS2NvbmZpZyBiL2RyaXZlcnMvaHYvS2NvbmZpZw0K aW5kZXggMWMxYTI1MS4uYzQyM2U1NyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvaHYvS2NvbmZpZw0K KysrIGIvZHJpdmVycy9odi9LY29uZmlnDQpAQCAtMTAsNiArMTAsOSBAQCBjb25maWcgSFlQRVJW DQogCSAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIHJ1biBMaW51eCBhcyBhIEh5cGVyLVYgY2xpZW50 IG9wZXJhdGluZw0KIAkgIHN5c3RlbS4NCiANCitjb25maWcgSFlQRVJWX1RJTUVSDQorCWRlZl9i b29sIEhZUEVSVg0KKw0KIGNvbmZpZyBIWVBFUlZfVFNDUEFHRQ0KICAgICAgICBkZWZfYm9vbCBI WVBFUlYgJiYgWDg2XzY0DQogDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9odi9odi5jIGIvZHJpdmVy cy9odi9odi5jDQppbmRleCA0NTY1MzAyLi5iZDY0NTJmIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9o di9odi5jDQorKysgYi9kcml2ZXJzL2h2L2h2LmMNCkBAIC0yOSw2ICsyOSw3IEBADQogI2luY2x1 ZGUgPGxpbnV4L3ZlcnNpb24uaD4NCiAjaW5jbHVkZSA8bGludXgvcmFuZG9tLmg+DQogI2luY2x1 ZGUgPGxpbnV4L2Nsb2NrY2hpcHMuaD4NCisjaW5jbHVkZSA8Y2xvY2tzb3VyY2UvaHlwZXJ2X3Rp bWVyLmg+DQogI2luY2x1ZGUgPGFzbS9tc2h5cGVydi5oPg0KICNpbmNsdWRlICJoeXBlcnZfdm1i dXMuaCINCiANCkBAIC0zNiwyMSArMzcsNiBAQA0KIHN0cnVjdCBodl9jb250ZXh0IGh2X2NvbnRl eHQ7DQogDQogLyoNCi0gKiBJZiBmYWxzZSwgd2UncmUgdXNpbmcgdGhlIG9sZCBtZWNoYW5pc20g Zm9yIHN0aW1lcjAgaW50ZXJydXB0cw0KLSAqIHdoZXJlIGl0IHNlbmRzIGEgVk1idXMgbWVzc2Fn ZSB3aGVuIGl0IGV4cGlyZXMuIFRoZSBvbGQNCi0gKiBtZWNoYW5pc20gaXMgdXNlZCB3aGVuIHJ1 bm5pbmcgb24gb2xkZXIgdmVyc2lvbnMgb2YgSHlwZXItVg0KLSAqIHRoYXQgZG9uJ3Qgc3VwcG9y dCBEaXJlY3QgTW9kZS4gV2hpbGUgSHlwZXItViBwcm92aWRlcw0KLSAqIGZvdXIgc3RpbWVyJ3Mg cGVyIENQVSwgTGludXggdXNlcyBvbmx5IHN0aW1lcjAuDQotICovDQotc3RhdGljIGJvb2wgZGly ZWN0X21vZGVfZW5hYmxlZDsNCi1zdGF0aWMgaW50IHN0aW1lcjBfaXJxOw0KLXN0YXRpYyBpbnQg c3RpbWVyMF92ZWN0b3I7DQotDQotI2RlZmluZSBIVl9USU1FUl9GUkVRVUVOQ1kgKDEwICogMTAw MCAqIDEwMDApIC8qIDEwMG5zIHBlcmlvZCAqLw0KLSNkZWZpbmUgSFZfTUFYX01BWF9ERUxUQV9U SUNLUyAweGZmZmZmZmZmDQotI2RlZmluZSBIVl9NSU5fREVMVEFfVElDS1MgMQ0KLQ0KLS8qDQog ICogaHZfaW5pdCAtIE1haW4gaW5pdGlhbGl6YXRpb24gcm91dGluZS4NCiAgKg0KICAqIFRoaXMg cm91dGluZSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyIHJvdXRpbmVzIGluIGhlcmUg YXJlIGNhbGxlZA0KQEAgLTYwLDkgKzQ2LDYgQEAgaW50IGh2X2luaXQodm9pZCkNCiAJaHZfY29u dGV4dC5jcHVfY29udGV4dCA9IGFsbG9jX3BlcmNwdShzdHJ1Y3QgaHZfcGVyX2NwdV9jb250ZXh0 KTsNCiAJaWYgKCFodl9jb250ZXh0LmNwdV9jb250ZXh0KQ0KIAkJcmV0dXJuIC1FTk9NRU07DQot DQotCWRpcmVjdF9tb2RlX2VuYWJsZWQgPSBtc19oeXBlcnYubWlzY19mZWF0dXJlcyAmDQotCQkJ SFZfU1RJTUVSX0RJUkVDVF9NT0RFX0FWQUlMQUJMRTsNCiAJcmV0dXJuIDA7DQogfQ0KIA0KQEAg LTEwMSw4OSArODQsNiBAQCBpbnQgaHZfcG9zdF9tZXNzYWdlKHVuaW9uIGh2X2Nvbm5lY3Rpb25f aWQgY29ubmVjdGlvbl9pZCwNCiAJcmV0dXJuIHN0YXR1cyAmIDB4RkZGRjsNCiB9DQogDQotLyoN Ci0gKiBJU1IgZm9yIHdoZW4gc3RpbWVyMCBpcyBvcGVyYXRpbmcgaW4gRGlyZWN0IE1vZGUuICBE aXJlY3QgTW9kZQ0KLSAqIGRvZXMgbm90IHVzZSBWTWJ1cyBvciBhbnkgVk1idXMgbWVzc2FnZXMs IHNvIHByb2Nlc3MgaGVyZSBhbmQgbm90DQotICogaW4gdGhlIFZNYnVzIGRyaXZlciBjb2RlLg0K LSAqLw0KLQ0KLXN0YXRpYyB2b2lkIGh2X3N0aW1lcjBfaXNyKHZvaWQpDQotew0KLQlzdHJ1Y3Qg aHZfcGVyX2NwdV9jb250ZXh0ICpodl9jcHU7DQotDQotCWh2X2NwdSA9IHRoaXNfY3B1X3B0ciho dl9jb250ZXh0LmNwdV9jb250ZXh0KTsNCi0JaHZfY3B1LT5jbGtfZXZ0LT5ldmVudF9oYW5kbGVy KGh2X2NwdS0+Y2xrX2V2dCk7DQotCWFkZF9pbnRlcnJ1cHRfcmFuZG9tbmVzcyhzdGltZXIwX3Zl Y3RvciwgMCk7DQotfQ0KLQ0KLXN0YXRpYyBpbnQgaHZfY2Vfc2V0X25leHRfZXZlbnQodW5zaWdu ZWQgbG9uZyBkZWx0YSwNCi0JCQkJc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZXZ0KQ0KLXsN Ci0JdTY0IGN1cnJlbnRfdGljazsNCi0NCi0JV0FSTl9PTighY2xvY2tldmVudF9zdGF0ZV9vbmVz aG90KGV2dCkpOw0KLQ0KLQljdXJyZW50X3RpY2sgPSBoeXBlcnZfY3MtPnJlYWQoTlVMTCk7DQot CWN1cnJlbnRfdGljayArPSBkZWx0YTsNCi0JaHZfaW5pdF90aW1lcigwLCBjdXJyZW50X3RpY2sp Ow0KLQlyZXR1cm4gMDsNCi19DQotDQotc3RhdGljIGludCBodl9jZV9zaHV0ZG93bihzdHJ1Y3Qg Y2xvY2tfZXZlbnRfZGV2aWNlICpldnQpDQotew0KLQlodl9pbml0X3RpbWVyKDAsIDApOw0KLQlo dl9pbml0X3RpbWVyX2NvbmZpZygwLCAwKTsNCi0JaWYgKGRpcmVjdF9tb2RlX2VuYWJsZWQpDQot CQlodl9kaXNhYmxlX3N0aW1lcjBfcGVyY3B1X2lycShzdGltZXIwX2lycSk7DQotDQotCXJldHVy biAwOw0KLX0NCi0NCi1zdGF0aWMgaW50IGh2X2NlX3NldF9vbmVzaG90KHN0cnVjdCBjbG9ja19l dmVudF9kZXZpY2UgKmV2dCkNCi17DQotCXVuaW9uIGh2X3N0aW1lcl9jb25maWcgdGltZXJfY2Zn Ow0KLQ0KLQl0aW1lcl9jZmcuYXNfdWludDY0ID0gMDsNCi0JdGltZXJfY2ZnLmVuYWJsZSA9IDE7 DQotCXRpbWVyX2NmZy5hdXRvX2VuYWJsZSA9IDE7DQotCWlmIChkaXJlY3RfbW9kZV9lbmFibGVk KSB7DQotCQkvKg0KLQkJICogV2hlbiBpdCBleHBpcmVzLCB0aGUgdGltZXIgd2lsbCBkaXJlY3Rs eSBpbnRlcnJ1cHQNCi0JCSAqIG9uIHRoZSBzcGVjaWZpZWQgaGFyZHdhcmUgdmVjdG9yL0lSUS4N Ci0JCSAqLw0KLQkJdGltZXJfY2ZnLmRpcmVjdF9tb2RlID0gMTsNCi0JCXRpbWVyX2NmZy5hcGlj X3ZlY3RvciA9IHN0aW1lcjBfdmVjdG9yOw0KLQkJaHZfZW5hYmxlX3N0aW1lcjBfcGVyY3B1X2ly cShzdGltZXIwX2lycSk7DQotCX0gZWxzZSB7DQotCQkvKg0KLQkJICogV2hlbiBpdCBleHBpcmVz LCB0aGUgdGltZXIgd2lsbCBnZW5lcmF0ZSBhIFZNYnVzIG1lc3NhZ2UsDQotCQkgKiB0byBiZSBo YW5kbGVkIGJ5IHRoZSBub3JtYWwgVk1idXMgaW50ZXJydXB0IGhhbmRsZXIuDQotCQkgKi8NCi0J CXRpbWVyX2NmZy5kaXJlY3RfbW9kZSA9IDA7DQotCQl0aW1lcl9jZmcuc2ludHggPSBWTUJVU19N RVNTQUdFX1NJTlQ7DQotCX0NCi0JaHZfaW5pdF90aW1lcl9jb25maWcoMCwgdGltZXJfY2ZnLmFz X3VpbnQ2NCk7DQotCXJldHVybiAwOw0KLX0NCi0NCi1zdGF0aWMgdm9pZCBodl9pbml0X2Nsb2Nr ZXZlbnRfZGV2aWNlKHN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmRldiwgaW50IGNwdSkNCi17 DQotCWRldi0+bmFtZSA9ICJIeXBlci1WIGNsb2NrZXZlbnQiOw0KLQlkZXYtPmZlYXR1cmVzID0g Q0xPQ0tfRVZUX0ZFQVRfT05FU0hPVDsNCi0JZGV2LT5jcHVtYXNrID0gY3B1bWFza19vZihjcHUp Ow0KLQlkZXYtPnJhdGluZyA9IDEwMDA7DQotCS8qDQotCSAqIEF2b2lkIHNldHRpbnQgZGV2LT5v d25lciA9IFRISVNfTU9EVUxFIGRlbGliZXJhdGVseSBhcyBkb2luZyBzbyB3aWxsDQotCSAqIHJl c3VsdCBpbiBjbG9ja2V2ZW50c19jb25maWdfYW5kX3JlZ2lzdGVyKCkgdGFraW5nIGFkZGl0aW9u YWwNCi0JICogcmVmZXJlbmNlcyB0byB0aGUgaHZfdm1idXMgbW9kdWxlIG1ha2luZyBpdCBpbXBv c3NpYmxlIHRvIHVubG9hZC4NCi0JICovDQotDQotCWRldi0+c2V0X3N0YXRlX3NodXRkb3duID0g aHZfY2Vfc2h1dGRvd247DQotCWRldi0+c2V0X3N0YXRlX29uZXNob3QgPSBodl9jZV9zZXRfb25l c2hvdDsNCi0JZGV2LT5zZXRfbmV4dF9ldmVudCA9IGh2X2NlX3NldF9uZXh0X2V2ZW50Ow0KLX0N Ci0NCi0NCiBpbnQgaHZfc3luaWNfYWxsb2Modm9pZCkNCiB7DQogCWludCBjcHU7DQpAQCAtMjEy LDE0ICsxMTIsNiBAQCBpbnQgaHZfc3luaWNfYWxsb2Modm9pZCkNCiAJCXRhc2tsZXRfaW5pdCgm aHZfY3B1LT5tc2dfZHBjLA0KIAkJCSAgICAgdm1idXNfb25fbXNnX2RwYywgKHVuc2lnbmVkIGxv bmcpIGh2X2NwdSk7DQogDQotCQlodl9jcHUtPmNsa19ldnQgPSBremFsbG9jKHNpemVvZihzdHJ1 Y3QgY2xvY2tfZXZlbnRfZGV2aWNlKSwNCi0JCQkJCSAgR0ZQX0tFUk5FTCk7DQotCQlpZiAoaHZf Y3B1LT5jbGtfZXZ0ID09IE5VTEwpIHsNCi0JCQlwcl9lcnIoIlVuYWJsZSB0byBhbGxvY2F0ZSBj bG9jayBldmVudCBkZXZpY2VcbiIpOw0KLQkJCWdvdG8gZXJyOw0KLQkJfQ0KLQkJaHZfaW5pdF9j bG9ja2V2ZW50X2RldmljZShodl9jcHUtPmNsa19ldnQsIGNwdSk7DQotDQogCQlodl9jcHUtPnN5 bmljX21lc3NhZ2VfcGFnZSA9DQogCQkJKHZvaWQgKilnZXRfemVyb2VkX3BhZ2UoR0ZQX0FUT01J Qyk7DQogCQlpZiAoaHZfY3B1LT5zeW5pY19tZXNzYWdlX3BhZ2UgPT0gTlVMTCkgew0KQEAgLTI0 MiwxMSArMTM0LDYgQEAgaW50IGh2X3N5bmljX2FsbG9jKHZvaWQpDQogCQlJTklUX0xJU1RfSEVB RCgmaHZfY3B1LT5jaGFuX2xpc3QpOw0KIAl9DQogDQotCWlmIChkaXJlY3RfbW9kZV9lbmFibGVk ICYmDQotCSAgICBodl9zZXR1cF9zdGltZXIwX2lycSgmc3RpbWVyMF9pcnEsICZzdGltZXIwX3Zl Y3RvciwNCi0JCQkJaHZfc3RpbWVyMF9pc3IpKQ0KLQkJZ290byBlcnI7DQotDQogCXJldHVybiAw Ow0KIGVycjoNCiAJLyoNCkBAIC0yNjUsNyArMTUyLDYgQEAgdm9pZCBodl9zeW5pY19mcmVlKHZv aWQpDQogCQlzdHJ1Y3QgaHZfcGVyX2NwdV9jb250ZXh0ICpodl9jcHUNCiAJCQk9IHBlcl9jcHVf cHRyKGh2X2NvbnRleHQuY3B1X2NvbnRleHQsIGNwdSk7DQogDQotCQlrZnJlZShodl9jcHUtPmNs a19ldnQpOw0KIAkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWh2X2NwdS0+c3luaWNfZXZlbnRf cGFnZSk7DQogCQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpaHZfY3B1LT5zeW5pY19tZXNzYWdl X3BhZ2UpOw0KIAkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWh2X2NwdS0+cG9zdF9tc2dfcGFn ZSk7DQpAQCAtMzI0LDM2ICsyMTAsOSBAQCBpbnQgaHZfc3luaWNfaW5pdCh1bnNpZ25lZCBpbnQg Y3B1KQ0KIA0KIAlodl9zZXRfc3luaWNfc3RhdGUoc2N0cmwuYXNfdWludDY0KTsNCiANCi0JLyoN Ci0JICogUmVnaXN0ZXIgdGhlIHBlci1jcHUgY2xvY2tldmVudCBzb3VyY2UuDQotCSAqLw0KLQlp ZiAobXNfaHlwZXJ2LmZlYXR1cmVzICYgSFZfTVNSX1NZTlRJTUVSX0FWQUlMQUJMRSkNCi0JCWNs b2NrZXZlbnRzX2NvbmZpZ19hbmRfcmVnaXN0ZXIoaHZfY3B1LT5jbGtfZXZ0LA0KLQkJCQkJCUhW X1RJTUVSX0ZSRVFVRU5DWSwNCi0JCQkJCQlIVl9NSU5fREVMVEFfVElDS1MsDQotCQkJCQkJSFZf TUFYX01BWF9ERUxUQV9USUNLUyk7DQotCXJldHVybiAwOw0KLX0NCi0NCi0vKg0KLSAqIGh2X3N5 bmljX2Nsb2NrZXZlbnRzX2NsZWFudXAgLSBDbGVhbnVwIGNsb2NrZXZlbnQgZGV2aWNlcw0KLSAq Lw0KLXZvaWQgaHZfc3luaWNfY2xvY2tldmVudHNfY2xlYW51cCh2b2lkKQ0KLXsNCi0JaW50IGNw dTsNCisJaHZfc3RpbWVyX2luaXQoY3B1KTsNCiANCi0JaWYgKCEobXNfaHlwZXJ2LmZlYXR1cmVz ICYgSFZfTVNSX1NZTlRJTUVSX0FWQUlMQUJMRSkpDQotCQlyZXR1cm47DQotDQotCWlmIChkaXJl Y3RfbW9kZV9lbmFibGVkKQ0KLQkJaHZfcmVtb3ZlX3N0aW1lcjBfaXJxKHN0aW1lcjBfaXJxKTsN Ci0NCi0JZm9yX2VhY2hfcHJlc2VudF9jcHUoY3B1KSB7DQotCQlzdHJ1Y3QgaHZfcGVyX2NwdV9j b250ZXh0ICpodl9jcHUNCi0JCQk9IHBlcl9jcHVfcHRyKGh2X2NvbnRleHQuY3B1X2NvbnRleHQs IGNwdSk7DQotDQotCQljbG9ja2V2ZW50c191bmJpbmRfZGV2aWNlKGh2X2NwdS0+Y2xrX2V2dCwg Y3B1KTsNCi0JfQ0KKwlyZXR1cm4gMDsNCiB9DQogDQogLyoNCkBAIC00MDEsMTQgKzI2MCw3IEBA IGludCBodl9zeW5pY19jbGVhbnVwKHVuc2lnbmVkIGludCBjcHUpDQogCWlmIChjaGFubmVsX2Zv dW5kICYmIHZtYnVzX2Nvbm5lY3Rpb24uY29ubl9zdGF0ZSA9PSBDT05ORUNURUQpDQogCQlyZXR1 cm4gLUVCVVNZOw0KIA0KLQkvKiBUdXJuIG9mZiBjbG9ja2V2ZW50IGRldmljZSAqLw0KLQlpZiAo bXNfaHlwZXJ2LmZlYXR1cmVzICYgSFZfTVNSX1NZTlRJTUVSX0FWQUlMQUJMRSkgew0KLQkJc3Ry dWN0IGh2X3Blcl9jcHVfY29udGV4dCAqaHZfY3B1DQotCQkJPSB0aGlzX2NwdV9wdHIoaHZfY29u dGV4dC5jcHVfY29udGV4dCk7DQotDQotCQljbG9ja2V2ZW50c191bmJpbmRfZGV2aWNlKGh2X2Nw dS0+Y2xrX2V2dCwgY3B1KTsNCi0JCWh2X2NlX3NodXRkb3duKGh2X2NwdS0+Y2xrX2V2dCk7DQot CX0NCisJaHZfc3RpbWVyX2NsZWFudXAoY3B1KTsNCiANCiAJaHZfZ2V0X3N5bmludF9zdGF0ZShW TUJVU19NRVNTQUdFX1NJTlQsIHNoYXJlZF9zaW50LmFzX3VpbnQ2NCk7DQogDQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9odi9oeXBlcnZfdm1idXMuaCBiL2RyaXZlcnMvaHYvaHlwZXJ2X3ZtYnVzLmgN CmluZGV4IGU1NDY3YjguLmE4ZjhhZWUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2h2L2h5cGVydl92 bWJ1cy5oDQorKysgYi9kcml2ZXJzL2h2L2h5cGVydl92bWJ1cy5oDQpAQCAtMTUxLDcgKzE1MSw2 IEBAIHN0cnVjdCBodl9wZXJfY3B1X2NvbnRleHQgew0KIAkgKiBwZXItY3B1IGxpc3Qgb2YgdGhl IGNoYW5uZWxzIGJhc2VkIG9uIHRoZWlyIENQVSBhZmZpbml0eS4NCiAJICovDQogCXN0cnVjdCBs aXN0X2hlYWQgY2hhbl9saXN0Ow0KLQlzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNlICpjbGtfZXZ0 Ow0KIH07DQogDQogc3RydWN0IGh2X2NvbnRleHQgew0KQEAgLTE4OSw4ICsxODgsNiBAQCBleHRl cm4gaW50IGh2X3Bvc3RfbWVzc2FnZSh1bmlvbiBodl9jb25uZWN0aW9uX2lkIGNvbm5lY3Rpb25f aWQsDQogDQogZXh0ZXJuIGludCBodl9zeW5pY19jbGVhbnVwKHVuc2lnbmVkIGludCBjcHUpOw0K IA0KLWV4dGVybiB2b2lkIGh2X3N5bmljX2Nsb2NrZXZlbnRzX2NsZWFudXAodm9pZCk7DQotDQog LyogSW50ZXJmYWNlICovDQogDQogdm9pZCBodl9yaW5nYnVmZmVyX3ByZV9pbml0KHN0cnVjdCB2 bWJ1c19jaGFubmVsICpjaGFubmVsKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h2L3ZtYnVzX2Ry di5jIGIvZHJpdmVycy9odi92bWJ1c19kcnYuYw0KaW5kZXggMWNiOTQwOC4uODlhY2E1ZCAxMDA2 NDQNCi0tLSBhL2RyaXZlcnMvaHYvdm1idXNfZHJ2LmMNCisrKyBiL2RyaXZlcnMvaHYvdm1idXNf ZHJ2LmMNCkBAIC00Myw2ICs0Myw3IEBADQogI2luY2x1ZGUgPGxpbnV4L2tkZWJ1Zy5oPg0KICNp bmNsdWRlIDxsaW51eC9lZmkuaD4NCiAjaW5jbHVkZSA8bGludXgvcmFuZG9tLmg+DQorI2luY2x1 ZGUgPGNsb2Nrc291cmNlL2h5cGVydl90aW1lci5oPg0KICNpbmNsdWRlICJoeXBlcnZfdm1idXMu aCINCiANCiBzdHJ1Y3Qgdm1idXNfZHluaWQgew0KQEAgLTk2OCwxNyArOTY5LDYgQEAgc3RhdGlj IHZvaWQgdm1idXNfb25tZXNzYWdlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KIAlr ZnJlZShjdHgpOw0KIH0NCiANCi1zdGF0aWMgdm9pZCBodl9wcm9jZXNzX3RpbWVyX2V4cGlyYXRp b24oc3RydWN0IGh2X21lc3NhZ2UgKm1zZywNCi0JCQkJCXN0cnVjdCBodl9wZXJfY3B1X2NvbnRl eHQgKmh2X2NwdSkNCi17DQotCXN0cnVjdCBjbG9ja19ldmVudF9kZXZpY2UgKmRldiA9IGh2X2Nw dS0+Y2xrX2V2dDsNCi0NCi0JaWYgKGRldi0+ZXZlbnRfaGFuZGxlcikNCi0JCWRldi0+ZXZlbnRf aGFuZGxlcihkZXYpOw0KLQ0KLQl2bWJ1c19zaWduYWxfZW9tKG1zZywgSFZNU0dfVElNRVJfRVhQ SVJFRCk7DQotfQ0KLQ0KIHZvaWQgdm1idXNfb25fbXNnX2RwYyh1bnNpZ25lZCBsb25nIGRhdGEp DQogew0KIAlzdHJ1Y3QgaHZfcGVyX2NwdV9jb250ZXh0ICpodl9jcHUgPSAodm9pZCAqKWRhdGE7 DQpAQCAtMTE3Miw5ICsxMTYyLDEwIEBAIHN0YXRpYyB2b2lkIHZtYnVzX2lzcih2b2lkKQ0KIA0K IAkvKiBDaGVjayBpZiB0aGVyZSBhcmUgYWN0dWFsIG1zZ3MgdG8gYmUgcHJvY2Vzc2VkICovDQog CWlmIChtc2ctPmhlYWRlci5tZXNzYWdlX3R5cGUgIT0gSFZNU0dfTk9ORSkgew0KLQkJaWYgKG1z Zy0+aGVhZGVyLm1lc3NhZ2VfdHlwZSA9PSBIVk1TR19USU1FUl9FWFBJUkVEKQ0KLQkJCWh2X3By b2Nlc3NfdGltZXJfZXhwaXJhdGlvbihtc2csIGh2X2NwdSk7DQotCQllbHNlDQorCQlpZiAobXNn LT5oZWFkZXIubWVzc2FnZV90eXBlID09IEhWTVNHX1RJTUVSX0VYUElSRUQpIHsNCisJCQlodl9z dGltZXIwX2lzcigpOw0KKwkJCXZtYnVzX3NpZ25hbF9lb20obXNnLCBIVk1TR19USU1FUl9FWFBJ UkVEKTsNCisJCX0gZWxzZQ0KIAkJCXRhc2tsZXRfc2NoZWR1bGUoJmh2X2NwdS0+bXNnX2RwYyk7 DQogCX0NCiANCkBAIC0xMjc2LDE0ICsxMjY3LDE5IEBAIHN0YXRpYyBpbnQgdm1idXNfYnVzX2lu aXQodm9pZCkNCiAJcmV0ID0gaHZfc3luaWNfYWxsb2MoKTsNCiAJaWYgKHJldCkNCiAJCWdvdG8g ZXJyX2FsbG9jOw0KKw0KKwlyZXQgPSBodl9zdGltZXJfYWxsb2MoVk1CVVNfTUVTU0FHRV9TSU5U KTsNCisJaWYgKHJldCA8IDApDQorCQlnb3RvIGVycl9hbGxvYzsNCisNCiAJLyoNCi0JICogSW5p dGlhbGl6ZSB0aGUgcGVyLWNwdSBpbnRlcnJ1cHQgc3RhdGUgYW5kDQotCSAqIGNvbm5lY3QgdG8g dGhlIGhvc3QuDQorCSAqIEluaXRpYWxpemUgdGhlIHBlci1jcHUgaW50ZXJydXB0IHN0YXRlIGFu ZCBzdGltZXIgc3RhdGUuDQorCSAqIFRoZW4gY29ubmVjdCB0byB0aGUgaG9zdC4NCiAJICovDQog CXJldCA9IGNwdWhwX3NldHVwX3N0YXRlKENQVUhQX0FQX09OTElORV9EWU4sICJoeXBlcnYvdm1i dXM6b25saW5lIiwNCiAJCQkJaHZfc3luaWNfaW5pdCwgaHZfc3luaWNfY2xlYW51cCk7DQogCWlm IChyZXQgPCAwKQ0KLQkJZ290byBlcnJfYWxsb2M7DQorCQlnb3RvIGVycl9jcHVocDsNCiAJaHlw ZXJ2X2NwdWhwX29ubGluZSA9IHJldDsNCiANCiAJcmV0ID0gdm1idXNfY29ubmVjdCgpOw0KQEAg LTEzMzEsNiArMTMyNyw4IEBAIHN0YXRpYyBpbnQgdm1idXNfYnVzX2luaXQodm9pZCkNCiANCiBl cnJfY29ubmVjdDoNCiAJY3B1aHBfcmVtb3ZlX3N0YXRlKGh5cGVydl9jcHVocF9vbmxpbmUpOw0K K2Vycl9jcHVocDoNCisJaHZfc3RpbWVyX2ZyZWUoKTsNCiBlcnJfYWxsb2M6DQogCWh2X3N5bmlj X2ZyZWUoKTsNCiAJaHZfcmVtb3ZlX3ZtYnVzX2lycSgpOw0KQEAgLTIwNzcsNyArMjA3NSw3IEBA IHN0YXRpYyBpbnQgdm1idXNfYWNwaV9hZGQoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpDQog DQogc3RhdGljIHZvaWQgaHZfa2V4ZWNfaGFuZGxlcih2b2lkKQ0KIHsNCi0JaHZfc3luaWNfY2xv Y2tldmVudHNfY2xlYW51cCgpOw0KKwlodl9zdGltZXJfZ2xvYmFsX2NsZWFudXAoKTsNCiAJdm1i dXNfaW5pdGlhdGVfdW5sb2FkKGZhbHNlKTsNCiAJdm1idXNfY29ubmVjdGlvbi5jb25uX3N0YXRl ID0gRElTQ09OTkVDVEVEOw0KIAkvKiBNYWtlIHN1cmUgY29ubl9zdGF0ZSBpcyBzZXQgYXMgaHZf c3luaWNfY2xlYW51cCBjaGVja3MgZm9yIGl0ICovDQpAQCAtMjA4OCw2ICsyMDg2LDggQEAgc3Rh dGljIHZvaWQgaHZfa2V4ZWNfaGFuZGxlcih2b2lkKQ0KIA0KIHN0YXRpYyB2b2lkIGh2X2NyYXNo X2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpDQogew0KKwlpbnQgY3B1Ow0KKw0KIAl2bWJ1 c19pbml0aWF0ZV91bmxvYWQodHJ1ZSk7DQogCS8qDQogCSAqIEluIGNyYXNoIGhhbmRsZXIgd2Ug Y2FuJ3Qgc2NoZWR1bGUgc3luaWMgY2xlYW51cCBmb3IgYWxsIENQVXMsDQpAQCAtMjA5NSw3ICsy MDk1LDkgQEAgc3RhdGljIHZvaWQgaHZfY3Jhc2hfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVn cykNCiAJICogZm9yIGtkdW1wLg0KIAkgKi8NCiAJdm1idXNfY29ubmVjdGlvbi5jb25uX3N0YXRl ID0gRElTQ09OTkVDVEVEOw0KLQlodl9zeW5pY19jbGVhbnVwKHNtcF9wcm9jZXNzb3JfaWQoKSk7 DQorCWNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsNCisJaHZfc3RpbWVyX2NsZWFudXAoY3B1KTsN CisJaHZfc3luaWNfY2xlYW51cChjcHUpOw0KIAloeXBlcnZfY2xlYW51cCgpOw0KIH07DQogDQpA QCAtMjE0NCw3ICsyMTQ2LDcgQEAgc3RhdGljIHZvaWQgX19leGl0IHZtYnVzX2V4aXQodm9pZCkN CiAJaHZfcmVtb3ZlX2tleGVjX2hhbmRsZXIoKTsNCiAJaHZfcmVtb3ZlX2NyYXNoX2hhbmRsZXIo KTsNCiAJdm1idXNfY29ubmVjdGlvbi5jb25uX3N0YXRlID0gRElTQ09OTkVDVEVEOw0KLQlodl9z eW5pY19jbG9ja2V2ZW50c19jbGVhbnVwKCk7DQorCWh2X3N0aW1lcl9nbG9iYWxfY2xlYW51cCgp Ow0KIAl2bWJ1c19kaXNjb25uZWN0KCk7DQogCWh2X3JlbW92ZV92bWJ1c19pcnEoKTsNCiAJZm9y X2VhY2hfb25saW5lX2NwdShjcHUpIHsNCmRpZmYgLS1naXQgYS9pbmNsdWRlL2Nsb2Nrc291cmNl L2h5cGVydl90aW1lci5oIGIvaW5jbHVkZS9jbG9ja3NvdXJjZS9oeXBlcnZfdGltZXIuaA0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAuLmJhNWRjMTcNCi0tLSAvZGV2L251bGwN CisrKyBiL2luY2x1ZGUvY2xvY2tzb3VyY2UvaHlwZXJ2X3RpbWVyLmgNCkBAIC0wLDAgKzEsMjcg QEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KKw0KKy8qDQorICog RGVmaW5pdGlvbnMgZm9yIHRoZSBjbG9ja3NvdXJjZSBwcm92aWRlZCBieSB0aGUgSHlwZXItVg0K KyAqIGh5cGVydmlzb3IgdG8gZ3Vlc3QgVk1zLCBhcyBkZXNjcmliZWQgaW4gdGhlIEh5cGVyLVYg VG9wDQorICogTGV2ZWwgRnVuY3Rpb25hbCBTcGVjIChUTEZTKS4NCisgKg0KKyAqIENvcHlyaWdo dCAoQykgMjAxOSwgTWljcm9zb2Z0LCBJbmMuDQorICoNCisgKiBBdXRob3I6ICBNaWNoYWVsIEtl bGxleSA8bWlrZWxsZXlAbWljcm9zb2Z0LmNvbT4NCisgKi8NCisNCisjaWZuZGVmIF9fQ0xLU09V UkNFX0hZUEVSVl9USU1FUl9IDQorI2RlZmluZSBfX0NMS1NPVVJDRV9IWVBFUlZfVElNRVJfSA0K Kw0KKyNkZWZpbmUgSFZfTUFYX01BWF9ERUxUQV9USUNLUyAweGZmZmZmZmZmDQorI2RlZmluZSBI Vl9NSU5fREVMVEFfVElDS1MgMQ0KKw0KKy8qIFJvdXRpbmVzIGNhbGxlZCBieSB0aGUgVk1idXMg ZHJpdmVyICovDQorZXh0ZXJuIGludCBodl9zdGltZXJfYWxsb2MoaW50IHNpbnQpOw0KK2V4dGVy biB2b2lkIGh2X3N0aW1lcl9mcmVlKHZvaWQpOw0KK2V4dGVybiBpbnQgaHZfc3RpbWVyX2luaXQo dW5zaWduZWQgaW50IGNwdSk7DQorZXh0ZXJuIGludCBodl9zdGltZXJfY2xlYW51cCh1bnNpZ25l ZCBpbnQgY3B1KTsNCitleHRlcm4gdm9pZCBodl9zdGltZXJfZ2xvYmFsX2NsZWFudXAodm9pZCk7 DQorZXh0ZXJuIHZvaWQgaHZfc3RpbWVyMF9pc3Iodm9pZCk7DQorDQorI2VuZGlmDQotLSANCjEu OC4zLjENCg0K