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,URIBL_BLOCKED,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 59F3BC282DD for ; Thu, 23 May 2019 02:33:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 052282173C for ; Thu, 23 May 2019 02:33:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="XYJnY0Rq" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729874AbfEWCdf (ORCPT ); Wed, 22 May 2019 22:33:35 -0400 Received: from mail-eopbgr60049.outbound.protection.outlook.com ([40.107.6.49]:41863 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727305AbfEWCde (ORCPT ); Wed, 22 May 2019 22:33:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/arkwlxwYSmXM4oCSnMXiPF7iIjEpKxjPjB0Nm66MEs=; b=XYJnY0Rq73GS2m2SO1nRsks/H67+X3sC8CEj+k2MBFHJLJ4G9I0CVRlCbZZeW4oDp/aaV8S7dnW5xRQ/4RM804nYk6hSDSN27njT3ZC0Phs6bLDDoxBNlqPulU8qvwva3mhFxlsKcLvQunnV3aolqmnZv0Bi7Ll6E5w8vsgMcsU= Received: from VI1PR0401MB2237.eurprd04.prod.outlook.com (10.169.132.138) by VI1PR0401MB2494.eurprd04.prod.outlook.com (10.168.65.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.18; Thu, 23 May 2019 02:33:29 +0000 Received: from VI1PR0401MB2237.eurprd04.prod.outlook.com ([fe80::b091:6395:e853:5986]) by VI1PR0401MB2237.eurprd04.prod.outlook.com ([fe80::b091:6395:e853:5986%3]) with mapi id 15.20.1922.016; Thu, 23 May 2019 02:33:29 +0000 From: "Y.b. Lu" To: "netdev@vger.kernel.org" , Richard Cochran , David Miller , Claudiu Manoil , Shawn Guo , Rob Herring , Alexandru Marginean CC: "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "Y.b. Lu" Subject: [PATCH net-next v2, 1/4] enetc: add hardware timestamping support Thread-Topic: [PATCH net-next v2, 1/4] enetc: add hardware timestamping support Thread-Index: AQHVEQ/nERp99wphzkWLuKrdk6WXhA== Date: Thu, 23 May 2019 02:33:29 +0000 Message-ID: <20190523023451.2933-2-yangbo.lu@nxp.com> References: <20190523023451.2933-1-yangbo.lu@nxp.com> In-Reply-To: <20190523023451.2933-1-yangbo.lu@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HK2PR04CA0053.apcprd04.prod.outlook.com (2603:1096:202:14::21) To VI1PR0401MB2237.eurprd04.prod.outlook.com (2603:10a6:800:27::10) authentication-results: spf=none (sender IP is ) smtp.mailfrom=yangbo.lu@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d98a53a8-6417-4162-2e90-08d6df270a32 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020);SRVR:VI1PR0401MB2494; x-ms-traffictypediagnostic: VI1PR0401MB2494: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:393; x-forefront-prvs: 00462943DE x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(396003)(366004)(346002)(376002)(136003)(189003)(199004)(2616005)(54906003)(66066001)(86362001)(478600001)(110136005)(26005)(476003)(52116002)(486006)(76176011)(8676002)(66476007)(25786009)(81166006)(81156014)(186003)(66946007)(66556008)(64756008)(66446008)(99286004)(73956011)(2906002)(102836004)(3846002)(6116002)(6512007)(386003)(53936002)(2501003)(6506007)(256004)(14444005)(36756003)(68736007)(50226002)(305945005)(6486002)(7736002)(8936002)(71200400001)(71190400001)(6636002)(5660300002)(316002)(1076003)(30864003)(14454004)(446003)(4326008)(11346002)(6436002)(309714004);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0401MB2494;H:VI1PR0401MB2237.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: p8fd9Pe/D7EEHzW/PdaITrwu2Q/GB/ntaSakvzON+eOAeUoAcWiwYUE5Xd2bpjRGaz7NXYbrdvuH88D5tnOW2dcin+aOeg25A2HcuTewKpSyC9/jUgfYxAW5XgR/IhfMHzLxFe1fb4UI4M98vVdMoGijJZBKU6xbTeUBHRD+aLwe5dab2qijs35O01p97vHeVMp1MbGiUfDBynIJyuq0d7VgjacmKmC5vLRRoBVjXFpEF+qwpqV83ijgeI5g1alShQ7JL9vDt1wPUP5e06hh/yPd3Xok/c3zOK3AmKtyNH6jcJ0pmK78CpJSAV/yiQT9gHxw6yZcfixxG2usN2y/YzBxjmLV8OoNFBFAMV9+7XqxJu0XWPhu/ObrY5WHhsfDuLdHZ1chSufRL4e5gGCJ0sBauj8FlZRjcKQpWh84PSk= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d98a53a8-6417-4162-2e90-08d6df270a32 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 May 2019 02:33:29.3478 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: yangbo.lu@nxp.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2494 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org VGhpcyBwYXRjaCBpcyB0byBhZGQgaGFyZHdhcmUgdGltZXN0YW1waW5nIHN1cHBvcnQNCmZvciBF TkVUQy4gT24gUngsIHRpbWVzdGFtcGluZyBpcyBlbmFibGVkIGZvciBhbGwNCmZyYW1lcy4gT24g VHgsIHdlIG9ubHkgaW5zdHJ1Y3QgdGhlIGhhcmR3YXJlIHRvDQp0aW1lc3RhbXAgdGhlIGZyYW1l cyBtYXJrZWQgYWNjb3JkaW5nbHkgYnkgdGhlIHN0YWNrLg0KDQpCZWNhdXNlIHRoZSBSWCBCRCBy aW5nIGR5bmFtaWMgYWxsb2NhdGlvbiBoYXMgbm90IGJlZW4NCnN1cHBvcnRlZCBhbmQgaXQgaXMg dG9vIGV4cGVuc2l2ZSB0byB1c2UgZXh0ZW5kZWQgUlggQkRzDQppZiB0aW1lc3RhbXBpbmcgaXMg bm90IHVzZWQsIGEgS2NvbmZpZyBvcHRpb24gaXMgdXNlZCB0bw0KZW5hYmxlIGV4dGVuZGVkIFJY IEJEcyBpbiBvcmRlciB0byBzdXBwb3J0IGhhcmR3YXJlDQp0aW1lc3RhbXBpbmcuIFRoaXMgb3B0 aW9uIHdpbGwgYmUgcmVtb3ZlZCBvbmNlIFJYIEJEDQpyaW5nIGR5bmFtaWMgYWxsb2NhdGlvbiBp cyBpbXBsZW1lbnRlZC4NCg0KU2lnbmVkLW9mZi1ieTogWWFuZ2JvIEx1IDx5YW5nYm8ubHVAbnhw LmNvbT4NClNpZ25lZC1vZmYtYnk6IENsYXVkaXUgTWFub2lsIDxjbGF1ZGl1Lm1hbm9pbEBueHAu Y29tPg0KLS0tDQpDaGFuZ2VzIGZvciB2MjoNCgktIFJlcGhyYXNlZCBLY29uZmlnIGhlbHAgbWVz c2FnZS4NCgktIFJldmVyc2UgQ2hyaXN0bWFzIHRyZWUgb3JkZXIgZm9yIHZhcmlhYmxlIGRlZmlu aXRpb25zLg0KCS0gRHJvcHBlZCBnb3RvIGluIGVuZXRjX2NsZWFuX3R4X3JpbmcoKS4NCgktIFVz ZWQgbmFtZSBlbmV0Y19hY3RpdmVfb2ZmbG9hZHMgaW5zdGVhZCBvZiBlbmV0Y19od19mZWF0dXJl cy4NCgktIEZpeGVkIHVwIHJ4IHRzdGFtcCBpbXBsZW1lbnRhdGlvbi4NCgktIFJlcGhyYXNlZCBj b21taXQgbWVzc2FnZSBhbmQgYWRkZWQgQ2xhdWRpdS4NCi0tLQ0KIGRyaXZlcnMvbmV0L2V0aGVy bmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnICB8ICAxMCArKw0KIGRyaXZlcnMvbmV0L2V0aGVy bmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jICB8IDE1OCArKysrKysrKysrKysrKysrKy0NCiBk cml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaCAgfCAgMTIgKy0NCiAu Li4vbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oICAgfCAgMTMgKysNCiAu Li4vbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jICAgfCAgIDEgKw0KIC4u Li9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmMgICB8ICAgMSArDQogNiBm aWxlcyBjaGFuZ2VkLCAxODkgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkNCg0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWcNCmluZGV4IDg0MjlmNWMx ZDgxMC4uZWQwZDAxMGM3Y2YyIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJl ZXNjYWxlL2VuZXRjL0tjb25maWcNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2Fs ZS9lbmV0Yy9LY29uZmlnDQpAQCAtMjksMyArMjksMTMgQEAgY29uZmlnIEZTTF9FTkVUQ19QVFBf Q0xPQ0sNCiAJICBwYWNrZXRzIHVzaW5nIHRoZSBTT19USU1FU1RBTVBJTkcgQVBJLg0KIA0KIAkg IElmIGNvbXBpbGVkIGFzIG1vZHVsZSAoTSksIHRoZSBtb2R1bGUgbmFtZSBpcyBmc2wtZW5ldGMt cHRwLg0KKw0KK2NvbmZpZyBGU0xfRU5FVENfSFdfVElNRVNUQU1QSU5HDQorCWJvb2wgIkVORVRD IGhhcmR3YXJlIHRpbWVzdGFtcGluZyBzdXBwb3J0Ig0KKwlkZXBlbmRzIG9uIEZTTF9FTkVUQyB8 fCBGU0xfRU5FVENfVkYNCisJaGVscA0KKwkgIEVuYWJsZSBoYXJkd2FyZSB0aW1lc3RhbXBpbmcg c3VwcG9ydCBvbiB0aGUgRXRoZXJuZXQgcGFja2V0cw0KKwkgIHVzaW5nIHRoZSBTT19USU1FU1RB TVBJTkcgQVBJLiBCZWNhdXNlIHRoZSBSWCBCRCByaW5nIGR5bmFtaWMNCisJICBhbGxvY2F0aW9u IGhhcyBub3QgYmVlbiBzdXBwb3J0ZWQgYW5kIGl0IGlzIHRvbyBleHBlbnNpdmUgdG8gdXNlDQor CSAgZXh0ZW5kZWQgUlggQkRzIGlmIHRpbWVzdGFtcGluZyBpcyBub3QgdXNlZCwgdGhpcyBvcHRp b24gZW5hYmxlcw0KKwkgIGV4dGVuZGVkIFJYIEJEcyBpbiBvcmRlciB0byBzdXBwb3J0IGhhcmR3 YXJlIHRpbWVzdGFtcGluZy4NCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVl c2NhbGUvZW5ldGMvZW5ldGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0 Yy9lbmV0Yy5jDQppbmRleCA0OTE0NzVkODc3MzYuLmQyYWNlMjk5YmVkMCAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jDQorKysgYi9kcml2 ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYw0KQEAgLTEzLDcgKzEzLDgg QEANCiAjZGVmaW5lIEVORVRDX01BWF9TS0JfRlJBR1MJMTMNCiAjZGVmaW5lIEVORVRDX1RYQkRT X01BWF9ORUVERUQJRU5FVENfVFhCRFNfTkVFREVEKEVORVRDX01BWF9TS0JfRlJBR1MgKyAxKQ0K IA0KLXN0YXRpYyBpbnQgZW5ldGNfbWFwX3R4X2J1ZmZzKHN0cnVjdCBlbmV0Y19iZHIgKnR4X3Jp bmcsIHN0cnVjdCBza19idWZmICpza2IpOw0KK3N0YXRpYyBpbnQgZW5ldGNfbWFwX3R4X2J1ZmZz KHN0cnVjdCBlbmV0Y19iZHIgKnR4X3JpbmcsIHN0cnVjdCBza19idWZmICpza2IsDQorCQkJICAg ICAgaW50IGFjdGl2ZV9vZmZsb2Fkcyk7DQogDQogbmV0ZGV2X3R4X3QgZW5ldGNfeG1pdChzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikNCiB7DQpAQCAtMzMsNyAr MzQsNyBAQCBuZXRkZXZfdHhfdCBlbmV0Y194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVj dCBuZXRfZGV2aWNlICpuZGV2KQ0KIAkJcmV0dXJuIE5FVERFVl9UWF9CVVNZOw0KIAl9DQogDQot CWNvdW50ID0gZW5ldGNfbWFwX3R4X2J1ZmZzKHR4X3JpbmcsIHNrYik7DQorCWNvdW50ID0gZW5l dGNfbWFwX3R4X2J1ZmZzKHR4X3JpbmcsIHNrYiwgcHJpdi0+YWN0aXZlX29mZmxvYWRzKTsNCiAJ aWYgKHVubGlrZWx5KCFjb3VudCkpDQogCQlnb3RvIGRyb3BfcGFja2V0X2VycjsNCiANCkBAIC0x MDUsNyArMTA2LDggQEAgc3RhdGljIHZvaWQgZW5ldGNfZnJlZV90eF9za2Ioc3RydWN0IGVuZXRj X2JkciAqdHhfcmluZywNCiAJfQ0KIH0NCiANCi1zdGF0aWMgaW50IGVuZXRjX21hcF90eF9idWZm cyhzdHJ1Y3QgZW5ldGNfYmRyICp0eF9yaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KK3N0YXRp YyBpbnQgZW5ldGNfbWFwX3R4X2J1ZmZzKHN0cnVjdCBlbmV0Y19iZHIgKnR4X3JpbmcsIHN0cnVj dCBza19idWZmICpza2IsDQorCQkJICAgICAgaW50IGFjdGl2ZV9vZmZsb2FkcykNCiB7DQogCXN0 cnVjdCBlbmV0Y190eF9zd2JkICp0eF9zd2JkOw0KIAlzdHJ1Y3Qgc2tiX2ZyYWdfc3RydWN0ICpm cmFnOw0KQEAgLTEzNyw3ICsxMzksMTAgQEAgc3RhdGljIGludCBlbmV0Y19tYXBfdHhfYnVmZnMo c3RydWN0IGVuZXRjX2JkciAqdHhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYikNCiAJY291bnQr KzsNCiANCiAJZG9fdmxhbiA9IHNrYl92bGFuX3RhZ19wcmVzZW50KHNrYik7DQotCWRvX3RzdGFt cCA9IHNrYl9zaGluZm8oc2tiKS0+dHhfZmxhZ3MgJiBTS0JUWF9IV19UU1RBTVA7DQorCWRvX3Rz dGFtcCA9IChhY3RpdmVfb2ZmbG9hZHMgJiBFTkVUQ19GX1RYX1RTVEFNUCkgJiYNCisJCSAgICAo c2tiX3NoaW5mbyhza2IpLT50eF9mbGFncyAmIFNLQlRYX0hXX1RTVEFNUCk7DQorCXR4X3N3YmQt PmRvX3RzdGFtcCA9IGRvX3RzdGFtcDsNCisJdHhfc3diZC0+Y2hlY2tfd2IgPSB0eF9zd2JkLT5k b190c3RhbXA7DQogDQogCWlmIChkb192bGFuIHx8IGRvX3RzdGFtcCkNCiAJCWZsYWdzIHw9IEVO RVRDX1RYQkRfRkxBR1NfRVg7DQpAQCAtMjk5LDI0ICszMDQsNjkgQEAgc3RhdGljIGludCBlbmV0 Y19iZF9yZWFkeV9jb3VudChzdHJ1Y3QgZW5ldGNfYmRyICp0eF9yaW5nLCBpbnQgY2kpDQogCXJl dHVybiBwaSA+PSBjaSA/IHBpIC0gY2kgOiB0eF9yaW5nLT5iZF9jb3VudCAtIGNpICsgcGk7DQog fQ0KIA0KK3N0YXRpYyB2b2lkIGVuZXRjX2dldF90eF90c3RhbXAoc3RydWN0IGVuZXRjX2h3ICpo dywgdW5pb24gZW5ldGNfdHhfYmQgKnR4YmQsDQorCQkJCXU2NCAqdHN0YW1wKQ0KK3sNCisJdTMy IGxvLCBoaTsNCisNCisJbG8gPSBlbmV0Y19yZChodywgRU5FVENfU0lDVFIwKTsNCisJaGkgPSBl bmV0Y19yZChodywgRU5FVENfU0lDVFIxKTsNCisJaWYgKGxvIDw9IHR4YmQtPndiLnRzdGFtcCkN CisJCWhpIC09IDE7DQorCSp0c3RhbXAgPSAodTY0KWhpIDw8IDMyIHwgdHhiZC0+d2IudHN0YW1w Ow0KK30NCisNCitzdGF0aWMgdm9pZCBlbmV0Y190c3RhbXBfdHgoc3RydWN0IHNrX2J1ZmYgKnNr YiwgdTY0IHRzdGFtcCkNCit7DQorCXN0cnVjdCBza2Jfc2hhcmVkX2h3dHN0YW1wcyBzaGh3dHN0 YW1wczsNCisNCisJaWYgKHNrYl9zaGluZm8oc2tiKS0+dHhfZmxhZ3MgJiBTS0JUWF9JTl9QUk9H UkVTUykgew0KKwkJbWVtc2V0KCZzaGh3dHN0YW1wcywgMCwgc2l6ZW9mKHNoaHd0c3RhbXBzKSk7 DQorCQlzaGh3dHN0YW1wcy5od3RzdGFtcCA9IG5zX3RvX2t0aW1lKHRzdGFtcCk7DQorCQlza2Jf dHN0YW1wX3R4KHNrYiwgJnNoaHd0c3RhbXBzKTsNCisJfQ0KK30NCisNCiBzdGF0aWMgYm9vbCBl bmV0Y19jbGVhbl90eF9yaW5nKHN0cnVjdCBlbmV0Y19iZHIgKnR4X3JpbmcsIGludCBuYXBpX2J1 ZGdldCkNCiB7DQogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gdHhfcmluZy0+bmRldjsNCiAJ aW50IHR4X2ZybV9jbnQgPSAwLCB0eF9ieXRlX2NudCA9IDA7DQogCXN0cnVjdCBlbmV0Y190eF9z d2JkICp0eF9zd2JkOw0KIAlpbnQgaSwgYmRzX3RvX2NsZWFuOw0KKwlib29sIGRvX3RzdGFtcDsN CisJdTY0IHRzdGFtcCA9IDA7DQogDQogCWkgPSB0eF9yaW5nLT5uZXh0X3RvX2NsZWFuOw0KIAl0 eF9zd2JkID0gJnR4X3JpbmctPnR4X3N3YmRbaV07DQogCWJkc190b19jbGVhbiA9IGVuZXRjX2Jk X3JlYWR5X2NvdW50KHR4X3JpbmcsIGkpOw0KIA0KKwlkb190c3RhbXAgPSBmYWxzZTsNCisNCiAJ d2hpbGUgKGJkc190b19jbGVhbiAmJiB0eF9mcm1fY250IDwgRU5FVENfREVGQVVMVF9UWF9XT1JL KSB7DQogCQlib29sIGlzX2VvZiA9ICEhdHhfc3diZC0+c2tiOw0KIA0KKwkJaWYgKHVubGlrZWx5 KHR4X3N3YmQtPmNoZWNrX3diKSkgew0KKwkJCXN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYg PSBuZXRkZXZfcHJpdihuZGV2KTsNCisJCQl1bmlvbiBlbmV0Y190eF9iZCAqdHhiZDsNCisNCisJ CQl0eGJkID0gRU5FVENfVFhCRCgqdHhfcmluZywgaSk7DQorDQorCQkJaWYgKHR4YmQtPmZsYWdz ICYgRU5FVENfVFhCRF9GTEFHU19XICYmDQorCQkJICAgIHR4X3N3YmQtPmRvX3RzdGFtcCkgew0K KwkJCQllbmV0Y19nZXRfdHhfdHN0YW1wKCZwcml2LT5zaS0+aHcsIHR4YmQsDQorCQkJCQkJICAg ICZ0c3RhbXApOw0KKwkJCQlkb190c3RhbXAgPSB0cnVlOw0KKwkJCX0NCisJCX0NCisNCiAJCWlm IChsaWtlbHkodHhfc3diZC0+ZG1hKSkNCiAJCQllbmV0Y191bm1hcF90eF9idWZmKHR4X3Jpbmcs IHR4X3N3YmQpOw0KIA0KIAkJaWYgKGlzX2VvZikgew0KKwkJCWlmICh1bmxpa2VseShkb190c3Rh bXApKSB7DQorCQkJCWVuZXRjX3RzdGFtcF90eCh0eF9zd2JkLT5za2IsIHRzdGFtcCk7DQorCQkJ CWRvX3RzdGFtcCA9IGZhbHNlOw0KKwkJCX0NCiAJCQluYXBpX2NvbnN1bWVfc2tiKHR4X3N3YmQt PnNrYiwgbmFwaV9idWRnZXQpOw0KIAkJCXR4X3N3YmQtPnNrYiA9IE5VTEw7DQogCQl9DQpAQCAt NDI1LDEwICs0NzUsMzcgQEAgc3RhdGljIGludCBlbmV0Y19yZWZpbGxfcnhfcmluZyhzdHJ1Y3Qg ZW5ldGNfYmRyICpyeF9yaW5nLCBjb25zdCBpbnQgYnVmZl9jbnQpDQogCXJldHVybiBqOw0KIH0N CiANCisjaWZkZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1FU1RBTVBJTkcNCitzdGF0aWMgdm9p ZCBlbmV0Y19nZXRfcnhfdHN0YW1wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LA0KKwkJCQl1bmlv biBlbmV0Y19yeF9iZCAqcnhiZCwNCisJCQkJc3RydWN0IHNrX2J1ZmYgKnNrYikNCit7DQorCXN0 cnVjdCBza2Jfc2hhcmVkX2h3dHN0YW1wcyAqc2hod3RzdGFtcHMgPSBza2JfaHd0c3RhbXBzKHNr Yik7DQorCXN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsN CisJc3RydWN0IGVuZXRjX2h3ICpodyA9ICZwcml2LT5zaS0+aHc7DQorCXUzMiBsbywgaGk7DQor CXU2NCB0c3RhbXA7DQorDQorCWlmIChyeGJkLT5yLmZsYWdzICYgRU5FVENfUlhCRF9GTEFHX1RT VE1QKSB7DQorCQlsbyA9IGVuZXRjX3JkKGh3LCBFTkVUQ19TSUNUUjApOw0KKwkJaGkgPSBlbmV0 Y19yZChodywgRU5FVENfU0lDVFIxKTsNCisJCWlmIChsbyA8PSByeGJkLT5yLnRzdGFtcCkNCisJ CQloaSAtPSAxOw0KKw0KKwkJdHN0YW1wID0gKHU2NCloaSA8PCAzMiB8IHJ4YmQtPnIudHN0YW1w Ow0KKwkJbWVtc2V0KHNoaHd0c3RhbXBzLCAwLCBzaXplb2YoKnNoaHd0c3RhbXBzKSk7DQorCQlz aGh3dHN0YW1wcy0+aHd0c3RhbXAgPSBuc190b19rdGltZSh0c3RhbXApOw0KKwl9DQorfQ0KKyNl bmRpZg0KKw0KIHN0YXRpYyB2b2lkIGVuZXRjX2dldF9vZmZsb2FkcyhzdHJ1Y3QgZW5ldGNfYmRy ICpyeF9yaW5nLA0KIAkJCSAgICAgICB1bmlvbiBlbmV0Y19yeF9iZCAqcnhiZCwgc3RydWN0IHNr X2J1ZmYgKnNrYikNCiB7DQotCS8qIFRPRE86IGFkZCB0c3RhbXAsIGhhc2hpbmcgKi8NCisjaWZk ZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1FU1RBTVBJTkcNCisJc3RydWN0IGVuZXRjX25kZXZf cHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KHJ4X3JpbmctPm5kZXYpOw0KKyNlbmRpZg0KKwkvKiBU T0RPOiBoYXNoaW5nICovDQogCWlmIChyeF9yaW5nLT5uZGV2LT5mZWF0dXJlcyAmIE5FVElGX0Zf UlhDU1VNKSB7DQogCQl1MTYgaW5ldF9jc3VtID0gbGUxNl90b19jcHUocnhiZC0+ci5pbmV0X2Nz dW0pOw0KIA0KQEAgLTQ0Miw2ICs1MTksMTAgQEAgc3RhdGljIHZvaWQgZW5ldGNfZ2V0X29mZmxv YWRzKHN0cnVjdCBlbmV0Y19iZHIgKnJ4X3JpbmcsDQogCWlmIChsZTE2X3RvX2NwdShyeGJkLT5y LmZsYWdzKSAmIEVORVRDX1JYQkRfRkxBR19WTEFOKQ0KIAkJX192bGFuX2h3YWNjZWxfcHV0X3Rh Zyhza2IsIGh0b25zKEVUSF9QXzgwMjFRKSwNCiAJCQkJICAgICAgIGxlMTZfdG9fY3B1KHJ4YmQt PnIudmxhbl9vcHQpKTsNCisjaWZkZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1FU1RBTVBJTkcN CisJaWYgKHByaXYtPmFjdGl2ZV9vZmZsb2FkcyAmIEVORVRDX0ZfUlhfVFNUQU1QKQ0KKwkJZW5l dGNfZ2V0X3J4X3RzdGFtcChyeF9yaW5nLT5uZGV2LCByeGJkLCBza2IpOw0KKyNlbmRpZg0KIH0N CiANCiBzdGF0aWMgdm9pZCBlbmV0Y19wcm9jZXNzX3NrYihzdHJ1Y3QgZW5ldGNfYmRyICpyeF9y aW5nLA0KQEAgLTEwNzQsNiArMTE1NSw5IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3NldHVwX3J4YmRy KHN0cnVjdCBlbmV0Y19odyAqaHcsIHN0cnVjdCBlbmV0Y19iZHIgKnJ4X3JpbmcpDQogCWVuZXRj X3J4YmRyX3dyKGh3LCBpZHgsIEVORVRDX1JCSUNJUjAsIEVORVRDX1JCSUNJUjBfSUNFTiB8IDB4 MSk7DQogDQogCXJibXIgPSBFTkVUQ19SQk1SX0VOOw0KKyNpZmRlZiBDT05GSUdfRlNMX0VORVRD X0hXX1RJTUVTVEFNUElORw0KKwlyYm1yIHw9IEVORVRDX1JCTVJfQkRTOw0KKyNlbmRpZg0KIAlp ZiAocnhfcmluZy0+bmRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCkNCiAJ CXJibXIgfD0gRU5FVENfUkJNUl9WVEU7DQogDQpAQCAtMTM5Niw2ICsxNDgwLDcwIEBAIGludCBl bmV0Y19zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsDQogCXJldHVybiAwOw0K IH0NCiANCisjaWZkZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1FU1RBTVBJTkcNCitzdGF0aWMg aW50IGVuZXRjX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGlm cmVxICppZnIpDQorew0KKwlzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3By aXYobmRldik7DQorCXN0cnVjdCBod3RzdGFtcF9jb25maWcgY29uZmlnOw0KKw0KKwlpZiAoY29w eV9mcm9tX3VzZXIoJmNvbmZpZywgaWZyLT5pZnJfZGF0YSwgc2l6ZW9mKGNvbmZpZykpKQ0KKwkJ cmV0dXJuIC1FRkFVTFQ7DQorDQorCXN3aXRjaCAoY29uZmlnLnR4X3R5cGUpIHsNCisJY2FzZSBI V1RTVEFNUF9UWF9PRkY6DQorCQlwcml2LT5hY3RpdmVfb2ZmbG9hZHMgJj0gfkVORVRDX0ZfVFhf VFNUQU1QOw0KKwkJYnJlYWs7DQorCWNhc2UgSFdUU1RBTVBfVFhfT046DQorCQlwcml2LT5hY3Rp dmVfb2ZmbG9hZHMgfD0gRU5FVENfRl9UWF9UU1RBTVA7DQorCQlicmVhazsNCisJZGVmYXVsdDoN CisJCXJldHVybiAtRVJBTkdFOw0KKwl9DQorDQorCXN3aXRjaCAoY29uZmlnLnJ4X2ZpbHRlcikg ew0KKwljYXNlIEhXVFNUQU1QX0ZJTFRFUl9OT05FOg0KKwkJcHJpdi0+YWN0aXZlX29mZmxvYWRz ICY9IH5FTkVUQ19GX1JYX1RTVEFNUDsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJcHJpdi0+ YWN0aXZlX29mZmxvYWRzIHw9IEVORVRDX0ZfUlhfVFNUQU1QOw0KKwkJY29uZmlnLnJ4X2ZpbHRl ciA9IEhXVFNUQU1QX0ZJTFRFUl9BTEw7DQorCX0NCisNCisJcmV0dXJuIGNvcHlfdG9fdXNlcihp ZnItPmlmcl9kYXRhLCAmY29uZmlnLCBzaXplb2YoY29uZmlnKSkgPw0KKwkgICAgICAgLUVGQVVM VCA6IDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgZW5ldGNfaHd0c3RhbXBfZ2V0KHN0cnVjdCBuZXRf ZGV2aWNlICpuZGV2LCBzdHJ1Y3QgaWZyZXEgKmlmcikNCit7DQorCXN0cnVjdCBlbmV0Y19uZGV2 X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsNCisJc3RydWN0IGh3dHN0YW1wX2NvbmZp ZyBjb25maWc7DQorDQorCWNvbmZpZy5mbGFncyA9IDA7DQorDQorCWlmIChwcml2LT5hY3RpdmVf b2ZmbG9hZHMgJiBFTkVUQ19GX1RYX1RTVEFNUCkNCisJCWNvbmZpZy50eF90eXBlID0gSFdUU1RB TVBfVFhfT047DQorCWVsc2UNCisJCWNvbmZpZy50eF90eXBlID0gSFdUU1RBTVBfVFhfT0ZGOw0K Kw0KKwljb25maWcucnhfZmlsdGVyID0gKHByaXYtPmFjdGl2ZV9vZmZsb2FkcyAmIEVORVRDX0Zf UlhfVFNUQU1QKSA/DQorCQkJICAgIEhXVFNUQU1QX0ZJTFRFUl9BTEwgOiBIV1RTVEFNUF9GSUxU RVJfTk9ORTsNCisNCisJcmV0dXJuIGNvcHlfdG9fdXNlcihpZnItPmlmcl9kYXRhLCAmY29uZmln LCBzaXplb2YoY29uZmlnKSkgPw0KKwkgICAgICAgLUVGQVVMVCA6IDA7DQorfQ0KKyNlbmRpZg0K Kw0KK2ludCBlbmV0Y19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGlmcmVx ICpycSwgaW50IGNtZCkNCit7DQorI2lmZGVmIENPTkZJR19GU0xfRU5FVENfSFdfVElNRVNUQU1Q SU5HDQorCWlmIChjbWQgPT0gU0lPQ1NIV1RTVEFNUCkNCisJCXJldHVybiBlbmV0Y19od3RzdGFt cF9zZXQobmRldiwgcnEpOw0KKwlpZiAoY21kID09IFNJT0NHSFdUU1RBTVApDQorCQlyZXR1cm4g ZW5ldGNfaHd0c3RhbXBfZ2V0KG5kZXYsIHJxKTsNCisjZW5kaWYNCisJcmV0dXJuIC1FSU5WQUw7 DQorfQ0KKw0KIGludCBlbmV0Y19hbGxvY19tc2l4KHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnBy aXYpDQogew0KIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHByaXYtPnNpLT5wZGV2Ow0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmgNCmluZGV4IGIyNzQxMzVj NTEwMy4uMjgxYmI0MzY4Yjk4IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJl ZXNjYWxlL2VuZXRjL2VuZXRjLmgNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2Fs ZS9lbmV0Yy9lbmV0Yy5oDQpAQCAtMjEsNyArMjEsOSBAQCBzdHJ1Y3QgZW5ldGNfdHhfc3diZCB7 DQogCXN0cnVjdCBza19idWZmICpza2I7DQogCWRtYV9hZGRyX3QgZG1hOw0KIAl1MTYgbGVuOw0K LQl1MTYgaXNfZG1hX3BhZ2U7DQorCXU4IGlzX2RtYV9wYWdlOjE7DQorCXU4IGNoZWNrX3diOjE7 DQorCXU4IGRvX3RzdGFtcDoxOw0KIH07DQogDQogI2RlZmluZSBFTkVUQ19SWF9NQVhGUk1fU0la RQlFTkVUQ19NQUNfTUFYRlJNX1NJWkUNCkBAIC0xNjcsNiArMTY5LDEyIEBAIHN0cnVjdCBlbmV0 Y19jbHNfcnVsZSB7DQogDQogI2RlZmluZSBFTkVUQ19NQVhfQkRSX0lOVAkyIC8qIGZpeGVkIHRv IG1heCAjIG9mIGF2YWlsYWJsZSBjcHVzICovDQogDQorLyogVE9ETzogbW9yZSBoYXJkd2FyZSBv ZmZsb2FkcyAqLw0KK2VudW0gZW5ldGNfYWN0aXZlX29mZmxvYWRzIHsNCisJRU5FVENfRl9SWF9U U1RBTVAJPSBCSVQoMCksDQorCUVORVRDX0ZfVFhfVFNUQU1QCT0gQklUKDEpLA0KK307DQorDQog c3RydWN0IGVuZXRjX25kZXZfcHJpdiB7DQogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2Ow0KIAlz dHJ1Y3QgZGV2aWNlICpkZXY7IC8qIGRtYS1tYXBwaW5nIGRldmljZSAqLw0KQEAgLTE3OCw2ICsx ODYsNyBAQCBzdHJ1Y3QgZW5ldGNfbmRldl9wcml2IHsNCiAJdTE2IHJ4X2JkX2NvdW50LCB0eF9i ZF9jb3VudDsNCiANCiAJdTE2IG1zZ19lbmFibGU7DQorCWludCBhY3RpdmVfb2ZmbG9hZHM7DQog DQogCXN0cnVjdCBlbmV0Y19iZHIgKnR4X3JpbmdbMTZdOw0KIAlzdHJ1Y3QgZW5ldGNfYmRyICpy eF9yaW5nWzE2XTsNCkBAIC0yMTYsNiArMjI1LDcgQEAgbmV0ZGV2X3R4X3QgZW5ldGNfeG1pdChz dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7DQogc3RydWN0IG5l dF9kZXZpY2Vfc3RhdHMgKmVuZXRjX2dldF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7 DQogaW50IGVuZXRjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwNCiAJCSAg ICAgICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcyk7DQoraW50IGVuZXRjX2lvY3RsKHN0cnVj dCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKTsNCiAvKiBldGh0 b29sICovDQogdm9pZCBlbmV0Y19zZXRfZXRodG9vbF9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKm5k ZXYpOw0KIA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0 Yy9lbmV0Y19ody5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRj X2h3LmgNCmluZGV4IGRmOGViODg4MmQ5Mi4uNjU1OWNlZjRiMDdkIDEwMDY0NA0KLS0tIGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmgNCisrKyBiL2RyaXZl cnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oDQpAQCAtMzYxLDYgKzM2 MSwxMiBAQCB1bmlvbiBlbmV0Y190eF9iZCB7DQogCQl1OCBlX2ZsYWdzOw0KIAkJdTggZmxhZ3M7 DQogCX0gZXh0OyAvKiBUeCBCRCBleHRlbnNpb24gKi8NCisJc3RydWN0IHsNCisJCV9fbGUzMiB0 c3RhbXA7DQorCQl1OCByZXNlcnZlZFsxMF07DQorCQl1OCBzdGF0dXM7DQorCQl1OCBmbGFnczsN CisJfSB3YjsgLyogd3JpdGViYWNrIGRlc2NyaXB0b3IgKi8NCiB9Ow0KIA0KICNkZWZpbmUgRU5F VENfVFhCRF9GTEFHU19MNENTCUJJVCgwKQ0KQEAgLTM5OSw2ICs0MDUsOSBAQCB1bmlvbiBlbmV0 Y19yeF9iZCB7DQogCXN0cnVjdCB7DQogCQlfX2xlNjQgYWRkcjsNCiAJCXU4IHJlc2VydmVkWzhd Ow0KKyNpZmRlZiBDT05GSUdfRlNMX0VORVRDX0hXX1RJTUVTVEFNUElORw0KKwkJdTggcmVzZXJ2 ZWQxWzE2XTsNCisjZW5kaWYNCiAJfSB3Ow0KIAlzdHJ1Y3Qgew0KIAkJX19sZTE2IGluZXRfY3N1 bTsNCkBAIC00MTMsNiArNDIyLDEwIEBAIHVuaW9uIGVuZXRjX3J4X2JkIHsNCiAJCQl9Ow0KIAkJ CV9fbGUzMiBsc3RhdHVzOw0KIAkJfTsNCisjaWZkZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1F U1RBTVBJTkcNCisJCV9fbGUzMiB0c3RhbXA7DQorCQl1OCByZXNlcnZlZFsxMl07DQorI2VuZGlm DQogCX0gcjsNCiB9Ow0KIA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVz Y2FsZS9lbmV0Yy9lbmV0Y19wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2Vu ZXRjL2VuZXRjX3BmLmMNCmluZGV4IDc4Mjg3YzUxNzA5NS4uZDc4ZWM4ZDQzYzM5IDEwMDY0NA0K LS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMNCisr KyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jDQpAQCAt NzAyLDYgKzcwMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW5ldGNf bmRldl9vcHMgPSB7DQogCS5uZG9fc2V0X3ZmX3ZsYW4JPSBlbmV0Y19wZl9zZXRfdmZfdmxhbiwN CiAJLm5kb19zZXRfdmZfc3Bvb2ZjaGsJPSBlbmV0Y19wZl9zZXRfdmZfc3Bvb2ZjaGssDQogCS5u ZG9fc2V0X2ZlYXR1cmVzCT0gZW5ldGNfcGZfc2V0X2ZlYXR1cmVzLA0KKwkubmRvX2RvX2lvY3Rs CQk9IGVuZXRjX2lvY3RsLA0KIH07DQogDQogc3RhdGljIHZvaWQgZW5ldGNfcGZfbmV0ZGV2X3Nl dHVwKHN0cnVjdCBlbmV0Y19zaSAqc2ksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LA0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmMNCmluZGV4IDcy YzNlYTg4N2JjZi4uMTdmNzI2NDRjNWExIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmMNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jDQpAQCAtMTExLDYgKzExMSw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW5ldGNfbmRldl9vcHMgPSB7DQogCS5uZG9fZ2V0 X3N0YXRzCQk9IGVuZXRjX2dldF9zdGF0cywNCiAJLm5kb19zZXRfbWFjX2FkZHJlc3MJPSBlbmV0 Y192Zl9zZXRfbWFjX2FkZHIsDQogCS5uZG9fc2V0X2ZlYXR1cmVzCT0gZW5ldGNfdmZfc2V0X2Zl YXR1cmVzLA0KKwkubmRvX2RvX2lvY3RsCQk9IGVuZXRjX2lvY3RsLA0KIH07DQogDQogc3RhdGlj IHZvaWQgZW5ldGNfdmZfbmV0ZGV2X3NldHVwKHN0cnVjdCBlbmV0Y19zaSAqc2ksIHN0cnVjdCBu ZXRfZGV2aWNlICpuZGV2LA0KLS0gDQoyLjE3LjENCg0K From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Y.b. Lu" Subject: [PATCH net-next v2, 1/4] enetc: add hardware timestamping support Date: Thu, 23 May 2019 02:33:29 +0000 Message-ID: <20190523023451.2933-2-yangbo.lu@nxp.com> References: <20190523023451.2933-1-yangbo.lu@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190523023451.2933-1-yangbo.lu@nxp.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org To: "netdev@vger.kernel.org" , Richard Cochran , David Miller , Claudiu Manoil , Shawn Guo , Rob Herring , Alexandru Marginean Cc: "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "Y.b. Lu" List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBpcyB0byBhZGQgaGFyZHdhcmUgdGltZXN0YW1waW5nIHN1cHBvcnQNCmZvciBF TkVUQy4gT24gUngsIHRpbWVzdGFtcGluZyBpcyBlbmFibGVkIGZvciBhbGwNCmZyYW1lcy4gT24g VHgsIHdlIG9ubHkgaW5zdHJ1Y3QgdGhlIGhhcmR3YXJlIHRvDQp0aW1lc3RhbXAgdGhlIGZyYW1l cyBtYXJrZWQgYWNjb3JkaW5nbHkgYnkgdGhlIHN0YWNrLg0KDQpCZWNhdXNlIHRoZSBSWCBCRCBy aW5nIGR5bmFtaWMgYWxsb2NhdGlvbiBoYXMgbm90IGJlZW4NCnN1cHBvcnRlZCBhbmQgaXQgaXMg dG9vIGV4cGVuc2l2ZSB0byB1c2UgZXh0ZW5kZWQgUlggQkRzDQppZiB0aW1lc3RhbXBpbmcgaXMg bm90IHVzZWQsIGEgS2NvbmZpZyBvcHRpb24gaXMgdXNlZCB0bw0KZW5hYmxlIGV4dGVuZGVkIFJY IEJEcyBpbiBvcmRlciB0byBzdXBwb3J0IGhhcmR3YXJlDQp0aW1lc3RhbXBpbmcuIFRoaXMgb3B0 aW9uIHdpbGwgYmUgcmVtb3ZlZCBvbmNlIFJYIEJEDQpyaW5nIGR5bmFtaWMgYWxsb2NhdGlvbiBp cyBpbXBsZW1lbnRlZC4NCg0KU2lnbmVkLW9mZi1ieTogWWFuZ2JvIEx1IDx5YW5nYm8ubHVAbnhw LmNvbT4NClNpZ25lZC1vZmYtYnk6IENsYXVkaXUgTWFub2lsIDxjbGF1ZGl1Lm1hbm9pbEBueHAu Y29tPg0KLS0tDQpDaGFuZ2VzIGZvciB2MjoNCgktIFJlcGhyYXNlZCBLY29uZmlnIGhlbHAgbWVz c2FnZS4NCgktIFJldmVyc2UgQ2hyaXN0bWFzIHRyZWUgb3JkZXIgZm9yIHZhcmlhYmxlIGRlZmlu aXRpb25zLg0KCS0gRHJvcHBlZCBnb3RvIGluIGVuZXRjX2NsZWFuX3R4X3JpbmcoKS4NCgktIFVz ZWQgbmFtZSBlbmV0Y19hY3RpdmVfb2ZmbG9hZHMgaW5zdGVhZCBvZiBlbmV0Y19od19mZWF0dXJl cy4NCgktIEZpeGVkIHVwIHJ4IHRzdGFtcCBpbXBsZW1lbnRhdGlvbi4NCgktIFJlcGhyYXNlZCBj b21taXQgbWVzc2FnZSBhbmQgYWRkZWQgQ2xhdWRpdS4NCi0tLQ0KIGRyaXZlcnMvbmV0L2V0aGVy bmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnICB8ICAxMCArKw0KIGRyaXZlcnMvbmV0L2V0aGVy bmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jICB8IDE1OCArKysrKysrKysrKysrKysrKy0NCiBk cml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuaCAgfCAgMTIgKy0NCiAu Li4vbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oICAgfCAgMTMgKysNCiAu Li4vbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jICAgfCAgIDEgKw0KIC4u Li9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmMgICB8ICAgMSArDQogNiBm aWxlcyBjaGFuZ2VkLCAxODkgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkNCg0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWcNCmluZGV4IDg0MjlmNWMx ZDgxMC4uZWQwZDAxMGM3Y2YyIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJl ZXNjYWxlL2VuZXRjL0tjb25maWcNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2Fs ZS9lbmV0Yy9LY29uZmlnDQpAQCAtMjksMyArMjksMTMgQEAgY29uZmlnIEZTTF9FTkVUQ19QVFBf Q0xPQ0sNCiAJICBwYWNrZXRzIHVzaW5nIHRoZSBTT19USU1FU1RBTVBJTkcgQVBJLg0KIA0KIAkg IElmIGNvbXBpbGVkIGFzIG1vZHVsZSAoTSksIHRoZSBtb2R1bGUgbmFtZSBpcyBmc2wtZW5ldGMt cHRwLg0KKw0KK2NvbmZpZyBGU0xfRU5FVENfSFdfVElNRVNUQU1QSU5HDQorCWJvb2wgIkVORVRD IGhhcmR3YXJlIHRpbWVzdGFtcGluZyBzdXBwb3J0Ig0KKwlkZXBlbmRzIG9uIEZTTF9FTkVUQyB8 fCBGU0xfRU5FVENfVkYNCisJaGVscA0KKwkgIEVuYWJsZSBoYXJkd2FyZSB0aW1lc3RhbXBpbmcg c3VwcG9ydCBvbiB0aGUgRXRoZXJuZXQgcGFja2V0cw0KKwkgIHVzaW5nIHRoZSBTT19USU1FU1RB TVBJTkcgQVBJLiBCZWNhdXNlIHRoZSBSWCBCRCByaW5nIGR5bmFtaWMNCisJICBhbGxvY2F0aW9u IGhhcyBub3QgYmVlbiBzdXBwb3J0ZWQgYW5kIGl0IGlzIHRvbyBleHBlbnNpdmUgdG8gdXNlDQor CSAgZXh0ZW5kZWQgUlggQkRzIGlmIHRpbWVzdGFtcGluZyBpcyBub3QgdXNlZCwgdGhpcyBvcHRp b24gZW5hYmxlcw0KKwkgIGV4dGVuZGVkIFJYIEJEcyBpbiBvcmRlciB0byBzdXBwb3J0IGhhcmR3 YXJlIHRpbWVzdGFtcGluZy4NCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVl c2NhbGUvZW5ldGMvZW5ldGMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0 Yy9lbmV0Yy5jDQppbmRleCA0OTE0NzVkODc3MzYuLmQyYWNlMjk5YmVkMCAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5jDQorKysgYi9kcml2 ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGMuYw0KQEAgLTEzLDcgKzEzLDgg QEANCiAjZGVmaW5lIEVORVRDX01BWF9TS0JfRlJBR1MJMTMNCiAjZGVmaW5lIEVORVRDX1RYQkRT X01BWF9ORUVERUQJRU5FVENfVFhCRFNfTkVFREVEKEVORVRDX01BWF9TS0JfRlJBR1MgKyAxKQ0K IA0KLXN0YXRpYyBpbnQgZW5ldGNfbWFwX3R4X2J1ZmZzKHN0cnVjdCBlbmV0Y19iZHIgKnR4X3Jp bmcsIHN0cnVjdCBza19idWZmICpza2IpOw0KK3N0YXRpYyBpbnQgZW5ldGNfbWFwX3R4X2J1ZmZz KHN0cnVjdCBlbmV0Y19iZHIgKnR4X3JpbmcsIHN0cnVjdCBza19idWZmICpza2IsDQorCQkJICAg ICAgaW50IGFjdGl2ZV9vZmZsb2Fkcyk7DQogDQogbmV0ZGV2X3R4X3QgZW5ldGNfeG1pdChzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikNCiB7DQpAQCAtMzMsNyAr MzQsNyBAQCBuZXRkZXZfdHhfdCBlbmV0Y194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVj dCBuZXRfZGV2aWNlICpuZGV2KQ0KIAkJcmV0dXJuIE5FVERFVl9UWF9CVVNZOw0KIAl9DQogDQot CWNvdW50ID0gZW5ldGNfbWFwX3R4X2J1ZmZzKHR4X3JpbmcsIHNrYik7DQorCWNvdW50ID0gZW5l dGNfbWFwX3R4X2J1ZmZzKHR4X3JpbmcsIHNrYiwgcHJpdi0+YWN0aXZlX29mZmxvYWRzKTsNCiAJ aWYgKHVubGlrZWx5KCFjb3VudCkpDQogCQlnb3RvIGRyb3BfcGFja2V0X2VycjsNCiANCkBAIC0x MDUsNyArMTA2LDggQEAgc3RhdGljIHZvaWQgZW5ldGNfZnJlZV90eF9za2Ioc3RydWN0IGVuZXRj X2JkciAqdHhfcmluZywNCiAJfQ0KIH0NCiANCi1zdGF0aWMgaW50IGVuZXRjX21hcF90eF9idWZm cyhzdHJ1Y3QgZW5ldGNfYmRyICp0eF9yaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KK3N0YXRp YyBpbnQgZW5ldGNfbWFwX3R4X2J1ZmZzKHN0cnVjdCBlbmV0Y19iZHIgKnR4X3JpbmcsIHN0cnVj dCBza19idWZmICpza2IsDQorCQkJICAgICAgaW50IGFjdGl2ZV9vZmZsb2FkcykNCiB7DQogCXN0 cnVjdCBlbmV0Y190eF9zd2JkICp0eF9zd2JkOw0KIAlzdHJ1Y3Qgc2tiX2ZyYWdfc3RydWN0ICpm cmFnOw0KQEAgLTEzNyw3ICsxMzksMTAgQEAgc3RhdGljIGludCBlbmV0Y19tYXBfdHhfYnVmZnMo c3RydWN0IGVuZXRjX2JkciAqdHhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYikNCiAJY291bnQr KzsNCiANCiAJZG9fdmxhbiA9IHNrYl92bGFuX3RhZ19wcmVzZW50KHNrYik7DQotCWRvX3RzdGFt cCA9IHNrYl9zaGluZm8oc2tiKS0+dHhfZmxhZ3MgJiBTS0JUWF9IV19UU1RBTVA7DQorCWRvX3Rz dGFtcCA9IChhY3RpdmVfb2ZmbG9hZHMgJiBFTkVUQ19GX1RYX1RTVEFNUCkgJiYNCisJCSAgICAo c2tiX3NoaW5mbyhza2IpLT50eF9mbGFncyAmIFNLQlRYX0hXX1RTVEFNUCk7DQorCXR4X3N3YmQt PmRvX3RzdGFtcCA9IGRvX3RzdGFtcDsNCisJdHhfc3diZC0+Y2hlY2tfd2IgPSB0eF9zd2JkLT5k b190c3RhbXA7DQogDQogCWlmIChkb192bGFuIHx8IGRvX3RzdGFtcCkNCiAJCWZsYWdzIHw9IEVO RVRDX1RYQkRfRkxBR1NfRVg7DQpAQCAtMjk5LDI0ICszMDQsNjkgQEAgc3RhdGljIGludCBlbmV0 Y19iZF9yZWFkeV9jb3VudChzdHJ1Y3QgZW5ldGNfYmRyICp0eF9yaW5nLCBpbnQgY2kpDQogCXJl dHVybiBwaSA+PSBjaSA/IHBpIC0gY2kgOiB0eF9yaW5nLT5iZF9jb3VudCAtIGNpICsgcGk7DQog fQ0KIA0KK3N0YXRpYyB2b2lkIGVuZXRjX2dldF90eF90c3RhbXAoc3RydWN0IGVuZXRjX2h3ICpo dywgdW5pb24gZW5ldGNfdHhfYmQgKnR4YmQsDQorCQkJCXU2NCAqdHN0YW1wKQ0KK3sNCisJdTMy IGxvLCBoaTsNCisNCisJbG8gPSBlbmV0Y19yZChodywgRU5FVENfU0lDVFIwKTsNCisJaGkgPSBl bmV0Y19yZChodywgRU5FVENfU0lDVFIxKTsNCisJaWYgKGxvIDw9IHR4YmQtPndiLnRzdGFtcCkN CisJCWhpIC09IDE7DQorCSp0c3RhbXAgPSAodTY0KWhpIDw8IDMyIHwgdHhiZC0+d2IudHN0YW1w Ow0KK30NCisNCitzdGF0aWMgdm9pZCBlbmV0Y190c3RhbXBfdHgoc3RydWN0IHNrX2J1ZmYgKnNr YiwgdTY0IHRzdGFtcCkNCit7DQorCXN0cnVjdCBza2Jfc2hhcmVkX2h3dHN0YW1wcyBzaGh3dHN0 YW1wczsNCisNCisJaWYgKHNrYl9zaGluZm8oc2tiKS0+dHhfZmxhZ3MgJiBTS0JUWF9JTl9QUk9H UkVTUykgew0KKwkJbWVtc2V0KCZzaGh3dHN0YW1wcywgMCwgc2l6ZW9mKHNoaHd0c3RhbXBzKSk7 DQorCQlzaGh3dHN0YW1wcy5od3RzdGFtcCA9IG5zX3RvX2t0aW1lKHRzdGFtcCk7DQorCQlza2Jf dHN0YW1wX3R4KHNrYiwgJnNoaHd0c3RhbXBzKTsNCisJfQ0KK30NCisNCiBzdGF0aWMgYm9vbCBl bmV0Y19jbGVhbl90eF9yaW5nKHN0cnVjdCBlbmV0Y19iZHIgKnR4X3JpbmcsIGludCBuYXBpX2J1 ZGdldCkNCiB7DQogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gdHhfcmluZy0+bmRldjsNCiAJ aW50IHR4X2ZybV9jbnQgPSAwLCB0eF9ieXRlX2NudCA9IDA7DQogCXN0cnVjdCBlbmV0Y190eF9z d2JkICp0eF9zd2JkOw0KIAlpbnQgaSwgYmRzX3RvX2NsZWFuOw0KKwlib29sIGRvX3RzdGFtcDsN CisJdTY0IHRzdGFtcCA9IDA7DQogDQogCWkgPSB0eF9yaW5nLT5uZXh0X3RvX2NsZWFuOw0KIAl0 eF9zd2JkID0gJnR4X3JpbmctPnR4X3N3YmRbaV07DQogCWJkc190b19jbGVhbiA9IGVuZXRjX2Jk X3JlYWR5X2NvdW50KHR4X3JpbmcsIGkpOw0KIA0KKwlkb190c3RhbXAgPSBmYWxzZTsNCisNCiAJ d2hpbGUgKGJkc190b19jbGVhbiAmJiB0eF9mcm1fY250IDwgRU5FVENfREVGQVVMVF9UWF9XT1JL KSB7DQogCQlib29sIGlzX2VvZiA9ICEhdHhfc3diZC0+c2tiOw0KIA0KKwkJaWYgKHVubGlrZWx5 KHR4X3N3YmQtPmNoZWNrX3diKSkgew0KKwkJCXN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYg PSBuZXRkZXZfcHJpdihuZGV2KTsNCisJCQl1bmlvbiBlbmV0Y190eF9iZCAqdHhiZDsNCisNCisJ CQl0eGJkID0gRU5FVENfVFhCRCgqdHhfcmluZywgaSk7DQorDQorCQkJaWYgKHR4YmQtPmZsYWdz ICYgRU5FVENfVFhCRF9GTEFHU19XICYmDQorCQkJICAgIHR4X3N3YmQtPmRvX3RzdGFtcCkgew0K KwkJCQllbmV0Y19nZXRfdHhfdHN0YW1wKCZwcml2LT5zaS0+aHcsIHR4YmQsDQorCQkJCQkJICAg ICZ0c3RhbXApOw0KKwkJCQlkb190c3RhbXAgPSB0cnVlOw0KKwkJCX0NCisJCX0NCisNCiAJCWlm IChsaWtlbHkodHhfc3diZC0+ZG1hKSkNCiAJCQllbmV0Y191bm1hcF90eF9idWZmKHR4X3Jpbmcs IHR4X3N3YmQpOw0KIA0KIAkJaWYgKGlzX2VvZikgew0KKwkJCWlmICh1bmxpa2VseShkb190c3Rh bXApKSB7DQorCQkJCWVuZXRjX3RzdGFtcF90eCh0eF9zd2JkLT5za2IsIHRzdGFtcCk7DQorCQkJ CWRvX3RzdGFtcCA9IGZhbHNlOw0KKwkJCX0NCiAJCQluYXBpX2NvbnN1bWVfc2tiKHR4X3N3YmQt PnNrYiwgbmFwaV9idWRnZXQpOw0KIAkJCXR4X3N3YmQtPnNrYiA9IE5VTEw7DQogCQl9DQpAQCAt NDI1LDEwICs0NzUsMzcgQEAgc3RhdGljIGludCBlbmV0Y19yZWZpbGxfcnhfcmluZyhzdHJ1Y3Qg ZW5ldGNfYmRyICpyeF9yaW5nLCBjb25zdCBpbnQgYnVmZl9jbnQpDQogCXJldHVybiBqOw0KIH0N CiANCisjaWZkZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1FU1RBTVBJTkcNCitzdGF0aWMgdm9p ZCBlbmV0Y19nZXRfcnhfdHN0YW1wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LA0KKwkJCQl1bmlv biBlbmV0Y19yeF9iZCAqcnhiZCwNCisJCQkJc3RydWN0IHNrX2J1ZmYgKnNrYikNCit7DQorCXN0 cnVjdCBza2Jfc2hhcmVkX2h3dHN0YW1wcyAqc2hod3RzdGFtcHMgPSBza2JfaHd0c3RhbXBzKHNr Yik7DQorCXN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsN CisJc3RydWN0IGVuZXRjX2h3ICpodyA9ICZwcml2LT5zaS0+aHc7DQorCXUzMiBsbywgaGk7DQor CXU2NCB0c3RhbXA7DQorDQorCWlmIChyeGJkLT5yLmZsYWdzICYgRU5FVENfUlhCRF9GTEFHX1RT VE1QKSB7DQorCQlsbyA9IGVuZXRjX3JkKGh3LCBFTkVUQ19TSUNUUjApOw0KKwkJaGkgPSBlbmV0 Y19yZChodywgRU5FVENfU0lDVFIxKTsNCisJCWlmIChsbyA8PSByeGJkLT5yLnRzdGFtcCkNCisJ CQloaSAtPSAxOw0KKw0KKwkJdHN0YW1wID0gKHU2NCloaSA8PCAzMiB8IHJ4YmQtPnIudHN0YW1w Ow0KKwkJbWVtc2V0KHNoaHd0c3RhbXBzLCAwLCBzaXplb2YoKnNoaHd0c3RhbXBzKSk7DQorCQlz aGh3dHN0YW1wcy0+aHd0c3RhbXAgPSBuc190b19rdGltZSh0c3RhbXApOw0KKwl9DQorfQ0KKyNl bmRpZg0KKw0KIHN0YXRpYyB2b2lkIGVuZXRjX2dldF9vZmZsb2FkcyhzdHJ1Y3QgZW5ldGNfYmRy ICpyeF9yaW5nLA0KIAkJCSAgICAgICB1bmlvbiBlbmV0Y19yeF9iZCAqcnhiZCwgc3RydWN0IHNr X2J1ZmYgKnNrYikNCiB7DQotCS8qIFRPRE86IGFkZCB0c3RhbXAsIGhhc2hpbmcgKi8NCisjaWZk ZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1FU1RBTVBJTkcNCisJc3RydWN0IGVuZXRjX25kZXZf cHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KHJ4X3JpbmctPm5kZXYpOw0KKyNlbmRpZg0KKwkvKiBU T0RPOiBoYXNoaW5nICovDQogCWlmIChyeF9yaW5nLT5uZGV2LT5mZWF0dXJlcyAmIE5FVElGX0Zf UlhDU1VNKSB7DQogCQl1MTYgaW5ldF9jc3VtID0gbGUxNl90b19jcHUocnhiZC0+ci5pbmV0X2Nz dW0pOw0KIA0KQEAgLTQ0Miw2ICs1MTksMTAgQEAgc3RhdGljIHZvaWQgZW5ldGNfZ2V0X29mZmxv YWRzKHN0cnVjdCBlbmV0Y19iZHIgKnJ4X3JpbmcsDQogCWlmIChsZTE2X3RvX2NwdShyeGJkLT5y LmZsYWdzKSAmIEVORVRDX1JYQkRfRkxBR19WTEFOKQ0KIAkJX192bGFuX2h3YWNjZWxfcHV0X3Rh Zyhza2IsIGh0b25zKEVUSF9QXzgwMjFRKSwNCiAJCQkJICAgICAgIGxlMTZfdG9fY3B1KHJ4YmQt PnIudmxhbl9vcHQpKTsNCisjaWZkZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1FU1RBTVBJTkcN CisJaWYgKHByaXYtPmFjdGl2ZV9vZmZsb2FkcyAmIEVORVRDX0ZfUlhfVFNUQU1QKQ0KKwkJZW5l dGNfZ2V0X3J4X3RzdGFtcChyeF9yaW5nLT5uZGV2LCByeGJkLCBza2IpOw0KKyNlbmRpZg0KIH0N CiANCiBzdGF0aWMgdm9pZCBlbmV0Y19wcm9jZXNzX3NrYihzdHJ1Y3QgZW5ldGNfYmRyICpyeF9y aW5nLA0KQEAgLTEwNzQsNiArMTE1NSw5IEBAIHN0YXRpYyB2b2lkIGVuZXRjX3NldHVwX3J4YmRy KHN0cnVjdCBlbmV0Y19odyAqaHcsIHN0cnVjdCBlbmV0Y19iZHIgKnJ4X3JpbmcpDQogCWVuZXRj X3J4YmRyX3dyKGh3LCBpZHgsIEVORVRDX1JCSUNJUjAsIEVORVRDX1JCSUNJUjBfSUNFTiB8IDB4 MSk7DQogDQogCXJibXIgPSBFTkVUQ19SQk1SX0VOOw0KKyNpZmRlZiBDT05GSUdfRlNMX0VORVRD X0hXX1RJTUVTVEFNUElORw0KKwlyYm1yIHw9IEVORVRDX1JCTVJfQkRTOw0KKyNlbmRpZg0KIAlp ZiAocnhfcmluZy0+bmRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCkNCiAJ CXJibXIgfD0gRU5FVENfUkJNUl9WVEU7DQogDQpAQCAtMTM5Niw2ICsxNDgwLDcwIEBAIGludCBl bmV0Y19zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsDQogCXJldHVybiAwOw0K IH0NCiANCisjaWZkZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1FU1RBTVBJTkcNCitzdGF0aWMg aW50IGVuZXRjX2h3dHN0YW1wX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGlm cmVxICppZnIpDQorew0KKwlzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3By aXYobmRldik7DQorCXN0cnVjdCBod3RzdGFtcF9jb25maWcgY29uZmlnOw0KKw0KKwlpZiAoY29w eV9mcm9tX3VzZXIoJmNvbmZpZywgaWZyLT5pZnJfZGF0YSwgc2l6ZW9mKGNvbmZpZykpKQ0KKwkJ cmV0dXJuIC1FRkFVTFQ7DQorDQorCXN3aXRjaCAoY29uZmlnLnR4X3R5cGUpIHsNCisJY2FzZSBI V1RTVEFNUF9UWF9PRkY6DQorCQlwcml2LT5hY3RpdmVfb2ZmbG9hZHMgJj0gfkVORVRDX0ZfVFhf VFNUQU1QOw0KKwkJYnJlYWs7DQorCWNhc2UgSFdUU1RBTVBfVFhfT046DQorCQlwcml2LT5hY3Rp dmVfb2ZmbG9hZHMgfD0gRU5FVENfRl9UWF9UU1RBTVA7DQorCQlicmVhazsNCisJZGVmYXVsdDoN CisJCXJldHVybiAtRVJBTkdFOw0KKwl9DQorDQorCXN3aXRjaCAoY29uZmlnLnJ4X2ZpbHRlcikg ew0KKwljYXNlIEhXVFNUQU1QX0ZJTFRFUl9OT05FOg0KKwkJcHJpdi0+YWN0aXZlX29mZmxvYWRz ICY9IH5FTkVUQ19GX1JYX1RTVEFNUDsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJcHJpdi0+ YWN0aXZlX29mZmxvYWRzIHw9IEVORVRDX0ZfUlhfVFNUQU1QOw0KKwkJY29uZmlnLnJ4X2ZpbHRl ciA9IEhXVFNUQU1QX0ZJTFRFUl9BTEw7DQorCX0NCisNCisJcmV0dXJuIGNvcHlfdG9fdXNlcihp ZnItPmlmcl9kYXRhLCAmY29uZmlnLCBzaXplb2YoY29uZmlnKSkgPw0KKwkgICAgICAgLUVGQVVM VCA6IDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgZW5ldGNfaHd0c3RhbXBfZ2V0KHN0cnVjdCBuZXRf ZGV2aWNlICpuZGV2LCBzdHJ1Y3QgaWZyZXEgKmlmcikNCit7DQorCXN0cnVjdCBlbmV0Y19uZGV2 X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsNCisJc3RydWN0IGh3dHN0YW1wX2NvbmZp ZyBjb25maWc7DQorDQorCWNvbmZpZy5mbGFncyA9IDA7DQorDQorCWlmIChwcml2LT5hY3RpdmVf b2ZmbG9hZHMgJiBFTkVUQ19GX1RYX1RTVEFNUCkNCisJCWNvbmZpZy50eF90eXBlID0gSFdUU1RB TVBfVFhfT047DQorCWVsc2UNCisJCWNvbmZpZy50eF90eXBlID0gSFdUU1RBTVBfVFhfT0ZGOw0K Kw0KKwljb25maWcucnhfZmlsdGVyID0gKHByaXYtPmFjdGl2ZV9vZmZsb2FkcyAmIEVORVRDX0Zf UlhfVFNUQU1QKSA/DQorCQkJICAgIEhXVFNUQU1QX0ZJTFRFUl9BTEwgOiBIV1RTVEFNUF9GSUxU RVJfTk9ORTsNCisNCisJcmV0dXJuIGNvcHlfdG9fdXNlcihpZnItPmlmcl9kYXRhLCAmY29uZmln LCBzaXplb2YoY29uZmlnKSkgPw0KKwkgICAgICAgLUVGQVVMVCA6IDA7DQorfQ0KKyNlbmRpZg0K Kw0KK2ludCBlbmV0Y19pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGlmcmVx ICpycSwgaW50IGNtZCkNCit7DQorI2lmZGVmIENPTkZJR19GU0xfRU5FVENfSFdfVElNRVNUQU1Q SU5HDQorCWlmIChjbWQgPT0gU0lPQ1NIV1RTVEFNUCkNCisJCXJldHVybiBlbmV0Y19od3RzdGFt cF9zZXQobmRldiwgcnEpOw0KKwlpZiAoY21kID09IFNJT0NHSFdUU1RBTVApDQorCQlyZXR1cm4g ZW5ldGNfaHd0c3RhbXBfZ2V0KG5kZXYsIHJxKTsNCisjZW5kaWYNCisJcmV0dXJuIC1FSU5WQUw7 DQorfQ0KKw0KIGludCBlbmV0Y19hbGxvY19tc2l4KHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnBy aXYpDQogew0KIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHByaXYtPnNpLT5wZGV2Ow0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Yy5oIGIvZHJp dmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjLmgNCmluZGV4IGIyNzQxMzVj NTEwMy4uMjgxYmI0MzY4Yjk4IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJl ZXNjYWxlL2VuZXRjL2VuZXRjLmgNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2Fs ZS9lbmV0Yy9lbmV0Yy5oDQpAQCAtMjEsNyArMjEsOSBAQCBzdHJ1Y3QgZW5ldGNfdHhfc3diZCB7 DQogCXN0cnVjdCBza19idWZmICpza2I7DQogCWRtYV9hZGRyX3QgZG1hOw0KIAl1MTYgbGVuOw0K LQl1MTYgaXNfZG1hX3BhZ2U7DQorCXU4IGlzX2RtYV9wYWdlOjE7DQorCXU4IGNoZWNrX3diOjE7 DQorCXU4IGRvX3RzdGFtcDoxOw0KIH07DQogDQogI2RlZmluZSBFTkVUQ19SWF9NQVhGUk1fU0la RQlFTkVUQ19NQUNfTUFYRlJNX1NJWkUNCkBAIC0xNjcsNiArMTY5LDEyIEBAIHN0cnVjdCBlbmV0 Y19jbHNfcnVsZSB7DQogDQogI2RlZmluZSBFTkVUQ19NQVhfQkRSX0lOVAkyIC8qIGZpeGVkIHRv IG1heCAjIG9mIGF2YWlsYWJsZSBjcHVzICovDQogDQorLyogVE9ETzogbW9yZSBoYXJkd2FyZSBv ZmZsb2FkcyAqLw0KK2VudW0gZW5ldGNfYWN0aXZlX29mZmxvYWRzIHsNCisJRU5FVENfRl9SWF9U U1RBTVAJPSBCSVQoMCksDQorCUVORVRDX0ZfVFhfVFNUQU1QCT0gQklUKDEpLA0KK307DQorDQog c3RydWN0IGVuZXRjX25kZXZfcHJpdiB7DQogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2Ow0KIAlz dHJ1Y3QgZGV2aWNlICpkZXY7IC8qIGRtYS1tYXBwaW5nIGRldmljZSAqLw0KQEAgLTE3OCw2ICsx ODYsNyBAQCBzdHJ1Y3QgZW5ldGNfbmRldl9wcml2IHsNCiAJdTE2IHJ4X2JkX2NvdW50LCB0eF9i ZF9jb3VudDsNCiANCiAJdTE2IG1zZ19lbmFibGU7DQorCWludCBhY3RpdmVfb2ZmbG9hZHM7DQog DQogCXN0cnVjdCBlbmV0Y19iZHIgKnR4X3JpbmdbMTZdOw0KIAlzdHJ1Y3QgZW5ldGNfYmRyICpy eF9yaW5nWzE2XTsNCkBAIC0yMTYsNiArMjI1LDcgQEAgbmV0ZGV2X3R4X3QgZW5ldGNfeG1pdChz dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7DQogc3RydWN0IG5l dF9kZXZpY2Vfc3RhdHMgKmVuZXRjX2dldF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7 DQogaW50IGVuZXRjX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwNCiAJCSAg ICAgICBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcyk7DQoraW50IGVuZXRjX2lvY3RsKHN0cnVj dCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKTsNCiAvKiBldGh0 b29sICovDQogdm9pZCBlbmV0Y19zZXRfZXRodG9vbF9vcHMoc3RydWN0IG5ldF9kZXZpY2UgKm5k ZXYpOw0KIA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0 Yy9lbmV0Y19ody5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRj X2h3LmgNCmluZGV4IGRmOGViODg4MmQ5Mi4uNjU1OWNlZjRiMDdkIDEwMDY0NA0KLS0tIGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX2h3LmgNCisrKyBiL2RyaXZl cnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19ody5oDQpAQCAtMzYxLDYgKzM2 MSwxMiBAQCB1bmlvbiBlbmV0Y190eF9iZCB7DQogCQl1OCBlX2ZsYWdzOw0KIAkJdTggZmxhZ3M7 DQogCX0gZXh0OyAvKiBUeCBCRCBleHRlbnNpb24gKi8NCisJc3RydWN0IHsNCisJCV9fbGUzMiB0 c3RhbXA7DQorCQl1OCByZXNlcnZlZFsxMF07DQorCQl1OCBzdGF0dXM7DQorCQl1OCBmbGFnczsN CisJfSB3YjsgLyogd3JpdGViYWNrIGRlc2NyaXB0b3IgKi8NCiB9Ow0KIA0KICNkZWZpbmUgRU5F VENfVFhCRF9GTEFHU19MNENTCUJJVCgwKQ0KQEAgLTM5OSw2ICs0MDUsOSBAQCB1bmlvbiBlbmV0 Y19yeF9iZCB7DQogCXN0cnVjdCB7DQogCQlfX2xlNjQgYWRkcjsNCiAJCXU4IHJlc2VydmVkWzhd Ow0KKyNpZmRlZiBDT05GSUdfRlNMX0VORVRDX0hXX1RJTUVTVEFNUElORw0KKwkJdTggcmVzZXJ2 ZWQxWzE2XTsNCisjZW5kaWYNCiAJfSB3Ow0KIAlzdHJ1Y3Qgew0KIAkJX19sZTE2IGluZXRfY3N1 bTsNCkBAIC00MTMsNiArNDIyLDEwIEBAIHVuaW9uIGVuZXRjX3J4X2JkIHsNCiAJCQl9Ow0KIAkJ CV9fbGUzMiBsc3RhdHVzOw0KIAkJfTsNCisjaWZkZWYgQ09ORklHX0ZTTF9FTkVUQ19IV19USU1F U1RBTVBJTkcNCisJCV9fbGUzMiB0c3RhbXA7DQorCQl1OCByZXNlcnZlZFsxMl07DQorI2VuZGlm DQogCX0gcjsNCiB9Ow0KIA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVz Y2FsZS9lbmV0Yy9lbmV0Y19wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2Vu ZXRjL2VuZXRjX3BmLmMNCmluZGV4IDc4Mjg3YzUxNzA5NS4uZDc4ZWM4ZDQzYzM5IDEwMDY0NA0K LS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMNCisr KyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jDQpAQCAt NzAyLDYgKzcwMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW5ldGNf bmRldl9vcHMgPSB7DQogCS5uZG9fc2V0X3ZmX3ZsYW4JPSBlbmV0Y19wZl9zZXRfdmZfdmxhbiwN CiAJLm5kb19zZXRfdmZfc3Bvb2ZjaGsJPSBlbmV0Y19wZl9zZXRfdmZfc3Bvb2ZjaGssDQogCS5u ZG9fc2V0X2ZlYXR1cmVzCT0gZW5ldGNfcGZfc2V0X2ZlYXR1cmVzLA0KKwkubmRvX2RvX2lvY3Rs CQk9IGVuZXRjX2lvY3RsLA0KIH07DQogDQogc3RhdGljIHZvaWQgZW5ldGNfcGZfbmV0ZGV2X3Nl dHVwKHN0cnVjdCBlbmV0Y19zaSAqc2ksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LA0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmMNCmluZGV4IDcy YzNlYTg4N2JjZi4uMTdmNzI2NDRjNWExIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3ZmLmMNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y192Zi5jDQpAQCAtMTExLDYgKzExMSw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW5ldGNfbmRldl9vcHMgPSB7DQogCS5uZG9fZ2V0 X3N0YXRzCQk9IGVuZXRjX2dldF9zdGF0cywNCiAJLm5kb19zZXRfbWFjX2FkZHJlc3MJPSBlbmV0 Y192Zl9zZXRfbWFjX2FkZHIsDQogCS5uZG9fc2V0X2ZlYXR1cmVzCT0gZW5ldGNfdmZfc2V0X2Zl YXR1cmVzLA0KKwkubmRvX2RvX2lvY3RsCQk9IGVuZXRjX2lvY3RsLA0KIH07DQogDQogc3RhdGlj IHZvaWQgZW5ldGNfdmZfbmV0ZGV2X3NldHVwKHN0cnVjdCBlbmV0Y19zaSAqc2ksIHN0cnVjdCBu ZXRfZGV2aWNlICpuZGV2LA0KLS0gDQoyLjE3LjENCg0K 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.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,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 4B948C282CE for ; Thu, 23 May 2019 02:33:54 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 D089C2177E for ; Thu, 23 May 2019 02:33:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="pD+GDLC3"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="XYJnY0Rq" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D089C2177E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=MqW4UEHy/J6sVK8YdziVCHqTat9UaAoCg6ZpOn7bgvQ=; b=pD+GDLC3PaUuFg WM0jD4TBGqVoXYd1h7p5euXadIlYjyrKPpFVrxuTX5baWrS1Ev7LMS0TyVXnVw0VqD+f4fNC+I+vx nmbmzW+27+2EiYvVQP6s/RGKF1vig/M6x0VAGU1KcNNqZ1VphDnVzytW9L5dnAWmPdAP2S7EVhF3l Y/EzUtydeFHw0LBnXyL2RAOX9gnAZz9YbZ8xY9rXtVortoIcbECk5FUXqd5bMYUlzwhkwANzH11pP NaikdY3B5/xYtOOWUf+xt3PabsKiCw8TumkFtd8eTD91BMFZqu4dNuU2pXpIqD8eeGzlCcnXGj925 4HR6ULoNXUH+ZTd9SqlA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hTdY9-00048D-CI; Thu, 23 May 2019 02:33:45 +0000 Received: from mail-eopbgr60060.outbound.protection.outlook.com ([40.107.6.60] helo=EUR04-DB3-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hTdXw-0003sn-U9 for linux-arm-kernel@lists.infradead.org; Thu, 23 May 2019 02:33:37 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/arkwlxwYSmXM4oCSnMXiPF7iIjEpKxjPjB0Nm66MEs=; b=XYJnY0Rq73GS2m2SO1nRsks/H67+X3sC8CEj+k2MBFHJLJ4G9I0CVRlCbZZeW4oDp/aaV8S7dnW5xRQ/4RM804nYk6hSDSN27njT3ZC0Phs6bLDDoxBNlqPulU8qvwva3mhFxlsKcLvQunnV3aolqmnZv0Bi7Ll6E5w8vsgMcsU= Received: from VI1PR0401MB2237.eurprd04.prod.outlook.com (10.169.132.138) by VI1PR0401MB2494.eurprd04.prod.outlook.com (10.168.65.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.18; Thu, 23 May 2019 02:33:29 +0000 Received: from VI1PR0401MB2237.eurprd04.prod.outlook.com ([fe80::b091:6395:e853:5986]) by VI1PR0401MB2237.eurprd04.prod.outlook.com ([fe80::b091:6395:e853:5986%3]) with mapi id 15.20.1922.016; Thu, 23 May 2019 02:33:29 +0000 From: "Y.b. Lu" To: "netdev@vger.kernel.org" , Richard Cochran , David Miller , Claudiu Manoil , Shawn Guo , Rob Herring , Alexandru Marginean Subject: [PATCH net-next v2, 1/4] enetc: add hardware timestamping support Thread-Topic: [PATCH net-next v2, 1/4] enetc: add hardware timestamping support Thread-Index: AQHVEQ/nERp99wphzkWLuKrdk6WXhA== Date: Thu, 23 May 2019 02:33:29 +0000 Message-ID: <20190523023451.2933-2-yangbo.lu@nxp.com> References: <20190523023451.2933-1-yangbo.lu@nxp.com> In-Reply-To: <20190523023451.2933-1-yangbo.lu@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HK2PR04CA0053.apcprd04.prod.outlook.com (2603:1096:202:14::21) To VI1PR0401MB2237.eurprd04.prod.outlook.com (2603:10a6:800:27::10) authentication-results: spf=none (sender IP is ) smtp.mailfrom=yangbo.lu@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d98a53a8-6417-4162-2e90-08d6df270a32 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VI1PR0401MB2494; x-ms-traffictypediagnostic: VI1PR0401MB2494: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:393; x-forefront-prvs: 00462943DE x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(396003)(366004)(346002)(376002)(136003)(189003)(199004)(2616005)(54906003)(66066001)(86362001)(478600001)(110136005)(26005)(476003)(52116002)(486006)(76176011)(8676002)(66476007)(25786009)(81166006)(81156014)(186003)(66946007)(66556008)(64756008)(66446008)(99286004)(73956011)(2906002)(102836004)(3846002)(6116002)(6512007)(386003)(53936002)(2501003)(6506007)(256004)(14444005)(36756003)(68736007)(50226002)(305945005)(6486002)(7736002)(8936002)(71200400001)(71190400001)(6636002)(5660300002)(316002)(1076003)(30864003)(14454004)(446003)(4326008)(11346002)(6436002)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0401MB2494; H:VI1PR0401MB2237.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: p8fd9Pe/D7EEHzW/PdaITrwu2Q/GB/ntaSakvzON+eOAeUoAcWiwYUE5Xd2bpjRGaz7NXYbrdvuH88D5tnOW2dcin+aOeg25A2HcuTewKpSyC9/jUgfYxAW5XgR/IhfMHzLxFe1fb4UI4M98vVdMoGijJZBKU6xbTeUBHRD+aLwe5dab2qijs35O01p97vHeVMp1MbGiUfDBynIJyuq0d7VgjacmKmC5vLRRoBVjXFpEF+qwpqV83ijgeI5g1alShQ7JL9vDt1wPUP5e06hh/yPd3Xok/c3zOK3AmKtyNH6jcJ0pmK78CpJSAV/yiQT9gHxw6yZcfixxG2usN2y/YzBxjmLV8OoNFBFAMV9+7XqxJu0XWPhu/ObrY5WHhsfDuLdHZ1chSufRL4e5gGCJ0sBauj8FlZRjcKQpWh84PSk= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d98a53a8-6417-4162-2e90-08d6df270a32 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 May 2019 02:33:29.3478 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: yangbo.lu@nxp.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2494 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190522_193333_100748_BFCAA409 X-CRM114-Status: GOOD ( 22.29 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "Y.b. Lu" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org This patch is to add hardware timestamping support for ENETC. On Rx, timestamping is enabled for all frames. On Tx, we only instruct the hardware to timestamp the frames marked accordingly by the stack. Because the RX BD ring dynamic allocation has not been supported and it is too expensive to use extended RX BDs if timestamping is not used, a Kconfig option is used to enable extended RX BDs in order to support hardware timestamping. This option will be removed once RX BD ring dynamic allocation is implemented. Signed-off-by: Yangbo Lu Signed-off-by: Claudiu Manoil --- Changes for v2: - Rephrased Kconfig help message. - Reverse Christmas tree order for variable definitions. - Dropped goto in enetc_clean_tx_ring(). - Used name enetc_active_offloads instead of enetc_hw_features. - Fixed up rx tstamp implementation. - Rephrased commit message and added Claudiu. --- drivers/net/ethernet/freescale/enetc/Kconfig | 10 ++ drivers/net/ethernet/freescale/enetc/enetc.c | 158 +++++++++++++++++- drivers/net/ethernet/freescale/enetc/enetc.h | 12 +- .../net/ethernet/freescale/enetc/enetc_hw.h | 13 ++ .../net/ethernet/freescale/enetc/enetc_pf.c | 1 + .../net/ethernet/freescale/enetc/enetc_vf.c | 1 + 6 files changed, 189 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/freescale/enetc/Kconfig b/drivers/net/ethernet/freescale/enetc/Kconfig index 8429f5c1d810..ed0d010c7cf2 100644 --- a/drivers/net/ethernet/freescale/enetc/Kconfig +++ b/drivers/net/ethernet/freescale/enetc/Kconfig @@ -29,3 +29,13 @@ config FSL_ENETC_PTP_CLOCK packets using the SO_TIMESTAMPING API. If compiled as module (M), the module name is fsl-enetc-ptp. + +config FSL_ENETC_HW_TIMESTAMPING + bool "ENETC hardware timestamping support" + depends on FSL_ENETC || FSL_ENETC_VF + help + Enable hardware timestamping support on the Ethernet packets + using the SO_TIMESTAMPING API. Because the RX BD ring dynamic + allocation has not been supported and it is too expensive to use + extended RX BDs if timestamping is not used, this option enables + extended RX BDs in order to support hardware timestamping. diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c index 491475d87736..d2ace299bed0 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.c +++ b/drivers/net/ethernet/freescale/enetc/enetc.c @@ -13,7 +13,8 @@ #define ENETC_MAX_SKB_FRAGS 13 #define ENETC_TXBDS_MAX_NEEDED ENETC_TXBDS_NEEDED(ENETC_MAX_SKB_FRAGS + 1) -static int enetc_map_tx_buffs(struct enetc_bdr *tx_ring, struct sk_buff *skb); +static int enetc_map_tx_buffs(struct enetc_bdr *tx_ring, struct sk_buff *skb, + int active_offloads); netdev_tx_t enetc_xmit(struct sk_buff *skb, struct net_device *ndev) { @@ -33,7 +34,7 @@ netdev_tx_t enetc_xmit(struct sk_buff *skb, struct net_device *ndev) return NETDEV_TX_BUSY; } - count = enetc_map_tx_buffs(tx_ring, skb); + count = enetc_map_tx_buffs(tx_ring, skb, priv->active_offloads); if (unlikely(!count)) goto drop_packet_err; @@ -105,7 +106,8 @@ static void enetc_free_tx_skb(struct enetc_bdr *tx_ring, } } -static int enetc_map_tx_buffs(struct enetc_bdr *tx_ring, struct sk_buff *skb) +static int enetc_map_tx_buffs(struct enetc_bdr *tx_ring, struct sk_buff *skb, + int active_offloads) { struct enetc_tx_swbd *tx_swbd; struct skb_frag_struct *frag; @@ -137,7 +139,10 @@ static int enetc_map_tx_buffs(struct enetc_bdr *tx_ring, struct sk_buff *skb) count++; do_vlan = skb_vlan_tag_present(skb); - do_tstamp = skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP; + do_tstamp = (active_offloads & ENETC_F_TX_TSTAMP) && + (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP); + tx_swbd->do_tstamp = do_tstamp; + tx_swbd->check_wb = tx_swbd->do_tstamp; if (do_vlan || do_tstamp) flags |= ENETC_TXBD_FLAGS_EX; @@ -299,24 +304,69 @@ static int enetc_bd_ready_count(struct enetc_bdr *tx_ring, int ci) return pi >= ci ? pi - ci : tx_ring->bd_count - ci + pi; } +static void enetc_get_tx_tstamp(struct enetc_hw *hw, union enetc_tx_bd *txbd, + u64 *tstamp) +{ + u32 lo, hi; + + lo = enetc_rd(hw, ENETC_SICTR0); + hi = enetc_rd(hw, ENETC_SICTR1); + if (lo <= txbd->wb.tstamp) + hi -= 1; + *tstamp = (u64)hi << 32 | txbd->wb.tstamp; +} + +static void enetc_tstamp_tx(struct sk_buff *skb, u64 tstamp) +{ + struct skb_shared_hwtstamps shhwtstamps; + + if (skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS) { + memset(&shhwtstamps, 0, sizeof(shhwtstamps)); + shhwtstamps.hwtstamp = ns_to_ktime(tstamp); + skb_tstamp_tx(skb, &shhwtstamps); + } +} + static bool enetc_clean_tx_ring(struct enetc_bdr *tx_ring, int napi_budget) { struct net_device *ndev = tx_ring->ndev; int tx_frm_cnt = 0, tx_byte_cnt = 0; struct enetc_tx_swbd *tx_swbd; int i, bds_to_clean; + bool do_tstamp; + u64 tstamp = 0; i = tx_ring->next_to_clean; tx_swbd = &tx_ring->tx_swbd[i]; bds_to_clean = enetc_bd_ready_count(tx_ring, i); + do_tstamp = false; + while (bds_to_clean && tx_frm_cnt < ENETC_DEFAULT_TX_WORK) { bool is_eof = !!tx_swbd->skb; + if (unlikely(tx_swbd->check_wb)) { + struct enetc_ndev_priv *priv = netdev_priv(ndev); + union enetc_tx_bd *txbd; + + txbd = ENETC_TXBD(*tx_ring, i); + + if (txbd->flags & ENETC_TXBD_FLAGS_W && + tx_swbd->do_tstamp) { + enetc_get_tx_tstamp(&priv->si->hw, txbd, + &tstamp); + do_tstamp = true; + } + } + if (likely(tx_swbd->dma)) enetc_unmap_tx_buff(tx_ring, tx_swbd); if (is_eof) { + if (unlikely(do_tstamp)) { + enetc_tstamp_tx(tx_swbd->skb, tstamp); + do_tstamp = false; + } napi_consume_skb(tx_swbd->skb, napi_budget); tx_swbd->skb = NULL; } @@ -425,10 +475,37 @@ static int enetc_refill_rx_ring(struct enetc_bdr *rx_ring, const int buff_cnt) return j; } +#ifdef CONFIG_FSL_ENETC_HW_TIMESTAMPING +static void enetc_get_rx_tstamp(struct net_device *ndev, + union enetc_rx_bd *rxbd, + struct sk_buff *skb) +{ + struct skb_shared_hwtstamps *shhwtstamps = skb_hwtstamps(skb); + struct enetc_ndev_priv *priv = netdev_priv(ndev); + struct enetc_hw *hw = &priv->si->hw; + u32 lo, hi; + u64 tstamp; + + if (rxbd->r.flags & ENETC_RXBD_FLAG_TSTMP) { + lo = enetc_rd(hw, ENETC_SICTR0); + hi = enetc_rd(hw, ENETC_SICTR1); + if (lo <= rxbd->r.tstamp) + hi -= 1; + + tstamp = (u64)hi << 32 | rxbd->r.tstamp; + memset(shhwtstamps, 0, sizeof(*shhwtstamps)); + shhwtstamps->hwtstamp = ns_to_ktime(tstamp); + } +} +#endif + static void enetc_get_offloads(struct enetc_bdr *rx_ring, union enetc_rx_bd *rxbd, struct sk_buff *skb) { - /* TODO: add tstamp, hashing */ +#ifdef CONFIG_FSL_ENETC_HW_TIMESTAMPING + struct enetc_ndev_priv *priv = netdev_priv(rx_ring->ndev); +#endif + /* TODO: hashing */ if (rx_ring->ndev->features & NETIF_F_RXCSUM) { u16 inet_csum = le16_to_cpu(rxbd->r.inet_csum); @@ -442,6 +519,10 @@ static void enetc_get_offloads(struct enetc_bdr *rx_ring, if (le16_to_cpu(rxbd->r.flags) & ENETC_RXBD_FLAG_VLAN) __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), le16_to_cpu(rxbd->r.vlan_opt)); +#ifdef CONFIG_FSL_ENETC_HW_TIMESTAMPING + if (priv->active_offloads & ENETC_F_RX_TSTAMP) + enetc_get_rx_tstamp(rx_ring->ndev, rxbd, skb); +#endif } static void enetc_process_skb(struct enetc_bdr *rx_ring, @@ -1074,6 +1155,9 @@ static void enetc_setup_rxbdr(struct enetc_hw *hw, struct enetc_bdr *rx_ring) enetc_rxbdr_wr(hw, idx, ENETC_RBICIR0, ENETC_RBICIR0_ICEN | 0x1); rbmr = ENETC_RBMR_EN; +#ifdef CONFIG_FSL_ENETC_HW_TIMESTAMPING + rbmr |= ENETC_RBMR_BDS; +#endif if (rx_ring->ndev->features & NETIF_F_HW_VLAN_CTAG_RX) rbmr |= ENETC_RBMR_VTE; @@ -1396,6 +1480,70 @@ int enetc_set_features(struct net_device *ndev, return 0; } +#ifdef CONFIG_FSL_ENETC_HW_TIMESTAMPING +static int enetc_hwtstamp_set(struct net_device *ndev, struct ifreq *ifr) +{ + struct enetc_ndev_priv *priv = netdev_priv(ndev); + struct hwtstamp_config config; + + if (copy_from_user(&config, ifr->ifr_data, sizeof(config))) + return -EFAULT; + + switch (config.tx_type) { + case HWTSTAMP_TX_OFF: + priv->active_offloads &= ~ENETC_F_TX_TSTAMP; + break; + case HWTSTAMP_TX_ON: + priv->active_offloads |= ENETC_F_TX_TSTAMP; + break; + default: + return -ERANGE; + } + + switch (config.rx_filter) { + case HWTSTAMP_FILTER_NONE: + priv->active_offloads &= ~ENETC_F_RX_TSTAMP; + break; + default: + priv->active_offloads |= ENETC_F_RX_TSTAMP; + config.rx_filter = HWTSTAMP_FILTER_ALL; + } + + return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ? + -EFAULT : 0; +} + +static int enetc_hwtstamp_get(struct net_device *ndev, struct ifreq *ifr) +{ + struct enetc_ndev_priv *priv = netdev_priv(ndev); + struct hwtstamp_config config; + + config.flags = 0; + + if (priv->active_offloads & ENETC_F_TX_TSTAMP) + config.tx_type = HWTSTAMP_TX_ON; + else + config.tx_type = HWTSTAMP_TX_OFF; + + config.rx_filter = (priv->active_offloads & ENETC_F_RX_TSTAMP) ? + HWTSTAMP_FILTER_ALL : HWTSTAMP_FILTER_NONE; + + return copy_to_user(ifr->ifr_data, &config, sizeof(config)) ? + -EFAULT : 0; +} +#endif + +int enetc_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd) +{ +#ifdef CONFIG_FSL_ENETC_HW_TIMESTAMPING + if (cmd == SIOCSHWTSTAMP) + return enetc_hwtstamp_set(ndev, rq); + if (cmd == SIOCGHWTSTAMP) + return enetc_hwtstamp_get(ndev, rq); +#endif + return -EINVAL; +} + int enetc_alloc_msix(struct enetc_ndev_priv *priv) { struct pci_dev *pdev = priv->si->pdev; diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/ethernet/freescale/enetc/enetc.h index b274135c5103..281bb4368b98 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.h +++ b/drivers/net/ethernet/freescale/enetc/enetc.h @@ -21,7 +21,9 @@ struct enetc_tx_swbd { struct sk_buff *skb; dma_addr_t dma; u16 len; - u16 is_dma_page; + u8 is_dma_page:1; + u8 check_wb:1; + u8 do_tstamp:1; }; #define ENETC_RX_MAXFRM_SIZE ENETC_MAC_MAXFRM_SIZE @@ -167,6 +169,12 @@ struct enetc_cls_rule { #define ENETC_MAX_BDR_INT 2 /* fixed to max # of available cpus */ +/* TODO: more hardware offloads */ +enum enetc_active_offloads { + ENETC_F_RX_TSTAMP = BIT(0), + ENETC_F_TX_TSTAMP = BIT(1), +}; + struct enetc_ndev_priv { struct net_device *ndev; struct device *dev; /* dma-mapping device */ @@ -178,6 +186,7 @@ struct enetc_ndev_priv { u16 rx_bd_count, tx_bd_count; u16 msg_enable; + int active_offloads; struct enetc_bdr *tx_ring[16]; struct enetc_bdr *rx_ring[16]; @@ -216,6 +225,7 @@ netdev_tx_t enetc_xmit(struct sk_buff *skb, struct net_device *ndev); struct net_device_stats *enetc_get_stats(struct net_device *ndev); int enetc_set_features(struct net_device *ndev, netdev_features_t features); +int enetc_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd); /* ethtool */ void enetc_set_ethtool_ops(struct net_device *ndev); diff --git a/drivers/net/ethernet/freescale/enetc/enetc_hw.h b/drivers/net/ethernet/freescale/enetc/enetc_hw.h index df8eb8882d92..6559cef4b07d 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_hw.h +++ b/drivers/net/ethernet/freescale/enetc/enetc_hw.h @@ -361,6 +361,12 @@ union enetc_tx_bd { u8 e_flags; u8 flags; } ext; /* Tx BD extension */ + struct { + __le32 tstamp; + u8 reserved[10]; + u8 status; + u8 flags; + } wb; /* writeback descriptor */ }; #define ENETC_TXBD_FLAGS_L4CS BIT(0) @@ -399,6 +405,9 @@ union enetc_rx_bd { struct { __le64 addr; u8 reserved[8]; +#ifdef CONFIG_FSL_ENETC_HW_TIMESTAMPING + u8 reserved1[16]; +#endif } w; struct { __le16 inet_csum; @@ -413,6 +422,10 @@ union enetc_rx_bd { }; __le32 lstatus; }; +#ifdef CONFIG_FSL_ENETC_HW_TIMESTAMPING + __le32 tstamp; + u8 reserved[12]; +#endif } r; }; diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/ethernet/freescale/enetc/enetc_pf.c index 78287c517095..d78ec8d43c39 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c @@ -702,6 +702,7 @@ static const struct net_device_ops enetc_ndev_ops = { .ndo_set_vf_vlan = enetc_pf_set_vf_vlan, .ndo_set_vf_spoofchk = enetc_pf_set_vf_spoofchk, .ndo_set_features = enetc_pf_set_features, + .ndo_do_ioctl = enetc_ioctl, }; static void enetc_pf_netdev_setup(struct enetc_si *si, struct net_device *ndev, diff --git a/drivers/net/ethernet/freescale/enetc/enetc_vf.c b/drivers/net/ethernet/freescale/enetc/enetc_vf.c index 72c3ea887bcf..17f72644c5a1 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_vf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_vf.c @@ -111,6 +111,7 @@ static const struct net_device_ops enetc_ndev_ops = { .ndo_get_stats = enetc_get_stats, .ndo_set_mac_address = enetc_vf_set_mac_addr, .ndo_set_features = enetc_vf_set_features, + .ndo_do_ioctl = enetc_ioctl, }; static void enetc_vf_netdev_setup(struct enetc_si *si, struct net_device *ndev, -- 2.17.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel