Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp494904yba; Wed, 24 Apr 2019 05:03:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqyK260pXvp1GUOl5sZdzAT9dGyW3qE6RaFAE6i49vnrQQZ7TQ/LxyV+kVoxXsUVkiRo8/rs X-Received: by 2002:a62:ac08:: with SMTP id v8mr34181098pfe.42.1556107389283; Wed, 24 Apr 2019 05:03:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556107389; cv=none; d=google.com; s=arc-20160816; b=IapSXH99YMb5hdsF6B9rHNcyhoxfnRJMwOwpcSNCwXWQO/y4aqGI1JQLccSuH9dv26 WKzgpgMvwIWjmR6QSGE5S9AEnOxQ5aUzg2vPXkSUf7g80sv07bhLUQ7dZMe//6RFe7hy FqqHMCTXB9qJ55KbypY2BNit/6OjEBbuq5ag6OHuy/besuZvS7HJ1PDvYQw/Pnhvjxs/ mRLtxXhaP3AN9uCyT9OuA2PiXwx+x391Kml1o4JvleOTrShRnR1tYz3JM7iHietwsaa2 Cs2fKq/YPrPAPCV+ckn+H6mtaB1w94iIpLrjk3ilSCPVnSxzY8v1xHGZRILegEDKAgHz pjSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=04dg7z0KwAJ9WqBzjp6X0oRZuXpGobIfdoESRC2vB5o=; b=wQ1cI1khl6fmTd/v7OqxeLJERdDQZaS7EiQWvnjXBlf3NBg7Ja98rdGCG9KWGFJcbF UyWVyXJsvPF2mj8FVors5aUrfDjZ64Gxj4RCwyt0Qw+QHxgrGwTFuGLKp+AURs1r5nZ4 DjI34GP9IOdYk3zmDMBpjwrlg//ONT/R2+4Mdeg4kg7x39r3+hrEGTTTUAxlUoh2BqcZ 6sLDbx5U/ZAQiRIAZPhnaImthiql8NgaXh/Fqxcy8Am30pyxsc2jotsTRU7JcEyCLRo/ djq2ALSDZ2twKqLbc8xj6afHkQSkQ5Z2hMenlKjCLX8W9qEZ4UU7McnjzwMYXvkMKJIg hnmw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vmware.com header.s=selector1 header.b=Kprbfz+D; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d25si17216572pgb.229.2019.04.24.05.02.51; Wed, 24 Apr 2019 05:03:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@vmware.com header.s=selector1 header.b=Kprbfz+D; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729691AbfDXMA5 (ORCPT + 99 others); Wed, 24 Apr 2019 08:00:57 -0400 Received: from mail-eopbgr710074.outbound.protection.outlook.com ([40.107.71.74]:43387 "EHLO NAM05-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729396AbfDXMAm (ORCPT ); Wed, 24 Apr 2019 08:00:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=04dg7z0KwAJ9WqBzjp6X0oRZuXpGobIfdoESRC2vB5o=; b=Kprbfz+DmRky5EQ6/0q7Br2cEzrKA/vGmTxHpDUQ+wuN04/VW1uf2HtWEIIsx1G6tbvDgCABRbzaGoFBBhScHVVpfNAlIZ971v3JSBhq1gSRdCD10CPBUhGNT1K/6MHcbZxfPkI7ObPaEBQmWgCaNw0nxDahz+2xsOnWnJVcyfY= Received: from MN2PR05MB6141.namprd05.prod.outlook.com (20.178.241.217) by MN2PR05MB6687.namprd05.prod.outlook.com (20.178.249.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1835.7; Wed, 24 Apr 2019 12:00:25 +0000 Received: from MN2PR05MB6141.namprd05.prod.outlook.com ([fe80::441b:ef64:e316:b294]) by MN2PR05MB6141.namprd05.prod.outlook.com ([fe80::441b:ef64:e316:b294%5]) with mapi id 15.20.1835.010; Wed, 24 Apr 2019 12:00:25 +0000 From: Thomas Hellstrom To: Linux-graphics-maintainer , "dri-devel@lists.freedesktop.org" CC: Pv-drivers , "linux-kernel@vger.kernel.org" , Thomas Hellstrom , Deepak Singh Rawat Subject: [PATCH 6/9] drm/vmwgfx: Implement an infrastructure for write-coherent resources v2 Thread-Topic: [PATCH 6/9] drm/vmwgfx: Implement an infrastructure for write-coherent resources v2 Thread-Index: AQHU+pVNsf9qwZ0sX0SB1Zcu3hl2+g== Date: Wed, 24 Apr 2019 12:00:25 +0000 Message-ID: <20190424115918.3380-7-thellstrom@vmware.com> References: <20190424115918.3380-1-thellstrom@vmware.com> In-Reply-To: <20190424115918.3380-1-thellstrom@vmware.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR07CA0208.eurprd07.prod.outlook.com (2603:10a6:802:3f::32) To MN2PR05MB6141.namprd05.prod.outlook.com (2603:10b6:208:c7::25) authentication-results: spf=none (sender IP is ) smtp.mailfrom=thellstrom@vmware.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [155.4.205.35] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fa8c6181-a46f-4266-eefc-08d6c8ac6f3a x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(2017052603328)(7193020);SRVR:MN2PR05MB6687; x-ms-traffictypediagnostic: MN2PR05MB6687: x-ld-processed: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0,ExtAddr x-microsoft-antispam-prvs: x-forefront-prvs: 00179089FD x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(376002)(136003)(346002)(396003)(366004)(189003)(199004)(8676002)(81156014)(64756008)(66946007)(66556008)(52116002)(6506007)(53936002)(66476007)(68736007)(102836004)(8936002)(6116002)(66446008)(30864003)(6512007)(36756003)(53946003)(186003)(81166006)(26005)(107886003)(73956011)(7736002)(305945005)(316002)(66066001)(2501003)(50226002)(97736004)(3846002)(86362001)(1076003)(110136005)(5660300002)(2616005)(14454004)(11346002)(25786009)(486006)(2906002)(76176011)(71200400001)(71190400001)(99286004)(476003)(386003)(256004)(4326008)(446003)(14444005)(5024004)(6486002)(6436002)(54906003)(478600001)(579004)(559001);DIR:OUT;SFP:1101;SCL:1;SRVR:MN2PR05MB6687;H:MN2PR05MB6141.namprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: vmware.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: XWOo7ScxFR656BdcG44r029HpoSLmAlVUETaUroqiGtVCUAdEhmM2j3G2DBpIRCv1J84qL49+7Ty+8l4ZEudbIbUaJQF5LN2zLP8RbIeExZiPrXPUiN7Oz5jyGcLLJxB1EnhwCPMClCWAHh0sndtXviqDg7A/hP8XOBa3YN+gngy2AQruHMOKw9AcK2GREsL0meMLIvC6YahxTG1TbFtbrdX17rAo+DHdpjV3GKjB9CFv6zQ1viY7DvA1dfEEvRpuTfv/bMVTe2rvBgdqwfbqYfEdydaOaJ0Z4eX43ZQh8ycoUPVObR60Y4czJWTFCBr2r7Dw9eT3fbpoxaWgn2XSqRDZi9ID7SXHBB2SDrKlWfXDrkrXVTgS3El0pJ3U9z4//PiVWtlLQ1YWruu/MnhzhOMuqQS6z477Eo4saYrnDk= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-Network-Message-Id: fa8c6181-a46f-4266-eefc-08d6c8ac6f3a X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Apr 2019 12:00:25.2312 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR05MB6687 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org VGhpcyBpbmZyYXN0cnVjdHVyZSB3aWxsLCBmb3IgY29oZXJlbnQgcmVzb3VyY2VzLCBtYWtlIHN1 cmUgdGhhdA0KZnJvbSB0aGUgdXNlci1zcGFjZSBwb2ludCBvZiB2aWV3LCBkYXRhIHdyaXR0ZW4g YnkgdGhlIENQVSBpcyBpbW1lZGlhdGVseQ0KYXV0b21hdGljYWxseSBhdmFpbGFibGUgdG8gdGhl IEdQVSBhdCByZXNvdXJjZSB2YWxpZGF0aW9uIHRpbWUuDQoNClNpZ25lZC1vZmYtYnk6IFRob21h cyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNvbT4NClJldmlld2VkLWJ5OiBEZWVwYWsg UmF3YXQgPGRyYXdhdEB2bXdhcmUuY29tPg0KLS0tDQp2MjogTWlub3IgZG9jdW1lbnRhdGlvbi0g YW5kIHR5cG8gZml4ZXMNCi0tLQ0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZyAgICAg ICAgICAgICAgICB8ICAgMSArDQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9NYWtlZmlsZSAgICAg ICAgICAgICAgIHwgICAyICstDQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYm8uYyAg ICAgICAgICAgIHwgICA1ICstDQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmMg ICAgICAgICAgIHwgICA1ICsNCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaCAg ICAgICAgICAgfCAgMjYgKy0NCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVjYnVm LmMgICAgICAgfCAgIDEgLQ0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGly dHkuYyAgICB8IDQwOSArKysrKysrKysrKysrKysrKysNCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9yZXNvdXJjZS5jICAgICAgfCAgNTcgKysrDQogZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfcmVzb3VyY2VfcHJpdi5oIHwgIDExICsNCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF92YWxpZGF0aW9uLmMgICAgfCAgNzEgKysrDQogZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfdmFsaWRhdGlvbi5oICAgIHwgIDE2ICstDQogMTEgZmlsZXMgY2hhbmdlZCwgNTg0 IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMNCg0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvS2Nv bmZpZw0KaW5kZXggNmIyOGEzMjZmOGJiLi5kNWZkODFhNTIxZjYgMTAwNjQ0DQotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWcNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngv S2NvbmZpZw0KQEAgLTgsNiArOCw3IEBAIGNvbmZpZyBEUk1fVk1XR0ZYDQogCXNlbGVjdCBGQl9D RkJfSU1BR0VCTElUDQogCXNlbGVjdCBEUk1fVFRNDQogCXNlbGVjdCBGQg0KKwlzZWxlY3QgQVNf RElSVFlfSEVMUEVSUw0KIAkjIE9ubHkgbmVlZGVkIGZvciB0aGUgdHJhbnNpdGlvbmFsIHVzZSBv ZiBkcm1fY3J0Y19pbml0IC0gY2FuIGJlIHJlbW92ZWQNCiAJIyBhZ2FpbiBvbmNlIHZtd2dmeCBz ZXRzIHVwIHRoZSBwcmltYXJ5IHBsYW5lIGl0c2VsZi4NCiAJc2VsZWN0IERSTV9LTVNfSEVMUEVS DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS92bXdnZngvTWFrZWZpbGUNCmluZGV4IDg4NDFiZDMwZTFlNS4uYzg3N2EyMWEwNzM5 IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9NYWtlZmlsZQ0KKysrIGIvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC9NYWtlZmlsZQ0KQEAgLTgsNyArOCw3IEBAIHZtd2dmeC15IDo9 IHZtd2dmeF9leGVjYnVmLm8gdm13Z2Z4X2dtci5vIHZtd2dmeF9rbXMubyB2bXdnZnhfZHJ2Lm8g XA0KIAkgICAgdm13Z2Z4X2NtZGJ1Zl9yZXMubyB2bXdnZnhfY21kYnVmLm8gdm13Z2Z4X3N0ZHUu byBcDQogCSAgICB2bXdnZnhfY290YWJsZS5vIHZtd2dmeF9zby5vIHZtd2dmeF9iaW5kaW5nLm8g dm13Z2Z4X21zZy5vIFwNCiAJICAgIHZtd2dmeF9zaW1wbGVfcmVzb3VyY2UubyB2bXdnZnhfdmEu byB2bXdnZnhfYmxpdC5vIFwNCi0JICAgIHZtd2dmeF92YWxpZGF0aW9uLm8gXA0KKwkgICAgdm13 Z2Z4X3ZhbGlkYXRpb24ubyB2bXdnZnhfcGFnZV9kaXJ0eS5vIFwNCiAJICAgIHR0bV9vYmplY3Qu byB0dG1fbG9jay5vDQogDQogb2JqLSQoQ09ORklHX0RSTV9WTVdHRlgpIDo9IHZtd2dmeC5vDQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYm8uYyBiL2RyaXZlcnMv Z3B1L2RybS92bXdnZngvdm13Z2Z4X2JvLmMNCmluZGV4IGMwODI5ZDUwZWVjYy4uOTBjYTg2NjY0 MGZlIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYm8uYw0KKysr IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYm8uYw0KQEAgLTQ2Myw2ICs0NjMsNyBA QCB2b2lkIHZtd19ib19ib19mcmVlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8pDQogew0K IAlzdHJ1Y3Qgdm13X2J1ZmZlcl9vYmplY3QgKnZtd19ibyA9IHZtd19idWZmZXJfb2JqZWN0KGJv KTsNCiANCisJV0FSTl9PTih2bXdfYm8tPmRpcnR5KTsNCiAJdm13X2JvX3VubWFwKHZtd19ibyk7 DQogCWtmcmVlKHZtd19ibyk7DQogfQ0KQEAgLTQ3Niw4ICs0NzcsMTAgQEAgdm9pZCB2bXdfYm9f Ym9fZnJlZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKQ0KIHN0YXRpYyB2b2lkIHZtd191 c2VyX2JvX2Rlc3Ryb3koc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibykNCiB7DQogCXN0cnVj dCB2bXdfdXNlcl9idWZmZXJfb2JqZWN0ICp2bXdfdXNlcl9ibyA9IHZtd191c2VyX2J1ZmZlcl9v YmplY3QoYm8pOw0KKwlzdHJ1Y3Qgdm13X2J1ZmZlcl9vYmplY3QgKnZibyA9ICZ2bXdfdXNlcl9i by0+dmJvOw0KIA0KLQl2bXdfYm9fdW5tYXAoJnZtd191c2VyX2JvLT52Ym8pOw0KKwlXQVJOX09O KHZiby0+ZGlydHkpOw0KKwl2bXdfYm9fdW5tYXAodmJvKTsNCiAJdHRtX3ByaW1lX29iamVjdF9r ZnJlZSh2bXdfdXNlcl9ibywgcHJpbWUpOw0KIH0NCiANCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4 X2Rydi5jDQppbmRleCA2MTY1ZmUyYzQ1MDQuLjc0ZTk0MTM4ODc3ZSAxMDA2NDQNCi0tLSBhL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5jDQorKysgYi9kcml2ZXJzL2dwdS9kcm0v dm13Z2Z4L3Ztd2dmeF9kcnYuYw0KQEAgLTg1Nyw2ICs4NTcsMTEgQEAgc3RhdGljIGludCB2bXdf ZHJpdmVyX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBjaGlwc2V0 KQ0KIAkJRFJNX0VSUk9SKCJGYWlsZWQgaW5pdGlhbGl6aW5nIFRUTSBidWZmZXIgb2JqZWN0IGRy aXZlci5cbiIpOw0KIAkJZ290byBvdXRfbm9fYmRldjsNCiAJfQ0KKwlkZXZfcHJpdi0+dm1fb3Bz ID0gKmRldl9wcml2LT5iZGV2LnZtX29wczsNCisJZGV2X3ByaXYtPnZtX29wcy5mYXVsdCA9IHZt d19ib192bV9mYXVsdDsNCisJZGV2X3ByaXYtPnZtX29wcy5wZm5fbWt3cml0ZSA9IHZtd19ib192 bV9ta3dyaXRlOw0KKwlkZXZfcHJpdi0+dm1fb3BzLnBhZ2VfbWt3cml0ZSA9IHZtd19ib192bV9t a3dyaXRlOw0KKwlkZXZfcHJpdi0+YmRldi52bV9vcHMgPSAmZGV2X3ByaXYtPnZtX29wczsNCiAN CiAJLyoNCiAJICogRW5hYmxlIFZSQU0sIGJ1dCBpbml0aWFsbHkgZG9uJ3QgdXNlIGl0IHVudGls IFNWR0EgaXMgZW5hYmxlZCBhbmQNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oDQppbmRl eCBiZDY5MTliOTA1MTkuLmYwNWZjZTUyZmJiNCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS92bXdnZngvdm13Z2Z4X2Rydi5oDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9kcnYuaA0KQEAgLTk1LDYgKzk1LDcgQEAgc3RydWN0IHZtd19mcHJpdiB7DQogICogQGR4X3F1 ZXJ5X2N0eDogRFggY29udGV4dCBpZiB0aGlzIGJ1ZmZlciBvYmplY3QgaXMgdXNlZCBhcyBhIERY IHF1ZXJ5IE1PQg0KICAqIEBtYXA6IEttYXAgb2JqZWN0IGZvciBzZW1pLXBlcnNpc3RlbnQgbWFw cGluZ3MNCiAgKiBAcmVzX3ByaW9zOiBFdmljdGlvbiBwcmlvcml0eSBjb3VudHMgZm9yIGF0dGFj aGVkIHJlc291cmNlcw0KKyAqIEBkaXJ0eTogc3RydWN0dXJlIGZvciB1c2VyLXNwYWNlIGRpcnR5 LXRyYWNraW5nDQogICovDQogc3RydWN0IHZtd19idWZmZXJfb2JqZWN0IHsNCiAJc3RydWN0IHR0 bV9idWZmZXJfb2JqZWN0IGJhc2U7DQpAQCAtMTA1LDYgKzEwNiw3IEBAIHN0cnVjdCB2bXdfYnVm ZmVyX29iamVjdCB7DQogCS8qIFByb3RlY3RlZCBieSByZXNlcnZhdGlvbiAqLw0KIAlzdHJ1Y3Qg dHRtX2JvX2ttYXBfb2JqIG1hcDsNCiAJdTMyIHJlc19wcmlvc1tUVE1fTUFYX0JPX1BSSU9SSVRZ XTsNCisJc3RydWN0IHZtd19ib19kaXJ0eSAqZGlydHk7DQogfTsNCiANCiAvKioNCkBAIC0xMzUs NyArMTM3LDggQEAgc3RydWN0IHZtd19yZXNfZnVuYzsNCiAgKiBAcmVzX2RpcnR5OiBSZXNvdXJj ZSBjb250YWlucyBkYXRhIG5vdCB5ZXQgaW4gdGhlIGJhY2t1cCBidWZmZXIuIFByb3RlY3RlZA0K ICAqIGJ5IHJlc291cmNlIHJlc2VydmVkLg0KICAqIEBiYWNrdXBfZGlydHk6IEJhY2t1cCBidWZm ZXIgY29udGFpbnMgZGF0YSBub3QgeWV0IGluIHRoZSBIVyByZXNvdXJjZS4NCi0gKiBQcm90ZWN0 ZSBieSByZXNvdXJjZSByZXNlcnZlZC4NCisgKiBQcm90ZWN0ZWQgYnkgcmVzb3VyY2UgcmVzZXJ2 ZWQuDQorICogQGNvaGVyZW50OiBFbXVsYXRlIGNvaGVyZW5jeSBieSB0cmFja2luZyB2bSBhY2Nl c3Nlcy4NCiAgKiBAYmFja3VwOiBUaGUgYmFja3VwIGJ1ZmZlciBpZiBhbnkuIFByb3RlY3RlZCBi eSByZXNvdXJjZSByZXNlcnZlZC4NCiAgKiBAYmFja3VwX29mZnNldDogT2Zmc2V0IGludG8gdGhl IGJhY2t1cCBidWZmZXIgaWYgYW55LiBQcm90ZWN0ZWQgYnkgcmVzb3VyY2UNCiAgKiByZXNlcnZl ZC4gTm90ZSB0aGF0IG9ubHkgYSBmZXcgcmVzb3VyY2UgdHlwZXMgY2FuIGhhdmUgYSBAYmFja3Vw X29mZnNldA0KQEAgLTE1MiwxNCArMTU1LDE2IEBAIHN0cnVjdCB2bXdfcmVzX2Z1bmM7DQogICog QGh3X2Rlc3Ryb3k6IENhbGxiYWNrIHRvIGRlc3Ryb3kgdGhlIHJlc291cmNlIG9uIHRoZSBkZXZp Y2UsIGFzIHBhcnQgb2YNCiAgKiByZXNvdXJjZSBkZXN0cnVjdGlvbi4NCiAgKi8NCitzdHJ1Y3Qg dm13X3Jlc291cmNlX2RpcnR5Ow0KIHN0cnVjdCB2bXdfcmVzb3VyY2Ugew0KIAlzdHJ1Y3Qga3Jl ZiBrcmVmOw0KIAlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2Ow0KIAlpbnQgaWQ7DQogCXUz MiB1c2VkX3ByaW87DQogCXVuc2lnbmVkIGxvbmcgYmFja3VwX3NpemU7DQotCWJvb2wgcmVzX2Rp cnR5Ow0KLQlib29sIGJhY2t1cF9kaXJ0eTsNCisJdTMyIHJlc19kaXJ0eSA6IDE7DQorCXUzMiBi YWNrdXBfZGlydHkgOiAxOw0KKwl1MzIgY29oZXJlbnQgOiAxOw0KIAlzdHJ1Y3Qgdm13X2J1ZmZl cl9vYmplY3QgKmJhY2t1cDsNCiAJdW5zaWduZWQgbG9uZyBiYWNrdXBfb2Zmc2V0Ow0KIAl1bnNp Z25lZCBsb25nIHBpbl9jb3VudDsNCkBAIC0xNjcsNiArMTcyLDcgQEAgc3RydWN0IHZtd19yZXNv dXJjZSB7DQogCXN0cnVjdCBsaXN0X2hlYWQgbHJ1X2hlYWQ7DQogCXN0cnVjdCBsaXN0X2hlYWQg bW9iX2hlYWQ7DQogCXN0cnVjdCBsaXN0X2hlYWQgYmluZGluZ19oZWFkOw0KKwlzdHJ1Y3Qgdm13 X3Jlc291cmNlX2RpcnR5ICpkaXJ0eTsNCiAJdm9pZCAoKnJlc19mcmVlKSAoc3RydWN0IHZtd19y ZXNvdXJjZSAqcmVzKTsNCiAJdm9pZCAoKmh3X2Rlc3Ryb3kpIChzdHJ1Y3Qgdm13X3Jlc291cmNl ICpyZXMpOw0KIH07DQpAQCAtNjA3LDYgKzYxMyw5IEBAIHN0cnVjdCB2bXdfcHJpdmF0ZSB7DQog DQogCS8qIFZhbGlkYXRpb24gbWVtb3J5IHJlc2VydmF0aW9uICovDQogCXN0cnVjdCB2bXdfdmFs aWRhdGlvbl9tZW0gdnZtOw0KKw0KKwkvKiBWTSBvcGVyYXRpb25zICovDQorCXN0cnVjdCB2bV9v cGVyYXRpb25zX3N0cnVjdCB2bV9vcHM7DQogfTsNCiANCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB2 bXdfc3VyZmFjZSAqdm13X3Jlc190b19zcmYoc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzKQ0KQEAg LTcyMyw2ICs3MzIsOCBAQCBleHRlcm4gdm9pZCB2bXdfcmVzb3VyY2VfZXZpY3RfYWxsKHN0cnVj dCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYpOw0KIGV4dGVybiB2b2lkIHZtd19yZXNvdXJjZV91bmJp bmRfbGlzdChzdHJ1Y3Qgdm13X2J1ZmZlcl9vYmplY3QgKnZibyk7DQogdm9pZCB2bXdfcmVzb3Vy Y2VfbW9iX2F0dGFjaChzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMpOw0KIHZvaWQgdm13X3Jlc291 cmNlX21vYl9kZXRhY2goc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzKTsNCit2b2lkIHZtd19yZXNv dXJjZV9kaXJ0eV91cGRhdGUoc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzLCBwZ29mZl90IHN0YXJ0 LA0KKwkJCSAgICAgICBwZ29mZl90IGVuZCk7DQogDQogLyoqDQogICogdm13X3Jlc291cmNlX21v Yl9hdHRhY2hlZCAtIFdoZXRoZXIgYSByZXNvdXJjZSBjdXJyZW50bHkgaGFzIGEgbW9iIGF0dGFj aGVkDQpAQCAtMTQxMSw2ICsxNDIyLDE1IEBAIGludCB2bXdfaG9zdF9sb2coY29uc3QgY2hhciAq bG9nKTsNCiAjZGVmaW5lIFZNV19ERUJVR19VU0VSKGZtdCwgLi4uKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQogCURSTV9ERUJVR19EUklWRVIoZm10LCAj I19fVkFfQVJHU19fKQ0KIA0KKy8qIFJlc291cmNlIGRpcnR5aW5nIC0gdm13Z2Z4X3BhZ2VfZGly dHkuYyAqLw0KK3ZvaWQgdm13X2JvX2RpcnR5X3NjYW4oc3RydWN0IHZtd19idWZmZXJfb2JqZWN0 ICp2Ym8pOw0KK2ludCB2bXdfYm9fZGlydHlfYWRkKHN0cnVjdCB2bXdfYnVmZmVyX29iamVjdCAq dmJvKTsNCit2b2lkIHZtd19ib19kaXJ0eV90cmFuc2Zlcl90b19yZXMoc3RydWN0IHZtd19yZXNv dXJjZSAqcmVzKTsNCit2b2lkIHZtd19ib19kaXJ0eV9jbGVhcl9yZXMoc3RydWN0IHZtd19yZXNv dXJjZSAqcmVzKTsNCit2b2lkIHZtd19ib19kaXJ0eV9yZWxlYXNlKHN0cnVjdCB2bXdfYnVmZmVy X29iamVjdCAqdmJvKTsNCit2bV9mYXVsdF90IHZtd19ib192bV9mYXVsdChzdHJ1Y3Qgdm1fZmF1 bHQgKnZtZik7DQordm1fZmF1bHRfdCB2bXdfYm9fdm1fbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQg KnZtZik7DQorDQogLyoqDQogICogSW5saW5lIGhlbHBlciBmdW5jdGlvbnMNCiAgKi8NCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVjYnVmLmMgYi9kcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVjYnVmLmMNCmluZGV4IGRhM2FjMGJjMmUxNC4uN2Ni MjIxMTlmNTE2IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZXhl Y2J1Zi5jDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVjYnVmLmMNCkBA IC0yNDgzLDcgKzI0ODMsNiBAQCBzdGF0aWMgaW50IHZtd19jbWRfZHhfY2hlY2tfc3VicmVzb3Vy Y2Uoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwNCiAJCSAgICAgb2Zmc2V0b2YodHlwZW9m KCpjbWQpLCBzaWQpKTsNCiANCiAJY21kID0gY29udGFpbmVyX29mKGhlYWRlciwgdHlwZW9mKCpj bWQpLCBoZWFkZXIpOw0KLQ0KIAlyZXR1cm4gdm13X2NtZF9yZXNfY2hlY2soZGV2X3ByaXYsIHN3 X2NvbnRleHQsIHZtd19yZXNfc3VyZmFjZSwNCiAJCQkJIFZNV19SRVNfRElSVFlfTk9ORSwgdXNl cl9zdXJmYWNlX2NvbnZlcnRlciwNCiAJCQkJICZjbWQtPnNpZCwgTlVMTCk7DQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jIGIvZHJpdmVycy9n cHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K aW5kZXggMDAwMDAwMDAwMDAwLi44ZDE1NGY5MGJkYzANCi0tLSAvZGV2L251bGwNCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYw0KQEAgLTAsMCArMSw0MDkg QEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBNSVQNCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioNCisgKg0KKyAqIENvcHlyaWdodCAyMDE5IFZNd2FyZSwgSW5jLiwgUGFsbyBB bHRvLCBDQS4sIFVTQQ0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGENCisgKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlDQorICogIlNv ZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZw0KKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwNCisgKiBkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwgYW5k L29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvDQorICogcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv DQorICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUNCisg KiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucw0KKyAqIG9mIHRoZSBTb2Z0d2FyZS4NCisgKg0KKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMDQorICog VEhFIENPUFlSSUdIVCBIT0xERVJTLCBBVVRIT1JTIEFORC9PUiBJVFMgU1VQUExJRVJTIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLA0KKyAqIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUg0KKyAqIE9USEVSV0lTRSwgQVJJ U0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUNCisgKiBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLw0KKyNpbmNsdWRlICJ2bXdnZnhfZHJ2LmgiDQorDQorLyoNCisgKiBE aWZmZXJlbnQgbWV0aG9kcyBmb3IgdHJhY2tpbmcgZGlydHk6DQorICogVk1XX0JPX0RJUlRZX1BB R0VUQUJMRSAtIFNjYW4gdGhlIHBhZ2V0YWJsZSBmb3IgaGFyZHdhcmUgZGlydHkgYml0cw0KKyAq IFZNV19CT19ESVJUWV9NS1dSSVRFIC0gV3JpdGUtcHJvdGVjdCBwYWdlIHRhYmxlIGVudHJpZXMg YW5kIHJlY29yZCB3cml0ZS0NCisgKiBhY2Nlc3NlcyBpbiB0aGUgVk0gbWt3cml0ZSgpIGNhbGxi YWNrDQorICovDQorZW51bSB2bXdfYm9fZGlydHlfbWV0aG9kIHsNCisJVk1XX0JPX0RJUlRZX1BB R0VUQUJMRSwNCisJVk1XX0JPX0RJUlRZX01LV1JJVEUsDQorfTsNCisNCisvKg0KKyAqIE5vIGRp cnRpZWQgcGFnZXMgYXQgc2NhbiB0cmlnZ2VyIGEgdHJhbnNpdGlvbiB0byB0aGUgX01LV1JJVEUg bWV0aG9kLA0KKyAqIHNpbWlsYXJseSBhIGNlcnRhaW4gcGVyY2VudGFnZSBvZiBkaXJ0eSBwYWdl cyB0cmlnZ2VyIGEgdHJhbnNpdGlvbiB0bw0KKyAqIHRoZSBfUEFHRVRBQkxFIG1ldGhvZC4gSG93 IG1hbnkgdHJpZ2dlcnMgc2hvdWxkIHdlIHdhaXQgZm9yIGJlZm9yZQ0KKyAqIGNoYW5naW5nIG1l dGhvZD8NCisgKi8NCisjZGVmaW5lIFZNV19ESVJUWV9OVU1fQ0hBTkdFX1RSSUdHRVJTIDINCisN CisvKiBQZXJjZW50YWdlIHRvIHRyaWdnZXIgYSB0cmFuc2l0aW9uIHRvIHRoZSBfUEFHRVRBQkxF IG1ldGhvZCAqLw0KKyNkZWZpbmUgVk1XX0RJUlRZX1BFUkNFTlRBR0UgMTANCisNCisvKioNCisg KiBzdHJ1Y3Qgdm13X2JvX2RpcnR5IC0gRGlydHkgaW5mb3JtYXRpb24gZm9yIGJ1ZmZlciBvYmpl Y3RzDQorICogQHN0YXJ0OiBGaXJzdCBjdXJyZW50bHkgZGlydHkgYml0DQorICogQGVuZDogTGFz dCBjdXJyZW50bHkgZGlydHkgYml0ICsgMQ0KKyAqIEBtZXRob2Q6IFRoZSBjdXJyZW50bHkgdXNl ZCBkaXJ0eSBtZXRob2QNCisgKiBAY2hhbmdlX2NvdW50OiBOdW1iZXIgb2YgY29uc2VjdXRpdmUg bWV0aG9kIGNoYW5nZSB0cmlnZ2Vycw0KKyAqIEByZWZfY291bnQ6IFJlZmVyZW5jZSBjb3VudCBm b3IgdGhpcyBzdHJ1Y3R1cmUNCisgKiBAYml0bWFwX3NpemU6IFRoZSBzaXplIG9mIHRoZSBiaXRt YXAgaW4gYml0cy4gVHlwaWNhbGx5IGVxdWFsIHRvIHRoZQ0KKyAqIG51YmVyIG9mIHBhZ2VzIGlu IHRoZSBiby4NCisgKiBAc2l6ZTogVGhlIGFjY291bnRpbmcgc2l6ZSBmb3IgdGhpcyBzdHJ1Y3Qu DQorICogQGJpdG1hcDogQSBiaXRtYXAgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyBhIHBhZ2Uu IEEgc2V0IGJpdCBtZWFucyBhDQorICogZGlydHkgcGFnZS4NCisgKi8NCitzdHJ1Y3Qgdm13X2Jv X2RpcnR5IHsNCisJdW5zaWduZWQgbG9uZyBzdGFydDsNCisJdW5zaWduZWQgbG9uZyBlbmQ7DQor CWVudW0gdm13X2JvX2RpcnR5X21ldGhvZCBtZXRob2Q7DQorCXVuc2lnbmVkIGludCBjaGFuZ2Vf Y291bnQ7DQorCXVuc2lnbmVkIGludCByZWZfY291bnQ7DQorCXVuc2lnbmVkIGxvbmcgYml0bWFw X3NpemU7DQorCXNpemVfdCBzaXplOw0KKwl1bnNpZ25lZCBsb25nIGJpdG1hcFswXTsNCit9Ow0K Kw0KKy8qKg0KKyAqIHZtd19ib19kaXJ0eV9zY2FuX3BhZ2V0YWJsZSAtIFBlcmZvcm0gYSBwYWdl dGFibGUgc2NhbiBmb3IgZGlydHkgYml0cw0KKyAqIEB2Ym86IFRoZSBidWZmZXIgb2JqZWN0IHRv IHNjYW4NCisgKg0KKyAqIFNjYW5zIHRoZSBwYWdldGFibGUgZm9yIGRpcnR5IGJpdHMuIENsZWFy IHRob3NlIGJpdHMgYW5kIG1vZGlmeSB0aGUNCisgKiBkaXJ0eSBzdHJ1Y3R1cmUgd2l0aCB0aGUg cmVzdWx0cy4gVGhpcyBmdW5jdGlvbiBtYXkgY2hhbmdlIHRoZQ0KKyAqIGRpcnR5LXRyYWNraW5n IG1ldGhvZC4NCisgKi8NCitzdGF0aWMgdm9pZCB2bXdfYm9fZGlydHlfc2Nhbl9wYWdldGFibGUo c3RydWN0IHZtd19idWZmZXJfb2JqZWN0ICp2Ym8pDQorew0KKwlzdHJ1Y3Qgdm13X2JvX2RpcnR5 ICpkaXJ0eSA9IHZiby0+ZGlydHk7DQorCXBnb2ZmX3Qgb2Zmc2V0ID0gZHJtX3ZtYV9ub2RlX3N0 YXJ0KCZ2Ym8tPmJhc2Uudm1hX25vZGUpOw0KKwlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGlu ZyA9IHZiby0+YmFzZS5iZGV2LT5kZXZfbWFwcGluZzsNCisJcGdvZmZfdCBudW1fbWFya2VkOw0K Kw0KKwludW1fbWFya2VkID0gYXBwbHlfYXNfY2xlYW4obWFwcGluZywNCisJCQkJICAgIG9mZnNl dCwgZGlydHktPmJpdG1hcF9zaXplLA0KKwkJCQkgICAgb2Zmc2V0LCAmZGlydHktPmJpdG1hcFsw XSwNCisJCQkJICAgICZkaXJ0eS0+c3RhcnQsICZkaXJ0eS0+ZW5kKTsNCisJaWYgKG51bV9tYXJr ZWQgPT0gMCkNCisJCWRpcnR5LT5jaGFuZ2VfY291bnQrKzsNCisJZWxzZQ0KKwkJZGlydHktPmNo YW5nZV9jb3VudCA9IDA7DQorDQorCWlmIChkaXJ0eS0+Y2hhbmdlX2NvdW50ID4gVk1XX0RJUlRZ X05VTV9DSEFOR0VfVFJJR0dFUlMpIHsNCisJCWRpcnR5LT5jaGFuZ2VfY291bnQgPSAwOw0KKwkJ ZGlydHktPm1ldGhvZCA9IFZNV19CT19ESVJUWV9NS1dSSVRFOw0KKwkJYXBwbHlfYXNfd3Jwcm90 ZWN0KG1hcHBpbmcsDQorCQkJCSAgIG9mZnNldCwgZGlydHktPmJpdG1hcF9zaXplKTsNCisJCWFw cGx5X2FzX2NsZWFuKG1hcHBpbmcsDQorCQkJICAgICAgIG9mZnNldCwgZGlydHktPmJpdG1hcF9z aXplLA0KKwkJCSAgICAgICBvZmZzZXQsICZkaXJ0eS0+Yml0bWFwWzBdLA0KKwkJCSAgICAgICAm ZGlydHktPnN0YXJ0LCAmZGlydHktPmVuZCk7DQorCX0NCit9DQorDQorLyoqDQorICogdm13X2Jv X2RpcnR5X3NjYW5fbWt3cml0ZSAtIFJlc2V0IHRoZSBta3dyaXRlIGRpcnR5LXRyYWNraW5nIG1l dGhvZA0KKyAqIEB2Ym86IFRoZSBidWZmZXIgb2JqZWN0IHRvIHNjYW4NCisgKg0KKyAqIFdyaXRl LXByb3RlY3QgcGFnZXMgd3JpdHRlbiB0byBzbyB0aGF0IGNvbnNlY3V0aXZlIHdyaXRlIGFjY2Vz c2VzIHdpbGwNCisgKiB0cmlnZ2VyIGEgY2FsbCB0byBta3dyaXRlLg0KKyAqDQorICogVGhpcyBm dW5jdGlvbiBtYXkgY2hhbmdlIHRoZSBkaXJ0eS10cmFja2luZyBtZXRob2QuDQorICovDQorc3Rh dGljIHZvaWQgdm13X2JvX2RpcnR5X3NjYW5fbWt3cml0ZShzdHJ1Y3Qgdm13X2J1ZmZlcl9vYmpl Y3QgKnZibykNCit7DQorCXN0cnVjdCB2bXdfYm9fZGlydHkgKmRpcnR5ID0gdmJvLT5kaXJ0eTsN CisJdW5zaWduZWQgbG9uZyBvZmZzZXQgPSBkcm1fdm1hX25vZGVfc3RhcnQoJnZiby0+YmFzZS52 bWFfbm9kZSk7DQorCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gdmJvLT5iYXNlLmJk ZXYtPmRldl9tYXBwaW5nOw0KKwlwZ29mZl90IG51bV9tYXJrZWQ7DQorDQorCWlmIChkaXJ0eS0+ ZW5kIDw9IGRpcnR5LT5zdGFydCkNCisJCXJldHVybjsNCisNCisJbnVtX21hcmtlZCA9IGFwcGx5 X2FzX3dycHJvdGVjdCh2Ym8tPmJhc2UuYmRldi0+ZGV2X21hcHBpbmcsDQorCQkJCQlkaXJ0eS0+ c3RhcnQgKyBvZmZzZXQsDQorCQkJCQlkaXJ0eS0+ZW5kIC0gZGlydHktPnN0YXJ0KTsNCisNCisJ aWYgKDEwMFVMICogbnVtX21hcmtlZCAvIGRpcnR5LT5iaXRtYXBfc2l6ZSA+DQorCSAgICBWTVdf RElSVFlfUEVSQ0VOVEFHRSkgew0KKwkJZGlydHktPmNoYW5nZV9jb3VudCsrOw0KKwl9IGVsc2Ug ew0KKwkJZGlydHktPmNoYW5nZV9jb3VudCA9IDA7DQorCX0NCisNCisJaWYgKGRpcnR5LT5jaGFu Z2VfY291bnQgPiBWTVdfRElSVFlfTlVNX0NIQU5HRV9UUklHR0VSUykgew0KKwkJcGdvZmZfdCBz dGFydCA9IDA7DQorCQlwZ29mZl90IGVuZCA9IGRpcnR5LT5iaXRtYXBfc2l6ZTsNCisNCisJCWRp cnR5LT5tZXRob2QgPSBWTVdfQk9fRElSVFlfUEFHRVRBQkxFOw0KKwkJYXBwbHlfYXNfY2xlYW4o bWFwcGluZywgb2Zmc2V0LCBlbmQsIG9mZnNldCwgJmRpcnR5LT5iaXRtYXBbMF0sDQorCQkJICAg ICAgICZzdGFydCwgJmVuZCk7DQorCQliaXRtYXBfY2xlYXIoJmRpcnR5LT5iaXRtYXBbMF0sIDAs IGRpcnR5LT5iaXRtYXBfc2l6ZSk7DQorCQlpZiAoZGlydHktPnN0YXJ0IDwgZGlydHktPmVuZCkN CisJCQliaXRtYXBfc2V0KCZkaXJ0eS0+Yml0bWFwWzBdLCBkaXJ0eS0+c3RhcnQsDQorCQkJCSAg IGRpcnR5LT5lbmQgLSBkaXJ0eS0+c3RhcnQpOw0KKwkJZGlydHktPmNoYW5nZV9jb3VudCA9IDA7 DQorCX0NCit9DQorDQorDQorLyoqDQorICogdm13X2JvX2RpcnR5X3NjYW4gLSBTY2FuIGZvciBk aXJ0eSBwYWdlcyBhbmQgYWRkIHRoZW0gdG8gdGhlIGRpcnR5DQorICogdHJhY2tpbmcgc3RydWN0 dXJlDQorICogQHZibzogVGhlIGJ1ZmZlciBvYmplY3QgdG8gc2Nhbg0KKyAqDQorICogVGhpcyBm dW5jdGlvbiBtYXkgY2hhbmdlIHRoZSBkaXJ0eSB0cmFja2luZyBtZXRob2QuDQorICovDQordm9p ZCB2bXdfYm9fZGlydHlfc2NhbihzdHJ1Y3Qgdm13X2J1ZmZlcl9vYmplY3QgKnZibykNCit7DQor CXN0cnVjdCB2bXdfYm9fZGlydHkgKmRpcnR5ID0gdmJvLT5kaXJ0eTsNCisNCisJaWYgKGRpcnR5 LT5tZXRob2QgPT0gVk1XX0JPX0RJUlRZX1BBR0VUQUJMRSkNCisJCXZtd19ib19kaXJ0eV9zY2Fu X3BhZ2V0YWJsZSh2Ym8pOw0KKwllbHNlDQorCQl2bXdfYm9fZGlydHlfc2Nhbl9ta3dyaXRlKHZi byk7DQorfQ0KKw0KKy8qKg0KKyAqIHZtd19ib19kaXJ0eV9hZGQgLSBBZGQgYSBkaXJ0eS10cmFj a2luZyB1c2VyIHRvIGEgYnVmZmVyIG9iamVjdA0KKyAqIEB2Ym86IFRoZSBidWZmZXIgb2JqZWN0 DQorICoNCisgKiBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyBhIGRpcnR5LXRyYWNraW5nIHVzZXIg dG8gYSBidWZmZXIgb2JqZWN0Lg0KKyAqIEEgdXNlciBjYW4gYmUgZm9yIGV4YW1wbGUgYSByZXNv dXJjZSBvciBhIHZtYSBpbiBhIHNwZWNpYWwgdXNlci1zcGFjZQ0KKyAqIG1hcHBpbmcuDQorICoN CisgKiBSZXR1cm46IFplcm8gb24gc3VjY2VzcywgLUVOT01FTSBvbiBtZW1vcnkgYWxsb2NhdGlv biBmYWlsdXJlLg0KKyAqLw0KK2ludCB2bXdfYm9fZGlydHlfYWRkKHN0cnVjdCB2bXdfYnVmZmVy X29iamVjdCAqdmJvKQ0KK3sNCisJc3RydWN0IHZtd19ib19kaXJ0eSAqZGlydHkgPSB2Ym8tPmRp cnR5Ow0KKwlwZ29mZl90IG51bV9wYWdlcyA9IHZiby0+YmFzZS5udW1fcGFnZXM7DQorCXNpemVf dCBzaXplLCBhY2Nfc2l6ZTsNCisJaW50IHJldDsNCisJc3RhdGljIHN0cnVjdCB0dG1fb3BlcmF0 aW9uX2N0eCBjdHggPSB7DQorCQkuaW50ZXJydXB0aWJsZSA9IGZhbHNlLA0KKwkJLm5vX3dhaXRf Z3B1ID0gZmFsc2UNCisJfTsNCisNCisJaWYgKGRpcnR5KSB7DQorCQlkaXJ0eS0+cmVmX2NvdW50 Kys7DQorCQlyZXR1cm4gMDsNCisJfQ0KKw0KKwlzaXplID0gc2l6ZW9mKCpkaXJ0eSkgKyBCSVRT X1RPX0xPTkdTKG51bV9wYWdlcykgKiBzaXplb2YobG9uZyk7DQorCWFjY19zaXplID0gdHRtX3Jv dW5kX3BvdChzaXplKTsNCisJcmV0ID0gdHRtX21lbV9nbG9iYWxfYWxsb2MoJnR0bV9tZW1fZ2xv YiwgYWNjX3NpemUsICZjdHgpOw0KKwlpZiAocmV0KSB7DQorCQlWTVdfREVCVUdfVVNFUigiT3V0 IG9mIGdyYXBoaWNzIG1lbW9yeSBmb3IgYnVmZmVyIG9iamVjdCAiDQorCQkJICAgICAgICJkaXJ0 eSB0cmFja2VyLlxuIik7DQorCQlyZXR1cm4gcmV0Ow0KKwl9DQorCWRpcnR5ID0ga3Z6YWxsb2Mo c2l6ZSwgR0ZQX0tFUk5FTCk7DQorCWlmICghZGlydHkpIHsNCisJCXJldCA9IC1FTk9NRU07DQor CQlnb3RvIG91dF9ub19kaXJ0eTsNCisJfQ0KKw0KKwlkaXJ0eS0+c2l6ZSA9IGFjY19zaXplOw0K KwlkaXJ0eS0+Yml0bWFwX3NpemUgPSBudW1fcGFnZXM7DQorCWRpcnR5LT5zdGFydCA9IGRpcnR5 LT5iaXRtYXBfc2l6ZTsNCisJZGlydHktPmVuZCA9IDA7DQorCWRpcnR5LT5yZWZfY291bnQgPSAx Ow0KKwlpZiAobnVtX3BhZ2VzIDwgUEFHRV9TSVpFIC8gc2l6ZW9mKHB0ZV90KSkgew0KKwkJZGly dHktPm1ldGhvZCA9IFZNV19CT19ESVJUWV9QQUdFVEFCTEU7DQorCX0gZWxzZSB7DQorCQlzdHJ1 Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IHZiby0+YmFzZS5iZGV2LT5kZXZfbWFwcGluZzsN CisJCXBnb2ZmX3Qgb2Zmc2V0ID0gZHJtX3ZtYV9ub2RlX3N0YXJ0KCZ2Ym8tPmJhc2Uudm1hX25v ZGUpOw0KKw0KKwkJZGlydHktPm1ldGhvZCA9IFZNV19CT19ESVJUWV9NS1dSSVRFOw0KKw0KKwkJ LyogV3JpdGUtcHJvdGVjdCBhbmQgdGhlbiBwaWNrIHVwIGFscmVhZHkgZGlydHkgYml0cyAqLw0K KwkJYXBwbHlfYXNfd3Jwcm90ZWN0KG1hcHBpbmcsIG9mZnNldCwgbnVtX3BhZ2VzKTsNCisJCWFw cGx5X2FzX2NsZWFuKG1hcHBpbmcsIG9mZnNldCwgbnVtX3BhZ2VzLCBvZmZzZXQsDQorCQkJICAg ICAgICZkaXJ0eS0+Yml0bWFwWzBdLCAmZGlydHktPnN0YXJ0LCAmZGlydHktPmVuZCk7DQorCX0N CisNCisJdmJvLT5kaXJ0eSA9IGRpcnR5Ow0KKw0KKwlyZXR1cm4gMDsNCisNCitvdXRfbm9fZGly dHk6DQorCXR0bV9tZW1fZ2xvYmFsX2ZyZWUoJnR0bV9tZW1fZ2xvYiwgYWNjX3NpemUpOw0KKwly ZXR1cm4gcmV0Ow0KK30NCisNCisvKioNCisgKiB2bXdfYm9fZGlydHlfcmVsZWFzZSAtIFJlbGVh c2UgYSBkaXJ0eS10cmFja2luZyB1c2VyIGZyb20gYSBidWZmZXIgb2JqZWN0DQorICogQHZibzog VGhlIGJ1ZmZlciBvYmplY3QNCisgKg0KKyAqIFRoaXMgZnVuY3Rpb24gcmVsZWFzZXMgYSBkaXJ0 eS10cmFja2luZyB1c2VyIGZyb20gYSBidWZmZXIgb2JqZWN0Lg0KKyAqIElmIHRoZSByZWZlcmVu Y2UgY291bnQgcmVhY2hlcyB6ZXJvLCB0aGVuIHRoZSBkaXJ0eS10cmFja2luZyBvYmplY3QgaXMN CisgKiBmcmVlZCBhbmQgdGhlIHBvaW50ZXIgdG8gaXQgY2xlYXJlZC4NCisgKg0KKyAqIFJldHVy bjogWmVybyBvbiBzdWNjZXNzLCAtRU5PTUVNIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUu DQorICovDQordm9pZCB2bXdfYm9fZGlydHlfcmVsZWFzZShzdHJ1Y3Qgdm13X2J1ZmZlcl9vYmpl Y3QgKnZibykNCit7DQorCXN0cnVjdCB2bXdfYm9fZGlydHkgKmRpcnR5ID0gdmJvLT5kaXJ0eTsN CisNCisJaWYgKGRpcnR5ICYmIC0tZGlydHktPnJlZl9jb3VudCA9PSAwKSB7DQorCQlzaXplX3Qg YWNjX3NpemUgPSBkaXJ0eS0+c2l6ZTsNCisNCisJCWt2ZnJlZShkaXJ0eSk7DQorCQl0dG1fbWVt X2dsb2JhbF9mcmVlKCZ0dG1fbWVtX2dsb2IsIGFjY19zaXplKTsNCisJCXZiby0+ZGlydHkgPSBO VUxMOw0KKwl9DQorfQ0KKw0KKy8qKg0KKyAqIHZtd19ib19kaXJ0eV90cmFuc2Zlcl90b19yZXMg LSBQaWNrIHVwIGEgcmVzb3VyY2UncyBkaXJ0eSByZWdpb24gZnJvbQ0KKyAqIGl0cyBiYWNraW5n IG1vYi4NCisgKiBAcmVzOiBUaGUgcmVzb3VyY2UNCisgKg0KKyAqIFRoaXMgZnVuY3Rpb24gd2ls bCBwaWNrIHVwIGFsbCBkaXJ0eSByYW5nZXMgYWZmZWN0aW5nIHRoZSByZXNvdXJjZSBmcm9tDQor ICogaXQncyBiYWNrdXAgbW9iLCBhbmQgY2FsbCB2bXdfcmVzb3VyY2VfZGlydHlfdXBkYXRlKCkg b25jZSBmb3IgZWFjaA0KKyAqIHJhbmdlLiBUaGUgdHJhbnNmZXJyZWQgcmFuZ2VzIHdpbGwgYmUg Y2xlYXJlZCBmcm9tIHRoZSBiYWNraW5nIG1vYidzDQorICogZGlydHkgdHJhY2tpbmcuDQorICov DQordm9pZCB2bXdfYm9fZGlydHlfdHJhbnNmZXJfdG9fcmVzKHN0cnVjdCB2bXdfcmVzb3VyY2Ug KnJlcykNCit7DQorCXN0cnVjdCB2bXdfYnVmZmVyX29iamVjdCAqdmJvID0gcmVzLT5iYWNrdXA7 DQorCXN0cnVjdCB2bXdfYm9fZGlydHkgKmRpcnR5ID0gdmJvLT5kaXJ0eTsNCisJcGdvZmZfdCBz dGFydCwgY3VyLCBlbmQ7DQorCXVuc2lnbmVkIGxvbmcgcmVzX3N0YXJ0ID0gcmVzLT5iYWNrdXBf b2Zmc2V0Ow0KKwl1bnNpZ25lZCBsb25nIHJlc19lbmQgPSByZXMtPmJhY2t1cF9vZmZzZXQgKyBy ZXMtPmJhY2t1cF9zaXplOw0KKw0KKwlXQVJOX09OX09OQ0UocmVzX3N0YXJ0ICYgflBBR0VfTUFT Syk7DQorCXJlc19zdGFydCA+Pj0gUEFHRV9TSElGVDsNCisJcmVzX2VuZCA9IERJVl9ST1VORF9V UChyZXNfZW5kLCBQQUdFX1NJWkUpOw0KKw0KKwlpZiAocmVzX3N0YXJ0ID49IGRpcnR5LT5lbmQg fHwgcmVzX2VuZCA8PSBkaXJ0eS0+c3RhcnQpDQorCQlyZXR1cm47DQorDQorCWN1ciA9IG1heChy ZXNfc3RhcnQsIGRpcnR5LT5zdGFydCk7DQorCXJlc19lbmQgPSBtYXgocmVzX2VuZCwgZGlydHkt PmVuZCk7DQorCXdoaWxlIChjdXIgPCByZXNfZW5kKSB7DQorCQl1bnNpZ25lZCBsb25nIG51bTsN CisNCisJCXN0YXJ0ID0gZmluZF9uZXh0X2JpdCgmZGlydHktPmJpdG1hcFswXSwgcmVzX2VuZCwg Y3VyKTsNCisJCWlmIChzdGFydCA+PSByZXNfZW5kKQ0KKwkJCWJyZWFrOw0KKw0KKwkJZW5kID0g ZmluZF9uZXh0X3plcm9fYml0KCZkaXJ0eS0+Yml0bWFwWzBdLCByZXNfZW5kLCBzdGFydCArIDEp Ow0KKwkJY3VyID0gZW5kICsgMTsNCisJCW51bSA9IGVuZCAtIHN0YXJ0Ow0KKwkJYml0bWFwX2Ns ZWFyKCZkaXJ0eS0+Yml0bWFwWzBdLCBzdGFydCwgbnVtKTsNCisJCXZtd19yZXNvdXJjZV9kaXJ0 eV91cGRhdGUocmVzLCBzdGFydCwgZW5kKTsNCisJfQ0KKw0KKwlpZiAocmVzX3N0YXJ0IDw9IGRp cnR5LT5zdGFydCAmJiByZXNfZW5kID4gZGlydHktPnN0YXJ0KQ0KKwkJZGlydHktPnN0YXJ0ID0g cmVzX2VuZDsNCisJaWYgKHJlc19zdGFydCA8IGRpcnR5LT5lbmQgJiYgcmVzX2VuZCA+PSBkaXJ0 eS0+ZW5kKQ0KKwkJZGlydHktPmVuZCA9IHJlc19zdGFydDsNCit9DQorDQorLyoqDQorICogdm13 X2JvX2RpcnR5X2NsZWFyX3JlcyAtIENsZWFyIGEgcmVzb3VyY2UncyBkaXJ0eSByZWdpb24gZnJv bQ0KKyAqIGl0cyBiYWNraW5nIG1vYi4NCisgKiBAcmVzOiBUaGUgcmVzb3VyY2UNCisgKg0KKyAq IFRoaXMgZnVuY3Rpb24gd2lsbCBjbGVhciBhbGwgZGlydHkgcmFuZ2VzIGFmZmVjdGluZyB0aGUg cmVzb3VyY2UgZnJvbQ0KKyAqIGl0J3MgYmFja3VwIG1vYidzIGRpcnR5IHRyYWNraW5nLg0KKyAq Lw0KK3ZvaWQgdm13X2JvX2RpcnR5X2NsZWFyX3JlcyhzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMp DQorew0KKwl1bnNpZ25lZCBsb25nIHJlc19zdGFydCA9IHJlcy0+YmFja3VwX29mZnNldDsNCisJ dW5zaWduZWQgbG9uZyByZXNfZW5kID0gcmVzLT5iYWNrdXBfb2Zmc2V0ICsgcmVzLT5iYWNrdXBf c2l6ZTsNCisJc3RydWN0IHZtd19idWZmZXJfb2JqZWN0ICp2Ym8gPSByZXMtPmJhY2t1cDsNCisJ c3RydWN0IHZtd19ib19kaXJ0eSAqZGlydHkgPSB2Ym8tPmRpcnR5Ow0KKw0KKwlyZXNfc3RhcnQg Pj49IFBBR0VfU0hJRlQ7DQorCXJlc19lbmQgPSBESVZfUk9VTkRfVVAocmVzX2VuZCwgUEFHRV9T SVpFKTsNCisNCisJaWYgKHJlc19zdGFydCA+PSBkaXJ0eS0+ZW5kIHx8IHJlc19lbmQgPD0gZGly dHktPnN0YXJ0KQ0KKwkJcmV0dXJuOw0KKw0KKwlyZXNfc3RhcnQgPSBtYXgocmVzX3N0YXJ0LCBk aXJ0eS0+c3RhcnQpOw0KKwlyZXNfZW5kID0gbWluKHJlc19lbmQsIGRpcnR5LT5lbmQpOw0KKwli aXRtYXBfY2xlYXIoJmRpcnR5LT5iaXRtYXBbMF0sIHJlc19zdGFydCwgcmVzX2VuZCAtIHJlc19z dGFydCk7DQorDQorCWlmIChyZXNfc3RhcnQgPD0gZGlydHktPnN0YXJ0ICYmIHJlc19lbmQgPiBk aXJ0eS0+c3RhcnQpDQorCQlkaXJ0eS0+c3RhcnQgPSByZXNfZW5kOw0KKwlpZiAocmVzX3N0YXJ0 IDwgZGlydHktPmVuZCAmJiByZXNfZW5kID49IGRpcnR5LT5lbmQpDQorCQlkaXJ0eS0+ZW5kID0g cmVzX3N0YXJ0Ow0KK30NCisNCit2bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2 bV9mYXVsdCAqdm1mKQ0KK3sNCisJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEgPSB2bWYtPnZt YTsNCisJc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9IChzdHJ1Y3QgdHRtX2J1ZmZlcl9v YmplY3QgKikNCisJICAgIHZtYS0+dm1fcHJpdmF0ZV9kYXRhOw0KKwl2bV9mYXVsdF90IHJldDsN CisJdW5zaWduZWQgbG9uZyBwYWdlX29mZnNldDsNCisJc3RydWN0IHZtd19idWZmZXJfb2JqZWN0 ICp2Ym8gPQ0KKwkJY29udGFpbmVyX29mKGJvLCB0eXBlb2YoKnZibyksIGJhc2UpOw0KKw0KKwly ZXQgPSB0dG1fYm9fdm1fcmVzZXJ2ZShibywgdm1mKTsNCisJaWYgKHJldCkNCisJCXJldHVybiBy ZXQ7DQorDQorCXBhZ2Vfb2Zmc2V0ID0gdm1mLT5wZ29mZiAtIGRybV92bWFfbm9kZV9zdGFydCgm Ym8tPnZtYV9ub2RlKTsNCisJaWYgKHVubGlrZWx5KHBhZ2Vfb2Zmc2V0ID49IGJvLT5udW1fcGFn ZXMpKSB7DQorCQlyZXQgPSBWTV9GQVVMVF9TSUdCVVM7DQorCQlnb3RvIG91dF91bmxvY2s7DQor CX0NCisNCisJaWYgKHZiby0+ZGlydHkgJiYgdmJvLT5kaXJ0eS0+bWV0aG9kID09IFZNV19CT19E SVJUWV9NS1dSSVRFICYmDQorCSAgICAhdGVzdF9iaXQocGFnZV9vZmZzZXQsICZ2Ym8tPmRpcnR5 LT5iaXRtYXBbMF0pKSB7DQorCQlzdHJ1Y3Qgdm13X2JvX2RpcnR5ICpkaXJ0eSA9IHZiby0+ZGly dHk7DQorDQorCQlfX3NldF9iaXQocGFnZV9vZmZzZXQsICZkaXJ0eS0+Yml0bWFwWzBdKTsNCisJ CWRpcnR5LT5zdGFydCA9IG1pbihkaXJ0eS0+c3RhcnQsIHBhZ2Vfb2Zmc2V0KTsNCisJCWRpcnR5 LT5lbmQgPSBtYXgoZGlydHktPmVuZCwgcGFnZV9vZmZzZXQgKyAxKTsNCisJfQ0KKw0KK291dF91 bmxvY2s6DQorCXJlc2VydmF0aW9uX29iamVjdF91bmxvY2soYm8tPnJlc3YpOw0KKwlyZXR1cm4g cmV0Ow0KK30NCisNCit2bV9mYXVsdF90IHZtd19ib192bV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQg KnZtZikNCit7DQorCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gdm1mLT52bWE7DQorCXN0 cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSAoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICop DQorCSAgICB2bWEtPnZtX3ByaXZhdGVfZGF0YTsNCisJc3RydWN0IHZtd19idWZmZXJfb2JqZWN0 ICp2Ym8gPQ0KKwkJY29udGFpbmVyX29mKGJvLCBzdHJ1Y3Qgdm13X2J1ZmZlcl9vYmplY3QsIGJh c2UpOw0KKwlwZ29mZl90IG51bV9wcmVmYXVsdDsNCisJcGdwcm90X3QgcHJvdDsNCisJdm1fZmF1 bHRfdCByZXQ7DQorDQorCXJldCA9IHR0bV9ib192bV9yZXNlcnZlKGJvLCB2bWYpOw0KKwlpZiAo cmV0KQ0KKwkJcmV0dXJuIHJldDsNCisNCisJLyoNCisJICogVGhpcyB3aWxsIGNhdXNlIG1rd3Jp dGUoKSB0byBiZSBjYWxsZWQgZm9yIGVhY2ggcHRlIG9uDQorCSAqIHdyaXRlLWVuYWJsZSB2bWFz Lg0KKwkgKi8NCisJaWYgKHZiby0+ZGlydHkgJiYgdmJvLT5kaXJ0eS0+bWV0aG9kID09IFZNV19C T19ESVJUWV9NS1dSSVRFKQ0KKwkJcHJvdCA9IHZtYS0+dm1fcGFnZV9wcm90Ow0KKwllbHNlDQor CQlwcm90ID0gdm1fZ2V0X3BhZ2VfcHJvdCh2bWEtPnZtX2ZsYWdzKTsNCisNCisJbnVtX3ByZWZh dWx0ID0gKHZtYS0+dm1fZmxhZ3MgJiBWTV9SQU5EX1JFQUQpID8gMCA6DQorCQlUVE1fQk9fVk1f TlVNX1BSRUZBVUxUOw0KKwlyZXQgPSB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWQodm1mLCBwcm90 LCBudW1fcHJlZmF1bHQpOw0KKwlpZiAocmV0ID09IFZNX0ZBVUxUX1JFVFJZICYmICEodm1mLT5m bGFncyAmIEZBVUxUX0ZMQUdfUkVUUllfTk9XQUlUKSkNCisJCXJldHVybiByZXQ7DQorDQorCXJl c2VydmF0aW9uX29iamVjdF91bmxvY2soYm8tPnJlc3YpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9yZXNvdXJjZS5jIGIvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcmVzb3VyY2UuYw0KaW5kZXggODg5ODFjNGRiYWUz Li5kMzVmNGJkMzJjZDkgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9yZXNvdXJjZS5jDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9yZXNvdXJj ZS5jDQpAQCAtMTIxLDYgKzEyMSwxMCBAQCBzdGF0aWMgdm9pZCB2bXdfcmVzb3VyY2VfcmVsZWFz ZShzdHJ1Y3Qga3JlZiAqa3JlZikNCiAJCX0NCiAJCXJlcy0+YmFja3VwX2RpcnR5ID0gZmFsc2U7 DQogCQl2bXdfcmVzb3VyY2VfbW9iX2RldGFjaChyZXMpOw0KKwkJaWYgKHJlcy0+ZGlydHkpDQor CQkJcmVzLT5mdW5jLT5kaXJ0eV9mcmVlKHJlcyk7DQorCQlpZiAocmVzLT5jb2hlcmVudCkNCisJ CQl2bXdfYm9fZGlydHlfcmVsZWFzZShyZXMtPmJhY2t1cCk7DQogCQl0dG1fYm9fdW5yZXNlcnZl KGJvKTsNCiAJCXZtd19ib191bnJlZmVyZW5jZSgmcmVzLT5iYWNrdXApOw0KIAl9DQpAQCAtMjEw LDcgKzIxNCw5IEBAIGludCB2bXdfcmVzb3VyY2VfaW5pdChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRl dl9wcml2LCBzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMsDQogCXJlcy0+YmFja3VwX29mZnNldCA9 IDA7DQogCXJlcy0+YmFja3VwX2RpcnR5ID0gZmFsc2U7DQogCXJlcy0+cmVzX2RpcnR5ID0gZmFs c2U7DQorCXJlcy0+Y29oZXJlbnQgPSBmYWxzZTsNCiAJcmVzLT51c2VkX3ByaW8gPSAzOw0KKwly ZXMtPmRpcnR5ID0gTlVMTDsNCiAJaWYgKGRlbGF5X2lkKQ0KIAkJcmV0dXJuIDA7DQogCWVsc2UN CkBAIC0zOTcsNiArNDAzLDMwIEBAIHN0YXRpYyBpbnQgdm13X3Jlc291cmNlX2RvX3ZhbGlkYXRl KHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcywNCiAJCQl2bXdfcmVzb3VyY2VfbW9iX2F0dGFjaChy ZXMpOw0KIAl9DQogDQorCS8qDQorCSAqIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgYmFja3Vw IG1vYiBpcyBtYXJrZWQgY29oZXJlbnQgYnV0DQorCSAqIHRoZSByZXNvdXJjZSBpc24ndC4NCisJ ICovDQorCWlmIChmdW5jLT5kaXJ0eV9hbGxvYyAmJiB2bXdfcmVzb3VyY2VfbW9iX2F0dGFjaGVk KHJlcykgJiYNCisJICAgICFyZXMtPmNvaGVyZW50KSB7DQorCQlpZiAocmVzLT5iYWNrdXAtPmRp cnR5ICYmICFyZXMtPmRpcnR5KSB7DQorCQkJcmV0ID0gZnVuYy0+ZGlydHlfYWxsb2MocmVzKTsN CisJCQlpZiAocmV0KQ0KKwkJCQlyZXR1cm4gcmV0Ow0KKwkJfSBlbHNlIGlmICghcmVzLT5iYWNr dXAtPmRpcnR5ICYmIHJlcy0+ZGlydHkpIHsNCisJCQlmdW5jLT5kaXJ0eV9mcmVlKHJlcyk7DQor CQl9DQorCX0NCisNCisJLyoNCisJICogVHJhbnNmZXIgdGhlIGRpcnR5IHJlZ2lvbnMgdG8gdGhl IHJlc291cmNlIGFuZCB1cGRhdGUNCisJICogdGhlIHJlc291cmNlLg0KKwkgKi8NCisJaWYgKHJl cy0+ZGlydHkpIHsNCisJCXZtd19ib19kaXJ0eV90cmFuc2Zlcl90b19yZXMocmVzKTsNCisJCXJl dHVybiBmdW5jLT5kaXJ0eV9zeW5jKHJlcyk7DQorCX0NCisNCiAJcmV0dXJuIDA7DQogDQogb3V0 X2JpbmRfZmFpbGVkOg0KQEAgLTQzNSwxNiArNDY1LDI4IEBAIHZvaWQgdm13X3Jlc291cmNlX3Vu cmVzZXJ2ZShzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMsDQogCWlmIChzd2l0Y2hfYmFja3VwICYm IG5ld19iYWNrdXAgIT0gcmVzLT5iYWNrdXApIHsNCiAJCWlmIChyZXMtPmJhY2t1cCkgew0KIAkJ CXZtd19yZXNvdXJjZV9tb2JfZGV0YWNoKHJlcyk7DQorCQkJaWYgKHJlcy0+Y29oZXJlbnQpDQor CQkJCXZtd19ib19kaXJ0eV9yZWxlYXNlKHJlcy0+YmFja3VwKTsNCiAJCQl2bXdfYm9fdW5yZWZl cmVuY2UoJnJlcy0+YmFja3VwKTsNCiAJCX0NCiANCiAJCWlmIChuZXdfYmFja3VwKSB7DQogCQkJ cmVzLT5iYWNrdXAgPSB2bXdfYm9fcmVmZXJlbmNlKG5ld19iYWNrdXApOw0KKw0KKwkJCS8qDQor CQkJICogVGhlIHZhbGlkYXRpb24gY29kZSBzaG91bGQgYWxyZWFkeSBoYXZlIGFkZGVkIGENCisJ CQkgKiBkaXJ0eSB0cmFja2VyIGhlcmUuDQorCQkJICovDQorCQkJV0FSTl9PTihyZXMtPmNvaGVy ZW50ICYmICFuZXdfYmFja3VwLT5kaXJ0eSk7DQorDQogCQkJdm13X3Jlc291cmNlX21vYl9hdHRh Y2gocmVzKTsNCiAJCX0gZWxzZSB7DQogCQkJcmVzLT5iYWNrdXAgPSBOVUxMOw0KIAkJfQ0KKwl9 IGVsc2UgaWYgKHN3aXRjaF9iYWNrdXAgJiYgcmVzLT5jb2hlcmVudCkgew0KKwkJdm13X2JvX2Rp cnR5X3JlbGVhc2UocmVzLT5iYWNrdXApOw0KIAl9DQorDQogCWlmIChzd2l0Y2hfYmFja3VwKQ0K IAkJcmVzLT5iYWNrdXBfb2Zmc2V0ID0gbmV3X2JhY2t1cF9vZmZzZXQ7DQogDQpAQCAtMTAwOSwz ICsxMDUxLDE4IEBAIGVudW0gdm13X3Jlc190eXBlIHZtd19yZXNfdHlwZShjb25zdCBzdHJ1Y3Qg dm13X3Jlc291cmNlICpyZXMpDQogew0KIAlyZXR1cm4gcmVzLT5mdW5jLT5yZXNfdHlwZTsNCiB9 DQorDQorLyoqDQorICogdm13X3Jlc291cmNlX3VwZGF0ZV9kaXJ0eSAtIFVwZGF0ZSBhIHJlc291 cmNlJ3MgZGlydHkgdHJhY2tlciB3aXRoIGENCisgKiBzZXF1ZW50aWFsIHJhbmdlIG9mIHRvdWNo ZWQgYmFja2luZyBzdG9yZSBtZW1vcnkuDQorICogQHJlczogVGhlIHJlc291cmNlLg0KKyAqIEBz dGFydDogVGhlIGZpcnN0IHBhZ2UgdG91Y2hlZC4NCisgKiBAZW5kOiBUaGUgbGFzdCBwYWdlIHRv dWNoZWQgKyAxLg0KKyAqLw0KK3ZvaWQgdm13X3Jlc291cmNlX2RpcnR5X3VwZGF0ZShzdHJ1Y3Qg dm13X3Jlc291cmNlICpyZXMsIHBnb2ZmX3Qgc3RhcnQsDQorCQkJICAgICAgIHBnb2ZmX3QgZW5k KQ0KK3sNCisJaWYgKHJlcy0+ZGlydHkpDQorCQlyZXMtPmZ1bmMtPmRpcnR5X3JhbmdlX2FkZChy ZXMsIHN0YXJ0IDw8IFBBR0VfU0hJRlQsDQorCQkJCQkgICBlbmQgPDwgUEFHRV9TSElGVCk7DQor fQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Jlc291cmNlX3By aXYuaCBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Jlc291cmNlX3ByaXYuaA0KaW5k ZXggOTg0ZTU4OGM2MmNhLi5jODUxNDQyODZjZmUgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9yZXNvdXJjZV9wcml2LmgNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92 bXdnZngvdm13Z2Z4X3Jlc291cmNlX3ByaXYuaA0KQEAgLTcxLDYgKzcxLDEyIEBAIHN0cnVjdCB2 bXdfdXNlcl9yZXNvdXJjZV9jb252IHsNCiAgKiBAY29tbWl0X25vdGlmeTogICAgIElmIHRoZSBy ZXNvdXJjZSBpcyBhIGNvbW1hbmQgYnVmZmVyIG1hbmFnZWQgcmVzb3VyY2UsDQogICogICAgICAg ICAgICAgICAgICAgICBjYWxsYmFjayB0byBub3RpZnkgdGhhdCBhIGRlZmluZSBvciByZW1vdmUg Y29tbWFuZA0KICAqICAgICAgICAgICAgICAgICAgICAgaGFzIGJlZW4gY29tbWl0dGVkIHRvIHRo ZSBkZXZpY2UuDQorICogQGRpcnR5X2FsbG9jOiAgICAgICBBbGxvY2F0ZSBhIGRpcnR5IHRyYWNr ZXIuIE5VTEwgaWYgZGlydHktdHJhY2tpbmcgaXMgbm90DQorICogICAgICAgICAgICAgICAgICAg ICBzdXBwb3J0ZWQuDQorICogQGRpcnR5X2ZyZWU6ICAgICAgICBGcmVlIHRoZSBkaXJ0eSB0cmFj a2VyLg0KKyAqIEBkaXJ0eV9zeW5jOiAgICAgICAgVXBsb2FkIHRoZSBkaXJ0eSBtb2IgY29udGVu dHMgdG8gdGhlIHJlc291cmNlLg0KKyAqIEBkaXJ0eV9hZGRfcmFuZ2U6ICAgQWRkIGEgc2VxdWVu dGlhbCBkaXJ0eSByYW5nZSB0byB0aGUgcmVzb3VyY2UNCisgKiAgICAgICAgICAgICAgICAgICAg IGRpcnR5IHRyYWNrZXIuDQogICovDQogc3RydWN0IHZtd19yZXNfZnVuYyB7DQogCWVudW0gdm13 X3Jlc190eXBlIHJlc190eXBlOw0KQEAgLTkwLDYgKzk2LDExIEBAIHN0cnVjdCB2bXdfcmVzX2Z1 bmMgew0KIAkJICAgICAgIHN0cnVjdCB0dG1fdmFsaWRhdGVfYnVmZmVyICp2YWxfYnVmKTsNCiAJ dm9pZCAoKmNvbW1pdF9ub3RpZnkpKHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcywNCiAJCQkgICAg ICBlbnVtIHZtd19jbWRidWZfcmVzX3N0YXRlIHN0YXRlKTsNCisJaW50ICgqZGlydHlfYWxsb2Mp KHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcyk7DQorCXZvaWQgKCpkaXJ0eV9mcmVlKShzdHJ1Y3Qg dm13X3Jlc291cmNlICpyZXMpOw0KKwlpbnQgKCpkaXJ0eV9zeW5jKShzdHJ1Y3Qgdm13X3Jlc291 cmNlICpyZXMpOw0KKwl2b2lkICgqZGlydHlfcmFuZ2VfYWRkKShzdHJ1Y3Qgdm13X3Jlc291cmNl ICpyZXMsIHNpemVfdCBzdGFydCwNCisJCQkJIHNpemVfdCBlbmQpOw0KIH07DQogDQogLyoqDQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfdmFsaWRhdGlvbi5jIGIv ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfdmFsaWRhdGlvbi5jDQppbmRleCBmNjExYjIy OTBhMWIuLjcxMzQ5YTdiYWU5MCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngv dm13Z2Z4X3ZhbGlkYXRpb24uYw0KKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf dmFsaWRhdGlvbi5jDQpAQCAtMzMsNiArMzMsOCBAQA0KICAqIHN0cnVjdCB2bXdfdmFsaWRhdGlv bl9ib19ub2RlIC0gQnVmZmVyIG9iamVjdCB2YWxpZGF0aW9uIG1ldGFkYXRhLg0KICAqIEBiYXNl OiBNZXRhZGF0YSB1c2VkIGZvciBUVE0gcmVzZXJ2YXRpb24tIGFuZCB2YWxpZGF0aW9uLg0KICAq IEBoYXNoOiBBIGhhc2ggZW50cnkgdXNlZCBmb3IgdGhlIGR1cGxpY2F0ZSBkZXRlY3Rpb24gaGFz aCB0YWJsZS4NCisgKiBAY29oZXJlbnRfY291bnQ6IElmIHN3aXRjaGluZyBiYWNrdXAgYnVmZmVy cywgbnVtYmVyIG9mIG5ldyBjb2hlcmVudA0KKyAqIHJlc291cmNlcyB0aGF0IHdpbGwgaGF2ZSB0 aGlzIGJ1ZmZlciBhcyBhIGJhY2t1cCBidWZmZXIuDQogICogQGFzX21vYjogVmFsaWRhdGUgYXMg bW9iLg0KICAqIEBjcHVfYmxpdDogVmFsaWRhdGUgZm9yIGNwdSBibGl0IGFjY2Vzcy4NCiAgKg0K QEAgLTQyLDYgKzQ0LDcgQEANCiBzdHJ1Y3Qgdm13X3ZhbGlkYXRpb25fYm9fbm9kZSB7DQogCXN0 cnVjdCB0dG1fdmFsaWRhdGVfYnVmZmVyIGJhc2U7DQogCXN0cnVjdCBkcm1faGFzaF9pdGVtIGhh c2g7DQorCXVuc2lnbmVkIGludCBjb2hlcmVudF9jb3VudDsNCiAJdTMyIGFzX21vYiA6IDE7DQog CXUzMiBjcHVfYmxpdCA6IDE7DQogfTsNCkBAIC00NTksNiArNDYyLDE5IEBAIGludCB2bXdfdmFs aWRhdGlvbl9yZXNfcmVzZXJ2ZShzdHJ1Y3Qgdm13X3ZhbGlkYXRpb25fY29udGV4dCAqY3R4LA0K IAkJCWlmIChyZXQpDQogCQkJCWdvdG8gb3V0X3VucmVzZXJ2ZTsNCiAJCX0NCisNCisJCWlmICh2 YWwtPnN3aXRjaGluZ19iYWNrdXAgJiYgdmFsLT5uZXdfYmFja3VwICYmDQorCQkgICAgcmVzLT5j b2hlcmVudCkgew0KKwkJCXN0cnVjdCB2bXdfdmFsaWRhdGlvbl9ib19ub2RlICpib19ub2RlID0N CisJCQkJdm13X3ZhbGlkYXRpb25fZmluZF9ib19kdXAoY3R4LA0KKwkJCQkJCQkgICB2YWwtPm5l d19iYWNrdXApOw0KKw0KKwkJCWlmIChXQVJOX09OKCFib19ub2RlKSkgew0KKwkJCQlyZXQgPSAt RUlOVkFMOw0KKwkJCQlnb3RvIG91dF91bnJlc2VydmU7DQorCQkJfQ0KKwkJCWJvX25vZGUtPmNv aGVyZW50X2NvdW50Kys7DQorCQl9DQogCX0NCiANCiAJcmV0dXJuIDA7DQpAQCAtNTYyLDYgKzU3 OCw5IEBAIGludCB2bXdfdmFsaWRhdGlvbl9ib192YWxpZGF0ZShzdHJ1Y3Qgdm13X3ZhbGlkYXRp b25fY29udGV4dCAqY3R4LCBib29sIGludHIpDQogCWludCByZXQ7DQogDQogCWxpc3RfZm9yX2Vh Y2hfZW50cnkoZW50cnksICZjdHgtPmJvX2xpc3QsIGJhc2UuaGVhZCkgew0KKwkJc3RydWN0IHZt d19idWZmZXJfb2JqZWN0ICp2Ym8gPQ0KKwkJCWNvbnRhaW5lcl9vZihlbnRyeS0+YmFzZS5ibywg dHlwZW9mKCp2Ym8pLCBiYXNlKTsNCisNCiAJCWlmIChlbnRyeS0+Y3B1X2JsaXQpIHsNCiAJCQlz dHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0gew0KIAkJCQkuaW50ZXJydXB0aWJsZSA9IGlu dHIsDQpAQCAtNTc2LDYgKzU5NSwyNyBAQCBpbnQgdm13X3ZhbGlkYXRpb25fYm9fdmFsaWRhdGUo c3RydWN0IHZtd192YWxpZGF0aW9uX2NvbnRleHQgKmN0eCwgYm9vbCBpbnRyKQ0KIAkJfQ0KIAkJ aWYgKHJldCkNCiAJCQlyZXR1cm4gcmV0Ow0KKw0KKwkJLyoNCisJCSAqIFJhdGhlciB0aGFuIGhh dmluZyB0aGUgcmVzb3VyY2UgY29kZSBhbGxvY2F0aW5nIHRoZSBibw0KKwkJICogZGlydHkgdHJh Y2tlciBpbiByZXNvdXJjZV91bnJlc2VydmUoKSB3aGVyZSB3ZSBjYW4ndCBmYWlsLA0KKwkJICog RG8gaXQgaGVyZSB3aGVuIHZhbGlkYXRpbmcgdGhlIGJ1ZmZlciBvYmplY3QuDQorCQkgKi8NCisJ CWlmIChlbnRyeS0+Y29oZXJlbnRfY291bnQpIHsNCisJCQl1bnNpZ25lZCBpbnQgY29oZXJlbnRf Y291bnQgPSBlbnRyeS0+Y29oZXJlbnRfY291bnQ7DQorDQorCQkJd2hpbGUgKGNvaGVyZW50X2Nv dW50KSB7DQorCQkJCXJldCA9IHZtd19ib19kaXJ0eV9hZGQodmJvKTsNCisJCQkJaWYgKHJldCkN CisJCQkJCXJldHVybiByZXQ7DQorDQorCQkJCWNvaGVyZW50X2NvdW50LS07DQorCQkJfQ0KKwkJ CWVudHJ5LT5jb2hlcmVudF9jb3VudCAtPSBjb2hlcmVudF9jb3VudDsNCisJCX0NCisNCisJCWlm ICh2Ym8tPmRpcnR5KQ0KKwkJCXZtd19ib19kaXJ0eV9zY2FuKHZibyk7DQogCX0NCiAJcmV0dXJu IDA7DQogfQ0KQEAgLTgyOCwzICs4NjgsMzQgQEAgaW50IHZtd192YWxpZGF0aW9uX3ByZWxvYWRf cmVzKHN0cnVjdCB2bXdfdmFsaWRhdGlvbl9jb250ZXh0ICpjdHgsDQogCWN0eC0+bWVtX3NpemVf bGVmdCArPSBzaXplOw0KIAlyZXR1cm4gMDsNCiB9DQorDQorLyoqDQorICogdm13X3ZhbGlkYXRp b25fYm9fYmFja29mZiAtIFVucmVzZXJ2ZSBidWZmZXIgb2JqZWN0cyByZWdpc3RlcmVkIHdpdGgg YQ0KKyAqIHZhbGlkYXRpb24gY29udGV4dA0KKyAqIEBjdHg6IFRoZSB2YWxpZGF0aW9uIGNvbnRl eHQNCisgKg0KKyAqIFRoaXMgZnVuY3Rpb24gdW5yZXNlcnZlcyB0aGUgYnVmZmVyIG9iamVjdHMg cHJldmlvdXNseSByZXNlcnZlZCB1c2luZw0KKyAqIHZtd192YWxpZGF0aW9uX2JvX3Jlc2VydmUu IEl0J3MgdHlwaWNhbGx5IHVzZWQgYXMgcGFydCBvZiBhbiBlcnJvciBwYXRoDQorICovDQordm9p ZCB2bXdfdmFsaWRhdGlvbl9ib19iYWNrb2ZmKHN0cnVjdCB2bXdfdmFsaWRhdGlvbl9jb250ZXh0 ICpjdHgpDQorew0KKwlzdHJ1Y3Qgdm13X3ZhbGlkYXRpb25fYm9fbm9kZSAqZW50cnk7DQorDQor CS8qDQorCSAqIFN3aXRjaGluZyBjb2hlcmVudCByZXNvdXJjZSBiYWNrdXAgYnVmZmVycyBmYWls ZWQuDQorCSAqIFJlbGVhc2UgY29ycmVzcG9uZGluZyBidWZmZXIgb2JqZWN0IGRpcnR5IHRyYWNr ZXJzLg0KKwkgKi8NCisJbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgJmN0eC0+Ym9fbGlzdCwg YmFzZS5oZWFkKSB7DQorCQlpZiAoZW50cnktPmNvaGVyZW50X2NvdW50KSB7DQorCQkJdW5zaWdu ZWQgaW50IGNvaGVyZW50X2NvdW50ID0gZW50cnktPmNvaGVyZW50X2NvdW50Ow0KKwkJCXN0cnVj dCB2bXdfYnVmZmVyX29iamVjdCAqdmJvID0NCisJCQkJY29udGFpbmVyX29mKGVudHJ5LT5iYXNl LmJvLCB0eXBlb2YoKnZibyksDQorCQkJCQkgICAgIGJhc2UpOw0KKw0KKwkJCXdoaWxlIChjb2hl cmVudF9jb3VudC0tKQ0KKwkJCQl2bXdfYm9fZGlydHlfcmVsZWFzZSh2Ym8pOw0KKwkJfQ0KKwl9 DQorDQorCXR0bV9ldV9iYWNrb2ZmX3Jlc2VydmF0aW9uKCZjdHgtPnRpY2tldCwgJmN0eC0+Ym9f bGlzdCk7DQorfQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Zh bGlkYXRpb24uaCBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3ZhbGlkYXRpb24uaA0K aW5kZXggNTIzZjZhYzVjMzM1Li4wNThjN2YyZmJmODMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF92YWxpZGF0aW9uLmgNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92 bXdnZngvdm13Z2Z4X3ZhbGlkYXRpb24uaA0KQEAgLTE3MiwyMCArMTcyLDYgQEAgdm13X3ZhbGlk YXRpb25fYm9fcmVzZXJ2ZShzdHJ1Y3Qgdm13X3ZhbGlkYXRpb25fY29udGV4dCAqY3R4LA0KIAkJ CQkgICAgICBOVUxMKTsNCiB9DQogDQotLyoqDQotICogdm13X3ZhbGlkYXRpb25fYm9fYmFja29m ZiAtIFVucmVzZXJ2ZSBidWZmZXIgb2JqZWN0cyByZWdpc3RlcmVkIHdpdGggYQ0KLSAqIHZhbGlk YXRpb24gY29udGV4dA0KLSAqIEBjdHg6IFRoZSB2YWxpZGF0aW9uIGNvbnRleHQNCi0gKg0KLSAq IFRoaXMgZnVuY3Rpb24gdW5yZXNlcnZlcyB0aGUgYnVmZmVyIG9iamVjdHMgcHJldmlvdXNseSBy ZXNlcnZlZCB1c2luZw0KLSAqIHZtd192YWxpZGF0aW9uX2JvX3Jlc2VydmUuIEl0J3MgdHlwaWNh bGx5IHVzZWQgYXMgcGFydCBvZiBhbiBlcnJvciBwYXRoDQotICovDQotc3RhdGljIGlubGluZSB2 b2lkDQotdm13X3ZhbGlkYXRpb25fYm9fYmFja29mZihzdHJ1Y3Qgdm13X3ZhbGlkYXRpb25fY29u dGV4dCAqY3R4KQ0KLXsNCi0JdHRtX2V1X2JhY2tvZmZfcmVzZXJ2YXRpb24oJmN0eC0+dGlja2V0 LCAmY3R4LT5ib19saXN0KTsNCi19DQotDQogLyoqDQogICogdm13X3ZhbGlkYXRpb25fYm9fZmVu Y2UgLSBVbnJlc2VydmUgYW5kIGZlbmNlIGJ1ZmZlciBvYmplY3RzIHJlZ2lzdGVyZWQNCiAgKiB3 aXRoIGEgdmFsaWRhdGlvbiBjb250ZXh0DQpAQCAtMjY4LDQgKzI1NCw2IEBAIGludCB2bXdfdmFs aWRhdGlvbl9wcmVsb2FkX3JlcyhzdHJ1Y3Qgdm13X3ZhbGlkYXRpb25fY29udGV4dCAqY3R4LA0K IAkJCSAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZSk7DQogdm9pZCB2bXdfdmFsaWRhdGlvbl9yZXNf c2V0X2RpcnR5KHN0cnVjdCB2bXdfdmFsaWRhdGlvbl9jb250ZXh0ICpjdHgsDQogCQkJCSAgdm9p ZCAqdmFsX3ByaXZhdGUsIHUzMiBkaXJ0eSk7DQordm9pZCB2bXdfdmFsaWRhdGlvbl9ib19iYWNr b2ZmKHN0cnVjdCB2bXdfdmFsaWRhdGlvbl9jb250ZXh0ICpjdHgpOw0KKw0KICNlbmRpZg0KLS0g DQoyLjIwLjENCg0K