Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp409457pxk; Fri, 11 Sep 2020 10:06:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwiR4yC7816hlVF46j1G+E3qqNuDNzcqEa1Goo+z2n3WwKUC3qG1hyXHMQMXtMIjmcqfSsB X-Received: by 2002:a05:6402:326:: with SMTP id q6mr3209707edw.216.1599844010311; Fri, 11 Sep 2020 10:06:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599844010; cv=none; d=google.com; s=arc-20160816; b=zFnsrYPBI0pWfwlalHDWVhlZEkAdGzwfT2gKwVSm5/ZOpq0Xu9LrXA7vl4iMjLw95u gS78S+3e6xbsuVbaNUkoej4t6thNJjhDKqb+trVrGvzHMmVIVTPcA0IM+w2DxFST9xeb apYGLPCCT9e4ZgQcVR4CQDvAsovkRmMWeQtR5MIOJgjlCxOCGYQ2JAbxv+ku37gbdtzo LEWpdTLXXIBHdDBscTS2bwJK5dLBXZaKgWL2B3yuOkSvJXzve+WBk9qHDYMNznPogKNA 16Wil6QevVmhJRmrNMXWqABP6XRMa1j4BN98/CHPlpeU6xStgwJCuBohhVdFc06bq18x uy/g== 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=sDsbEgCCXF0cXOAAIacq2M9x+PUbp/LS5KGaoTKXCG8=; b=na0NSZ9f3QPF53nYKobbj6Ak73qsGWt4zel9pr/U5oq/2CrnYT5V0S/9RmQCwEMr5F 1xewkC/2MHoCK4jX2CbEODDfbqUY8oJety98cBO7Bq/CNQ+LR91HqHrUq9Q8f1G27QOF o9YbEnCR0b3ieMeefTVL92X7XIwfFnEqK55lPYiETiQSwYCDnMHBHbSbTnuC4hmyCW5V K9dQ22+D63nGeSKmXIc2SXvwa645DfyYzacrfq37jI56dCTLxgXMbVPFbyZLy9JXVqvw IGGkiQSEulNoEUfu7wTT/phJ9HQ7YBnK8fYzbP5/RgFmpy8QJmquDump8XkEt6UQhMiM ABNg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=rI5IuD7W; 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 z4si1691110eji.462.2020.09.11.10.06.26; Fri, 11 Sep 2020 10:06:50 -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=rI5IuD7W; 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 S1725891AbgIKRDt (ORCPT + 99 others); Fri, 11 Sep 2020 13:03:49 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:64962 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726162AbgIKPDo (ORCPT ); Fri, 11 Sep 2020 11:03:44 -0400 X-UUID: 7889ba17fb0b4761bc88bd1e2645836a-20200911 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=sDsbEgCCXF0cXOAAIacq2M9x+PUbp/LS5KGaoTKXCG8=; b=rI5IuD7Wt+9OCgRYjQUZfvGDnSQDcdNtZEELWaMzBAgBiQ1s7cyc3KK262Ed4upOaOs0nstDh6o858Ec4iQdaBrKxKKRjTw/ungGJ61D9xI4objBdJQvulRTEEDgpCBHCBOQxQVM0gZWIyvwJEzaxgk+I5xVQoFkuEipI8idTOI=; X-UUID: 7889ba17fb0b4761bc88bd1e2645836a-20200911 Received: from mtkexhb02.mediatek.inc [(172.21.101.103)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1626348523; Fri, 11 Sep 2020 21:49:18 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 11 Sep 2020 21:49:14 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 11 Sep 2020 21:49:14 +0800 From: Landen Chao To: Andrew Lunn , Vivien Didelot , Florian Fainelli , "David S . Miller" , Jakub Kicinski , Rob Herring , Matthias Brugger , Sean Wang , Philipp Zabel , Russell King CC: , , , , , , , , Landen Chao Subject: [PATCH net-next v5 4/6] net: dsa: mt7530: Add the support of MT7531 switch Date: Fri, 11 Sep 2020 21:48:54 +0800 Message-ID: <5b7c49eb00cfd69d6873b51257ad62967f574d43.1599829696.git.landen.chao@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: References: 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 QWRkIG5ldyBzdXBwb3J0IGZvciBNVDc1MzE6DQoNCk1UNzUzMSBpcyB0aGUgbmV4dCBnZW5lcmF0 aW9uIG9mIE1UNzUzMC4gSXQgaXMgYWxzbyBhIDctcG9ydHMgc3dpdGNoIHdpdGgNCjUgZ2lnYSBl bWJlZGRlZCBwaHlzLCAyIGNwdSBwb3J0cywgYW5kIHRoZSBzYW1lIE1BQyBsb2dpYyBvZiBNVDc1 MzAuIENwdQ0KcG9ydCA2IG9ubHkgc3VwcG9ydHMgU0dNSUkgaW50ZXJmYWNlLiBDcHUgcG9ydCA1 IHN1cHBvcnRzIGVpdGhlciBSR01JSQ0Kb3IgU0dNSUkgaW4gZGlmZmVyZW50IEhXIHNrdSwgYnV0 IGNhbm5vdCBiZSBtdXhlZCB0byBQSFkgb2YgcG9ydCAwLzQgbGlrZQ0KbXQ3NTMwLiBEdWUgdG8g U0dNSUkgaW50ZXJmYWNlIHN1cHBvcnQsIHBsbCwgYW5kIHBhZCBzZXR0aW5nIGFyZSBkaWZmZXJl bnQNCmZyb20gTVQ3NTMwLiBUaGlzIHBhdGNoIGFkZHMgZGlmZmVyZW50IGluaXRpYWwgc2V0dGlu ZywgYW5kIFNHTUlJIHBoeWxpbmsNCmhhbmRsZXJzIG9mIE1UNzUzMS4NCg0KTVQ3NTMxIFNHTUlJ IGludGVyZmFjZSBjYW4gYmUgY29uZmlndXJlZCBpbiBmb2xsb3dpbmcgbW9kZToNCi0gJ1NHTUlJ IEFOIG1vZGUnIHdpdGggaW4tYmFuZCBuZWdvdGlhdGlvbiBjYXBhYmlsaXR5DQogICAgd2hpY2gg aXMgY29tcGF0aWJsZSB3aXRoIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSS4NCi0gJ1NHTUlJIGZv cmNlIG1vZGUnIHdpdGhvdXQgaW4tYmFuZCBuZWdvdGlhdGlvbg0KICAgIHdoaWNoIGlzIGNvbXBh dGlibGUgd2l0aCAxMEIvOEIgZW5jb2Rpbmcgb2YNCiAgICBQSFlfSU5URVJGQUNFX01PREVfMTAw MEJBU0VYIHdpdGggZml4ZWQgZnVsbC1kdXBsZXggYW5kIGZpeGVkIHBhdXNlLg0KLSAyLjUgdGlt ZXMgZmFzdGVyIGNsb2NrZWQgJ1NHTUlJIGZvcmNlIG1vZGUnIHdpdGhvdXQgaW4tYmFuZCBuZWdv dGlhdGlvbg0KICAgIHdoaWNoIGlzIGNvbXBhdGlibGUgd2l0aCAxMEIvOEIgZW5jb2Rpbmcgb2YN CiAgICBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYIHdpdGggZml4ZWQgZnVsbC1kdXBsZXgg YW5kIGZpeGVkIHBhdXNlLg0KDQpTaWduZWQtb2ZmLWJ5OiBMYW5kZW4gQ2hhbyA8bGFuZGVuLmNo YW9AbWVkaWF0ZWsuY29tPg0KU2lnbmVkLW9mZi1ieTogU2VhbiBXYW5nIDxzZWFuLndhbmdAbWVk aWF0ZWsuY29tPg0KLS0tDQogZHJpdmVycy9uZXQvZHNhL0tjb25maWcgIHwgICA2ICstDQogZHJp dmVycy9uZXQvZHNhL210NzUzMC5jIHwgOTExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLQ0KIGRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaCB8IDIyMiArKysrKysrKysrDQog MyBmaWxlcyBjaGFuZ2VkLCAxMTEyIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQ0KDQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL0tjb25maWcgYi9kcml2ZXJzL25ldC9kc2EvS2Nv bmZpZw0KaW5kZXggMDZkNjhhODQ4Nzc0Li4yNDUxZjYxYTM4ZTQgMTAwNjQ0DQotLS0gYS9kcml2 ZXJzL25ldC9kc2EvS2NvbmZpZw0KKysrIGIvZHJpdmVycy9uZXQvZHNhL0tjb25maWcNCkBAIC0z MywxMiArMzMsMTIgQEAgY29uZmlnIE5FVF9EU0FfTEFOVElRX0dTV0lQDQogCSAgdGhlIHhyeDIw MCAvIFZSOSBTb0MuDQogDQogY29uZmlnIE5FVF9EU0FfTVQ3NTMwDQotCXRyaXN0YXRlICJNZWRp YVRlayBNVDc1MzAgYW5kIE1UNzYyMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydCINCisJdHJpc3Rh dGUgIk1lZGlhVGVrIE1UNzUzeCBhbmQgTVQ3NjIxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0Ig0K IAlkZXBlbmRzIG9uIE5FVF9EU0ENCiAJc2VsZWN0IE5FVF9EU0FfVEFHX01USw0KIAloZWxwDQot CSAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzYy MSBFdGhlcm5ldA0KLQkgIHN3aXRjaCBjaGlwLg0KKwkgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZv ciB0aGUgTWVkaWFUZWsgTVQ3NTMwLCBNVDc1MzEsIGFuZCBNVDc2MjENCisJICBFdGhlcm5ldCBz d2l0Y2ggY2hpcHMuDQogDQogY29uZmlnIE5FVF9EU0FfTVY4OEU2MDYwDQogCXRyaXN0YXRlICJN YXJ2ZWxsIDg4RTYwNjAgZXRoZXJuZXQgc3dpdGNoIGNoaXAgc3VwcG9ydCINCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMNCmlu ZGV4IDljNmY4MGIzZTVmNS4uYmM5ZGE5ZDdiMmY0IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQv ZHNhL210NzUzMC5jDQorKysgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMNCkBAIC0yMzMsNiAr MjMzLDEyIEBAIG10NzUzMF93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcs IHUzMiB2YWwpDQogCW11dGV4X3VubG9jaygmYnVzLT5tZGlvX2xvY2spOw0KIH0NCiANCitzdGF0 aWMgdTMyDQorX210NzUzMF91bmxvY2tlZF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCAq cCkNCit7DQorCXJldHVybiBtdDc1MzBfbWlpX3JlYWQocC0+cHJpdiwgcC0+cmVnKTsNCit9DQor DQogc3RhdGljIHUzMg0KIF9tdDc1MzBfcmVhZChzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgKnAp DQogew0KQEAgLTQ4Myw2ICs0ODksMTA4IEBAIG10NzUzMF9wYWRfY2xrX3NldHVwKHN0cnVjdCBk c2Ffc3dpdGNoICpkcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkNCiAJcmV0dXJuIDA7DQog fQ0KIA0KK3N0YXRpYyBib29sIG10NzUzMV9kdWFsX3NnbWlpX3N1cHBvcnRlZChzdHJ1Y3QgbXQ3 NTMwX3ByaXYgKnByaXYpDQorew0KKwl1MzIgdmFsOw0KKw0KKwl2YWwgPSBtdDc1MzBfcmVhZChw cml2LCBNVDc1MzFfVE9QX1NJR19TUik7DQorDQorCXJldHVybiAodmFsICYgUEFEX0RVQUxfU0dN SUlfRU4pICE9IDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQNCittdDc1MzFfcGFkX3NldHVwKHN0cnVj dCBkc2Ffc3dpdGNoICpkcywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkNCit7DQorCXN0cnVj dCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLT5wcml2Ow0KKwl1MzIgdG9wX3NpZzsNCisJdTMyIGh3 c3RyYXA7DQorCXUzMiB4dGFsOw0KKwl1MzIgdmFsOw0KKw0KKwlpZiAobXQ3NTMxX2R1YWxfc2dt aWlfc3VwcG9ydGVkKHByaXYpKQ0KKwkJcmV0dXJuIDA7DQorDQorCXZhbCA9IG10NzUzMF9yZWFk KHByaXYsIE1UNzUzMV9DUkVWKTsNCisJdG9wX3NpZyA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUz MV9UT1BfU0lHX1NSKTsNCisJaHdzdHJhcCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9IV1RS QVApOw0KKwlpZiAoKHZhbCAmIENISVBfUkVWX00pID4gMCkNCisJCXh0YWwgPSAodG9wX3NpZyAm IFBBRF9NQ01fU01JX0VOKSA/IEhXVFJBUF9YVEFMX0ZTRUxfNDBNSFogOg0KKwkJCQkJCSAgICBI V1RSQVBfWFRBTF9GU0VMXzI1TUhaOw0KKwllbHNlDQorCQl4dGFsID0gaHdzdHJhcCAmIEhXVFJB UF9YVEFMX0ZTRUxfTUFTSzsNCisNCisJLyogU3RlcCAxIDogRGlzYWJsZSBNVDc1MzEgQ09SRVBM TCAqLw0KKwl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4pOw0KKwl2YWwg Jj0gfkVOX0NPUkVQTEw7DQorCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfRU4sIHZh bCk7DQorDQorCS8qIFN0ZXAgMjogc3dpdGNoIHRvIFhUQUwgb3V0cHV0ICovDQorCXZhbCA9IG10 NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9FTik7DQorCXZhbCB8PSBTV19DTEtTVzsNCisJ bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9FTiwgdmFsKTsNCisNCisJdmFsID0gbXQ3 NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCk7DQorCXZhbCAmPSB+UkdfQ09SRVBMTF9F TjsNCisJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExHUF9DUjAsIHZhbCk7DQorDQorCS8q IFN0ZXAgMzogZGlzYWJsZSBQTExHUCBhbmQgZW5hYmxlIHByb2dyYW0gUExMR1AgKi8NCisJdmFs ID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BMTEdQX0VOKTsNCisJdmFsIHw9IFNXX1BMTEdQ Ow0KKwltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0VOLCB2YWwpOw0KKw0KKwkvKiBT dGVwIDQ6IHByb2dyYW0gQ09SRVBMTCBvdXRwdXQgZnJlcXVlbmN5IHRvIDUwME1IeiAqLw0KKwl2 YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTsNCisJdmFsICY9IH5SR19D T1JFUExMX1BPU0RJVl9NOw0KKwl2YWwgfD0gMiA8PCBSR19DT1JFUExMX1BPU0RJVl9TOw0KKwlt dDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTsNCisJdXNsZWVwX3Jhbmdl KDI1LCAzNSk7DQorDQorCXN3aXRjaCAoeHRhbCkgew0KKwljYXNlIEhXVFJBUF9YVEFMX0ZTRUxf MjVNSFo6DQorCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTsNCisJ CXZhbCAmPSB+UkdfQ09SRVBMTF9TRE1fUENXX007DQorCQl2YWwgfD0gMHgxNDAwMDAgPDwgUkdf Q09SRVBMTF9TRE1fUENXX1M7DQorCQltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NS MCwgdmFsKTsNCisJCWJyZWFrOw0KKwljYXNlIEhXVFJBUF9YVEFMX0ZTRUxfNDBNSFo6DQorCQl2 YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTsNCisJCXZhbCAmPSB+Ukdf Q09SRVBMTF9TRE1fUENXX007DQorCQl2YWwgfD0gMHgxOTAwMDAgPDwgUkdfQ09SRVBMTF9TRE1f UENXX1M7DQorCQltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMxX1BMTEdQX0NSMCwgdmFsKTsNCisJ CWJyZWFrOw0KKwl9Ow0KKw0KKwkvKiBTZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBz aWduYWwgdG8gaGlnaCAqLw0KKwl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1Bf Q1IwKTsNCisJdmFsIHw9IFJHX0NPUkVQTExfU0RNX1BDV19DSEc7DQorCW10NzUzMF93cml0ZShw cml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2YWwpOw0KKwkvKiBXYWl0IGZvciBhdCBsZWFzdCAxNiBY VEFMIGNsb2NrcyAqLw0KKwl1c2xlZXBfcmFuZ2UoMTAsIDIwKTsNCisNCisJLyogU3RlcCA1OiBz ZXQgZmVlZGJhY2sgZGl2aWRlIHJhdGlvIHVwZGF0ZSBzaWduYWwgdG8gbG93ICovDQorCXZhbCA9 IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9QTExHUF9DUjApOw0KKwl2YWwgJj0gflJHX0NPUkVQ TExfU0RNX1BDV19DSEc7DQorCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1BfQ1IwLCB2 YWwpOw0KKw0KKwkvKiBFbmFibGUgMzI1TSBjbG9jayBmb3IgU0dNSUkgKi8NCisJbXQ3NTMwX3dy aXRlKHByaXYsIE1UNzUzMV9BTkFfUExMR1BfQ1I1LCAweGFkMDAwMCk7DQorDQorCS8qIEVuYWJs ZSAyNTBTU0MgY2xvY2sgZm9yIFJHTUlJICovDQorCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFf QU5BX1BMTEdQX0NSMiwgMHg0ZjQwMDAwKTsNCisNCisJLyogU3RlcCA2OiBFbmFibGUgTVQ3NTMx IFBMTCAqLw0KKwl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfQ1IwKTsNCisJ dmFsIHw9IFJHX0NPUkVQTExfRU47DQorCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUExMR1Bf Q1IwLCB2YWwpOw0KKw0KKwl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUExMR1BfRU4p Ow0KKwl2YWwgfD0gRU5fQ09SRVBMTDsNCisJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9QTExH UF9FTiwgdmFsKTsNCisJdXNsZWVwX3JhbmdlKDI1LCAzNSk7DQorDQorCXJldHVybiAwOw0KK30N CisNCiBzdGF0aWMgdm9pZA0KIG10NzUzMF9taWJfcmVzZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRz KQ0KIHsNCkBAIC01MDcsNiArNjE1LDIxNyBAQCBzdGF0aWMgaW50IG10NzUzMF9waHlfd3JpdGUo c3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSwNCiAJcmV0dXJuIG1k aW9idXNfd3JpdGVfbmVzdGVkKHByaXYtPmJ1cywgcG9ydCwgcmVnbnVtLCB2YWwpOw0KIH0NCiAN CitzdGF0aWMgaW50DQorbXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2 ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLA0KKwkJCWludCByZWdudW0pDQorew0KKwlzdHJ1 Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi0+YnVzOw0KKwlzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwg cDsNCisJdTMyIHJlZywgdmFsOw0KKwlpbnQgcmV0Ow0KKw0KKwlJTklUX01UNzUzMF9EVU1NWV9Q T0xMKCZwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7DQorDQorCW11dGV4X2xvY2tfbmVzdGVkKCZi dXMtPm1kaW9fbG9jaywgTURJT19NVVRFWF9ORVNURUQpOw0KKw0KKwlyZXQgPSByZWFkeF9wb2xs X3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCAmcCwgdmFsLA0KKwkJCQkgISh2YWwgJiBN VDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOw0KKwlpZiAocmV0IDwgMCkgew0KKwkJZGV2 X2Vycihwcml2LT5kZXYsICJwb2xsIHRpbWVvdXRcbiIpOw0KKwkJZ290byBvdXQ7DQorCX0NCisN CisJcmVnID0gTVQ3NTMxX01ESU9fQ0w0NV9BRERSIHwgTVQ3NTMxX01ESU9fUEhZX0FERFIocG9y dCkgfA0KKwkgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07DQorCW10 NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNT X1NUKTsNCisNCisJcmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVh ZCwgJnAsIHZhbCwNCisJCQkJICEodmFsICYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAw KTsNCisJaWYgKHJldCA8IDApIHsNCisJCWRldl9lcnIocHJpdi0+ZGV2LCAicG9sbCB0aW1lb3V0 XG4iKTsNCisJCWdvdG8gb3V0Ow0KKwl9DQorDQorCXJlZyA9IE1UNzUzMV9NRElPX0NMNDVfUkVB RCB8IE1UNzUzMV9NRElPX1BIWV9BRERSKHBvcnQpIHwNCisJICAgICAgTVQ3NTMxX01ESU9fREVW X0FERFIoZGV2YWQpOw0KKwltdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCBy ZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7DQorDQorCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChf bXQ3NTMwX3VubG9ja2VkX3JlYWQsICZwLCB2YWwsDQorCQkJCSAhKHZhbCAmIE1UNzUzMV9QSFlf QUNTX1NUKSwgMjAsIDEwMDAwMCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlkZXZfZXJyKHByaXYt PmRldiwgInBvbGwgdGltZW91dFxuIik7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KKwlyZXQgPSB2 YWwgJiBNVDc1MzFfTURJT19SV19EQVRBX01BU0s7DQorb3V0Og0KKwltdXRleF91bmxvY2soJmJ1 cy0+bWRpb19sb2NrKTsNCisNCisJcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIGludA0KK210 NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0 LCBpbnQgZGV2YWQsDQorCQkJIGludCByZWdudW0sIHUzMiBkYXRhKQ0KK3sNCisJc3RydWN0IG1p aV9idXMgKmJ1cyA9IHByaXYtPmJ1czsNCisJc3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7DQor CXUzMiB2YWwsIHJlZzsNCisJaW50IHJldDsNCisNCisJSU5JVF9NVDc1MzBfRFVNTVlfUE9MTCgm cCwgcHJpdiwgTVQ3NTMxX1BIWV9JQUMpOw0KKw0KKwltdXRleF9sb2NrX25lc3RlZCgmYnVzLT5t ZGlvX2xvY2ssIE1ESU9fTVVURVhfTkVTVEVEKTsNCisNCisJcmV0ID0gcmVhZHhfcG9sbF90aW1l b3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgJnAsIHZhbCwNCisJCQkJICEodmFsICYgTVQ3NTMx X1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsNCisJaWYgKHJldCA8IDApIHsNCisJCWRldl9lcnIo cHJpdi0+ZGV2LCAicG9sbCB0aW1lb3V0XG4iKTsNCisJCWdvdG8gb3V0Ow0KKwl9DQorDQorCXJl ZyA9IE1UNzUzMV9NRElPX0NMNDVfQUREUiB8IE1UNzUzMV9NRElPX1BIWV9BRERSKHBvcnQpIHwN CisJICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtOw0KKwltdDc1MzBf bWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7 DQorDQorCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZw LCB2YWwsDQorCQkJCSAhKHZhbCAmIE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7DQor CWlmIChyZXQgPCAwKSB7DQorCQlkZXZfZXJyKHByaXYtPmRldiwgInBvbGwgdGltZW91dFxuIik7 DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KKwlyZWcgPSBNVDc1MzFfTURJT19DTDQ1X1dSSVRFIHwg TVQ3NTMxX01ESU9fUEhZX0FERFIocG9ydCkgfA0KKwkgICAgICBNVDc1MzFfTURJT19ERVZfQURE UihkZXZhZCkgfCBkYXRhOw0KKwltdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFD LCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7DQorDQorCXJldCA9IHJlYWR4X3BvbGxfdGltZW91 dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZwLCB2YWwsDQorCQkJCSAhKHZhbCAmIE1UNzUzMV9Q SFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlkZXZfZXJyKHBy aXYtPmRldiwgInBvbGwgdGltZW91dFxuIik7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KK291dDoN CisJbXV0ZXhfdW5sb2NrKCZidXMtPm1kaW9fbG9jayk7DQorDQorCXJldHVybiByZXQ7DQorfQ0K Kw0KK3N0YXRpYyBpbnQNCittdDc1MzFfaW5kX2MyMl9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3By aXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKQ0KK3sNCisJc3RydWN0IG1paV9idXMgKmJ1 cyA9IHByaXYtPmJ1czsNCisJc3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7DQorCWludCByZXQ7 DQorCXUzMiB2YWw7DQorDQorCUlOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoJnAsIHByaXYsIE1UNzUz MV9QSFlfSUFDKTsNCisNCisJbXV0ZXhfbG9ja19uZXN0ZWQoJmJ1cy0+bWRpb19sb2NrLCBNRElP X01VVEVYX05FU1RFRCk7DQorDQorCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3Vu bG9ja2VkX3JlYWQsICZwLCB2YWwsDQorCQkJCSAhKHZhbCAmIE1UNzUzMV9QSFlfQUNTX1NUKSwg MjAsIDEwMDAwMCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlkZXZfZXJyKHByaXYtPmRldiwgInBv bGwgdGltZW91dFxuIik7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KKwl2YWwgPSBNVDc1MzFfTURJ T19DTDIyX1JFQUQgfCBNVDc1MzFfTURJT19QSFlfQUREUihwb3J0KSB8DQorCSAgICAgIE1UNzUz MV9NRElPX1JFR19BRERSKHJlZ251bSk7DQorDQorCW10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3 NTMxX1BIWV9JQUMsIHZhbCB8IE1UNzUzMV9QSFlfQUNTX1NUKTsNCisNCisJcmV0ID0gcmVhZHhf cG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgJnAsIHZhbCwNCisJCQkJICEodmFs ICYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsNCisJaWYgKHJldCA8IDApIHsNCisJ CWRldl9lcnIocHJpdi0+ZGV2LCAicG9sbCB0aW1lb3V0XG4iKTsNCisJCWdvdG8gb3V0Ow0KKwl9 DQorDQorCXJldCA9IHZhbCAmIE1UNzUzMV9NRElPX1JXX0RBVEFfTUFTSzsNCitvdXQ6DQorCW11 dGV4X3VubG9jaygmYnVzLT5tZGlvX2xvY2spOw0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitz dGF0aWMgaW50DQorbXQ3NTMxX2luZF9jMjJfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAq cHJpdiwgaW50IHBvcnQsIGludCByZWdudW0sDQorCQkJIHUxNiBkYXRhKQ0KK3sNCisJc3RydWN0 IG1paV9idXMgKmJ1cyA9IHByaXYtPmJ1czsNCisJc3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7 DQorCWludCByZXQ7DQorCXUzMiByZWc7DQorDQorCUlOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoJnAs IHByaXYsIE1UNzUzMV9QSFlfSUFDKTsNCisNCisJbXV0ZXhfbG9ja19uZXN0ZWQoJmJ1cy0+bWRp b19sb2NrLCBNRElPX01VVEVYX05FU1RFRCk7DQorDQorCXJldCA9IHJlYWR4X3BvbGxfdGltZW91 dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZwLCByZWcsDQorCQkJCSAhKHJlZyAmIE1UNzUzMV9Q SFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlkZXZfZXJyKHBy aXYtPmRldiwgInBvbGwgdGltZW91dFxuIik7DQorCQlnb3RvIG91dDsNCisJfQ0KKw0KKwlyZWcg PSBNVDc1MzFfTURJT19DTDIyX1dSSVRFIHwgTVQ3NTMxX01ESU9fUEhZX0FERFIocG9ydCkgfA0K KwkgICAgICBNVDc1MzFfTURJT19SRUdfQUREUihyZWdudW0pIHwgZGF0YTsNCisNCisJbXQ3NTMw X21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1Qp Ow0KKw0KKwlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCAm cCwgcmVnLA0KKwkJCQkgIShyZWcgJiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOw0K KwlpZiAocmV0IDwgMCkgew0KKwkJZGV2X2Vycihwcml2LT5kZXYsICJwb2xsIHRpbWVvdXRcbiIp Ow0KKwkJZ290byBvdXQ7DQorCX0NCisNCitvdXQ6DQorCW11dGV4X3VubG9jaygmYnVzLT5tZGlv X2xvY2spOw0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50DQorbXQ3NTMxX2lu ZF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKQ0K K3sNCisJc3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtPnByaXY7DQorCWludCBkZXZhZDsN CisJaW50IHJldDsNCisNCisJaWYgKHJlZ251bSAmIE1JSV9BRERSX0M0NSkgew0KKwkJZGV2YWQg PSAocmVnbnVtID4+IE1JSV9ERVZBRERSX0M0NV9TSElGVCkgJiAweDFmOw0KKwkJcmV0ID0gbXQ3 NTMxX2luZF9jNDVfcGh5X3JlYWQocHJpdiwgcG9ydCwgZGV2YWQsDQorCQkJCQkgICAgICByZWdu dW0gJiBNSUlfUkVHQUREUl9DNDVfTUFTSyk7DQorCX0gZWxzZSB7DQorCQlyZXQgPSBtdDc1MzFf aW5kX2MyMl9waHlfcmVhZChwcml2LCBwb3J0LCByZWdudW0pOw0KKwl9DQorDQorCXJldHVybiBy ZXQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQNCittdDc1MzFfaW5kX3BoeV93cml0ZShzdHJ1Y3QgZHNh X3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtLA0KKwkJICAgICB1MTYgZGF0YSkNCit7 DQorCXN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLT5wcml2Ow0KKwlpbnQgZGV2YWQ7DQor CWludCByZXQ7DQorDQorCWlmIChyZWdudW0gJiBNSUlfQUREUl9DNDUpIHsNCisJCWRldmFkID0g KHJlZ251bSA+PiBNSUlfREVWQUREUl9DNDVfU0hJRlQpICYgMHgxZjsNCisJCXJldCA9IG10NzUz MV9pbmRfYzQ1X3BoeV93cml0ZShwcml2LCBwb3J0LCBkZXZhZCwNCisJCQkJCSAgICAgICByZWdu dW0gJiBNSUlfUkVHQUREUl9DNDVfTUFTSywNCisJCQkJCSAgICAgICBkYXRhKTsNCisJfSBlbHNl IHsNCisJCXJldCA9IG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShwcml2LCBwb3J0LCByZWdudW0s IGRhdGEpOw0KKwl9DQorDQorCXJldHVybiByZXQ7DQorfQ0KKw0KIHN0YXRpYyB2b2lkDQogbXQ3 NTMwX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHUzMiBzdHJp bmdzZXQsDQogCQkgICB1aW50OF90ICpkYXRhKQ0KQEAgLTYyMyw5ICs5NDIsMTQgQEAgc3RhdGlj IHZvaWQgbXQ3NTMwX3NldHVwX3BvcnQ1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgcGh5X2ludGVy ZmFjZV90IGludGVyZmFjZSkNCiB9DQogDQogc3RhdGljIGludA0KLW10NzUzMF9jcHVfcG9ydF9l bmFibGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LA0KLQkJICAgICAgIGludCBwb3J0KQ0KK210 NzUzeF9jcHVfcG9ydF9lbmFibGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCkNCiB7 DQorCXN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLT5wcml2Ow0KKw0KKwkvKiBTZXR1cCBt YXggY2FwYWJpbGl0eSBvZiBDUFUgcG9ydCBhdCBmaXJzdCAqLw0KKwlpZiAocHJpdi0+aW5mby0+ Y3B1X3BvcnRfY29uZmlnKQ0KKwkJcHJpdi0+aW5mby0+Y3B1X3BvcnRfY29uZmlnKGRzLCBwb3J0 KTsNCisNCiAJLyogRW5hYmxlIE1lZGlhdGVrIGhlYWRlciBtb2RlIG9uIHRoZSBjcHUgcG9ydCAq Lw0KIAltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX1BWQ19QKHBvcnQpLA0KIAkJICAgICBQT1JU X1NQRUNfVEFHKTsNCkBAIC02MzgsNyArOTYyLDcgQEAgbXQ3NTMwX2NwdV9wb3J0X2VuYWJsZShz dHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsDQogCQltdDc1MzBfcm13KHByaXYsIE1UNzUzMF9NRkMs IENQVV9NQVNLLCBDUFVfRU4gfCBDUFVfUE9SVChwb3J0KSk7DQogDQogCS8qIENQVSBwb3J0IGdl dHMgY29ubmVjdGVkIHRvIGFsbCB1c2VyIHBvcnRzIG9mDQotCSAqIHRoZSBzd2l0Y2gNCisJICog dGhlIHN3aXRjaC4NCiAJICovDQogCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfUENSX1AocG9y dCksDQogCQkgICAgIFBDUl9NQVRSSVgoZHNhX3VzZXJfcG9ydHMocHJpdi0+ZHMpKSk7DQpAQCAt MTEzMiwyNyArMTQ1Niw0MiBAQCBtdDc1MzBfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRj aCAqZHMsIGludCBwb3J0LA0KIAlyZXR1cm4gMDsNCiB9DQogDQotc3RhdGljIGludCBtdDc1MzBf cG9ydF9taXJyb3JfYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQorc3RhdGlj IGludCBtdDc1M3hfbWlycm9yX3BvcnRfZ2V0KHVuc2lnbmVkIGludCBpZCwgdTMyIHZhbCkNCit7 DQorCXJldHVybiAoaWQgPT0gSURfTVQ3NTMxKSA/IE1UNzUzMV9NSVJST1JfUE9SVF9HRVQodmFs KSA6DQorCQkJCSAgIE1JUlJPUl9QT1JUKHZhbCk7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXQ3NTN4 X21pcnJvcl9wb3J0X3NldCh1bnNpZ25lZCBpbnQgaWQsIHUzMiB2YWwpDQorew0KKwlyZXR1cm4g KGlkID09IElEX01UNzUzMSkgPyBNVDc1MzFfTUlSUk9SX1BPUlRfU0VUKHZhbCkgOg0KKwkJCQkg ICBNSVJST1JfUE9SVCh2YWwpOw0KK30NCisNCitzdGF0aWMgaW50IG10NzUzeF9wb3J0X21pcnJv cl9hZGQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJCQkJICBzdHJ1Y3QgZHNh X21hbGxfbWlycm9yX3RjX2VudHJ5ICptaXJyb3IsDQogCQkJCSAgYm9vbCBpbmdyZXNzKQ0KIHsN CiAJc3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtPnByaXY7DQorCWludCBtb25pdG9yX3Bv cnQ7DQogCXUzMiB2YWw7DQogDQogCS8qIENoZWNrIGZvciBleGlzdGVudCBlbnRyeSAqLw0KIAlp ZiAoKGluZ3Jlc3MgPyBwcml2LT5taXJyb3JfcnggOiBwcml2LT5taXJyb3JfdHgpICYgQklUKHBv cnQpKQ0KIAkJcmV0dXJuIC1FRVhJU1Q7DQogDQotCXZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1U NzUzMF9NRkMpOw0KKwl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfTUlSUk9SX1JFRyhw cml2LT5pZCkpOw0KIA0KIAkvKiBNVDc1MzAgb25seSBzdXBwb3J0cyBvbmUgbW9uaXRvciBwb3J0 ICovDQotCWlmICh2YWwgJiBNSVJST1JfRU4gJiYgTUlSUk9SX1BPUlQodmFsKSAhPSBtaXJyb3It PnRvX2xvY2FsX3BvcnQpDQorCW1vbml0b3JfcG9ydCA9IG10NzUzeF9taXJyb3JfcG9ydF9nZXQo cHJpdi0+aWQsIHZhbCk7DQorCWlmICh2YWwgJiBNVDc1M1hfTUlSUk9SX0VOKHByaXYtPmlkKSAm Jg0KKwkgICAgbW9uaXRvcl9wb3J0ICE9IG1pcnJvci0+dG9fbG9jYWxfcG9ydCkNCiAJCXJldHVy biAtRUVYSVNUOw0KIA0KLQl2YWwgfD0gTUlSUk9SX0VOOw0KLQl2YWwgJj0gfk1JUlJPUl9NQVNL Ow0KLQl2YWwgfD0gbWlycm9yLT50b19sb2NhbF9wb3J0Ow0KLQltdDc1MzBfd3JpdGUocHJpdiwg TVQ3NTMwX01GQywgdmFsKTsNCisJdmFsIHw9IE1UNzUzWF9NSVJST1JfRU4ocHJpdi0+aWQpOw0K Kwl2YWwgJj0gfk1UNzUzWF9NSVJST1JfTUFTSyhwcml2LT5pZCk7DQorCXZhbCB8PSBtdDc1M3hf bWlycm9yX3BvcnRfc2V0KHByaXYtPmlkLCBtaXJyb3ItPnRvX2xvY2FsX3BvcnQpOw0KKwltdDc1 MzBfd3JpdGUocHJpdiwgTVQ3NTNYX01JUlJPUl9SRUcocHJpdi0+aWQpLCB2YWwpOw0KIA0KIAl2 YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfUENSX1AocG9ydCkpOw0KIAlpZiAoaW5ncmVz cykgew0KQEAgLTExNjcsNyArMTUwNiw3IEBAIHN0YXRpYyBpbnQgbXQ3NTMwX3BvcnRfbWlycm9y X2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAlyZXR1cm4gMDsNCiB9DQog DQotc3RhdGljIHZvaWQgbXQ3NTMwX3BvcnRfbWlycm9yX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAq ZHMsIGludCBwb3J0LA0KK3N0YXRpYyB2b2lkIG10NzUzeF9wb3J0X21pcnJvcl9kZWwoc3RydWN0 IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJCQkJICAgc3RydWN0IGRzYV9tYWxsX21pcnJv cl90Y19lbnRyeSAqbWlycm9yKQ0KIHsNCiAJc3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMt PnByaXY7DQpAQCAtMTE4NCw5ICsxNTIzLDkgQEAgc3RhdGljIHZvaWQgbXQ3NTMwX3BvcnRfbWly cm9yX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAltdDc1MzBfd3JpdGUo cHJpdiwgTVQ3NTMwX1BDUl9QKHBvcnQpLCB2YWwpOw0KIA0KIAlpZiAoIXByaXYtPm1pcnJvcl9y eCAmJiAhcHJpdi0+bWlycm9yX3R4KSB7DQotCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1 MzBfTUZDKTsNCi0JCXZhbCAmPSB+TUlSUk9SX0VOOw0KLQkJbXQ3NTMwX3dyaXRlKHByaXYsIE1U NzUzMF9NRkMsIHZhbCk7DQorCQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1M1hfTUlSUk9S X1JFRyhwcml2LT5pZCkpOw0KKwkJdmFsICY9IH5NVDc1M1hfTUlSUk9SX0VOKHByaXYtPmlkKTsN CisJCW10NzUzMF93cml0ZShwcml2LCBNVDc1M1hfTUlSUk9SX1JFRyhwcml2LT5pZCksIHZhbCk7 DQogCX0NCiB9DQogDQpAQCAtMTI5Myw3ICsxNjMyLDcgQEAgbXQ3NTMwX3NldHVwKHN0cnVjdCBk c2Ffc3dpdGNoICpkcykNCiAJCQkgICBQQ1JfTUFUUklYX0NMUik7DQogDQogCQlpZiAoZHNhX2lz X2NwdV9wb3J0KGRzLCBpKSkNCi0JCQltdDc1MzBfY3B1X3BvcnRfZW5hYmxlKHByaXYsIGkpOw0K KwkJCW10NzUzeF9jcHVfcG9ydF9lbmFibGUoZHMsIGkpOw0KIAkJZWxzZQ0KIAkJCW10NzUzMF9w b3J0X2Rpc2FibGUoZHMsIGkpOw0KIA0KQEAgLTEzNTEsNiArMTY5MCwxMTggQEAgbXQ3NTMwX3Nl dHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykNCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyBp bnQNCittdDc1MzFfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKQ0KK3sNCisJc3RydWN0IG10 NzUzMF9wcml2ICpwcml2ID0gZHMtPnByaXY7DQorCXN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBw Ow0KKwl1MzIgdmFsLCBpZDsNCisJaW50IHJldCwgaTsNCisNCisJLyogUmVzZXQgd2hvbGUgY2hp cCB0aHJvdWdoIGdwaW8gcGluIG9yIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzIGZvcg0KKwkgKiBk aWZmZXJlbnQgdHlwZSBvZiBoYXJkd2FyZQ0KKwkgKi8NCisJaWYgKHByaXYtPm1jbSkgew0KKwkJ cmVzZXRfY29udHJvbF9hc3NlcnQocHJpdi0+cnN0Yyk7DQorCQl1c2xlZXBfcmFuZ2UoMTAwMCwg MTEwMCk7DQorCQlyZXNldF9jb250cm9sX2RlYXNzZXJ0KHByaXYtPnJzdGMpOw0KKwl9IGVsc2Ug ew0KKwkJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtPnJlc2V0LCAwKTsNCisJCXVzbGVl cF9yYW5nZSgxMDAwLCAxMTAwKTsNCisJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChwcml2LT5y ZXNldCwgMSk7DQorCX0NCisNCisJLyogV2FpdGluZyBmb3IgTVQ3NTMwIGdvdCB0byBzdGFibGUg Ki8NCisJSU5JVF9NVDc1MzBfRFVNTVlfUE9MTCgmcCwgcHJpdiwgTVQ3NTMwX0hXVFJBUCk7DQor CXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3JlYWQsICZwLCB2YWwsIHZhbCAhPSAw LA0KKwkJCQkgMjAsIDEwMDAwMDApOw0KKwlpZiAocmV0IDwgMCkgew0KKwkJZGV2X2Vycihwcml2 LT5kZXYsICJyZXNldCB0aW1lb3V0XG4iKTsNCisJCXJldHVybiByZXQ7DQorCX0NCisNCisJaWQg PSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfQ1JFVik7DQorCWlkID4+PSBDSElQX05BTUVfU0hJ RlQ7DQorDQorCWlmIChpZCAhPSBNVDc1MzFfSUQpIHsNCisJCWRldl9lcnIocHJpdi0+ZGV2LCAi Y2hpcCAleCBjYW4ndCBiZSBzdXBwb3J0ZWRcbiIsIGlkKTsNCisJCXJldHVybiAtRU5PREVWOw0K Kwl9DQorDQorCS8qIFJlc2V0IHRoZSBzd2l0Y2ggdGhyb3VnaCBpbnRlcm5hbCByZXNldCAqLw0K KwltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX1NZU19DVFJMLA0KKwkJICAgICBTWVNfQ1RSTF9Q SFlfUlNUIHwgU1lTX0NUUkxfU1dfUlNUIHwNCisJCSAgICAgU1lTX0NUUkxfUkVHX1JTVCk7DQor DQorCWlmIChtdDc1MzFfZHVhbF9zZ21paV9zdXBwb3J0ZWQocHJpdikpIHsNCisJCXByaXYtPnA1 X2ludGZfc2VsID0gUDVfSU5URl9TRUxfR01BQzVfU0dNSUk7DQorDQorCQkvKiBMZXQgZHMtPnNs YXZlX21paV9idXMgYmUgYWJsZSB0byBhY2Nlc3MgZXh0ZXJuYWwgcGh5LiAqLw0KKwkJbXQ3NTMw X3Jtdyhwcml2LCBNVDc1MzFfR1BJT19NT0RFMSwgTVQ3NTMxX0dQSU8xMV9SR19SWEQyX01BU0ss DQorCQkJICAgTVQ3NTMxX0VYVF9QX01EQ18xMSk7DQorCQltdDc1MzBfcm13KHByaXYsIE1UNzUz MV9HUElPX01PREUxLCBNVDc1MzFfR1BJTzEyX1JHX1JYRDNfTUFTSywNCisJCQkgICBNVDc1MzFf RVhUX1BfTURJT18xMik7DQorCX0gZWxzZSB7DQorCQlwcml2LT5wNV9pbnRmX3NlbCA9IFA1X0lO VEZfU0VMX0dNQUM1Ow0KKwl9DQorCWRldl9kYmcoZHMtPmRldiwgIlA1IHN1cHBvcnQgJXMgaW50 ZXJmYWNlXG4iLA0KKwkJcDVfaW50Zl9tb2Rlcyhwcml2LT5wNV9pbnRmX3NlbCkpOw0KKw0KKwlt dDc1MzBfcm13KHByaXYsIE1UNzUzMV9HUElPX01PREUwLCBNVDc1MzFfR1BJTzBfTUFTSywNCisJ CSAgIE1UNzUzMV9HUElPMF9JTlRFUlJVUFQpOw0KKw0KKwkvKiBMZXQgcGh5bGluayBkZWNpZGUg dGhlIGludGVyZmFjZSBsYXRlci4gKi8NCisJcHJpdi0+cDVfaW50ZXJmYWNlID0gUEhZX0lOVEVS RkFDRV9NT0RFX05BOw0KKwlwcml2LT5wNl9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVf TkE7DQorDQorCS8qIEVuYWJsZSBQSFkgY29yZSBQTEwsIHNpbmNlIHBoeV9kZXZpY2UgaGFzIG5v dCB5ZXQgYmVlbiBjcmVhdGVkDQorCSAqIHByb3ZpZGVkIGZvciBwaHlfW3JlYWQsd3JpdGVdX21t ZF9pbmRpcmVjdCBpcyBjYWxsZWQsIHdlIHByb3ZpZGUNCisJICogb3VyIG93biBtdDc1MzFfaW5k X21tZF9waHlfW3JlYWQsd3JpdGVdIHRvIGNvbXBsZXRlIHRoaXMNCisJICogZnVuY3Rpb24uDQor CSAqLw0KKwl2YWwgPSBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChwcml2LCBNVDc1M1hfQ1RSTF9Q SFlfQUREUiwNCisJCQkJICAgICAgTURJT19NTURfVkVORDIsIENPUkVfUExMX0dST1VQNCk7DQor CXZhbCB8PSBNVDc1MzFfUEhZX1BMTF9CWVBBU1NfTU9ERTsNCisJdmFsICY9IH5NVDc1MzFfUEhZ X1BMTF9PRkY7DQorCW10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShwcml2LCBNVDc1M1hfQ1RSTF9Q SFlfQUREUiwgTURJT19NTURfVkVORDIsDQorCQkJCSBDT1JFX1BMTF9HUk9VUDQsIHZhbCk7DQor DQorCS8qIEJQRFUgdG8gQ1BVIHBvcnQgKi8NCisJbXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzFfQ0ZD LCBNVDc1MzFfQ1BVX1BNQVBfTUFTSywNCisJCSAgIEJJVChNVDc1MzBfQ1BVX1BPUlQpKTsNCisJ bXQ3NTMwX3Jtdyhwcml2LCBNVDc1M1hfQlBDLCBNVDc1M1hfQlBEVV9QT1JUX0ZXX01BU0ssDQor CQkgICBNVDc1M1hfQlBEVV9DUFVfT05MWSk7DQorDQorCS8qIEVuYWJsZSBhbmQgcmVzZXQgTUlC IGNvdW50ZXJzICovDQorCW10NzUzMF9taWJfcmVzZXQoZHMpOw0KKw0KKwlmb3IgKGkgPSAwOyBp IDwgTVQ3NTMwX05VTV9QT1JUUzsgaSsrKSB7DQorCQkvKiBEaXNhYmxlIGZvcndhcmRpbmcgYnkg ZGVmYXVsdCBvbiBhbGwgcG9ydHMgKi8NCisJCW10NzUzMF9ybXcocHJpdiwgTVQ3NTMwX1BDUl9Q KGkpLCBQQ1JfTUFUUklYX01BU0ssDQorCQkJICAgUENSX01BVFJJWF9DTFIpOw0KKw0KKwkJbXQ3 NTMwX3NldChwcml2LCBNVDc1MzFfREJHX0NOVChpKSwgTVQ3NTMxX0RJU19DTFIpOw0KKw0KKwkJ aWYgKGRzYV9pc19jcHVfcG9ydChkcywgaSkpDQorCQkJbXQ3NTN4X2NwdV9wb3J0X2VuYWJsZShk cywgaSk7DQorCQllbHNlDQorCQkJbXQ3NTMwX3BvcnRfZGlzYWJsZShkcywgaSk7DQorDQorCQkv KiBFbmFibGUgY29uc2lzdGVudCBlZ3Jlc3MgdGFnICovDQorCQltdDc1MzBfcm13KHByaXYsIE1U NzUzMF9QVkNfUChpKSwgUFZDX0VHX1RBR19NQVNLLA0KKwkJCSAgIFBWQ19FR19UQUcoTVQ3NTMw X1ZMQU5fRUdfQ09OU0lTVEVOVCkpOw0KKwl9DQorDQorCWRzLT5jb25maWd1cmVfdmxhbl93aGls ZV9ub3RfZmlsdGVyaW5nID0gdHJ1ZTsNCisNCisJLyogRmx1c2ggdGhlIEZEQiB0YWJsZSAqLw0K KwlyZXQgPSBtdDc1MzBfZmRiX2NtZChwcml2LCBNVDc1MzBfRkRCX0ZMVVNILCBOVUxMKTsNCisJ aWYgKHJldCA8IDApDQorCQlyZXR1cm4gcmV0Ow0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQogc3Rh dGljIGJvb2wNCiBtdDc1MzBfcGh5X21vZGVfc3VwcG9ydGVkKHN0cnVjdCBkc2Ffc3dpdGNoICpk cywgaW50IHBvcnQsDQogCQkJICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0 ZSkNCkBAIC0xMzgyLDYgKzE4MzMsNDAgQEAgbXQ3NTMwX3BoeV9tb2RlX3N1cHBvcnRlZChzdHJ1 Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAlyZXR1cm4gdHJ1ZTsNCiB9DQogDQorc3Rh dGljIGJvb2wgbXQ3NTMxX2lzX3JnbWlpX3BvcnQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1 MzIgcG9ydCkNCit7DQorCXJldHVybiAocG9ydCA9PSA1KSAmJiAocHJpdi0+cDVfaW50Zl9zZWwg IT0gUDVfSU5URl9TRUxfR01BQzVfU0dNSUkpOw0KK30NCisNCitzdGF0aWMgYm9vbA0KK210NzUz MV9waHlfbW9kZV9zdXBwb3J0ZWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCisJ CQkgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKQ0KK3sNCisJc3RydWN0 IG10NzUzMF9wcml2ICpwcml2ID0gZHMtPnByaXY7DQorDQorCXN3aXRjaCAocG9ydCkgew0KKwlj YXNlIDAgLi4uIDQ6IC8qIEludGVybmFsIHBoeSAqLw0KKwkJaWYgKHN0YXRlLT5pbnRlcmZhY2Ug IT0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUkpDQorCQkJcmV0dXJuIGZhbHNlOw0KKwkJYnJlYWs7 DQorCWNhc2UgNTogLyogMm5kIGNwdSBwb3J0IHN1cHBvcnRzIGVpdGhlciByZ21paSBvciBzZ21p aS84MDIzeiAqLw0KKwkJaWYgKG10NzUzMV9pc19yZ21paV9wb3J0KHByaXYsIHBvcnQpKQ0KKwkJ CXJldHVybiBwaHlfaW50ZXJmYWNlX21vZGVfaXNfcmdtaWkoc3RhdGUtPmludGVyZmFjZSk7DQor CQlmYWxsdGhyb3VnaDsNCisJY2FzZSA2OiAvKiAxc3QgY3B1IHBvcnQgc3VwcG9ydHMgc2dtaWkv ODAyM3ogb25seSAqLw0KKwkJaWYgKHN0YXRlLT5pbnRlcmZhY2UgIT0gUEhZX0lOVEVSRkFDRV9N T0RFX1NHTUlJICYmDQorCQkgICAgIXBoeV9pbnRlcmZhY2VfbW9kZV9pc184MDIzeihzdGF0ZS0+ aW50ZXJmYWNlKSkNCisJCQlyZXR1cm4gZmFsc2U7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJ CWRldl9lcnIocHJpdi0+ZGV2LCAiJXM6IHVuc3VwcG9ydGVkIHBvcnQ6ICVpXG4iLCBfX2Z1bmNf XywNCisJCQlwb3J0KTsNCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwlyZXR1cm4gdHJ1ZTsN Cit9DQorDQogc3RhdGljIGJvb2wNCiBtdDc1M3hfcGh5X21vZGVfc3VwcG9ydGVkKHN0cnVjdCBk c2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQogCQkJICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5r X3N0YXRlICpzdGF0ZSkNCkBAIC0xNDE0LDYgKzE4OTksMjI3IEBAIG10NzUzMF9tYWNfY29uZmln KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVuc2lnbmVkIGludCBtb2RlLA0KIAly ZXR1cm4gMDsNCiB9DQogDQorc3RhdGljIGludCBtdDc1MzFfcmdtaWlfc2V0dXAoc3RydWN0IG10 NzUzMF9wcml2ICpwcml2LCB1MzIgcG9ydCwNCisJCQkgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50 ZXJmYWNlLA0KKwkJCSAgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpDQorew0KKwl1MzIg dmFsOw0KKw0KKwlpZiAoIW10NzUzMV9pc19yZ21paV9wb3J0KHByaXYsIHBvcnQpKSB7DQorCQlk ZXZfZXJyKHByaXYtPmRldiwgIlJHTUlJIG1vZGUgaXMgbm90IGF2YWlsYWJsZSBmb3IgcG9ydCAl ZFxuIiwNCisJCQlwb3J0KTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCXZhbCA9IG10 NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9DTEtHRU5fQ1RSTCk7DQorCXZhbCB8PSBHUF9DTEtfRU47 DQorCXZhbCAmPSB+R1BfTU9ERV9NQVNLOw0KKwl2YWwgfD0gR1BfTU9ERShNVDc1MzFfR1BfTU9E RV9SR01JSSk7DQorCXZhbCAmPSB+Q0xLX1NLRVdfSU5fTUFTSzsNCisJdmFsIHw9IENMS19TS0VX X0lOKE1UNzUzMV9DTEtfU0tFV19OT19DSEcpOw0KKwl2YWwgJj0gfkNMS19TS0VXX09VVF9NQVNL Ow0KKwl2YWwgfD0gQ0xLX1NLRVdfT1VUKE1UNzUzMV9DTEtfU0tFV19OT19DSEcpOw0KKwl2YWwg fD0gVFhDTEtfTk9fUkVWRVJTRSB8IFJYQ0xLX05PX0RFTEFZOw0KKw0KKwkvKiBEbyBub3QgYWRq dXN0IHJnbWlpIGRlbGF5IHdoZW4gdmVuZG9yIHBoeSBkcml2ZXIgcHJlc2VudHMuICovDQorCWlm ICghcGh5ZGV2IHx8IHBoeV9kcml2ZXJfaXNfZ2VucGh5KHBoeWRldikpIHsNCisJCXZhbCAmPSB+ KFRYQ0xLX05PX1JFVkVSU0UgfCBSWENMS19OT19ERUxBWSk7DQorCQlzd2l0Y2ggKGludGVyZmFj ZSkgew0KKwkJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6DQorCQkJdmFsIHw9IFRYQ0xL X05PX1JFVkVSU0U7DQorCQkJdmFsIHw9IFJYQ0xLX05PX0RFTEFZOw0KKwkJCWJyZWFrOw0KKwkJ Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDoNCisJCQl2YWwgfD0gVFhDTEtfTk9f UkVWRVJTRTsNCisJCQlicmVhazsNCisJCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RY SUQ6DQorCQkJdmFsIHw9IFJYQ0xLX05PX0RFTEFZOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBQSFlf SU5URVJGQUNFX01PREVfUkdNSUlfSUQ6DQorCQkJYnJlYWs7DQorCQlkZWZhdWx0Og0KKwkJCXJl dHVybiAtRUlOVkFMOw0KKwkJfQ0KKwl9DQorCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFfQ0xL R0VOX0NUUkwsIHZhbCk7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBtdDc1 MzFfc2dtaWlfdmFsaWRhdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwNCisJ CQkJICB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQpDQorew0KKwkvKiBQb3J0NSBzdXBwb3J0cyBl dGhpZXIgUkdNSUkgb3IgU0dNSUkuDQorCSAqIFBvcnQ2IHN1cHBvcnRzIFNHTUlJIG9ubHkuDQor CSAqLw0KKwlzd2l0Y2ggKHBvcnQpIHsNCisJY2FzZSA1Og0KKwkJaWYgKG10NzUzMV9pc19yZ21p aV9wb3J0KHByaXYsIHBvcnQpKQ0KKwkJCWJyZWFrOw0KKwkJZmFsbHRocm91Z2g7DQorCWNhc2Ug NjoNCisJCXBoeWxpbmtfc2V0KHN1cHBvcnRlZCwgMTAwMGJhc2VYX0Z1bGwpOw0KKwkJcGh5bGlu a19zZXQoc3VwcG9ydGVkLCAyNTAwYmFzZVhfRnVsbCk7DQorCQlwaHlsaW5rX3NldChzdXBwb3J0 ZWQsIDI1MDBiYXNlVF9GdWxsKTsNCisJfQ0KK30NCisNCitzdGF0aWMgdm9pZA0KK210NzUzMV9z Z21paV9saW5rX3VwX2ZvcmNlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQorCQkJ ICAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsDQorCQkJICAg aW50IHNwZWVkLCBpbnQgZHVwbGV4KQ0KK3sNCisJc3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0g ZHMtPnByaXY7DQorCXVuc2lnbmVkIGludCB2YWw7DQorDQorCS8qIEZvciBhZGp1c3Rpbmcgc3Bl ZWQgYW5kIGR1cGxleCBvZiBTR01JSSBmb3JjZSBtb2RlLiAqLw0KKwlpZiAoaW50ZXJmYWNlICE9 IFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSB8fA0KKwkgICAgcGh5bGlua19hdXRvbmVnX2luYmFu ZChtb2RlKSkNCisJCXJldHVybjsNCisNCisJLyogU0dNSUkgZm9yY2UgbW9kZSBzZXR0aW5nICov DQorCXZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMV9TR01JSV9NT0RFKHBvcnQpKTsNCisJ dmFsICY9IH5NVDc1MzFfU0dNSUlfSUZfTU9ERV9NQVNLOw0KKw0KKwlzd2l0Y2ggKHNwZWVkKSB7 DQorCWNhc2UgU1BFRURfMTA6DQorCQl2YWwgfD0gTVQ3NTMxX1NHTUlJX0ZPUkNFX1NQRUVEXzEw Ow0KKwkJYnJlYWs7DQorCWNhc2UgU1BFRURfMTAwOg0KKwkJdmFsIHw9IE1UNzUzMV9TR01JSV9G T1JDRV9TUEVFRF8xMDA7DQorCQlicmVhazsNCisJY2FzZSBTUEVFRF8xMDAwOg0KKwkJdmFsIHw9 IE1UNzUzMV9TR01JSV9GT1JDRV9TUEVFRF8xMDAwOw0KKwkJYnJlYWs7DQorCX0NCisNCisJLyog TVQ3NTMxIFNHTUlJIDFHIGZvcmNlIG1vZGUgY2FuIG9ubHkgd29yayBpbiBmdWxsIGR1cGxleCBt b2RlLA0KKwkgKiBubyBtYXR0ZXIgTVQ3NTMxX1NHTUlJX0ZPUkNFX0hBTEZfRFVQTEVYIGlzIHNl dCBvciBub3QuDQorCSAqLw0KKwlpZiAoKHNwZWVkID09IFNQRUVEXzEwIHx8IHNwZWVkID09IFNQ RUVEXzEwMCkgJiYNCisJICAgIGR1cGxleCAhPSBEVVBMRVhfRlVMTCkNCisJCXZhbCB8PSBNVDc1 MzFfU0dNSUlfRk9SQ0VfSEFMRl9EVVBMRVg7DQorDQorCW10NzUzMF93cml0ZShwcml2LCBNVDc1 MzFfU0dNSUlfTU9ERShwb3J0KSwgdmFsKTsNCit9DQorDQorc3RhdGljIGJvb2wgbXQ3NTN4X2lz X21hY19wb3J0KHUzMiBwb3J0KQ0KK3sNCisJcmV0dXJuIChwb3J0ID09IDUgfHwgcG9ydCA9PSA2 KTsNCit9DQorDQorc3RhdGljIGludCBtdDc1MzFfc2dtaWlfc2V0dXBfbW9kZV9mb3JjZShzdHJ1 Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiBwb3J0LA0KKwkJCQkJIHBoeV9pbnRlcmZhY2VfdCBp bnRlcmZhY2UpDQorew0KKwl1MzIgdmFsOw0KKw0KKwlpZiAoIW10NzUzeF9pc19tYWNfcG9ydChw b3J0KSkNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwltdDc1MzBfc2V0KHByaXYsIE1UNzUzMV9R UEhZX1BXUl9TVEFURV9DVFJMKHBvcnQpLA0KKwkJICAgTVQ3NTMxX1NHTUlJX1BIWUFfUFdEKTsN CisNCisJdmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BIWUFfQ1RSTF9TSUdOQUwzKHBv cnQpKTsNCisJdmFsICY9IH5NVDc1MzFfUkdfVFBIWV9TUEVFRF9NQVNLOw0KKwkvKiBTZXR1cCAy LjUgdGltZXMgZmFzdGVyIGNsb2NrIGZvciAyLjVHYnBzIGRhdGEgc3BlZWRzIHdpdGggMTBCLzhC DQorCSAqIGVuY29kaW5nLg0KKwkgKi8NCisJdmFsIHw9IChpbnRlcmZhY2UgPT0gUEhZX0lOVEVS RkFDRV9NT0RFXzI1MDBCQVNFWCkgPw0KKwkJTVQ3NTMxX1JHX1RQSFlfU1BFRURfM18xMjVHIDog TVQ3NTMxX1JHX1RQSFlfU1BFRURfMV8yNUc7DQorCW10NzUzMF93cml0ZShwcml2LCBNVDc1MzFf UEhZQV9DVFJMX1NJR05BTDMocG9ydCksIHZhbCk7DQorDQorCW10NzUzMF9jbGVhcihwcml2LCBN VDc1MzFfUENTX0NPTlRST0xfMShwb3J0KSwgTVQ3NTMxX1NHTUlJX0FOX0VOQUJMRSk7DQorDQor CS8qIE1UNzUzMSBTR01JSSAxRyBhbmQgMi41RyBmb3JjZSBtb2RlIGNhbiBvbmx5IHdvcmsgaW4g ZnVsbCBkdXBsZXgNCisJICogbW9kZSwgbm8gbWF0dGVyIE1UNzUzMV9TR01JSV9GT1JDRV9IQUxG X0RVUExFWCBpcyBzZXQgb3Igbm90Lg0KKwkgKi8NCisJbXQ3NTMwX3Jtdyhwcml2LCBNVDc1MzFf U0dNSUlfTU9ERShwb3J0KSwNCisJCSAgIE1UNzUzMV9TR01JSV9JRl9NT0RFX01BU0sgfCBNVDc1 MzFfU0dNSUlfUkVNT1RFX0ZBVUxUX0RJUywNCisJCSAgIE1UNzUzMV9TR01JSV9GT1JDRV9TUEVF RF8xMDAwKTsNCisNCisJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMV9RUEhZX1BXUl9TVEFURV9D VFJMKHBvcnQpLCAwKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXQ3NTMx X3NnbWlpX3NldHVwX21vZGVfYW4oc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwN CisJCQkJICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkNCit7DQorCWlmICghbXQ3NTN4 X2lzX21hY19wb3J0KHBvcnQpKQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQorDQorCW10NzUzMF9zZXQo cHJpdiwgTVQ3NTMxX1FQSFlfUFdSX1NUQVRFX0NUUkwocG9ydCksDQorCQkgICBNVDc1MzFfU0dN SUlfUEhZQV9QV0QpOw0KKw0KKwltdDc1MzBfcm13KHByaXYsIE1UNzUzMV9QSFlBX0NUUkxfU0lH TkFMMyhwb3J0KSwNCisJCSAgIE1UNzUzMV9SR19UUEhZX1NQRUVEX01BU0ssIE1UNzUzMV9SR19U UEhZX1NQRUVEXzFfMjVHKTsNCisNCisJbXQ3NTMwX3NldChwcml2LCBNVDc1MzFfU0dNSUlfTU9E RShwb3J0KSwNCisJCSAgIE1UNzUzMV9TR01JSV9SRU1PVEVfRkFVTFRfRElTIHwNCisJCSAgIE1U NzUzMV9TR01JSV9TUEVFRF9EVVBMRVhfQU4pOw0KKw0KKwltdDc1MzBfcm13KHByaXYsIE1UNzUz MV9QQ1NfU1BFRURfQUJJTElUWShwb3J0KSwNCisJCSAgIE1UNzUzMV9TR01JSV9UWF9DT05GSUdf TUFTSywgMSk7DQorDQorCW10NzUzMF9zZXQocHJpdiwgTVQ3NTMxX1BDU19DT05UUk9MXzEocG9y dCksIE1UNzUzMV9TR01JSV9BTl9FTkFCTEUpOw0KKw0KKwltdDc1MzBfc2V0KHByaXYsIE1UNzUz MV9QQ1NfQ09OVFJPTF8xKHBvcnQpLCBNVDc1MzFfU0dNSUlfQU5fUkVTVEFSVCk7DQorDQorCW10 NzUzMF93cml0ZShwcml2LCBNVDc1MzFfUVBIWV9QV1JfU1RBVEVfQ1RSTChwb3J0KSwgMCk7DQor DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBtdDc1MzFfc2dtaWlfcmVzdGFydF9h bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KQ0KK3sNCisJc3RydWN0IG10NzUzMF9w cml2ICpwcml2ID0gZHMtPnByaXY7DQorCXUzMiB2YWw7DQorDQorCS8qIE9ubHkgcmVzdGFydCBB TiB3aGVuIEFOIGlzIGVuYWJsZWQgKi8NCisJdmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMx X1BDU19DT05UUk9MXzEocG9ydCkpOw0KKwlpZiAodmFsICYgTVQ3NTMxX1NHTUlJX0FOX0VOQUJM RSkgew0KKwkJdmFsIHw9IE1UNzUzMV9TR01JSV9BTl9SRVNUQVJUOw0KKwkJbXQ3NTMwX3dyaXRl KHByaXYsIE1UNzUzMV9QQ1NfQ09OVFJPTF8xKHBvcnQpLCB2YWwpOw0KKwl9DQorfQ0KKw0KK3N0 YXRpYyBpbnQNCittdDc1MzFfbWFjX2NvbmZpZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBw b3J0LCB1bnNpZ25lZCBpbnQgbW9kZSwNCisJCSAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkN Cit7DQorCXN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLT5wcml2Ow0KKwlzdHJ1Y3QgcGh5 X2RldmljZSAqcGh5ZGV2Ow0KKwlzdHJ1Y3QgZHNhX3BvcnQgKmRwOw0KKw0KKwlpZiAoIW10NzUz eF9pc19tYWNfcG9ydChwb3J0KSkgew0KKwkJZGV2X2Vycihwcml2LT5kZXYsICJwb3J0ICVkIGlz IG5vdCBhIE1BQyBwb3J0XG4iLCBwb3J0KTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQor CXN3aXRjaCAoaW50ZXJmYWNlKSB7DQorCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOg0K KwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDoNCisJY2FzZSBQSFlfSU5URVJGQUNF X01PREVfUkdNSUlfUlhJRDoNCisJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDoN CisJCWRwID0gZHNhX3RvX3BvcnQoZHMsIHBvcnQpOw0KKwkJcGh5ZGV2ID0gZHAtPnNsYXZlLT5w aHlkZXY7DQorCQlyZXR1cm4gbXQ3NTMxX3JnbWlpX3NldHVwKHByaXYsIHBvcnQsIGludGVyZmFj ZSwgcGh5ZGV2KTsNCisJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6DQorCQlyZXR1cm4g bXQ3NTMxX3NnbWlpX3NldHVwX21vZGVfYW4ocHJpdiwgcG9ydCwgaW50ZXJmYWNlKTsNCisJY2Fz ZSBQSFlfSU5URVJGQUNFX01PREVfTkE6DQorCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBC QVNFWDoNCisJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOg0KKwkJaWYgKHBoeWxp bmtfYXV0b25lZ19pbmJhbmQobW9kZSkpDQorCQkJcmV0dXJuIC1FSU5WQUw7DQorDQorCQlyZXR1 cm4gbXQ3NTMxX3NnbWlpX3NldHVwX21vZGVfZm9yY2UocHJpdiwgcG9ydCwgaW50ZXJmYWNlKTsN CisJZGVmYXVsdDoNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCXJldHVybiAtRUlOVkFM Ow0KK30NCisNCiBzdGF0aWMgaW50DQogbXQ3NTN4X21hY19jb25maWcoc3RydWN0IGRzYV9zd2l0 Y2ggKmRzLCBpbnQgcG9ydCwgdW5zaWduZWQgaW50IG1vZGUsDQogCQkgIGNvbnN0IHN0cnVjdCBw aHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKQ0KQEAgLTE0NDUsNiArMjE1MSw4IEBAIG10NzUzeF9w aHlsaW5rX21hY19jb25maWcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdW5zaWdu ZWQgaW50IG1vZGUsDQogCQlpZiAobXQ3NTN4X21hY19jb25maWcoZHMsIHBvcnQsIG1vZGUsIHN0 YXRlKSA8IDApDQogCQkJZ290byB1bnN1cHBvcnRlZDsNCiANCisJCWlmIChwcml2LT5wNV9pbnRm X3NlbCAhPSBQNV9ESVNBQkxFRCkNCisJCQlwcml2LT5wNV9pbnRlcmZhY2UgPSBzdGF0ZS0+aW50 ZXJmYWNlOw0KIAkJYnJlYWs7DQogCWNhc2UgNjogLyogMXN0IGNwdSBwb3J0ICovDQogCQlpZiAo cHJpdi0+cDZfaW50ZXJmYWNlID09IHN0YXRlLT5pbnRlcmZhY2UpDQpAQCAtMTQ2NCw3ICsyMTcy LDggQEAgbXQ3NTN4X3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGlu dCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSwNCiAJCXJldHVybjsNCiAJfQ0KIA0KLQlpZiAocGh5 bGlua19hdXRvbmVnX2luYmFuZChtb2RlKSkgew0KKwlpZiAocGh5bGlua19hdXRvbmVnX2luYmFu ZChtb2RlKSAmJg0KKwkgICAgc3RhdGUtPmludGVyZmFjZSAhPSBQSFlfSU5URVJGQUNFX01PREVf U0dNSUkpIHsNCiAJCWRldl9lcnIoZHMtPmRldiwgIiVzOiBpbi1iYW5kIG5lZ290aWF0aW9uIHVu c3VwcG9ydGVkXG4iLA0KIAkJCV9fZnVuY19fKTsNCiAJCXJldHVybjsNCkBAIC0xNDc0LDcgKzIx ODMsNyBAQCBtdDc1M3hfcGh5bGlua19tYWNfY29uZmlnKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywg aW50IHBvcnQsIHVuc2lnbmVkIGludCBtb2RlLA0KIAltY3JfbmV3ID0gbWNyX2N1cjsNCiAJbWNy X25ldyAmPSB+UE1DUl9MSU5LX1NFVFRJTkdTX01BU0s7DQogCW1jcl9uZXcgfD0gUE1DUl9JRkdf WE1JVCgxKSB8IFBNQ1JfTUFDX01PREUgfCBQTUNSX0JBQ0tPRkZfRU4gfA0KLQkJICAgUE1DUl9C QUNLUFJfRU4gfCBQTUNSX0ZPUkNFX01PREU7DQorCQkgICBQTUNSX0JBQ0tQUl9FTiB8IFBNQ1Jf Rk9SQ0VfTU9ERV9JRChwcml2LT5pZCk7DQogDQogCS8qIEFyZSB3ZSBjb25uZWN0ZWQgdG8gZXh0 ZXJuYWwgcGh5ICovDQogCWlmIChwb3J0ID09IDUgJiYgZHNhX2lzX3VzZXJfcG9ydChkcywgNSkp DQpAQCAtMTQ4NCw3ICsyMTkzLDE4IEBAIG10NzUzeF9waHlsaW5rX21hY19jb25maWcoc3RydWN0 IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdW5zaWduZWQgaW50IG1vZGUsDQogCQltdDc1MzBf d3JpdGUocHJpdiwgTVQ3NTMwX1BNQ1JfUChwb3J0KSwgbWNyX25ldyk7DQogfQ0KIA0KLXN0YXRp YyB2b2lkIG10NzUzMF9waHlsaW5rX21hY19saW5rX2Rvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRz LCBpbnQgcG9ydCwNCitzdGF0aWMgdm9pZA0KK210NzUzeF9waHlsaW5rX21hY19hbl9yZXN0YXJ0 KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpDQorew0KKwlzdHJ1Y3QgbXQ3NTMwX3By aXYgKnByaXYgPSBkcy0+cHJpdjsNCisNCisJaWYgKCFwcml2LT5pbmZvLT5tYWNfcGNzX2FuX3Jl c3RhcnQpDQorCQlyZXR1cm47DQorDQorCXByaXYtPmluZm8tPm1hY19wY3NfYW5fcmVzdGFydChk cywgcG9ydCk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG10NzUzeF9waHlsaW5rX21hY19saW5rX2Rv d24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJCQkJCSB1bnNpZ25lZCBpbnQg bW9kZSwNCiAJCQkJCSBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKQ0KIHsNCkBAIC0xNDkzLDcg KzIyMTMsMTkgQEAgc3RhdGljIHZvaWQgbXQ3NTMwX3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1 Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LA0KIAltdDc1MzBfY2xlYXIocHJpdiwgTVQ3NTMw X1BNQ1JfUChwb3J0KSwgUE1DUl9MSU5LX1NFVFRJTkdTX01BU0spOw0KIH0NCiANCi1zdGF0aWMg dm9pZCBtdDc1MzBfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGlu dCBwb3J0LA0KK3N0YXRpYyB2b2lkIG10NzUzeF9tYWNfcGNzX2xpbmtfdXAoc3RydWN0IGRzYV9z d2l0Y2ggKmRzLCBpbnQgcG9ydCwNCisJCQkJICAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRl cmZhY2VfdCBpbnRlcmZhY2UsDQorCQkJCSAgIGludCBzcGVlZCwgaW50IGR1cGxleCkNCit7DQor CXN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiA9IGRzLT5wcml2Ow0KKw0KKwlpZiAoIXByaXYtPmlu Zm8tPm1hY19wY3NfbGlua191cCkNCisJCXJldHVybjsNCisNCisJcHJpdi0+aW5mby0+bWFjX3Bj c19saW5rX3VwKGRzLCBwb3J0LCBtb2RlLCBpbnRlcmZhY2UsIHNwZWVkLCBkdXBsZXgpOw0KK30N CisNCitzdGF0aWMgdm9pZCBtdDc1M3hfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgZHNhX3N3 aXRjaCAqZHMsIGludCBwb3J0LA0KIAkJCQkgICAgICAgdW5zaWduZWQgaW50IG1vZGUsDQogCQkJ CSAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLA0KIAkJCQkgICAgICAgc3RydWN0IHBo eV9kZXZpY2UgKnBoeWRldiwNCkBAIC0xNTAzLDggKzIyMzUsMTkgQEAgc3RhdGljIHZvaWQgbXQ3 NTMwX3BoeWxpbmtfbWFjX2xpbmtfdXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwN CiAJc3RydWN0IG10NzUzMF9wcml2ICpwcml2ID0gZHMtPnByaXY7DQogCXUzMiBtY3I7DQogDQor CW10NzUzeF9tYWNfcGNzX2xpbmtfdXAoZHMsIHBvcnQsIG1vZGUsIGludGVyZmFjZSwgc3BlZWQs IGR1cGxleCk7DQorDQogCW1jciA9IFBNQ1JfUlhfRU4gfCBQTUNSX1RYX0VOIHwgUE1DUl9GT1JD RV9MTks7DQogDQorCS8qIE1UNzUzeCBNQUMgd29ya3MgaW4gMUcgZnVsbCBkdXBsZXggbW9kZSBm b3IgYWxsIHVwLWNsb2NrZWQNCisJICogdmFyaWFudHMuDQorCSAqLw0KKwlpZiAoaW50ZXJmYWNl ID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9UUkdNSUkgfHwNCisJICAgIChwaHlfaW50ZXJmYWNlX21v ZGVfaXNfODAyM3ooaW50ZXJmYWNlKSkpIHsNCisJCXNwZWVkID0gU1BFRURfMTAwMDsNCisJCWR1 cGxleCA9IERVUExFWF9GVUxMOw0KKwl9DQorDQogCXN3aXRjaCAoc3BlZWQpIHsNCiAJY2FzZSBT UEVFRF8xMDAwOg0KIAkJbWNyIHw9IFBNQ1JfRk9SQ0VfU1BFRURfMTAwMDsNCkBAIC0xNTI0LDYg KzIyNjcsNDUgQEAgc3RhdGljIHZvaWQgbXQ3NTMwX3BoeWxpbmtfbWFjX2xpbmtfdXAoc3RydWN0 IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJbXQ3NTMwX3NldChwcml2LCBNVDc1MzBfUE1D Ul9QKHBvcnQpLCBtY3IpOw0KIH0NCiANCitzdGF0aWMgaW50DQorbXQ3NTMxX2NwdV9wb3J0X2Nv bmZpZyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KQ0KK3sNCisJc3RydWN0IG10NzUz MF9wcml2ICpwcml2ID0gZHMtPnByaXY7DQorCXBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2U7DQor CWludCBzcGVlZDsNCisNCisJc3dpdGNoIChwb3J0KSB7DQorCWNhc2UgNToNCisJCWlmIChtdDc1 MzFfaXNfcmdtaWlfcG9ydChwcml2LCBwb3J0KSkNCisJCQlpbnRlcmZhY2UgPSBQSFlfSU5URVJG QUNFX01PREVfUkdNSUk7DQorCQllbHNlDQorCQkJaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9N T0RFXzI1MDBCQVNFWDsNCisNCisJCXByaXYtPnA1X2ludGVyZmFjZSA9IGludGVyZmFjZTsNCisJ CWJyZWFrOw0KKwljYXNlIDY6DQorCQlpbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfMjUw MEJBU0VYOw0KKw0KKwkJbXQ3NTMxX3BhZF9zZXR1cChkcywgaW50ZXJmYWNlKTsNCisNCisJCXBy aXYtPnA2X2ludGVyZmFjZSA9IGludGVyZmFjZTsNCisJCWJyZWFrOw0KKwl9DQorDQorCWlmIChp bnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCkNCisJCXNwZWVkID0gU1BF RURfMjUwMDsNCisJZWxzZQ0KKwkJc3BlZWQgPSBTUEVFRF8xMDAwOw0KKw0KKwltdDc1MzFfbWFj X2NvbmZpZyhkcywgcG9ydCwgTUxPX0FOX0ZJWEVELCBpbnRlcmZhY2UpOw0KKwltdDc1MzBfd3Jp dGUocHJpdiwgTVQ3NTMwX1BNQ1JfUChwb3J0KSwNCisJCSAgICAgUE1DUl9DUFVfUE9SVF9TRVRU SU5HKHByaXYtPmlkKSk7DQorCW10NzUzeF9waHlsaW5rX21hY19saW5rX3VwKGRzLCBwb3J0LCBN TE9fQU5fRklYRUQsIGludGVyZmFjZSwgTlVMTCwNCisJCQkJICAgc3BlZWQsIERVUExFWF9GVUxM LCB0cnVlLCB0cnVlKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyB2b2lkDQogbXQ3 NTMwX21hY19wb3J0X3ZhbGlkYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQog CQkJIHVuc2lnbmVkIGxvbmcgKnN1cHBvcnRlZCkNCkBAIC0xNTMyLDYgKzIzMTQsMTQgQEAgbXQ3 NTMwX21hY19wb3J0X3ZhbGlkYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQog CQlwaHlsaW5rX3NldChzdXBwb3J0ZWQsIDEwMDBiYXNlWF9GdWxsKTsNCiB9DQogDQorc3RhdGlj IHZvaWQgbXQ3NTMxX21hY19wb3J0X3ZhbGlkYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50 IHBvcnQsDQorCQkJCSAgICAgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkKQ0KK3sNCisJc3RydWN0 IG10NzUzMF9wcml2ICpwcml2ID0gZHMtPnByaXY7DQorDQorCW10NzUzMV9zZ21paV92YWxpZGF0 ZShwcml2LCBwb3J0LCBzdXBwb3J0ZWQpOw0KK30NCisNCiBzdGF0aWMgdm9pZA0KIG10NzUzeF9w aHlsaW5rX3ZhbGlkYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQogCQkJdW5z aWduZWQgbG9uZyAqc3VwcG9ydGVkLA0KQEAgLTE1NDgsNyArMjMzOCw4IEBAIG10NzUzeF9waHls aW5rX3ZhbGlkYXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQogDQogCXBoeWxp bmtfc2V0X3BvcnRfbW9kZXMobWFzayk7DQogDQotCWlmIChzdGF0ZS0+aW50ZXJmYWNlICE9IFBI WV9JTlRFUkZBQ0VfTU9ERV9UUkdNSUkpIHsNCisJaWYgKHN0YXRlLT5pbnRlcmZhY2UgIT0gUEhZ X0lOVEVSRkFDRV9NT0RFX1RSR01JSSB8fA0KKwkgICAgIXBoeV9pbnRlcmZhY2VfbW9kZV9pc184 MDIzeihzdGF0ZS0+aW50ZXJmYWNlKSkgew0KIAkJcGh5bGlua19zZXQobWFzaywgMTBiYXNlVF9I YWxmKTsNCiAJCXBoeWxpbmtfc2V0KG1hc2ssIDEwYmFzZVRfRnVsbCk7DQogCQlwaHlsaW5rX3Nl dChtYXNrLCAxMDBiYXNlVF9IYWxmKTsNCkBAIC0xNTY3LDYgKzIzNTgsMTEgQEAgbXQ3NTN4X3Bo eWxpbmtfdmFsaWRhdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiANCiAJbGlu a21vZGVfYW5kKHN1cHBvcnRlZCwgc3VwcG9ydGVkLCBtYXNrKTsNCiAJbGlua21vZGVfYW5kKHN0 YXRlLT5hZHZlcnRpc2luZywgc3RhdGUtPmFkdmVydGlzaW5nLCBtYXNrKTsNCisNCisJLyogV2Ug Y2FuIG9ubHkgb3BlcmF0ZSBhdCAyNTAwQmFzZVggb3IgMTAwMEJhc2VYLiAgSWYgcmVxdWVzdGVk DQorCSAqIHRvIGFkdmVydGlzZSBib3RoLCBvbmx5IHJlcG9ydCBhZHZlcnRpc2luZyBhdCAyNTAw QmFzZVguDQorCSAqLw0KKwlwaHlsaW5rX2hlbHBlcl9iYXNleF9zcGVlZChzdGF0ZSk7DQogfQ0K IA0KIHN0YXRpYyBpbnQNCkBAIC0xNjA5LDYgKzI0MDUsNTcgQEAgbXQ3NTMwX3BoeWxpbmtfbWFj X2xpbmtfc3RhdGUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJcmV0dXJuIDE7 DQogfQ0KIA0KK3N0YXRpYyBpbnQNCittdDc1MzFfc2dtaWlfcGNzX2dldF9zdGF0ZV9hbihzdHJ1 Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LA0KKwkJCSAgICAgIHN0cnVjdCBwaHlsaW5r X2xpbmtfc3RhdGUgKnN0YXRlKQ0KK3sNCisJdTMyIHN0YXR1cywgdmFsOw0KKwl1MTYgY29uZmln X3JlZzsNCisNCisJc3RhdHVzID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMxX1BDU19DT05UUk9M XzEocG9ydCkpOw0KKwlzdGF0ZS0+bGluayA9ICEhKHN0YXR1cyAmIE1UNzUzMV9TR01JSV9MSU5L X1NUQVRVUyk7DQorCWlmIChzdGF0ZS0+aW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9T R01JSSAmJg0KKwkgICAgKHN0YXR1cyAmIE1UNzUzMV9TR01JSV9BTl9FTkFCTEUpKSB7DQorCQl2 YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzFfUENTX1NQRUVEX0FCSUxJVFkocG9ydCkpOw0K KwkJY29uZmlnX3JlZyA9IHZhbCA+PiAxNjsNCisNCisJCXN3aXRjaCAoY29uZmlnX3JlZyAmIExQ QV9TR01JSV9TUERfTUFTSykgew0KKwkJY2FzZSBMUEFfU0dNSUlfMTAwMDoNCisJCQlzdGF0ZS0+ c3BlZWQgPSBTUEVFRF8xMDAwOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBMUEFfU0dNSUlfMTAwOg0K KwkJCXN0YXRlLT5zcGVlZCA9IFNQRUVEXzEwMDsNCisJCQlicmVhazsNCisJCWNhc2UgTFBBX1NH TUlJXzEwOg0KKwkJCXN0YXRlLT5zcGVlZCA9IFNQRUVEXzEwOw0KKwkJCWJyZWFrOw0KKwkJZGVm YXVsdDoNCisJCQlkZXZfZXJyKHByaXYtPmRldiwgImludmFsaWQgc2dtaWkgUEhZIHNwZWVkXG4i KTsNCisJCQlzdGF0ZS0+bGluayA9IGZhbHNlOw0KKwkJCXJldHVybiAtRUlOVkFMOw0KKwkJfQ0K Kw0KKwkJaWYgKGNvbmZpZ19yZWcgJiBMUEFfU0dNSUlfRlVMTF9EVVBMRVgpDQorCQkJc3RhdGUt PmR1cGxleCA9IERVUExFWF9GVUxMOw0KKwkJZWxzZQ0KKwkJCXN0YXRlLT5kdXBsZXggPSBEVVBM RVhfSEFMRjsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludA0KK210NzUz MV9waHlsaW5rX21hY19saW5rX3N0YXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQs DQorCQkJICAgICAgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpDQorew0KKwlzdHJ1 Y3QgbXQ3NTMwX3ByaXYgKnByaXYgPSBkcy0+cHJpdjsNCisNCisJaWYgKHN0YXRlLT5pbnRlcmZh Y2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKQ0KKwkJcmV0dXJuIG10NzUzMV9zZ21paV9w Y3NfZ2V0X3N0YXRlX2FuKHByaXYsIHBvcnQsIHN0YXRlKTsNCisNCisJcmV0dXJuIC1FT1BOT1RT VVBQOw0KK30NCisNCiBzdGF0aWMgaW50DQogbXQ3NTN4X3BoeWxpbmtfbWFjX2xpbmtfc3RhdGUo c3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJCQkgICAgICBzdHJ1Y3QgcGh5bGlu a19saW5rX3N0YXRlICpzdGF0ZSkNCkBAIC0xNjYyLDEzICsyNTA5LDE0IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgbXQ3NTMwX3N3aXRjaF9vcHMgPSB7DQogCS5wb3J0X3Zs YW5fcHJlcGFyZQk9IG10NzUzMF9wb3J0X3ZsYW5fcHJlcGFyZSwNCiAJLnBvcnRfdmxhbl9hZGQJ CT0gbXQ3NTMwX3BvcnRfdmxhbl9hZGQsDQogCS5wb3J0X3ZsYW5fZGVsCQk9IG10NzUzMF9wb3J0 X3ZsYW5fZGVsLA0KLQkucG9ydF9taXJyb3JfYWRkCT0gbXQ3NTMwX3BvcnRfbWlycm9yX2FkZCwN Ci0JLnBvcnRfbWlycm9yX2RlbAk9IG10NzUzMF9wb3J0X21pcnJvcl9kZWwsDQorCS5wb3J0X21p cnJvcl9hZGQJPSBtdDc1M3hfcG9ydF9taXJyb3JfYWRkLA0KKwkucG9ydF9taXJyb3JfZGVsCT0g bXQ3NTN4X3BvcnRfbWlycm9yX2RlbCwNCiAJLnBoeWxpbmtfdmFsaWRhdGUJPSBtdDc1M3hfcGh5 bGlua192YWxpZGF0ZSwNCiAJLnBoeWxpbmtfbWFjX2xpbmtfc3RhdGUJPSBtdDc1M3hfcGh5bGlu a19tYWNfbGlua19zdGF0ZSwNCiAJLnBoeWxpbmtfbWFjX2NvbmZpZwk9IG10NzUzeF9waHlsaW5r X21hY19jb25maWcsDQotCS5waHlsaW5rX21hY19saW5rX2Rvd24JPSBtdDc1MzBfcGh5bGlua19t YWNfbGlua19kb3duLA0KLQkucGh5bGlua19tYWNfbGlua191cAk9IG10NzUzMF9waHlsaW5rX21h Y19saW5rX3VwLA0KKwkucGh5bGlua19tYWNfYW5fcmVzdGFydAk9IG10NzUzeF9waHlsaW5rX21h Y19hbl9yZXN0YXJ0LA0KKwkucGh5bGlua19tYWNfbGlua19kb3duCT0gbXQ3NTN4X3BoeWxpbmtf bWFjX2xpbmtfZG93biwNCisJLnBoeWxpbmtfbWFjX2xpbmtfdXAJPSBtdDc1M3hfcGh5bGlua19t YWNfbGlua191cCwNCiB9Ow0KIA0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3NTN4X2luZm8gbXQ3 NTN4X3RhYmxlW10gPSB7DQpAQCAtMTY5NCwxMSArMjU0MiwyNiBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IG10NzUzeF9pbmZvIG10NzUzeF90YWJsZVtdID0gew0KIAkJLm1hY19wb3J0X2dldF9zdGF0 ZSA9IG10NzUzMF9waHlsaW5rX21hY19saW5rX3N0YXRlLA0KIAkJLm1hY19wb3J0X2NvbmZpZyA9 IG10NzUzMF9tYWNfY29uZmlnLA0KIAl9LA0KKwlbSURfTVQ3NTMxXSA9IHsNCisJCS5pZCA9IElE X01UNzUzMSwNCisJCS5zd19zZXR1cCA9IG10NzUzMV9zZXR1cCwNCisJCS5waHlfcmVhZCA9IG10 NzUzMV9pbmRfcGh5X3JlYWQsDQorCQkucGh5X3dyaXRlID0gbXQ3NTMxX2luZF9waHlfd3JpdGUs DQorCQkucGFkX3NldHVwID0gbXQ3NTMxX3BhZF9zZXR1cCwNCisJCS5jcHVfcG9ydF9jb25maWcg PSBtdDc1MzFfY3B1X3BvcnRfY29uZmlnLA0KKwkJLnBoeV9tb2RlX3N1cHBvcnRlZCA9IG10NzUz MV9waHlfbW9kZV9zdXBwb3J0ZWQsDQorCQkubWFjX3BvcnRfdmFsaWRhdGUgPSBtdDc1MzFfbWFj X3BvcnRfdmFsaWRhdGUsDQorCQkubWFjX3BvcnRfZ2V0X3N0YXRlID0gbXQ3NTMxX3BoeWxpbmtf bWFjX2xpbmtfc3RhdGUsDQorCQkubWFjX3BvcnRfY29uZmlnID0gbXQ3NTMxX21hY19jb25maWcs DQorCQkubWFjX3Bjc19hbl9yZXN0YXJ0ID0gbXQ3NTMxX3NnbWlpX3Jlc3RhcnRfYW4sDQorCQku bWFjX3Bjc19saW5rX3VwID0gbXQ3NTMxX3NnbWlpX2xpbmtfdXBfZm9yY2UsDQorCX0sDQogfTsN CiANCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDc1MzBfb2ZfbWF0Y2hbXSA9 IHsNCiAJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDc2MjEiLCAuZGF0YSA9ICZtdDc1M3hf dGFibGVbSURfTVQ3NjIxXSwgfSwNCiAJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDc1MzAi LCAuZGF0YSA9ICZtdDc1M3hfdGFibGVbSURfTVQ3NTMwXSwgfSwNCisJeyAuY29tcGF0aWJsZSA9 ICJtZWRpYXRlayxtdDc1MzEiLCAuZGF0YSA9ICZtdDc1M3hfdGFibGVbSURfTVQ3NTMxXSwgfSwN CiAJeyAvKiBzZW50aW5lbCAqLyB9LA0KIH07DQogTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbXQ3 NTMwX29mX21hdGNoKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmggYi9k cml2ZXJzL25ldC9kc2EvbXQ3NTMwLmgNCmluZGV4IDQ0YWM1NTQzMzA4OS4uOTI3OGE4ZTNkMDRl IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC5oDQorKysgYi9kcml2ZXJzL25l dC9kc2EvbXQ3NTMwLmgNCkBAIC0xNCw2ICsxNCw3IEBADQogZW51bSBtdDc1M3hfaWQgew0KIAlJ RF9NVDc1MzAgPSAwLA0KIAlJRF9NVDc2MjEgPSAxLA0KKwlJRF9NVDc1MzEgPSAyLA0KIH07DQog DQogI2RlZmluZQlOVU1fVFJHTUlJX0NUUkwJCQk1DQpAQCAtNDEsNiArNDIsMzMgQEAgZW51bSBt dDc1M3hfaWQgew0KICNkZWZpbmUgIE1JUlJPUl9QT1JUKHgpCQkJKCh4KSAmIDB4NykNCiAjZGVm aW5lICBNSVJST1JfTUFTSwkJCTB4Nw0KIA0KKy8qIFJlZ2lzdGVycyBmb3IgQ1BVIGZvcndhcmQg Y29udHJvbCAqLw0KKyNkZWZpbmUgTVQ3NTMxX0NGQwkJCTB4NA0KKyNkZWZpbmUgIE1UNzUzMV9N SVJST1JfRU4JCUJJVCgxOSkNCisjZGVmaW5lICBNVDc1MzFfTUlSUk9SX01BU0sJCShNSVJST1Jf TUFTSyA8PCAxNikNCisjZGVmaW5lICBNVDc1MzFfTUlSUk9SX1BPUlRfR0VUKHgpCSgoKHgpID4+ IDE2KSAmIE1JUlJPUl9NQVNLKQ0KKyNkZWZpbmUgIE1UNzUzMV9NSVJST1JfUE9SVF9TRVQoeCkJ KCgoeCkgJiBNSVJST1JfTUFTSykgPDwgMTYpDQorI2RlZmluZSAgTVQ3NTMxX0NQVV9QTUFQX01B U0sJCUdFTk1BU0soNywgMCkNCisNCisjZGVmaW5lIE1UNzUzWF9NSVJST1JfUkVHKGlkKQkJKCgo aWQpID09IElEX01UNzUzMSkgPyBcDQorCQkJCQkgTVQ3NTMxX0NGQyA6IE1UNzUzMF9NRkMpDQor I2RlZmluZSBNVDc1M1hfTUlSUk9SX0VOKGlkKQkJKCgoaWQpID09IElEX01UNzUzMSkgPyBcDQor CQkJCQkgTVQ3NTMxX01JUlJPUl9FTiA6IE1JUlJPUl9FTikNCisjZGVmaW5lIE1UNzUzWF9NSVJS T1JfTUFTSyhpZCkJCSgoKGlkKSA9PSBJRF9NVDc1MzEpID8gXA0KKwkJCQkJIE1UNzUzMV9NSVJS T1JfTUFTSyA6IE1JUlJPUl9NQVNLKQ0KKw0KKy8qIFJlZ2lzdGVycyBmb3IgQlBEVSBhbmQgUEFF IGZyYW1lIGNvbnRyb2wqLw0KKyNkZWZpbmUgTVQ3NTNYX0JQQwkJCTB4MjQNCisjZGVmaW5lICBN VDc1M1hfQlBEVV9QT1JUX0ZXX01BU0sJR0VOTUFTSygyLCAwKQ0KKw0KK2VudW0gbXQ3NTN4X2Jw ZHVfcG9ydF9mdyB7DQorCU1UNzUzWF9CUERVX0ZPTExPV19NRkMsDQorCU1UNzUzWF9CUERVX0NQ VV9FWENMVURFID0gNCwNCisJTVQ3NTNYX0JQRFVfQ1BVX0lOQ0xVREUgPSA1LA0KKwlNVDc1M1hf QlBEVV9DUFVfT05MWSA9IDYsDQorCU1UNzUzWF9CUERVX0RST1AgPSA3LA0KK307DQorDQogLyog UmVnaXN0ZXJzIGZvciBhZGRyZXNzIHRhYmxlIGFjY2VzcyAqLw0KICNkZWZpbmUgTVQ3NTMwX0FU QTEJCQkweDc0DQogI2RlZmluZSAgU1RBVElDX0VNUAkJCTANCkBAIC0yMjAsMTAgKzI0OCwzMCBA QCBlbnVtIG10NzUzMF92bGFuX3BvcnRfYXR0ciB7DQogI2RlZmluZSAgUE1DUl9GT1JDRV9MTksJ CQlCSVQoMCkNCiAjZGVmaW5lICBQTUNSX1NQRUVEX01BU0sJCShQTUNSX0ZPUkNFX1NQRUVEXzEw MCB8IFwNCiAJCQkJCSBQTUNSX0ZPUkNFX1NQRUVEXzEwMDApDQorI2RlZmluZSAgTVQ3NTMxX0ZP UkNFX0xOSwkJQklUKDMxKQ0KKyNkZWZpbmUgIE1UNzUzMV9GT1JDRV9TUEQJCUJJVCgzMCkNCisj ZGVmaW5lICBNVDc1MzFfRk9SQ0VfRFBYCQlCSVQoMjkpDQorI2RlZmluZSAgTVQ3NTMxX0ZPUkNF X1JYX0ZDCQlCSVQoMjgpDQorI2RlZmluZSAgTVQ3NTMxX0ZPUkNFX1RYX0ZDCQlCSVQoMjcpDQor I2RlZmluZSAgTVQ3NTMxX0ZPUkNFX01PREUJCShNVDc1MzFfRk9SQ0VfTE5LIHwgXA0KKwkJCQkJ IE1UNzUzMV9GT1JDRV9TUEQgfCBcDQorCQkJCQkgTVQ3NTMxX0ZPUkNFX0RQWCB8IFwNCisJCQkJ CSBNVDc1MzFfRk9SQ0VfUlhfRkMgfCBcDQorCQkJCQkgTVQ3NTMxX0ZPUkNFX1RYX0ZDKQ0KKyNk ZWZpbmUgIFBNQ1JfRk9SQ0VfTU9ERV9JRChpZCkJCSgoKGlkKSA9PSBJRF9NVDc1MzEpID8gXA0K KwkJCQkJIE1UNzUzMV9GT1JDRV9NT0RFIDogXA0KKwkJCQkJIFBNQ1JfRk9SQ0VfTU9ERSkNCiAj ZGVmaW5lICBQTUNSX0xJTktfU0VUVElOR1NfTUFTSwkoUE1DUl9UWF9FTiB8IFBNQ1JfRk9SQ0Vf U1BFRURfMTAwMCB8IFwNCiAJCQkJCSBQTUNSX1JYX0VOIHwgUE1DUl9GT1JDRV9TUEVFRF8xMDAg fCBcDQogCQkJCQkgUE1DUl9UWF9GQ19FTiB8IFBNQ1JfUlhfRkNfRU4gfCBcDQogCQkJCQkgUE1D Ul9GT1JDRV9GRFggfCBQTUNSX0ZPUkNFX0xOSykNCisjZGVmaW5lICBQTUNSX0NQVV9QT1JUX1NF VFRJTkcoaWQpCShQTUNSX0ZPUkNFX01PREVfSUQoKGlkKSkgfCBcDQorCQkJCQkgUE1DUl9JRkdf WE1JVCgxKSB8IFBNQ1JfTUFDX01PREUgfCBcDQorCQkJCQkgUE1DUl9CQUNLT0ZGX0VOIHwgUE1D Ul9CQUNLUFJfRU4gfCBcDQorCQkJCQkgUE1DUl9UWF9FTiB8IFBNQ1JfUlhfRU4gfCBcDQorCQkJ CQkgUE1DUl9UWF9GQ19FTiB8IFBNQ1JfUlhfRkNfRU4gfCBcDQorCQkJCQkgUE1DUl9GT1JDRV9T UEVFRF8xMDAwIHwgXA0KKwkJCQkJIFBNQ1JfRk9SQ0VfRkRYIHwgUE1DUl9GT1JDRV9MTkspDQog DQogI2RlZmluZSBNVDc1MzBfUE1TUl9QKHgpCQkoMHgzMDA4ICsgKHgpICogMHgxMDApDQogI2Rl ZmluZSAgUE1TUl9FRUUxRwkJCUJJVCg3KQ0KQEAgLTIzNyw2ICsyODUsMTAgQEAgZW51bSBtdDc1 MzBfdmxhbl9wb3J0X2F0dHIgew0KICNkZWZpbmUgIFBNU1JfRFBYCQkJQklUKDEpDQogI2RlZmlu ZSAgUE1TUl9MSU5LCQkJQklUKDApDQogDQorLyogUmVnaXN0ZXIgZm9yIHBvcnQgZGVidWcgY291 bnQgKi8NCisjZGVmaW5lIE1UNzUzMV9EQkdfQ05UKHgpCQkoMHgzMDE4ICsgKHgpICogMHgxMDAp DQorI2RlZmluZSAgTVQ3NTMxX0RJU19DTFIJCQlCSVQoMzEpDQorDQogLyogUmVnaXN0ZXIgZm9y IE1JQiAqLw0KICNkZWZpbmUgTVQ3NTMwX1BPUlRfTUlCX0NPVU5URVIoeCkJKDB4NDAwMCArICh4 KSAqIDB4MTAwKQ0KICNkZWZpbmUgTVQ3NTMwX01JQl9DQ1IJCQkweDRmZTANCkBAIC0yNTQsMTIg KzMwNiwxMTggQEAgZW51bSBtdDc1MzBfdmxhbl9wb3J0X2F0dHIgew0KIAkJCQkJIENDUl9SWF9P Q1RfQ05UX0JBRCB8IFwNCiAJCQkJCSBDQ1JfVFhfT0NUX0NOVF9HT09EIHwgXA0KIAkJCQkJIEND Ul9UWF9PQ1RfQ05UX0JBRCkNCisNCisvKiBNVDc1MzEgU0dNSUkgcmVnaXN0ZXIgZ3JvdXAgKi8N CisjZGVmaW5lIE1UNzUzMV9TR01JSV9SRUdfQkFTRQkJMHg1MDAwDQorI2RlZmluZSBNVDc1MzFf U0dNSUlfUkVHKHAsIHIpCQkoTVQ3NTMxX1NHTUlJX1JFR19CQVNFICsgXA0KKwkJCQkJKChwKSAt IDUpICogMHgxMDAwICsgKHIpKQ0KKw0KKy8qIFJlZ2lzdGVyIGZvclNHTUlJIFBDU19DT05UUk9M XzEgKi8NCisjZGVmaW5lIE1UNzUzMV9QQ1NfQ09OVFJPTF8xKHApCQlNVDc1MzFfU0dNSUlfUkVH KHAsIDB4MDApDQorI2RlZmluZSAgTVQ3NTMxX1NHTUlJX0xJTktfU1RBVFVTCUJJVCgxOCkNCisj ZGVmaW5lICBNVDc1MzFfU0dNSUlfQU5fRU5BQkxFCQlCSVQoMTIpDQorI2RlZmluZSAgTVQ3NTMx X1NHTUlJX0FOX1JFU1RBUlQJQklUKDkpDQorDQorLyogUmVnaXN0ZXIgZm9yIFNHTUlJIFBDU19T UFBFRF9BQklMSVRZICovDQorI2RlZmluZSBNVDc1MzFfUENTX1NQRUVEX0FCSUxJVFkocCkJTVQ3 NTMxX1NHTUlJX1JFRyhwLCAweDA4KQ0KKyNkZWZpbmUgIE1UNzUzMV9TR01JSV9UWF9DT05GSUdf TUFTSwlHRU5NQVNLKDE1LCAwKQ0KKyNkZWZpbmUgIE1UNzUzMV9TR01JSV9UWF9DT05GSUcJCUJJ VCgwKQ0KKw0KKy8qIFJlZ2lzdGVyIGZvciBTR01JSV9NT0RFICovDQorI2RlZmluZSBNVDc1MzFf U0dNSUlfTU9ERShwKQkJTVQ3NTMxX1NHTUlJX1JFRyhwLCAweDIwKQ0KKyNkZWZpbmUgIE1UNzUz MV9TR01JSV9SRU1PVEVfRkFVTFRfRElTCUJJVCg4KQ0KKyNkZWZpbmUgIE1UNzUzMV9TR01JSV9J Rl9NT0RFX01BU0sJR0VOTUFTSyg1LCAxKQ0KKyNkZWZpbmUgIE1UNzUzMV9TR01JSV9GT1JDRV9E VVBMRVgJQklUKDQpDQorI2RlZmluZSAgTVQ3NTMxX1NHTUlJX0ZPUkNFX1NQRUVEX01BU0sJR0VO TUFTSygzLCAyKQ0KKyNkZWZpbmUgIE1UNzUzMV9TR01JSV9GT1JDRV9TUEVFRF8xMDAwCUJJVCgz KQ0KKyNkZWZpbmUgIE1UNzUzMV9TR01JSV9GT1JDRV9TUEVFRF8xMDAJQklUKDIpDQorI2RlZmlu ZSAgTVQ3NTMxX1NHTUlJX0ZPUkNFX1NQRUVEXzEwCTANCisjZGVmaW5lICBNVDc1MzFfU0dNSUlf U1BFRURfRFVQTEVYX0FOCUJJVCgxKQ0KKw0KK2VudW0gbXQ3NTMxX3NnbWlpX2ZvcmNlX2R1cGxl eCB7DQorCU1UNzUzMV9TR01JSV9GT1JDRV9GVUxMX0RVUExFWCA9IDAsDQorCU1UNzUzMV9TR01J SV9GT1JDRV9IQUxGX0RVUExFWCA9IDB4MTAsDQorfTsNCisNCisvKiBGaWVsZHMgb2YgUVBIWV9Q V1JfU1RBVEVfQ1RSTCAqLw0KKyNkZWZpbmUgTVQ3NTMxX1FQSFlfUFdSX1NUQVRFX0NUUkwocCkJ TVQ3NTMxX1NHTUlJX1JFRyhwLCAweGU4KQ0KKyNkZWZpbmUgIE1UNzUzMV9TR01JSV9QSFlBX1BX RAkJQklUKDQpDQorDQorLyogVmFsdWVzIG9mIFNHTUlJIFNQRUVEICovDQorI2RlZmluZSBNVDc1 MzFfUEhZQV9DVFJMX1NJR05BTDMocCkJTVQ3NTMxX1NHTUlJX1JFRyhwLCAweDEyOCkNCisjZGVm aW5lICBNVDc1MzFfUkdfVFBIWV9TUEVFRF9NQVNLCShCSVQoMikgfCBCSVQoMykpDQorI2RlZmlu ZSAgTVQ3NTMxX1JHX1RQSFlfU1BFRURfMV8yNUcJMHgwDQorI2RlZmluZSAgTVQ3NTMxX1JHX1RQ SFlfU1BFRURfM18xMjVHCUJJVCgyKQ0KKw0KIC8qIFJlZ2lzdGVyIGZvciBzeXN0ZW0gcmVzZXQg Ki8NCiAjZGVmaW5lIE1UNzUzMF9TWVNfQ1RSTAkJCTB4NzAwMA0KICNkZWZpbmUgIFNZU19DVFJM X1BIWV9SU1QJCUJJVCgyKQ0KICNkZWZpbmUgIFNZU19DVFJMX1NXX1JTVAkJQklUKDEpDQogI2Rl ZmluZSAgU1lTX0NUUkxfUkVHX1JTVAkJQklUKDApDQogDQorLyogUmVnaXN0ZXIgZm9yIFBIWSBJ bmRpcmVjdCBBY2Nlc3MgQ29udHJvbCAqLw0KKyNkZWZpbmUgTVQ3NTMxX1BIWV9JQUMJCQkweDcw MUMNCisjZGVmaW5lICBNVDc1MzFfUEhZX0FDU19TVAkJQklUKDMxKQ0KKyNkZWZpbmUgIE1UNzUz MV9NRElPX1JFR19BRERSX01BU0sJKDB4MWYgPDwgMjUpDQorI2RlZmluZSAgTVQ3NTMxX01ESU9f UEhZX0FERFJfTUFTSwkoMHgxZiA8PCAyMCkNCisjZGVmaW5lICBNVDc1MzFfTURJT19DTURfTUFT SwkJKDB4MyA8PCAxOCkNCisjZGVmaW5lICBNVDc1MzFfTURJT19TVF9NQVNLCQkoMHgzIDw8IDE2 KQ0KKyNkZWZpbmUgIE1UNzUzMV9NRElPX1JXX0RBVEFfTUFTSwkoMHhmZmZmKQ0KKyNkZWZpbmUg IE1UNzUzMV9NRElPX1JFR19BRERSKHgpCSgoKHgpICYgMHgxZikgPDwgMjUpDQorI2RlZmluZSAg TVQ3NTMxX01ESU9fREVWX0FERFIoeCkJKCgoeCkgJiAweDFmKSA8PCAyNSkNCisjZGVmaW5lICBN VDc1MzFfTURJT19QSFlfQUREUih4KQkoKCh4KSAmIDB4MWYpIDw8IDIwKQ0KKyNkZWZpbmUgIE1U NzUzMV9NRElPX0NNRCh4KQkJKCgoeCkgJiAweDMpIDw8IDE4KQ0KKyNkZWZpbmUgIE1UNzUzMV9N RElPX1NUKHgpCQkoKCh4KSAmIDB4MykgPDwgMTYpDQorDQorZW51bSBtdDc1MzFfcGh5X2lhY19j bWQgew0KKwlNVDc1MzFfTURJT19BRERSID0gMCwNCisJTVQ3NTMxX01ESU9fV1JJVEUgPSAxLA0K KwlNVDc1MzFfTURJT19SRUFEID0gMiwNCisJTVQ3NTMxX01ESU9fUkVBRF9DTDQ1ID0gMywNCit9 Ow0KKw0KKy8qIE1ESU9fU1Q6IE1ESU8gc3RhcnQgZmllbGQgKi8NCitlbnVtIG10NzUzMV9tZGlv X3N0IHsNCisJTVQ3NTMxX01ESU9fU1RfQ0w0NSA9IDAsDQorCU1UNzUzMV9NRElPX1NUX0NMMjIg PSAxLA0KK307DQorDQorI2RlZmluZSAgTVQ3NTMxX01ESU9fQ0wyMl9SRUFECQkoTVQ3NTMxX01E SU9fU1QoTVQ3NTMxX01ESU9fU1RfQ0wyMikgfCBcDQorCQkJCQkgTVQ3NTMxX01ESU9fQ01EKE1U NzUzMV9NRElPX1JFQUQpKQ0KKyNkZWZpbmUgIE1UNzUzMV9NRElPX0NMMjJfV1JJVEUJCShNVDc1 MzFfTURJT19TVChNVDc1MzFfTURJT19TVF9DTDIyKSB8IFwNCisJCQkJCSBNVDc1MzFfTURJT19D TUQoTVQ3NTMxX01ESU9fV1JJVEUpKQ0KKyNkZWZpbmUgIE1UNzUzMV9NRElPX0NMNDVfQUREUgkJ KE1UNzUzMV9NRElPX1NUKE1UNzUzMV9NRElPX1NUX0NMNDUpIHwgXA0KKwkJCQkJIE1UNzUzMV9N RElPX0NNRChNVDc1MzFfTURJT19BRERSKSkNCisjZGVmaW5lICBNVDc1MzFfTURJT19DTDQ1X1JF QUQJCShNVDc1MzFfTURJT19TVChNVDc1MzFfTURJT19TVF9DTDQ1KSB8IFwNCisJCQkJCSBNVDc1 MzFfTURJT19DTUQoTVQ3NTMxX01ESU9fUkVBRCkpDQorI2RlZmluZSAgTVQ3NTMxX01ESU9fQ0w0 NV9XUklURQkJKE1UNzUzMV9NRElPX1NUKE1UNzUzMV9NRElPX1NUX0NMNDUpIHwgXA0KKwkJCQkJ IE1UNzUzMV9NRElPX0NNRChNVDc1MzFfTURJT19XUklURSkpDQorDQorLyogUmVnaXN0ZXIgZm9y IFJHTUlJIGNsb2NrIHBoYXNlICovDQorI2RlZmluZSBNVDc1MzFfQ0xLR0VOX0NUUkwJCTB4NzUw MA0KKyNkZWZpbmUgIENMS19TS0VXX09VVCh4KQkJKCgoeCkgJiAweDMpIDw8IDgpDQorI2RlZmlu ZSAgQ0xLX1NLRVdfT1VUX01BU0sJCUdFTk1BU0soOSwgOCkNCisjZGVmaW5lICBDTEtfU0tFV19J Tih4KQkJCSgoKHgpICYgMHgzKSA8PCA2KQ0KKyNkZWZpbmUgIENMS19TS0VXX0lOX01BU0sJCUdF Tk1BU0soNywgNikNCisjZGVmaW5lICBSWENMS19OT19ERUxBWQkJCUJJVCg1KQ0KKyNkZWZpbmUg IFRYQ0xLX05PX1JFVkVSU0UJCUJJVCg0KQ0KKyNkZWZpbmUgIEdQX01PREUoeCkJCQkoKCh4KSAm IDB4MykgPDwgMSkNCisjZGVmaW5lICBHUF9NT0RFX01BU0sJCQlHRU5NQVNLKDIsIDEpDQorI2Rl ZmluZSAgR1BfQ0xLX0VOCQkJQklUKDApDQorDQorZW51bSBtdDc1MzFfZ3BfbW9kZSB7DQorCU1U NzUzMV9HUF9NT0RFX1JHTUlJID0gMCwNCisJTVQ3NTMxX0dQX01PREVfTUlJID0gMSwNCisJTVQ3 NTMxX0dQX01PREVfUkVWX01JSSA9IDINCit9Ow0KKw0KK2VudW0gbXQ3NTMxX2Nsa19za2V3IHsN CisJTVQ3NTMxX0NMS19TS0VXX05PX0NIRyA9IDAsDQorCU1UNzUzMV9DTEtfU0tFV19ETFlfMTAw UFBTID0gMSwNCisJTVQ3NTMxX0NMS19TS0VXX0RMWV8yMDBQUFMgPSAyLA0KKwlNVDc1MzFfQ0xL X1NLRVdfUkVWRVJTRSA9IDMsDQorfTsNCisNCiAvKiBSZWdpc3RlciBmb3IgaHcgdHJhcCBzdGF0 dXMgKi8NCiAjZGVmaW5lIE1UNzUzMF9IV1RSQVAJCQkweDc4MDANCiAjZGVmaW5lICBIV1RSQVBf WFRBTF9NQVNLCQkoQklUKDEwKSB8IEJJVCg5KSkNCkBAIC0yNjcsNiArNDI1LDE2IEBAIGVudW0g bXQ3NTMwX3ZsYW5fcG9ydF9hdHRyIHsNCiAjZGVmaW5lICBIV1RSQVBfWFRBTF80ME1IWgkJKEJJ VCgxMCkpDQogI2RlZmluZSAgSFdUUkFQX1hUQUxfMjBNSFoJCShCSVQoOSkpDQogDQorI2RlZmlu ZSBNVDc1MzFfSFdUUkFQCQkJMHg3ODAwDQorI2RlZmluZSAgSFdUUkFQX1hUQUxfRlNFTF9NQVNL CQlCSVQoNykNCisjZGVmaW5lICBIV1RSQVBfWFRBTF9GU0VMXzI1TUhaCQlCSVQoNykNCisjZGVm aW5lICBIV1RSQVBfWFRBTF9GU0VMXzQwTUhaCQkwDQorLyogVW5pcXVlIGZpZWxkcyBvZiAoTSlI V1NUUkFQIGZvciBNVDc1MzEgKi8NCisjZGVmaW5lICBYVEFMX0ZTRUxfUwkJCTcNCisjZGVmaW5l ICBYVEFMX0ZTRUxfTQkJCUJJVCg3KQ0KKyNkZWZpbmUgIFBIWV9FTgkJCQlCSVQoNikNCisjZGVm aW5lICBDSEdfU1RSQVAJCQlCSVQoOCkNCisNCiAvKiBSZWdpc3RlciBmb3IgaHcgdHJhcCBtb2Rp ZmljYXRpb24gKi8NCiAjZGVmaW5lIE1UNzUzMF9NSFdUUkFQCQkJMHg3ODA0DQogI2RlZmluZSAg TUhXVFJBUF9QSFkwX1NFTAkJQklUKDIwKQ0KQEAgLTI4MSwxNCArNDQ5LDM3IEBAIGVudW0gbXQ3 NTMwX3ZsYW5fcG9ydF9hdHRyIHsNCiAjZGVmaW5lIE1UNzUzMF9UT1BfU0lHX0NUUkwJCTB4Nzgw OA0KICNkZWZpbmUgIFRPUF9TSUdfQ1RSTF9OT1JNQUwJCShCSVQoMTcpIHwgQklUKDE2KSkNCiAN CisjZGVmaW5lIE1UNzUzMV9UT1BfU0lHX1NSCQkweDc4MGMNCisjZGVmaW5lICBQQURfRFVBTF9T R01JSV9FTgkJQklUKDEpDQorI2RlZmluZSAgUEFEX01DTV9TTUlfRU4JCQlCSVQoMCkNCisNCiAj ZGVmaW5lIE1UNzUzMF9JT19EUlZfQ1IJCTB4NzgxMA0KICNkZWZpbmUgIFA1X0lPX0NMS19EUlYo eCkJCSgoeCkgJiAweDMpDQogI2RlZmluZSAgUDVfSU9fREFUQV9EUlYoeCkJCSgoKHgpICYgMHgz KSA8PCA0KQ0KIA0KKyNkZWZpbmUgTVQ3NTMxX0NISVBfUkVWCQkJMHg3ODFDDQorDQorI2RlZmlu ZSBNVDc1MzFfUExMR1BfRU4JCQkweDc4MjANCisjZGVmaW5lICBFTl9DT1JFUExMCQkJQklUKDIp DQorI2RlZmluZSAgU1dfQ0xLU1cJCQlCSVQoMSkNCisjZGVmaW5lICBTV19QTExHUAkJCUJJVCgw KQ0KKw0KICNkZWZpbmUgTVQ3NTMwX1A2RUNSCQkJMHg3ODMwDQogI2RlZmluZSAgUDZfSU5URl9N T0RFX01BU0sJCTB4Mw0KICNkZWZpbmUgIFA2X0lOVEZfTU9ERSh4KQkJKCh4KSAmIDB4MykNCiAN CisjZGVmaW5lIE1UNzUzMV9QTExHUF9DUjAJCTB4NzhhOA0KKyNkZWZpbmUgIFJHX0NPUkVQTExf RU4JCQlCSVQoMjIpDQorI2RlZmluZSAgUkdfQ09SRVBMTF9QT1NESVZfUwkJMjMNCisjZGVmaW5l ICBSR19DT1JFUExMX1BPU0RJVl9NCQkweDM4MDAwMDANCisjZGVmaW5lICBSR19DT1JFUExMX1NE TV9QQ1dfUwkJMQ0KKyNkZWZpbmUgIFJHX0NPUkVQTExfU0RNX1BDV19NCQkweDNmZmZmZQ0KKyNk ZWZpbmUgIFJHX0NPUkVQTExfU0RNX1BDV19DSEcJCUJJVCgwKQ0KKw0KKy8qIFJlZ2lzdGVycyBm b3IgUkdNSUkgYW5kIFNHTUlJIFBMTCBjbG9jayAqLw0KKyNkZWZpbmUgTVQ3NTMxX0FOQV9QTExH UF9DUjIJCTB4NzhiMA0KKyNkZWZpbmUgTVQ3NTMxX0FOQV9QTExHUF9DUjUJCTB4NzhiYw0KKw0K IC8qIFJlZ2lzdGVycyBmb3IgVFJHTUlJIG9uIHRoZSBib3RoIHNpZGUgKi8NCiAjZGVmaW5lIE1U NzUzMF9UUkdNSUlfUkNLX0NUUkwJCTB4N2EwMA0KICNkZWZpbmUgIFJYX1JTVAkJCQlCSVQoMzEp DQpAQCAtMzI3LDEwICs1MTgsMjUgQEAgZW51bSBtdDc1MzBfdmxhbl9wb3J0X2F0dHIgew0KICNk ZWZpbmUgTVQ3NTMwX1A1UkdNSUlUWENSCQkweDdiMDQNCiAjZGVmaW5lICBDU1JfUkdNSUlfVFhD X0NGRyh4KQkJKCh4KSAmIDB4MWYpDQogDQorLyogUmVnaXN0ZXJzIGZvciBHUElPIG1vZGUgKi8N CisjZGVmaW5lIE1UNzUzMV9HUElPX01PREUwCQkweDdjMGMNCisjZGVmaW5lICBNVDc1MzFfR1BJ TzBfTUFTSwkJR0VOTUFTSygzLCAwKQ0KKyNkZWZpbmUgIE1UNzUzMV9HUElPMF9JTlRFUlJVUFQJ CTENCisNCisjZGVmaW5lIE1UNzUzMV9HUElPX01PREUxCQkweDdjMTANCisjZGVmaW5lICBNVDc1 MzFfR1BJTzExX1JHX1JYRDJfTUFTSwlHRU5NQVNLKDE1LCAxMikNCisjZGVmaW5lICBNVDc1MzFf RVhUX1BfTURDXzExCQkoMiA8PCAxMikNCisjZGVmaW5lICBNVDc1MzFfR1BJTzEyX1JHX1JYRDNf TUFTSwlHRU5NQVNLKDE5LCAxNikNCisjZGVmaW5lICBNVDc1MzFfRVhUX1BfTURJT18xMgkJKDIg PDwgMTYpDQorDQogI2RlZmluZSBNVDc1MzBfQ1JFVgkJCTB4N2ZmYw0KICNkZWZpbmUgIENISVBf TkFNRV9TSElGVAkJMTYNCiAjZGVmaW5lICBNVDc1MzBfSUQJCQkweDc1MzANCiANCisjZGVmaW5l IE1UNzUzMV9DUkVWCQkJMHg3ODFDDQorI2RlZmluZSAgQ0hJUF9SRVZfTQkJCTB4MGYNCisjZGVm aW5lICBNVDc1MzFfSUQJCQkweDc1MzENCisNCiAvKiBSZWdpc3RlcnMgZm9yIGNvcmUgUExMIGFj Y2VzcyB0aHJvdWdoIG1tZCBpbmRpcmVjdCAqLw0KICNkZWZpbmUgQ09SRV9QTExfR1JPVVAyCQkJ MHg0MDENCiAjZGVmaW5lICBSR19TWVNQTExfRU5fTk9STUFMCQlCSVQoMTUpDQpAQCAtMzQ3LDYg KzU1MywxMCBAQCBlbnVtIG10NzUzMF92bGFuX3BvcnRfYXR0ciB7DQogI2RlZmluZSAgUkdfU1lT UExMX0REU0ZCS19FTgkJQklUKDEyKQ0KICNkZWZpbmUgIFJHX1NZU1BMTF9CSUFTX0VOCQlCSVQo MTEpDQogI2RlZmluZSAgUkdfU1lTUExMX0JJQVNfTFBGX0VOCQlCSVQoMTApDQorI2RlZmluZSAg TVQ3NTMxX1BIWV9QTExfT0ZGCQlCSVQoNSkNCisjZGVmaW5lICBNVDc1MzFfUEhZX1BMTF9CWVBB U1NfTU9ERQlCSVQoNCkNCisNCisjZGVmaW5lIE1UNzUzWF9DVFJMX1BIWV9BRERSCQkwDQogDQog I2RlZmluZSBDT1JFX1BMTF9HUk9VUDUJCQkweDQwNA0KICNkZWZpbmUgIFJHX0xDRERTX1BDV19O Q1BPMSh4KQkJKCh4KSAmIDB4ZmZmZikNCkBAIC00MjUsNiArNjM1LDcgQEAgZW51bSBwNV9pbnRl cmZhY2Vfc2VsZWN0IHsNCiAJUDVfSU5URl9TRUxfUEhZX1AwLA0KIAlQNV9JTlRGX1NFTF9QSFlf UDQsDQogCVA1X0lOVEZfU0VMX0dNQUM1LA0KKwlQNV9JTlRGX1NFTF9HTUFDNV9TR01JSSwNCiB9 Ow0KIA0KIHN0YXRpYyBjb25zdCBjaGFyICpwNV9pbnRmX21vZGVzKHVuc2lnbmVkIGludCBwNV9p bnRlcmZhY2UpDQpAQCAtNDM4LDYgKzY0OSw4IEBAIHN0YXRpYyBjb25zdCBjaGFyICpwNV9pbnRm X21vZGVzKHVuc2lnbmVkIGludCBwNV9pbnRlcmZhY2UpDQogCQlyZXR1cm4gIlBIWSBQNCI7DQog CWNhc2UgUDVfSU5URl9TRUxfR01BQzU6DQogCQlyZXR1cm4gIkdNQUM1IjsNCisJY2FzZSBQNV9J TlRGX1NFTF9HTUFDNV9TR01JSToNCisJCXJldHVybiAiR01BQzVfU0dNSUkiOw0KIAlkZWZhdWx0 Og0KIAkJcmV0dXJuICJ1bmtub3duIjsNCiAJfQ0KQEAgLTQ1OCw2ICs2NzEsMTAgQEAgc3RhdGlj IGNvbnN0IGNoYXIgKnA1X2ludGZfbW9kZXModW5zaWduZWQgaW50IHA1X2ludGVyZmFjZSkNCiAg KgkJCU1BQyBwb3J0DQogICogQG1hY19wb3J0X2NvbmZpZzoJSG9sZGluZyB0aGUgd2F5IHNldHRp bmcgdXAgdGhlIFBIWSBhdHRyaWJ1dGUgdG8gYQ0KICAqCQkJY2VydGFpbiBNQUMgcG9ydA0KKyAq IEBtYWNfcGNzX2FuX3Jlc3RhcnQJSG9sZGluZyB0aGUgd2F5IHJlc3RhcnRpbmcgUENTIGF1dG9u ZWdvdGlhdGlvbiBmb3IgYQ0KKyAqCQkJY2VydGFpbiBNQUMgcG9ydA0KKyAqIEBtYWNfcGNzX2xp bmtfdXA6CUhvbGRpbmcgdGhlIHdheSBzZXR0aW5nIHVwIHRoZSBQSFkgYXR0cmlidXRlIHRvIHRo ZSBwY3MNCisgKgkJCW9mIHRoZSBjZXJ0YWluIE1BQyBwb3J0DQogICovDQogc3RydWN0IG10NzUz eF9pbmZvIHsNCiAJZW51bSBtdDc1M3hfaWQgaWQ7DQpAQCAtNDY2LDYgKzY4Myw3IEBAIHN0cnVj dCBtdDc1M3hfaW5mbyB7DQogCWludCAoKnBoeV9yZWFkKShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMs IGludCBwb3J0LCBpbnQgcmVnbnVtKTsNCiAJaW50ICgqcGh5X3dyaXRlKShzdHJ1Y3QgZHNhX3N3 aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtLCB1MTYgdmFsKTsNCiAJaW50ICgqcGFkX3Nl dHVwKShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpOw0K KwlpbnQgKCpjcHVfcG9ydF9jb25maWcpKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQp Ow0KIAlib29sICgqcGh5X21vZGVfc3VwcG9ydGVkKShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGlu dCBwb3J0LA0KIAkJCQkgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSk7 DQogCXZvaWQgKCptYWNfcG9ydF92YWxpZGF0ZSkoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQg cG9ydCwNCkBAIC00NzUsNiArNjkzLDEwIEBAIHN0cnVjdCBtdDc1M3hfaW5mbyB7DQogCWludCAo Km1hY19wb3J0X2NvbmZpZykoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCiAJCQkg ICAgICAgdW5zaWduZWQgaW50IG1vZGUsDQogCQkJICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRl cmZhY2UpOw0KKwl2b2lkICgqbWFjX3Bjc19hbl9yZXN0YXJ0KShzdHJ1Y3QgZHNhX3N3aXRjaCAq ZHMsIGludCBwb3J0KTsNCisJdm9pZCAoKm1hY19wY3NfbGlua191cCkoc3RydWN0IGRzYV9zd2l0 Y2ggKmRzLCBpbnQgcG9ydCwNCisJCQkJdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2Vf dCBpbnRlcmZhY2UsDQorCQkJCWludCBzcGVlZCwgaW50IGR1cGxleCk7DQogfTsNCiANCiAvKiBz dHJ1Y3QgbXQ3NTMwX3ByaXYgLQlUaGlzIGlzIHRoZSBtYWluIGRhdGEgc3RydWN0dXJlIGZvciBo b2xkaW5nIHRoZSBzdGF0ZQ0KLS0gDQoyLjE3LjENCg==