Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp9293801imu; Wed, 5 Dec 2018 02:20:57 -0800 (PST) X-Google-Smtp-Source: AFSGD/VxsW5tKJzomzfARPplRfCoUL6quKjYzdtnkLFAOkNPtWrOKHMTL9H61n8Rqcfam5Nr+rlN X-Received: by 2002:a17:902:70c6:: with SMTP id l6mr24254185plt.30.1544005257100; Wed, 05 Dec 2018 02:20:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544005257; cv=none; d=google.com; s=arc-20160816; b=HBoghO8TmNJyhfKYyFZAOvEOTPoLJbaxs8xAxORLjuNlvm/AC65/FTOCFh+fRh3eA2 j2XuFggkzhCgraA4ikqPzvZSC9p44oDmYY1Px4SgV2VzbE1+0OUTtkCXcpjsCpQyEY1K CAgHpPwsCtcUmtAL3yExrCe+sG9PxqHo7MGuzYbGeF15OIO24uef1gsoD6t8UWDIrpwt dIaorGcLdwlMeChy7bV2N55fNzviEm9tfmQy6S0Jrx/eFgclpJIZEy1kAkYqO5WX9CKK 6mceTQJu1XAVbu9vBVa9t7KZ4I8jtqRwY5YP3lxP+t91VNOYTCN/TVc/HbyQpEzvYEcY mTaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:spamdiagnosticmetadata:spamdiagnosticoutput:nodisclaimer :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=el8kbBd9ZDkVX4v5SvvvDPDHebwR0kC1Bn86I4IVf/0=; b=vF1TUGQsPx85u1YCbLZ3JIxfWgBZLxWjYQmiBH4JqTd7UkjzHEZ+rQ2Bo310nX5U+S TZkSGpVmNtCaIwDffRp6gvK1Et5H29K6GhW2IK3QH/OZauyBN7sGJi6oKpXXdiJJfTRR m11u+Ngd94ENs2KaUUO1TZM4maeQWPUxw+o/1ESBqg0wEOz6j1ja3T5XQQDydZdJwOYQ o2nPv2PTfxz1sNMnj7TUZf+k604zCp8dz35NEj+y7gn8oBza/Bi+//PmUC6Hi9ZbQK7k oXyKFA5sLdVpWhXYq6Kg1Nsydu9oy+fc7mLxUxeJB/kw2vf8oi55OhUym6d6ohqgBbUZ v0+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector1-arm-com header.b=amsYMDn0; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m65si20683490pfg.282.2018.12.05.02.20.41; Wed, 05 Dec 2018 02:20:57 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector1-arm-com header.b=amsYMDn0; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727640AbeLEKSp (ORCPT + 99 others); Wed, 5 Dec 2018 05:18:45 -0500 Received: from mail-eopbgr10088.outbound.protection.outlook.com ([40.107.1.88]:2624 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726944AbeLEKSn (ORCPT ); Wed, 5 Dec 2018 05:18:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=el8kbBd9ZDkVX4v5SvvvDPDHebwR0kC1Bn86I4IVf/0=; b=amsYMDn04UdQAfY9dSvmbTj70nWIcm8RBnQ0Hj7AO9KFbMiLGDEwpFKw+MoU9alHz76QRIZjaZYm3yfVy+3hlZYrJ4uq7X2yqcJRvzQUjquS2LRIFk51eJWgPjgv49WkMxwTfyj4jekCw6BvlGnBnAyh7bz8+/q9+jsvW1bI2oM= Received: from AM3PR08MB0611.eurprd08.prod.outlook.com (10.163.188.149) by AM3PR08MB0580.eurprd08.prod.outlook.com (10.163.188.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.17; Wed, 5 Dec 2018 10:18:29 +0000 Received: from AM3PR08MB0611.eurprd08.prod.outlook.com ([fe80::38d5:d5ee:b90c:901c]) by AM3PR08MB0611.eurprd08.prod.outlook.com ([fe80::38d5:d5ee:b90c:901c%4]) with mapi id 15.20.1382.023; Wed, 5 Dec 2018 10:18:29 +0000 From: "james qian wang (Arm Technology China)" To: Liviu Dudau CC: "Jonathan Chai (Arm Technology China)" , Brian Starkey , "Julien Yin (Arm Technology China)" , "thomas Sun (Arm Technology China)" , Alexandru-Cosmin Gheorghe , "Lowry Li (Arm Technology China)" , nd , Ayan Halder , "Tiannan Zhu (Arm Technology China)" , "Jin Gao (Arm Technology China)" , "Yiqi Kang (Arm Technology China)" , "maarten.lankhorst@linux.intel.com" , "maxime.ripard@bootlin.com" , "sean@poorly.run" , "airlied@linux.ie" , Liviu Dudau , "malidp@foss.arm.com" , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "james qian wang (Arm Technology China)" Subject: [PATCH v1 1/9] drm/komeda: komeda_dev/pipeline/component definition and initialzation Thread-Topic: [PATCH v1 1/9] drm/komeda: komeda_dev/pipeline/component definition and initialzation Thread-Index: AQHUjIPd9Q/WVlfzLE6rHyLtqPVXGA== Date: Wed, 5 Dec 2018 10:18:28 +0000 Message-ID: <20181205101635.7696-2-james.qian.wang@arm.com> References: <20181205101635.7696-1-james.qian.wang@arm.com> In-Reply-To: <20181205101635.7696-1-james.qian.wang@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [113.29.88.7] x-clientproxiedby: SYCPR01CA0014.ausprd01.prod.outlook.com (2603:10c6:10:31::26) To AM3PR08MB0611.eurprd08.prod.outlook.com (2a01:111:e400:c408::21) authentication-results: spf=none (sender IP is ) smtp.mailfrom=james.qian.wang@arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;AM3PR08MB0580;6:ntSCvFGUVZravWNpqdKL2t4V0VjEtlnnuTvukHTWqPTJQ8skyTEOWHF0JSOUUfRYZratcDl19LiMhyJQ41ilgxqsK7D4suCyBhyatqbFy76GMdwWo5WwbGNDENUEp7rzQXHU6REy/Eprn/trXcLBAaRjVWVVKKHXsCBlzfVI6GyMgAByk1ieNPAWfeMWbgr2+BbaXg+vCBAEiqswgO0NHaKEpRfGif8Smpiv/Weg1mHt8tHewX9zKx+pbVi4n9mtgdCmqVuwV7qIncjcZrPe7MkwU8IM01wDy9e9X8P/O+/VQ1dghK+qx/Z16Ix55binNdWBamKsq1Kr28QHdxhFK7v5JwX/p1iKwluDJBkn0UXoT88EqT9/e2v1YhsEWWGb6RDwuD9JZoxoPPA7VRJIRnL3BcMXxzNJa7ITQXlcKsS+vFU33q7yxcC4Q45qThf2GWEIrRmPqfi7GlQ2rOX1+Q==;5:Qy0YSA+hkXBaNv8SG0CziVu5Fg9MKC4cwfxOIE0yBagKNkCQFy3aAsv1gQE1rNQBH+XI3Vk8462RZGBn3DtJCHKDGWARRz2o76RxtamBwyffRY/G3sP0VahAWjj3J7H24pRFrKdw5hqvAedpDWEhhd8Qeri/W8VjMJXWJPYXY8k=;7:ISOthrIGTfbEOc4gvgc8ZUQ9kLkuUVflktbsB01sIJ0EmPb4sX8BFehazSW8CE1Fix+l/Sno6rDI51Wh7Xp3A9TD6Ep7B+PQyqsLlTAsLyUuqzDgyDb+Avwzd3gPaarZSIGo938T0yoql7bvf+GkBw== x-ms-office365-filtering-correlation-id: d636e207-b139-4475-9ea3-08d65a9affa5 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020);SRVR:AM3PR08MB0580; x-ms-traffictypediagnostic: AM3PR08MB0580: nodisclaimer: True x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(3231455)(999002)(944501520)(52105112)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(201708071742011)(7699051)(76991095);SRVR:AM3PR08MB0580;BCL:0;PCL:0;RULEID:;SRVR:AM3PR08MB0580; x-forefront-prvs: 08770259B4 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(136003)(39860400002)(346002)(396003)(376002)(199004)(189003)(446003)(71190400001)(25786009)(4326008)(486006)(71200400001)(3846002)(478600001)(6116002)(186003)(256004)(102836004)(55236004)(14454004)(6862004)(86362001)(97736004)(4744004)(26005)(14444005)(105586002)(103116003)(53946003)(37006003)(53936002)(106356001)(36756003)(476003)(2906002)(386003)(7736002)(6506007)(305945005)(6436002)(8676002)(68736007)(2616005)(6636002)(6512007)(8936002)(6486002)(76176011)(1076002)(81156014)(52116002)(11346002)(99286004)(66066001)(316002)(81166006)(54906003)(5660300001)(21314003)(579004)(559001);DIR:OUT;SFP:1101;SCL:1;SRVR:AM3PR08MB0580;H:AM3PR08MB0611.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: P3OwwYKcK44EFQcn12yCDUBt0sQD0lZubNAh82+M/4DWWG4pY7KgoKQJbMJnsD6eg2Mtm00BA7fPky9iko0p899QneMO/523bo169hDm1sDuG1FXP+i9A6yOlVwvZlPigM6iHndxD7+xoC5ckumEocyZ7bIoF75uUc27J/yVnmyx0sAMQmMGMQJk0Kkqa/oihco0wOtX3RoU9+6Y9UMz3tMR0eE/Agd1uqVh8nN5YIhcBejdg+KsEkwT8pL88NOI4KVV1z/u4BQemKDMY8NSFVbExXJjvzU9WBxrgUBTFvphSo9U/pNDEN/Yqk+UNJfY1Ep/v1TtZP/RZkEgGJQEctaOQkIVqW28Iwldigc+yTE= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: d636e207-b139-4475-9ea3-08d65a9affa5 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Dec 2018 10:18:28.9178 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR08MB0580 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org MS4gQWRkZWQgYSBicmllZiBkZWZpbml0aW9uIG9mIGtvbWVkYV9kZXYvcGlwZWxpbmUvY29tcG9u ZW50LCB0aGlzIGNoYW5nZQ0KICAgZGlkbid0IGFkZCB0aGUgZGV0YWlsZWQgY29tcG9uZW50IGZl YXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMsIHdoaWNoIHdpbGwNCiAgIGJlIGFkZGVkIGluIHRoZSBm b2xsb3dpbmcgY2hhbmdlcy4NCjIuIENvcnJlc3BvbmRpbmcgcmVzb3VyY2VzIGRpc2NvdmVyeSBh bmQgaW5pdGlhbHphdGlvbiBmdW5jdGlvbnMuDQoNClNpZ25lZC1vZmYtYnk6IEphbWVzIChRaWFu KSBXYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4NCi0tLQ0KIGRyaXZlcnMvZ3B1L2RybS9h cm0vS2NvbmZpZyAgICAgICAgICAgICAgICAgICB8ICAgMiArDQogZHJpdmVycy9ncHUvZHJtL2Fy bS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICAxICsNCiBkcml2ZXJzL2dwdS9kcm0vYXJt L2Rpc3BsYXkvS2J1aWxkICAgICAgICAgICAgfCAgIDMgKw0KIGRyaXZlcnMvZ3B1L2RybS9hcm0v ZGlzcGxheS9LY29uZmlnICAgICAgICAgICB8ICAxNCArDQogLi4uL2RybS9hcm0vZGlzcGxheS9p bmNsdWRlL21hbGlkcF9wcm9kdWN0LmggIHwgIDIzICsrDQogLi4uL2RybS9hcm0vZGlzcGxheS9p bmNsdWRlL21hbGlkcF91dGlscy5oICAgIHwgIDE2ICsNCiBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rp c3BsYXkva29tZWRhL01ha2VmaWxlICAgfCAgMTEgKw0KIC4uLi9ncHUvZHJtL2FybS9kaXNwbGF5 L2tvbWVkYS9rb21lZGFfZGV2LmMgICB8IDExNyArKysrKysNCiAuLi4vZ3B1L2RybS9hcm0vZGlz cGxheS9rb21lZGEva29tZWRhX2Rldi5oICAgfCAgOTkgKysrKysNCiAuLi4vZHJtL2FybS9kaXNw bGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUuYyAgfCAxOTggKysrKysrKysrKw0KIC4uLi9kcm0v YXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oICB8IDM0NSArKysrKysrKysrKysr KysrKysNCiAxMSBmaWxlcyBjaGFuZ2VkLCA4MjkgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvS2J1aWxkDQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9LY29uZmlnDQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9pbmNsdWRlL21hbGlkcF9wcm9kdWN0 LmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2luY2x1 ZGUvbWFsaWRwX3V0aWxzLmgNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2Fy bS9kaXNwbGF5L2tvbWVkYS9NYWtlZmlsZQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9kZXYuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9kZXYuaA0KIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9w aXBlbGluZS5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxh eS9rb21lZGEva29tZWRhX3BpcGVsaW5lLmgNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vS2NvbmZpZw0KaW5kZXggZjlmNzc2 MWNiMmY0Li5hMjA0MTAzYjNlZmIgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtL0tj b25maWcNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vS2NvbmZpZw0KQEAgLTM3LDQgKzM3LDYg QEAgY29uZmlnIERSTV9NQUxJX0RJU1BMQVkNCiANCiAJICBJZiBjb21waWxlZCBhcyBhIG1vZHVs ZSBpdCB3aWxsIGJlIGNhbGxlZCBtYWxpLWRwLg0KIA0KK3NvdXJjZSAiZHJpdmVycy9ncHUvZHJt L2FybS9kaXNwbGF5L0tjb25maWciDQorDQogZW5kbWVudQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL01ha2VmaWxlDQppbmRl eCAzYmYzMWQxYTQ3MjIuLjEyMGJlZjgwMWZjZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vTWFrZWZpbGUNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vTWFrZWZpbGUNCkBAIC0z LDMgKzMsNCBAQCBvYmotJChDT05GSUdfRFJNX0hETENEKQkrPSBoZGxjZC5vDQogbWFsaS1kcC15 IDo9IG1hbGlkcF9kcnYubyBtYWxpZHBfaHcubyBtYWxpZHBfcGxhbmVzLm8gbWFsaWRwX2NydGMu bw0KIG1hbGktZHAteSArPSBtYWxpZHBfbXcubw0KIG9iai0kKENPTkZJR19EUk1fTUFMSV9ESVNQ TEFZKQkrPSBtYWxpLWRwLm8NCitvYmotJChDT05GSUdfRFJNX0tPTUVEQSkgKz0gZGlzcGxheS8N CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvS2J1aWxkIGIvZHJpdmVy cy9ncHUvZHJtL2FybS9kaXNwbGF5L0tidWlsZA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4 IDAwMDAwMDAwMDAwMC4uYzc4Y2Q0MmY3Yzc1DQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJz L2dwdS9kcm0vYXJtL2Rpc3BsYXkvS2J1aWxkDQpAQCAtMCwwICsxLDMgQEANCisjIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQorDQorb2JqLSQoQ09ORklHX0RSTV9LT01FREEpICs9 IGtvbWVkYS8NClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hcm0vZGlzcGxheS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNw bGF5L0tjb25maWcNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLmNl YzA2MzllM2FhMQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNw bGF5L0tjb25maWcNCkBAIC0wLDAgKzEsMTQgQEANCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wDQorY29uZmlnIERSTV9LT01FREENCisJdHJpc3RhdGUgIkFSTSBLb21lZGEgZGlz cGxheSBkcml2ZXIiDQorCWRlcGVuZHMgb24gRFJNICYmIE9GDQorCWRlcGVuZHMgb24gQ09NTU9O X0NMSw0KKwlzZWxlY3QgRFJNX0tNU19IRUxQRVINCisJc2VsZWN0IERSTV9LTVNfQ01BX0hFTFBF Ug0KKwlzZWxlY3QgRFJNX0dFTV9DTUFfSEVMUEVSDQorCXNlbGVjdCBWSURFT01PREVfSEVMUEVS Uw0KKwloZWxwDQorCSAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUg dGhlIEFSTSBLb21lZGEgZGlzcGxheQ0KKwkgIFByb2Nlc3NvciBkcml2ZXIuIEl0IHN1cHBvcnRz IHRoZSBENzEgdmFyaWFudHMgb2YgdGhlIGhhcmR3YXJlLg0KKw0KKwkgIElmIGNvbXBpbGVkIGFz IGEgbW9kdWxlIGl0IHdpbGwgYmUgY2FsbGVkIGtvbWVkYS4NCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYXJtL2Rpc3BsYXkvaW5jbHVkZS9tYWxpZHBfcHJvZHVjdC5oIGIvZHJpdmVycy9n cHUvZHJtL2FybS9kaXNwbGF5L2luY2x1ZGUvbWFsaWRwX3Byb2R1Y3QuaA0KbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uYjM1ZmM1ZGI4NjZiDQotLS0gL2Rldi9udWxs DQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkvaW5jbHVkZS9tYWxpZHBfcHJvZHVj dC5oDQpAQCAtMCwwICsxLDIzIEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAgKi8NCisvKg0KKyAqIChDKSBDT1BZUklHSFQgMjAxOCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4NCisgKiBBdXRob3I6IEphbWVzLlFpYW4uV2FuZyA8amFtZXMucWlhbi53YW5n QGFybS5jb20+DQorICoNCisgKi8NCisjaWZuZGVmIF9NQUxJRFBfUFJPRFVDVF9IXw0KKyNkZWZp bmUgX01BTElEUF9QUk9EVUNUX0hfDQorDQorLyogUHJvZHVjdCBpZGVudGlmaWNhdGlvbiAqLw0K KyNkZWZpbmUgTUFMSURQX0NPUkVfSUQoX19wcm9kdWN0LCBfX21ham9yLCBfX21pbm9yLCBfX3N0 YXR1cykgXA0KKwkoKCgoX19wcm9kdWN0KSAmIDB4RkZGRikgPDwgMTYpIHwgKCgoX19tYWpvcikg JiAweEYpIDw8IDEyKSB8IFwNCisJKCgoX19taW5vcikgJiAweEYpIDw8IDgpIHwgKChfX3N0YXR1 cykgJiAweEZGKSkNCisNCisjZGVmaW5lIE1BTElEUF9DT1JFX0lEX1BST0RVQ1RfSUQoX19jb3Jl X2lkKSAoKF9fdTMyKShfX2NvcmVfaWQpID4+IDE2KQ0KKyNkZWZpbmUgTUFMSURQX0NPUkVfSURf TUFKT1IoX19jb3JlX2lkKSAgICAgICgoKF9fdTMyKShfX2NvcmVfaWQpID4+IDEyKSAmIDB4RikN CisjZGVmaW5lIE1BTElEUF9DT1JFX0lEX01JTk9SKF9fY29yZV9pZCkgICAgICAoKChfX3UzMiko X19jb3JlX2lkKSA+PiA4KSAmIDB4RikNCisjZGVmaW5lIE1BTElEUF9DT1JFX0lEX1NUQVRVUyhf X2NvcmVfaWQpICAgICAoKChfX3UzMikoX19jb3JlX2lkKSkgJiAweEZGKQ0KKw0KKy8qIE1hbGkt ZGlzcGxheSBwcm9kdWN0IElEcyAqLw0KKyNkZWZpbmUgTUFMSURQX0Q3MV9QUk9EVUNUX0lEICAg MHgwMDcxDQorDQorI2VuZGlmIC8qIF9NQUxJRFBfUFJPRFVDVF9IXyAqLw0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9pbmNsdWRlL21hbGlkcF91dGlscy5oIGIvZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2luY2x1ZGUvbWFsaWRwX3V0aWxzLmgNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjkzZDc3MjVmZTFjNQ0KLS0tIC9kZXYv bnVsbA0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2luY2x1ZGUvbWFsaWRwX3V0 aWxzLmgNCkBAIC0wLDAgKzEsMTYgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMCAqLw0KKy8qDQorICogKEMpIENPUFlSSUdIVCAyMDE4IEFSTSBMaW1pdGVkLiBBbGwgcmln aHRzIHJlc2VydmVkLg0KKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFuLndh bmdAYXJtLmNvbT4NCisgKg0KKyAqLw0KKyNpZm5kZWYgX01BTElEUF9VVElMU18NCisjZGVmaW5l IF9NQUxJRFBfVVRJTFNfDQorDQorI2RlZmluZSBoYXNfYml0KG5yLCBtYXNrKQkoQklUKG5yKSAm IChtYXNrKSkNCisjZGVmaW5lIGhhc19iaXRzKGJpdHMsIG1hc2spCSgoKGJpdHMpICYgKG1hc2sp KSA9PSAoYml0cykpDQorDQorI2RlZmluZSBkcF9mb3JfZWFjaF9zZXRfYml0KGJpdCwgbWFzaykg XA0KKwlmb3JfZWFjaF9zZXRfYml0KChiaXQpLCAoKHVuc2lnbmVkIGxvbmcgKikoJm1hc2spKSwg c2l6ZW9mKG1hc2spICogOCkNCisNCisjZW5kaWYgLyogX01BTElEUF9VVElMU18gKi8NCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9NYWtlZmlsZQ0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uMDdiNTk2NWYzODA4DQotLS0gL2Rldi9udWxsDQor KysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01ha2VmaWxlDQpAQCAtMCww ICsxLDExIEBADQorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KKw0KK2NjZmxh Z3MteSA6PSBcDQorCS1JJChzcmMpLy4uL2luY2x1ZGUgXA0KKwktSSQoc3JjKQ0KKw0KK2tvbWVk YS15IDo9IFwNCisJa29tZWRhX2Rldi5vIFwNCisJa29tZWRhX3BpcGVsaW5lLm8gXA0KKw0KK29i ai0kKENPTkZJR19EUk1fS09NRURBKSArPSBrb21lZGEubw0KXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9r b21lZGFfZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9k ZXYuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uODg3YTE3MDA1 MzY3DQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29t ZWRhL2tvbWVkYV9kZXYuYw0KQEAgLTAsMCArMSwxMTcgQEANCisvLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMA0KKy8qDQorICogKEMpIENPUFlSSUdIVCAyMDE4IEFSTSBMaW1pdGVk LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1l cy5xaWFuLndhbmdAYXJtLmNvbT4NCisgKg0KKyAqLw0KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9y bV9kZXZpY2UuaD4NCisjaW5jbHVkZSA8bGludXgvY2xrLmg+DQorI2luY2x1ZGUgPGxpbnV4L2lv Lmg+DQorI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZl9n cmFwaC5oPg0KKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+DQorI2luY2x1ZGUgImtvbWVkYV9k ZXYuaCINCisNCitzdHJ1Y3Qga29tZWRhX2RldiAqa29tZWRhX2Rldl9jcmVhdGUoc3RydWN0IGRl dmljZSAqZGV2KQ0KK3sNCisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRm b3JtX2RldmljZShkZXYpOw0KKwljb25zdCBzdHJ1Y3Qga29tZWRhX3Byb2R1Y3RfZGF0YSAqcHJv ZHVjdDsNCisJc3RydWN0IGtvbWVkYV9kZXYgKm1kZXY7DQorCXN0cnVjdCByZXNvdXJjZSAqaW9f cmVzOw0KKwlpbnQgZXJyID0gMDsNCisNCisJcHJvZHVjdCA9IG9mX2RldmljZV9nZXRfbWF0Y2hf ZGF0YShkZXYpOw0KKwlpZiAoIXByb2R1Y3QpDQorCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsN CisNCisJaW9fcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVN LCAwKTsNCisJaWYgKCFpb19yZXMpIHsNCisJCURSTV9FUlJPUigiTm8gcmVnaXN0ZXJzIGRlZmlu ZWQuXG4iKTsNCisJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOw0KKwl9DQorDQorCW1kZXYgPSBk ZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKm1kZXYpLCBHRlBfS0VSTkVMKTsNCisJaWYgKCFtZGV2 KQ0KKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7DQorDQorCW1kZXYtPmRldiA9IGRldjsNCisJ bWRldi0+cmVnX2Jhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCBpb19yZXMpOw0KKwlp ZiAoSVNfRVJSKG1kZXYtPnJlZ19iYXNlKSkgew0KKwkJRFJNX0VSUk9SKCJNYXAgcmVnaXN0ZXIg c3BhY2UgZmFpbGVkLlxuIik7DQorCQllcnIgPSBQVFJfRVJSKG1kZXYtPnJlZ19iYXNlKTsNCisJ CW1kZXYtPnJlZ19iYXNlID0gTlVMTDsNCisJCWdvdG8gZXJyX2NsZWFudXA7DQorCX0NCisNCisJ bWRldi0+cGNsayA9IGRldm1fY2xrX2dldChkZXYsICJwY2xrIik7DQorCWlmIChJU19FUlIobWRl di0+cGNsaykpIHsNCisJCURSTV9FUlJPUigiR2V0IEFQQiBjbGsgZmFpbGVkLlxuIik7DQorCQll cnIgPSBQVFJfRVJSKG1kZXYtPnBjbGspOw0KKwkJbWRldi0+cGNsayA9IE5VTEw7DQorCQlnb3Rv IGVycl9jbGVhbnVwOw0KKwl9DQorDQorCS8qIEVuYWJsZSBBUEIgY2xvY2sgdG8gYWNjZXNzIHRo ZSByZWdpc3RlcnMgKi8NCisJY2xrX3ByZXBhcmVfZW5hYmxlKG1kZXYtPnBjbGspOw0KKw0KKwlt ZGV2LT5mdW5jcyA9IHByb2R1Y3QtPmlkZW50aWZ5KG1kZXYtPnJlZ19iYXNlLCAmbWRldi0+Y2hp cCk7DQorCWlmICgha29tZWRhX3Byb2R1Y3RfbWF0Y2gobWRldiwgcHJvZHVjdC0+cHJvZHVjdF9p ZCkpIHsNCisJCURSTV9FUlJPUigiRFQgY29uZmlndXJlZCAleCBtaXNtYXRjaCB3aXRoIHJlYWwg SFcgJXguXG4iLA0KKwkJCSAgcHJvZHVjdC0+cHJvZHVjdF9pZCwNCisJCQkgIE1BTElEUF9DT1JF X0lEX1BST0RVQ1RfSUQobWRldi0+Y2hpcC5jb3JlX2lkKSk7DQorCQllcnIgPSAtRU5PREVWOw0K KwkJZ290byBlcnJfY2xlYW51cDsNCisJfQ0KKw0KKwlEUk1fSU5GTygiRm91bmQgQVJNIE1hbGkt RCV4IHZlcnNpb24gciVkcCVkXG4iLA0KKwkJIE1BTElEUF9DT1JFX0lEX1BST0RVQ1RfSUQobWRl di0+Y2hpcC5jb3JlX2lkKSwNCisJCSBNQUxJRFBfQ09SRV9JRF9NQUpPUihtZGV2LT5jaGlwLmNv cmVfaWQpLA0KKwkJIE1BTElEUF9DT1JFX0lEX01JTk9SKG1kZXYtPmNoaXAuY29yZV9pZCkpOw0K Kw0KKwllcnIgPSBtZGV2LT5mdW5jcy0+ZW51bV9yZXNvdXJjZXMobWRldik7DQorCWlmIChlcnIp IHsNCisJCURSTV9FUlJPUigiZW51bWVyYXRlIGRpc3BsYXkgcmVzb3VyY2UgZmFpbGVkLlxuIik7 DQorCQlnb3RvIGVycl9jbGVhbnVwOw0KKwl9DQorDQorCXJldHVybiBtZGV2Ow0KKw0KK2Vycl9j bGVhbnVwOg0KKwlrb21lZGFfZGV2X2Rlc3Ryb3kobWRldik7DQorCXJldHVybiBFUlJfUFRSKGVy cik7DQorfQ0KKw0KK3ZvaWQga29tZWRhX2Rldl9kZXN0cm95KHN0cnVjdCBrb21lZGFfZGV2ICpt ZGV2KQ0KK3sNCisJc3RydWN0IGRldmljZSAqZGV2ID0gbWRldi0+ZGV2Ow0KKwlzdHJ1Y3Qga29t ZWRhX2Rldl9mdW5jcyAqZnVuY3MgPSBtZGV2LT5mdW5jczsNCisJaW50IGk7DQorDQorCWZvciAo aSA9IDA7IGkgPCBtZGV2LT5uX3BpcGVsaW5lczsgaSsrKSB7DQorCQlrb21lZGFfcGlwZWxpbmVf ZGVzdHJveShtZGV2LCBtZGV2LT5waXBlbGluZXNbaV0pOw0KKwkJbWRldi0+cGlwZWxpbmVzW2ld ID0gTlVMTDsNCisJfQ0KKw0KKwltZGV2LT5uX3BpcGVsaW5lcyA9IDA7DQorDQorCWlmIChmdW5j cyAmJiBmdW5jcy0+Y2xlYW51cCkNCisJCWZ1bmNzLT5jbGVhbnVwKG1kZXYpOw0KKw0KKwlpZiAo bWRldi0+cmVnX2Jhc2UpIHsNCisJCWRldm1faW91bm1hcChkZXYsIG1kZXYtPnJlZ19iYXNlKTsN CisJCW1kZXYtPnJlZ19iYXNlID0gTlVMTDsNCisJfQ0KKw0KKwlpZiAobWRldi0+bWNsaykgew0K KwkJZGV2bV9jbGtfcHV0KGRldiwgbWRldi0+bWNsayk7DQorCQltZGV2LT5tY2xrID0gTlVMTDsN CisJfQ0KKw0KKwlpZiAobWRldi0+cGNsaykgew0KKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1k ZXYtPnBjbGspOw0KKwkJZGV2bV9jbGtfcHV0KGRldiwgbWRldi0+cGNsayk7DQorCQltZGV2LT5w Y2xrID0gTlVMTDsNCisJfQ0KKw0KKwlkZXZtX2tmcmVlKGRldiwgbWRldik7DQorfQ0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Rldi5oIGIv ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZGV2LmgNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjI1Yzc5NTI4ZGFjNA0KLS0tIC9kZXYv bnVsbA0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZGV2 LmgNCkBAIC0wLDAgKzEsOTkgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MCAqLw0KKy8qDQorICogKEMpIENPUFlSSUdIVCAyMDE4IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRz IHJlc2VydmVkLg0KKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFuLndhbmdA YXJtLmNvbT4NCisgKg0KKyAqLw0KKyNpZm5kZWYgX0tPTUVEQV9ERVZfSF8NCisjZGVmaW5lIF9L T01FREFfREVWX0hfDQorDQorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPg0KKyNpbmNsdWRlIDxs aW51eC9pbnRlcnJ1cHQuaD4NCisjaW5jbHVkZSAia29tZWRhX3BpcGVsaW5lLmgiDQorI2luY2x1 ZGUgIm1hbGlkcF9wcm9kdWN0LmgiDQorDQorDQorLyogbWFsaWRwIGRldmljZSBpZCAqLw0KK2Vu dW0gew0KKwlNQUxJX0Q3MSA9IDAsDQorfTsNCisNCisvKiBwaXBlbGluZSBEVCBwb3J0cyAqLw0K K2VudW0gew0KKwlLT01FREFfT0ZfUE9SVF9PVVRQVVQJCT0gMCwNCisJS09NRURBX09GX1BPUlRf Q09QUk9DCQk9IDEsDQorfTsNCisNCitzdHJ1Y3Qga29tZWRhX2NoaXBfaW5mbyB7DQorCXUzMiBh cmNoX2lkOw0KKwl1MzIgY29yZV9pZDsNCisJdTMyIGNvcmVfaW5mbzsNCisJdTMyIGJ1c193aWR0 aDsNCit9Ow0KKw0KK3N0cnVjdCBrb21lZGFfcHJvZHVjdF9kYXRhIHsNCisJdTMyIHByb2R1Y3Rf aWQ7DQorCXN0cnVjdCBrb21lZGFfZGV2X2Z1bmNzICooKmlkZW50aWZ5KSh1MzIgX19pb21lbSAq cmVnLA0KKwkJCQkJICAgICBzdHJ1Y3Qga29tZWRhX2NoaXBfaW5mbyAqaW5mbyk7DQorfTsNCisN CitzdHJ1Y3Qga29tZWRhX2RldjsNCisNCisvKioNCisgKiBzdHJ1Y3Qga29tZWRhX2Rldl9mdW5j cw0KKyAqDQorICogU3VwcGxpZWQgYnkgY2hpcCBsZXZlbCBhbmQgcmV0dXJuZWQgYnkgdGhlIGNo aXAgZW50cnkgZnVuY3Rpb24geHh4X2lkZW50aWZ5LA0KKyAqLw0KK3N0cnVjdCBrb21lZGFfZGV2 X2Z1bmNzIHsNCisJLyoqDQorCSAqIEBlbnVtX3Jlc291cmNlczoNCisJICoNCisJICogZm9yIENI SVAgdG8gcmVwb3J0IG9yIGFkZCBwaXBlbGluZSBhbmQgY29tcG9uZW50IHJlc291cmNlcyB0byBD T1JFDQorCSAqLw0KKwlpbnQgKCplbnVtX3Jlc291cmNlcykoc3RydWN0IGtvbWVkYV9kZXYgKm1k ZXYpOw0KKwkvKiogQGNsZWFudXA6IGNhbGwgdG8gY2hpcCB0byBjbGVhbnVwIGtvbWVkYV9kZXYt PmNoaXAgZGF0YSAqLw0KKwl2b2lkICgqY2xlYW51cCkoc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYp Ow0KK307DQorDQorLyoqDQorICogc3RydWN0IGtvbWVkYV9kZXYNCisgKg0KKyAqIFBpcGVsaW5l IGFuZCBjb21wb25lbnQgYXJlIHVzZWQgdG8gZGVzY3JpYmUgaG93IHRvIGhhbmRsZSB0aGUgcGl4 ZWwgZGF0YS4NCisgKiBrb21lZGFfZGV2aWNlIGlzIGZvciBkZXNjcmliaW5nIHRoZSB3aG9sZSB2 aWV3IG9mIHRoZSBkZXZpY2UsIGFuZCB0aGUNCisgKiBjb250cm9sLWFiaWxpdGVzIG9mIGRldmlj ZS4NCisgKi8NCitzdHJ1Y3Qga29tZWRhX2RldiB7DQorCXN0cnVjdCBkZXZpY2UgKmRldjsNCisJ dTMyIF9faW9tZW0gICAqcmVnX2Jhc2U7DQorDQorCXN0cnVjdCBrb21lZGFfY2hpcF9pbmZvIGNo aXA7DQorDQorCS8qKiBAcGNsazogQVBCIGNsb2NrIGZvciByZWdpc3RlciBhY2Nlc3MgKi8NCisJ c3RydWN0IGNsayAqcGNsazsNCisJLyoqIEBtY2s6IEhXIG1haW4gZW5naW5lIGNsayAqLw0KKwlz dHJ1Y3QgY2xrICptY2xrOw0KKw0KKwlpbnQgbl9waXBlbGluZXM7DQorCXN0cnVjdCBrb21lZGFf cGlwZWxpbmUgKnBpcGVsaW5lc1tLT01FREFfTUFYX1BJUEVMSU5FU107DQorDQorCS8qKiBAZnVu Y3M6IGNoaXAgZnVuY3MgdG8gYWNjZXNzIHRvIEhXICovDQorCXN0cnVjdCBrb21lZGFfZGV2X2Z1 bmNzICpmdW5jczsNCisJLyoqDQorCSAqIEBjaGlwX2RhdGE6DQorCSAqDQorCSAqIGNoaXAgZGF0 YSB3aWxsIGJlIGFkZGVkIGJ5ICZrb21lZGFfZGV2X2Z1bmNzLmVudW1fcmVzb3VyY2VzKCkgYW5k DQorCSAqIGRlc3Ryb3llZCBieSAma29tZWRhX2Rldl9mdW5jcy5jbGVhbnVwKCkNCisJICovDQor CXZvaWQgKmNoaXBfZGF0YTsNCit9Ow0KKw0KK3N0YXRpYyBpbmxpbmUgYm9vbA0KK2tvbWVkYV9w cm9kdWN0X21hdGNoKHN0cnVjdCBrb21lZGFfZGV2ICptZGV2LCB1MzIgdGFyZ2V0KQ0KK3sNCisJ cmV0dXJuIE1BTElEUF9DT1JFX0lEX1BST0RVQ1RfSUQobWRldi0+Y2hpcC5jb3JlX2lkKSA9PSB0 YXJnZXQ7DQorfQ0KKw0KK3N0cnVjdCBrb21lZGFfZGV2ICprb21lZGFfZGV2X2NyZWF0ZShzdHJ1 Y3QgZGV2aWNlICpkZXYpOw0KK3ZvaWQga29tZWRhX2Rldl9kZXN0cm95KHN0cnVjdCBrb21lZGFf ZGV2ICptZGV2KTsNCisNCisjZW5kaWYgLypfS09NRURBX0RFVl9IXyovDQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5lLmMNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjlhMzNmOWQ2OGJkZQ0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFf cGlwZWxpbmUuYw0KQEAgLTAsMCArMSwxOTggQEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMA0KKy8qDQorICogKEMpIENPUFlSSUdIVCAyMDE4IEFSTSBMaW1pdGVkLiBBbGwg cmlnaHRzIHJlc2VydmVkLg0KKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFu LndhbmdAYXJtLmNvbT4NCisgKg0KKyAqLw0KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCisjaW5j bHVkZSAia29tZWRhX2Rldi5oIg0KKyNpbmNsdWRlICJrb21lZGFfcGlwZWxpbmUuaCINCisNCisv Kioga29tZWRhX3BpcGVsaW5lX2FkZCAtIEFkZCBhIHBpcGVsaW5lIHRvICZrb21lZGFfZGV2ICov DQorc3RydWN0IGtvbWVkYV9waXBlbGluZSAqDQora29tZWRhX3BpcGVsaW5lX2FkZChzdHJ1Y3Qg a29tZWRhX2RldiAqbWRldiwgc2l6ZV90IHNpemUsDQorCQkgICAgc3RydWN0IGtvbWVkYV9waXBl bGluZV9mdW5jcyAqZnVuY3MpDQorew0KKwlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpwcGw7DQor DQorCWlmIChtZGV2LT5uX3BpcGVsaW5lcyArIDEgPiBLT01FREFfTUFYX1BJUEVMSU5FUykgew0K KwkJRFJNX0VSUk9SKCJFeGNlZWQgbWF4IHN1cHBvcnQgJWQgcGlwZWxpbmVzLlxuIiwNCisJCQkg IEtPTUVEQV9NQVhfUElQRUxJTkVTKTsNCisJCXJldHVybiBOVUxMOw0KKwl9DQorDQorCWlmIChz aXplIDwgc2l6ZW9mKCpwcGwpKSB7DQorCQlEUk1fRVJST1IoIlJlcXVlc3QgcGlwZWxpbmUgc2l6 ZSB0b28gc21hbGwuXG4iKTsNCisJCXJldHVybiBOVUxMOw0KKwl9DQorDQorCXBwbCA9IGRldm1f a3phbGxvYyhtZGV2LT5kZXYsIHNpemUsIEdGUF9LRVJORUwpOw0KKwlpZiAoIXBwbCkNCisJCXJl dHVybiBOVUxMOw0KKw0KKwlwcGwtPm1kZXYgPSBtZGV2Ow0KKwlwcGwtPmlkICAgPSBtZGV2LT5u X3BpcGVsaW5lczsNCisJcHBsLT5mdW5jcz0gZnVuY3M7DQorDQorCW1kZXYtPnBpcGVsaW5lc1tt ZGV2LT5uX3BpcGVsaW5lc10gPSBwcGw7DQorCW1kZXYtPm5fcGlwZWxpbmVzKys7DQorDQorCXJl dHVybiBwcGw7DQorfQ0KKw0KK3ZvaWQga29tZWRhX3BpcGVsaW5lX2Rlc3Ryb3koc3RydWN0IGtv bWVkYV9kZXYgKm1kZXYsDQorCQkJICAgICBzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpwcGwpDQor ew0KKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqYzsNCisJaW50IGk7DQorDQorCWRwX2Zvcl9l YWNoX3NldF9iaXQoaSwgcHBsLT5hdmFpbF9jb21wcykgew0KKwkJYyA9IGtvbWVkYV9waXBlbGlu ZV9nZXRfY29tcG9uZW50KHBwbCwgaSk7DQorDQorCQlrb21lZGFfY29tcG9uZW50X2Rlc3Ryb3ko bWRldiwgYyk7DQorCX0NCisNCisJY2xrX3B1dChwcGwtPnB4bGNsayk7DQorCWNsa19wdXQocHBs LT5hY2xrKTsNCisNCisJZGV2bV9rZnJlZShtZGV2LT5kZXYsIHBwbCk7DQorfQ0KKw0KK3N0cnVj dCBrb21lZGFfY29tcG9uZW50ICoqDQora29tZWRhX3BpcGVsaW5lX2dldF9jb21wb25lbnRfcG9z KHN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKnBwbCwgaW50IGlkKQ0KK3sNCisJc3RydWN0IGtvbWVk YV9kZXYgKm1kZXYgPSBwcGwtPm1kZXY7DQorCXN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKnRlbXAg PSBOVUxMOw0KKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqKnBvcyA9IE5VTEw7DQorDQorCXN3 aXRjaCAoaWQpIHsNCisJY2FzZSBLT01FREFfQ09NUE9ORU5UX0xBWUVSMDoNCisJY2FzZSBLT01F REFfQ09NUE9ORU5UX0xBWUVSMToNCisJY2FzZSBLT01FREFfQ09NUE9ORU5UX0xBWUVSMjoNCisJ Y2FzZSBLT01FREFfQ09NUE9ORU5UX0xBWUVSMzoNCisJCXBvcyA9IHRvX2Nwb3MocHBsLT5sYXll cnNbaWQgLSBLT01FREFfQ09NUE9ORU5UX0xBWUVSMF0pOw0KKwkJYnJlYWs7DQorCWNhc2UgS09N RURBX0NPTVBPTkVOVF9XQl9MQVlFUjoNCisJCXBvcyA9IHRvX2Nwb3MocHBsLT53Yl9sYXllcik7 DQorCQlicmVhazsNCisJY2FzZSBLT01FREFfQ09NUE9ORU5UX0NPTVBJWjA6DQorCWNhc2UgS09N RURBX0NPTVBPTkVOVF9DT01QSVoxOg0KKwkJdGVtcCA9IG1kZXYtPnBpcGVsaW5lc1tpZCAtIEtP TUVEQV9DT01QT05FTlRfQ09NUElaMF07DQorCQlpZiAoIXRlbXApIHsNCisJCQlEUk1fRVJST1Io ImNvbXBpei0lZCBkb2Vzbid0IGV4aXN0LlxuIiwgaWQpOw0KKwkJCXJldHVybiBOVUxMOw0KKwkJ fQ0KKwkJcG9zID0gdG9fY3Bvcyh0ZW1wLT5jb21waXopOw0KKwkJYnJlYWs7DQorCWNhc2UgS09N RURBX0NPTVBPTkVOVF9TQ0FMRVIwOg0KKwljYXNlIEtPTUVEQV9DT01QT05FTlRfU0NBTEVSMToN CisJCXBvcyA9IHRvX2Nwb3MocHBsLT5zY2FsZXJzW2lkIC0gS09NRURBX0NPTVBPTkVOVF9TQ0FM RVIwXSk7DQorCQlicmVhazsNCisJY2FzZSBLT01FREFfQ09NUE9ORU5UX0lQUzA6DQorCWNhc2Ug S09NRURBX0NPTVBPTkVOVF9JUFMxOg0KKwkJdGVtcCA9IG1kZXYtPnBpcGVsaW5lc1tpZCAtIEtP TUVEQV9DT01QT05FTlRfSVBTMF07DQorCQlpZiAoIXRlbXApIHsNCisJCQlEUk1fRVJST1IoImlw cy0lZCBkb2Vzbid0IGV4aXN0LlxuIiwgaWQpOw0KKwkJCXJldHVybiBOVUxMOw0KKwkJfQ0KKwkJ cG9zID0gdG9fY3Bvcyh0ZW1wLT5pbXByb2MpOw0KKwkJYnJlYWs7DQorCWNhc2UgS09NRURBX0NP TVBPTkVOVF9USU1JTkdfQ1RSTFI6DQorCQlwb3MgPSB0b19jcG9zKHBwbC0+Y3RybHIpOw0KKwkJ YnJlYWs7DQorCWRlZmF1bHQ6DQorCQlwb3MgPSBOVUxMOw0KKwkJRFJNX0VSUk9SKCJVbmtub3du IHBpcGVsaW5lIHJlc291cmNlIElEOiAlZC5cbiIsIGlkKTsNCisJCWJyZWFrOw0KKwl9DQorDQor CXJldHVybiBwb3M7DQorfQ0KKw0KK3N0cnVjdCBrb21lZGFfY29tcG9uZW50ICoNCitrb21lZGFf cGlwZWxpbmVfZ2V0X2NvbXBvbmVudChzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpwcGwsIGludCBp ZCkNCit7DQorCXN0cnVjdCBrb21lZGFfY29tcG9uZW50ICoqcG9zID0gTlVMTDsNCisJc3RydWN0 IGtvbWVkYV9jb21wb25lbnQgKmMgPSBOVUxMOw0KKw0KKwlwb3MgPSBrb21lZGFfcGlwZWxpbmVf Z2V0X2NvbXBvbmVudF9wb3MocHBsLCBpZCk7DQorCWlmIChwb3MpDQorCQljID0gKnBvczsNCisN CisJcmV0dXJuIGM7DQorfQ0KKw0KKy8qKiBrb21lZGFfY29tcG9uZW50X2FkZCAtIEFkZCBhIGNv bXBvbmVudCB0byAma29tZWRhX3BpcGVsaW5lICovDQorc3RydWN0IGtvbWVkYV9jb21wb25lbnQg Kg0KK2tvbWVkYV9jb21wb25lbnRfYWRkKHN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKnBwbCwNCisJ CSAgICAgc2l6ZV90IGNvbXBfc3osIHUzMiBpZCwgdTMyIGh3X2lkLA0KKwkJICAgICBzdHJ1Y3Qg a29tZWRhX2NvbXBvbmVudF9mdW5jcyAqZnVuY3MsDQorCQkgICAgIHU4IG1heF9hY3RpdmVfaW5w dXRzLCB1MzIgc3VwcG9ydGVkX2lucHV0cywNCisJCSAgICAgdTggbWF4X2FjdGl2ZV9vdXRwdXRz LCB1MzIgX19pb21lbSAqcmVnLA0KKwkJICAgICBjb25zdCBjaGFyICpuYW1lX2ZtdCwgLi4uKQ0K K3sNCisJc3RydWN0IGtvbWVkYV9jb21wb25lbnQgKipwb3M7DQorCXN0cnVjdCBrb21lZGFfY29t cG9uZW50ICpjOw0KKwlpbnQgaWR4LCAqbnVtID0gTlVMTDsNCisNCisJaWYgKG1heF9hY3RpdmVf aW5wdXRzID4gS09NRURBX0NPTVBPTkVOVF9OX0lOUFVUUykgew0KKwkJV0FSTigxLCAicGxlYXNl IGxhcmdlIEtPTUVEQV9DT01QT05FTlRfTl9JTlBVVFMgdG8gJWQuXG4iLA0KKwkJICAgICBtYXhf YWN0aXZlX2lucHV0cyk7DQorCQlyZXR1cm4gTlVMTDsNCisJfQ0KKw0KKwlwb3MgPSBrb21lZGFf cGlwZWxpbmVfZ2V0X2NvbXBvbmVudF9wb3MocHBsLCBpZCk7DQorCWlmICgocG9zID09IE5VTEwp IHx8ICgqcG9zICE9IE5VTEwpKQ0KKwkJcmV0dXJuIE5VTEw7DQorDQorCWlmIChoYXNfYml0KGlk LCBLT01FREFfUElQRUxJTkVfTEFZRVJTKSkgew0KKwkJaWR4ID0gaWQgLSBLT01FREFfQ09NUE9O RU5UX0xBWUVSMDsNCisJCW51bSA9ICZwcGwtPm5fbGF5ZXJzOw0KKwkJaWYgKGlkeCAhPSBwcGwt Pm5fbGF5ZXJzKSB7DQorCQkJRFJNX0VSUk9SKCJwbGVhc2UgYWRkIExheWVyIGJ5IGlkIHNlcXVl bmNlLlxuIik7DQorCQkJcmV0dXJuIE5VTEw7DQorCQl9DQorCX0gZWxzZSBpZiAoaGFzX2JpdChp ZCwgIEtPTUVEQV9QSVBFTElORV9TQ0FMRVJTKSkgew0KKwkJaWR4ID0gaWQgLSBLT01FREFfQ09N UE9ORU5UX1NDQUxFUjA7DQorCQludW0gPSAmcHBsLT5uX3NjYWxlcnM7DQorCQlpZiAoaWR4ICE9 IHBwbC0+bl9zY2FsZXJzKSB7DQorCQkJRFJNX0VSUk9SKCJwbGVhc2UgYWRkIFNjYWxlciBieSBp ZCBzZXF1ZW5jZS5cbiIpOw0KKwkJCXJldHVybiBOVUxMOw0KKwkJfQ0KKwl9DQorDQorCWMgPSBk ZXZtX2t6YWxsb2MocHBsLT5tZGV2LT5kZXYsIGNvbXBfc3osIEdGUF9LRVJORUwpOw0KKwlpZiAo YyA9PSBOVUxMKQ0KKwkJcmV0dXJuIE5VTEw7DQorDQorCWMtPmlkID0gaWQ7DQorCWMtPmh3X2lk ID0gaHdfaWQ7DQorCWMtPnJlZyA9IHJlZzsNCisJYy0+cGlwZWxpbmUgPSBwcGw7DQorCWMtPm1h eF9hY3RpdmVfaW5wdXRzID0gbWF4X2FjdGl2ZV9pbnB1dHM7DQorCWMtPm1heF9hY3RpdmVfb3V0 cHV0cyA9IG1heF9hY3RpdmVfb3V0cHV0czsNCisJYy0+c3VwcG9ydGVkX2lucHV0cyA9IHN1cHBv cnRlZF9pbnB1dHM7DQorCWMtPmZ1bmNzID0gZnVuY3M7DQorDQorCWlmIChuYW1lX2ZtdCkgew0K KwkJdmFfbGlzdCBhcmdzOw0KKw0KKwkJdmFfc3RhcnQoYXJncywgbmFtZV9mbXQpOw0KKwkJdnNu cHJpbnRmKGMtPm5hbWUsIHNpemVvZihjLT5uYW1lKSwgbmFtZV9mbXQsIGFyZ3MpOw0KKwkJdmFf ZW5kKGFyZ3MpOw0KKwl9DQorDQorCWlmIChudW0gIT0gTlVMTCkNCisJCSpudW0gPSAqbnVtICsg MTsNCisNCisJcHBsLT5hdmFpbF9jb21wcyB8PSBCSVQoYy0+aWQpOw0KKwkqcG9zID0gYzsNCisN CisJcmV0dXJuIGM7DQorfQ0KKw0KK3ZvaWQga29tZWRhX2NvbXBvbmVudF9kZXN0cm95KHN0cnVj dCBrb21lZGFfZGV2ICptZGV2LA0KKwkJCSAgICAgIHN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpj KQ0KK3sNCisJZGV2bV9rZnJlZShtZGV2LT5kZXYsIGMpOw0KK30NCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oIGIvZHJpdmVy cy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUuaA0KbmV3IGZpbGUg bW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uODc1OWY1NGE0ZTA5DQotLS0gL2Rldi9u dWxsDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBl bGluZS5oDQpAQCAtMCwwICsxLDM0NSBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wICovDQorLyoNCisgKiAoQykgQ09QWVJJR0hUIDIwMTggQVJNIExpbWl0ZWQuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuDQorICogQXV0aG9yOiBKYW1lcy5RaWFuLldhbmcgPGphbWVzLnFpYW4u d2FuZ0Bhcm0uY29tPg0KKyAqDQorICovDQorI2lmbmRlZiBfS09NRURBX1BJUEVMSU5FX0hfDQor I2RlZmluZSBfS09NRURBX1BJUEVMSU5FX0hfDQorDQorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+ DQorI2luY2x1ZGUgPGxpbnV4L29mLmg+DQorI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPg0KKyNp bmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPg0KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxw ZXIuaD4NCisjaW5jbHVkZSAibWFsaWRwX3V0aWxzLmgiDQorDQorI2RlZmluZSBLT01FREFfTUFY X1BJUEVMSU5FUwkJMg0KKyNkZWZpbmUgS09NRURBX1BJUEVMSU5FX01BWF9MQVlFUlMJNA0KKyNk ZWZpbmUgS09NRURBX1BJUEVMSU5FX01BWF9TQ0FMRVJTCTINCisjZGVmaW5lIEtPTUVEQV9DT01Q T05FTlRfTl9JTlBVVFMJNQ0KKw0KKy8qIHBpcGVsaW5lIGNvbXBvbmVudCBJRHMgKi8NCitlbnVt IHsNCisJS09NRURBX0NPTVBPTkVOVF9MQVlFUjAJCT0gMCwNCisJS09NRURBX0NPTVBPTkVOVF9M QVlFUjEJCT0gMSwNCisJS09NRURBX0NPTVBPTkVOVF9MQVlFUjIJCT0gMiwNCisJS09NRURBX0NP TVBPTkVOVF9MQVlFUjMJCT0gMywNCisJS09NRURBX0NPTVBPTkVOVF9XQl9MQVlFUgk9IDcsIC8q IHdyaXRlIGJhY2sgbGF5ZXIgKi8NCisJS09NRURBX0NPTVBPTkVOVF9TQ0FMRVIwCT0gOCwNCisJ S09NRURBX0NPTVBPTkVOVF9TQ0FMRVIxCT0gOSwNCisJS09NRURBX0NPTVBPTkVOVF9TUExJVFRF Ugk9IDEyLA0KKwlLT01FREFfQ09NUE9ORU5UX01FUkdFUgkJPSAxNCwNCisJS09NRURBX0NPTVBP TkVOVF9DT01QSVowCT0gMTYsIC8qIGNvbXBvc2l0b3IgKi8NCisJS09NRURBX0NPTVBPTkVOVF9D T01QSVoxCT0gMTcsDQorCUtPTUVEQV9DT01QT05FTlRfSVBTMAkJPSAyMCwgLyogcG9zdCBpbWFn ZSBwcm9jZXNzb3IgKi8NCisJS09NRURBX0NPTVBPTkVOVF9JUFMxCQk9IDIxLA0KKwlLT01FREFf Q09NUE9ORU5UX1RJTUlOR19DVFJMUgk9IDIyLCAvKiB0aW1pbmcgY29udHJvbGxlciAqLw0KK307 DQorDQorI2RlZmluZSBLT01FREFfUElQRUxJTkVfTEFZRVJTCQkoQklUKEtPTUVEQV9DT01QT05F TlRfTEFZRVIwKSB8XA0KKwkJCQkJIEJJVChLT01FREFfQ09NUE9ORU5UX0xBWUVSMSkgfFwNCisJ CQkJCSBCSVQoS09NRURBX0NPTVBPTkVOVF9MQVlFUjIpIHxcDQorCQkJCQkgQklUKEtPTUVEQV9D T01QT05FTlRfTEFZRVIzKSkNCisNCisjZGVmaW5lIEtPTUVEQV9QSVBFTElORV9TQ0FMRVJTCQko QklUKEtPTUVEQV9DT01QT05FTlRfU0NBTEVSMCkgfFwNCisJCQkJCSBCSVQoS09NRURBX0NPTVBP TkVOVF9TQ0FMRVIxKSkNCisNCisjZGVmaW5lIEtPTUVEQV9QSVBFTElORV9DT01QSVpTCQkoQklU KEtPTUVEQV9DT01QT05FTlRfQ09NUElaMCkgfFwNCisJCQkJCSBCSVQoS09NRURBX0NPTVBPTkVO VF9DT01QSVoxKSkNCisNCisjZGVmaW5lIEtPTUVEQV9QSVBFTElORV9JTVBST0NTCQkoQklUKEtP TUVEQV9DT01QT05FTlRfSVBTMCkgfFwNCisJCQkJCSBCSVQoS09NRURBX0NPTVBPTkVOVF9JUFMx KSkNCitzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudDsNCitzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9z dGF0ZTsNCisNCisvKioga29tZWRhX2NvbXBvbmVudF9mdW5jcyAtIGNvbXBvbmVudCBjb250cm9s IGZ1bmN0aW9ucyAqLw0KK3N0cnVjdCBrb21lZGFfY29tcG9uZW50X2Z1bmNzIHsNCisJLyoqIEB2 YWxpZGF0ZTogb3B0aW9uYWwsDQorCSAqIGNvbXBvbmVudCBtYXkgaGFzIHNwZWNpYWwgcmVxdWly ZW1lbnRzIG9yIGxpbWl0YXRpb25zLCB0aGlzIGZ1bmN0aW9uDQorCSAqIHN1cHBseSBIVyB0aGUg YWJpbGl0eSB0byBkbyB0aGUgZnVydGhlciBIVyBzcGVjaWZpYyBjaGVjay4NCisJICovDQorCWlu dCAoKnZhbGlkYXRlKShzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqYywNCisJCQlzdHJ1Y3Qga29t ZWRhX2NvbXBvbmVudF9zdGF0ZSAqc3RhdGUpOw0KKwkvKiogQHVwZGF0ZTogdXBkYXRlIGlzIGEg YWN0aXZlIHVwZGF0ZSAqLw0KKwl2b2lkICgqdXBkYXRlKShzdHJ1Y3Qga29tZWRhX2NvbXBvbmVu dCAqYywNCisJCSAgICAgICBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9zdGF0ZSAqc3RhdGUpOw0K KwkvKiogQGRpc2FibGU6IGRpc2FibGUgY29tcG9uZW50ICovDQorCXZvaWQgKCpkaXNhYmxlKShz dHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqYyk7DQorCS8qKiBAZHVtcF9yZWdpc3RlcjogT3B0aW9u YWwsIGR1bXAgcmVnaXN0ZXJzIHRvIHNlcV9maWxlICovDQorCXZvaWQgKCpkdW1wX3JlZ2lzdGVy KShzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqYywgc3RydWN0IHNlcV9maWxlICpzZXEpOw0KK307 DQorDQorLyoqDQorICogc3RydWN0IGtvbWVkYV9jb21wb25lbnQNCisgKg0KKyAqIHN0cnVjdCBr b21lZGFfY29tcG9uZW50IGRlc2NyaWJlIHRoZSBkYXRhIGZsb3cgY2FwYWJpbGl0aWVzIGZvciBo b3cgdG8gbGluayBhDQorICogY29tcG9uZW50IGludG8gdGhlIGRpc3BsYXkgcGlwZWxpbmUuDQor ICogYWxsIHNwZWNpZmllZCBjb21wb25lbnRzIGFyZSBzdWJjbGFzcyBvZiB0aGlzIHN0cnVjdHVy ZS4NCisgKi8NCitzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCB7DQorCS8qKiBAb2JqOiB0cmVhdCBj b21wb25lbnQgYXMgcHJpdmF0ZSBvYmogKi8NCisJc3RydWN0IGRybV9wcml2YXRlX29iaiBvYmo7 DQorCS8qKiBAcGlwZWxpbmU6IHRoZSBrb21lZGEgcGlwZWxpbmUgdGhpcyBjb21wb25lbnQgYmVs b25ncyB0byAqLw0KKwlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpwaXBlbGluZTsNCisJLyoqIEBu YW1lOiBjb21wb25lbnQgbmFtZSAqLw0KKwljaGFyIG5hbWVbMzJdOw0KKwkvKioNCisJICogQHJl ZzoNCisJICogY29tcG9uZW50IHJlZ2lzdGVyIGJhc2UsDQorCSAqIHdoaWNoIGlzIGluaXRpYWxp emVkIGJ5IGNoaXAgYW5kIHVzZWQgYnkgY2hpcCBvbmx5DQorCSAqLw0KKwl1MzIgX19pb21lbSAq cmVnOw0KKwkvKiogQGlkOiBjb21wb25lbnQgaWQgKi8NCisJdTMyIGlkOw0KKwkvKiogQGh3X2lj OiBjb21wb25lbnQgaHcgaWQsDQorCSAqICB3aGljaCBpcyBpbml0aWFsaXplZCBieSBjaGlwIGFu ZCB1c2VkIGJ5IGNoaXAgb25seQ0KKwkgKi8NCisJdTMyIGh3X2lkOw0KKw0KKwkvKioNCisJICog QG1heF9hY3RpdmVfaW5wdXRzOg0KKwkgKiBAbWF4X2FjdGl2ZV9vdXRwdXM6DQorCSAqDQorCSAq IG1heGltdW0gbnVtYmVyIG9mIGlucHV0cy9vdXRwdXRzIHRoYXQgY2FuIGJlIGFjdGl2ZSBpbiB0 aGUgc2FtZSB0aW1lDQorCSAqIE5vdGU6DQorCSAqIHRoZSBudW1iZXIgaXNuJ3QgdGhlIGJpdCBu dW1iZXIgb2YgQHN1cHBvcnRlZF9pbnB1dHMsIEBzdXBwb3J0ZWRfb3V0cHV0cywNCisJICogYnV0 IG1heSBiZSBsZXNzIHRoYW4gaXQuIHNpbmNlIGNvbXBvbmVudCBtYXkgbm90IHN1cHBvcnQgZW5h YmxpbmcgYWxsDQorCSAqIEBzdXBwb3J0ZWRfaW5wdXRzL291dHB1dHMgYXQgdGhlIHNhbWUgdGlt ZS4NCisJICovDQorCXU4IG1heF9hY3RpdmVfaW5wdXRzOw0KKwl1OCBtYXhfYWN0aXZlX291dHB1 dHM7DQorCS8qKg0KKwkgKiBAc3VwcG9ydGVkX2lucHV0czoNCisJICogQHN1cHBvcnRlZF9vdXRw dXRzOg0KKwkgKg0KKwkgKiBiaXRtYXNrIG9mIEJJVChjb21wb25lbnQtPmlkKSBmb3IgdGhlIHN1 cHBvcnRlZCBpbnB1dHMvb3V0cHV0cyBmb3INCisJICogRGVzcmliaW5nIHRoZSBwb3NzaWJpbGl0 aWVzIG9mIGhvdyBhIGNvbXBvbmVudCBpcyBsaW5rZWQgaW50byBwaXBlbGluZS4NCisJICovDQor CXUzMiBzdXBwb3J0ZWRfaW5wdXRzOw0KKwl1MzIgc3VwcG9ydGVkX291dHB1dHM7DQorDQorCS8q Kg0KKwkgKiBAZnVuY3M6IGNoaXAgZnVuY3Rpb25zIHRvIGFjY2VzcyBIVw0KKwkgKi8NCisJc3Ry dWN0IGtvbWVkYV9jb21wb25lbnRfZnVuY3MgKmZ1bmNzOw0KK307DQorDQorLyoqDQorICogc3Ry dWN0IGtvbWVkYV9jb21wb25lbnRfb3V0cHV0DQorICoNCisgKiBhIGNvbXBvbmVudCBoYXMgbXVs dGlwbGUgb3V0cHV0cywgaWYgd2FudCB0byBrbm93IHdoZXJlIHRoZSBkYXRhDQorICogY29tZXMg ZnJvbSwgb25seSBrbm93IHRoZSBjb21wb25lbnQgaXMgbm90IGVub3VnaCwgd2Ugc3RpbGwgbmVl ZCB0byBrbm93DQorICogaXRzIG91dHB1dCBwb3J0DQorICovDQorc3RydWN0IGtvbWVkYV9jb21w b25lbnRfb3V0cHV0IHsNCisJLyoqIEBjb21wb25lbnQ6IGluZGljYXRlIHdoaWNoIGNvbXBvbmVu dCB0aGUgZGF0YSBjb21lcyBmcm9tICovDQorCXN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpjb21w b25lbnQ7DQorCS8qKiBAb3V0cHV0X3BvcnQ6IHRoZSBvdXRwdXQgcG9ydCBvZiB0aGUgJmtvbWVk YV9jb21wb25lbnRfb3V0cHV0LmNvbXBvbmVudCAqLw0KKwl1OCBvdXRwdXRfcG9ydDsNCit9Ow0K Kw0KKy8qKg0KKyAqIHN0cnVjdCBrb21lZGFfY29tcG9uZW50X3N0YXRlDQorICoNCisgKiBjb21w b25lbnRfc3RhdGUgaXMgdGhlIGRhdGEgZmxvdyBjb25maWd1cmF0aW9uIG9mIHRoZSBjb21wb25l bnQsIGFuZCBpdCdzIHRoZQ0KKyAqIHN1cGVyY2xhc3Mgb2YgYWxsIHNwZWNpZmljIGNvbXBvbmVu dF9zdGF0ZSBsaWtlIEBrb21lZGFfbGF5ZXJfc3RhdGUsDQorICogQGtvbWVkYV9zY2FsZXJfc3Rh dGUNCisgKi8NCitzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9zdGF0ZSB7DQorCS8qKiBAb2JqOiB0 cmFja2luZyBjb21wb25lbnRfc3RhdGUgYnkgZHJtX2F0b21pY19zdGF0ZSAqLw0KKwlzdHJ1Y3Qg ZHJtX3ByaXZhdGVfc3RhdGUgb2JqOw0KKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqY29tcG9u ZW50Ow0KKwkvKioNCisJICogQGJpbmRpbmdfdXNlcjoNCisJICogY3VycmVudGx5IGJvdW5kIHVz ZXIsIHRoZSB1c2VyIGNhbiBiZSBjcnRjL3BsYW5lL3diX2Nvbm4sIHdoaWNoIGlzDQorCSAqIHZh bGlkIGRlY2lkZWQgYnkgQGNvbXBvbmVudCBhbmQgQGlucHV0cw0KKwkgKg0KKwkgKiAtICBMYXll cjogaXRzIHVzZXIgYWx3YXlzIGlzIHBsYW5lOw0KKwkgKiAtICBjb21waXovaW1wcm9jL3RpbWlu Z19jdHJscjogdGhlIHVzZXIgaXMgY3J0YzsNCisJICogLSAgd2JfbGF5ZXI6IHdiX2Nvbm47DQor CSAqIC0gIHNjYWxlcjogdXNlciBpcyBwbGFuZSBpZiBpbnB1dCBpcyBsYXllciwgd2JfY29ubiBp ZiB0aGUgaW5wdXQgaXMgY29tcGl6Ow0KKwkgKi8NCisJdW5pb24gew0KKwkJc3RydWN0IGRybV9j cnRjICpjcnRjOw0KKwkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7DQorCQlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqd2JfY29ubjsNCisJCXZvaWQgKmJpbmRpbmdfdXNlcjsNCisJfTsNCisJLyoqDQor CSAqIEBhY3RpdmVfaW5wdXRzOg0KKwkgKg0KKwkgKiBhY3RpdmVfaW5wdXRzIGlzIGJpdG1hc2sg b2YgQGlucHV0cyBpbmRleA0KKwkgKg0KKwkgKiAtICBhY3RpdmVfaW5wdXRzID0gY2hhbmdlZF9h Y3RpdmVfaW5wdXRzICsgdW5jaGFuZ2VkX2FjdGl2ZV9pbnB1dHMNCisJICogLSAgYWZmZWN0ZWRf aW5wdXRzID0gb2xkLT5hY3RpdmVfaW5wdXRzICsgbmV3LT5hY3RpdmVfaW5wdXRzOw0KKwkgKiAt ICBkaXNhYmxpbmdfaW5wdXRzID0gYWZmZWN0ZWRfaW5wdXRzIF4gYWN0aXZlX2lucHV0czsNCisJ ICogLSAgY2hhbmdlZF9pbnB1dHMgPSBkaXNhYmxpbmdfaW5wdXRzICsgY2hhbmdlZF9hY3RpdmVf aW5wdXRzOw0KKwkgKg0KKwkgKiBOT1RFOg0KKwkgKiBjaGFuZ2VkX2lucHV0cyBkb2Vzbid0IGlu Y2x1ZGUgYWxsIGFjdGl2ZV9pbnB1dCBidXQgb25seQ0KKwkgKiBAY2hhbmdlZF9hY3RpdmVfaW5w dXRzLCBhbmQgdGhpcyBiaXRtYXNrIGNhbiBiZSB1c2VkIGluIGNoaXANCisJICogbGV2ZWwgZm9y IGRpcnR5IHVwZGF0ZS4NCisJICovDQorCXUxNiBhY3RpdmVfaW5wdXRzOw0KKwl1MTYgY2hhbmdl ZF9hY3RpdmVfaW5wdXRzOw0KKwl1MTYgYWZmZWN0ZWRfaW5wdXRzOw0KKwkvKioNCisJICogQGlu cHV0czoNCisJICoNCisJICogdGhlIHNwZWNpZmljIGlucHV0c1tpXSBvbmx5IHZhbGlkIG9uIEJJ VChpKSBoYXMgYmVlbiBzZXQgaW4NCisJICogQGFjdGl2ZV9pbnB1dHMsIGlmIG5vdCB0aGUgaW5w dXRzW2ldIGlzIHVuZGVmaW5lZC4NCisJICovDQorCXN0cnVjdCBrb21lZGFfY29tcG9uZW50X291 dHB1dCBpbnB1dHNbS09NRURBX0NPTVBPTkVOVF9OX0lOUFVUU107DQorfTsNCisNCitzdGF0aWMg aW5saW5lIHUxNiBjb21wb25lbnRfZGlzYWJsaW5nX2lucHV0cyhzdHJ1Y3Qga29tZWRhX2NvbXBv bmVudF9zdGF0ZSAqc3QpDQorew0KKwlyZXR1cm4gc3QtPmFmZmVjdGVkX2lucHV0cyBeIHN0LT5h Y3RpdmVfaW5wdXRzOw0KK30NCisNCitzdGF0aWMgaW5saW5lIHUxNiBjb21wb25lbnRfY2hhbmdl ZF9pbnB1dHMoc3RydWN0IGtvbWVkYV9jb21wb25lbnRfc3RhdGUgKnN0KQ0KK3sNCisJcmV0dXJu IGNvbXBvbmVudF9kaXNhYmxpbmdfaW5wdXRzKHN0KSB8IHN0LT5jaGFuZ2VkX2FjdGl2ZV9pbnB1 dHM7DQorfQ0KKw0KKyNkZWZpbmUgdG9fY29tcChfX2MpCSgoKF9fYykgPT0gTlVMTCkgPyBOVUxM IDogJigoX19jKS0+YmFzZSkpDQorI2RlZmluZSB0b19jcG9zKF9fYykJKChzdHJ1Y3Qga29tZWRh X2NvbXBvbmVudCAqKikmKF9fYykpDQorDQorLyogdGhlc2Ugc3RydWN0dXJlcyBhcmUgZ29pbmcg dG8gYmUgZmlsbGVkIGluIGluIHV0dXJlIHBhdGNoZXMgKi8NCitzdHJ1Y3Qga29tZWRhX2xheWVy IHsNCisJc3RydWN0IGtvbWVkYV9jb21wb25lbnQgYmFzZTsNCisJLyogbGF5ZXIgc3BlY2lmaWMg ZmVhdHVyZXMgYW5kIGNhcHMgKi8NCit9Ow0KKw0KK3N0cnVjdCBrb21lZGFfbGF5ZXJfc3RhdGUg ew0KKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9zdGF0ZSBiYXNlOw0KKwkvKiBsYXllciBzcGVj aWZpYyBjb25maWd1cmF0aW9uIHN0YXRlICovDQorfTsNCisNCitzdHJ1Y3Qga29tZWRhX2NvbXBp eiB7DQorCXN0cnVjdCBrb21lZGFfY29tcG9uZW50IGJhc2U7DQorCS8qIGNvbXBpeiBzcGVjaWZp YyBmZWF0dXJlcyBhbmQgY2FwcyAqLw0KK307DQorDQorc3RydWN0IGtvbWVkYV9jb21waXpfc3Rh dGUgew0KKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9zdGF0ZSBiYXNlOw0KKwkvKiBjb21waXog c3BlY2lmaWMgY29uZmlndXJhdGlvbiBzdGF0ZSAqLw0KK307DQorDQorc3RydWN0IGtvbWVkYV9z Y2FsZXIgew0KKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCBiYXNlOw0KKwkvKiBzY2FsZXIgZmVh dHVyZXMgYW5kIGNhcHMgKi8NCit9Ow0KKw0KK3N0cnVjdCBrb21lZGFfc2NhbGVyX3N0YXRlIHsN CisJc3RydWN0IGtvbWVkYV9jb21wb25lbnRfc3RhdGUgYmFzZTsNCit9Ow0KKw0KK3N0cnVjdCBr b21lZGFfaW1wcm9jIHsNCisJc3RydWN0IGtvbWVkYV9jb21wb25lbnQgYmFzZTsNCit9Ow0KKw0K K3N0cnVjdCBrb21lZGFfaW1wcm9jX3N0YXRlIHsNCisJc3RydWN0IGtvbWVkYV9jb21wb25lbnRf c3RhdGUgYmFzZTsNCit9Ow0KKw0KKy8qIGRpc3BsYXkgdGltaW5nIGNvbnRyb2xsZXIgKi8NCitz dHJ1Y3Qga29tZWRhX3RpbWluZ19jdHJsciB7DQorCXN0cnVjdCBrb21lZGFfY29tcG9uZW50IGJh c2U7DQorfTsNCisNCitzdHJ1Y3Qga29tZWRhX3RpbWluZ19jdHJscl9zdGF0ZSB7DQorCXN0cnVj dCBrb21lZGFfY29tcG9uZW50X3N0YXRlIGJhc2U7DQorfTsNCisNCisvKiogc3RydWN0IGtvbWVk YV9waXBlbGluZV9mdW5jcyAqLw0KK3N0cnVjdCBrb21lZGFfcGlwZWxpbmVfZnVuY3Mgew0KKwkv KiBkdW1wX3JlZ2lzdGVyOiBPcHRpb25hbCwgZHVtcCByZWdpc3RlcnMgdG8gc2VxX2ZpbGUgKi8N CisJdm9pZCAoKmR1bXBfcmVnaXN0ZXIpKHN0cnVjdCBrb21lZGFfcGlwZWxpbmUgKnBwbCwgc3Ry dWN0IHNlcV9maWxlICpzZik7DQorfTsNCisNCisvKioNCisgKiBzdHJ1Y3Qga29tZWRhX3BpcGVs aW5lDQorICoNCisgKiBSZXByZXNlbnQgYSBjb21wbGV0ZSBkaXNwbGF5IHBpcGVsaW5lIGFuZCBo b2xkIGFsbCBmdW5jdGlvbmFsIGNvbXBvbmVudHMuDQorICovDQorc3RydWN0IGtvbWVkYV9waXBl bGluZSB7DQorCS8qKiBAb2JqOiBsaW5rIHBpcGVsaW5lIGFzIHByaXZhdGUgb2JqIG9mIGRybV9h dG9taWNfc3RhdGUgKi8NCisJc3RydWN0IGRybV9wcml2YXRlX29iaiBvYmo7DQorCS8qKiBAbWRl djogdGhlIHBhcmVudCBrb21lZGFfZGV2ICovDQorCXN0cnVjdCBrb21lZGFfZGV2ICptZGV2Ow0K KwkvKiogQHB4bGNsazogcGl4ZWwgY2xvY2sgKi8NCisJc3RydWN0IGNsayAqcHhsY2xrOw0KKwkv KiogQGFjbGs6IEFYSSBjbG9jayAqLw0KKwlzdHJ1Y3QgY2xrICphY2xrOw0KKwkvKiogQGlkOiBw aXBlbGluZSBpZCAqLw0KKwlpbnQgaWQ7DQorCS8qKiBAYXZhaWxfY29tcHM6IGF2YWlsYWJsZSBj b21wb25lbnRzIG1hc2sgb2YgcGlwZWxpbmUgKi8NCisJdTMyIGF2YWlsX2NvbXBzOw0KKwlpbnQg bl9sYXllcnM7DQorCXN0cnVjdCBrb21lZGFfbGF5ZXIgKmxheWVyc1tLT01FREFfUElQRUxJTkVf TUFYX0xBWUVSU107DQorCWludCBuX3NjYWxlcnM7DQorCXN0cnVjdCBrb21lZGFfc2NhbGVyICpz Y2FsZXJzW0tPTUVEQV9QSVBFTElORV9NQVhfU0NBTEVSU107DQorCXN0cnVjdCBrb21lZGFfY29t cGl6ICpjb21waXo7DQorCXN0cnVjdCBrb21lZGFfbGF5ZXIgICp3Yl9sYXllcjsNCisJc3RydWN0 IGtvbWVkYV9pbXByb2MgKmltcHJvYzsNCisJc3RydWN0IGtvbWVkYV90aW1pbmdfY3RybHIgKmN0 cmxyOw0KKwlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lX2Z1bmNzICpmdW5jczsgLyogcHJpdmF0ZSBw aXBlbGluZSBmdW5jdGlvbnMgKi8NCit9Ow0KKw0KKy8qKg0KKyAqIHN0cnVjdCBrb21lZGFfcGlw ZWxpbmVfc3RhdGUNCisgKg0KKyAqIE5PVEU6IFVubGlrZSB0aGUgcGlwZWxpbmUsIHBpcGVsaW5l X3N0YXRlIGRvZXNu4oCZdCBnYXRoZXIgYW55IGNvbXBvbmVudF9zdGF0ZQ0KKyAqIGludG8gaXQs IEl0IGJlY2F1c2UgYWxsIGNvbXBvbmVudCB3aWxsIGJlIG1hbmFnZWQgYnkgZHJtX2F0b21pY19z dGF0ZS4NCisgKi8NCitzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lX3N0YXRlIHsNCisJLyoqIEBvYmo6 IHRyYWNraW5nIHBpcGVsaW5lX3N0YXRlIGJ5IGRybV9hdG9taWNfc3RhdGUgKi8NCisJc3RydWN0 IGRybV9wcml2YXRlX3N0YXRlIG9iajsNCisJc3RydWN0IGtvbWVkYV9waXBlbGluZSAqcHBsOw0K KwkvKiogQGNydGM6IGN1cnJlbnRseSBib3VuZCBjcnRjICovDQorCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YzsNCisJLyoqDQorCSAqIEBhY3RpdmVfY29tcHM6DQorCSAqDQorCSAqIGJpdG1hc2sgLSBC SVQoY29tcG9uZW50LT5pZCkgb2YgYWN0aXZlIGNvbXBvbmVudHMNCisJICovDQorCXUzMiBhY3Rp dmVfY29tcHM7DQorfTsNCisNCisjZGVmaW5lIHRvX2xheWVyKGMpCWNvbnRhaW5lcl9vZihjLCBz dHJ1Y3Qga29tZWRhX2xheWVyLCBiYXNlKQ0KKyNkZWZpbmUgdG9fY29tcGl6KGMpCWNvbnRhaW5l cl9vZihjLCBzdHJ1Y3Qga29tZWRhX2NvbXBpeiwgYmFzZSkNCisjZGVmaW5lIHRvX3NjYWxlcihj KQljb250YWluZXJfb2YoYywgc3RydWN0IGtvbWVkYV9zY2FsZXIsIGJhc2UpDQorI2RlZmluZSB0 b19pbXByb2MoYykJY29udGFpbmVyX29mKGMsIHN0cnVjdCBrb21lZGFfaW1wcm9jLCBiYXNlKQ0K KyNkZWZpbmUgdG9fY3RybHIoYykJY29udGFpbmVyX29mKGMsIHN0cnVjdCBrb21lZGFfdGltaW5n X2N0cmxyLCBiYXNlKQ0KKw0KKyNkZWZpbmUgdG9fbGF5ZXJfc3QoYykJY29udGFpbmVyX29mKGMs IHN0cnVjdCBrb21lZGFfbGF5ZXJfc3RhdGUsIGJhc2UpDQorI2RlZmluZSB0b19jb21waXpfc3Qo YykJY29udGFpbmVyX29mKGMsIHN0cnVjdCBrb21lZGFfY29tcGl6X3N0YXRlLCBiYXNlKQ0KKyNk ZWZpbmUgdG9fc2NhbGVyX3N0KGMpIGNvbnRhaW5lcl9vZihjLCBzdHJ1Y3Qga29tZWRhX3NjYWxl cl9zdGF0ZSwgYmFzZSkNCisjZGVmaW5lIHRvX2ltcHJvY19zdChjKQljb250YWluZXJfb2YoYywg c3RydWN0IGtvbWVkYV9pbXByb2Nfc3RhdGUsIGJhc2UpDQorI2RlZmluZSB0b19jdHJscl9zdChj KQljb250YWluZXJfb2YoYywgc3RydWN0IGtvbWVkYV90aW1pbmdfY3RybHJfc3RhdGUsIGJhc2Up DQorDQorLyogcGlwZWxpbmUgQVBJcyAqLw0KK3N0cnVjdCBrb21lZGFfcGlwZWxpbmUgKg0KK2tv bWVkYV9waXBlbGluZV9hZGQoc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYsIHNpemVfdCBzaXplLA0K KwkJICAgIHN0cnVjdCBrb21lZGFfcGlwZWxpbmVfZnVuY3MgKmZ1bmNzKTsNCit2b2lkIGtvbWVk YV9waXBlbGluZV9kZXN0cm95KHN0cnVjdCBrb21lZGFfZGV2ICptZGV2LA0KKwkJCSAgICAgc3Ry dWN0IGtvbWVkYV9waXBlbGluZSAqcHBsKTsNCisNCitzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAq DQora29tZWRhX3BpcGVsaW5lX2dldF9jb21wb25lbnQoc3RydWN0IGtvbWVkYV9waXBlbGluZSAq cHBsLCBpbnQgaWQpOw0KKw0KKy8qIGNvbXBvbmVudCBBUElzICovDQorc3RydWN0IGtvbWVkYV9j b21wb25lbnQgKg0KK2tvbWVkYV9jb21wb25lbnRfYWRkKHN0cnVjdCBrb21lZGFfcGlwZWxpbmUg KnBwbCwNCisJCSAgICAgc2l6ZV90IGNvbXBfc3osIHUzMiBpZCwgdTMyIGh3X2lkLA0KKwkJICAg ICBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9mdW5jcyAqZnVuY3MsDQorCQkgICAgIHU4IG1heF9h Y3RpdmVfaW5wdXRzLCB1MzIgc3VwcG9ydGVkX2lucHV0cywNCisJCSAgICAgdTggbWF4X2FjdGl2 ZV9vdXRwdXRzLCB1MzIgX19pb21lbSAqcmVnLA0KKwkJICAgICBjb25zdCBjaGFyICpuYW1lX2Zt dCwgLi4uKTsNCisNCit2b2lkIGtvbWVkYV9jb21wb25lbnRfZGVzdHJveShzdHJ1Y3Qga29tZWRh X2RldiAqbWRldiwNCisJCQkgICAgICBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqYyk7DQorDQor I2VuZGlmIC8qIF9LT01FREFfUElQRUxJTkVfSF8qLw0KLS0gDQoyLjE3LjENCg0K