Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp974896ybh; Wed, 22 Jul 2020 19:07:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz3umsSLT3/AYtUu6b1XHhOxB1ykDgLMvS2memFF+fbZaD9Oeqoh5qAMSh4hB6S2fyVPc// X-Received: by 2002:a50:afa2:: with SMTP id h31mr2111233edd.303.1595470026288; Wed, 22 Jul 2020 19:07:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595470026; cv=none; d=google.com; s=arc-20160816; b=p6VS+xk5o0geqknuPVfP1NgpI0ppwoCNXtJWldAqbKsq2EOHxoNVYsnesuEeP8dk+U m+7Ce+qYxPscHAnmbnnHU2eYMrQlcDvzCfgcRB7PhQ4vyka1PoE9HE7hxiAjfpyB+h1c JllWWbM9MXe2d39p/q/JPbeSRFyhYbtABKdI+B6sU8CDIX19HpvG0U1gRdUmhb8AZy7s x2BztCCyaO9fhlnId3rY9N8e2yazN5fitIUCcShayBLo/3CyV7tNYDKLIsC0rJFBYgID p3fz6pfFt6hnLfMWeCIxcuNhDn4WKfD8BFobU+TfbcRVBDyq268okbNQ0Mn8wcszGSJr b/mA== 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=D1koE3fFRT4X+AUeXEXFFx8bWVQfNZkexdFg7IZKCLE=; b=c3VA46V9cYyYYMmtjC/vPYzEZFtoB3Nyyyfeu2jvS0pR5H4ymqgeJDw3nn7QwQMzEG C3yJWKNhVUfpoOHkViaupXNpVC394rggFyskb2+tYc/2L9PAXQvwGq7Wo0AqFsnE1sw/ mKUshqEFV/IH1TDVR6qB5d1ccOGXm+C7JxsLqQUvhNqJ08HgRw9WLUBY5R46L7q6poxo NV9nhpDUfSDbFuI7zZFOV8wHm51n8Qf+ze+IZW/3RCz0uFjGm49FPne03M2G9PIVLV0b Ks3G6ueoxRRiHvEPMRtUaApYaxTPB1Nja0w5n+pqWLYcv2Q25APmLLh5rr2oWfvUhUhZ wW0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=ooRmCqjZ; 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 dr17si1586214ejc.520.2020.07.22.19.06.43; Wed, 22 Jul 2020 19:07:06 -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=ooRmCqjZ; 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 S2387732AbgGWCE6 (ORCPT + 99 others); Wed, 22 Jul 2020 22:04:58 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:27199 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1733288AbgGWCE5 (ORCPT ); Wed, 22 Jul 2020 22:04:57 -0400 X-UUID: e9dbf0e6072a4282bdc0cdbf7859d41c-20200723 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=D1koE3fFRT4X+AUeXEXFFx8bWVQfNZkexdFg7IZKCLE=; b=ooRmCqjZNhb80Jcx8EEiTxvyra9BDIp5K/yw1Tko1zmvkbe60rFaYyXZ4EwLTrU3pwR5zsoEQSGDDB0zucUA7ghjz3FqA/gKoaQggYja581AGmLDw6uWEATUA/GFJfgrDritF+1dPzUTEJ4IgQHxSsI5dBOvyy3RpMqCnYXKOa8=; X-UUID: e9dbf0e6072a4282bdc0cdbf7859d41c-20200723 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1667098374; Thu, 23 Jul 2020 10:04:43 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs05n2.mediatek.inc (172.21.101.140) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 23 Jul 2020 10:04:42 +0800 Received: from localhost.localdomain (10.17.3.153) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 23 Jul 2020 10:04:38 +0800 From: Yongqiang Niu To: CK Hu , Philipp Zabel , Rob Herring , Matthias Brugger CC: David Airlie , Daniel Vetter , Mark Rutland , , , , , , Yongqiang Niu Subject: [v7, PATCH 2/7] mtk-mmsys: add mmsys private data Date: Thu, 23 Jul 2020 10:03:13 +0800 Message-ID: <1595469798-3824-3-git-send-email-yongqiang.niu@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty In-Reply-To: <1595469798-3824-1-git-send-email-yongqiang.niu@mediatek.com> References: <1595469798-3824-1-git-send-email-yongqiang.niu@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain 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 YWRkIG1tc3lzIHByaXZhdGUgZGF0YQ0KDQpGZWF0dXJlOiBkcm0vbWVkaWF0ZWsNClNpZ25lZC1v ZmYtYnk6IFlvbmdxaWFuZyBOaXUgPHlvbmdxaWFuZy5uaXVAbWVkaWF0ZWsuY29tPg0KLS0tDQog ZHJpdmVycy9zb2MvbWVkaWF0ZWsvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDEgKw0KIGRyaXZl cnMvc29jL21lZGlhdGVrL21tc3lzL01ha2VmaWxlICAgICAgIHwgICAyICsNCiBkcml2ZXJzL3Nv Yy9tZWRpYXRlay9tbXN5cy9tdDI3MDEtbW1zeXMuYyB8IDI1MCArKysrKysrKysrKysrKysrKysr KysrKysrKysNCiBkcml2ZXJzL3NvYy9tZWRpYXRlay9tdGstbW1zeXMuYyAgICAgICAgICB8IDI3 MSArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiBpbmNsdWRlL2xpbnV4L3NvYy9tZWRp YXRlay9tdGstbW1zeXMuaCAgICB8ICAxNSArKw0KIDUgZmlsZXMgY2hhbmdlZCwgMzE0IGluc2Vy dGlvbnMoKyksIDIyNSBkZWxldGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9z b2MvbWVkaWF0ZWsvbW1zeXMvTWFrZWZpbGUNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9z b2MvbWVkaWF0ZWsvbW1zeXMvbXQyNzAxLW1tc3lzLmMNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv c29jL21lZGlhdGVrL01ha2VmaWxlIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvTWFrZWZpbGUNCmlu ZGV4IDJhZmE3YjkuLmIzN2FjMmMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9N YWtlZmlsZQ0KKysrIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvTWFrZWZpbGUNCkBAIC0zLDMgKzMs NCBAQCBvYmotJChDT05GSUdfTVRLX0NNRFEpICs9IG10ay1jbWRxLWhlbHBlci5vDQogb2JqLSQo Q09ORklHX01US19QTUlDX1dSQVApICs9IG10ay1wbWljLXdyYXAubw0KIG9iai0kKENPTkZJR19N VEtfU0NQU1lTKSArPSBtdGstc2Nwc3lzLm8NCiBvYmotJChDT05GSUdfTVRLX01NU1lTKSArPSBt dGstbW1zeXMubw0KK29iai0kKENPTkZJR19NVEtfTU1TWVMpICs9IG1tc3lzLw0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvc29jL21lZGlhdGVrL21tc3lzL01ha2VmaWxlIGIvZHJpdmVycy9zb2MvbWVk aWF0ZWsvbW1zeXMvTWFrZWZpbGUNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw Li4zM2IwZGFiDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9tbXN5 cy9NYWtlZmlsZQ0KQEAgLTAsMCArMSwyIEBADQorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMC1vbmx5DQorb2JqLXkgKz0gbXQyNzAxLW1tc3lzLm8NCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3NvYy9tZWRpYXRlay9tbXN5cy9tdDI3MDEtbW1zeXMuYyBiL2RyaXZlcnMvc29jL21lZGlh dGVrL21tc3lzL210MjcwMS1tbXN5cy5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAw MDAwMC4uYjhlNTNiMA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsv bW1zeXMvbXQyNzAxLW1tc3lzLmMNCkBAIC0wLDAgKzEsMjUwIEBADQorLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjANCisvLw0KKy8vIENvcHlyaWdodCAoYykgMjAyMCBNZWRpYVRl ayBJbmMuDQorDQorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9p by5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4NCisjaW5jbHVkZSA8bGludXgvcGxh dGZvcm1fZGV2aWNlLmg+DQorI2luY2x1ZGUgPGxpbnV4L3NvYy9tZWRpYXRlay9tdGstbW1zeXMu aD4NCisNCisjZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX09WTDBfTU9VVF9FTgkweDA0MA0K KyNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMMV9NT1VUX0VOCTB4MDQ0DQorI2RlZmlu ZSBESVNQX1JFR19DT05GSUdfRElTUF9PRF9NT1VUX0VOCQkweDA0OA0KKyNkZWZpbmUgRElTUF9S RUdfQ09ORklHX0RJU1BfR0FNTUFfTU9VVF9FTgkweDA0Yw0KKyNkZWZpbmUgRElTUF9SRUdfQ09O RklHX0RJU1BfVUZPRV9NT1VUX0VOCTB4MDUwDQorI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElT UF9DT0xPUjBfU0VMX0lOCTB4MDg0DQorI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9DT0xP UjFfU0VMX0lOCTB4MDg4DQorI2RlZmluZSBESVNQX1JFR19DT05GSUdfRFNJRV9TRUxfSU4JCTB4 MGE0DQorI2RlZmluZSBESVNQX1JFR19DT05GSUdfRFNJT19TRUxfSU4JCTB4MGE4DQorI2RlZmlu ZSBESVNQX1JFR19DT05GSUdfRFBJX1NFTF9JTgkJMHgwYWMNCisjZGVmaW5lIERJU1BfUkVHX0NP TkZJR19ESVNQX1JETUEyX1NPVVQJCTB4MGI4DQorI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElT UF9SRE1BMF9TT1VUX0VOCTB4MGM0DQorI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1B MV9TT1VUX0VOCTB4MGM4DQorI2RlZmluZSBESVNQX1JFR19DT05GSUdfTU1TWVNfQ0dfQ09OMAkJ MHgxMDANCisNCisjZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX09WTF9NT1VUX0VOCTB4MDMw DQorI2RlZmluZSBESVNQX1JFR19DT05GSUdfT1VUX1NFTAkJCTB4MDRjDQorI2RlZmluZSBESVNQ X1JFR19DT05GSUdfRFNJX1NFTAkJCTB4MDUwDQorI2RlZmluZSBESVNQX1JFR19DT05GSUdfRFBJ X1NFTAkJCTB4MDY0DQorDQorI2RlZmluZSBPVkwwX01PVVRfRU5fQ09MT1IwCQkJMHgxDQorI2Rl ZmluZSBPRF9NT1VUX0VOX1JETUEwCQkJMHgxDQorI2RlZmluZSBPRDFfTU9VVF9FTl9SRE1BMQkJ CUJJVCgxNikNCisjZGVmaW5lIFVGT0VfTU9VVF9FTl9EU0kwCQkJMHgxDQorI2RlZmluZSBDT0xP UjBfU0VMX0lOX09WTDAJCQkweDENCisjZGVmaW5lIE9WTDFfTU9VVF9FTl9DT0xPUjEJCQkweDEN CisjZGVmaW5lIEdBTU1BX01PVVRfRU5fUkRNQTEJCQkweDENCisjZGVmaW5lIFJETUEwX1NPVVRf RFBJMAkJCQkweDINCisjZGVmaW5lIFJETUEwX1NPVVRfRFBJMQkJCQkweDMNCisjZGVmaW5lIFJE TUEwX1NPVVRfRFNJMQkJCQkweDENCisjZGVmaW5lIFJETUEwX1NPVVRfRFNJMgkJCQkweDQNCisj ZGVmaW5lIFJETUEwX1NPVVRfRFNJMwkJCQkweDUNCisjZGVmaW5lIFJETUExX1NPVVRfRFBJMAkJ CQkweDINCisjZGVmaW5lIFJETUExX1NPVVRfRFBJMQkJCQkweDMNCisjZGVmaW5lIFJETUExX1NP VVRfRFNJMQkJCQkweDENCisjZGVmaW5lIFJETUExX1NPVVRfRFNJMgkJCQkweDQNCisjZGVmaW5l IFJETUExX1NPVVRfRFNJMwkJCQkweDUNCisjZGVmaW5lIFJETUEyX1NPVVRfRFBJMAkJCQkweDIN CisjZGVmaW5lIFJETUEyX1NPVVRfRFBJMQkJCQkweDMNCisjZGVmaW5lIFJETUEyX1NPVVRfRFNJ MQkJCQkweDENCisjZGVmaW5lIFJETUEyX1NPVVRfRFNJMgkJCQkweDQNCisjZGVmaW5lIFJETUEy X1NPVVRfRFNJMwkJCQkweDUNCisjZGVmaW5lIERQSTBfU0VMX0lOX1JETUExCQkJMHgxDQorI2Rl ZmluZSBEUEkwX1NFTF9JTl9SRE1BMgkJCTB4Mw0KKyNkZWZpbmUgRFBJMV9TRUxfSU5fUkRNQTEJ CQkoMHgxIDw8IDgpDQorI2RlZmluZSBEUEkxX1NFTF9JTl9SRE1BMgkJCSgweDMgPDwgOCkNCisj ZGVmaW5lIERTSTBfU0VMX0lOX1JETUExCQkJMHgxDQorI2RlZmluZSBEU0kwX1NFTF9JTl9SRE1B MgkJCTB4NA0KKyNkZWZpbmUgRFNJMV9TRUxfSU5fUkRNQTEJCQkweDENCisjZGVmaW5lIERTSTFf U0VMX0lOX1JETUEyCQkJMHg0DQorI2RlZmluZSBEU0kyX1NFTF9JTl9SRE1BMQkJCSgweDEgPDwg MTYpDQorI2RlZmluZSBEU0kyX1NFTF9JTl9SRE1BMgkJCSgweDQgPDwgMTYpDQorI2RlZmluZSBE U0kzX1NFTF9JTl9SRE1BMQkJCSgweDEgPDwgMTYpDQorI2RlZmluZSBEU0kzX1NFTF9JTl9SRE1B MgkJCSgweDQgPDwgMTYpDQorI2RlZmluZSBDT0xPUjFfU0VMX0lOX09WTDEJCQkweDENCisNCisj ZGVmaW5lIE9WTF9NT1VUX0VOX1JETUEJCQkweDENCisjZGVmaW5lIEJMU19UT19EU0lfUkRNQTFf VE9fRFBJMQkJMHg4DQorI2RlZmluZSBCTFNfVE9fRFBJX1JETUExX1RPX0RTSQkJCTB4Mg0KKyNk ZWZpbmUgRFNJX1NFTF9JTl9CTFMJCQkJMHgwDQorI2RlZmluZSBEUElfU0VMX0lOX0JMUwkJCQkw eDANCisjZGVmaW5lIERTSV9TRUxfSU5fUkRNQQkJCQkweDENCisNCitzdGF0aWMgdW5zaWduZWQg aW50IG10a19tbXN5c19kZHBfbW91dF9lbihlbnVtIG10a19kZHBfY29tcF9pZCBjdXIsDQorCQkJ CQkgIGVudW0gbXRrX2RkcF9jb21wX2lkIG5leHQsDQorCQkJCQkgIHVuc2lnbmVkIGludCAqYWRk cikNCit7DQorCXVuc2lnbmVkIGludCB2YWx1ZTsNCisNCisJaWYgKGN1ciA9PSBERFBfQ09NUE9O RU5UX09WTDAgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0NPTE9SMCkgew0KKwkJKmFkZHIgPSBE SVNQX1JFR19DT05GSUdfRElTUF9PVkwwX01PVVRfRU47DQorCQl2YWx1ZSA9IE9WTDBfTU9VVF9F Tl9DT0xPUjA7DQorCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfT1ZMMCAmJiBuZXh0 ID09IEREUF9DT01QT05FTlRfUkRNQTApIHsNCisJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJ U1BfT1ZMX01PVVRfRU47DQorCQl2YWx1ZSA9IE9WTF9NT1VUX0VOX1JETUE7DQorCX0gZWxzZSBp ZiAoY3VyID09IEREUF9DT01QT05FTlRfT0QwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9SRE1B MCkgew0KKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9PRF9NT1VUX0VOOw0KKwkJdmFs dWUgPSBPRF9NT1VUX0VOX1JETUEwOw0KKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5U X1VGT0UgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTApIHsNCisJCSphZGRyID0gRElTUF9S RUdfQ09ORklHX0RJU1BfVUZPRV9NT1VUX0VOOw0KKwkJdmFsdWUgPSBVRk9FX01PVVRfRU5fRFNJ MDsNCisJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9PVkwxICYmIG5leHQgPT0gRERQ X0NPTVBPTkVOVF9DT0xPUjEpIHsNCisJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZM MV9NT1VUX0VOOw0KKwkJdmFsdWUgPSBPVkwxX01PVVRfRU5fQ09MT1IxOw0KKwl9IGVsc2UgaWYg KGN1ciA9PSBERFBfQ09NUE9ORU5UX0dBTU1BICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9SRE1B MSkgew0KKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9HQU1NQV9NT1VUX0VOOw0KKwkJ dmFsdWUgPSBHQU1NQV9NT1VUX0VOX1JETUExOw0KKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09N UE9ORU5UX09EMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfUkRNQTEpIHsNCisJCSphZGRyID0g RElTUF9SRUdfQ09ORklHX0RJU1BfT0RfTU9VVF9FTjsNCisJCXZhbHVlID0gT0QxX01PVVRfRU5f UkRNQTE7DQorCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTAgJiYgbmV4dCA9 PSBERFBfQ09NUE9ORU5UX0RQSTApIHsNCisJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1Bf UkRNQTBfU09VVF9FTjsNCisJCXZhbHVlID0gUkRNQTBfU09VVF9EUEkwOw0KKwl9IGVsc2UgaWYg KGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkx KSB7DQorCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEwX1NPVVRfRU47DQorCQl2 YWx1ZSA9IFJETUEwX1NPVVRfRFBJMTsNCisJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVO VF9SRE1BMCAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMSkgew0KKwkJKmFkZHIgPSBESVNQ X1JFR19DT05GSUdfRElTUF9SRE1BMF9TT1VUX0VOOw0KKwkJdmFsdWUgPSBSRE1BMF9TT1VUX0RT STE7DQorCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTAgJiYgbmV4dCA9PSBE RFBfQ09NUE9ORU5UX0RTSTIpIHsNCisJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRN QTBfU09VVF9FTjsNCisJCXZhbHVlID0gUkRNQTBfU09VVF9EU0kyOw0KKwl9IGVsc2UgaWYgKGN1 ciA9PSBERFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7 DQorCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEwX1NPVVRfRU47DQorCQl2YWx1 ZSA9IFJETUEwX1NPVVRfRFNJMzsNCisJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9S RE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMSkgew0KKwkJKmFkZHIgPSBESVNQX1JF R19DT05GSUdfRElTUF9SRE1BMV9TT1VUX0VOOw0KKwkJdmFsdWUgPSBSRE1BMV9TT1VUX0RTSTE7 DQorCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBERFBf Q09NUE9ORU5UX0RTSTIpIHsNCisJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFf U09VVF9FTjsNCisJCXZhbHVlID0gUkRNQTFfU09VVF9EU0kyOw0KKwl9IGVsc2UgaWYgKGN1ciA9 PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7DQor CQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUExX1NPVVRfRU47DQorCQl2YWx1ZSA9 IFJETUExX1NPVVRfRFNJMzsNCisJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1B MSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFBJMCkgew0KKwkJKmFkZHIgPSBESVNQX1JFR19D T05GSUdfRElTUF9SRE1BMV9TT1VUX0VOOw0KKwkJdmFsdWUgPSBSRE1BMV9TT1VUX0RQSTA7DQor CX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09N UE9ORU5UX0RQSTEpIHsNCisJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09V VF9FTjsNCisJCXZhbHVlID0gUkRNQTFfU09VVF9EUEkxOw0KKwl9IGVsc2UgaWYgKGN1ciA9PSBE RFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkwKSB7DQorCQkq YWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEyX1NPVVQ7DQorCQl2YWx1ZSA9IFJETUEy X1NPVVRfRFBJMDsNCisJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBu ZXh0ID09IEREUF9DT01QT05FTlRfRFBJMSkgew0KKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdf RElTUF9SRE1BMl9TT1VUOw0KKwkJdmFsdWUgPSBSRE1BMl9TT1VUX0RQSTE7DQorCX0gZWxzZSBp ZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RT STEpIHsNCisJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVDsNCisJCXZh bHVlID0gUkRNQTJfU09VVF9EU0kxOw0KKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5U X1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kyKSB7DQorCQkqYWRkciA9IERJU1Bf UkVHX0NPTkZJR19ESVNQX1JETUEyX1NPVVQ7DQorCQl2YWx1ZSA9IFJETUEyX1NPVVRfRFNJMjsN CisJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IEREUF9D T01QT05FTlRfRFNJMykgew0KKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMl9T T1VUOw0KKwkJdmFsdWUgPSBSRE1BMl9TT1VUX0RTSTM7DQorCX0gZWxzZSB7DQorCQl2YWx1ZSA9 IDA7DQorCX0NCisNCisJcmV0dXJuIHZhbHVlOw0KK30NCisNCitzdGF0aWMgdW5zaWduZWQgaW50 IG10a19tbXN5c19kZHBfc2VsX2luKGVudW0gbXRrX2RkcF9jb21wX2lkIGN1ciwNCisJCQkJCSBl bnVtIG10a19kZHBfY29tcF9pZCBuZXh0LA0KKwkJCQkJIHVuc2lnbmVkIGludCAqYWRkcikNCit7 DQorCXVuc2lnbmVkIGludCB2YWx1ZTsNCisNCisJaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX09W TDAgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0NPTE9SMCkgew0KKwkJKmFkZHIgPSBESVNQX1JF R19DT05GSUdfRElTUF9DT0xPUjBfU0VMX0lOOw0KKwkJdmFsdWUgPSBDT0xPUjBfU0VMX0lOX09W TDA7DQorCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBE RFBfQ09NUE9ORU5UX0RQSTApIHsNCisJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RQSV9TRUxf SU47DQorCQl2YWx1ZSA9IERQSTBfU0VMX0lOX1JETUExOw0KKwl9IGVsc2UgaWYgKGN1ciA9PSBE RFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkxKSB7DQorCQkq YWRkciA9IERJU1BfUkVHX0NPTkZJR19EUElfU0VMX0lOOw0KKwkJdmFsdWUgPSBEUEkxX1NFTF9J Tl9SRE1BMTsNCisJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0 ID09IEREUF9DT01QT05FTlRfRFNJMCkgew0KKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJ RV9TRUxfSU47DQorCQl2YWx1ZSA9IERTSTBfU0VMX0lOX1JETUExOw0KKwl9IGVsc2UgaWYgKGN1 ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kxKSB7 DQorCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lPX1NFTF9JTjsNCisJCXZhbHVlID0gRFNJ MV9TRUxfSU5fUkRNQTE7DQorCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTEg JiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTIpIHsNCisJCSphZGRyID0gRElTUF9SRUdfQ09O RklHX0RTSUVfU0VMX0lOOw0KKwkJdmFsdWUgPSBEU0kyX1NFTF9JTl9SRE1BMTsNCisJfSBlbHNl IGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRf RFNJMykgew0KKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJT19TRUxfSU47DQorCQl2YWx1 ZSA9IERTSTNfU0VMX0lOX1JETUExOw0KKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5U X1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkwKSB7DQorCQkqYWRkciA9IERJU1Bf UkVHX0NPTkZJR19EUElfU0VMX0lOOw0KKwkJdmFsdWUgPSBEUEkwX1NFTF9JTl9SRE1BMjsNCisJ fSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IEREUF9DT01Q T05FTlRfRFBJMSkgew0KKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFBJX1NFTF9JTjsNCisJ CXZhbHVlID0gRFBJMV9TRUxfSU5fUkRNQTI7DQorCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01Q T05FTlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTApIHsNCisJCSphZGRyID0g RElTUF9SRUdfQ09ORklHX0RTSUVfU0VMX0lOOw0KKwkJdmFsdWUgPSBEU0kwX1NFTF9JTl9SRE1B MjsNCisJfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IERE UF9DT01QT05FTlRfRFNJMSkgew0KKwkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJT19TRUxf SU47DQorCQl2YWx1ZSA9IERTSTFfU0VMX0lOX1JETUEyOw0KKwl9IGVsc2UgaWYgKGN1ciA9PSBE RFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kyKSB7DQorCQkq YWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9JTjsNCisJCXZhbHVlID0gRFNJMl9TRUxf SU5fUkRNQTI7DQorCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTIgJiYgbmV4 dCA9PSBERFBfQ09NUE9ORU5UX0RTSTMpIHsNCisJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RT SUVfU0VMX0lOOw0KKwkJdmFsdWUgPSBEU0kzX1NFTF9JTl9SRE1BMjsNCisJfSBlbHNlIGlmIChj dXIgPT0gRERQX0NPTVBPTkVOVF9PVkwxICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9DT0xPUjEp IHsNCisJCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfQ09MT1IxX1NFTF9JTjsNCisJCXZh bHVlID0gQ09MT1IxX1NFTF9JTl9PVkwxOw0KKwl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9O RU5UX0JMUyAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFNJMCkgew0KKwkJKmFkZHIgPSBESVNQ X1JFR19DT05GSUdfRFNJX1NFTDsNCisJCXZhbHVlID0gRFNJX1NFTF9JTl9CTFM7DQorCX0gZWxz ZSB7DQorCQl2YWx1ZSA9IDA7DQorCX0NCisNCisJcmV0dXJuIHZhbHVlOw0KK30NCisNCitzdGF0 aWMgdm9pZCBtdGtfbW1zeXNfZGRwX3NvdXRfc2VsKHZvaWQgX19pb21lbSAqY29uZmlnX3JlZ3Ms DQorCQkJCSAgIGVudW0gbXRrX2RkcF9jb21wX2lkIGN1ciwNCisJCQkJICAgZW51bSBtdGtfZGRw X2NvbXBfaWQgbmV4dCkNCit7DQorCWlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9CTFMgJiYgbmV4 dCA9PSBERFBfQ09NUE9ORU5UX0RTSTApIHsNCisJCXdyaXRlbF9yZWxheGVkKEJMU19UT19EU0lf UkRNQTFfVE9fRFBJMSwNCisJCQkgICAgICAgY29uZmlnX3JlZ3MgKyBESVNQX1JFR19DT05GSUdf T1VUX1NFTCk7DQorCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfQkxTICYmIG5leHQg PT0gRERQX0NPTVBPTkVOVF9EUEkwKSB7DQorCQl3cml0ZWxfcmVsYXhlZChCTFNfVE9fRFBJX1JE TUExX1RPX0RTSSwNCisJCQkgICAgICAgY29uZmlnX3JlZ3MgKyBESVNQX1JFR19DT05GSUdfT1VU X1NFTCk7DQorCQl3cml0ZWxfcmVsYXhlZChEU0lfU0VMX0lOX1JETUEsDQorCQkJICAgICAgIGNv bmZpZ19yZWdzICsgRElTUF9SRUdfQ09ORklHX0RTSV9TRUwpOw0KKwkJd3JpdGVsX3JlbGF4ZWQo RFBJX1NFTF9JTl9CTFMsDQorCQkJICAgICAgIGNvbmZpZ19yZWdzICsgRElTUF9SRUdfQ09ORklH X0RQSV9TRUwpOw0KKwl9DQorfQ0KKw0KK3N0YXRpYyBzdHJ1Y3QgbXRrX21tc3lzX2Nvbm5fZnVu Y3MgbW1zeXNfZnVuY3MgPSB7DQorCS5tb3V0X2VuID0gbXRrX21tc3lzX2RkcF9tb3V0X2VuLA0K Kwkuc2VsX2luID0gbXRrX21tc3lzX2RkcF9zZWxfaW4sDQorCS5zb3V0X3NlbCA9IG10a19tbXN5 c19kZHBfc291dF9zZWwsDQorfTsNCisNCitzdGF0aWMgaW50IG1tc3lzX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQorew0KKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ ZGV2Ow0KKw0KKwltdGtfbW1zeXNfcmVnaXN0ZXJfY29ubl9mdW5jcyhkZXYtPnBhcmVudCwgJm1t c3lzX2Z1bmNzKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBzdHJ1Y3QgcGxhdGZv cm1fZHJpdmVyIG1tc3lzX2RydiA9IHsNCisJLnByb2JlID0gbW1zeXNfcHJvYmUsDQorCS5kcml2 ZXIgPSB7DQorCQkubmFtZSA9ICJtdDI3MDEtbW1zeXMiLA0KKwl9LA0KK307DQorDQorYnVpbHRp bl9wbGF0Zm9ybV9kcml2ZXIobW1zeXNfZHJ2KTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NvYy9t ZWRpYXRlay9tdGstbW1zeXMuYyBiL2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1tbXN5cy5jDQpp bmRleCAzNmFkNjZiLi42MDViOTkyIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9zb2MvbWVkaWF0ZWsv bXRrLW1tc3lzLmMNCisrKyBiL2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1tbXN5cy5jDQpAQCAt MTAsMjY3ICsxMCw2MyBAQA0KICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCiAj aW5jbHVkZSA8bGludXgvc29jL21lZGlhdGVrL210ay1tbXN5cy5oPg0KIA0KLSNkZWZpbmUgRElT UF9SRUdfQ09ORklHX0RJU1BfT1ZMMF9NT1VUX0VOCTB4MDQwDQotI2RlZmluZSBESVNQX1JFR19D T05GSUdfRElTUF9PVkwxX01PVVRfRU4JMHgwNDQNCi0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19E SVNQX09EX01PVVRfRU4JCTB4MDQ4DQotI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9HQU1N QV9NT1VUX0VOCTB4MDRjDQotI2RlZmluZSBESVNQX1JFR19DT05GSUdfRElTUF9VRk9FX01PVVRf RU4JMHgwNTANCi0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX0NPTE9SMF9TRUxfSU4JMHgw ODQNCi0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX0NPTE9SMV9TRUxfSU4JMHgwODgNCi0j ZGVmaW5lIERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9JTgkJMHgwYTQNCi0jZGVmaW5lIERJU1Bf UkVHX0NPTkZJR19EU0lPX1NFTF9JTgkJMHgwYTgNCi0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19E UElfU0VMX0lOCQkweDBhYw0KLSNkZWZpbmUgRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09V VAkJMHgwYjgNCi0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEwX1NPVVRfRU4JMHgw YzQNCi0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUExX1NPVVRfRU4JMHgwYzgNCi0j ZGVmaW5lIERJU1BfUkVHX0NPTkZJR19NTVNZU19DR19DT04wCQkweDEwMA0KLQ0KLSNkZWZpbmUg RElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMX01PVVRfRU4JMHgwMzANCi0jZGVmaW5lIERJU1BfUkVH X0NPTkZJR19PVVRfU0VMCQkJMHgwNGMNCi0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19EU0lfU0VM CQkJMHgwNTANCi0jZGVmaW5lIERJU1BfUkVHX0NPTkZJR19EUElfU0VMCQkJMHgwNjQNCi0NCi0j ZGVmaW5lIE9WTDBfTU9VVF9FTl9DT0xPUjAJCQkweDENCi0jZGVmaW5lIE9EX01PVVRfRU5fUkRN QTAJCQkweDENCi0jZGVmaW5lIE9EMV9NT1VUX0VOX1JETUExCQkJQklUKDE2KQ0KLSNkZWZpbmUg VUZPRV9NT1VUX0VOX0RTSTAJCQkweDENCi0jZGVmaW5lIENPTE9SMF9TRUxfSU5fT1ZMMAkJCTB4 MQ0KLSNkZWZpbmUgT1ZMMV9NT1VUX0VOX0NPTE9SMQkJCTB4MQ0KLSNkZWZpbmUgR0FNTUFfTU9V VF9FTl9SRE1BMQkJCTB4MQ0KLSNkZWZpbmUgUkRNQTBfU09VVF9EUEkwCQkJCTB4Mg0KLSNkZWZp bmUgUkRNQTBfU09VVF9EUEkxCQkJCTB4Mw0KLSNkZWZpbmUgUkRNQTBfU09VVF9EU0kxCQkJCTB4 MQ0KLSNkZWZpbmUgUkRNQTBfU09VVF9EU0kyCQkJCTB4NA0KLSNkZWZpbmUgUkRNQTBfU09VVF9E U0kzCQkJCTB4NQ0KLSNkZWZpbmUgUkRNQTFfU09VVF9EUEkwCQkJCTB4Mg0KLSNkZWZpbmUgUkRN QTFfU09VVF9EUEkxCQkJCTB4Mw0KLSNkZWZpbmUgUkRNQTFfU09VVF9EU0kxCQkJCTB4MQ0KLSNk ZWZpbmUgUkRNQTFfU09VVF9EU0kyCQkJCTB4NA0KLSNkZWZpbmUgUkRNQTFfU09VVF9EU0kzCQkJ CTB4NQ0KLSNkZWZpbmUgUkRNQTJfU09VVF9EUEkwCQkJCTB4Mg0KLSNkZWZpbmUgUkRNQTJfU09V VF9EUEkxCQkJCTB4Mw0KLSNkZWZpbmUgUkRNQTJfU09VVF9EU0kxCQkJCTB4MQ0KLSNkZWZpbmUg UkRNQTJfU09VVF9EU0kyCQkJCTB4NA0KLSNkZWZpbmUgUkRNQTJfU09VVF9EU0kzCQkJCTB4NQ0K LSNkZWZpbmUgRFBJMF9TRUxfSU5fUkRNQTEJCQkweDENCi0jZGVmaW5lIERQSTBfU0VMX0lOX1JE TUEyCQkJMHgzDQotI2RlZmluZSBEUEkxX1NFTF9JTl9SRE1BMQkJCSgweDEgPDwgOCkNCi0jZGVm aW5lIERQSTFfU0VMX0lOX1JETUEyCQkJKDB4MyA8PCA4KQ0KLSNkZWZpbmUgRFNJMF9TRUxfSU5f UkRNQTEJCQkweDENCi0jZGVmaW5lIERTSTBfU0VMX0lOX1JETUEyCQkJMHg0DQotI2RlZmluZSBE U0kxX1NFTF9JTl9SRE1BMQkJCTB4MQ0KLSNkZWZpbmUgRFNJMV9TRUxfSU5fUkRNQTIJCQkweDQN Ci0jZGVmaW5lIERTSTJfU0VMX0lOX1JETUExCQkJKDB4MSA8PCAxNikNCi0jZGVmaW5lIERTSTJf U0VMX0lOX1JETUEyCQkJKDB4NCA8PCAxNikNCi0jZGVmaW5lIERTSTNfU0VMX0lOX1JETUExCQkJ KDB4MSA8PCAxNikNCi0jZGVmaW5lIERTSTNfU0VMX0lOX1JETUEyCQkJKDB4NCA8PCAxNikNCi0j ZGVmaW5lIENPTE9SMV9TRUxfSU5fT1ZMMQkJCTB4MQ0KLQ0KLSNkZWZpbmUgT1ZMX01PVVRfRU5f UkRNQQkJCTB4MQ0KLSNkZWZpbmUgQkxTX1RPX0RTSV9SRE1BMV9UT19EUEkxCQkweDgNCi0jZGVm aW5lIEJMU19UT19EUElfUkRNQTFfVE9fRFNJCQkJMHgyDQotI2RlZmluZSBEU0lfU0VMX0lOX0JM UwkJCQkweDANCi0jZGVmaW5lIERQSV9TRUxfSU5fQkxTCQkJCTB4MA0KLSNkZWZpbmUgRFNJX1NF TF9JTl9SRE1BCQkJCTB4MQ0KLQ0KIHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVyX2RhdGEgew0KIAlj b25zdCBjaGFyICpjbGtfZHJpdmVyOw0KKwljb25zdCBjaGFyICptbXN5c19kcml2ZXI7DQorfTsN CisNCitzdHJ1Y3QgbXRrX21tc3lzX3ByaXZhdGVfZGF0YSB7DQorCXZvaWQgX19pb21lbSAqY29u ZmlnX3JlZ3M7DQorCXN0cnVjdCBtdGtfbW1zeXNfY29ubl9mdW5jcyAqZnVuY3M7DQogfTsNCiAN CiBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19tbXN5c19kcml2ZXJfZGF0YSBtdDI3MDFfbW1zeXNf ZHJpdmVyX2RhdGEgPSB7DQogCS5jbGtfZHJpdmVyID0gImNsay1tdDI3MDEtbW0iLA0KKwkubW1z eXNfZHJpdmVyID0gIm10MjcwMS1tbXN5cyIsDQogfTsNCiANCiBzdGF0aWMgY29uc3Qgc3RydWN0 IG10a19tbXN5c19kcml2ZXJfZGF0YSBtdDI3MTJfbW1zeXNfZHJpdmVyX2RhdGEgPSB7DQogCS5j bGtfZHJpdmVyID0gImNsay1tdDI3MTItbW0iLA0KKwkubW1zeXNfZHJpdmVyID0gIm10MjcwMS1t bXN5cyIsDQogfTsNCiANCiBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19tbXN5c19kcml2ZXJfZGF0 YSBtdDY3NzlfbW1zeXNfZHJpdmVyX2RhdGEgPSB7DQogCS5jbGtfZHJpdmVyID0gImNsay1tdDY3 NzktbW0iLA0KKwkubW1zeXNfZHJpdmVyID0gIm10MjcwMS1tbXN5cyIsDQogfTsNCiANCiBzdGF0 aWMgY29uc3Qgc3RydWN0IG10a19tbXN5c19kcml2ZXJfZGF0YSBtdDY3OTdfbW1zeXNfZHJpdmVy X2RhdGEgPSB7DQogCS5jbGtfZHJpdmVyID0gImNsay1tdDY3OTctbW0iLA0KKwkubW1zeXNfZHJp dmVyID0gIm10MjcwMS1tbXN5cyIsDQogfTsNCiANCiBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19t bXN5c19kcml2ZXJfZGF0YSBtdDgxNzNfbW1zeXNfZHJpdmVyX2RhdGEgPSB7DQogCS5jbGtfZHJp dmVyID0gImNsay1tdDgxNzMtbW0iLA0KKwkubW1zeXNfZHJpdmVyID0gIm10MjcwMS1tbXN5cyIs DQogfTsNCiANCiBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19tbXN5c19kcml2ZXJfZGF0YSBtdDgx ODNfbW1zeXNfZHJpdmVyX2RhdGEgPSB7DQogCS5jbGtfZHJpdmVyID0gImNsay1tdDgxODMtbW0i LA0KIH07DQogDQotc3RhdGljIHVuc2lnbmVkIGludCBtdGtfbW1zeXNfZGRwX21vdXRfZW4oZW51 bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KLQkJCQkJICBlbnVtIG10a19kZHBfY29tcF9pZCBuZXh0 LA0KLQkJCQkJICB1bnNpZ25lZCBpbnQgKmFkZHIpDQotew0KLQl1bnNpZ25lZCBpbnQgdmFsdWU7 DQotDQotCWlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9PVkwwICYmIG5leHQgPT0gRERQX0NPTVBP TkVOVF9DT0xPUjApIHsNCi0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfT1ZMMF9NT1VU X0VOOw0KLQkJdmFsdWUgPSBPVkwwX01PVVRfRU5fQ09MT1IwOw0KLQl9IGVsc2UgaWYgKGN1ciA9 PSBERFBfQ09NUE9ORU5UX09WTDAgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX1JETUEwKSB7DQot CQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX09WTF9NT1VUX0VOOw0KLQkJdmFsdWUgPSBP VkxfTU9VVF9FTl9SRE1BOw0KLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX09EMCAm JiBuZXh0ID09IEREUF9DT01QT05FTlRfUkRNQTApIHsNCi0JCSphZGRyID0gRElTUF9SRUdfQ09O RklHX0RJU1BfT0RfTU9VVF9FTjsNCi0JCXZhbHVlID0gT0RfTU9VVF9FTl9SRE1BMDsNCi0JfSBl bHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9VRk9FICYmIG5leHQgPT0gRERQX0NPTVBPTkVO VF9EU0kwKSB7DQotCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1VGT0VfTU9VVF9FTjsN Ci0JCXZhbHVlID0gVUZPRV9NT1VUX0VOX0RTSTA7DQotCX0gZWxzZSBpZiAoY3VyID09IEREUF9D T01QT05FTlRfT1ZMMSAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfQ09MT1IxKSB7DQotCQkqYWRk ciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX09WTDFfTU9VVF9FTjsNCi0JCXZhbHVlID0gT1ZMMV9N T1VUX0VOX0NPTE9SMTsNCi0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9HQU1NQSAm JiBuZXh0ID09IEREUF9DT01QT05FTlRfUkRNQTEpIHsNCi0JCSphZGRyID0gRElTUF9SRUdfQ09O RklHX0RJU1BfR0FNTUFfTU9VVF9FTjsNCi0JCXZhbHVlID0gR0FNTUFfTU9VVF9FTl9SRE1BMTsN Ci0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9PRDEgJiYgbmV4dCA9PSBERFBfQ09N UE9ORU5UX1JETUExKSB7DQotCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX09EX01PVVRf RU47DQotCQl2YWx1ZSA9IE9EMV9NT1VUX0VOX1JETUExOw0KLQl9IGVsc2UgaWYgKGN1ciA9PSBE RFBfQ09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkwKSB7DQotCQkq YWRkciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEwX1NPVVRfRU47DQotCQl2YWx1ZSA9IFJE TUEwX1NPVVRfRFBJMDsNCi0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMCAm JiBuZXh0ID09IEREUF9DT01QT05FTlRfRFBJMSkgew0KLQkJKmFkZHIgPSBESVNQX1JFR19DT05G SUdfRElTUF9SRE1BMF9TT1VUX0VOOw0KLQkJdmFsdWUgPSBSRE1BMF9TT1VUX0RQSTE7DQotCX0g ZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTAgJiYgbmV4dCA9PSBERFBfQ09NUE9O RU5UX0RTSTEpIHsNCi0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTBfU09VVF9F TjsNCi0JCXZhbHVlID0gUkRNQTBfU09VVF9EU0kxOw0KLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBf Q09NUE9ORU5UX1JETUEwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kyKSB7DQotCQkqYWRk ciA9IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUEwX1NPVVRfRU47DQotCQl2YWx1ZSA9IFJETUEw X1NPVVRfRFNJMjsNCi0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMCAmJiBu ZXh0ID09IEREUF9DT01QT05FTlRfRFNJMykgew0KLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdf RElTUF9SRE1BMF9TT1VUX0VOOw0KLQkJdmFsdWUgPSBSRE1BMF9TT1VUX0RTSTM7DQotCX0gZWxz ZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5U X0RTSTEpIHsNCi0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09VVF9FTjsN Ci0JCXZhbHVlID0gUkRNQTFfU09VVF9EU0kxOw0KLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09N UE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kyKSB7DQotCQkqYWRkciA9 IERJU1BfUkVHX0NPTkZJR19ESVNQX1JETUExX1NPVVRfRU47DQotCQl2YWx1ZSA9IFJETUExX1NP VVRfRFNJMjsNCi0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0 ID09IEREUF9DT01QT05FTlRfRFNJMykgew0KLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElT UF9SRE1BMV9TT1VUX0VOOw0KLQkJdmFsdWUgPSBSRE1BMV9TT1VUX0RTSTM7DQotCX0gZWxzZSBp ZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQ STApIHsNCi0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTFfU09VVF9FTjsNCi0J CXZhbHVlID0gUkRNQTFfU09VVF9EUEkwOw0KLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9O RU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkxKSB7DQotCQkqYWRkciA9IERJ U1BfUkVHX0NPTkZJR19ESVNQX1JETUExX1NPVVRfRU47DQotCQl2YWx1ZSA9IFJETUExX1NPVVRf RFBJMTsNCi0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09 IEREUF9DT01QT05FTlRfRFBJMCkgew0KLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9S RE1BMl9TT1VUOw0KLQkJdmFsdWUgPSBSRE1BMl9TT1VUX0RQSTA7DQotCX0gZWxzZSBpZiAoY3Vy ID09IEREUF9DT01QT05FTlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTEpIHsN Ci0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVDsNCi0JCXZhbHVlID0g UkRNQTJfU09VVF9EUEkxOw0KLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEy ICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kxKSB7DQotCQkqYWRkciA9IERJU1BfUkVHX0NP TkZJR19ESVNQX1JETUEyX1NPVVQ7DQotCQl2YWx1ZSA9IFJETUEyX1NPVVRfRFNJMTsNCi0JfSBl bHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IEREUF9DT01QT05F TlRfRFNJMikgew0KLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRElTUF9SRE1BMl9TT1VUOw0K LQkJdmFsdWUgPSBSRE1BMl9TT1VUX0RTSTI7DQotCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01Q T05FTlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTMpIHsNCi0JCSphZGRyID0g RElTUF9SRUdfQ09ORklHX0RJU1BfUkRNQTJfU09VVDsNCi0JCXZhbHVlID0gUkRNQTJfU09VVF9E U0kzOw0KLQl9IGVsc2Ugew0KLQkJdmFsdWUgPSAwOw0KLQl9DQotDQotCXJldHVybiB2YWx1ZTsN Ci19DQotDQotc3RhdGljIHVuc2lnbmVkIGludCBtdGtfbW1zeXNfZGRwX3NlbF9pbihlbnVtIG10 a19kZHBfY29tcF9pZCBjdXIsDQotCQkJCQkgZW51bSBtdGtfZGRwX2NvbXBfaWQgbmV4dCwNCi0J CQkJCSB1bnNpZ25lZCBpbnQgKmFkZHIpDQotew0KLQl1bnNpZ25lZCBpbnQgdmFsdWU7DQotDQot CWlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9PVkwwICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9D T0xPUjApIHsNCi0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RJU1BfQ09MT1IwX1NFTF9JTjsN Ci0JCXZhbHVlID0gQ09MT1IwX1NFTF9JTl9PVkwwOw0KLQl9IGVsc2UgaWYgKGN1ciA9PSBERFBf Q09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EUEkwKSB7DQotCQkqYWRk ciA9IERJU1BfUkVHX0NPTkZJR19EUElfU0VMX0lOOw0KLQkJdmFsdWUgPSBEUEkwX1NFTF9JTl9S RE1BMTsNCi0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBuZXh0ID09 IEREUF9DT01QT05FTlRfRFBJMSkgew0KLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFBJX1NF TF9JTjsNCi0JCXZhbHVlID0gRFBJMV9TRUxfSU5fUkRNQTE7DQotCX0gZWxzZSBpZiAoY3VyID09 IEREUF9DT01QT05FTlRfUkRNQTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTApIHsNCi0J CSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSUVfU0VMX0lOOw0KLQkJdmFsdWUgPSBEU0kwX1NF TF9JTl9SRE1BMTsNCi0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMSAmJiBu ZXh0ID09IEREUF9DT01QT05FTlRfRFNJMSkgew0KLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdf RFNJT19TRUxfSU47DQotCQl2YWx1ZSA9IERTSTFfU0VMX0lOX1JETUExOw0KLQl9IGVsc2UgaWYg KGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUExICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0ky KSB7DQotCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9JTjsNCi0JCXZhbHVlID0g RFNJMl9TRUxfSU5fUkRNQTE7DQotCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfUkRN QTEgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTMpIHsNCi0JCSphZGRyID0gRElTUF9SRUdf Q09ORklHX0RTSU9fU0VMX0lOOw0KLQkJdmFsdWUgPSBEU0kzX1NFTF9JTl9SRE1BMTsNCi0JfSBl bHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09IEREUF9DT01QT05F TlRfRFBJMCkgew0KLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFBJX1NFTF9JTjsNCi0JCXZh bHVlID0gRFBJMF9TRUxfSU5fUkRNQTI7DQotCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05F TlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RQSTEpIHsNCi0JCSphZGRyID0gRElT UF9SRUdfQ09ORklHX0RQSV9TRUxfSU47DQotCQl2YWx1ZSA9IERQSTFfU0VMX0lOX1JETUEyOw0K LQl9IGVsc2UgaWYgKGN1ciA9PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NP TVBPTkVOVF9EU0kwKSB7DQotCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9JTjsN Ci0JCXZhbHVlID0gRFNJMF9TRUxfSU5fUkRNQTI7DQotCX0gZWxzZSBpZiAoY3VyID09IEREUF9D T01QT05FTlRfUkRNQTIgJiYgbmV4dCA9PSBERFBfQ09NUE9ORU5UX0RTSTEpIHsNCi0JCSphZGRy ID0gRElTUF9SRUdfQ09ORklHX0RTSU9fU0VMX0lOOw0KLQkJdmFsdWUgPSBEU0kxX1NFTF9JTl9S RE1BMjsNCi0JfSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9SRE1BMiAmJiBuZXh0ID09 IEREUF9DT01QT05FTlRfRFNJMikgew0KLQkJKmFkZHIgPSBESVNQX1JFR19DT05GSUdfRFNJRV9T RUxfSU47DQotCQl2YWx1ZSA9IERTSTJfU0VMX0lOX1JETUEyOw0KLQl9IGVsc2UgaWYgKGN1ciA9 PSBERFBfQ09NUE9ORU5UX1JETUEyICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kzKSB7DQot CQkqYWRkciA9IERJU1BfUkVHX0NPTkZJR19EU0lFX1NFTF9JTjsNCi0JCXZhbHVlID0gRFNJM19T RUxfSU5fUkRNQTI7DQotCX0gZWxzZSBpZiAoY3VyID09IEREUF9DT01QT05FTlRfT1ZMMSAmJiBu ZXh0ID09IEREUF9DT01QT05FTlRfQ09MT1IxKSB7DQotCQkqYWRkciA9IERJU1BfUkVHX0NPTkZJ R19ESVNQX0NPTE9SMV9TRUxfSU47DQotCQl2YWx1ZSA9IENPTE9SMV9TRUxfSU5fT1ZMMTsNCi0J fSBlbHNlIGlmIChjdXIgPT0gRERQX0NPTVBPTkVOVF9CTFMgJiYgbmV4dCA9PSBERFBfQ09NUE9O RU5UX0RTSTApIHsNCi0JCSphZGRyID0gRElTUF9SRUdfQ09ORklHX0RTSV9TRUw7DQotCQl2YWx1 ZSA9IERTSV9TRUxfSU5fQkxTOw0KLQl9IGVsc2Ugew0KLQkJdmFsdWUgPSAwOw0KLQl9DQotDQot CXJldHVybiB2YWx1ZTsNCi19DQotDQotc3RhdGljIHZvaWQgbXRrX21tc3lzX2RkcF9zb3V0X3Nl bCh2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzLA0KLQkJCQkgICBlbnVtIG10a19kZHBfY29tcF9p ZCBjdXIsDQotCQkJCSAgIGVudW0gbXRrX2RkcF9jb21wX2lkIG5leHQpDQotew0KLQlpZiAoY3Vy ID09IEREUF9DT01QT05FTlRfQkxTICYmIG5leHQgPT0gRERQX0NPTVBPTkVOVF9EU0kwKSB7DQot CQl3cml0ZWxfcmVsYXhlZChCTFNfVE9fRFNJX1JETUExX1RPX0RQSTEsDQotCQkJICAgICAgIGNv bmZpZ19yZWdzICsgRElTUF9SRUdfQ09ORklHX09VVF9TRUwpOw0KLQl9IGVsc2UgaWYgKGN1ciA9 PSBERFBfQ09NUE9ORU5UX0JMUyAmJiBuZXh0ID09IEREUF9DT01QT05FTlRfRFBJMCkgew0KLQkJ d3JpdGVsX3JlbGF4ZWQoQkxTX1RPX0RQSV9SRE1BMV9UT19EU0ksDQotCQkJICAgICAgIGNvbmZp Z19yZWdzICsgRElTUF9SRUdfQ09ORklHX09VVF9TRUwpOw0KLQkJd3JpdGVsX3JlbGF4ZWQoRFNJ X1NFTF9JTl9SRE1BLA0KLQkJCSAgICAgICBjb25maWdfcmVncyArIERJU1BfUkVHX0NPTkZJR19E U0lfU0VMKTsNCi0JCXdyaXRlbF9yZWxheGVkKERQSV9TRUxfSU5fQkxTLA0KLQkJCSAgICAgICBj b25maWdfcmVncyArIERJU1BfUkVHX0NPTkZJR19EUElfU0VMKTsNCi0JfQ0KLX0NCi0NCiB2b2lk IG10a19tbXN5c19kZHBfY29ubmVjdChzdHJ1Y3QgZGV2aWNlICpkZXYsDQogCQkJICAgZW51bSBt dGtfZGRwX2NvbXBfaWQgY3VyLA0KIAkJCSAgIGVudW0gbXRrX2RkcF9jb21wX2lkIG5leHQpDQog ew0KLQl2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQor CXN0cnVjdCBtdGtfbW1zeXNfcHJpdmF0ZV9kYXRhICpwcml2YXRlID0gZGV2X2dldF9kcnZkYXRh KGRldik7DQorCXZvaWQgX19pb21lbSAqY29uZmlnX3JlZ3MgPSBwcml2YXRlLT5jb25maWdfcmVn czsNCisJc3RydWN0IG10a19tbXN5c19jb25uX2Z1bmNzICpwcml2X2Z1bmNzID0gcHJpdmF0ZS0+ ZnVuY3M7DQogCXVuc2lnbmVkIGludCBhZGRyLCB2YWx1ZSwgcmVnOw0KIA0KLQl2YWx1ZSA9IG10 a19tbXN5c19kZHBfbW91dF9lbihjdXIsIG5leHQsICZhZGRyKTsNCisJdmFsdWUgPSBwcml2X2Z1 bmNzLT5tb3V0X2VuKGN1ciwgbmV4dCwgJmFkZHIpOw0KIAlpZiAodmFsdWUpIHsNCiAJCXJlZyA9 IHJlYWRsX3JlbGF4ZWQoY29uZmlnX3JlZ3MgKyBhZGRyKSB8IHZhbHVlOw0KIAkJd3JpdGVsX3Jl bGF4ZWQocmVnLCBjb25maWdfcmVncyArIGFkZHIpOw0KIAl9DQogDQotCW10a19tbXN5c19kZHBf c291dF9zZWwoY29uZmlnX3JlZ3MsIGN1ciwgbmV4dCk7DQorCXByaXZfZnVuY3MtPnNvdXRfc2Vs KGNvbmZpZ19yZWdzLCBjdXIsIG5leHQpOw0KIA0KLQl2YWx1ZSA9IG10a19tbXN5c19kZHBfc2Vs X2luKGN1ciwgbmV4dCwgJmFkZHIpOw0KKwl2YWx1ZSA9IHByaXZfZnVuY3MtPnNlbF9pbihjdXIs IG5leHQsICZhZGRyKTsNCiAJaWYgKHZhbHVlKSB7DQogCQlyZWcgPSByZWFkbF9yZWxheGVkKGNv bmZpZ19yZWdzICsgYWRkcikgfCB2YWx1ZTsNCiAJCXdyaXRlbF9yZWxheGVkKHJlZywgY29uZmln X3JlZ3MgKyBhZGRyKTsNCkBAIC0yODIsMTYgKzc4LDE4IEBAIHZvaWQgbXRrX21tc3lzX2RkcF9k aXNjb25uZWN0KHN0cnVjdCBkZXZpY2UgKmRldiwNCiAJCQkgICAgICBlbnVtIG10a19kZHBfY29t cF9pZCBjdXIsDQogCQkJICAgICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgbmV4dCkNCiB7DQotCXZv aWQgX19pb21lbSAqY29uZmlnX3JlZ3MgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCisJc3RydWN0 IG10a19tbXN5c19wcml2YXRlX2RhdGEgKnByaXZhdGUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsN CisJdm9pZCBfX2lvbWVtICpjb25maWdfcmVncyA9IHByaXZhdGUtPmNvbmZpZ19yZWdzOw0KKwlz dHJ1Y3QgbXRrX21tc3lzX2Nvbm5fZnVuY3MgKnByaXZfZnVuY3MgPSBwcml2YXRlLT5mdW5jczsN CiAJdW5zaWduZWQgaW50IGFkZHIsIHZhbHVlLCByZWc7DQogDQotCXZhbHVlID0gbXRrX21tc3lz X2RkcF9tb3V0X2VuKGN1ciwgbmV4dCwgJmFkZHIpOw0KKwl2YWx1ZSA9IHByaXZfZnVuY3MtPm1v dXRfZW4oY3VyLCBuZXh0LCAmYWRkcik7DQogCWlmICh2YWx1ZSkgew0KIAkJcmVnID0gcmVhZGxf cmVsYXhlZChjb25maWdfcmVncyArIGFkZHIpICYgfnZhbHVlOw0KIAkJd3JpdGVsX3JlbGF4ZWQo cmVnLCBjb25maWdfcmVncyArIGFkZHIpOw0KIAl9DQogDQotCXZhbHVlID0gbXRrX21tc3lzX2Rk cF9zZWxfaW4oY3VyLCBuZXh0LCAmYWRkcik7DQorCXZhbHVlID0gcHJpdl9mdW5jcy0+c2VsX2lu KGN1ciwgbmV4dCwgJmFkZHIpOw0KIAlpZiAodmFsdWUpIHsNCiAJCXJlZyA9IHJlYWRsX3JlbGF4 ZWQoY29uZmlnX3JlZ3MgKyBhZGRyKSAmIH52YWx1ZTsNCiAJCXdyaXRlbF9yZWxheGVkKHJlZywg Y29uZmlnX3JlZ3MgKyBhZGRyKTsNCkBAIC0yOTksMTUgKzk3LDI5IEBAIHZvaWQgbXRrX21tc3lz X2RkcF9kaXNjb25uZWN0KHN0cnVjdCBkZXZpY2UgKmRldiwNCiB9DQogRVhQT1JUX1NZTUJPTF9H UEwobXRrX21tc3lzX2RkcF9kaXNjb25uZWN0KTsNCiANCit2b2lkIG10a19tbXN5c19yZWdpc3Rl cl9jb25uX2Z1bmNzKHN0cnVjdCBkZXZpY2UgKmRldiwNCisJCQkJICAgc3RydWN0IG10a19tbXN5 c19jb25uX2Z1bmNzICpmdW5jcykNCit7DQorCXN0cnVjdCBtdGtfbW1zeXNfcHJpdmF0ZV9kYXRh ICpwcml2YXRlID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQorDQorCXByaXZhdGUtPmZ1bmNzID0g ZnVuY3M7DQorfQ0KKw0KIHN0YXRpYyBpbnQgbXRrX21tc3lzX3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpDQogew0KIAljb25zdCBzdHJ1Y3QgbXRrX21tc3lzX2RyaXZlcl9kYXRh ICpkYXRhOw0KIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KIAlzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpjbGtzOw0KIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkcm07DQorCXN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm1tOw0KIAl2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzOw0K IAlzdHJ1Y3QgcmVzb3VyY2UgKm1lbTsNCiAJaW50IHJldDsNCisJc3RydWN0IG10a19tbXN5c19w cml2YXRlX2RhdGEgKnByaXZhdGU7DQorDQorCXByaXZhdGUgPSBkZXZtX2t6YWxsb2MoZGV2LCBz aXplb2YoKnByaXZhdGUpLCBHRlBfS0VSTkVMKTsNCisJaWYgKCFwcml2YXRlKQ0KKwkJcmV0dXJu IC1FTk9NRU07DQogDQogCW1lbSA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09V UkNFX01FTSwgMCk7DQogCWNvbmZpZ19yZWdzID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwg bWVtKTsNCkBAIC0zMTcsOCArMTI5LDkgQEAgc3RhdGljIGludCBtdGtfbW1zeXNfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCiAJCQlyZXQpOw0KIAkJcmV0dXJuIHJldDsNCiAJ fQ0KKwlwcml2YXRlLT5jb25maWdfcmVncyA9IGNvbmZpZ19yZWdzOw0KIA0KLQlwbGF0Zm9ybV9z ZXRfZHJ2ZGF0YShwZGV2LCBjb25maWdfcmVncyk7DQorCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBk ZXYsIHByaXZhdGUpOw0KIA0KIAlkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKCZwZGV2 LT5kZXYpOw0KIA0KQEAgLTMyNyw2ICsxNDAsMTQgQEAgc3RhdGljIGludCBtdGtfbW1zeXNfcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCiAJaWYgKElTX0VSUihjbGtzKSkNCiAJ CXJldHVybiBQVFJfRVJSKGNsa3MpOw0KIA0KKwltbSA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rl cl9kYXRhKCZwZGV2LT5kZXYsDQorCQkJCQkgICBkYXRhLT5tbXN5c19kcml2ZXIsDQorCQkJCQkg ICBQTEFURk9STV9ERVZJRF9BVVRPLA0KKwkJCQkJICAgTlVMTCwNCisJCQkJCSAgIDApOw0KKwlp ZiAoSVNfRVJSKG1tKSkNCisJCXJldHVybiBQVFJfRVJSKG1tKTsNCisNCiAJZHJtID0gcGxhdGZv cm1fZGV2aWNlX3JlZ2lzdGVyX2RhdGEoJnBkZXYtPmRldiwgIm1lZGlhdGVrLWRybSIsDQogCQkJ CQkgICAgUExBVEZPUk1fREVWSURfQVVUTywgTlVMTCwgMCk7DQogCWlmIChJU19FUlIoZHJtKSkg ew0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc29jL21lZGlhdGVrL210ay1tbXN5cy5oIGIv aW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrLW1tc3lzLmgNCmluZGV4IDIyMjhiZjYuLjg5 MTg1YzYgMTAwNjQ0DQotLS0gYS9pbmNsdWRlL2xpbnV4L3NvYy9tZWRpYXRlay9tdGstbW1zeXMu aA0KKysrIGIvaW5jbHVkZS9saW51eC9zb2MvbWVkaWF0ZWsvbXRrLW1tc3lzLmgNCkBAIC00Miw2 ICs0MiwyMSBAQCBlbnVtIG10a19kZHBfY29tcF9pZCB7DQogCUREUF9DT01QT05FTlRfSURfTUFY LA0KIH07DQogDQorc3RydWN0IG10a19tbXN5c19jb25uX2Z1bmNzIHsNCisJdTMyICgqbW91dF9l bikoZW51bSBtdGtfZGRwX2NvbXBfaWQgY3VyLA0KKwkJICAgICAgIGVudW0gbXRrX2RkcF9jb21w X2lkIG5leHQsDQorCQkgICAgICAgdW5zaWduZWQgaW50ICphZGRyKTsNCisJdTMyICgqc2VsX2lu KShlbnVtIG10a19kZHBfY29tcF9pZCBjdXIsDQorCQkgICAgICBlbnVtIG10a19kZHBfY29tcF9p ZCBuZXh0LA0KKwkJICAgICAgdW5zaWduZWQgaW50ICphZGRyKTsNCisJdm9pZCAoKnNvdXRfc2Vs KSh2b2lkIF9faW9tZW0gKmNvbmZpZ19yZWdzLA0KKwkJCSBlbnVtIG10a19kZHBfY29tcF9pZCBj dXIsDQorCQkJIGVudW0gbXRrX2RkcF9jb21wX2lkIG5leHQpOw0KK307DQorDQordm9pZCBtdGtf bW1zeXNfcmVnaXN0ZXJfY29ubl9mdW5jcyhzdHJ1Y3QgZGV2aWNlICpkZXYsDQorCQkJCSAgIHN0 cnVjdCBtdGtfbW1zeXNfY29ubl9mdW5jcyAqZnVuY3MpOw0KKw0KIHZvaWQgbXRrX21tc3lzX2Rk cF9jb25uZWN0KHN0cnVjdCBkZXZpY2UgKmRldiwNCiAJCQkgICBlbnVtIG10a19kZHBfY29tcF9p ZCBjdXIsDQogCQkJICAgZW51bSBtdGtfZGRwX2NvbXBfaWQgbmV4dCk7DQotLSANCjEuOC4xLjEu ZGlydHkNCg==