From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id 48ED6A00E6 for ; Thu, 16 May 2019 17:20:39 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1D4BC5F62; Thu, 16 May 2019 17:20:39 +0200 (CEST) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00076.outbound.protection.outlook.com [40.107.0.76]) by dpdk.org (Postfix) with ESMTP id BC0D95F2E for ; Thu, 16 May 2019 17:20:37 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nM9a5hcLpDs4qty/tGPQHRFh5vG4o5hNX6PU4GwQAMk=; b=JLQCm7GTXSB6E1qEvxZJxsIhDj++vPD/XQTNtpzdl/dlaPNBlYwQfQe6Jnl7j9sx79uzMg4598fXYakM+MCQN8cXBAbDZIeehHxxPVf3hLWRUArL7OycaFRj1bbqxS34OfRsLd1nJyIQ+3IOM5JvJUqeDueC5DKJHR41dJYTs9I= Received: from AM0PR05MB4435.eurprd05.prod.outlook.com (52.134.95.151) by AM0PR05MB4884.eurprd05.prod.outlook.com (20.177.41.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1878.24; Thu, 16 May 2019 15:20:36 +0000 Received: from AM0PR05MB4435.eurprd05.prod.outlook.com ([fe80::c40a:d6fe:1246:7278]) by AM0PR05MB4435.eurprd05.prod.outlook.com ([fe80::c40a:d6fe:1246:7278%4]) with mapi id 15.20.1878.024; Thu, 16 May 2019 15:20:36 +0000 From: Moti Haimovsky To: Shahaf Shuler CC: "dev@dpdk.org" , Moti Haimovsky Thread-Topic: [RFC] net/mlx5: support for flow action on VLAN header Thread-Index: AQHVC/rpL2xwqZQ4/EqOe+rXIlycZw== Date: Thu, 16 May 2019 15:20:35 +0000 Message-ID: <1558020019-156458-1-git-send-email-motih@mellanox.com> Accept-Language: he-IL, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0345.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:d::21) To AM0PR05MB4435.eurprd05.prod.outlook.com (2603:10a6:208:61::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=motih@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 1.8.3.1 x-originating-ip: [37.142.13.130] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: df8492a2-999f-462d-c830-08d6da120b7c 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:AM0PR05MB4884; x-ms-traffictypediagnostic: AM0PR05MB4884: x-ms-exchange-purlcount: 2 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4125; x-forefront-prvs: 0039C6E5C5 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(376002)(136003)(346002)(396003)(189003)(199004)(68736007)(50226002)(5660300002)(102836004)(73956011)(64756008)(966005)(14454004)(30864003)(305945005)(478600001)(26005)(186003)(86362001)(66476007)(66446008)(71190400001)(25786009)(316002)(6486002)(71200400001)(66556008)(66946007)(8936002)(6436002)(386003)(6506007)(36756003)(4326008)(6862004)(6306002)(6512007)(99286004)(66066001)(476003)(53936002)(54906003)(6116002)(107886003)(6636002)(7736002)(2906002)(256004)(37006003)(14444005)(8676002)(81156014)(81166006)(52116002)(3846002)(4720700003)(2616005)(486006)(53946003)(15398625002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR05MB4884; H:AM0PR05MB4435.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: /GARJUCQsokIz+sNgx9Z2UyHWWe+9dNefgT6tfw29oVTrHxrtyEhUlcjAlEySU+H6OgGd4BnYiyvOEKou62rGCsUv+e4dtqCvKr53hTP2mxj8159OTd7Up+dZRkit+JRrXa1RHMRHa9Ld3R4hr/zISeFvBfoGTYNEqhT451jpqkk2y+YeACXRghSa220FW5we0MOl7j53PnXuTluMoVV2V3trkxJGBN0H+Ll1z0N/CVwWXQxk8EV2UBWIMrEaCHi1DCl4hft6kc2erp2zqjO+Wc6HpGmXtFqIH4/5XY5cRiUqW9TFpIlHGNjGGIWJuLNtMK4l6WHipaUVnH7aJtv3GwYn3x0tTR9izBBQIdnBd0yYxLqidQyBJLbTfEnBSjBImwyKq4CZKyzaZ7BlkXezPMoGb8DoO1zNru9yD8Qx9g= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: df8492a2-999f-462d-c830-08d6da120b7c X-MS-Exchange-CrossTenant-originalarrivaltime: 16 May 2019 15:20:35.9985 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB4884 Subject: [dpdk-dev] [RFC] net/mlx5: support for flow action on VLAN header X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" VkxBTiBhY3Rpb25zIHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQgaW4gbGlicnRlX2V0aGRldiwgYW5k IGluDQp0ZXN0LXBtZCBhcHBsaWNhdGlvbiwgYmFzZWQgb24gWzFdIEdlbmVyaWMgZmxvdyBBUEku DQpUaGVzZSBhY3Rpb25zIGNvbmZvcm0gdG8gdGhlIFZMQU4gYWN0aW9ucyBkZWZpbmVkIGluDQpb Ml0gdGhlIE9wZW5GbG93IFN3aXRjaCBTcGVjaWZpY2F0aW9uLg0KDQpydGVfZmxvdyBkZWZpbmVz IHRoZSBmb2xsb3dpbmcgVkxBTiBhY3Rpb25zOg0KIDEuIE9GX1BPUF9WTEFODQogICAgUG9wIHRo ZSBvdXRlci1tb3N0IFZMQU4gaGVhZGVyIGZyb20gdGhlIHBhY2tldC4NCiAyLiBPRl9QVVNIX1ZM QU4NCiAgICBQdXNoIGEgbmV3IFZMQU4gaGVhZGVyIG9udG8gdGhlIHBhY2tldC4NCiAzLiBPRl9T RVRfVkxBTl9WSUQNCiAgICBTZXRzIHRoZSBJRCBvZiB0aGUgb3V0ZXJtb3N0IFZMQU4gdGFnLg0K IDQuIE9GX1NFVF9WTEFOX1BDUA0KICAgIFNldHMgdGhlIDMtYml0IHByaW9yaXR5IGZpZWxkIG9m IHRoZSBvdXRlcm1vc3QgVkxBTiB0YWcuDQoNCkFzIGZvciB0b2RheSB0aGUgbWx4NSBQTUQgZG9l cyBub3Qgc3VwcG9ydCB0aG9zZSBWTEFOIGFjdGlvbnMNCnVzaW5nIGl0cyBEaXJlY3QgVmVyYnMg aW50ZXJmYWNlLg0KVGhpcyBSRkMgcHJvcG9zZXMgYWRkaW5nIHRoaXMgbWlzc2luZyBzdXBwb3J0 IHRvIHRoZSBQTUQuDQoNCkNvbW1lbnRzIGFyZSB3ZWxjb21lLg0KDQpbMV0gaHR0cHM6Ly9kb2Mu ZHBkay5vcmcvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRlX2Zsb3cuaHRtbA0KDQpbMl0gaHR0cHM6Ly93 d3cub3Blbm5ldHdvcmtpbmcub3JnL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDE0LzEwLw0KICAgIG9w ZW5mbG93LXNwZWMtdjEuNC4wLnBkZg0KDQpTaWduZWQtb2ZmLWJ5OiBNb3RpIEhhaW1vdnNreSA8 bW90aWhAbWVsbGFub3guY29tPg0KLS0tDQogZHJpdmVycy9uZXQvbWx4NS9NYWtlZmlsZSAgICAg ICB8ICAgMiArLQ0KIGRyaXZlcnMvbmV0L21seDUvbWVzb24uYnVpbGQgICAgfCAgIDIgKy0NCiBk cml2ZXJzL25ldC9tbHg1L21seDUuYyAgICAgICAgIHwgICA5ICsrDQogZHJpdmVycy9uZXQvbWx4 NS9tbHg1LmggICAgICAgICB8ICAgMSArDQogZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuaCAg ICB8ICAyNiArKystDQogZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3dfZHYuYyB8IDI2MyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystDQogZHJpdmVycy9uZXQvbWx4NS9t bHg1X2dsdWUuYyAgICB8ICAyNyArKysrKw0KIGRyaXZlcnMvbmV0L21seDUvbWx4NV9nbHVlLmgg ICAgfCAgIDIgKw0KIGRyaXZlcnMvbmV0L21seDUvbWx4NV9wcm0uaCAgICAgfCAgIDEgKw0KIDkg ZmlsZXMgY2hhbmdlZCwgMzI0IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pDQoNCmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L01ha2VmaWxlIGIvZHJpdmVycy9uZXQvbWx4NS9NYWtl ZmlsZQ0KaW5kZXggMjY5NDkxNi4uNGE0MjI1ZSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L21s eDUvTWFrZWZpbGUNCisrKyBiL2RyaXZlcnMvbmV0L21seDUvTWFrZWZpbGUNCkBAIC04LDcgKzgs NyBAQCBpbmNsdWRlICQoUlRFX1NESykvbWsvcnRlLnZhcnMubWsNCiBMSUIgPSBsaWJydGVfcG1k X21seDUuYQ0KIExJQl9HTFVFID0gJChMSUJfR0xVRV9CQVNFKS4kKExJQl9HTFVFX1ZFUlNJT04p DQogTElCX0dMVUVfQkFTRSA9IGxpYnJ0ZV9wbWRfbWx4NV9nbHVlLnNvDQotTElCX0dMVUVfVkVS U0lPTiA9IDE5LjA1LjANCitMSUJfR0xVRV9WRVJTSU9OID0gMTkuMDguMA0KIA0KICMgU291cmNl cy4NCiBTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfTUxYNV9QTUQpICs9IG1seDUuYw0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWVzb24uYnVpbGQgYi9kcml2ZXJzL25ldC9tbHg1L21l c29uLmJ1aWxkDQppbmRleCBhYzNiNTI5Li5mMWY5N2ExIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9u ZXQvbWx4NS9tZXNvbi5idWlsZA0KKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tZXNvbi5idWlsZA0K QEAgLTQsNyArNCw3IEBADQogDQogcG1kX2Rsb3BlbiA9IChnZXRfb3B0aW9uKCdpYnZlcmJzX2xp bmsnKSA9PSAnZGxvcGVuJykNCiBMSUJfR0xVRV9CQVNFID0gJ2xpYnJ0ZV9wbWRfbWx4NV9nbHVl LnNvJw0KLUxJQl9HTFVFX1ZFUlNJT04gPSAnMTkuMDUuMCcNCitMSUJfR0xVRV9WRVJTSU9OID0g JzE5LjA4LjAnDQogTElCX0dMVUUgPSBMSUJfR0xVRV9CQVNFICsgJy4nICsgTElCX0dMVUVfVkVS U0lPTg0KIGlmIHBtZF9kbG9wZW4NCiAJZHBka19jb25mLnNldCgnUlRFX0lCVkVSQlNfTElOS19E TE9QRU4nLCAxKQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NS5jIGIvZHJpdmVy cy9uZXQvbWx4NS9tbHg1LmMNCmluZGV4IDlmNWVjOTcuLjIwMDAzNTAgMTAwNjQ0DQotLS0gYS9k cml2ZXJzL25ldC9tbHg1L21seDUuYw0KKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1LmMNCkBA IC0zNjksNiArMzY5LDcgQEAgc3RydWN0IG1seDVfZGV2X3NwYXduX2RhdGEgew0KIAl9DQogCXB0 aHJlYWRfbXV0ZXhfaW5pdCgmc2gtPmR2X211dGV4LCBOVUxMKTsNCiAJc2gtPnR4X2RvbWFpbiA9 IGRvbWFpbjsNCisJc2gtPnBvcF92bGFuX2FjdGlvbiA9IG1seDVfZ2x1ZS0+ZHJfY3JlYXRlX2Zs b3dfYWN0aW9uX3BvcF92bGFuKCk7DQogI2lmZGVmIEhBVkVfTUxYNURWX0RSX0VTV0lUQ0gNCiAJ aWYgKHByaXYtPmNvbmZpZy5kdl9lc3dfZW4pIHsNCiAJCWRvbWFpbiAgPSBtbHg1X2dsdWUtPmRy X2NyZWF0ZV9kb21haW4NCkBAIC00MDAsNiArNDAxLDEwIEBAIHN0cnVjdCBtbHg1X2Rldl9zcGF3 bl9kYXRhIHsNCiAJCW1seDVfZ2x1ZS0+ZHJfZGVzdHJveV9kb21haW4oc2gtPmZkYl9kb21haW4p Ow0KIAkJc2gtPmZkYl9kb21haW4gPSBOVUxMOw0KIAl9DQorCWlmIChzaC0+cG9wX3ZsYW5fYWN0 aW9uKSB7DQorCQltbHg1X2dsdWUtPmRlc3Ryb3lfZmxvd19hY3Rpb24oc2gtPnBvcF92bGFuX2Fj dGlvbik7DQorCQlzaC0+cG9wX3ZsYW5fYWN0aW9uID0gTlVMTDsNCisJfQ0KIAlpZiAoc2gtPmVz d19kcm9wX2FjdGlvbikgew0KIAkJbWx4NV9nbHVlLT5kZXN0cm95X2Zsb3dfYWN0aW9uKHNoLT5l c3dfZHJvcF9hY3Rpb24pOw0KIAkJc2gtPmVzd19kcm9wX2FjdGlvbiA9IE5VTEw7DQpAQCAtNDM5 LDYgKzQ0NCwxMCBAQCBzdHJ1Y3QgbWx4NV9kZXZfc3Bhd25fZGF0YSB7DQogCQltbHg1X2dsdWUt PmRyX2Rlc3Ryb3lfZG9tYWluKHNoLT50eF9kb21haW4pOw0KIAkJc2gtPnR4X2RvbWFpbiA9IE5V TEw7DQogCX0NCisJaWYgKHNoLT5wb3Bfdmxhbl9hY3Rpb24pIHsNCisJCW1seDVfZ2x1ZS0+ZGVz dHJveV9mbG93X2FjdGlvbihzaC0+cG9wX3ZsYW5fYWN0aW9uKTsNCisJCXNoLT5wb3Bfdmxhbl9h Y3Rpb24gPSBOVUxMOw0KKwl9DQogI2lmZGVmIEhBVkVfTUxYNURWX0RSX0VTV0lUQ0gNCiAJaWYg KHNoLT5mZGJfZG9tYWluKSB7DQogCQltbHg1X2dsdWUtPmRyX2Rlc3Ryb3lfZG9tYWluKHNoLT5m ZGJfZG9tYWluKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L21seDUuaCBiL2RyaXZl cnMvbmV0L21seDUvbWx4NS5oDQppbmRleCAzZWFhYWZkLi5iOWU2MjFkIDEwMDY0NA0KLS0tIGEv ZHJpdmVycy9uZXQvbWx4NS9tbHg1LmgNCisrKyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NS5oDQpA QCAtMjk3LDYgKzI5Nyw3IEBAIHN0cnVjdCBtbHg1X2lidl9zaGFyZWQgew0KIAl2b2lkICp0eF9k b21haW47IC8qIFRYIERpcmVjdCBSdWxlcyBuYW1lIHNwYWNlIGhhbmRsZS4gKi8NCiAJc3RydWN0 IG1seDVfZmxvd190YmxfcmVzb3VyY2UgdHhfdGJsW01MWDVfTUFYX1RBQkxFU107DQogCXZvaWQg KmVzd19kcm9wX2FjdGlvbjsgLyogUG9pbnRlciB0byBEUiBFLVN3aXRjaCBkcm9wIGFjdGlvbi4g Ki8NCisJdm9pZCAqcG9wX3ZsYW5fYWN0aW9uOyAvKiBQb2ludGVyIHRvIERSIHBvcCBWTEFOIGFj dGlvbi4gKi8NCiAJLyogVFggRGlyZWN0IFJ1bGVzIHRhYmxlcy8gKi8NCiAJTElTVF9IRUFEKG1h dGNoZXJzLCBtbHg1X2Zsb3dfZHZfbWF0Y2hlcikgbWF0Y2hlcnM7DQogCUxJU1RfSEVBRChlbmNh cF9kZWNhcCwgbWx4NV9mbG93X2R2X2VuY2FwX2RlY2FwX3Jlc291cmNlKSBlbmNhcHNfZGVjYXBz Ow0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmggYi9kcml2ZXJzL25l dC9tbHg1L21seDVfZmxvdy5oDQppbmRleCBiNjY1NDIwLi4wZmRiYTQ2IDEwMDY0NA0KLS0tIGEv ZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuaA0KKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1 X2Zsb3cuaA0KQEAgLTEyNSwxMSArMTI1LDEzIEBADQogDQogI2RlZmluZSBNTFg1X0ZMT1dfRU5D QVBfQUNUSU9OUwkoTUxYNV9GTE9XX0FDVElPTl9WWExBTl9FTkNBUCB8IFwNCiAJCQkJIE1MWDVf RkxPV19BQ1RJT05fTlZHUkVfRU5DQVAgfCBcDQotCQkJCSBNTFg1X0ZMT1dfQUNUSU9OX1JBV19F TkNBUCkNCisJCQkJIE1MWDVfRkxPV19BQ1RJT05fUkFXX0VOQ0FQIHwgXA0KKwkJCQkgTUxYNV9G TE9XX0FDVElPTl9PRl9QVVNIX1ZMQU4pDQogDQogI2RlZmluZSBNTFg1X0ZMT1dfREVDQVBfQUNU SU9OUwkoTUxYNV9GTE9XX0FDVElPTl9WWExBTl9ERUNBUCB8IFwNCiAJCQkJIE1MWDVfRkxPV19B Q1RJT05fTlZHUkVfREVDQVAgfCBcDQotCQkJCSBNTFg1X0ZMT1dfQUNUSU9OX1JBV19ERUNBUCkN CisJCQkJIE1MWDVfRkxPV19BQ1RJT05fUkFXX0RFQ0FQIHwgXA0KKwkJCQkgTUxYNV9GTE9XX0FD VElPTl9PRl9QT1BfVkxBTikNCiANCiAjZGVmaW5lIE1MWDVfRkxPV19NT0RJRllfSERSX0FDVElP TlMgKE1MWDVfRkxPV19BQ1RJT05fU0VUX0lQVjRfU1JDIHwgXA0KIAkJCQkgICAgICBNTFg1X0ZM T1dfQUNUSU9OX1NFVF9JUFY0X0RTVCB8IFwNCkBAIC0xNDAsNyArMTQyLDEzIEBADQogCQkJCSAg ICAgIE1MWDVfRkxPV19BQ1RJT05fU0VUX1RUTCB8IFwNCiAJCQkJICAgICAgTUxYNV9GTE9XX0FD VElPTl9ERUNfVFRMIHwgXA0KIAkJCQkgICAgICBNTFg1X0ZMT1dfQUNUSU9OX1NFVF9NQUNfU1JD IHwgXA0KLQkJCQkgICAgICBNTFg1X0ZMT1dfQUNUSU9OX1NFVF9NQUNfRFNUKQ0KKwkJCQkgICAg ICBNTFg1X0ZMT1dfQUNUSU9OX1NFVF9NQUNfRFNUIHwgXA0KKwkJCQkgICAgICBNTFg1X0ZMT1df QUNUSU9OX09GX1NFVF9WTEFOX1ZJRCB8IFwNCisJCQkJICAgICAgTUxYNV9GTE9XX0FDVElPTl9P Rl9TRVRfVkxBTl9QQ1ApDQorDQorI2RlZmluZSBNTFg1X0ZMT1dfVkxBTl9BQ1RJT05TIFwNCisJ KE1MWDVfRkxPV19BQ1RJT05fT0ZfUE9QX1ZMQU4gfCBNTFg1X0ZMT1dfQUNUSU9OX09GX1BVU0hf VkxBTiB8IFwNCisJIE1MWDVfRkxPV19BQ1RJT05fT0ZfU0VUX1ZMQU5fVklEIHwgTUxYNV9GTE9X X0FDVElPTl9PRl9TRVRfVkxBTl9QQ1ApDQogDQogI2lmbmRlZiBJUFBST1RPX01QTFMNCiAjZGVm aW5lIElQUFJPVE9fTVBMUyAxMzcNCkBAIC0yNTgsNiArMjY2LDE2IEBAIHN0cnVjdCBtbHg1X2Zs b3dfZHZfbW9kaWZ5X2hkcl9yZXNvdXJjZSB7DQogCXVpbnQ2NF90IGZsYWdzOyAvKio8IEZsYWdz IGZvciBSRE1BIEFQSS4gKi8NCiB9Ow0KIA0KKy8qIFB1c2ggVkxBTiBhY3Rpb24gcmVzb3VyY2Ug c3RydWN0dXJlICovDQorc3RydWN0IG1seDVfZmxvd19kdl9wdXNoX3ZsYW5fYWN0aW9uX3Jlc291 cmNlIHsNCisJTElTVF9FTlRSWShtbHg1X2Zsb3dfZHZfcHVzaF92bGFuX2FjdGlvbl9yZXNvdXJj ZSkgbmV4dDsNCisJLyogUG9pbnRlciB0byBuZXh0IGVsZW1lbnQuICovDQorCXJ0ZV9hdG9taWMz Ml90IHJlZmNudDsgLyoqPCBSZWZlcmVuY2UgY291bnRlci4gKi8NCisJdm9pZCAqYWN0aW9uOw0K KwkvKio8IERpcmVjdCB2ZXJicyBhY3Rpb24gb2JqZWN0LiAqLw0KKwl1aW50MzJfdCB2bGFuX2hk cjsgLyoqPCBWTEFOIGhlYWRlciB2YWx1ZS4gKi8NCit9Ow0KKw0KIC8qIEp1bXAgYWN0aW9uIHJl c291cmNlIHN0cnVjdHVyZS4gKi8NCiBzdHJ1Y3QgbWx4NV9mbG93X2R2X2p1bXBfdGJsX3Jlc291 cmNlIHsNCiAJTElTVF9FTlRSWShtbHg1X2Zsb3dfZHZfanVtcF90YmxfcmVzb3VyY2UpIG5leHQ7 DQpAQCAtMjk3LDYgKzMxNSw4IEBAIHN0cnVjdCBtbHg1X2Zsb3dfZHYgew0KIAkvKio8IFBvaW50 ZXIgdG8gZW5jYXAvZGVjYXAgcmVzb3VyY2UgaW4gY2FjaGUuICovDQogCXN0cnVjdCBtbHg1X2Zs b3dfZHZfbW9kaWZ5X2hkcl9yZXNvdXJjZSAqbW9kaWZ5X2hkcjsNCiAJLyoqPCBQb2ludGVyIHRv IG1vZGlmeSBoZWFkZXIgcmVzb3VyY2UgaW4gY2FjaGUuICovDQorCXN0cnVjdCBtbHg1X2Zsb3df ZHZfcHVzaF92bGFuX2FjdGlvbl9yZXNvdXJjZSAqcHVzaF92bGFuX2FjdGlvbjsNCisJLyoqPCBQ b2ludGVyIHRvIHB1c2ggVkxBTiBhY3Rpb24gcmVzb3VyY2UgaW4gY2FjaGUuICovDQogCXN0cnVj dCBpYnZfZmxvdyAqZmxvdzsgLyoqPCBJbnN0YWxsZWQgZmxvdy4gKi8NCiAJc3RydWN0IG1seDVf Zmxvd19kdl9qdW1wX3RibF9yZXNvdXJjZSAqanVtcDsNCiAJLyoqPCBQb2ludGVyIHRvIHRoZSBq dW1wIGFjdGlvbiByZXNvdXJjZS4gKi8NCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg1L21s eDVfZmxvd19kdi5jIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3dfZHYuYw0KaW5kZXggY2Yy NTVjYS4uYjhiNGU1OCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93X2R2 LmMNCisrKyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93X2R2LmMNCkBAIC00OSw2ICs0OSwx NyBAQA0KICNkZWZpbmUgTUxYNURWX0RSX0FDVElPTl9GTEFHU19ST09UX0xFVkVMIDENCiAjZW5k aWYNCiANCit1bmlvbiBmbG93X2RyX3ZsYW5faGRyIHsNCisJc3RydWN0IHZsYW5faGRyIHZoZHI7 DQorCXN0cnVjdCB7DQorCSAgICB1aW50MzJfdCB2aWQ6MTI7DQorCSAgICB1aW50MzJfdCBkZWk6 MTsNCisJICAgIHVpbnQzMl90IHBjcDozOw0KKwkgICAgdWludDMyX3QgdHBpZDoxNjsNCisJfTsN CisJdWludDMyX3QgdGFnOw0KK30gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOw0KKw0KIHVu aW9uIGZsb3dfZHZfYXR0ciB7DQogCXN0cnVjdCB7DQogCQl1aW50MzJfdCB2YWxpZDoxOw0KQEAg LTEwNyw2ICsxMTgsMTIgQEAgc3RydWN0IGZpZWxkX21vZGlmeV9pbmZvIG1vZGlmeV9ldGhbXSA9 IHsNCiAJezAsIDAsIDB9LA0KIH07DQogDQorc3RydWN0IGZpZWxkX21vZGlmeV9pbmZvIG1vZGlm eV92bGFuW10gPSB7DQorCS8qIFRPRE86IEZpbGwgd2l0aCBjb3JyZWN0IHZhbHVlcyAqLw0KKwl7 NCwgIDAsIE1MWDVfTU9ESV9PVVRfRklSU1RfVklEfSwNCisJezAsIDAsIDB9LA0KK307DQorDQog c3RydWN0IGZpZWxkX21vZGlmeV9pbmZvIG1vZGlmeV9pcHY0W10gPSB7DQogCXsxLCAgOCwgTUxY NV9NT0RJX09VVF9JUFY0X1RUTH0sDQogCXs0LCAxMiwgTUxYNV9NT0RJX09VVF9TSVBWNH0sDQpA QCAtMjM4LDYgKzI1NSwzNyBAQCBzdHJ1Y3QgZmllbGRfbW9kaWZ5X2luZm8gbW9kaWZ5X3RjcFtd ID0gew0KIH0NCiANCiAvKioNCisgKiBDb252ZXJ0IG1vZGlmeS1oZWFkZXIgc2V0IE1vZGlmeS1W TEFOIGFjdGlvbiB0byBEViBzcGVjaWZpY2F0aW9uIG9yIGNyZWF0ZQ0KKyAqIGEgbmV3IFZMQU4g cHVzaCBhY3Rpb24uDQorICoNCisgKiBAcGFyYW1baW4sb3V0XSByZXNvdXJjZQ0KKyAqICAgUG9p bnRlciB0byB0aGUgbW9kaWZ5LWhlYWRlciByZXNvdXJjZS4NCisgKiBAcGFyYW1baW5dIGFjdGlv bg0KKyAqICAgUG9pbnRlciB0byBhY3Rpb24gc3BlY2lmaWNhdGlvbi4NCisgKiBAcGFyYW1bb3V0 XSBlcnJvcg0KKyAqICAgUG9pbnRlciB0byB0aGUgZXJyb3Igc3RydWN0dXJlLg0KKyAqDQorICog QHJldHVybg0KKyAqICAgMCBvbiBzdWNjZXNzLCBhIG5lZ2F0aXZlIGVycm5vIHZhbHVlIG90aGVy d2lzZSBhbmQgcnRlX2Vycm5vIGlzIHNldC4NCisgKi8NCitzdGF0aWMgaW50DQorZmxvd19kdl9j cmVhdGVfYWN0aW9uX21vZGlmeV92bGFuDQorCQkJKHN0cnVjdCBtbHg1X2Zsb3dfZHZfbW9kaWZ5 X2hkcl9yZXNvdXJjZSAqcmVzLA0KKwkJCSBjb25zdCB1bmlvbiBmbG93X2RyX3ZsYW5faGRyICp2 bGFuLA0KKwkJCSBjb25zdCB1aW50NjRfdCBhY3Rpb25fZmxhZ3MsDQorCQkJIGNvbnN0IHN0cnVj dCBydGVfZmxvd19pdGVtICppdGVtcywNCisJCQkgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJv cikNCit7DQorCSh2b2lkKXJlczsNCisJKHZvaWQpdmxhbjsNCisJKHZvaWQpYWN0aW9uX2ZsYWdz Ow0KKwkodm9pZClpdGVtczsNCisJcmV0dXJuIHJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRU5P VFNVUCwNCisJCQkJICBSVEVfRkxPV19FUlJPUl9UWVBFX0FDVElPTiwgTlVMTCwNCisJCQkJICAi dW5zdXBwb3J0ZWQgYWN0aW9uIik7DQorfQ0KKw0KKy8qKg0KICAqIENvbnZlcnQgbW9kaWZ5LWhl YWRlciBzZXQgSVB2NCBhZGRyZXNzIGFjdGlvbiB0byBEViBzcGVjaWZpY2F0aW9uLg0KICAqDQog ICogQHBhcmFtW2luLG91dF0gcmVzb3VyY2UNCkBAIC04MTksNiArODY3LDY4IEBAIHN0cnVjdCBm aWVsZF9tb2RpZnlfaW5mbyBtb2RpZnlfdGNwW10gPSB7DQogfQ0KIA0KIC8qKg0KKyAqIFZhbGlk YXRlIHRoZSBwdXNoIFZMQU4gYWN0aW9uLg0KKyAqDQorICogQHBhcmFtW2luXSBhY3Rpb25fZmxh Z3MNCisgKiAgIEhvbGRzIHRoZSBhY3Rpb25zIGRldGVjdGVkIHVudGlsIG5vdy4NCisgKiBAcGFy YW1baW5dIGFjdGlvbg0KKyAqICAgUG9pbnRlciB0byB0aGUgZW5jYXAgYWN0aW9uLg0KKyAqIEBw YXJhbVtpbl0gYXR0cg0KKyAqICAgUG9pbnRlciB0byBmbG93IGF0dHJpYnV0ZXMNCisgKiBAcGFy YW1bb3V0XSBlcnJvcg0KKyAqICAgUG9pbnRlciB0byBlcnJvciBzdHJ1Y3R1cmUuDQorICoNCisg KiBAcmV0dXJuDQorICogICAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJybm8gdmFsdWUgb3Ro ZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KKyAqLw0KK3N0YXRpYyBpbnQNCitmbG93X2R2 X3ZhbGlkYXRlX2FjdGlvbl9wdXNoX3ZsYW4odWludDY0X3QgYWN0aW9uX2ZsYWdzLA0KKwkJCQkg IGNvbnN0IHN0cnVjdCBydGVfZmxvd19hY3Rpb24gKmFjdGlvbiwNCisJCQkJICBjb25zdCBzdHJ1 Y3QgcnRlX2Zsb3dfYXR0ciAqYXR0ciwNCisJCQkJICBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVy cm9yKQ0KK3sNCisJKHZvaWQpYWN0aW9uX2ZsYWdzOw0KKwkodm9pZClhY3Rpb247DQorCSh2b2lk KWF0dHI7DQorCXJldHVybiBydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVOT1RTVVAsDQorCQkJ CSAgUlRFX0ZMT1dfRVJST1JfVFlQRV9BQ1RJT04sIGFjdGlvbiwNCisJCQkJICAidW5zdXBwb3J0 ZWQgYWN0aW9uIik7DQorfQ0KKw0KKy8qKg0KKyAqIFZhbGlkYXRlIHRoZSBwb3AgVkxBTiBhY3Rp b24uDQorICoNCisgKiBAcGFyYW1baW5dIGFjdGlvbl9mbGFncw0KKyAqICAgSG9sZHMgdGhlIGFj dGlvbnMgZGV0ZWN0ZWQgdW50aWwgbm93Lg0KKyAqIEBwYXJhbVtpbl0gYWN0aW9uDQorICogICBQ b2ludGVyIHRvIHRoZSBwb3AgdmxhbiBhY3Rpb24uDQorICogQHBhcmFtW2luXSBpdGVtX2ZsYWdz DQorICogICBUaGUgaXRlbXMgZm91bmQgaW4gdGhpcyBmbG93IHJ1bGUuDQorICogQHBhcmFtW2lu XSBhdHRyDQorICogICBQb2ludGVyIHRvIGZsb3cgYXR0cmlidXRlcy4NCisgKiBAcGFyYW1bb3V0 XSBlcnJvcg0KKyAqICAgUG9pbnRlciB0byBlcnJvciBzdHJ1Y3R1cmUuDQorICoNCisgKiBAcmV0 dXJuDQorICogICAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJybm8gdmFsdWUgb3RoZXJ3aXNl IGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KKyAqLw0KK3N0YXRpYyBpbnQNCitmbG93X2R2X3ZhbGlk YXRlX2FjdGlvbl9wb3Bfdmxhbih1aW50NjRfdCBhY3Rpb25fZmxhZ3MsDQorCQkJCSBjb25zdCBz dHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICphY3Rpb24sDQorCQkJCSB1aW50NjRfdCBpdGVtX2ZsYWdz LA0KKwkJCQkgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2F0dHIgKmF0dHIsDQorCQkJCSBzdHJ1Y3Qg cnRlX2Zsb3dfZXJyb3IgKmVycm9yKQ0KK3sNCisJKHZvaWQpYWN0aW9uX2ZsYWdzOw0KKwkodm9p ZClhY3Rpb247DQorCSh2b2lkKWl0ZW1fZmxhZ3M7DQorCSh2b2lkKWF0dHI7DQorCXJldHVybiBy dGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVOT1RTVVAsDQorCQkJCSAgUlRFX0ZMT1dfRVJST1Jf VFlQRV9BQ1RJT04sIGFjdGlvbiwNCisJCQkJICAidW5zdXBwb3J0ZWQgYWN0aW9uIik7DQorfQ0K Kw0KKy8qKg0KICAqIFZhbGlkYXRlIHRoZSByYXcgZW5jYXAgYWN0aW9uLg0KICAqDQogICogQHBh cmFtW2luXSBhY3Rpb25fZmxhZ3MNCkBAIC0xNTAyLDYgKzE2MTIsMzcgQEAgc3RydWN0IGZpZWxk X21vZGlmeV9pbmZvIG1vZGlmeV90Y3BbXSA9IHsNCiB9DQogDQogLyoqDQorICogQ3JlYXRlIGFj dGlvbiBwdXNoIFZMQU4uDQorICoNCisgKiBAcGFyYW1baW5dIGRldg0KKyAqICAgUG9pbnRlciB0 byBydGVfZXRoX2RldiBzdHJ1Y3R1cmUuDQorICogQHBhcmFtW2luXSB2bGFuX3RhZw0KKyAqICAg dGhlIHZsYW4gdGFnIHRvIHB1c2ggdG8gdGhlIEV0aGVybmV0IGhlYWRlci4NCisgKiBAcGFyYW1b aW4sIG91dF0gZGV2X2Zsb3cNCisgKiAgIFBvaW50ZXIgdG8gdGhlIG1seDVfZmxvdy4NCisgKiBA cGFyYW1baW5dIGF0dHINCisgKiAgIFBvaW50ZXIgdG8gdGhlIGZsb3cgYXR0cmlidXRlcy4NCisg KiBAcGFyYW1bb3V0XSBlcnJvcg0KKyAqICAgUG9pbnRlciB0byB0aGUgZXJyb3Igc3RydWN0dXJl Lg0KKyAqDQorICogQHJldHVybg0KKyAqICAgMCBvbiBzdWNjZXNzLCBhIG5lZ2F0aXZlIGVycm5v IHZhbHVlIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5vIGlzIHNldC4NCisgKi8NCitzdGF0aWMgaW50 DQorZmxvd19kdl9jcmVhdGVfYWN0aW9uX3B1c2hfdmxhbihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl diwNCisJCQkJY29uc3QgdWludDMyX3Qgdmxhbl90YWcsDQorCQkJCXN0cnVjdCBtbHg1X2Zsb3cg KmRldl9mbG93LA0KKwkJCQlzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKQ0KK3sNCisJKHZv aWQpZGV2Ow0KKwkodm9pZCl2bGFuX3RhZzsNCisJKHZvaWQpZGV2X2Zsb3c7DQorCXJldHVybiBy dGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVOT1RTVVAsDQorCQkJCSAgUlRFX0ZMT1dfRVJST1Jf VFlQRV9BQ1RJT04sDQorCQkJCSAgTlVMTCwgInVuc3VwcG9ydGVkIGFjdGlvbiIpOw0KK30NCisN CisvKioNCiAgKiBWYWxpZGF0ZSB0aGUgbW9kaWZ5LWhlYWRlciBhY3Rpb25zLg0KICAqDQogICog QHBhcmFtW2luXSBhY3Rpb25fZmxhZ3MNCkBAIC0xNTY2LDYgKzE3MDcsMzQgQEAgc3RydWN0IGZp ZWxkX21vZGlmeV9pbmZvIG1vZGlmeV90Y3BbXSA9IHsNCiB9DQogDQogLyoqDQorICogVmFsaWRh dGUgdGhlIG1vZGlmeS1oZWFkZXIgVkxBTiBhY3Rpb25zLg0KKyAqDQorICogQHBhcmFtW2luXSBh Y3Rpb25fZmxhZ3MNCisgKiAgIEhvbGRzIHRoZSBhY3Rpb25zIGRldGVjdGVkIHVudGlsIG5vdy4N CisgKiBAcGFyYW1baW5dIGFjdGlvbg0KKyAqICAgUG9pbnRlciB0byB0aGUgbW9kaWZ5IGFjdGlv bi4NCisgKiBAcGFyYW1baW5dIGl0ZW1fZmxhZ3MNCisgKiAgIEhvbGRzIHRoZSBpdGVtcyBkZXRl Y3RlZC4NCisgKiBAcGFyYW1bb3V0XSBlcnJvcg0KKyAqICAgUG9pbnRlciB0byBlcnJvciBzdHJ1 Y3R1cmUuDQorICoNCisgKiBAcmV0dXJuDQorICogICAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUg ZXJybm8gdmFsdWUgb3RoZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KKyAqLw0KK3N0YXRp YyBpbnQNCitmbG93X2R2X3ZhbGlkYXRlX2FjdGlvbl9tb2RpZnlfdmxhbihjb25zdCB1aW50NjRf dCBhY3Rpb25fZmxhZ3MsDQorCQkJCSAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICph Y3Rpb24sDQorCQkJCSAgICBjb25zdCB1aW50NjRfdCBpdGVtX2ZsYWdzLA0KKwkJCQkgICAgc3Ry dWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcikNCit7DQorCSh2b2lkKWFjdGlvbl9mbGFnczsNCisJ KHZvaWQpYWN0aW9uOw0KKwkodm9pZClpdGVtX2ZsYWdzOw0KKwlyZXR1cm4gcnRlX2Zsb3dfZXJy b3Jfc2V0KGVycm9yLCBFTk9UU1VQLCBSVEVfRkxPV19FUlJPUl9UWVBFX0FDVElPTiwNCisJCQkJ ICBOVUxMLCAidW5zdXBwb3J0ZWQgYWN0aW9uIik7DQorfQ0KKw0KKy8qKg0KICAqIFZhbGlkYXRl IHRoZSBtb2RpZnktaGVhZGVyIElQdjQgYWRkcmVzcyBhY3Rpb25zLg0KICAqDQogICogQHBhcmFt W2luXSBhY3Rpb25fZmxhZ3MNCkBAIC0yMjc3LDYgKzI0NDYsMjYgQEAgc3RydWN0IGZpZWxkX21v ZGlmeV9pbmZvIG1vZGlmeV90Y3BbXSA9IHsNCiAJCQlhY3Rpb25fZmxhZ3MgfD0gTUxYNV9GTE9X X0FDVElPTl9DT1VOVDsNCiAJCQkrK2FjdGlvbnNfbjsNCiAJCQlicmVhazsNCisJCWNhc2UgUlRF X0ZMT1dfQUNUSU9OX1RZUEVfT0ZfUFVTSF9WTEFOOg0KKwkJCXJldCA9IGZsb3dfZHZfdmFsaWRh dGVfYWN0aW9uX3B1c2hfdmxhbihhY3Rpb25fZmxhZ3MsDQorCQkJCQkJCQlhY3Rpb25zLCBhdHRy LA0KKwkJCQkJCQkJZXJyb3IpOw0KKwkJCWlmIChyZXQgPCAwKQ0KKwkJCQlyZXR1cm4gcmV0Ow0K KwkJCWFjdGlvbl9mbGFncyB8PSBNTFg1X0ZMT1dfQUNUSU9OX09GX1BVU0hfVkxBTjsNCisJCQkr K2FjdGlvbnNfbjsNCisJCQlicmVhazsNCisJCWNhc2UgUlRFX0ZMT1dfQUNUSU9OX1RZUEVfT0Zf UE9QX1ZMQU46DQorCQkJcmV0ID0gZmxvd19kdl92YWxpZGF0ZV9hY3Rpb25fcG9wX3ZsYW4oYWN0 aW9uX2ZsYWdzLA0KKwkJCQkJCQkgICAgICAgYWN0aW9ucywNCisJCQkJCQkJICAgICAgIGl0ZW1f ZmxhZ3MsIGF0dHIsDQorCQkJCQkJCSAgICAgICBlcnJvcik7DQorCQkJCXJldHVybiAtcnRlX2Vy cm5vOw0KKwkJCWlmIChyZXQgPCAwKQ0KKwkJCQlyZXR1cm4gcmV0Ow0KKwkJCWFjdGlvbl9mbGFn cyB8PSBNTFg1X0ZMT1dfQUNUSU9OX09GX1BPUF9WTEFOOw0KKwkJCSsrYWN0aW9uc19uOw0KKwkJ CWJyZWFrOw0KIAkJY2FzZSBSVEVfRkxPV19BQ1RJT05fVFlQRV9WWExBTl9FTkNBUDoNCiAJCWNh c2UgUlRFX0ZMT1dfQUNUSU9OX1RZUEVfTlZHUkVfRU5DQVA6DQogCQkJcmV0ID0gZmxvd19kdl92 YWxpZGF0ZV9hY3Rpb25fbDJfZW5jYXAoYWN0aW9uX2ZsYWdzLA0KQEAgLTIzMzYsNyArMjUyNSwy MiBAQCBzdHJ1Y3QgZmllbGRfbW9kaWZ5X2luZm8gbW9kaWZ5X3RjcFtdID0gew0KIAkJCQkJCU1M WDVfRkxPV19BQ1RJT05fU0VUX01BQ19TUkMgOg0KIAkJCQkJCU1MWDVfRkxPV19BQ1RJT05fU0VU X01BQ19EU1Q7DQogCQkJYnJlYWs7DQotDQorCQljYXNlIFJURV9GTE9XX0FDVElPTl9UWVBFX09G X1NFVF9WTEFOX1ZJRDoNCisJCWNhc2UgUlRFX0ZMT1dfQUNUSU9OX1RZUEVfT0ZfU0VUX1ZMQU5f UENQOg0KKwkJCXJldCA9IGZsb3dfZHZfdmFsaWRhdGVfYWN0aW9uX21vZGlmeV92bGFuKGFjdGlv bl9mbGFncywNCisJCQkJCQkJCSAgYWN0aW9ucywNCisJCQkJCQkJCSAgaXRlbV9mbGFncywNCisJ CQkJCQkJCSAgZXJyb3IpOw0KKwkJCWlmIChyZXQgPCAwKQ0KKwkJCQlyZXR1cm4gcmV0Ow0KKwkJ CS8qIENvdW50IGFsbCBtb2RpZnktaGVhZGVyIGFjdGlvbnMgYXMgb25lIGFjdGlvbi4gKi8NCisJ CQlpZiAoIShhY3Rpb25fZmxhZ3MgJiBNTFg1X0ZMT1dfTU9ESUZZX0hEUl9BQ1RJT05TKSkNCisJ CQkJKythY3Rpb25zX247DQorCQkJYWN0aW9uX2ZsYWdzIHw9IGFjdGlvbnMtPnR5cGUgPT0NCisJ CQkJCVJURV9GTE9XX0FDVElPTl9UWVBFX09GX1NFVF9WTEFOX1ZJRCA/DQorCQkJCQlNTFg1X0ZM T1dfQUNUSU9OX09GX1NFVF9WTEFOX1ZJRCA6DQorCQkJCQlNTFg1X0ZMT1dfQUNUSU9OX09GX1NF VF9WTEFOX1BDUDsNCisJCQlicmVhazsNCiAJCWNhc2UgUlRFX0ZMT1dfQUNUSU9OX1RZUEVfU0VU X0lQVjRfU1JDOg0KIAkJY2FzZSBSVEVfRkxPV19BQ1RJT05fVFlQRV9TRVRfSVBWNF9EU1Q6DQog CQkJcmV0ID0gZmxvd19kdl92YWxpZGF0ZV9hY3Rpb25fbW9kaWZ5X2lwdjQoYWN0aW9uX2ZsYWdz LA0KQEAgLTM2MzQsNiArMzgzOCw3IEBAIHN0cnVjdCBmaWVsZF9tb2RpZnlfaW5mbyBtb2RpZnlf dGNwW10gPSB7DQogCXVpbnQzMl90IG1vZGlmeV9hY3Rpb25fcG9zaXRpb24gPSBVSU5UMzJfTUFY Ow0KIAl2b2lkICptYXRjaF9tYXNrID0gbWF0Y2hlci5tYXNrLmJ1ZjsNCiAJdm9pZCAqbWF0Y2hf dmFsdWUgPSBkZXZfZmxvdy0+ZHYudmFsdWUuYnVmOw0KKwl1bmlvbiBmbG93X2RyX3ZsYW5faGRy IHZsYW47DQogDQogCWZsb3ctPmdyb3VwID0gYXR0ci0+Z3JvdXA7DQogCWlmIChhdHRyLT50cmFu c2ZlcikNCkBAIC0zNzQwLDYgKzM5NDUsMzcgQEAgc3RydWN0IGZpZWxkX21vZGlmeV9pbmZvIG1v ZGlmeV90Y3BbXSA9IHsNCiAJCQkJCQkgYWN0aW9uLA0KIAkJCQkJCSAiY2Fubm90IGNyZWF0ZSBj b3VudGVyIg0KIAkJCQkJCSAgIiBvYmplY3QuIik7DQorCQkJYnJlYWs7DQorCQljYXNlIFJURV9G TE9XX0FDVElPTl9UWVBFX09GX1BPUF9WTEFOOg0KKwkJCWlmICghcHJpdi0+c2gtPnBvcF92bGFu X2FjdGlvbikNCisJCQkJcmV0dXJuIHJ0ZV9mbG93X2Vycm9yX3NldA0KKwkJCQkJCShlcnJvciwg RU5PVFNVUCwNCisJCQkJCQkgUlRFX0ZMT1dfRVJST1JfVFlQRV9BQ1RJT04sDQorCQkJCQkJIGFj dGlvbiwNCisJCQkJCQkgImNhbm5vdCBjcmVhdGUgcG9wIHZsYW4iDQorCQkJCQkJICAiIGFjdGlv bi4iKTsNCisJCQlkZXZfZmxvdy0+ZHYuYWN0aW9uc1thY3Rpb25zX24rK10gPQ0KKwkJCQkJCSAg ICBwcml2LT5zaC0+cG9wX3ZsYW5fYWN0aW9uOw0KKwkJCWFjdGlvbl9mbGFncyB8PSBNTFg1X0ZM T1dfQUNUSU9OX09GX1BPUF9WTEFOOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBSVEVfRkxPV19BQ1RJ T05fVFlQRV9PRl9QVVNIX1ZMQU46DQorCQkJdmxhbi50cGlkID0NCisJCQkJKChjb25zdCBzdHJ1 Y3QgcnRlX2Zsb3dfYWN0aW9uX29mX3B1c2hfdmxhbiAqKQ0KKwkJCQkJCSAgICAgIGFjdGlvbnMt PmNvbmYpLT5ldGhlcnR5cGU7DQorCQkJYWN0aW9uX2ZsYWdzIHw9IE1MWDVfRkxPV19BQ1RJT05f T0ZfUFVTSF9WTEFOOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBSVEVfRkxPV19BQ1RJT05fVFlQRV9P Rl9TRVRfVkxBTl9WSUQ6DQorCQkJdmxhbi52aWQgPQ0KKwkJCSAgICAgICAoKGNvbnN0IHN0cnVj dCBydGVfZmxvd19hY3Rpb25fb2Zfc2V0X3ZsYW5fdmlkICopDQorCQkJCQkJICAgICAgIGFjdGlv bnMtPmNvbmYpLT52bGFuX3ZpZDsNCisJCQlhY3Rpb25fZmxhZ3MgfD0gTUxYNV9GTE9XX0FDVElP Tl9PRl9TRVRfVkxBTl9WSUQ7DQorCQkJYnJlYWs7DQorCQljYXNlIFJURV9GTE9XX0FDVElPTl9U WVBFX09GX1NFVF9WTEFOX1BDUDoNCisJCQl2bGFuLnBjcCA9DQorCQkJICAgKChjb25zdCBzdHJ1 Y3QgcnRlX2Zsb3dfYWN0aW9uX29mX3NldF92bGFuX3BjcCAqKQ0KKwkJCQkJCSAgICAgICBhY3Rp b25zLT5jb25mKS0+dmxhbl9wY3A7DQorCQkJYWN0aW9uX2ZsYWdzIHw9IE1MWDVfRkxPV19BQ1RJ T05fT0ZfU0VUX1ZMQU5fUENQOw0KKwkJCWJyZWFrOw0KIAkJY2FzZSBSVEVfRkxPV19BQ1RJT05f VFlQRV9WWExBTl9FTkNBUDoNCiAJCWNhc2UgUlRFX0ZMT1dfQUNUSU9OX1RZUEVfTlZHUkVfRU5D QVA6DQogCQkJaWYgKGZsb3dfZHZfY3JlYXRlX2FjdGlvbl9sMl9lbmNhcChkZXYsIGFjdGlvbnMs DQpAQCAtMzg4NiwxMiArNDEyMiwzMSBAQCBzdHJ1Y3QgZmllbGRfbW9kaWZ5X2luZm8gbW9kaWZ5 X3RjcFtdID0gew0KIAkJCWJyZWFrOw0KIAkJY2FzZSBSVEVfRkxPV19BQ1RJT05fVFlQRV9FTkQ6 DQogCQkJYWN0aW9uc19lbmQgPSB0cnVlOw0KKwkJCS8qDQorCQkJICogRmluYWxseSB3ZSBjYW4g aGFuZGxlIHRoZSBWTEFOIGNvbW1hbmRzLg0KKwkJCSAqIElmIHdlIGhhdmUgYSBwdXNoIFZMQU4g YWN0aW9uIGl0IHdpbGwgaGFuZGxlIGFsbA0KKwkJCSAqIG90aGVyIFZMQU4gbW9kaWZ5LWhlYWRl ciBhY3Rpb25zLg0KKwkJCSAqLw0KKwkJCWlmIChhY3Rpb25fZmxhZ3MgJiBNTFg1X0ZMT1dfQUNU SU9OX09GX1BVU0hfVkxBTikgew0KKwkJCQlhY3Rpb25fZmxhZ3MgJj0NCisJCQkJCX4oTUxYNV9G TE9XX0FDVElPTl9PRl9TRVRfVkxBTl9WSUQgfA0KKwkJCQkJICBNTFg1X0ZMT1dfQUNUSU9OX09G X1NFVF9WTEFOX1BDUCk7DQorCQkJCWlmIChmbG93X2R2X2NyZWF0ZV9hY3Rpb25fcHVzaF92bGFu DQorCQkJCQkgICAgKGRldiwgdmxhbi50YWcsIGRldl9mbG93LCBlcnJvcikpDQorCQkJCQlyZXR1 cm4gLXJ0ZV9lcnJubzsNCisJCQkJZGV2X2Zsb3ctPmR2LmFjdGlvbnNbYWN0aW9uc19uKytdID0N CisJCQkJCQlkZXZfZmxvdy0+ZHYucHVzaF92bGFuX2FjdGlvbjsNCisJCQl9IGVsc2UgaWYgKGFj dGlvbl9mbGFncyAmIE1MWDVfRkxPV19WTEFOX0FDVElPTlMpIHsNCisJCQkJaWYgKGZsb3dfZHZf Y3JlYXRlX2FjdGlvbl9tb2RpZnlfdmxhbg0KKwkJCQkJCSgmcmVzLCAmdmxhbiwNCisJCQkJCQkg YWN0aW9uX2ZsYWdzLCBpdGVtcywgZXJyb3IpKQ0KKwkJCQkJcmV0dXJuIC1ydGVfZXJybm87DQor CQkJfQ0KIAkJCWlmIChhY3Rpb25fZmxhZ3MgJiBNTFg1X0ZMT1dfTU9ESUZZX0hEUl9BQ1RJT05T KSB7DQogCQkJCS8qIGNyZWF0ZSBtb2RpZnkgYWN0aW9uIGlmIG5lZWRlZC4gKi8NCiAJCQkJaWYg KGZsb3dfZHZfbW9kaWZ5X2hkcl9yZXNvdXJjZV9yZWdpc3Rlcg0KLQkJCQkJCQkJKGRldiwgJnJl cywNCi0JCQkJCQkJCSBkZXZfZmxvdywNCi0JCQkJCQkJCSBlcnJvcikpDQorCQkJCQkJCShkZXYs ICZyZXMsDQorCQkJCQkJCSBkZXZfZmxvdywgZXJyb3IpKQ0KIAkJCQkJcmV0dXJuIC1ydGVfZXJy bm87DQogCQkJCWRldl9mbG93LT5kdi5hY3Rpb25zW21vZGlmeV9hY3Rpb25fcG9zaXRpb25dID0N CiAJCQkJCWRldl9mbG93LT5kdi5tb2RpZnlfaGRyLT52ZXJic19hY3Rpb247DQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2dsdWUuYyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9n bHVlLmMNCmluZGV4IDIxY2QzYmIuLjY2YmM2NmUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC9t bHg1L21seDVfZ2x1ZS5jDQorKysgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfZ2x1ZS5jDQpAQCAt NDA4LDYgKzQwOCwyOSBAQA0KIH0NCiANCiBzdGF0aWMgdm9pZCAqDQorbWx4NV9nbHVlX2RyX2Ny ZWF0ZV9mbG93X2FjdGlvbl9wdXNoX3ZsYW4odWludDMyX3Qgdmxhbl90YWcpDQorew0KKyNpZmRl ZiBIQVZFX01MWDVEVl9EUl9WTEFODQorCXJldHVybiBtbHg1ZHZfZHJfY3JlYXRlX2FjdGlvbl9w b3Bfdmxhbih2bGFuX3RhZyk7DQorI2Vsc2UNCisJKHZvaWQpdmxhbl90YWc7DQorCWVycm5vID0g RU5PVFNVUDsNCisJcmV0dXJuIE5VTEw7DQorI2VuZGlmDQorfQ0KKw0KK3N0YXRpYyB2b2lkICoN CittbHg1X2dsdWVfZHJfY3JlYXRlX2Zsb3dfYWN0aW9uX3BvcF92bGFuKHZvaWQpDQorew0KKyNp ZmRlZiBIQVZFX01MWDVEVl9EUl9WTEFODQorCXJldHVybiBtbHg1ZHZfZHJfY3JlYXRlX2FjdGlv bl9wb3BfdmxhbigpOw0KKyNlbHNlDQorCWVycm5vID0gRU5PVFNVUDsNCisJcmV0dXJuIE5VTEw7 DQorI2VuZGlmDQorfQ0KKw0KK3N0YXRpYyB2b2lkICoNCiBtbHg1X2dsdWVfZHJfY3JlYXRlX2Zs b3dfdGJsKHZvaWQgKmRvbWFpbiwgdWludDMyX3QgbGV2ZWwpDQogew0KICNpZmRlZiBIQVZFX01M WDVEVl9EUg0KQEAgLTg5Myw2ICs5MTYsMTAgQEANCiAJCW1seDVfZ2x1ZV9kcl9jcmVhdGVfZmxv d19hY3Rpb25fZGVzdF92cG9ydCwNCiAJLmRyX2NyZWF0ZV9mbG93X2FjdGlvbl9kcm9wID0NCiAJ CW1seDVfZ2x1ZV9kcl9jcmVhdGVfZmxvd19hY3Rpb25fZHJvcCwNCisJLmRyX2NyZWF0ZV9mbG93 X2FjdGlvbl9wdXNoX3ZsYW4gPQ0KKwkJbWx4NV9nbHVlX2RyX2NyZWF0ZV9mbG93X2FjdGlvbl9w dXNoX3ZsYW4sDQorCS5kcl9jcmVhdGVfZmxvd19hY3Rpb25fcG9wX3ZsYW4gPQ0KKwkJbWx4NV9n bHVlX2RyX2NyZWF0ZV9mbG93X2FjdGlvbl9wb3BfdmxhbiwNCiAJLmRyX2NyZWF0ZV9mbG93X3Ri bCA9IG1seDVfZ2x1ZV9kcl9jcmVhdGVfZmxvd190YmwsDQogCS5kcl9kZXN0cm95X2Zsb3dfdGJs ID0gbWx4NV9nbHVlX2RyX2Rlc3Ryb3lfZmxvd190YmwsDQogCS5kcl9jcmVhdGVfZG9tYWluID0g bWx4NV9nbHVlX2RyX2NyZWF0ZV9kb21haW4sDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4 NS9tbHg1X2dsdWUuaCBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9nbHVlLmgNCmluZGV4IGI1YzYz Y2IuLjM5YmJmMDAgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC9tbHg1L21seDVfZ2x1ZS5oDQor KysgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfZ2x1ZS5oDQpAQCAtMTQ4LDYgKzE0OCw4IEBAIHN0 cnVjdCBtbHg1X2dsdWUgew0KIAl2b2lkICooKmRyX2NyZWF0ZV9mbG93X2FjdGlvbl9kZXN0X2Zs b3dfdGJsKSh2b2lkICp0YmwpOw0KIAl2b2lkICooKmRyX2NyZWF0ZV9mbG93X2FjdGlvbl9kZXN0 X3Zwb3J0KSh2b2lkICpkb21haW4sIHVpbnQzMl90IHZwb3J0KTsNCiAJdm9pZCAqKCpkcl9jcmVh dGVfZmxvd19hY3Rpb25fZHJvcCkoKTsNCisJdm9pZCAqKCpkcl9jcmVhdGVfZmxvd19hY3Rpb25f cHVzaF92bGFuKSh1aW50MzJfdCB2bGFuX3RhZyk7DQorCXZvaWQgKigqZHJfY3JlYXRlX2Zsb3df YWN0aW9uX3BvcF92bGFuKSgpOw0KIAl2b2lkICooKmRyX2NyZWF0ZV9mbG93X3RibCkodm9pZCAq ZG9tYWluLCB1aW50MzJfdCBsZXZlbCk7DQogCWludCAoKmRyX2Rlc3Ryb3lfZmxvd190YmwpKHZv aWQgKnRibCk7DQogCXZvaWQgKigqZHJfY3JlYXRlX2RvbWFpbikoc3RydWN0IGlidl9jb250ZXh0 ICpjdHgsDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3BybS5oIGIvZHJpdmVy cy9uZXQvbWx4NS9tbHg1X3BybS5oDQppbmRleCA4YzQyMzgwLi5kMTA2YWZmIDEwMDY0NA0KLS0t IGEvZHJpdmVycy9uZXQvbWx4NS9tbHg1X3BybS5oDQorKysgYi9kcml2ZXJzL25ldC9tbHg1L21s eDVfcHJtLmgNCkBAIC0zMTAsNiArMzEwLDcgQEAgZW51bSBtbHg1X21vZGlmaWNhdGlvbl9maWVs ZCB7DQogCU1MWDVfTU9ESV9PVVRfRElQVjZfMzFfMCwNCiAJTUxYNV9NT0RJX09VVF9TSVBWNCwN CiAJTUxYNV9NT0RJX09VVF9ESVBWNCwNCisJTUxYNV9NT0RJX09VVF9GSVJTVF9WSUQsDQogCU1M WDVfTU9ESV9JTl9TTUFDXzQ3XzE2ID0gMHgzMSwNCiAJTUxYNV9NT0RJX0lOX1NNQUNfMTVfMCwN CiAJTUxYNV9NT0RJX0lOX0VUSEVSVFlQRSwNCi0tIA0KMS44LjMuMQ0KDQo=