Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp6519410imu; Mon, 21 Jan 2019 10:16:25 -0800 (PST) X-Google-Smtp-Source: ALg8bN5bs2wH5A+9w5GSGg6oTg8RAM63FJJ80H+ZtAjW6cJ8WcCnQpaK4EEsPv4oI1sPJRHLe7o8 X-Received: by 2002:a63:9402:: with SMTP id m2mr27990074pge.93.1548094585044; Mon, 21 Jan 2019 10:16:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548094585; cv=none; d=google.com; s=arc-20160816; b=MxaSlVBrmQDq5OnOvqsp4WKY8waBkvz5C8dmnz0MN4Ra4pM+cbtlK5O+iI+hSb/LbB Xs8OZWLW0hfWrD3V3Zs44hQTs/XMyAEwCGzC7jg6L/w47am4fCDYUvL7Ak7ZoC5arhwZ hsFfjyNDW8cP8l7fClKjMXvbcE83qGqYZHlK/x7A84hq46wzDJjTegJGSxh2Gawl40Fp 4RhgJkkJ1NZWaWZD4iJ1svVKZxCKUGBa9j7Ygw8vDA+8tJkgQsKlo/BF6oY/LDMS6slq xgUEw7zmTVtoZ8io3kL8aV18DM52MyoJIB+8D5IZXVRhKLl7GsIoAsD2hRI+zB30mQF3 eINA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:spamdiagnosticmetadata:spamdiagnosticoutput :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=C96wl+eGe8Yg7iHBpbJU/5BwKllAZqBeToLEDJba3nU=; b=W8zDRZMc684EEM/gS6btuc5PgSwXLaqsX72+jqpBSnznSwSzsoRYeOT2//XjbBhnc7 wpFaXT7FB6Q5pMB8WGf1zfaTC6j4+ZQQUJO6rFNAolxg6w+ZL2lemi7DL5EeoOOw3kOk +dIJWzjft0Ur9LMZDY1Sr15RUPXLYjUACi/2JdDPB3yQRdRrZgpGmkbM+0Kgd8Hk3Yy2 wcwGTEE1OF9RLbtyELfgcp4/nfgw9sBUHTT2kG1Z39b28ZFUfM4Be8QlxOchuSvXv7qm +d6siGQvQI1v9yvN78PjQ/IGNV1x4VbLJr//LxcIn6GLqwF71rKatXZdR/lhyg8PrMZ1 5lPg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@emutex.onmicrosoft.com header.s=selector1-emutex-com header.b=L+xW5vkY; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l4si13565192pgr.346.2019.01.21.10.16.09; Mon, 21 Jan 2019 10:16:24 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@emutex.onmicrosoft.com header.s=selector1-emutex-com header.b=L+xW5vkY; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727651AbfAUSOt (ORCPT + 99 others); Mon, 21 Jan 2019 13:14:49 -0500 Received: from mail-eopbgr40128.outbound.protection.outlook.com ([40.107.4.128]:53205 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726197AbfAUSOs (ORCPT ); Mon, 21 Jan 2019 13:14:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emutex.onmicrosoft.com; s=selector1-emutex-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=C96wl+eGe8Yg7iHBpbJU/5BwKllAZqBeToLEDJba3nU=; b=L+xW5vkYnCOkScK4+6tWhg/S5EOrEapsJ7MIT03ftwrQClYA5zCYZXZZ6qXhC+dMaOLzOFC4PKDrOyoM3Egs7oxghSU57x3l5vPKT/XET0DApUZWliQU5HftC3e2dcUXVkAbagSlwAKCmIB2wAHo6EVY0HHaO/UtFK6BSCufoss= Received: from HE1P190MB0012.EURP190.PROD.OUTLOOK.COM (10.172.129.137) by HE1P190MB0475.EURP190.PROD.OUTLOOK.COM (10.160.73.156) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1537.29; Mon, 21 Jan 2019 18:14:40 +0000 Received: from HE1P190MB0012.EURP190.PROD.OUTLOOK.COM ([fe80::141d:69c5:28c9:d3d7]) by HE1P190MB0012.EURP190.PROD.OUTLOOK.COM ([fe80::141d:69c5:28c9:d3d7%10]) with mapi id 15.20.1537.031; Mon, 21 Jan 2019 18:14:40 +0000 From: Dan O'Donovan To: Linus Walleij CC: "linux-kernel@vger.kernel.org" , Andy Shevchenko , Mika Westerberg , Heikki Krogerus , Lee Jones , Jacek Anaszewski , Pavel Machek , "linux-gpio@vger.kernel.org" , "linux-leds@vger.kernel.org" , Carlos Iglesias , Eric Anholt Subject: Re: [PATCH v2 3/3] pinctrl: upboard: Add UP2 pinctrl and gpio driver Thread-Topic: [PATCH v2 3/3] pinctrl: upboard: Add UP2 pinctrl and gpio driver Thread-Index: AQHUsbUrPCgT3zSsS0ucpnwwtCDIDg== Date: Mon, 21 Jan 2019 18:14:40 +0000 Message-ID: <63abcb0f-9362-401e-fd0a-46cab06840ed@emutex.com> References: In-Reply-To: Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0340.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:d::16) To HE1P190MB0012.EURP190.PROD.OUTLOOK.COM (2603:10a6:3:c9::9) authentication-results: spf=none (sender IP is ) smtp.mailfrom=dan.odonovan@emutex.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [87.198.177.202] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HE1P190MB0475;6:r/LS3l59UIuUNnVN4grrAgp7shaTaj6m5apyKKrD96nxSLz1gKwfBDD+60I+fhc36CYzmyQZtd86LJOk5rjG24CYzd3Gfe5GTahIRqrkSaZXo9Q2RMUjs+GVxudRSY6bGuGKR6LGjK87lLELcAZqEBq5RJyEG19FdtECSgH6RhcKYv7vT2N91HKbMWmmGv+pwkjeUj+nquIav6cc7iAbOuFQicQs5l44eOgKR+4/lDv/qpS0hs2pva3VG6bNCxaUL+y1XWhpy/S4zuqLcSmEr4J3FqYbbnlfmixgvcMIqj29r2CSCSqvkRFT4Yoi0vk3wKfPYLOtLV1luanx0vKlG7VTIIDoV5e4fZtCXVN0TO4HPjL4J/qzVMv37ockI2t2RzlbiDrjEtpXENCS1q9WAbeWEio7bGFucl+MHz8DQ7sPZngRwfDaDe3n3XfI6HkSATivj2ImE5c+KSpmo8daPA==;5:0R0Jgi0pI4o621BEMWocAbcMQOYHgKF1XFd4lImuhQ8J3u31qg5zJRFh5g/kY+8PC3CD6Vv3JKCRMGm4ubgVvY9h47DMHHbTl6YcJ3m+rWjtH9b7unwLsrYyErge3csH5ZSgJ2X/aOTX+r8DMBfdPkLe8hUt03+9NiGzKxnvonV87WCKuH4WTBVjqYVPfNHduQIXo7SL3Czff7Sinuf6/Q==;7:LZzUI9vx+CmrU5xAuSu95vshd/ydP4HP2TuRCOcKIAovuh0wMIHSgNAsDz6AR7ulkS9BpvSTMcu38gkqqlPv1p6vH7e8KShJeAxammFfJJpI1oxTgePGrCKG5BY+dajuFlgTxEJLjGNvFEI6IRd/mg== x-ms-office365-filtering-correlation-id: 186e5344-1c6b-48d3-4ee7-08d67fcc4f75 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600109)(711020)(2017052603328)(7153060)(7193020);SRVR:HE1P190MB0475; x-ms-traffictypediagnostic: HE1P190MB0475: x-microsoft-antispam-prvs: x-forefront-prvs: 0924C6A0D5 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(136003)(366004)(376002)(39830400003)(396003)(346002)(199004)(189003)(102836004)(2906002)(81156014)(81166006)(97736004)(7416002)(36756003)(26005)(66066001)(7736002)(6116002)(3846002)(71190400001)(71200400001)(186003)(4326008)(99286004)(105586002)(305945005)(476003)(53546011)(386003)(6506007)(486006)(6436002)(2616005)(14444005)(8676002)(256004)(6486002)(25786009)(446003)(6916009)(6246003)(229853002)(316002)(11346002)(106356001)(8936002)(31696002)(39060400002)(478600001)(52116002)(11926002)(6306002)(53936002)(54906003)(76176011)(966005)(14454004)(6512007)(31686004)(68736007)(86362001);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1P190MB0475;H:HE1P190MB0012.EURP190.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: emutex.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: P9bE/msQKBuea/FMgnIHkB7firFfwk72CHAMPEYEFxZJvatJrRq+1HxaqInqfxOBmSbuPO3zHjSjv7Z7b07J4+BeYwbokXGiBHu2C5kJ7dGskzabewLocEmDvsX2LHwu305UbxVxRHBi2zK3/HYWLDFym+QPUSynmqkA2ufz8zNzUI5G5s31oH9hGHuEjOH3GXz6RQB4YQWTp2puZsYXytNQfAa0EAIxL/OgbcPM7DA+usz+Dj3tvaJkMUaJB/d41v/cNGD1PlfPaE6a2sHvDVcIPQtNEMJMNZcE7sAmrQdKAojfY9StzQALwK7VIUuC5B8DMSyfQvVypmAKSt3PjJDeNuhCPQSocYS/bp7PmBu/36p5EMn1Cn4kmkGy8Jg4S2f0/NP4j/9T4GDqA/XIZpwVrj8r4pyf+i94jasVmoI= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <422C11DD0D67A445B2EFE01C61A9BD2C@EURP190.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: emutex.com X-MS-Exchange-CrossTenant-Network-Message-Id: 186e5344-1c6b-48d3-4ee7-08d67fcc4f75 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Jan 2019 18:14:39.4651 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84cc844b-5c53-4da1-99da-34ef4089ea8e X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1P190MB0475 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgTGludXMNCg0KTWFueSB0aGFua3MgZm9yIHlvdXIgZmVlZGJhY2sgYmVsb3csIGFuZCBzb3Jy eSB0aGF0IEknbSBvbmx5IGdldHRpbmcgdG8gZm9sbG93IHVwIG9uIHRoaXMgbm93LsKgIEkndmUg YWRkZWQgc29tZSBpbml0aWFsIHJlc3BvbnNlcyBpbmxpbmUgYmVsb3cuDQoNCk9uIDEwLzIyLzE4 IDEwOjA3IEFNLCBMaW51cyBXYWxsZWlqIHdyb3RlOg0KPiBPbiBGcmksIE9jdCAxOSwgMjAxOCBh dCA3OjE2IFBNIERhbiBPJ0Rvbm92YW4gPGRhbkBlbXV0ZXguY29tPiB3cm90ZToNCj4NCj4+IEZy b206IEphdmllciBBcnRlYWdhIDxqYXZpZXJAZW11dGV4LmNvbT4NCj4+DQo+PiBUaGUgVVAyIGJv YXJkIGZlYXR1cmVzIGEgUmFzcGJlcnJ5IFBpIGNvbXBhdGlibGUgcGluIGhlYWRlciAoSEFUKSBh bmQgYQ0KPj4gYm9hcmQtc3BlY2lmaWMgZXhwYW5zaW9uIGNvbm5lY3RvciAoRVhIQVQpLg0KPiBX aGljaCBtYWtlcyBtZSB3YW50IHRvIGhhdmUgRXJpYyBBbmhvbHQncyByZXZpZXcgb24gdGhpcyBw YXRjaA0KPiBzbyBhcyB0byBzZWN1cmUgYmFzaWMgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIHRoYXQg aGVhZGVyLg0KU3VyZS7CoCBJJ3ZlIGFkZGVkIEVyaWMgdG8gdGhlIENDIGxpc3Qgbm93Lg0KPg0K Pj4gQm90aCBleHBvc2UgYXNzb3J0ZWQNCj4+IGZ1bmN0aW9ucyBmcm9tIGVpdGhlciB0aGUgU29D IChzdWNoIGFzIEdQSU8sIEkyQywgU1BJLCBVQVJULi4uKSBvciBvdGhlcg0KPj4gb24tYm9hcmQg ZGV2aWNlcyAoQURDLCBGUEdBIElQIGJsb2Nrcy4uLikuDQo+IE9LDQo+IExvb2sgYXQgaG93IFJQ aSBkZWZpbmUgbmFtZXMgZm9yIHRoZWlyIEdQSU8gbGluZXMgaW4gdGhlDQo+IERUUyBmaWxlOg0K PiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxk cy9saW51eC5naXQvdHJlZS9hcmNoL2FybS9ib290L2R0cy9iY20yODM1LXJwaS1iLmR0cw0KPg0K PiBQbGVhc2UgZm9sbG93IHRoaXMgcGF0dGVybiB3aXRoIHlvdXIgcGF0Y2guDQo+DQo+IEFzIHlv dSBwcm9iYWJseSBkbyBub3QgaGF2ZSBkZXZpY2UgdHJlZSBvciBhbnl0aGluZyBzaW1pbGFyDQo+ IGZvciBBQ1BJIHRvIG5hbWUgdGhlIGxpbmVzIChjb3JyZWN0IG1lIGlmIEknbSB3cm9uZykNCj4g eW91IGNhbiB1c2UgdGhlIC5uYW1lcyBhcnJheSBpbiBzdHJ1Y3QgZ3Bpb19jaGlwIGZvcg0KPiBo YXJkY29kaW5nIHRoZSBwcm9wZXIgbGluZSBuYW1lcy4NCj4NCj4gbHNncGlvIHNob3VsZCBnaXZl IHRoZSBzYW1lIGxpbmUgbmFtZXMgYXMgaXQgZG9lcyBvbg0KPiB0aGUgY29ycmVzcG9uZGluZyBS UGkgaGVhZGVyIElNTy4NClRoZSBVUCBib2FyZCBlbXVsYXRlcyB0aGUgc2FtZSBiYXNpYyBwaW4g bGF5b3V0IGFzIHRoZSBSUGkgYW5kLCB3aGVyZSBwb3NzaWJsZSwgcHJvdmlkZXMgc2ltaWxhciBm dW5jdGlvbnMgKGUuZy4gSTJDLCBTUEkpIGluIGFkZGl0aW9uIHRvIEdQSU8sIGJ1dCBpdCBpcyBu b3QgMTAwJSBjb21wYXRpYmxlLsKgIEFzIHN1Y2gsIHNvbWUgb2YgdGhlIFJQaSBwaW4gbmFtZXMg KGUuZy4gU0RfREEqKSB3b3VsZCBub3Qgbm9ybWFsbHkgbWFrZSBzZW5zZSBmb3IgdGhlIFVQIGJv YXJkIGFuZCBkb24ndCBtYXRjaCB0aGUgbmFtZXMgdXNlZCBvbiB0aGUgVVAgYm9hcmQgZGF0YXNo ZWV0LsKgIEhvd2V2ZXIsIGlmIGl0cyByZWNvbW1lbmRlZCB0byBhZGhlcmUgdG8gdGhlIFJQaSBu YW1lcyBhbnl3YXkgdG8gYWlkIGFwcGxpY2F0aW9uIHBvcnRhYmlsaXR5LCBJIGNhbiBjZXJ0YWlu bHkgbG9vayBhdCBhZGRpbmcgdGhhdC4NCj4NCj4+ICtjb25maWcgUElOQ1RSTF9VUEJPQVJEDQo+ PiArICAgICAgIHRyaXN0YXRlICJVUCBTcXVhcmVkIHBpbmN0cmwgYW5kIEdQSU8gZHJpdmVyIg0K Pj4gKyAgICAgICBkZXBlbmRzIG9uIEFDUEkNCj4+ICsgICAgICAgZGVwZW5kcyBvbiBNRkRfVVBC T0FSRA0KPj4gKyAgICAgICBzZWxlY3QgUElOTVVYDQo+IHNlbGVjdCBHUElPTElCDQo+DQo+IGFz IHlvdSdyZSB1c2luZyBpdC4NCldpbGwgZG8NCj4NCj4+ICtzdGF0aWMgaW50IHVwYm9hcmRfZ2V0 X2Z1bmN0aW9uc19jb3VudChzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYpDQo+PiArew0KPj4g KyAgICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCB1cGJvYXJkX2dl dF9mdW5jdGlvbl9ncm91cHMoc3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2LA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNlbGVjdG9yLA0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIGNv bnN0ICoqZ3JvdXBzLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgaW50ICpudW1fZ3JvdXBzKQ0KPj4gK3sNCj4+ICsgICAgICAgKmdyb3VwcyA9IE5V TEw7DQo+PiArICAgICAgICpudW1fZ3JvdXBzID0gMDsNCj4+ICsgICAgICAgcmV0dXJuIDA7DQo+ PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBjaGFyICp1cGJvYXJkX2dldF9mdW5jdGlvbl9u YW1lKHN0cnVjdCBwaW5jdHJsX2RldiAqcGN0bGRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzZWxlY3RvcikNCj4+ICt7DQo+ PiArICAgICAgIHJldHVybiBOVUxMOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IHVwYm9h cmRfc2V0X211eChzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYsIHVuc2lnbmVkIGludCBmdW5j dGlvbiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBncm91cCkN Cj4+ICt7DQo+PiArICAgICAgIHJldHVybiAwOw0KPj4gK30NCj4gVGhpcyBqdXN0IGxvb2tzIHdl aXJkLg0KPg0KPiBUaGVyZSBzZWVtcyB0byBiZSBjb2RlIHRvIGRpc2FibGUgcGlucyBhbmQgdHVy biB0aGVtIGludG8NCj4gR1BJT3MgaW4gdXBib2FyZF9ncGlvX3JlcXVlc3RfZW5hYmxlKCkgYnV0 IG5vIHdheSB0bw0KPiBzd2l0Y2ggdGhlbSBiYWNrIHRvIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiwg aXMgdGhhdCBob3cgaXQgd29ya3M/DQo+DQo+IEkgZ3Vlc3MgaXQgaXMgZmluZSBpZiB0aGF0IGlz IGhvdyBpdCdzIHN1cHBvc2VkIHRvIGJlIHVzZWQuIEJ1dA0KPiB3b24ndCBzb21lIGdydW1weSB1 c2VycyBjb21lIGFyb3VuZCBhbmQgY29tcGxhaW4gYWJvdXQNCj4gdGhpcyBvbmUgZGF5Pw0KPg0K PiBXZSBjYW4gZml4IGl0IHdoZW4gaXQgaGFwcGVucyB0aG91Z2guDQpUaGF0IGlzIGNvcnJlY3Qu wqAgVGhlIEJJT1MgbWF5IGNvbmZpZ3VyZSBhIGRlZmF1bHQgcGluIGZ1bmN0aW9uIGFuZCBkaXJl Y3Rpb24gKGUuZy4gU1BJIE1PU0kpIGF0IGJvb3QsIGFuZCB0aGlzIGRyaXZlciBhaW1zIHRvIGFs bG93IHRoZSB1c2VyIHRvIHN1YnNlcXVlbnRseSBzd2l0Y2ggdGhlIHBpbiB0byBHUElPIG1vZGUg YW5kIGNoYW5nZSBpdHMgZGlyZWN0aW9uL3N0YXRlIGF0IHJ1bi10aW1lLsKgIEkgdGhpbmsgSSBu ZWVkIHRvIGV4cGxhaW4gbW9yZSBhYm91dCB0aGUgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlLCBzbyBp dHMgYmVzdCB0byBza2lwIGRvd24gdG8gc2VlIG15IHJlc3BvbnNlIHRvIHlvdXIgY29tbWVudCBh dCB0aGUgZW5kIGJlbG93Lg0KPg0KPj4gK3N0YXRpYyBpbnQgdXBib2FyZF9ncGlvX3JlcXVlc3Qo c3RydWN0IGdwaW9fY2hpcCAqZ2MsIHVuc2lnbmVkIGludCBvZmZzZXQpDQo+PiArew0KPj4gKyAg ICAgICBzdHJ1Y3QgdXBib2FyZF9waW5jdHJsICpwY3RybCA9DQo+PiArICAgICAgICAgICAgICAg Y29udGFpbmVyX29mKGdjLCBzdHJ1Y3QgdXBib2FyZF9waW5jdHJsLCBjaGlwKTsNCj4+ICsgICAg ICAgc3RydWN0IGdwaW9fZGVzYyAqZGVzYzsNCj4+ICsgICAgICAgaW50IHJldDsNCj4+ICsNCj4+ ICsgICAgICAgcmV0ID0gcGluY3RybF9ncGlvX3JlcXVlc3QoZ2MtPmJhc2UgKyBvZmZzZXQpOw0K Pj4gKyAgICAgICBpZiAocmV0KQ0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+PiAr DQo+PiArICAgICAgIGRlc2MgPSBkZXZtX2dwaW9kX2dldF9pbmRleChnYy0+cGFyZW50LCAiZXh0 ZXJuYWwiLCBvZmZzZXQsIEdQSU9EX0FTSVMpOw0KPj4gKyAgICAgICBpZiAoSVNfRVJSKGRlc2Mp KQ0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGRlc2MpOw0KPiBObyBwbGVhc2Ug ZG9uJ3QgZG8gdGhpcy4gVGhlIGNvbnN1bWVycyBzaG91bGQgcmVxdWVzdA0KPiB0aGUgZ3Bpbywg bm90IHRoZSBkcml2ZXIuDQo+DQo+PiArc3RhdGljIHZvaWQgdXBib2FyZF9ncGlvX2ZyZWUoc3Ry dWN0IGdwaW9fY2hpcCAqZ2MsIHVuc2lnbmVkIGludCBvZmZzZXQpDQo+PiArew0KPj4gKyAgICAg ICBzdHJ1Y3QgdXBib2FyZF9waW5jdHJsICpwY3RybCA9DQo+PiArICAgICAgICAgICAgICAgY29u dGFpbmVyX29mKGdjLCBzdHJ1Y3QgdXBib2FyZF9waW5jdHJsLCBjaGlwKTsNCj4+ICsNCj4+ICsg ICAgICAgaWYgKG9mZnNldCArIDEgPiBwY3RybC0+bnNvY19ncGlvcyB8fCAhcGN0cmwtPnNvY19n cGlvc1tvZmZzZXRdKQ0KPj4gKyAgICAgICAgICAgICAgIHJldHVybjsNCj4+ICsNCj4+ICsgICAg ICAgZGV2bV9ncGlvZF9wdXQoZ2MtPnBhcmVudCwgcGN0cmwtPnNvY19ncGlvc1tvZmZzZXRdKTsN Cj4gRGl0by4NCj4NCj4+ICtzdGF0aWMgaW50IHVwYm9hcmRfZ3Bpb19nZXRfZGlyZWN0aW9uKHN0 cnVjdCBncGlvX2NoaXAgKmdjLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQ0KPj4gK3sNCj4+ICsgICAg ICAgc3RydWN0IGdwaW9fZGVzYyAqZGVzYyA9IHVwYm9hcmRfb2Zmc2V0X3RvX3NvY19ncGlvKGdj LCBvZmZzZXQpOw0KPj4gKw0KPj4gKyAgICAgICBpZiAoSVNfRVJSKGRlc2MpKQ0KPj4gKyAgICAg ICAgICAgICAgIHJldHVybiBQVFJfRVJSKGRlc2MpOw0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4g Z3Bpb2RfZ2V0X2RpcmVjdGlvbihkZXNjKTsNCj4+ICt9DQo+IFRoaXMgaXMganVzdCBjb25mdXNp bmcgbWUgZXZlbiBtb3JlLi4uDQo+DQo+IElmIHlvdSBuZWVkIHBpbmN0cmxfZ3Bpb19nZXRfZGly ZWN0aW9uKCkgdGhlbiBpdCBzaG91bGQgYmUNCj4gYWRkZWQgdG8gdGhlIEFQSSBpbiA8bGludXgv cGluY3RybC9jb25zdW1lci5oPi4NCj4NCj4+ICtzdGF0aWMgaW50IHVwYm9hcmRfZ3Bpb19kaXJl Y3Rpb25fb3V0cHV0KHN0cnVjdCBncGlvX2NoaXAgKmdjLA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBpbnQgdmFsdWUpDQo+ PiArew0KPj4gKyAgICAgICBzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjID0gdXBib2FyZF9vZmZzZXRf dG9fc29jX2dwaW8oZ2MsIG9mZnNldCk7DQo+PiArICAgICAgIGludCByZXQ7DQo+PiArDQo+PiAr ICAgICAgIGlmIChJU19FUlIoZGVzYykpDQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9F UlIoZGVzYyk7DQo+PiArDQo+PiArICAgICAgIHJldCA9IHBpbmN0cmxfZ3Bpb19kaXJlY3Rpb25f b3V0cHV0KGdjLT5iYXNlICsgb2Zmc2V0KTsNCj4+ICsgICAgICAgaWYgKHJldCkNCj4+ICsgICAg ICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4gKw0KPj4gKyAgICAgICByZXR1cm4gZ3Bpb2RfZGly ZWN0aW9uX291dHB1dChkZXNjLCB2YWx1ZSk7DQo+IE5vIHRoaXMgbG9va3MgY29uZnVzaW5nIHRv by4NCj4NCj4+ICtzdGF0aWMgaW50IHVwYm9hcmRfZ3Bpb19nZXRfdmFsdWUoc3RydWN0IGdwaW9f Y2hpcCAqZ2MsIHVuc2lnbmVkIGludCBvZmZzZXQpDQo+PiArew0KPj4gKyAgICAgICBzdHJ1Y3Qg Z3Bpb19kZXNjICpkZXNjID0gdXBib2FyZF9vZmZzZXRfdG9fc29jX2dwaW8oZ2MsIG9mZnNldCk7 DQo+PiArDQo+PiArICAgICAgIGlmIChJU19FUlIoZGVzYykpDQo+PiArICAgICAgICAgICAgICAg cmV0dXJuIFBUUl9FUlIoZGVzYyk7DQo+PiArDQo+PiArICAgICAgIHJldHVybiBncGlvZF9nZXRf dmFsdWUoZGVzYyk7DQo+IEkgZG9uJ3QgZ2V0IHRoaXMgbWFza2luZyBvbmUgR1BJTyBjaGlwIGJl aGluZCBhbm90aGVyIEdQSU8gY2hpcC4NCj4gSXQgbG9va3MgcmVhbGx5IHdlaXJkLg0KPg0KPiBX aGF0IHdlIHVzdWFsbHkgaGF2ZSBpcyBhIEdQSU8gY2hpcCBpbiBmcm9udCBvZiBhIHBpbiBjb250 cm9sbGVyDQo+IHV0aWxpemluZw0KPiBleHRlcm4gaW50IHBpbmN0cmxfZ3Bpb19yZXF1ZXN0KHVu c2lnbmVkIGdwaW8pOw0KPiBleHRlcm4gdm9pZCBwaW5jdHJsX2dwaW9fZnJlZSh1bnNpZ25lZCBn cGlvKTsNCj4gZXh0ZXJuIGludCBwaW5jdHJsX2dwaW9fZGlyZWN0aW9uX2lucHV0KHVuc2lnbmVk IGdwaW8pOw0KPiBleHRlcm4gaW50IHBpbmN0cmxfZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KHVuc2ln bmVkIGdwaW8pOw0KPiBleHRlcm4gaW50IHBpbmN0cmxfZ3Bpb19zZXRfY29uZmlnKHVuc2lnbmVk IGdwaW8sIHVuc2lnbmVkIGxvbmcgY29uZmlnKTsNCj4NCj4gdGhlc2UgdGhpbmdzIGZvciB0aGUg R1BJTyBjaGlwIHRvIHRhbGsgdG8gdGhlIHBpbiBjb250cm9sDQo+IGJhY2stZW5kLg0KPg0KPiBU aGlzIGRyaXZlciBzZWVtcyB0byB1c2UgYSBHUElPIGNoaXAgaW4gZnJvbnQgb2YgYQ0KPiBHUElP IGNoaXAgYW5kIGEgcGluIGNvbnRyb2xsZXIgdG9vIChvciBzb21ldGhpbmcgbGlrZQ0KPiB0aGF0 KSBhbmQgdGhhdCBtYWtlcyBtZSB2ZXJ5IHVuZWFzeS4NCj4NCj4gSSBuZWVkIGEgY2xlYXIgcGlj dHVyZSBvZiB0aGUgaW50ZXJuYWwgYXJjaGl0ZWN0dXIgb2YNCj4gdGhlIEdQSU8gcGFydHMgb2Yg dGhpcyBkcml2ZXIsIHdoeSB0aGUgR1BJTyBhY2Nlc3NvcnMNCj4gYXJlIGNhbGxpbmcgYmFjayBp bnRvIHRoZSBHUElPIGxheWVyIGV0Yy4gSXQgbG9va3MgdmVyeQ0KPiB1bm9ydGhvZG94IHRvIG1l LCBhbmQgSSBnZXQgdmVyeSBjb25mdXNlZC4NCj4NCj4gWW91cnMuDQo+IExpbnVzIFdhbGxlaWoN Cg0KWW91J3JlIHJpZ2h0LCB0aGUgYXJjaGl0ZWN0dXJlIGhlcmUgaXMgY2VydGFpbmx5IHVuY29u dmVudGlvbmFsLsKgIEknbGwgc3RhcnQgYnkgY2xhcmlmeWluZyBzb21lIGhhcmR3YXJlIGRlc2ln biBkZXRhaWxzLg0KDQpJZiB0aGUgR1BJTyBzaWduYWxzIGZyb20gdGhlIEFwb2xsbyBMYWtlIFNv QyBvbiB0aGlzIFVQIFNxdWFyZWQgYm9hcmQgd2VyZSBjb25uZWN0ZWQgZGlyZWN0bHkgdG8gdGhl IGV4dGVybmFsIFJQaS1saWtlIHBpbiBoZWFkZXIsIHRoaXMgZHJpdmVyIHdvdWxkbid0IGV4aXN0 LsKgIEJ1dCB0aGUgU29DIHNpZ25hbHMgYXJlIDEuOFYgYW5kIHRoZSBwaW4gaGVhZGVyIG5lZWRz IHRvIHN1cHBvcnQgMy4zViwgc28gYW4gRlBHQSBoYXMgYmVlbiB1c2VkIHRvIHByb3ZpZGUgdm9s dGFnZSBsZXZlbCBzaGlmdGluZyBhbmQgYnVmZmVyaW5nIGJldHdlZW4gdGhlIFNvQyBhbmQgdGhl IHBpbiBoZWFkZXIuwqAgVGhlIGNvcnJlY3QgaW5wdXQvb3V0cHV0IGRpcmVjdGlvbiBmb3IgZWFj aCBJL08gc2lnbmFsIG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQgb24gdGhlIEZQR0EsIGFuZCBzb21l IG9mIHRoZSBJL08gc2lnbmFscyBuZWVkIHRvIGJlIHN3aXRjaGVkIGRlcGVuZGluZyBvbiB0aGUg ZnVuY3Rpb24gcmVxdWlyZWQuwqAgU28gaXQgY2FuIGJlIHNhaWQgdGhhdCB0aGUgRlBHQSBpcyBw cm92aWRpbmcgc29tZSBwaW4gY29udHJvbCBmdW5jdGlvbmFsaXR5IG91dHNpZGUgb2YgdGhlIFNv QywgYW5kIG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQgaW4gdGFuZGVtIHdpdGggdGhlIHBpbnMgb24g dGhlIFNvQyBpdHNlbGYuwqAgRS5nLiBpZiBhIEdQSU8gcGluIG9uIHRoZSBTb0MgaXMgc3dpdGNo ZWQgZnJvbSBpbnB1dCB0byBvdXRwdXQgbW9kZSwgdGhpcyBjb25maWd1cmF0aW9uIG5lZWRzIHRv IGJlIGVjaG9lZCBvbiB0aGUgRlBHQSBhcyB3ZWxsLg0KDQrCoMKgwqDCoMKgwqDCoCArLS0tLS0t LS0tLS0tLS0rwqDCoMKgICstLS0tLS0tLSvCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rDQrCoMKgwqDCoMKgwqDCoCB8wqAgU29DICgxLjhWKcKgIHwtLS0tfMKgIEZQR0HC oCB8LS0tLXwgNDAtcGluIFJQaS1saWtlIGhlYWRlciAoMy4zVikgfA0KwqDCoMKgwqDCoMKgwqAg Ky0tLS0tLS0tLS0tLS0tK8KgwqDCoCArLS0tLS0tLS0rwqDCoMKgICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKw0KDQooVGhlIEZQR0EgcHJvdmlkZXMgc29tZSBvdGhlciBmdW5jdGlv bnMgYXMgd2VsbCAoZS5nLiBMRUQgY29udHJvbCkgYnV0IHRoaXMgcGFydGljdWxhciBkcml2ZXIg aXMgZm9jdXNlZCBvbmx5IG9uIHRoZSBHUElPIHBpbiBjb250cm9sIGFzcGVjdCkNCg0KT24gb25l IGhhbmQsIGl0IGNvdWxkIGJlIHZpZXdlZCBhcyBhIHNlY29uZC1sZXZlbCBwaW4gY29udHJvbGxl ciB0byBiZSBzeW5jaHJvbmlzZWQgd2l0aCB0aGUgZmlyc3QtbGV2ZWwgR1BJTyBwaW4gY29udHJv bGxlciBvbiB0aGUgU29DLg0KDQpPbiB0aGUgb3RoZXIgaGFuZCwgaXQgY291bGQgYmUgdmlld2Vk IGFzIGEgc2VwYXJhdGUgZXh0ZXJuYWwgR1BJTyBjb250cm9sbGVyLsKgIEJ1dCB1bmxpa2UsIHNh eSBhIHR5cGljYWwgR1BJTyBjb250cm9sbGVyIGNvbm5lY3RlZCB2aWEgSTJDIG9yIFNQSSB3aGVy ZSB0aGUgc3RhdGUgb2YgZWFjaCBvZiBpdHMgZXh0ZXJuYWwgSS9PIHNpZ25hbHMgaXMgY29udHJv bGxlZCBieSBhIGJpdCBpbiBhIHJlZ2lzdGVyLCB0aGUgZXh0ZXJuYWwgSS9PIHNpZ25hbCBzdGF0 ZXMgaGVyZSBhcmUgZWFjaCBjb250cm9sbGVkIHVzaW5nIGRlZGljYXRlZCBHUElPIHNpZ25hbHMg b24gdGhlIFNvQy4NCg0KQWZ0ZXIgc29tZSBpbnRlcm5hbCBkZWJhdGUsIHRoZSAybmQgYXBwcm9h Y2ggYWJvdmUgd2FzIGNob3NlbiBhcyBpdCBzZWVtZWQgdG8gZml0IG1vcmUgZWFzaWx5IHdpdGhp biB0aGUgZXhpc3RpbmcgZ3Bpby9waW5jdHJsIGRyaXZlciBmcmFtZXdvcmsgaW4gTGludXguwqAg U28gdGhpcyBpcyB3aHkgdGhpcyBpcyBwcmVzZW50ZWQgYXMgYSBHUElPIGNoaXAgZHJpdmVyIHRo YXQgaXMgcHJvdmlkaW5nIDI4ICJleHRlcm5hbCIgR1BJTyBzaWduYWxzIGFuZCwgaW4gdHVybiwg aXMgY29uc3VtaW5nIGEgc2V0IG9mIDI4ICJpbnRlcm5hbCIgR1BJTyByZXNvdXJjZXMgb24gdGhl IFNvQy7CoCBFYWNoIEdQSU8gb24gdGhpcyBleHRlcm5hbCBHUElPIGNvbnRyb2xsZXIgaXMgY29u bmVjdGVkIHRvIGEgZGVkaWNhdGVkIFNvQyBHUElPLsKgIFNvLCB3aGVuIGEgdXNlciB0aGUgbW9k ZS9kaXJlY3Rpb24gb2YgYSBwaW4gb24gdGhlIGV4dGVybmFsIGhlYWRlciwgdGhpcyBkcml2ZXIg d2lsbCBlbnN1cmUgdGhhdCB0aGUgRlBHQSBhbmQgdGhlIGludGVybmFsIFNvQyBncGlvIGFuZCBw aW5jdHJsIGVsZW1lbnRzIGFyZSBhbGwgcmVjb25maWd1cmVkIHRvZ2V0aGVyLg0KDQpJJ2QgYmUg ZGVsaWdodGVkIHRvIGdldCB5b3VyIHRob3VnaHRzIG9uIGhvdyB5b3Ugd291bGQgcHJlZmVyIHRv IHNlZSB0aGlzIGltcGxlbWVudGVkLg0KDQoNCg==