Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1559725ybz; Thu, 30 Apr 2020 01:18:59 -0700 (PDT) X-Google-Smtp-Source: APiQypLDjK/CjKwmOqC0iAjbWUAqd1wWCetTtVuxiLB2NL3XlIvQE/BfxpLBRBXju8GvIKa+x28Y X-Received: by 2002:a05:6402:1adc:: with SMTP id ba28mr1579841edb.336.1588234739027; Thu, 30 Apr 2020 01:18:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588234739; cv=none; d=google.com; s=arc-20160816; b=GKq2bMA+clUWNbdZRT3uB1o9zLiAdT6AkjmK4HNGz/pUjsn30ausqGRqjcJ79JGtDI K/6LJfCXdjo8PLoUdSVNz0m1r83aiNXvpesLbvSuFMJv3F+9QhtW7g7LQwHhVm3/iBtH BijgNjftvHVNnZ+JrrdT/QSEyMx5SJRJ/QPyCHkFvMU59V1cUEMGv94cCR5WwC0ypoWJ aX5+IH371Yn5Sd0xvrBy8qZjYiudiKW9cKjY4kkCzJ3zpxacJfsCrG4gSlV+Uh5fRFUZ SwV06TCE6908r/orGEOMjpjchJQ3v8UMQe1QQiWgkxmYTRB8GsAaPOTQ8f+C+GW+ZDxv +JdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=T1IsRcXqZalGl+MREkX3NQDS+CM9kjFsPBXIszY21wE=; b=KIdyqas8jhb/EJ5KsqfD7Rz+hefrooQz4SVdpxAVhEZ8sSbckRkUKZj9d+iB4+cJXu vKZRWjVW3hCwtueyWIQwVr3U9jHNbW/h/CGs0fbRcefJLyjqxGre/TfcEW3qkTwcZv4f U7sJ4AbY9s4H4E4HgAfPTFGv2kzgSBKoFESUZDkQ+S5eIS1C2j9vtuimwHokS/HquZDl 4YYug2uL5zUnwdMfxd6qRKCEb3uED+RYISfYIWGksCWk5/KmdVF/yBM4BEhWBOTU2XvM F+pFy+vNFh15bihm0n8617AshMO1ElO7sQui8scnQEdcTVr/BrWA+6ZpRPz2RIuddpxR JnuQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=Y01Hg1aI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ce18si5444556ejc.54.2020.04.30.01.18.34; Thu, 30 Apr 2020 01:18:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=Y01Hg1aI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726819AbgD3IOR (ORCPT + 99 others); Thu, 30 Apr 2020 04:14:17 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:56191 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726127AbgD3IOQ (ORCPT ); Thu, 30 Apr 2020 04:14:16 -0400 X-UUID: c3208a0634844d02bf76677dba15243c-20200430 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=T1IsRcXqZalGl+MREkX3NQDS+CM9kjFsPBXIszY21wE=; b=Y01Hg1aI5u7oYpHXAVAMLx+j0xT/O48MA9a7gNWTgL0kBMlP6SUEa7jtXKHeC6MPQbSNGVWgRQKJk0DtJM+WX6QFwlGSR4TTkW4QkpCQWmsRZ6LCotGWVRiqLqBM6ilE2z/znMrzDErtgVcpp9bHXLQLQDNIVfEix9x8/Nyl4v4=; X-UUID: c3208a0634844d02bf76677dba15243c-20200430 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 866509331; Thu, 30 Apr 2020 16:14:05 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs08n2.mediatek.inc (172.21.101.56) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 30 Apr 2020 16:14:04 +0800 Received: from mtkswgap22.mediatek.inc (172.21.77.33) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 30 Apr 2020 16:14:04 +0800 From: Frankie Chang To: Todd Kjos , Joel Fernandes , Greg Kroah-Hartman CC: Todd Kjos , Martijn Coenen , =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= , Christian Brauner , LKML , , wsd_upstream , Jian-Min Liu , Frankie Chang Subject: [PATCH v3 1/1] binder: transaction latency tracking for user build Date: Thu, 30 Apr 2020 16:13:59 +0800 Message-ID: <1588234439-7959-2-git-send-email-Frankie.Chang@mediatek.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1588234439-7959-1-git-send-email-Frankie.Chang@mediatek.com> References: <1586929044-12708-2-git-send-email-Frankie.Chang@mediatek.com> <1588234439-7959-1-git-send-email-Frankie.Chang@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-SNTS-SMTP: 1DB05B56B1754AD3BCD1863515200A19BF2FDBFB90F5622C6DA8C3EBF631DC792000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org UmVjb3JkIHN0YXJ0L2VuZCB0aW1lc3RhbXAgZm9yIGJpbmRlciB0cmFuc2FjdGlvbi4NCldoZW4g dHJhbnNhY3Rpb24gaXMgY29tcGxldGVkIG9yIHRyYW5zYWN0aW9uIGlzIGZyZWUsDQppdCB3b3Vs ZCBiZSBjaGVja2VkIGlmIHRyYW5zYWN0aW9uIGxhdGVuY3kgb3ZlciB0aHJlc2hvbGQgKDIgc2Vj KSwNCmlmIHllcywgcHJpbnRpbmcgcmVsYXRlZCBpbmZvcm1hdGlvbiBmb3IgdHJhY2luZy4NCg0K LyogSW1wbGVtZW50IGRldGFpbHMgKi8NCi0gQWRkIHRyYWNlcG9pbnQvdHJhY2UgYXQgZnJlZSB0 cmFuc2FjdGlvbi4NCiAgU2luY2UgdGhlIG9yaWdpbmFsIHRyYWNlX2JpbmRlcl90cmFuc2FjdGlv bl9yZWNlaXZlZCBjYW5ub3QNCiAgcHJlY2lzZWx5IHByZXNlbnQgdGhlIHJlYWwgZmluaXNoZWQg dGltZSBvZiB0cmFuc2FjdGlvbiwgYWRkaW5nIGENCiAgdHJhY2VfYmluZGVyX2ZyZWVfdHJhbnNh Y3Rpb24gYXQgdGhlIHBvaW50IG9mIGZyZWUgdHJhbnNhY3Rpb24NCiAgbWF5IGJlIG1vcmUgY2xv c2UgdG8gaXQuDQoNCi0gQWRkIGxhdGVuY3kgdHJhY2VyIG1vZHVsZSB0byBtb25pdG9yIHNsb3cg dHJhbnNhY3Rpb24uDQogIFRoZSB0cmFjZV9iaW5kZXJfZnJlZV90cmFuc2FjdGlvbiB3b3VsZCBu b3QgYmUgZW5hYmxlZA0KICBieSBkZWZhdWx0LiBNb25pdG9yaW5nIHdoaWNoIHRyYW5zYWN0aW9u IGlzIHRvbyBzbG93IHRvDQogIGNhdXNlIHNvbWUgb2YgZXhjZXB0aW9ucyBpcyBpbXBvcnRhbnQu IFNvIHdlIGhvb2sgdGhlDQogIHRyYWNlcG9pbnQgdG8gY2FsbCB0aGUgbW9uaXRvciBmdW5jdGlv bi4NCg0KLSBNb3ZlIHNvbWUgc3RydWN0IGZyb20gY29yZSBmaWxlIHRvIGhlYWRlciBmaWxlLg0K ICBOZWVkIHNvbWUgc3RydWN0IGRlZmluZWQgaW4gY29yZSBmaWxlIGluIGxhdGVuY3kgdHJhY2Ug bW9kdWxlDQogIEluIGFkZGl0aW9uLCBtb3ZpbmcgYWxsIHN0cnVjdHMgdG8gaGVhZGVyIGZpbGUg bWFrZXMgbW9kdWxlDQogIG1vcmUgZXh0ZW5kYWJsZSwgYW5kIG1ha2UgYWxsIHRoZXNlIHN0cmN1 dHMgdG8gYmUgZGVmaW5lZA0KICBpbiB0aGUgc2FtZSBmaWxlLg0KDQpTaWduZWQtb2ZmLWJ5OiBG cmFua2llIENoYW5nIDxGcmFua2llLkNoYW5nQG1lZGlhdGVrLmNvbT4NCi0tLQ0KIGRyaXZlcnMv YW5kcm9pZC9LY29uZmlnICAgICAgICAgICAgICAgICB8ICAgIDggKw0KIGRyaXZlcnMvYW5kcm9p ZC9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgIDEgKw0KIGRyaXZlcnMvYW5kcm9pZC9iaW5k ZXIuYyAgICAgICAgICAgICAgICB8ICA0MDggKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQogZHJpdmVycy9hbmRyb2lkL2JpbmRlcl9pbnRlcm5hbC5oICAgICAgIHwgIDQxNiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrDQogZHJpdmVycy9hbmRyb2lkL2JpbmRlcl9sYXRlbmN5 X3RyYWNlci5jIHwgIDEwNSArKysrKysrKw0KIGRyaXZlcnMvYW5kcm9pZC9iaW5kZXJfdHJhY2Uu aCAgICAgICAgICB8ICAgNDkgKysrKw0KIDYgZmlsZXMgY2hhbmdlZCwgNTgzIGluc2VydGlvbnMo KyksIDQwNCBkZWxldGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9hbmRyb2lk L2JpbmRlcl9sYXRlbmN5X3RyYWNlci5jDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FuZHJvaWQv S2NvbmZpZyBiL2RyaXZlcnMvYW5kcm9pZC9LY29uZmlnDQppbmRleCA2ZmRmMmFiLi43YmE4MGVi IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9hbmRyb2lkL0tjb25maWcNCisrKyBiL2RyaXZlcnMvYW5k cm9pZC9LY29uZmlnDQpAQCAtNTQsNiArNTQsMTQgQEAgY29uZmlnIEFORFJPSURfQklOREVSX0lQ Q19TRUxGVEVTVA0KIAkgIGV4aGF1c3RpdmVseSB3aXRoIGNvbWJpbmF0aW9ucyBvZiB2YXJpb3Vz IGJ1ZmZlciBzaXplcyBhbmQNCiAJICBhbGlnbm1lbnRzLg0KIA0KK2NvbmZpZyBCSU5ERVJfVVNF Ul9UUkFDS0lORw0KKwlib29sICJBbmRyb2lkIEJpbmRlciB0cmFuc2FjdGlvbiB0cmFja2luZyIN CisJaGVscA0KKwkgIFVzZWQgZm9yIHRyYWNrIGFibm9ybWFsIGJpbmRlciB0cmFuc2FjdGlvbiB3 aGljaCBpcyBvdmVyIDIgc2Vjb25kcywNCisJICB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBkb25l IG9yIGJlIGZyZWUsIHRoaXMgdHJhbnNhY3Rpb24gd291bGQgYmUNCisJICBjaGVja2VkIHdoZXRo ZXIgaXQgZXhlY3V0ZWQgb3ZlcnRpbWUuDQorCSAgSWYgeWVzLCBwcmludGluZyBvdXQgdGhlIGRl dGFpbCBpbmZvIGFib3V0IGl0Lg0KKw0KIGVuZGlmICMgaWYgQU5EUk9JRA0KIA0KIGVuZG1lbnUN CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FuZHJvaWQvTWFrZWZpbGUgYi9kcml2ZXJzL2FuZHJvaWQv TWFrZWZpbGUNCmluZGV4IGM5ZDNkMGM5Li41NTJlOGFjIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9h bmRyb2lkL01ha2VmaWxlDQorKysgYi9kcml2ZXJzL2FuZHJvaWQvTWFrZWZpbGUNCkBAIC00LDMg KzQsNCBAQCBjY2ZsYWdzLXkgKz0gLUkkKHNyYykJCQkjIG5lZWRlZCBmb3IgdHJhY2UgZXZlbnRz DQogb2JqLSQoQ09ORklHX0FORFJPSURfQklOREVSRlMpCQkrPSBiaW5kZXJmcy5vDQogb2JqLSQo Q09ORklHX0FORFJPSURfQklOREVSX0lQQykJKz0gYmluZGVyLm8gYmluZGVyX2FsbG9jLm8NCiBv YmotJChDT05GSUdfQU5EUk9JRF9CSU5ERVJfSVBDX1NFTEZURVNUKSArPSBiaW5kZXJfYWxsb2Nf c2VsZnRlc3Qubw0KK29iai0kKENPTkZJR19CSU5ERVJfVVNFUl9UUkFDS0lORykJKz0gYmluZGVy X2xhdGVuY3lfdHJhY2VyLm8NCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FuZHJvaWQvYmluZGVyLmMg Yi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyLmMNCmluZGV4IGE2YjIwODIuLmI4OWQ3NWEgMTAwNjQ0 DQotLS0gYS9kcml2ZXJzL2FuZHJvaWQvYmluZGVyLmMNCisrKyBiL2RyaXZlcnMvYW5kcm9pZC9i aW5kZXIuYw0KQEAgLTE2MCwyNCArMTYwLDYgQEAgc3RhdGljIGludCBiaW5kZXJfc2V0X3N0b3Bf b25fdXNlcl9lcnJvcihjb25zdCBjaGFyICp2YWwsDQogI2RlZmluZSB0b19iaW5kZXJfZmRfYXJy YXlfb2JqZWN0KGhkcikgXA0KIAljb250YWluZXJfb2YoaGRyLCBzdHJ1Y3QgYmluZGVyX2ZkX2Fy cmF5X29iamVjdCwgaGRyKQ0KIA0KLWVudW0gYmluZGVyX3N0YXRfdHlwZXMgew0KLQlCSU5ERVJf U1RBVF9QUk9DLA0KLQlCSU5ERVJfU1RBVF9USFJFQUQsDQotCUJJTkRFUl9TVEFUX05PREUsDQot CUJJTkRFUl9TVEFUX1JFRiwNCi0JQklOREVSX1NUQVRfREVBVEgsDQotCUJJTkRFUl9TVEFUX1RS QU5TQUNUSU9OLA0KLQlCSU5ERVJfU1RBVF9UUkFOU0FDVElPTl9DT01QTEVURSwNCi0JQklOREVS X1NUQVRfQ09VTlQNCi19Ow0KLQ0KLXN0cnVjdCBiaW5kZXJfc3RhdHMgew0KLQlhdG9taWNfdCBi cltfSU9DX05SKEJSX0ZBSUxFRF9SRVBMWSkgKyAxXTsNCi0JYXRvbWljX3QgYmNbX0lPQ19OUihC Q19SRVBMWV9TRykgKyAxXTsNCi0JYXRvbWljX3Qgb2JqX2NyZWF0ZWRbQklOREVSX1NUQVRfQ09V TlRdOw0KLQlhdG9taWNfdCBvYmpfZGVsZXRlZFtCSU5ERVJfU1RBVF9DT1VOVF07DQotfTsNCi0N CiBzdGF0aWMgc3RydWN0IGJpbmRlcl9zdGF0cyBiaW5kZXJfc3RhdHM7DQogDQogc3RhdGljIGlu bGluZSB2b2lkIGJpbmRlcl9zdGF0c19kZWxldGVkKGVudW0gYmluZGVyX3N0YXRfdHlwZXMgdHlw ZSkNCkBAIC0yMTMsMjc4ICsxOTUsMTEgQEAgc3RhdGljIHN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rp b25fbG9nX2VudHJ5ICpiaW5kZXJfdHJhbnNhY3Rpb25fbG9nX2FkZCgNCiAJcmV0dXJuIGU7DQog fQ0KIA0KLS8qKg0KLSAqIHN0cnVjdCBiaW5kZXJfd29yayAtIHdvcmsgZW5xdWV1ZWQgb24gYSB3 b3JrbGlzdA0KLSAqIEBlbnRyeTogICAgICAgICAgICAgbm9kZSBlbnF1ZXVlZCBvbiBsaXN0DQot ICogQHR5cGU6ICAgICAgICAgICAgICB0eXBlIG9mIHdvcmsgdG8gYmUgcGVyZm9ybWVkDQotICoN Ci0gKiBUaGVyZSBhcmUgc2VwYXJhdGUgd29yayBsaXN0cyBmb3IgcHJvYywgdGhyZWFkLCBhbmQg bm9kZSAoYXN5bmMpLg0KLSAqLw0KLXN0cnVjdCBiaW5kZXJfd29yayB7DQotCXN0cnVjdCBsaXN0 X2hlYWQgZW50cnk7DQotDQotCWVudW0gew0KLQkJQklOREVSX1dPUktfVFJBTlNBQ1RJT04gPSAx LA0KLQkJQklOREVSX1dPUktfVFJBTlNBQ1RJT05fQ09NUExFVEUsDQotCQlCSU5ERVJfV09SS19S RVRVUk5fRVJST1IsDQotCQlCSU5ERVJfV09SS19OT0RFLA0KLQkJQklOREVSX1dPUktfREVBRF9C SU5ERVIsDQotCQlCSU5ERVJfV09SS19ERUFEX0JJTkRFUl9BTkRfQ0xFQVIsDQotCQlCSU5ERVJf V09SS19DTEVBUl9ERUFUSF9OT1RJRklDQVRJT04sDQotCX0gdHlwZTsNCi19Ow0KLQ0KLXN0cnVj dCBiaW5kZXJfZXJyb3Igew0KLQlzdHJ1Y3QgYmluZGVyX3dvcmsgd29yazsNCi0JdWludDMyX3Qg Y21kOw0KLX07DQotDQotLyoqDQotICogc3RydWN0IGJpbmRlcl9ub2RlIC0gYmluZGVyIG5vZGUg Ym9va2tlZXBpbmcNCi0gKiBAZGVidWdfaWQ6ICAgICAgICAgICAgIHVuaXF1ZSBJRCBmb3IgZGVi dWdnaW5nDQotICogICAgICAgICAgICAgICAgICAgICAgICAoaW52YXJpYW50IGFmdGVyIGluaXRp YWxpemVkKQ0KLSAqIEBsb2NrOiAgICAgICAgICAgICAgICAgbG9jayBmb3Igbm9kZSBmaWVsZHMN Ci0gKiBAd29yazogICAgICAgICAgICAgICAgIHdvcmtsaXN0IGVsZW1lbnQgZm9yIG5vZGUgd29y aw0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAcHJvYy0+aW5uZXJf bG9jaykNCi0gKiBAcmJfbm9kZTogICAgICAgICAgICAgIGVsZW1lbnQgZm9yIHByb2MtPm5vZGVz IHRyZWUNCi0gKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQHByb2MtPmlu bmVyX2xvY2spDQotICogQGRlYWRfbm9kZTogICAgICAgICAgICBlbGVtZW50IGZvciBiaW5kZXJf ZGVhZF9ub2RlcyBsaXN0DQotICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5 IGJpbmRlcl9kZWFkX25vZGVzX2xvY2spDQotICogQHByb2M6ICAgICAgICAgICAgICAgICBiaW5k ZXJfcHJvYyB0aGF0IG93bnMgdGhpcyBub2RlDQotICogICAgICAgICAgICAgICAgICAgICAgICAo aW52YXJpYW50IGFmdGVyIGluaXRpYWxpemVkKQ0KLSAqIEByZWZzOiAgICAgICAgICAgICAgICAg bGlzdCBvZiByZWZlcmVuY2VzIG9uIHRoaXMgbm9kZQ0KLSAqICAgICAgICAgICAgICAgICAgICAg ICAgKHByb3RlY3RlZCBieSBAbG9jaykNCi0gKiBAaW50ZXJuYWxfc3Ryb25nX3JlZnM6IHVzZWQg dG8gdGFrZSBzdHJvbmcgcmVmZXJlbmNlcyB3aGVuDQotICogICAgICAgICAgICAgICAgICAgICAg ICBpbml0aWF0aW5nIGEgdHJhbnNhY3Rpb24NCi0gKiAgICAgICAgICAgICAgICAgICAgICAgIChw cm90ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xvY2sgaWYgQHByb2MNCi0gKiAgICAgICAgICAgICAg ICAgICAgICAgIGFuZCBieSBAbG9jaykNCi0gKiBAbG9jYWxfd2Vha19yZWZzOiAgICAgIHdlYWsg dXNlciByZWZzIGZyb20gbG9jYWwgcHJvY2Vzcw0KLSAqICAgICAgICAgICAgICAgICAgICAgICAg KHByb3RlY3RlZCBieSBAcHJvYy0+aW5uZXJfbG9jayBpZiBAcHJvYw0KLSAqICAgICAgICAgICAg ICAgICAgICAgICAgYW5kIGJ5IEBsb2NrKQ0KLSAqIEBsb2NhbF9zdHJvbmdfcmVmczogICAgc3Ry b25nIHVzZXIgcmVmcyBmcm9tIGxvY2FsIHByb2Nlc3MNCi0gKiAgICAgICAgICAgICAgICAgICAg ICAgIChwcm90ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xvY2sgaWYgQHByb2MNCi0gKiAgICAgICAg ICAgICAgICAgICAgICAgIGFuZCBieSBAbG9jaykNCi0gKiBAdG1wX3JlZnM6ICAgICAgICAgICAg IHRlbXBvcmFyeSBrZXJuZWwgcmVmcw0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3Rl Y3RlZCBieSBAcHJvYy0+aW5uZXJfbG9jayB3aGlsZSBAcHJvYw0KLSAqICAgICAgICAgICAgICAg ICAgICAgICAgaXMgdmFsaWQsIGFuZCBieSBiaW5kZXJfZGVhZF9ub2Rlc19sb2NrDQotICogICAg ICAgICAgICAgICAgICAgICAgICBpZiBAcHJvYyBpcyBOVUxMLiBEdXJpbmcgaW5jL2RlYyBhbmQg bm9kZSByZWxlYXNlDQotICogICAgICAgICAgICAgICAgICAgICAgICBpdCBpcyBhbHNvIHByb3Rl Y3RlZCBieSBAbG9jayB0byBwcm92aWRlIHNhZmV0eQ0KLSAqICAgICAgICAgICAgICAgICAgICAg ICAgYXMgdGhlIG5vZGUgZGllcyBhbmQgQHByb2MgYmVjb21lcyBOVUxMKQ0KLSAqIEBwdHI6ICAg ICAgICAgICAgICAgICAgdXNlcnNwYWNlIHBvaW50ZXIgZm9yIG5vZGUNCi0gKiAgICAgICAgICAg ICAgICAgICAgICAgIChpbnZhcmlhbnQsIG5vIGxvY2sgbmVlZGVkKQ0KLSAqIEBjb29raWU6ICAg ICAgICAgICAgICAgdXNlcnNwYWNlIGNvb2tpZSBmb3Igbm9kZQ0KLSAqICAgICAgICAgICAgICAg ICAgICAgICAgKGludmFyaWFudCwgbm8gbG9jayBuZWVkZWQpDQotICogQGhhc19zdHJvbmdfcmVm OiAgICAgICB1c2Vyc3BhY2Ugbm90aWZpZWQgb2Ygc3Ryb25nIHJlZg0KLSAqICAgICAgICAgICAg ICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAcHJvYy0+aW5uZXJfbG9jayBpZiBAcHJvYw0KLSAq ICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJ5IEBsb2NrKQ0KLSAqIEBwZW5kaW5nX3N0cm9u Z19yZWY6ICAgdXNlcnNwYWNlIGhhcyBhY2tlZCBub3RpZmljYXRpb24gb2Ygc3Ryb25nIHJlZg0K LSAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAcHJvYy0+aW5uZXJfbG9j ayBpZiBAcHJvYw0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJ5IEBsb2NrKQ0KLSAq IEBoYXNfd2Vha19yZWY6ICAgICAgICAgdXNlcnNwYWNlIG5vdGlmaWVkIG9mIHdlYWsgcmVmDQot ICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBwcm9jLT5pbm5lcl9sb2Nr IGlmIEBwcm9jDQotICogICAgICAgICAgICAgICAgICAgICAgICBhbmQgYnkgQGxvY2spDQotICog QHBlbmRpbmdfd2Vha19yZWY6ICAgICB1c2Vyc3BhY2UgaGFzIGFja2VkIG5vdGlmaWNhdGlvbiBv ZiB3ZWFrIHJlZg0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAcHJv Yy0+aW5uZXJfbG9jayBpZiBAcHJvYw0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGJ5 IEBsb2NrKQ0KLSAqIEBoYXNfYXN5bmNfdHJhbnNhY3Rpb246IGFzeW5jIHRyYW5zYWN0aW9uIHRv IG5vZGUgaW4gcHJvZ3Jlc3MNCi0gKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQg YnkgQGxvY2spDQotICogQGFjY2VwdF9mZHM6ICAgICAgICAgICBmaWxlIGRlc2NyaXB0b3Igb3Bl cmF0aW9ucyBzdXBwb3J0ZWQgZm9yIG5vZGUNCi0gKiAgICAgICAgICAgICAgICAgICAgICAgIChp bnZhcmlhbnQgYWZ0ZXIgaW5pdGlhbGl6ZWQpDQotICogQG1pbl9wcmlvcml0eTogICAgICAgICBt aW5pbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkNCi0gKiAgICAgICAgICAgICAgICAgICAgICAgIChp bnZhcmlhbnQgYWZ0ZXIgaW5pdGlhbGl6ZWQpDQotICogQHR4bl9zZWN1cml0eV9jdHg6ICAgICBy ZXF1aXJlIHNlbmRlcidzIHNlY3VyaXR5IGNvbnRleHQNCi0gKiAgICAgICAgICAgICAgICAgICAg ICAgIChpbnZhcmlhbnQgYWZ0ZXIgaW5pdGlhbGl6ZWQpDQotICogQGFzeW5jX3RvZG86ICAgICAg ICAgICBsaXN0IG9mIGFzeW5jIHdvcmsgaXRlbXMNCi0gKiAgICAgICAgICAgICAgICAgICAgICAg IChwcm90ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xvY2spDQotICoNCi0gKiBCb29ra2VlcGluZyBz dHJ1Y3R1cmUgZm9yIGJpbmRlciBub2Rlcy4NCi0gKi8NCi1zdHJ1Y3QgYmluZGVyX25vZGUgew0K LQlpbnQgZGVidWdfaWQ7DQotCXNwaW5sb2NrX3QgbG9jazsNCi0Jc3RydWN0IGJpbmRlcl93b3Jr IHdvcms7DQotCXVuaW9uIHsNCi0JCXN0cnVjdCByYl9ub2RlIHJiX25vZGU7DQotCQlzdHJ1Y3Qg aGxpc3Rfbm9kZSBkZWFkX25vZGU7DQotCX07DQotCXN0cnVjdCBiaW5kZXJfcHJvYyAqcHJvYzsN Ci0Jc3RydWN0IGhsaXN0X2hlYWQgcmVmczsNCi0JaW50IGludGVybmFsX3N0cm9uZ19yZWZzOw0K LQlpbnQgbG9jYWxfd2Vha19yZWZzOw0KLQlpbnQgbG9jYWxfc3Ryb25nX3JlZnM7DQotCWludCB0 bXBfcmVmczsNCi0JYmluZGVyX3VpbnRwdHJfdCBwdHI7DQotCWJpbmRlcl91aW50cHRyX3QgY29v a2llOw0KLQlzdHJ1Y3Qgew0KLQkJLyoNCi0JCSAqIGJpdGZpZWxkIGVsZW1lbnRzIHByb3RlY3Rl ZCBieQ0KLQkJICogcHJvYyBpbm5lcl9sb2NrDQotCQkgKi8NCi0JCXU4IGhhc19zdHJvbmdfcmVm OjE7DQotCQl1OCBwZW5kaW5nX3N0cm9uZ19yZWY6MTsNCi0JCXU4IGhhc193ZWFrX3JlZjoxOw0K LQkJdTggcGVuZGluZ193ZWFrX3JlZjoxOw0KLQl9Ow0KLQlzdHJ1Y3Qgew0KLQkJLyoNCi0JCSAq IGludmFyaWFudCBhZnRlciBpbml0aWFsaXphdGlvbg0KLQkJICovDQotCQl1OCBhY2NlcHRfZmRz OjE7DQotCQl1OCB0eG5fc2VjdXJpdHlfY3R4OjE7DQotCQl1OCBtaW5fcHJpb3JpdHk7DQotCX07 DQotCWJvb2wgaGFzX2FzeW5jX3RyYW5zYWN0aW9uOw0KLQlzdHJ1Y3QgbGlzdF9oZWFkIGFzeW5j X3RvZG87DQotfTsNCi0NCi1zdHJ1Y3QgYmluZGVyX3JlZl9kZWF0aCB7DQotCS8qKg0KLQkgKiBA d29yazogd29ya2xpc3QgZWxlbWVudCBmb3IgZGVhdGggbm90aWZpY2F0aW9ucw0KLQkgKiAgICAg ICAgKHByb3RlY3RlZCBieSBpbm5lcl9sb2NrIG9mIHRoZSBwcm9jIHRoYXQNCi0JICogICAgICAg IHRoaXMgcmVmIGJlbG9uZ3MgdG8pDQotCSAqLw0KLQlzdHJ1Y3QgYmluZGVyX3dvcmsgd29yazsN Ci0JYmluZGVyX3VpbnRwdHJfdCBjb29raWU7DQotfTsNCi0NCi0vKioNCi0gKiBzdHJ1Y3QgYmlu ZGVyX3JlZl9kYXRhIC0gYmluZGVyX3JlZiBjb3VudHMgYW5kIGlkDQotICogQGRlYnVnX2lkOiAg ICAgICAgdW5pcXVlIElEIGZvciB0aGUgcmVmDQotICogQGRlc2M6ICAgICAgICAgICAgdW5pcXVl IHVzZXJzcGFjZSBoYW5kbGUgZm9yIHJlZg0KLSAqIEBzdHJvbmc6ICAgICAgICAgIHN0cm9uZyBy ZWYgY291bnQgKGRlYnVnZ2luZyBvbmx5IGlmIG5vdCBsb2NrZWQpDQotICogQHdlYWs6ICAgICAg ICAgICAgd2VhayByZWYgY291bnQgKGRlYnVnZ2luZyBvbmx5IGlmIG5vdCBsb2NrZWQpDQotICoN Ci0gKiBTdHJ1Y3R1cmUgdG8gaG9sZCByZWYgY291bnQgYW5kIHJlZiBpZCBpbmZvcm1hdGlvbi4g U2luY2UNCi0gKiB0aGUgYWN0dWFsIHJlZiBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoIGEgbG9j aywgdGhpcyBzdHJ1Y3R1cmUNCi0gKiBpcyB1c2VkIHRvIHJldHVybiBpbmZvcm1hdGlvbiBhYm91 dCB0aGUgcmVmIHRvIGNhbGxlcnMgb2YNCi0gKiByZWYgaW5jL2RlYyBmdW5jdGlvbnMuDQotICov DQotc3RydWN0IGJpbmRlcl9yZWZfZGF0YSB7DQotCWludCBkZWJ1Z19pZDsNCi0JdWludDMyX3Qg ZGVzYzsNCi0JaW50IHN0cm9uZzsNCi0JaW50IHdlYWs7DQotfTsNCi0NCi0vKioNCi0gKiBzdHJ1 Y3QgYmluZGVyX3JlZiAtIHN0cnVjdCB0byB0cmFjayByZWZlcmVuY2VzIG9uIG5vZGVzDQotICog QGRhdGE6ICAgICAgICBiaW5kZXJfcmVmX2RhdGEgY29udGFpbmluZyBpZCwgaGFuZGxlLCBhbmQg Y3VycmVudCByZWZjb3VudHMNCi0gKiBAcmJfbm9kZV9kZXNjOiBub2RlIGZvciBsb29rdXAgYnkg QGRhdGEuZGVzYyBpbiBwcm9jJ3MgcmJfdHJlZQ0KLSAqIEByYl9ub2RlX25vZGU6IG5vZGUgZm9y IGxvb2t1cCBieSBAbm9kZSBpbiBwcm9jJ3MgcmJfdHJlZQ0KLSAqIEBub2RlX2VudHJ5OiAgbGlz dCBlbnRyeSBmb3Igbm9kZS0+cmVmcyBsaXN0IGluIHRhcmdldCBub2RlDQotICogICAgICAgICAg ICAgICAocHJvdGVjdGVkIGJ5IEBub2RlLT5sb2NrKQ0KLSAqIEBwcm9jOiAgICAgICAgYmluZGVy X3Byb2MgY29udGFpbmluZyByZWYNCi0gKiBAbm9kZTogICAgICAgIGJpbmRlcl9ub2RlIG9mIHRh cmdldCBub2RlLiBXaGVuIGNsZWFuaW5nIHVwIGENCi0gKiAgICAgICAgICAgICAgIHJlZiBmb3Ig ZGVsZXRpb24gaW4gYmluZGVyX2NsZWFudXBfcmVmLCBhIG5vbi1OVUxMDQotICogICAgICAgICAg ICAgICBAbm9kZSBpbmRpY2F0ZXMgdGhlIG5vZGUgbXVzdCBiZSBmcmVlZA0KLSAqIEBkZWF0aDog ICAgICAgcG9pbnRlciB0byBkZWF0aCBub3RpZmljYXRpb24gKHJlZl9kZWF0aCkgaWYgcmVxdWVz dGVkDQotICogICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBub2RlLT5sb2NrKQ0KLSAqDQot ICogU3RydWN0dXJlIHRvIHRyYWNrIHJlZmVyZW5jZXMgZnJvbSBwcm9jQSB0byB0YXJnZXQgbm9k ZSAob24gcHJvY0IpLiBUaGlzDQotICogc3RydWN0dXJlIGlzIHVuc2FmZSB0byBhY2Nlc3Mgd2l0 aG91dCBob2xkaW5nIEBwcm9jLT5vdXRlcl9sb2NrLg0KLSAqLw0KLXN0cnVjdCBiaW5kZXJfcmVm IHsNCi0JLyogTG9va3VwcyBuZWVkZWQ6ICovDQotCS8qICAgbm9kZSArIHByb2MgPT4gcmVmICh0 cmFuc2FjdGlvbikgKi8NCi0JLyogICBkZXNjICsgcHJvYyA9PiByZWYgKHRyYW5zYWN0aW9uLCBp bmMvZGVjIHJlZikgKi8NCi0JLyogICBub2RlID0+IHJlZnMgKyBwcm9jcyAocHJvYyBleGl0KSAq Lw0KLQlzdHJ1Y3QgYmluZGVyX3JlZl9kYXRhIGRhdGE7DQotCXN0cnVjdCByYl9ub2RlIHJiX25v ZGVfZGVzYzsNCi0Jc3RydWN0IHJiX25vZGUgcmJfbm9kZV9ub2RlOw0KLQlzdHJ1Y3QgaGxpc3Rf bm9kZSBub2RlX2VudHJ5Ow0KLQlzdHJ1Y3QgYmluZGVyX3Byb2MgKnByb2M7DQotCXN0cnVjdCBi aW5kZXJfbm9kZSAqbm9kZTsNCi0Jc3RydWN0IGJpbmRlcl9yZWZfZGVhdGggKmRlYXRoOw0KLX07 DQotDQogZW51bSBiaW5kZXJfZGVmZXJyZWRfc3RhdGUgew0KIAlCSU5ERVJfREVGRVJSRURfRkxV U0ggICAgICAgID0gMHgwMSwNCiAJQklOREVSX0RFRkVSUkVEX1JFTEVBU0UgICAgICA9IDB4MDIs DQogfTsNCiANCi0vKioNCi0gKiBzdHJ1Y3QgYmluZGVyX3Byb2MgLSBiaW5kZXIgcHJvY2VzcyBi b29ra2VlcGluZw0KLSAqIEBwcm9jX25vZGU6ICAgICAgICAgICAgZWxlbWVudCBmb3IgYmluZGVy X3Byb2NzIGxpc3QNCi0gKiBAdGhyZWFkczogICAgICAgICAgICAgIHJidHJlZSBvZiBiaW5kZXJf dGhyZWFkcyBpbiB0aGlzIHByb2MNCi0gKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0 ZWQgYnkgQGlubmVyX2xvY2spDQotICogQG5vZGVzOiAgICAgICAgICAgICAgICByYnRyZWUgb2Yg YmluZGVyIG5vZGVzIGFzc29jaWF0ZWQgd2l0aA0KLSAqICAgICAgICAgICAgICAgICAgICAgICAg dGhpcyBwcm9jIG9yZGVyZWQgYnkgbm9kZS0+cHRyDQotICogICAgICAgICAgICAgICAgICAgICAg ICAocHJvdGVjdGVkIGJ5IEBpbm5lcl9sb2NrKQ0KLSAqIEByZWZzX2J5X2Rlc2M6ICAgICAgICAg cmJ0cmVlIG9mIHJlZnMgb3JkZXJlZCBieSByZWYtPmRlc2MNCi0gKiAgICAgICAgICAgICAgICAg ICAgICAgIChwcm90ZWN0ZWQgYnkgQG91dGVyX2xvY2spDQotICogQHJlZnNfYnlfbm9kZTogICAg ICAgICByYnRyZWUgb2YgcmVmcyBvcmRlcmVkIGJ5IHJlZi0+bm9kZQ0KLSAqICAgICAgICAgICAg ICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAb3V0ZXJfbG9jaykNCi0gKiBAd2FpdGluZ190aHJl YWRzOiAgICAgIHRocmVhZHMgY3VycmVudGx5IHdhaXRpbmcgZm9yIHByb2Mgd29yaw0KLSAqICAg ICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAaW5uZXJfbG9jaykNCi0gKiBAcGlk ICAgICAgICAgICAgICAgICAgIFBJRCBvZiBncm91cF9sZWFkZXIgb2YgcHJvY2Vzcw0KLSAqICAg ICAgICAgICAgICAgICAgICAgICAgKGludmFyaWFudCBhZnRlciBpbml0aWFsaXplZCkNCi0gKiBA dHNrICAgICAgICAgICAgICAgICAgIHRhc2tfc3RydWN0IGZvciBncm91cF9sZWFkZXIgb2YgcHJv Y2Vzcw0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgKGludmFyaWFudCBhZnRlciBpbml0aWFs aXplZCkNCi0gKiBAZGVmZXJyZWRfd29ya19ub2RlOiAgIGVsZW1lbnQgZm9yIGJpbmRlcl9kZWZl cnJlZF9saXN0DQotICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IGJpbmRl cl9kZWZlcnJlZF9sb2NrKQ0KLSAqIEBkZWZlcnJlZF93b3JrOiAgICAgICAgYml0bWFwIG9mIGRl ZmVycmVkIHdvcmsgdG8gcGVyZm9ybQ0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3Rl Y3RlZCBieSBiaW5kZXJfZGVmZXJyZWRfbG9jaykNCi0gKiBAaXNfZGVhZDogICAgICAgICAgICAg IHByb2Nlc3MgaXMgZGVhZCBhbmQgYXdhaXRpbmcgZnJlZQ0KLSAqICAgICAgICAgICAgICAgICAg ICAgICAgd2hlbiBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbnMgYXJlIGNsZWFuZWQgdXANCi0gKiAg ICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQGlubmVyX2xvY2spDQotICogQHRv ZG86ICAgICAgICAgICAgICAgICBsaXN0IG9mIHdvcmsgZm9yIHRoaXMgcHJvY2Vzcw0KLSAqICAg ICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAaW5uZXJfbG9jaykNCi0gKiBAc3Rh dHM6ICAgICAgICAgICAgICAgIHBlci1wcm9jZXNzIGJpbmRlciBzdGF0aXN0aWNzDQotICogICAg ICAgICAgICAgICAgICAgICAgICAoYXRvbWljcywgbm8gbG9jayBuZWVkZWQpDQotICogQGRlbGl2 ZXJlZF9kZWF0aDogICAgICBsaXN0IG9mIGRlbGl2ZXJlZCBkZWF0aCBub3RpZmljYXRpb24NCi0g KiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQGlubmVyX2xvY2spDQotICog QG1heF90aHJlYWRzOiAgICAgICAgICBjYXAgb24gbnVtYmVyIG9mIGJpbmRlciB0aHJlYWRzDQot ICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBpbm5lcl9sb2NrKQ0KLSAq IEByZXF1ZXN0ZWRfdGhyZWFkczogICAgbnVtYmVyIG9mIGJpbmRlciB0aHJlYWRzIHJlcXVlc3Rl ZCBidXQgbm90DQotICogICAgICAgICAgICAgICAgICAgICAgICB5ZXQgc3RhcnRlZC4gSW4gY3Vy cmVudCBpbXBsZW1lbnRhdGlvbiwgY2FuDQotICogICAgICAgICAgICAgICAgICAgICAgICBvbmx5 IGJlIDAgb3IgMS4NCi0gKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQGlu bmVyX2xvY2spDQotICogQHJlcXVlc3RlZF90aHJlYWRzX3N0YXJ0ZWQ6IG51bWJlciBiaW5kZXIg dGhyZWFkcyBzdGFydGVkDQotICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5 IEBpbm5lcl9sb2NrKQ0KLSAqIEB0bXBfcmVmOiAgICAgICAgICAgICAgdGVtcG9yYXJ5IHJlZmVy ZW5jZSB0byBpbmRpY2F0ZSBwcm9jIGlzIGluIHVzZQ0KLSAqICAgICAgICAgICAgICAgICAgICAg ICAgKHByb3RlY3RlZCBieSBAaW5uZXJfbG9jaykNCi0gKiBAZGVmYXVsdF9wcmlvcml0eTogICAg IGRlZmF1bHQgc2NoZWR1bGVyIHByaW9yaXR5DQotICogICAgICAgICAgICAgICAgICAgICAgICAo aW52YXJpYW50IGFmdGVyIGluaXRpYWxpemVkKQ0KLSAqIEBkZWJ1Z2ZzX2VudHJ5OiAgICAgICAg ZGVidWdmcyBub2RlDQotICogQGFsbG9jOiAgICAgICAgICAgICAgICBiaW5kZXIgYWxsb2NhdG9y IGJvb2trZWVwaW5nDQotICogQGNvbnRleHQ6ICAgICAgICAgICAgICBiaW5kZXJfY29udGV4dCBm b3IgdGhpcyBwcm9jDQotICogICAgICAgICAgICAgICAgICAgICAgICAoaW52YXJpYW50IGFmdGVy IGluaXRpYWxpemVkKQ0KLSAqIEBpbm5lcl9sb2NrOiAgICAgICAgICAgY2FuIG5lc3QgdW5kZXIg b3V0ZXJfbG9jayBhbmQvb3Igbm9kZSBsb2NrDQotICogQG91dGVyX2xvY2s6ICAgICAgICAgICBu byBuZXN0aW5nIHVuZGVyIGlubm9yIG9yIG5vZGUgbG9jaw0KLSAqICAgICAgICAgICAgICAgICAg ICAgICAgTG9jayBvcmRlcjogMSkgb3V0ZXIsIDIpIG5vZGUsIDMpIGlubmVyDQotICogQGJpbmRl cmZzX2VudHJ5OiAgICAgICBwcm9jZXNzLXNwZWNpZmljIGJpbmRlcmZzIGxvZyBmaWxlDQotICoN Ci0gKiBCb29ra2VlcGluZyBzdHJ1Y3R1cmUgZm9yIGJpbmRlciBwcm9jZXNzZXMNCi0gKi8NCi1z dHJ1Y3QgYmluZGVyX3Byb2Mgew0KLQlzdHJ1Y3QgaGxpc3Rfbm9kZSBwcm9jX25vZGU7DQotCXN0 cnVjdCByYl9yb290IHRocmVhZHM7DQotCXN0cnVjdCByYl9yb290IG5vZGVzOw0KLQlzdHJ1Y3Qg cmJfcm9vdCByZWZzX2J5X2Rlc2M7DQotCXN0cnVjdCByYl9yb290IHJlZnNfYnlfbm9kZTsNCi0J c3RydWN0IGxpc3RfaGVhZCB3YWl0aW5nX3RocmVhZHM7DQotCWludCBwaWQ7DQotCXN0cnVjdCB0 YXNrX3N0cnVjdCAqdHNrOw0KLQlzdHJ1Y3QgaGxpc3Rfbm9kZSBkZWZlcnJlZF93b3JrX25vZGU7 DQotCWludCBkZWZlcnJlZF93b3JrOw0KLQlib29sIGlzX2RlYWQ7DQotDQotCXN0cnVjdCBsaXN0 X2hlYWQgdG9kbzsNCi0Jc3RydWN0IGJpbmRlcl9zdGF0cyBzdGF0czsNCi0Jc3RydWN0IGxpc3Rf aGVhZCBkZWxpdmVyZWRfZGVhdGg7DQotCWludCBtYXhfdGhyZWFkczsNCi0JaW50IHJlcXVlc3Rl ZF90aHJlYWRzOw0KLQlpbnQgcmVxdWVzdGVkX3RocmVhZHNfc3RhcnRlZDsNCi0JaW50IHRtcF9y ZWY7DQotCWxvbmcgZGVmYXVsdF9wcmlvcml0eTsNCi0Jc3RydWN0IGRlbnRyeSAqZGVidWdmc19l bnRyeTsNCi0Jc3RydWN0IGJpbmRlcl9hbGxvYyBhbGxvYzsNCi0Jc3RydWN0IGJpbmRlcl9jb250 ZXh0ICpjb250ZXh0Ow0KLQlzcGlubG9ja190IGlubmVyX2xvY2s7DQotCXNwaW5sb2NrX3Qgb3V0 ZXJfbG9jazsNCi0Jc3RydWN0IGRlbnRyeSAqYmluZGVyZnNfZW50cnk7DQotfTsNCi0NCiBlbnVt IHsNCiAJQklOREVSX0xPT1BFUl9TVEFURV9SRUdJU1RFUkVEICA9IDB4MDEsDQogCUJJTkRFUl9M T09QRVJfU1RBVEVfRU5URVJFRCAgICAgPSAweDAyLA0KQEAgLTQ5NSwxMjUgKzIxMCw2IEBAIGVu dW0gew0KIH07DQogDQogLyoqDQotICogc3RydWN0IGJpbmRlcl90aHJlYWQgLSBiaW5kZXIgdGhy ZWFkIGJvb2trZWVwaW5nDQotICogQHByb2M6ICAgICAgICAgICAgICAgICBiaW5kZXIgcHJvY2Vz cyBmb3IgdGhpcyB0aHJlYWQNCi0gKiAgICAgICAgICAgICAgICAgICAgICAgIChpbnZhcmlhbnQg YWZ0ZXIgaW5pdGlhbGl6YXRpb24pDQotICogQHJiX25vZGU6ICAgICAgICAgICAgICBlbGVtZW50 IGZvciBwcm9jLT50aHJlYWRzIHJidHJlZQ0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgKHBy b3RlY3RlZCBieSBAcHJvYy0+aW5uZXJfbG9jaykNCi0gKiBAd2FpdGluZ190aHJlYWRfbm9kZTog IGVsZW1lbnQgZm9yIEBwcm9jLT53YWl0aW5nX3RocmVhZHMgbGlzdA0KLSAqICAgICAgICAgICAg ICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAcHJvYy0+aW5uZXJfbG9jaykNCi0gKiBAcGlkOiAg ICAgICAgICAgICAgICAgIFBJRCBmb3IgdGhpcyB0aHJlYWQNCi0gKiAgICAgICAgICAgICAgICAg ICAgICAgIChpbnZhcmlhbnQgYWZ0ZXIgaW5pdGlhbGl6YXRpb24pDQotICogQGxvb3BlcjogICAg ICAgICAgICAgICBiaXRtYXAgb2YgbG9vcGluZyBzdGF0ZQ0KLSAqICAgICAgICAgICAgICAgICAg ICAgICAgKG9ubHkgYWNjZXNzZWQgYnkgdGhpcyB0aHJlYWQpDQotICogQGxvb3Blcl9uZWVkc19y ZXR1cm46ICBsb29waW5nIHRocmVhZCBuZWVkcyB0byBleGl0IGRyaXZlcg0KLSAqICAgICAgICAg ICAgICAgICAgICAgICAgKG5vIGxvY2sgbmVlZGVkKQ0KLSAqIEB0cmFuc2FjdGlvbl9zdGFjazog ICAgc3RhY2sgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGZvciB0aGlzIHRocmVhZA0KLSAq ICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAcHJvYy0+aW5uZXJfbG9jaykN Ci0gKiBAdG9kbzogICAgICAgICAgICAgICAgIGxpc3Qgb2Ygd29yayB0byBkbyBmb3IgdGhpcyB0 aHJlYWQNCi0gKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQHByb2MtPmlu bmVyX2xvY2spDQotICogQHByb2Nlc3NfdG9kbzogICAgICAgICB3aGV0aGVyIHdvcmsgaW4gQHRv ZG8gc2hvdWxkIGJlIHByb2Nlc3NlZA0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3Rl Y3RlZCBieSBAcHJvYy0+aW5uZXJfbG9jaykNCi0gKiBAcmV0dXJuX2Vycm9yOiAgICAgICAgIHRy YW5zYWN0aW9uIGVycm9ycyByZXBvcnRlZCBieSB0aGlzIHRocmVhZA0KLSAqICAgICAgICAgICAg ICAgICAgICAgICAgKG9ubHkgYWNjZXNzZWQgYnkgdGhpcyB0aHJlYWQpDQotICogQHJlcGx5X2Vy cm9yOiAgICAgICAgICB0cmFuc2FjdGlvbiBlcnJvcnMgcmVwb3J0ZWQgYnkgdGFyZ2V0IHRocmVh ZA0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAcHJvYy0+aW5uZXJf bG9jaykNCi0gKiBAd2FpdDogICAgICAgICAgICAgICAgIHdhaXQgcXVldWUgZm9yIHRocmVhZCB3 b3JrDQotICogQHN0YXRzOiAgICAgICAgICAgICAgICBwZXItdGhyZWFkIHN0YXRpc3RpY3MNCi0g KiAgICAgICAgICAgICAgICAgICAgICAgIChhdG9taWNzLCBubyBsb2NrIG5lZWRlZCkNCi0gKiBA dG1wX3JlZjogICAgICAgICAgICAgIHRlbXBvcmFyeSByZWZlcmVuY2UgdG8gaW5kaWNhdGUgdGhy ZWFkIGlzIGluIHVzZQ0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgKGF0b21pYyBzaW5jZSBA cHJvYy0+aW5uZXJfbG9jayBjYW5ub3QNCi0gKiAgICAgICAgICAgICAgICAgICAgICAgIGFsd2F5 cyBiZSBhY3F1aXJlZCkNCi0gKiBAaXNfZGVhZDogICAgICAgICAgICAgIHRocmVhZCBpcyBkZWFk IGFuZCBhd2FpdGluZyBmcmVlDQotICogICAgICAgICAgICAgICAgICAgICAgICB3aGVuIG91dHN0 YW5kaW5nIHRyYW5zYWN0aW9ucyBhcmUgY2xlYW5lZCB1cA0KLSAqICAgICAgICAgICAgICAgICAg ICAgICAgKHByb3RlY3RlZCBieSBAcHJvYy0+aW5uZXJfbG9jaykNCi0gKg0KLSAqIEJvb2trZWVw aW5nIHN0cnVjdHVyZSBmb3IgYmluZGVyIHRocmVhZHMuDQotICovDQotc3RydWN0IGJpbmRlcl90 aHJlYWQgew0KLQlzdHJ1Y3QgYmluZGVyX3Byb2MgKnByb2M7DQotCXN0cnVjdCByYl9ub2RlIHJi X25vZGU7DQotCXN0cnVjdCBsaXN0X2hlYWQgd2FpdGluZ190aHJlYWRfbm9kZTsNCi0JaW50IHBp ZDsNCi0JaW50IGxvb3BlcjsgICAgICAgICAgICAgIC8qIG9ubHkgbW9kaWZpZWQgYnkgdGhpcyB0 aHJlYWQgKi8NCi0JYm9vbCBsb29wZXJfbmVlZF9yZXR1cm47IC8qIGNhbiBiZSB3cml0dGVuIGJ5 IG90aGVyIHRocmVhZCAqLw0KLQlzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uICp0cmFuc2FjdGlv bl9zdGFjazsNCi0Jc3RydWN0IGxpc3RfaGVhZCB0b2RvOw0KLQlib29sIHByb2Nlc3NfdG9kbzsN Ci0Jc3RydWN0IGJpbmRlcl9lcnJvciByZXR1cm5fZXJyb3I7DQotCXN0cnVjdCBiaW5kZXJfZXJy b3IgcmVwbHlfZXJyb3I7DQotCXdhaXRfcXVldWVfaGVhZF90IHdhaXQ7DQotCXN0cnVjdCBiaW5k ZXJfc3RhdHMgc3RhdHM7DQotCWF0b21pY190IHRtcF9yZWY7DQotCWJvb2wgaXNfZGVhZDsNCi19 Ow0KLQ0KLS8qKg0KLSAqIHN0cnVjdCBiaW5kZXJfdHhuX2ZkX2ZpeHVwIC0gdHJhbnNhY3Rpb24g ZmQgZml4dXAgbGlzdCBlbGVtZW50DQotICogQGZpeHVwX2VudHJ5OiAgICAgICAgICBsaXN0IGVu dHJ5DQotICogQGZpbGU6ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZSB0byBiZSBhc3NvY2lh dGVkIHdpdGggbmV3IGZkDQotICogQG9mZnNldDogICAgICAgICAgICAgICBvZmZzZXQgaW4gYnVm ZmVyIGRhdGEgdG8gdGhpcyBmaXh1cA0KLSAqDQotICogTGlzdCBlbGVtZW50IGZvciBmZCBmaXh1 cHMgaW4gYSB0cmFuc2FjdGlvbi4gU2luY2UgZmlsZQ0KLSAqIGRlc2NyaXB0b3JzIG5lZWQgdG8g YmUgYWxsb2NhdGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZQ0KLSAqIHRhcmdldCBwcm9jZXNzLCB3 ZSBwYXNzIGVhY2ggZmQgdG8gYmUgcHJvY2Vzc2VkIGluIHRoaXMNCi0gKiBzdHJ1Y3QuDQotICov DQotc3RydWN0IGJpbmRlcl90eG5fZmRfZml4dXAgew0KLQlzdHJ1Y3QgbGlzdF9oZWFkIGZpeHVw X2VudHJ5Ow0KLQlzdHJ1Y3QgZmlsZSAqZmlsZTsNCi0Jc2l6ZV90IG9mZnNldDsNCi19Ow0KLQ0K LXN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gew0KLQlpbnQgZGVidWdfaWQ7DQotCXN0cnVjdCBi aW5kZXJfd29yayB3b3JrOw0KLQlzdHJ1Y3QgYmluZGVyX3RocmVhZCAqZnJvbTsNCi0Jc3RydWN0 IGJpbmRlcl90cmFuc2FjdGlvbiAqZnJvbV9wYXJlbnQ7DQotCXN0cnVjdCBiaW5kZXJfcHJvYyAq dG9fcHJvYzsNCi0Jc3RydWN0IGJpbmRlcl90aHJlYWQgKnRvX3RocmVhZDsNCi0Jc3RydWN0IGJp bmRlcl90cmFuc2FjdGlvbiAqdG9fcGFyZW50Ow0KLQl1bnNpZ25lZCBuZWVkX3JlcGx5OjE7DQot CS8qIHVuc2lnbmVkIGlzX2RlYWQ6MTsgKi8JLyogbm90IHVzZWQgYXQgdGhlIG1vbWVudCAqLw0K LQ0KLQlzdHJ1Y3QgYmluZGVyX2J1ZmZlciAqYnVmZmVyOw0KLQl1bnNpZ25lZCBpbnQJY29kZTsN Ci0JdW5zaWduZWQgaW50CWZsYWdzOw0KLQlsb25nCXByaW9yaXR5Ow0KLQlsb25nCXNhdmVkX3By aW9yaXR5Ow0KLQlrdWlkX3QJc2VuZGVyX2V1aWQ7DQotCXN0cnVjdCBsaXN0X2hlYWQgZmRfZml4 dXBzOw0KLQliaW5kZXJfdWludHB0cl90IHNlY3VyaXR5X2N0eDsNCi0JLyoqDQotCSAqIEBsb2Nr OiAgcHJvdGVjdHMgQGZyb20sIEB0b19wcm9jLCBhbmQgQHRvX3RocmVhZA0KLQkgKg0KLQkgKiBA ZnJvbSwgQHRvX3Byb2MsIGFuZCBAdG9fdGhyZWFkIGNhbiBiZSBzZXQgdG8gTlVMTA0KLQkgKiBk dXJpbmcgdGhyZWFkIHRlYXJkb3duDQotCSAqLw0KLQlzcGlubG9ja190IGxvY2s7DQotfTsNCi0N Ci0vKioNCi0gKiBzdHJ1Y3QgYmluZGVyX29iamVjdCAtIHVuaW9uIG9mIGZsYXQgYmluZGVyIG9i amVjdCB0eXBlcw0KLSAqIEBoZHI6ICAgZ2VuZXJpYyBvYmplY3QgaGVhZGVyDQotICogQGZibzog ICBiaW5kZXIgb2JqZWN0IChub2RlcyBhbmQgcmVmcykNCi0gKiBAZmRvOiAgIGZpbGUgZGVzY3Jp cHRvciBvYmplY3QNCi0gKiBAYmJvOiAgIGJpbmRlciBidWZmZXIgcG9pbnRlcg0KLSAqIEBmZGFv OiAgZmlsZSBkZXNjcmlwdG9yIGFycmF5DQotICoNCi0gKiBVc2VkIGZvciB0eXBlLWluZGVwZW5k ZW50IG9iamVjdCBjb3BpZXMNCi0gKi8NCi1zdHJ1Y3QgYmluZGVyX29iamVjdCB7DQotCXVuaW9u IHsNCi0JCXN0cnVjdCBiaW5kZXJfb2JqZWN0X2hlYWRlciBoZHI7DQotCQlzdHJ1Y3QgZmxhdF9i aW5kZXJfb2JqZWN0IGZibzsNCi0JCXN0cnVjdCBiaW5kZXJfZmRfb2JqZWN0IGZkbzsNCi0JCXN0 cnVjdCBiaW5kZXJfYnVmZmVyX29iamVjdCBiYm87DQotCQlzdHJ1Y3QgYmluZGVyX2ZkX2FycmF5 X29iamVjdCBmZGFvOw0KLQl9Ow0KLX07DQotDQotLyoqDQogICogYmluZGVyX3Byb2NfbG9jaygp IC0gQWNxdWlyZSBvdXRlciBsb2NrIGZvciBnaXZlbiBiaW5kZXJfcHJvYw0KICAqIEBwcm9jOiAg ICAgICAgIHN0cnVjdCBiaW5kZXJfcHJvYyB0byBhY3F1aXJlDQogICoNCkBAIC0xOTI3LDYgKzE1 MjMsNyBAQCBzdGF0aWMgdm9pZCBiaW5kZXJfZnJlZV90cmFuc2FjdGlvbihzdHJ1Y3QgYmluZGVy X3RyYW5zYWN0aW9uICp0KQ0KIAkgKiBJZiB0aGUgdHJhbnNhY3Rpb24gaGFzIG5vIHRhcmdldF9w cm9jLCB0aGVuDQogCSAqIHQtPmJ1ZmZlci0+dHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBj bGVhcmVkLg0KIAkgKi8NCisJdHJhY2VfYmluZGVyX2ZyZWVfdHJhbnNhY3Rpb24odCk7DQogCWJp bmRlcl9mcmVlX3R4bl9maXh1cHModCk7DQogCWtmcmVlKHQpOw0KIAliaW5kZXJfc3RhdHNfZGVs ZXRlZChCSU5ERVJfU1RBVF9UUkFOU0FDVElPTik7DQpAQCAtMzA2MCw2ICsyNjU3LDcgQEAgc3Rh dGljIHZvaWQgYmluZGVyX3RyYW5zYWN0aW9uKHN0cnVjdCBiaW5kZXJfcHJvYyAqcHJvYywNCiAJ CXJldHVybl9lcnJvcl9saW5lID0gX19MSU5FX187DQogCQlnb3RvIGVycl9hbGxvY190X2ZhaWxl ZDsNCiAJfQ0KKwl0cmFjZV9iaW5kZXJfdXBkYXRlX2luZm8odCwgZSk7DQogCUlOSVRfTElTVF9I RUFEKCZ0LT5mZF9maXh1cHMpOw0KIAliaW5kZXJfc3RhdHNfY3JlYXRlZChCSU5ERVJfU1RBVF9U UkFOU0FDVElPTik7DQogCXNwaW5fbG9ja19pbml0KCZ0LT5sb2NrKTsNCkBAIC0zNDk4LDYgKzMw OTYsNyBAQCBzdGF0aWMgdm9pZCBiaW5kZXJfdHJhbnNhY3Rpb24oc3RydWN0IGJpbmRlcl9wcm9j ICpwcm9jLA0KIAlrZnJlZSh0Y29tcGxldGUpOw0KIAliaW5kZXJfc3RhdHNfZGVsZXRlZChCSU5E RVJfU1RBVF9UUkFOU0FDVElPTl9DT01QTEVURSk7DQogZXJyX2FsbG9jX3Rjb21wbGV0ZV9mYWls ZWQ6DQorCXRyYWNlX2JpbmRlcl9mcmVlX3RyYW5zYWN0aW9uKHQpOw0KIAlrZnJlZSh0KTsNCiAJ YmluZGVyX3N0YXRzX2RlbGV0ZWQoQklOREVSX1NUQVRfVFJBTlNBQ1RJT04pOw0KIGVycl9hbGxv Y190X2ZhaWxlZDoNCkBAIC01NTQ3LDYgKzUxNDYsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9iaW5k ZXJfdHJhbnNhY3Rpb25faWxvY2tlZChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sDQogCQkgICB0LT50b190 aHJlYWQgPyB0LT50b190aHJlYWQtPnBpZCA6IDAsDQogCQkgICB0LT5jb2RlLCB0LT5mbGFncywg dC0+cHJpb3JpdHksIHQtPm5lZWRfcmVwbHkpOw0KIAlzcGluX3VubG9jaygmdC0+bG9jayk7DQor CXRyYWNlX3ByaW50X2JpbmRlcl90cmFuc2FjdGlvbl9leHQobSwgdCk7DQogDQogCWlmIChwcm9j ICE9IHRvX3Byb2MpIHsNCiAJCS8qDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hbmRyb2lkL2JpbmRl cl9pbnRlcm5hbC5oIGIvZHJpdmVycy9hbmRyb2lkL2JpbmRlcl9pbnRlcm5hbC5oDQppbmRleCBh ZTk5MTA5Li4yNGQ3YmViIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9hbmRyb2lkL2JpbmRlcl9pbnRl cm5hbC5oDQorKysgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyX2ludGVybmFsLmgNCkBAIC0xMiw2 ICsxMiwxMSBAQA0KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPg0KICNpbmNsdWRlIDxsaW51eC91 aWRnaWQuaD4NCiANCisjaWZkZWYgQ09ORklHX0JJTkRFUl9VU0VSX1RSQUNLSU5HDQorI2luY2x1 ZGUgPGxpbnV4L3J0Yy5oPg0KKyNpbmNsdWRlIDxsaW51eC90aW1lLmg+DQorI2VuZGlmDQorDQog c3RydWN0IGJpbmRlcl9jb250ZXh0IHsNCiAJc3RydWN0IGJpbmRlcl9ub2RlICpiaW5kZXJfY29u dGV4dF9tZ3Jfbm9kZTsNCiAJc3RydWN0IG11dGV4IGNvbnRleHRfbWdyX25vZGVfbG9jazsNCkBA IC0xMzEsNiArMTM2LDEwIEBAIHN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb25fbG9nX2VudHJ5IHsN CiAJdWludDMyX3QgcmV0dXJuX2Vycm9yOw0KIAl1aW50MzJfdCByZXR1cm5fZXJyb3JfcGFyYW07 DQogCWNoYXIgY29udGV4dF9uYW1lW0JJTkRFUkZTX01BWF9OQU1FICsgMV07DQorI2lmZGVmIENP TkZJR19CSU5ERVJfVVNFUl9UUkFDS0lORw0KKwlzdHJ1Y3QgdGltZXNwZWMgdGltZXN0YW1wOw0K KwlzdHJ1Y3QgdGltZXZhbCB0djsNCisjZW5kaWYNCiB9Ow0KIA0KIHN0cnVjdCBiaW5kZXJfdHJh bnNhY3Rpb25fbG9nIHsNCkBAIC0xMzksNiArMTQ4LDQxMyBAQCBzdHJ1Y3QgYmluZGVyX3RyYW5z YWN0aW9uX2xvZyB7DQogCXN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb25fbG9nX2VudHJ5IGVudHJ5 WzMyXTsNCiB9Ow0KIA0KK2VudW0gYmluZGVyX3N0YXRfdHlwZXMgew0KKwlCSU5ERVJfU1RBVF9Q Uk9DLA0KKwlCSU5ERVJfU1RBVF9USFJFQUQsDQorCUJJTkRFUl9TVEFUX05PREUsDQorCUJJTkRF Ul9TVEFUX1JFRiwNCisJQklOREVSX1NUQVRfREVBVEgsDQorCUJJTkRFUl9TVEFUX1RSQU5TQUNU SU9OLA0KKwlCSU5ERVJfU1RBVF9UUkFOU0FDVElPTl9DT01QTEVURSwNCisJQklOREVSX1NUQVRf Q09VTlQNCit9Ow0KKw0KK3N0cnVjdCBiaW5kZXJfc3RhdHMgew0KKwlhdG9taWNfdCBicltfSU9D X05SKEJSX0ZBSUxFRF9SRVBMWSkgKyAxXTsNCisJYXRvbWljX3QgYmNbX0lPQ19OUihCQ19SRVBM WV9TRykgKyAxXTsNCisJYXRvbWljX3Qgb2JqX2NyZWF0ZWRbQklOREVSX1NUQVRfQ09VTlRdOw0K KwlhdG9taWNfdCBvYmpfZGVsZXRlZFtCSU5ERVJfU1RBVF9DT1VOVF07DQorfTsNCisNCisvKioN CisgKiBzdHJ1Y3QgYmluZGVyX3dvcmsgLSB3b3JrIGVucXVldWVkIG9uIGEgd29ya2xpc3QNCisg KiBAZW50cnk6ICAgICAgICAgICAgIG5vZGUgZW5xdWV1ZWQgb24gbGlzdA0KKyAqIEB0eXBlOiAg ICAgICAgICAgICAgdHlwZSBvZiB3b3JrIHRvIGJlIHBlcmZvcm1lZA0KKyAqDQorICogVGhlcmUg YXJlIHNlcGFyYXRlIHdvcmsgbGlzdHMgZm9yIHByb2MsIHRocmVhZCwgYW5kIG5vZGUgKGFzeW5j KS4NCisgKi8NCitzdHJ1Y3QgYmluZGVyX3dvcmsgew0KKwlzdHJ1Y3QgbGlzdF9oZWFkIGVudHJ5 Ow0KKw0KKwllbnVtIHsNCisJCUJJTkRFUl9XT1JLX1RSQU5TQUNUSU9OID0gMSwNCisJCUJJTkRF Ul9XT1JLX1RSQU5TQUNUSU9OX0NPTVBMRVRFLA0KKwkJQklOREVSX1dPUktfUkVUVVJOX0VSUk9S LA0KKwkJQklOREVSX1dPUktfTk9ERSwNCisJCUJJTkRFUl9XT1JLX0RFQURfQklOREVSLA0KKwkJ QklOREVSX1dPUktfREVBRF9CSU5ERVJfQU5EX0NMRUFSLA0KKwkJQklOREVSX1dPUktfQ0xFQVJf REVBVEhfTk9USUZJQ0FUSU9OLA0KKwl9IHR5cGU7DQorfTsNCisNCitzdHJ1Y3QgYmluZGVyX2Vy cm9yIHsNCisJc3RydWN0IGJpbmRlcl93b3JrIHdvcms7DQorCXVpbnQzMl90IGNtZDsNCit9Ow0K Kw0KKy8qIHN0cnVjdCBiaW5kZXJfbm9kZSAtIGJpbmRlciBub2RlIGJvb2trZWVwaW5nDQorICog QGRlYnVnX2lkOiAgICAgICAgICAgICB1bmlxdWUgSUQgZm9yIGRlYnVnZ2luZw0KKyAqICAgICAg ICAgICAgICAgICAgICAgICAgKGludmFyaWFudCBhZnRlciBpbml0aWFsaXplZCkNCisgKiBAbG9j azogICAgICAgICAgICAgICAgIGxvY2sgZm9yIG5vZGUgZmllbGRzDQorICogQHdvcms6ICAgICAg ICAgICAgICAgICB3b3JrbGlzdCBlbGVtZW50IGZvciBub2RlIHdvcmsNCisgKiAgICAgICAgICAg ICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xvY2spDQorICogQHJiX25v ZGU6ICAgICAgICAgICAgICBlbGVtZW50IGZvciBwcm9jLT5ub2RlcyB0cmVlDQorICogICAgICAg ICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBwcm9jLT5pbm5lcl9sb2NrKQ0KKyAqIEBk ZWFkX25vZGU6ICAgICAgICAgICAgZWxlbWVudCBmb3IgYmluZGVyX2RlYWRfbm9kZXMgbGlzdA0K KyAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBiaW5kZXJfZGVhZF9ub2Rl c19sb2NrKQ0KKyAqIEBwcm9jOiAgICAgICAgICAgICAgICAgYmluZGVyX3Byb2MgdGhhdCBvd25z IHRoaXMgbm9kZQ0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgKGludmFyaWFudCBhZnRlciBp bml0aWFsaXplZCkNCisgKiBAcmVmczogICAgICAgICAgICAgICAgIGxpc3Qgb2YgcmVmZXJlbmNl cyBvbiB0aGlzIG5vZGUNCisgKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkg QGxvY2spDQorICogQGludGVybmFsX3N0cm9uZ19yZWZzOiB1c2VkIHRvIHRha2Ugc3Ryb25nIHJl ZmVyZW5jZXMgd2hlbg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhdGluZyBhIHRy YW5zYWN0aW9uDQorICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBwcm9j LT5pbm5lcl9sb2NrIGlmIEBwcm9jDQorICogICAgICAgICAgICAgICAgICAgICAgICBhbmQgYnkg QGxvY2spDQorICogQGxvY2FsX3dlYWtfcmVmczogICAgICB3ZWFrIHVzZXIgcmVmcyBmcm9tIGxv Y2FsIHByb2Nlc3MNCisgKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQHBy b2MtPmlubmVyX2xvY2sgaWYgQHByb2MNCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBi eSBAbG9jaykNCisgKiBAbG9jYWxfc3Ryb25nX3JlZnM6ICAgIHN0cm9uZyB1c2VyIHJlZnMgZnJv bSBsb2NhbCBwcm9jZXNzDQorICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5 IEBwcm9jLT5pbm5lcl9sb2NrIGlmIEBwcm9jDQorICogICAgICAgICAgICAgICAgICAgICAgICBh bmQgYnkgQGxvY2spDQorICogQHRtcF9yZWZzOiAgICAgICAgICAgICB0ZW1wb3Jhcnkga2VybmVs IHJlZnMNCisgKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQHByb2MtPmlu bmVyX2xvY2sgd2hpbGUgQHByb2MNCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGlzIHZhbGlk LCBhbmQgYnkgYmluZGVyX2RlYWRfbm9kZXNfbG9jaw0KKyAqICAgICAgICAgICAgICAgICAgICAg ICAgaWYgQHByb2MgaXMgTlVMTC4gRHVyaW5nIGluYy9kZWMgYW5kIG5vZGUgcmVsZWFzZQ0KKyAq ICAgICAgICAgICAgICAgICAgICAgICAgaXQgaXMgYWxzbyBwcm90ZWN0ZWQgYnkgQGxvY2sgdG8g cHJvdmlkZSBzYWZldHkNCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSBub2RlIGRp ZXMgYW5kIEBwcm9jIGJlY29tZXMgTlVMTCkNCisgKiBAcHRyOiAgICAgICAgICAgICAgICAgIHVz ZXJzcGFjZSBwb2ludGVyIGZvciBub2RlDQorICogICAgICAgICAgICAgICAgICAgICAgICAoaW52 YXJpYW50LCBubyBsb2NrIG5lZWRlZCkNCisgKiBAY29va2llOiAgICAgICAgICAgICAgIHVzZXJz cGFjZSBjb29raWUgZm9yIG5vZGUNCisgKiAgICAgICAgICAgICAgICAgICAgICAgIChpbnZhcmlh bnQsIG5vIGxvY2sgbmVlZGVkKQ0KKyAqIEBoYXNfc3Ryb25nX3JlZjogICAgICAgdXNlcnNwYWNl IG5vdGlmaWVkIG9mIHN0cm9uZyByZWYNCisgKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90 ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xvY2sgaWYgQHByb2MNCisgKiAgICAgICAgICAgICAgICAg ICAgICAgIGFuZCBieSBAbG9jaykNCisgKiBAcGVuZGluZ19zdHJvbmdfcmVmOiAgIHVzZXJzcGFj ZSBoYXMgYWNrZWQgbm90aWZpY2F0aW9uIG9mIHN0cm9uZyByZWYNCisgKiAgICAgICAgICAgICAg ICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xvY2sgaWYgQHByb2MNCisgKiAg ICAgICAgICAgICAgICAgICAgICAgIGFuZCBieSBAbG9jaykNCisgKiBAaGFzX3dlYWtfcmVmOiAg ICAgICAgIHVzZXJzcGFjZSBub3RpZmllZCBvZiB3ZWFrIHJlZg0KKyAqICAgICAgICAgICAgICAg ICAgICAgICAgKHByb3RlY3RlZCBieSBAcHJvYy0+aW5uZXJfbG9jayBpZiBAcHJvYw0KKyAqICAg ICAgICAgICAgICAgICAgICAgICAgYW5kIGJ5IEBsb2NrKQ0KKyAqIEBwZW5kaW5nX3dlYWtfcmVm OiAgICAgdXNlcnNwYWNlIGhhcyBhY2tlZCBub3RpZmljYXRpb24gb2Ygd2VhayByZWYNCisgKiAg ICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xvY2sgaWYg QHByb2MNCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBieSBAbG9jaykNCisgKiBAaGFz X2FzeW5jX3RyYW5zYWN0aW9uOiBhc3luYyB0cmFuc2FjdGlvbiB0byBub2RlIGluIHByb2dyZXNz DQorICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBsb2NrKQ0KKyAqIEBh Y2NlcHRfZmRzOiAgICAgICAgICAgZmlsZSBkZXNjcmlwdG9yIG9wZXJhdGlvbnMgc3VwcG9ydGVk IGZvciBub2RlDQorICogICAgICAgICAgICAgICAgICAgICAgICAoaW52YXJpYW50IGFmdGVyIGlu aXRpYWxpemVkKQ0KKyAqIEBtaW5fcHJpb3JpdHk6ICAgICAgICAgbWluaW11bSBzY2hlZHVsaW5n IHByaW9yaXR5DQorICogICAgICAgICAgICAgICAgICAgICAgICAoaW52YXJpYW50IGFmdGVyIGlu aXRpYWxpemVkKQ0KKyAqIEB0eG5fc2VjdXJpdHlfY3R4OiAgICAgcmVxdWlyZSBzZW5kZXIncyBz ZWN1cml0eSBjb250ZXh0DQorICogICAgICAgICAgICAgICAgICAgICAgICAoaW52YXJpYW50IGFm dGVyIGluaXRpYWxpemVkKQ0KKyAqIEBhc3luY190b2RvOiAgICAgICAgICAgbGlzdCBvZiBhc3lu YyB3b3JrIGl0ZW1zDQorICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBw cm9jLT5pbm5lcl9sb2NrKQ0KKyAqDQorICogQm9va2tlZXBpbmcgc3RydWN0dXJlIGZvciBiaW5k ZXIgbm9kZXMuDQorICovDQorc3RydWN0IGJpbmRlcl9ub2RlIHsNCisJaW50IGRlYnVnX2lkOw0K KwlzcGlubG9ja190IGxvY2s7DQorCXN0cnVjdCBiaW5kZXJfd29yayB3b3JrOw0KKwl1bmlvbiB7 DQorCQlzdHJ1Y3QgcmJfbm9kZSByYl9ub2RlOw0KKwkJc3RydWN0IGhsaXN0X25vZGUgZGVhZF9u b2RlOw0KKwl9Ow0KKwlzdHJ1Y3QgYmluZGVyX3Byb2MgKnByb2M7DQorCXN0cnVjdCBobGlzdF9o ZWFkIHJlZnM7DQorCWludCBpbnRlcm5hbF9zdHJvbmdfcmVmczsNCisJaW50IGxvY2FsX3dlYWtf cmVmczsNCisJaW50IGxvY2FsX3N0cm9uZ19yZWZzOw0KKwlpbnQgdG1wX3JlZnM7DQorCWJpbmRl cl91aW50cHRyX3QgcHRyOw0KKwliaW5kZXJfdWludHB0cl90IGNvb2tpZTsNCisJc3RydWN0IHsN CisJCS8qDQorCQkgKiBiaXRmaWVsZCBlbGVtZW50cyBwcm90ZWN0ZWQgYnkNCisJCSAqIHByb2Mg aW5uZXJfbG9jaw0KKwkJICovDQorCQl1OCBoYXNfc3Ryb25nX3JlZjoxOw0KKwkJdTggcGVuZGlu Z19zdHJvbmdfcmVmOjE7DQorCQl1OCBoYXNfd2Vha19yZWY6MTsNCisJCXU4IHBlbmRpbmdfd2Vh a19yZWY6MTsNCisJfTsNCisJc3RydWN0IHsNCisJCS8qDQorCQkgKiBpbnZhcmlhbnQgYWZ0ZXIg aW5pdGlhbGl6YXRpb24NCisJCSAqLw0KKwkJdTggYWNjZXB0X2ZkczoxOw0KKwkJdTggdHhuX3Nl Y3VyaXR5X2N0eDoxOw0KKwkJdTggbWluX3ByaW9yaXR5Ow0KKwl9Ow0KKwlib29sIGhhc19hc3lu Y190cmFuc2FjdGlvbjsNCisJc3RydWN0IGxpc3RfaGVhZCBhc3luY190b2RvOw0KK307DQorDQor c3RydWN0IGJpbmRlcl9yZWZfZGVhdGggew0KKwkvKioNCisJICogQHdvcms6IHdvcmtsaXN0IGVs ZW1lbnQgZm9yIGRlYXRoIG5vdGlmaWNhdGlvbnMNCisJICogICAgICAgIChwcm90ZWN0ZWQgYnkg aW5uZXJfbG9jayBvZiB0aGUgcHJvYyB0aGF0DQorCSAqICAgICAgICB0aGlzIHJlZiBiZWxvbmdz IHRvKQ0KKwkgKi8NCisJc3RydWN0IGJpbmRlcl93b3JrIHdvcms7DQorCWJpbmRlcl91aW50cHRy X3QgY29va2llOw0KK307DQorDQorLyoqDQorICogc3RydWN0IGJpbmRlcl9yZWZfZGF0YSAtIGJp bmRlcl9yZWYgY291bnRzIGFuZCBpZA0KKyAqIEBkZWJ1Z19pZDogICAgICAgIHVuaXF1ZSBJRCBm b3IgdGhlIHJlZg0KKyAqIEBkZXNjOiAgICAgICAgICAgIHVuaXF1ZSB1c2Vyc3BhY2UgaGFuZGxl IGZvciByZWYNCisgKiBAc3Ryb25nOiAgICAgICAgICBzdHJvbmcgcmVmIGNvdW50IChkZWJ1Z2dp bmcgb25seSBpZiBub3QgbG9ja2VkKQ0KKyAqIEB3ZWFrOiAgICAgICAgICAgIHdlYWsgcmVmIGNv dW50IChkZWJ1Z2dpbmcgb25seSBpZiBub3QgbG9ja2VkKQ0KKyAqDQorICogU3RydWN0dXJlIHRv IGhvbGQgcmVmIGNvdW50IGFuZCByZWYgaWQgaW5mb3JtYXRpb24uIFNpbmNlDQorICogdGhlIGFj dHVhbCByZWYgY2FuIG9ubHkgYmUgYWNjZXNzZWQgd2l0aCBhIGxvY2ssIHRoaXMgc3RydWN0dXJl DQorICogaXMgdXNlZCB0byByZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlZiB0byBjYWxs ZXJzIG9mDQorICogcmVmIGluYy9kZWMgZnVuY3Rpb25zLg0KKyAqLw0KK3N0cnVjdCBiaW5kZXJf cmVmX2RhdGEgew0KKwlpbnQgZGVidWdfaWQ7DQorCXVpbnQzMl90IGRlc2M7DQorCWludCBzdHJv bmc7DQorCWludCB3ZWFrOw0KK307DQorDQorLyoqDQorICogc3RydWN0IGJpbmRlcl9yZWYgLSBz dHJ1Y3QgdG8gdHJhY2sgcmVmZXJlbmNlcyBvbiBub2Rlcw0KKyAqIEBkYXRhOiAgICAgICAgYmlu ZGVyX3JlZl9kYXRhIGNvbnRhaW5pbmcgaWQsIGhhbmRsZSwgYW5kIGN1cnJlbnQgcmVmY291bnRz DQorICogQHJiX25vZGVfZGVzYzogbm9kZSBmb3IgbG9va3VwIGJ5IEBkYXRhLmRlc2MgaW4gcHJv YydzIHJiX3RyZWUNCisgKiBAcmJfbm9kZV9ub2RlOiBub2RlIGZvciBsb29rdXAgYnkgQG5vZGUg aW4gcHJvYydzIHJiX3RyZWUNCisgKiBAbm9kZV9lbnRyeTogIGxpc3QgZW50cnkgZm9yIG5vZGUt PnJlZnMgbGlzdCBpbiB0YXJnZXQgbm9kZQ0KKyAqICAgICAgICAgICAgICAgKHByb3RlY3RlZCBi eSBAbm9kZS0+bG9jaykNCisgKiBAcHJvYzogICAgICAgIGJpbmRlcl9wcm9jIGNvbnRhaW5pbmcg cmVmDQorICogQG5vZGU6ICAgICAgICBiaW5kZXJfbm9kZSBvZiB0YXJnZXQgbm9kZS4gV2hlbiBj bGVhbmluZyB1cCBhDQorICogICAgICAgICAgICAgICByZWYgZm9yIGRlbGV0aW9uIGluIGJpbmRl cl9jbGVhbnVwX3JlZiwgYSBub24tTlVMTA0KKyAqICAgICAgICAgICAgICAgQG5vZGUgaW5kaWNh dGVzIHRoZSBub2RlIG11c3QgYmUgZnJlZWQNCisgKiBAZGVhdGg6ICAgICAgIHBvaW50ZXIgdG8g ZGVhdGggbm90aWZpY2F0aW9uIChyZWZfZGVhdGgpIGlmIHJlcXVlc3RlZA0KKyAqICAgICAgICAg ICAgICAgKHByb3RlY3RlZCBieSBAbm9kZS0+bG9jaykNCisgKg0KKyAqIFN0cnVjdHVyZSB0byB0 cmFjayByZWZlcmVuY2VzIGZyb20gcHJvY0EgdG8gdGFyZ2V0IG5vZGUgKG9uIHByb2NCKS4gVGhp cw0KKyAqIHN0cnVjdHVyZSBpcyB1bnNhZmUgdG8gYWNjZXNzIHdpdGhvdXQgaG9sZGluZyBAcHJv Yy0+b3V0ZXJfbG9jay4NCisgKi8NCitzdHJ1Y3QgYmluZGVyX3JlZiB7DQorCS8qIExvb2t1cHMg bmVlZGVkOiAqLw0KKwkvKiAgIG5vZGUgKyBwcm9jID0+IHJlZiAodHJhbnNhY3Rpb24pICovDQor CS8qICAgZGVzYyArIHByb2MgPT4gcmVmICh0cmFuc2FjdGlvbiwgaW5jL2RlYyByZWYpICovDQor CS8qICAgbm9kZSA9PiByZWZzICsgcHJvY3MgKHByb2MgZXhpdCkgKi8NCisJc3RydWN0IGJpbmRl cl9yZWZfZGF0YSBkYXRhOw0KKwlzdHJ1Y3QgcmJfbm9kZSByYl9ub2RlX2Rlc2M7DQorCXN0cnVj dCByYl9ub2RlIHJiX25vZGVfbm9kZTsNCisJc3RydWN0IGhsaXN0X25vZGUgbm9kZV9lbnRyeTsN CisJc3RydWN0IGJpbmRlcl9wcm9jICpwcm9jOw0KKwlzdHJ1Y3QgYmluZGVyX25vZGUgKm5vZGU7 DQorCXN0cnVjdCBiaW5kZXJfcmVmX2RlYXRoICpkZWF0aDsNCit9Ow0KKw0KKy8qKg0KKyAqIHN0 cnVjdCBiaW5kZXJfcHJvYyAtIGJpbmRlciBwcm9jZXNzIGJvb2trZWVwaW5nDQorICogQHByb2Nf bm9kZTogICAgICAgICAgICBlbGVtZW50IGZvciBiaW5kZXJfcHJvY3MgbGlzdA0KKyAqIEB0aHJl YWRzOiAgICAgICAgICAgICAgcmJ0cmVlIG9mIGJpbmRlcl90aHJlYWRzIGluIHRoaXMgcHJvYw0K KyAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAaW5uZXJfbG9jaykNCisg KiBAbm9kZXM6ICAgICAgICAgICAgICAgIHJidHJlZSBvZiBiaW5kZXIgbm9kZXMgYXNzb2NpYXRl ZCB3aXRoDQorICogICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHByb2Mgb3JkZXJlZCBieSBu b2RlLT5wdHINCisgKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQGlubmVy X2xvY2spDQorICogQHJlZnNfYnlfZGVzYzogICAgICAgICByYnRyZWUgb2YgcmVmcyBvcmRlcmVk IGJ5IHJlZi0+ZGVzYw0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBA b3V0ZXJfbG9jaykNCisgKiBAcmVmc19ieV9ub2RlOiAgICAgICAgIHJidHJlZSBvZiByZWZzIG9y ZGVyZWQgYnkgcmVmLT5ub2RlDQorICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVk IGJ5IEBvdXRlcl9sb2NrKQ0KKyAqIEB3YWl0aW5nX3RocmVhZHM6ICAgICAgdGhyZWFkcyBjdXJy ZW50bHkgd2FpdGluZyBmb3IgcHJvYyB3b3JrDQorICogICAgICAgICAgICAgICAgICAgICAgICAo cHJvdGVjdGVkIGJ5IEBpbm5lcl9sb2NrKQ0KKyAqIEBwaWQgICAgICAgICAgICAgICAgICAgUElE IG9mIGdyb3VwX2xlYWRlciBvZiBwcm9jZXNzDQorICogICAgICAgICAgICAgICAgICAgICAgICAo aW52YXJpYW50IGFmdGVyIGluaXRpYWxpemVkKQ0KKyAqIEB0c2sgICAgICAgICAgICAgICAgICAg dGFza19zdHJ1Y3QgZm9yIGdyb3VwX2xlYWRlciBvZiBwcm9jZXNzDQorICogICAgICAgICAgICAg ICAgICAgICAgICAoaW52YXJpYW50IGFmdGVyIGluaXRpYWxpemVkKQ0KKyAqIEBkZWZlcnJlZF93 b3JrX25vZGU6ICAgZWxlbWVudCBmb3IgYmluZGVyX2RlZmVycmVkX2xpc3QNCisgKiAgICAgICAg ICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgYmluZGVyX2RlZmVycmVkX2xvY2spDQorICog QGRlZmVycmVkX3dvcms6ICAgICAgICBiaXRtYXAgb2YgZGVmZXJyZWQgd29yayB0byBwZXJmb3Jt DQorICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IGJpbmRlcl9kZWZlcnJl ZF9sb2NrKQ0KKyAqIEBpc19kZWFkOiAgICAgICAgICAgICAgcHJvY2VzcyBpcyBkZWFkIGFuZCBh d2FpdGluZyBmcmVlDQorICogICAgICAgICAgICAgICAgICAgICAgICB3aGVuIG91dHN0YW5kaW5n IHRyYW5zYWN0aW9ucyBhcmUgY2xlYW5lZCB1cA0KKyAqICAgICAgICAgICAgICAgICAgICAgICAg KHByb3RlY3RlZCBieSBAaW5uZXJfbG9jaykNCisgKiBAdG9kbzogICAgICAgICAgICAgICAgIGxp c3Qgb2Ygd29yayBmb3IgdGhpcyBwcm9jZXNzDQorICogICAgICAgICAgICAgICAgICAgICAgICAo cHJvdGVjdGVkIGJ5IEBpbm5lcl9sb2NrKQ0KKyAqIEBzdGF0czogICAgICAgICAgICAgICAgcGVy LXByb2Nlc3MgYmluZGVyIHN0YXRpc3RpY3MNCisgKiAgICAgICAgICAgICAgICAgICAgICAgIChh dG9taWNzLCBubyBsb2NrIG5lZWRlZCkNCisgKiBAZGVsaXZlcmVkX2RlYXRoOiAgICAgIGxpc3Qg b2YgZGVsaXZlcmVkIGRlYXRoIG5vdGlmaWNhdGlvbg0KKyAqICAgICAgICAgICAgICAgICAgICAg ICAgKHByb3RlY3RlZCBieSBAaW5uZXJfbG9jaykNCisgKiBAbWF4X3RocmVhZHM6ICAgICAgICAg IGNhcCBvbiBudW1iZXIgb2YgYmluZGVyIHRocmVhZHMNCisgKiAgICAgICAgICAgICAgICAgICAg ICAgIChwcm90ZWN0ZWQgYnkgQGlubmVyX2xvY2spDQorICogQHJlcXVlc3RlZF90aHJlYWRzOiAg ICBudW1iZXIgb2YgYmluZGVyIHRocmVhZHMgcmVxdWVzdGVkIGJ1dCBub3QNCisgKiAgICAgICAg ICAgICAgICAgICAgICAgIHlldCBzdGFydGVkLiBJbiBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBj YW4NCisgKiAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgYmUgMCBvciAxLg0KKyAqICAgICAg ICAgICAgICAgICAgICAgICAgKHByb3RlY3RlZCBieSBAaW5uZXJfbG9jaykNCisgKiBAcmVxdWVz dGVkX3RocmVhZHNfc3RhcnRlZDogbnVtYmVyIGJpbmRlciB0aHJlYWRzIHN0YXJ0ZWQNCisgKiAg ICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQGlubmVyX2xvY2spDQorICogQHRt cF9yZWY6ICAgICAgICAgICAgICB0ZW1wb3JhcnkgcmVmZXJlbmNlIHRvIGluZGljYXRlIHByb2Mg aXMgaW4gdXNlDQorICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVjdGVkIGJ5IEBpbm5l cl9sb2NrKQ0KKyAqIEBkZWZhdWx0X3ByaW9yaXR5OiAgICAgZGVmYXVsdCBzY2hlZHVsZXIgcHJp b3JpdHkNCisgKiAgICAgICAgICAgICAgICAgICAgICAgIChpbnZhcmlhbnQgYWZ0ZXIgaW5pdGlh bGl6ZWQpDQorICogQGRlYnVnZnNfZW50cnk6ICAgICAgICBkZWJ1Z2ZzIG5vZGUNCisgKiBAYWxs b2M6ICAgICAgICAgICAgICAgIGJpbmRlciBhbGxvY2F0b3IgYm9va2tlZXBpbmcNCisgKiBAY29u dGV4dDogICAgICAgICAgICAgIGJpbmRlcl9jb250ZXh0IGZvciB0aGlzIHByb2MNCisgKiAgICAg ICAgICAgICAgICAgICAgICAgIChpbnZhcmlhbnQgYWZ0ZXIgaW5pdGlhbGl6ZWQpDQorICogQGlu bmVyX2xvY2s6ICAgICAgICAgICBjYW4gbmVzdCB1bmRlciBvdXRlcl9sb2NrIGFuZC9vciBub2Rl IGxvY2sNCisgKiBAb3V0ZXJfbG9jazogICAgICAgICAgIG5vIG5lc3RpbmcgdW5kZXIgaW5ub3Ig b3Igbm9kZSBsb2NrDQorICogICAgICAgICAgICAgICAgICAgICAgICBMb2NrIG9yZGVyOiAxKSBv dXRlciwgMikgbm9kZSwgMykgaW5uZXINCisgKiBAYmluZGVyZnNfZW50cnk6ICAgICAgIHByb2Nl c3Mtc3BlY2lmaWMgYmluZGVyZnMgbG9nIGZpbGUNCisgKg0KKyAqIEJvb2trZWVwaW5nIHN0cnVj dHVyZSBmb3IgYmluZGVyIHByb2Nlc3Nlcw0KKyAqLw0KK3N0cnVjdCBiaW5kZXJfcHJvYyB7DQor CXN0cnVjdCBobGlzdF9ub2RlIHByb2Nfbm9kZTsNCisJc3RydWN0IHJiX3Jvb3QgdGhyZWFkczsN CisJc3RydWN0IHJiX3Jvb3Qgbm9kZXM7DQorCXN0cnVjdCByYl9yb290IHJlZnNfYnlfZGVzYzsN CisJc3RydWN0IHJiX3Jvb3QgcmVmc19ieV9ub2RlOw0KKwlzdHJ1Y3QgbGlzdF9oZWFkIHdhaXRp bmdfdGhyZWFkczsNCisJaW50IHBpZDsNCisJc3RydWN0IHRhc2tfc3RydWN0ICp0c2s7DQorCXN0 cnVjdCBobGlzdF9ub2RlIGRlZmVycmVkX3dvcmtfbm9kZTsNCisJaW50IGRlZmVycmVkX3dvcms7 DQorCWJvb2wgaXNfZGVhZDsNCisNCisJc3RydWN0IGxpc3RfaGVhZCB0b2RvOw0KKwlzdHJ1Y3Qg YmluZGVyX3N0YXRzIHN0YXRzOw0KKwlzdHJ1Y3QgbGlzdF9oZWFkIGRlbGl2ZXJlZF9kZWF0aDsN CisJaW50IG1heF90aHJlYWRzOw0KKwlpbnQgcmVxdWVzdGVkX3RocmVhZHM7DQorCWludCByZXF1 ZXN0ZWRfdGhyZWFkc19zdGFydGVkOw0KKwlpbnQgdG1wX3JlZjsNCisJbG9uZyBkZWZhdWx0X3By aW9yaXR5Ow0KKwlzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2VudHJ5Ow0KKwlzdHJ1Y3QgYmluZGVy X2FsbG9jIGFsbG9jOw0KKwlzdHJ1Y3QgYmluZGVyX2NvbnRleHQgKmNvbnRleHQ7DQorCXNwaW5s b2NrX3QgaW5uZXJfbG9jazsNCisJc3BpbmxvY2tfdCBvdXRlcl9sb2NrOw0KKwlzdHJ1Y3QgZGVu dHJ5ICpiaW5kZXJmc19lbnRyeTsNCit9Ow0KKw0KKy8qKg0KKyAqIHN0cnVjdCBiaW5kZXJfdGhy ZWFkIC0gYmluZGVyIHRocmVhZCBib29ra2VlcGluZw0KKyAqIEBwcm9jOiAgICAgICAgICAgICAg ICAgYmluZGVyIHByb2Nlc3MgZm9yIHRoaXMgdGhyZWFkDQorICogICAgICAgICAgICAgICAgICAg ICAgICAoaW52YXJpYW50IGFmdGVyIGluaXRpYWxpemF0aW9uKQ0KKyAqIEByYl9ub2RlOiAgICAg ICAgICAgICAgZWxlbWVudCBmb3IgcHJvYy0+dGhyZWFkcyByYnRyZWUNCisgKiAgICAgICAgICAg ICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xvY2spDQorICogQHdhaXRp bmdfdGhyZWFkX25vZGU6ICBlbGVtZW50IGZvciBAcHJvYy0+d2FpdGluZ190aHJlYWRzIGxpc3QN CisgKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xv Y2spDQorICogQHBpZDogICAgICAgICAgICAgICAgICBQSUQgZm9yIHRoaXMgdGhyZWFkDQorICog ICAgICAgICAgICAgICAgICAgICAgICAoaW52YXJpYW50IGFmdGVyIGluaXRpYWxpemF0aW9uKQ0K KyAqIEBsb29wZXI6ICAgICAgICAgICAgICAgYml0bWFwIG9mIGxvb3Bpbmcgc3RhdGUNCisgKiAg ICAgICAgICAgICAgICAgICAgICAgIChvbmx5IGFjY2Vzc2VkIGJ5IHRoaXMgdGhyZWFkKQ0KKyAq IEBsb29wZXJfbmVlZHNfcmV0dXJuOiAgbG9vcGluZyB0aHJlYWQgbmVlZHMgdG8gZXhpdCBkcml2 ZXINCisgKiAgICAgICAgICAgICAgICAgICAgICAgIChubyBsb2NrIG5lZWRlZCkNCisgKiBAdHJh bnNhY3Rpb25fc3RhY2s6ICAgIHN0YWNrIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyBmb3Ig dGhpcyB0aHJlYWQNCisgKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQHBy b2MtPmlubmVyX2xvY2spDQorICogQHRvZG86ICAgICAgICAgICAgICAgICBsaXN0IG9mIHdvcmsg dG8gZG8gZm9yIHRoaXMgdGhyZWFkDQorICogICAgICAgICAgICAgICAgICAgICAgICAocHJvdGVj dGVkIGJ5IEBwcm9jLT5pbm5lcl9sb2NrKQ0KKyAqIEBwcm9jZXNzX3RvZG86ICAgICAgICAgd2hl dGhlciB3b3JrIGluIEB0b2RvIHNob3VsZCBiZSBwcm9jZXNzZWQNCisgKiAgICAgICAgICAgICAg ICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xvY2spDQorICogQHJldHVybl9l cnJvcjogICAgICAgICB0cmFuc2FjdGlvbiBlcnJvcnMgcmVwb3J0ZWQgYnkgdGhpcyB0aHJlYWQN CisgKiAgICAgICAgICAgICAgICAgICAgICAgIChvbmx5IGFjY2Vzc2VkIGJ5IHRoaXMgdGhyZWFk KQ0KKyAqIEByZXBseV9lcnJvcjogICAgICAgICAgdHJhbnNhY3Rpb24gZXJyb3JzIHJlcG9ydGVk IGJ5IHRhcmdldCB0aHJlYWQNCisgKiAgICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQg YnkgQHByb2MtPmlubmVyX2xvY2spDQorICogQHdhaXQ6ICAgICAgICAgICAgICAgICB3YWl0IHF1 ZXVlIGZvciB0aHJlYWQgd29yaw0KKyAqIEBzdGF0czogICAgICAgICAgICAgICAgcGVyLXRocmVh ZCBzdGF0aXN0aWNzDQorICogICAgICAgICAgICAgICAgICAgICAgICAoYXRvbWljcywgbm8gbG9j ayBuZWVkZWQpDQorICogQHRtcF9yZWY6ICAgICAgICAgICAgICB0ZW1wb3JhcnkgcmVmZXJlbmNl IHRvIGluZGljYXRlIHRocmVhZCBpcyBpbiB1c2UNCisgKiAgICAgICAgICAgICAgICAgICAgICAg IChhdG9taWMgc2luY2UgQHByb2MtPmlubmVyX2xvY2sgY2Fubm90DQorICogICAgICAgICAgICAg ICAgICAgICAgICBhbHdheXMgYmUgYWNxdWlyZWQpDQorICogQGlzX2RlYWQ6ICAgICAgICAgICAg ICB0aHJlYWQgaXMgZGVhZCBhbmQgYXdhaXRpbmcgZnJlZQ0KKyAqICAgICAgICAgICAgICAgICAg ICAgICAgd2hlbiBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbnMgYXJlIGNsZWFuZWQgdXANCisgKiAg ICAgICAgICAgICAgICAgICAgICAgIChwcm90ZWN0ZWQgYnkgQHByb2MtPmlubmVyX2xvY2spDQor ICoNCisgKiBCb29ra2VlcGluZyBzdHJ1Y3R1cmUgZm9yIGJpbmRlciB0aHJlYWRzLg0KKyAqLw0K K3N0cnVjdCBiaW5kZXJfdGhyZWFkIHsNCisJc3RydWN0IGJpbmRlcl9wcm9jICpwcm9jOw0KKwlz dHJ1Y3QgcmJfbm9kZSByYl9ub2RlOw0KKwlzdHJ1Y3QgbGlzdF9oZWFkIHdhaXRpbmdfdGhyZWFk X25vZGU7DQorCWludCBwaWQ7DQorCWludCBsb29wZXI7ICAgICAgICAgICAgICAvKiBvbmx5IG1v ZGlmaWVkIGJ5IHRoaXMgdGhyZWFkICovDQorCWJvb2wgbG9vcGVyX25lZWRfcmV0dXJuOyAvKiBj YW4gYmUgd3JpdHRlbiBieSBvdGhlciB0aHJlYWQgKi8NCisJc3RydWN0IGJpbmRlcl90cmFuc2Fj dGlvbiAqdHJhbnNhY3Rpb25fc3RhY2s7DQorCXN0cnVjdCBsaXN0X2hlYWQgdG9kbzsNCisJYm9v bCBwcm9jZXNzX3RvZG87DQorCXN0cnVjdCBiaW5kZXJfZXJyb3IgcmV0dXJuX2Vycm9yOw0KKwlz dHJ1Y3QgYmluZGVyX2Vycm9yIHJlcGx5X2Vycm9yOw0KKwl3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0 Ow0KKwlzdHJ1Y3QgYmluZGVyX3N0YXRzIHN0YXRzOw0KKwlhdG9taWNfdCB0bXBfcmVmOw0KKwli b29sIGlzX2RlYWQ7DQorfTsNCisNCisvKioNCisgKiBzdHJ1Y3QgYmluZGVyX3R4bl9mZF9maXh1 cCAtIHRyYW5zYWN0aW9uIGZkIGZpeHVwIGxpc3QgZWxlbWVudA0KKyAqIEBmaXh1cF9lbnRyeTog ICAgICAgICAgbGlzdCBlbnRyeQ0KKyAqIEBmaWxlOiAgICAgICAgICAgICAgICAgc3RydWN0IGZp bGUgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIG5ldyBmZA0KKyAqIEBvZmZzZXQ6ICAgICAgICAgICAg ICAgb2Zmc2V0IGluIGJ1ZmZlciBkYXRhIHRvIHRoaXMgZml4dXANCisgKg0KKyAqIExpc3QgZWxl bWVudCBmb3IgZmQgZml4dXBzIGluIGEgdHJhbnNhY3Rpb24uIFNpbmNlIGZpbGUNCisgKiBkZXNj cmlwdG9ycyBuZWVkIHRvIGJlIGFsbG9jYXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUNCisgKiB0 YXJnZXQgcHJvY2Vzcywgd2UgcGFzcyBlYWNoIGZkIHRvIGJlIHByb2Nlc3NlZCBpbiB0aGlzDQor ICogc3RydWN0Lg0KKyAqLw0KK3N0cnVjdCBiaW5kZXJfdHhuX2ZkX2ZpeHVwIHsNCisJc3RydWN0 IGxpc3RfaGVhZCBmaXh1cF9lbnRyeTsNCisJc3RydWN0IGZpbGUgKmZpbGU7DQorCXNpemVfdCBv ZmZzZXQ7DQorfTsNCisNCitzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uIHsNCisJaW50IGRlYnVn X2lkOw0KKwlzdHJ1Y3QgYmluZGVyX3dvcmsgd29yazsNCisJc3RydWN0IGJpbmRlcl90aHJlYWQg KmZyb207DQorCXN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gKmZyb21fcGFyZW50Ow0KKwlzdHJ1 Y3QgYmluZGVyX3Byb2MgKnRvX3Byb2M7DQorCXN0cnVjdCBiaW5kZXJfdGhyZWFkICp0b190aHJl YWQ7DQorCXN0cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gKnRvX3BhcmVudDsNCisJdW5zaWduZWQg bmVlZF9yZXBseToxOw0KKwkvKiB1bnNpZ25lZCBpc19kZWFkOjE7ICovICAgICAgIC8qIG5vdCB1 c2VkIGF0IHRoZSBtb21lbnQgKi8NCisNCisJc3RydWN0IGJpbmRlcl9idWZmZXIgKmJ1ZmZlcjsN CisJdW5zaWduZWQgaW50ICAgIGNvZGU7DQorCXVuc2lnbmVkIGludCAgICBmbGFnczsNCisJbG9u ZyAgICBwcmlvcml0eTsNCisJbG9uZyAgICBzYXZlZF9wcmlvcml0eTsNCisJa3VpZF90ICBzZW5k ZXJfZXVpZDsNCisJc3RydWN0IGxpc3RfaGVhZCBmZF9maXh1cHM7DQorCWJpbmRlcl91aW50cHRy X3Qgc2VjdXJpdHlfY3R4Ow0KKwkvKioNCisJICogQGxvY2s6ICBwcm90ZWN0cyBAZnJvbSwgQHRv X3Byb2MsIGFuZCBAdG9fdGhyZWFkDQorCSAqDQorCSAqIEBmcm9tLCBAdG9fcHJvYywgYW5kIEB0 b190aHJlYWQgY2FuIGJlIHNldCB0byBOVUxMDQorCSAqIGR1cmluZyB0aHJlYWQgdGVhcmRvd24N CisJICovDQorCXNwaW5sb2NrX3QgbG9jazsNCisjaWZkZWYgQ09ORklHX0JJTkRFUl9VU0VSX1RS QUNLSU5HDQorCXN0cnVjdCB0aW1lc3BlYyB0aW1lc3RhbXA7DQorCXN0cnVjdCB0aW1ldmFsIHR2 Ow0KKyNlbmRpZg0KK307DQorDQorLyoqDQorICogc3RydWN0IGJpbmRlcl9vYmplY3QgLSB1bmlv biBvZiBmbGF0IGJpbmRlciBvYmplY3QgdHlwZXMNCisgKiBAaGRyOiAgIGdlbmVyaWMgb2JqZWN0 IGhlYWRlcg0KKyAqIEBmYm86ICAgYmluZGVyIG9iamVjdCAobm9kZXMgYW5kIHJlZnMpDQorICog QGZkbzogICBmaWxlIGRlc2NyaXB0b3Igb2JqZWN0DQorICogQGJibzogICBiaW5kZXIgYnVmZmVy IHBvaW50ZXINCisgKiBAZmRhbzogIGZpbGUgZGVzY3JpcHRvciBhcnJheQ0KKyAqDQorICogVXNl ZCBmb3IgdHlwZS1pbmRlcGVuZGVudCBvYmplY3QgY29waWVzDQorICovDQorc3RydWN0IGJpbmRl cl9vYmplY3Qgew0KKwl1bmlvbiB7DQorCQlzdHJ1Y3QgYmluZGVyX29iamVjdF9oZWFkZXIgaGRy Ow0KKwkJc3RydWN0IGZsYXRfYmluZGVyX29iamVjdCBmYm87DQorCQlzdHJ1Y3QgYmluZGVyX2Zk X29iamVjdCBmZG87DQorCQlzdHJ1Y3QgYmluZGVyX2J1ZmZlcl9vYmplY3QgYmJvOw0KKwkJc3Ry dWN0IGJpbmRlcl9mZF9hcnJheV9vYmplY3QgZmRhbzsNCisJfTsNCit9Ow0KKw0KIGV4dGVybiBz dHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uX2xvZyBiaW5kZXJfdHJhbnNhY3Rpb25fbG9nOw0KIGV4 dGVybiBzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uX2xvZyBiaW5kZXJfdHJhbnNhY3Rpb25fbG9n X2ZhaWxlZDsNCiAjZW5kaWYgLyogX0xJTlVYX0JJTkRFUl9JTlRFUk5BTF9IICovDQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9hbmRyb2lkL2JpbmRlcl9sYXRlbmN5X3RyYWNlci5jIGIvZHJpdmVycy9h bmRyb2lkL2JpbmRlcl9sYXRlbmN5X3RyYWNlci5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5k ZXggMDAwMDAwMC4uMmZjOWQ0Yw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9hbmRyb2lk L2JpbmRlcl9sYXRlbmN5X3RyYWNlci5jDQpAQCAtMCwwICsxLDEwNSBAQA0KKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQorLyoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWVk aWFUZWsgSW5jLg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCisjaW5jbHVk ZSA8dWFwaS9saW51eC9hbmRyb2lkL2JpbmRlci5oPg0KKyNpbmNsdWRlICJiaW5kZXJfYWxsb2Mu aCINCisjaW5jbHVkZSAiYmluZGVyX2ludGVybmFsLmgiDQorI2luY2x1ZGUgImJpbmRlcl90cmFj ZS5oIg0KKw0KKy8qDQorICogcHJvYmVfYmluZGVyX2ZyZWVfdHJhbnNhY3Rpb24gLSBPdXRwdXQg aW5mbyBvZiBhIGRlbGF5IHRyYW5zYWN0aW9uDQorICogQHQ6ICAgICAgICAgIHBvaW50ZXIgdG8g dGhlIG92ZXItdGltZSB0cmFuc2FjdGlvbg0KKyAqLw0KK3ZvaWQgcHJvYmVfYmluZGVyX2ZyZWVf dHJhbnNhY3Rpb24odm9pZCAqaWdub3JlLCBzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uICp0KQ0K K3sNCisJc3RydWN0IHJ0Y190aW1lIHRtOw0KKwlzdHJ1Y3QgdGltZXNwZWMgKnN0YXJ0aW1lOw0K KwlzdHJ1Y3QgdGltZXNwZWMgY3VyLCBzdWJfdDsNCisNCisJa3RpbWVfZ2V0X3RzKCZjdXIpOw0K KwlzdGFydGltZSA9ICZ0LT50aW1lc3RhbXA7DQorCXN1Yl90ID0gdGltZXNwZWNfc3ViKGN1ciwg KnN0YXJ0aW1lKTsNCisNCisJLyogaWYgdHJhbnNhY3Rpb24gdGltZSBpcyBvdmVyIHRoYW4gMiBz ZWMsDQorCSAqIHNob3cgdGltZW91dCB3YXJuaW5nIGxvZy4NCisJICovDQorCWlmIChzdWJfdC50 dl9zZWMgPCAyKQ0KKwkJcmV0dXJuOw0KKw0KKwlydGNfdGltZV90b190bSh0LT50di50dl9zZWMs ICZ0bSk7DQorDQorCXNwaW5fbG9jaygmdC0+bG9jayk7DQorCXByX2luZm9fcmF0ZWxpbWl0ZWQo IiVkOiBmcm9tICVkOiVkIHRvICVkOiVkIiwNCisJCQl0LT5kZWJ1Z19pZCwNCisJCQl0LT5mcm9t ID8gdC0+ZnJvbS0+cHJvYy0+cGlkIDogMCwNCisJCQl0LT5mcm9tID8gdC0+ZnJvbS0+cGlkIDog MCwNCisJCQl0LT50b19wcm9jID8gdC0+dG9fcHJvYy0+cGlkIDogMCwNCisJCQl0LT50b190aHJl YWQgPyB0LT50b190aHJlYWQtPnBpZCA6IDApOw0KKwlzcGluX3VubG9jaygmdC0+bG9jayk7DQor DQorCXByX2luZm9fcmF0ZWxpbWl0ZWQoIiB0b3RhbCAldS4lMDNsZCBzIGNvZGUgJXUgc3RhcnQg JWx1LiUwM2xkIGFuZHJvaWQgJWQtJTAyZC0lMDJkICUwMmQ6JTAyZDolMDJkLiUwM2x1XG4iLA0K KwkJCSh1bnNpZ25lZCBpbnQpc3ViX3QudHZfc2VjLA0KKwkJCShzdWJfdC50dl9uc2VjIC8gTlNF Q19QRVJfTVNFQyksDQorCQkJdC0+Y29kZSwNCisJCQkodW5zaWduZWQgbG9uZylzdGFydGltZS0+ dHZfc2VjLA0KKwkJCShzdGFydGltZS0+dHZfbnNlYyAvIE5TRUNfUEVSX01TRUMpLA0KKwkJCSh0 bS50bV95ZWFyICsgMTkwMCksICh0bS50bV9tb24gKyAxKSwgdG0udG1fbWRheSwNCisJCQl0bS50 bV9ob3VyLCB0bS50bV9taW4sIHRtLnRtX3NlYywNCisJCQkodW5zaWduZWQgbG9uZykodC0+dHYu dHZfdXNlYyAvIFVTRUNfUEVSX01TRUMpKTsNCit9DQorDQorc3RhdGljIHZvaWQgcHJvYmVfYmlu ZGVyX3VwZGF0ZV9pbmZvKHZvaWQgKmlnbm9yZSwgc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbiAq dCwNCisJCQkgICBzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uX2xvZ19lbnRyeSAqZSkNCit7DQor CWt0aW1lX2dldF90cygmZS0+dGltZXN0YW1wKTsNCisJZG9fZ2V0dGltZW9mZGF5KCZlLT50dik7 DQorCWUtPnR2LnR2X3NlYyAtPSAoc3lzX3R6LnR6X21pbnV0ZXN3ZXN0ICogNjApOw0KKwltZW1j cHkoJnQtPnRpbWVzdGFtcCwgJmUtPnRpbWVzdGFtcCwgc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYykp Ow0KKwltZW1jcHkoJnQtPnR2LCAmZS0+dHYsIHNpemVvZihzdHJ1Y3QgdGltZXZhbCkpOw0KK30N CisNCitzdGF0aWMgdm9pZCBwcm9iZV9wcmludF9iaW5kZXJfdHJhbnNhY3Rpb25fZXh0KHZvaWQg Kmlnbm9yZSwgc3RydWN0IHNlcV9maWxlICptLA0KKwkJCQkJIHN0cnVjdCBiaW5kZXJfdHJhbnNh Y3Rpb24gKnQpDQorew0KKwlzdHJ1Y3QgcnRjX3RpbWUgdG07DQorDQorCXJ0Y190aW1lX3RvX3Rt KHQtPnR2LnR2X3NlYywgJnRtKTsNCisJc2VxX3ByaW50ZihtLA0KKwkJICAgIiBzdGFydCAlbHUu JTA2bHUgYW5kcm9pZCAlZC0lMDJkLSUwMmQgJTAyZDolMDJkOiUwMmQuJTAzbHUiLA0KKwkJICAg KHVuc2lnbmVkIGxvbmcpdC0+dGltZXN0YW1wLnR2X3NlYywNCisJCSAgICh0LT50aW1lc3RhbXAu dHZfbnNlYyAvIE5TRUNfUEVSX1VTRUMpLA0KKwkJICAgKHRtLnRtX3llYXIgKyAxOTAwKSwgKHRt LnRtX21vbiArIDEpLCB0bS50bV9tZGF5LA0KKwkJICAgdG0udG1faG91ciwgdG0udG1fbWluLCB0 bS50bV9zZWMsDQorCQkgICAodW5zaWduZWQgbG9uZykodC0+dHYudHZfdXNlYyAvIFVTRUNfUEVS X01TRUMpKTsNCit9DQorDQorc3RhdGljIGludCBfX2luaXQgaW5pdF9iaW5kZXJfbGF0ZW5jeV90 cmFjZXIodm9pZCkNCit7DQorCXJlZ2lzdGVyX3RyYWNlX2JpbmRlcl9mcmVlX3RyYW5zYWN0aW9u KA0KKwkJCXByb2JlX2JpbmRlcl9mcmVlX3RyYW5zYWN0aW9uLCBOVUxMKTsNCisJcmVnaXN0ZXJf dHJhY2VfYmluZGVyX3VwZGF0ZV9pbmZvKA0KKwkJCXByb2JlX2JpbmRlcl91cGRhdGVfaW5mbywg TlVMTCk7DQorCXJlZ2lzdGVyX3RyYWNlX3ByaW50X2JpbmRlcl90cmFuc2FjdGlvbl9leHQoDQor CQkJcHJvYmVfcHJpbnRfYmluZGVyX3RyYW5zYWN0aW9uX2V4dCwgTlVMTCk7DQorDQorCXJldHVy biAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBleGl0X2JpbmRlcl9sYXRlbmN5X3RyYWNlcih2b2lk KQ0KK3sNCisJdW5yZWdpc3Rlcl90cmFjZV9iaW5kZXJfZnJlZV90cmFuc2FjdGlvbigNCisJCQlw cm9iZV9iaW5kZXJfZnJlZV90cmFuc2FjdGlvbiwgTlVMTCk7DQorCXVucmVnaXN0ZXJfdHJhY2Vf YmluZGVyX3VwZGF0ZV9pbmZvKA0KKwkJCXByb2JlX2JpbmRlcl91cGRhdGVfaW5mbywgTlVMTCk7 DQorCXVucmVnaXN0ZXJfdHJhY2VfcHJpbnRfYmluZGVyX3RyYW5zYWN0aW9uX2V4dCgNCisJCQlw cm9iZV9wcmludF9iaW5kZXJfdHJhbnNhY3Rpb25fZXh0LCBOVUxMKTsNCit9DQorDQorbW9kdWxl X2luaXQoaW5pdF9iaW5kZXJfbGF0ZW5jeV90cmFjZXIpOw0KK21vZHVsZV9leGl0KGV4aXRfYmlu ZGVyX2xhdGVuY3lfdHJhY2VyKTsNCisNCitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQorDQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oIGIvZHJpdmVycy9hbmRy b2lkL2JpbmRlcl90cmFjZS5oDQppbmRleCA2NzMxYzNjLi5lMGUxZjljIDEwMDY0NA0KLS0tIGEv ZHJpdmVycy9hbmRyb2lkL2JpbmRlcl90cmFjZS5oDQorKysgYi9kcml2ZXJzL2FuZHJvaWQvYmlu ZGVyX3RyYWNlLmgNCkBAIC0xOCw2ICsxOCw3IEBADQogc3RydWN0IGJpbmRlcl9yZWZfZGF0YTsN CiBzdHJ1Y3QgYmluZGVyX3RocmVhZDsNCiBzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uOw0KK3N0 cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb25fbG9nX2VudHJ5Ow0KIA0KIFRSQUNFX0VWRU5UKGJpbmRl cl9pb2N0bCwNCiAJVFBfUFJPVE8odW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcp LA0KQEAgLTk1LDYgKzk2LDU0IEBADQogCQkgIF9fZW50cnktPnRocmVhZF90b2RvKQ0KICk7DQog DQorREVDTEFSRV9UUkFDRShiaW5kZXJfdXBkYXRlX2luZm8sDQorCVRQX1BST1RPKHN0cnVjdCBi aW5kZXJfdHJhbnNhY3Rpb24gKnQsDQorCQkgc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbl9sb2df ZW50cnkgKmUpLA0KKwlUUF9BUkdTKHQsIGUpDQorKTsNCisNCitERUNMQVJFX1RSQUNFKHByaW50 X2JpbmRlcl90cmFuc2FjdGlvbl9leHQsDQorCVRQX1BST1RPKHN0cnVjdCBzZXFfZmlsZSAqbSwN CisJCSBzdHJ1Y3QgYmluZGVyX3RyYW5zYWN0aW9uICp0KSwNCisJVFBfQVJHUyhtLCB0KQ0KKyk7 DQorDQorVFJBQ0VfRVZFTlQoYmluZGVyX2ZyZWVfdHJhbnNhY3Rpb24sDQorCVRQX1BST1RPKHN0 cnVjdCBiaW5kZXJfdHJhbnNhY3Rpb24gKnQpLA0KKwlUUF9BUkdTKHQpLA0KKwlUUF9TVFJVQ1Rf X2VudHJ5KA0KKwkJX19maWVsZChpbnQsIGRlYnVnX2lkKQ0KKwkJX19maWVsZChpbnQsIGZyb21f cHJvYykNCisJCV9fZmllbGQoaW50LCBmcm9tX3RocmVhZCkNCisJCV9fZmllbGQoaW50LCB0b19w cm9jKQ0KKwkJX19maWVsZChpbnQsIHRvX3RocmVhZCkNCisJCV9fZmllbGQodW5zaWduZWQgaW50 LCBjb2RlKQ0KKwkJX19maWVsZCh1bnNpZ25lZCBpbnQsIGZsYWdzKQ0KKwkJX19maWVsZCh1bnNp Z25lZCBsb25nLCBzdGFydF9zZWMpDQorCQlfX2ZpZWxkKHVuc2lnbmVkIGxvbmcsIHN0YXJ0X25z ZWMpDQorCSksDQorCVRQX2Zhc3RfYXNzaWduKA0KKwkJX19lbnRyeS0+ZGVidWdfaWQgPSB0LT5k ZWJ1Z19pZDsNCisJCV9fZW50cnktPmZyb21fcHJvYyA9IHQtPmZyb20gPyB0LT5mcm9tLT5wcm9j LT5waWQgOiAwOw0KKwkJX19lbnRyeS0+ZnJvbV90aHJlYWQgPSB0LT5mcm9tID8gdC0+ZnJvbS0+ cGlkIDogMDsNCisJCV9fZW50cnktPnRvX3Byb2MgPSB0LT50b19wcm9jID8gdC0+dG9fcHJvYy0+ cGlkIDogMDsNCisJCV9fZW50cnktPnRvX3RocmVhZCA9IHQtPnRvX3RocmVhZCA/IHQtPnRvX3Ro cmVhZC0+cGlkIDogMDsNCisJCV9fZW50cnktPmNvZGUgPSB0LT5jb2RlOw0KKwkJX19lbnRyeS0+ ZmxhZ3MgPSB0LT5mbGFnczsNCisjaWZkZWYgQ09ORklHX0JJTkRFUl9VU0VSX1RSQUNLSU5HDQor CQlfX2VudHJ5LT5zdGFydF9zZWMgPSB0LT50aW1lc3RhbXAudHZfc2VjOw0KKwkJX19lbnRyeS0+ c3RhcnRfbnNlYyA9IHQtPnRpbWVzdGFtcC50dl9uc2VjIC8gTlNFQ19QRVJfTVNFQzsNCisjZWxz ZQ0KKwkJX19lbnRyeS0+c3RhcnRfc2VjID0gMDsNCisJCV9fZW50cnktPnN0YXJ0X25zZWMgPSAw Ow0KKyNlbmRpZg0KKwkpLA0KKwlUUF9wcmludGsoInRyYW5zYWN0aW9uPSVkIGZyb20gJWQ6JWQg dG8gJWQ6JWQgZmxhZ3M9MHgleCBjb2RlPTB4JXggc3RhcnQgJWx1LiUwM2xkIiwNCisJCSAgX19l bnRyeS0+ZGVidWdfaWQsIF9fZW50cnktPmZyb21fcHJvYywgX19lbnRyeS0+ZnJvbV90aHJlYWQs DQorCQkgIF9fZW50cnktPnRvX3Byb2MsIF9fZW50cnktPnRvX3RocmVhZCwgX19lbnRyeS0+Y29k ZSwNCisJCSAgX19lbnRyeS0+ZmxhZ3MsIF9fZW50cnktPnN0YXJ0X3NlYywgX19lbnRyeS0+c3Rh cnRfbnNlYykNCispOw0KKw0KIFRSQUNFX0VWRU5UKGJpbmRlcl90cmFuc2FjdGlvbiwNCiAJVFBf UFJPVE8oYm9vbCByZXBseSwgc3RydWN0IGJpbmRlcl90cmFuc2FjdGlvbiAqdCwNCiAJCSBzdHJ1 Y3QgYmluZGVyX25vZGUgKnRhcmdldF9ub2RlKSwNCi0tIA0KMS43LjkuNQ0K