From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D70A1C433EF for ; Wed, 2 Mar 2022 17:45:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=KTyIyJEGmkThniHE2yBLpVeaogdUM8k3TMX4v63boWo=; b=b9JByEinjRPuTP vLk7B+c6bGw6BfmG/KC1GnpuiDIpJ0/qIsvsFGLcF4idfnAHEXDkv0x/QV/WP6pUZ7v7SQ9/WelON 0dtzKs4eRxZiTdDSYEv3JITry15MsiIsej4PXH2XpJnVFTKVbzdTQILHRipl3Wo8D6MIlZSPxVfEk xwTRduIqjE855o3UDcud9TpZSrj0rFALzngyti+cmITQqblJcN5hSGDcE/SfAcjy9/MbawYZ0Bo2f /UIFWC2mFHX0P+TofMyFV5vFpp/Ti5rs6DL+hDgJBT0nEBAMASHUh/oC7G5lZGOR5LVK5YNPLCp9m E3kd+AB2tNa1Pb3LQ+9Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nPT1j-003dLl-9o; Wed, 02 Mar 2022 17:44:39 +0000 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nPSpR-003Z92-2J; Wed, 02 Mar 2022 17:32:01 +0000 Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 222HI36k011577; Wed, 2 Mar 2022 17:31:28 GMT Received: from ppma01fra.de.ibm.com (46.49.7a9f.ip4.static.sl-reverse.com [159.122.73.70]) by mx0a-001b2d01.pphosted.com with ESMTP id 3ejcv288sd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 02 Mar 2022 17:31:28 +0000 Received: from pps.filterd (ppma01fra.de.ibm.com [127.0.0.1]) by ppma01fra.de.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 222HD6OZ009105; Wed, 2 Mar 2022 17:31:26 GMT Received: from b06cxnps4075.portsmouth.uk.ibm.com (d06relay12.portsmouth.uk.ibm.com [9.149.109.197]) by ppma01fra.de.ibm.com with ESMTP id 3efbu95ybj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 02 Mar 2022 17:31:25 +0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 222HVNdV50332028 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 2 Mar 2022 17:31:23 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 38DCAAE053; Wed, 2 Mar 2022 17:31:23 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 802C7AE057; Wed, 2 Mar 2022 17:31:22 +0000 (GMT) Received: from smtp.tlslab.ibm.com (unknown [9.101.4.1]) by d06av26.portsmouth.uk.ibm.com (Postfix) with SMTP; Wed, 2 Mar 2022 17:31:22 +0000 (GMT) Received: from yukon.ibmuc.com (unknown [9.171.58.125]) by smtp.tlslab.ibm.com (Postfix) with ESMTP id 096622200FE; Wed, 2 Mar 2022 18:31:20 +0100 (CET) From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: linux-spi@vger.kernel.org, linux-mtd@lists.infradead.org Cc: Mark Brown , Tudor Ambarus , Pratyush Yadav , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , linux-aspeed@lists.ozlabs.org, Joel Stanley , Andrew Jeffery , Chin-Ting Kuo , devicetree@vger.kernel.org, Rob Herring , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Subject: [PATCH v2 04/10] spi: spi-mem: Add driver for Aspeed SMC controllers Date: Wed, 2 Mar 2022 18:31:08 +0100 Message-Id: <20220302173114.927476-5-clg@kaod.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220302173114.927476-1-clg@kaod.org> References: <20220302173114.927476-1-clg@kaod.org> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: UlooaQ4hJ9NPbz11YtX1TaqeleFwPvUB X-Proofpoint-ORIG-GUID: UlooaQ4hJ9NPbz11YtX1TaqeleFwPvUB X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.64.514 definitions=2022-03-02_12,2022-02-26_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1034 adultscore=0 spamscore=0 impostorscore=0 malwarescore=0 bulkscore=0 mlxlogscore=999 phishscore=0 lowpriorityscore=0 suspectscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2201110000 definitions=main-2203020076 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220302_093157_347255_86285272 X-CRM114-Status: GOOD ( 33.38 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org VGhpcyBTUEkgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFzcGVlZCBzdGF0aWMgbWVtb3J5 IGNvbnRyb2xsZXJzCm9mIHRoZSBBU1QyNjAwLCBBU1QyNTAwIGFuZCBBU1QyNDAwIFNvQ3MgdXNp bmcgdGhlIHNwaS1tZW0gaW50ZXJmYWNlLgoKICogQVNUMjYwMCBGaXJtd2FyZSBTUEkgTWVtb3J5 IENvbnRyb2xsZXIgKEZNQykKICAgLiBCTUMgZmlybXdhcmUKICAgLiAzIGNoaXAgc2VsZWN0IHBp bnMgKENFMCB+IENFMikKICAgLiBPbmx5IHN1cHBvcnRzIFNQSSB0eXBlIGZsYXNoIG1lbW9yeQog ICAuIGRpZmZlcmVudCBzZWdtZW50IHJlZ2lzdGVyIGludGVyZmFjZQogICAuIHNpbmdsZSwgZHVh bCBhbmQgcXVhZCBtb2RlLgoKICogQVNUMjYwMCBTUEkgRmxhc2ggQ29udHJvbGxlciAoU1BJMSBh bmQgU1BJMikKICAgLiBob3N0IGZpcm13YXJlCiAgIC4gMiBjaGlwIHNlbGVjdCBwaW5zIChDRTAg fiBDRTEpCiAgIC4gZGlmZmVyZW50IHNlZ21lbnQgcmVnaXN0ZXIgaW50ZXJmYWNlCiAgIC4gc2lu Z2xlLCBkdWFsIGFuZCBxdWFkIG1vZGUuCgogKiBBU1QyNTAwIEZpcm13YXJlIFNQSSBNZW1vcnkg Q29udHJvbGxlciAoRk1DKQogICAuIEJNQyBmaXJtd2FyZQogICAuIDMgY2hpcCBzZWxlY3QgcGlu cyAoQ0UwIH4gQ0UyKQogICAuIHN1cHBvcnRzIFNQSSB0eXBlIGZsYXNoIG1lbW9yeSAoQ0UwLUNF MSkKICAgLiBDRTIgY2FuIGJlIG9mIE5PUiB0eXBlIGZsYXNoIGJ1dCB0aGlzIGlzIG5vdCBzdXBw b3J0ZWQgYnkgdGhlIGRyaXZlcgogICAuIHNpbmdsZSwgZHVhbCBtb2RlLgoKICogQVNUMjUwMCBT UEkgRmxhc2ggQ29udHJvbGxlciAoU1BJMSBhbmQgU1BJMikKICAgLiBob3N0IGZpcm13YXJlCiAg IC4gMiBjaGlwIHNlbGVjdCBwaW5zIChDRTAgfiBDRTEpCiAgIC4gc2luZ2xlLCBkdWFsIG1vZGUu CgogKiBBU1QyNDAwIE5ldyBTdGF0aWMgTWVtb3J5IENvbnRyb2xsZXIgKGFsc28gcmVmZXJyZWQg YXMgRk1DKQogICAuIEJNQyBmaXJtd2FyZQogICAuIE5ldyByZWdpc3RlciBzZXQKICAgLiA1IGNo aXAgc2VsZWN0IHBpbnMgKENFMCDiiLwgQ0U0KQogICAuIHN1cHBvcnRzIE5PUiBmbGFzaCwgTkFO RCBmbGFzaCBhbmQgU1BJIGZsYXNoIG1lbW9yeS4KICAgLiBzaW5nbGUsIGR1YWwgYW5kIHF1YWQg bW9kZS4KCkVhY2ggY29udHJvbGxlciBoYXMgYSBtZW1vcnkgcmFuZ2Ugb24gd2hpY2ggZmxhc2gg ZGV2aWNlcyBjb250ZW50cyBhcmUKbWFwcGVkLiBFYWNoIGRldmljZSBpcyBhc3NpZ25lZCBhIHdp bmRvdyB0aGF0IGNhbiBiZSBjaGFuZ2VkIGF0IGJvb3RpbWUKd2l0aCB0aGUgU2VnbWVudCBBZGRy ZXNzIFJlZ2lzdGVycy4KCkVhY2ggU1BJIGZsYXNoIGRldmljZSBjYW4gdGhlbiBiZSBhY2Nlc3Nl ZCBpbiB0d28gbW9kZXM6IENvbW1hbmQgYW5kClVzZXIuIFdoZW4gaW4gVXNlciBtb2RlLCBTUEkg dHJhbnNmZXJzIGFyZSBpbml0aWF0ZWQgd2l0aCBhY2Nlc3NlcyB0bwp0aGUgbWVtb3J5IHNlZ21l bnQgb2YgYSBkZXZpY2UuIFdoZW4gaW4gQ29tbWFuZCBtb2RlLCBtZW1vcnkKb3BlcmF0aW9ucyBv biB0aGUgbWVtb3J5IHNlZ21lbnQgb2YgYSBkZXZpY2UgZ2VuZXJhdGUgU1BJIGNvbW1hbmRzCmF1 dG9tYXRpY2FsbHkgdXNpbmcgYSBDb250cm9sIFJlZ2lzdGVyIGZvciB0aGUgc2V0dGluZ3MuCgpU aGlzIGluaXRpYWwgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBVc2VyIG1vZGUuIENvbW1hbmQgbW9k ZSBuZWVkcyBhIGxpdHRsZQptb3JlIHdvcmsgdG8gY2hlY2sgdGhhdCB0aGUgbWVtb3J5IHdpbmRv dyBvbiB0aGUgQUhCIGJ1cyBmaXRzIHRoZSBkZXZpY2UKc2l6ZS4gSXQgd2lsbCBjb21lIGxhdGVy IHdoZW4gc3VwcG9ydCBmb3IgZGlyZWN0IG1hcHBpbmcgaXMgYWRkZWQuCgpTaW5nbGUgYW5kIGR1 YWwgbW9kZSBSWCB0cmFuc2ZlcnMgYXJlIHN1cHBvcnRlZC4gT3RoZXIgdHlwZXMgdGhhbiBTUEkK YXJlIG5vdCBzdXBwb3J0ZWQuCgpTaWduZWQtb2ZmLWJ5OiBDaGluLVRpbmcgS3VvIDxjaGluLXRp bmdfa3VvQGFzcGVlZHRlY2guY29tPgpTaWduZWQtb2ZmLWJ5OiBDw6lkcmljIExlIEdvYXRlciA8 Y2xnQGthb2Qub3JnPgotLS0KIGRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMgICAgICAgICAg ICB8IDcxMSArKysrKysrKysrKysrKysrKysrKysrKysKIE1BSU5UQUlORVJTICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL210ZC9zcGktbm9yL2NvbnRyb2xsZXJz L0tjb25maWcgfCAgIDIgKy0KIGRyaXZlcnMvc3BpL0tjb25maWcgICAgICAgICAgICAgICAgICAg ICB8ICAxMSArCiBkcml2ZXJzL3NwaS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAgIDEg KwogNSBmaWxlcyBjaGFuZ2VkLCA3MjUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMKCmRpZmYgLS1naXQg YS9kcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jIGIvZHJpdmVycy9zcGkvc3BpLWFzcGVlZC1z bWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY4OGY5NDcyZTBk NwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvc3BpL3NwaS1hc3BlZWQtc21jLmMKQEAgLTAs MCArMSw3MTEgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVy CisvKgorICogQVNQRUVEIEZNQy9TUEkgTWVtb3J5IENvbnRyb2xsZXIgRHJpdmVyCisgKgorICog Q29weXJpZ2h0IChjKSAyMDE1LTIwMjIsIElCTSBDb3Jwb3JhdGlvbi4KKyAqIENvcHlyaWdodCAo YykgMjAyMCwgQVNQRUVEIENvcnBvcmF0aW9uLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jbGsu aD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2lu Y2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2 aWNlLmg+CisjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaS9z cGktbWVtLmg+CisKKyNkZWZpbmUgREVWSUNFX05BTUUgInNwaS1hc3BlZWQtc21jIgorCisjZGVm aW5lIEFTUEVFRF9TUElfREVGQVVMVF9GUkVRCQk1MDAwMDAwMAorCisvKiBUeXBlIHNldHRpbmcg UmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ09ORklHX1JFRwkJCTB4MAorI2RlZmluZSAgIENPTkZJR19U WVBFX1NQSQkJMHgyCisKKy8qIENFIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0VfQ1RS TF9SRUcJCQkweDQKKworLyogQ0V4IENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0UwX0NU UkxfUkVHCQkJMHgxMAorI2RlZmluZSAgIENUUkxfSU9fTU9ERV9NQVNLCQlHRU5NQVNLKDMwLCAy OCkKKyNkZWZpbmUgICBDVFJMX0lPX1NJTkdMRV9EQVRBCSAgICAgICAgMHgwCisjZGVmaW5lICAg Q1RSTF9JT19EVUFMX0RBVEEJCUJJVCgyOSkKKyNkZWZpbmUgICBDVFJMX0lPX1FVQURfREFUQQkJ QklUKDMwKQorI2RlZmluZSAgIENUUkxfQ09NTUFORF9TSElGVAkJMTYKKyNkZWZpbmUgICBDVFJM X0lPX0RVTU1ZX1NFVChkdW1teSkJCQkJCVwKKwkoKCgoKGR1bW15KSA+PiAyKSAmIDB4MSkgPDwg MTQpIHwgKCgoZHVtbXkpICYgMHgzKSA8PCA2KSkKKyNkZWZpbmUgICBDVFJMX0NFX1NUT1BfQUNU SVZFCQlCSVQoMikKKyNkZWZpbmUgICBDVFJMX0lPX01PREVfQ01EX01BU0sJCUdFTk1BU0soMSwg MCkKKyNkZWZpbmUgICBDVFJMX0lPX01PREVfTk9STUFMCQkweDAKKyNkZWZpbmUgICBDVFJMX0lP X01PREVfUkVBRAkJMHgxCisjZGVmaW5lICAgQ1RSTF9JT19NT0RFX1dSSVRFCQkweDIKKyNkZWZp bmUgICBDVFJMX0lPX01PREVfVVNFUgkJMHgzCisKKyNkZWZpbmUgICBDVFJMX0lPX0NNRF9NQVNL CQkweGYwZmY0MGMzCisKKy8qIENFeCBBZGRyZXNzIERlY29kaW5nIFJhbmdlIFJlZ2lzdGVyICov CisjZGVmaW5lIENFMF9TRUdNRU5UX0FERFJfUkVHCQkweDMwCisKK2VudW0gYXNwZWVkX3NwaV9j dGxfcmVnX3ZhbHVlIHsKKwlBU1BFRURfU1BJX0JBU0UsCisJQVNQRUVEX1NQSV9SRUFELAorCUFT UEVFRF9TUElfV1JJVEUsCisJQVNQRUVEX1NQSV9NQVgsCit9OworCitzdHJ1Y3QgYXNwZWVkX3Nw aTsKKworc3RydWN0IGFzcGVlZF9zcGlfY2hpcCB7CisJc3RydWN0IGFzcGVlZF9zcGkJKmFzcGk7 CisJdTMyCQkJIGNzOworCXZvaWQgX19pb21lbQkJKmN0bDsKKwl2b2lkIF9faW9tZW0JCSphaGJf YmFzZTsKKwl1MzIJCQkgYWhiX3dpbmRvd19zaXplOworCXUzMgkJCSBjdGxfdmFsW0FTUEVFRF9T UElfTUFYXTsKKwl1MzIJCQkgY2xrX2ZyZXE7Cit9OworCitzdHJ1Y3QgYXNwZWVkX3NwaV9kYXRh IHsKKwl1MzIJY3RsMDsKKwl1MzIJbWF4X2NzOworCWJvb2wJaGFzdHlwZTsKKwl1MzIJbW9kZV9i aXRzOworCXUzMgl3ZTA7CisKKwl1MzIgKCpzZWdtZW50X3N0YXJ0KShzdHJ1Y3QgYXNwZWVkX3Nw aSAqYXNwaSwgdTMyIHJlZyk7CisJdTMyICgqc2VnbWVudF9lbmQpKHN0cnVjdCBhc3BlZWRfc3Bp ICphc3BpLCB1MzIgcmVnKTsKKwl1MzIgKCpzZWdtZW50X3JlZykoc3RydWN0IGFzcGVlZF9zcGkg KmFzcGksIHUzMiBzdGFydCwgdTMyIGVuZCk7Cit9OworCisjZGVmaW5lIEFTUEVFRF9TUElfTUFY X05VTV9DUwk1CisKK3N0cnVjdCBhc3BlZWRfc3BpIHsKKwljb25zdCBzdHJ1Y3QgYXNwZWVkX3Nw aV9kYXRhCSpkYXRhOworCisJdm9pZCBfX2lvbWVtCQkqcmVnczsKKwl2b2lkIF9faW9tZW0JCSph aGJfYmFzZTsKKwl1MzIJCQkgYWhiX2Jhc2VfcGh5OworCXUzMgkJCSBhaGJfd2luZG93X3NpemU7 CisJc3RydWN0IGRldmljZQkJKmRldjsKKworCXN0cnVjdCBjbGsJCSpjbGs7CisJdTMyCQkJIGNs a19mcmVxOworCisJc3RydWN0IGFzcGVlZF9zcGlfY2hpcAkgY2hpcHNbQVNQRUVEX1NQSV9NQVhf TlVNX0NTXTsKK307CisKK3N0YXRpYyB1MzIgYXNwZWVkX3NwaV9nZXRfaW9fbW9kZShjb25zdCBz dHJ1Y3Qgc3BpX21lbV9vcCAqb3ApCit7CisJc3dpdGNoIChvcC0+ZGF0YS5idXN3aWR0aCkgewor CWNhc2UgMToKKwkJcmV0dXJuIENUUkxfSU9fU0lOR0xFX0RBVEE7CisJY2FzZSAyOgorCQlyZXR1 cm4gQ1RSTF9JT19EVUFMX0RBVEE7CisJY2FzZSA0OgorCQlyZXR1cm4gQ1RSTF9JT19RVUFEX0RB VEE7CisJZGVmYXVsdDoKKwkJcmV0dXJuIENUUkxfSU9fU0lOR0xFX0RBVEE7CisJfQorfQorCitz dGF0aWMgdm9pZCBhc3BlZWRfc3BpX3NldF9pb19tb2RlKHN0cnVjdCBhc3BlZWRfc3BpX2NoaXAg KmNoaXAsIHUzMiBpb19tb2RlKQoreworCXUzMiBjdGw7CisKKwlpZiAoaW9fbW9kZSA+IDApIHsK KwkJY3RsID0gcmVhZGwoY2hpcC0+Y3RsKSAmIH5DVFJMX0lPX01PREVfTUFTSzsKKwkJY3RsIHw9 IGlvX21vZGU7CisJCXdyaXRlbChjdGwsIGNoaXAtPmN0bCk7CisJfQorfQorCitzdGF0aWMgdm9p ZCBhc3BlZWRfc3BpX3N0YXJ0X3VzZXIoc3RydWN0IGFzcGVlZF9zcGlfY2hpcCAqY2hpcCkKK3sK Kwl1MzIgY3RsID0gY2hpcC0+Y3RsX3ZhbFtBU1BFRURfU1BJX0JBU0VdOworCisJY3RsIHw9IENU UkxfSU9fTU9ERV9VU0VSIHwgQ1RSTF9DRV9TVE9QX0FDVElWRTsKKwl3cml0ZWwoY3RsLCBjaGlw LT5jdGwpOworCisJY3RsICY9IH5DVFJMX0NFX1NUT1BfQUNUSVZFOworCXdyaXRlbChjdGwsIGNo aXAtPmN0bCk7Cit9CisKK3N0YXRpYyB2b2lkIGFzcGVlZF9zcGlfc3RvcF91c2VyKHN0cnVjdCBh c3BlZWRfc3BpX2NoaXAgKmNoaXApCit7CisJdTMyIGN0bCA9IGNoaXAtPmN0bF92YWxbQVNQRUVE X1NQSV9SRUFEXSB8CisJCUNUUkxfSU9fTU9ERV9VU0VSIHwgQ1RSTF9DRV9TVE9QX0FDVElWRTsK KworCXdyaXRlbChjdGwsIGNoaXAtPmN0bCk7CisKKwkvKiBSZXN0b3JlIGRlZmF1bHRzICovCisJ d3JpdGVsKGNoaXAtPmN0bF92YWxbQVNQRUVEX1NQSV9SRUFEXSwgY2hpcC0+Y3RsKTsKK30KKwor c3RhdGljIGludCBhc3BlZWRfc3BpX3JlYWRfZnJvbV9haGIodm9pZCAqYnVmLCB2b2lkIF9faW9t ZW0gKnNyYywgc2l6ZV90IGxlbikKK3sKKwlzaXplX3Qgb2Zmc2V0ID0gMDsKKworCWlmIChJU19B TElHTkVEKCh1aW50cHRyX3Qpc3JjLCBzaXplb2YodWludHB0cl90KSkgJiYKKwkgICAgSVNfQUxJ R05FRCgodWludHB0cl90KWJ1Ziwgc2l6ZW9mKHVpbnRwdHJfdCkpKSB7CisJCWlvcmVhZDMyX3Jl cChzcmMsIGJ1ZiwgbGVuID4+IDIpOworCQlvZmZzZXQgPSBsZW4gJiB+MHgzOworCQlsZW4gLT0g b2Zmc2V0OworCX0KKwlpb3JlYWQ4X3JlcChzcmMsICh1OCAqKWJ1ZiArIG9mZnNldCwgbGVuKTsK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhc3BlZWRfc3BpX3dyaXRlX3RvX2FoYih2b2lk IF9faW9tZW0gKmRzdCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQoreworCXNpemVfdCBv ZmZzZXQgPSAwOworCisJaWYgKElTX0FMSUdORUQoKHVpbnRwdHJfdClkc3QsIHNpemVvZih1aW50 cHRyX3QpKSAmJgorCSAgICBJU19BTElHTkVEKCh1aW50cHRyX3QpYnVmLCBzaXplb2YodWludHB0 cl90KSkpIHsKKwkJaW93cml0ZTMyX3JlcChkc3QsIGJ1ZiwgbGVuID4+IDIpOworCQlvZmZzZXQg PSBsZW4gJiB+MHgzOworCQlsZW4gLT0gb2Zmc2V0OworCX0KKwlpb3dyaXRlOF9yZXAoZHN0LCAo Y29uc3QgdTggKilidWYgKyBvZmZzZXQsIGxlbik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2 b2lkIGFzcGVlZF9zcGlfc2VuZF9jbWRfYWRkcihzdHJ1Y3QgYXNwZWVkX3NwaV9jaGlwICpjaGlw LCB1OCBhZGRyX25ieXRlcywKKwkJCQkgICAgIHU2NCBvZmZzZXQsIHUzMiBvcGNvZGUpCit7CisJ c3RydWN0IGFzcGVlZF9zcGkgKmFzcGkgPSBjaGlwLT5hc3BpOworCV9fYmUzMiB0ZW1wOworCXUz MiBjbWRhZGRyOworCisJc3dpdGNoIChhZGRyX25ieXRlcykgeworCWRlZmF1bHQ6CisJCWRldl93 YXJuX29uY2UoYXNwaS0+ZGV2LCAiVW5leHBlY3RlZCBhZGRyZXNzIHdpZHRoICV1LCBkZWZhdWx0 aW5nIHRvIDMiLAorCQkJICAgICAgYWRkcl9uYnl0ZXMpOworCQlmYWxsdGhyb3VnaDsKKwljYXNl IDM6CisJCWNtZGFkZHIgPSBvZmZzZXQgJiAweEZGRkZGRjsKKwkJY21kYWRkciB8PSBvcGNvZGUg PDwgMjQ7CisKKwkJdGVtcCA9IGNwdV90b19iZTMyKGNtZGFkZHIpOworCQlhc3BlZWRfc3BpX3dy aXRlX3RvX2FoYihjaGlwLT5haGJfYmFzZSwgJnRlbXAsIDQpOworCQlicmVhazsKKwljYXNlIDQ6 CisJCXRlbXAgPSBjcHVfdG9fYmUzMihvZmZzZXQpOworCQlhc3BlZWRfc3BpX3dyaXRlX3RvX2Fo YihjaGlwLT5haGJfYmFzZSwgJm9wY29kZSwgMSk7CisJCWFzcGVlZF9zcGlfd3JpdGVfdG9fYWhi KGNoaXAtPmFoYl9iYXNlLCAmdGVtcCwgNCk7CisJCWJyZWFrOworCX0KK30KKworc3RhdGljIGlu dCBhc3BlZWRfc3BpX3JlYWRfcmVnKHN0cnVjdCBhc3BlZWRfc3BpX2NoaXAgKmNoaXAsCisJCQkg ICAgICAgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKQoreworCWFzcGVlZF9zcGlfc3RhcnRf dXNlcihjaGlwKTsKKwlhc3BlZWRfc3BpX3dyaXRlX3RvX2FoYihjaGlwLT5haGJfYmFzZSwgJm9w LT5jbWQub3Bjb2RlLCAxKTsKKwlhc3BlZWRfc3BpX3JlYWRfZnJvbV9haGIob3AtPmRhdGEuYnVm LmluLAorCQkJCSBjaGlwLT5haGJfYmFzZSwgb3AtPmRhdGEubmJ5dGVzKTsKKwlhc3BlZWRfc3Bp X3N0b3BfdXNlcihjaGlwKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhc3BlZWRfc3Bp X3dyaXRlX3JlZyhzdHJ1Y3QgYXNwZWVkX3NwaV9jaGlwICpjaGlwLAorCQkJCWNvbnN0IHN0cnVj dCBzcGlfbWVtX29wICpvcCkKK3sKKwlhc3BlZWRfc3BpX3N0YXJ0X3VzZXIoY2hpcCk7CisJYXNw ZWVkX3NwaV93cml0ZV90b19haGIoY2hpcC0+YWhiX2Jhc2UsICZvcC0+Y21kLm9wY29kZSwgMSk7 CisJYXNwZWVkX3NwaV93cml0ZV90b19haGIoY2hpcC0+YWhiX2Jhc2UsIG9wLT5kYXRhLmJ1Zi5v dXQsCisJCQkJb3AtPmRhdGEubmJ5dGVzKTsKKwlhc3BlZWRfc3BpX3N0b3BfdXNlcihjaGlwKTsK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIHNzaXplX3QgYXNwZWVkX3NwaV9yZWFkX3VzZXIoc3Ry dWN0IGFzcGVlZF9zcGlfY2hpcCAqY2hpcCwKKwkJCQkgICAgY29uc3Qgc3RydWN0IHNwaV9tZW1f b3AgKm9wLAorCQkJCSAgICB1NjQgb2Zmc2V0LCBzaXplX3QgbGVuLCB2b2lkICpidWYpCit7CisJ aW50IGlvX21vZGUgPSBhc3BlZWRfc3BpX2dldF9pb19tb2RlKG9wKTsKKwl1OCBkdW1teSA9IDB4 RkY7CisJaW50IGk7CisKKwlhc3BlZWRfc3BpX3N0YXJ0X3VzZXIoY2hpcCk7CisJYXNwZWVkX3Nw aV9zZW5kX2NtZF9hZGRyKGNoaXAsIG9wLT5hZGRyLm5ieXRlcywgb2Zmc2V0LCBvcC0+Y21kLm9w Y29kZSk7CisJaWYgKG9wLT5kdW1teS5idXN3aWR0aCAmJiBvcC0+ZHVtbXkubmJ5dGVzKSB7CisJ CWZvciAoaSA9IDA7IGkgPCBvcC0+ZHVtbXkubmJ5dGVzIC8gb3AtPmR1bW15LmJ1c3dpZHRoOyBp KyspCisJCQlhc3BlZWRfc3BpX3dyaXRlX3RvX2FoYihjaGlwLT5haGJfYmFzZSwgJmR1bW15LAlz aXplb2YoZHVtbXkpKTsKKwl9CisKKwlhc3BlZWRfc3BpX3NldF9pb19tb2RlKGNoaXAsIGlvX21v ZGUpOworCisJYXNwZWVkX3NwaV9yZWFkX2Zyb21fYWhiKGJ1ZiwgY2hpcC0+YWhiX2Jhc2UsIGxl bik7CisJYXNwZWVkX3NwaV9zdG9wX3VzZXIoY2hpcCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBzc2l6ZV90IGFzcGVlZF9zcGlfd3JpdGVfdXNlcihzdHJ1Y3QgYXNwZWVkX3NwaV9jaGlwICpj aGlwLAorCQkJCSAgICAgY29uc3Qgc3RydWN0IHNwaV9tZW1fb3AgKm9wKQoreworCWFzcGVlZF9z cGlfc3RhcnRfdXNlcihjaGlwKTsKKwlhc3BlZWRfc3BpX3NlbmRfY21kX2FkZHIoY2hpcCwgb3At PmFkZHIubmJ5dGVzLCBvcC0+YWRkci52YWwsIG9wLT5jbWQub3Bjb2RlKTsKKwlhc3BlZWRfc3Bp X3dyaXRlX3RvX2FoYihjaGlwLT5haGJfYmFzZSwgb3AtPmRhdGEuYnVmLm91dCwgb3AtPmRhdGEu bmJ5dGVzKTsKKwlhc3BlZWRfc3BpX3N0b3BfdXNlcihjaGlwKTsKKwlyZXR1cm4gMDsKK30KKwor Lyogc3VwcG9ydCBmb3IgMS0xLTEsIDEtMS0yIG9yIDEtMS00ICovCitzdGF0aWMgYm9vbCBhc3Bl ZWRfc3BpX3N1cHBvcnRzX29wKHN0cnVjdCBzcGlfbWVtICptZW0sIGNvbnN0IHN0cnVjdCBzcGlf bWVtX29wICpvcCkKK3sKKwlpZiAob3AtPmNtZC5idXN3aWR0aCA+IDEpCisJCXJldHVybiBmYWxz ZTsKKworCWlmIChvcC0+YWRkci5uYnl0ZXMgIT0gMCkgeworCQlpZiAob3AtPmFkZHIuYnVzd2lk dGggPiAxIHx8IG9wLT5hZGRyLm5ieXRlcyA+IDQpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJ aWYgKG9wLT5kdW1teS5uYnl0ZXMgIT0gMCkgeworCQlpZiAob3AtPmR1bW15LmJ1c3dpZHRoID4g MSB8fCBvcC0+ZHVtbXkubmJ5dGVzID4gNykKKwkJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAo b3AtPmRhdGEubmJ5dGVzICE9IDAgJiYgb3AtPmRhdGEuYnVzd2lkdGggPiA0KQorCQlyZXR1cm4g ZmFsc2U7CisKKwlyZXR1cm4gc3BpX21lbV9kZWZhdWx0X3N1cHBvcnRzX29wKG1lbSwgb3ApOwor fQorCitzdGF0aWMgaW50IGRvX2FzcGVlZF9zcGlfZXhlY19vcChzdHJ1Y3Qgc3BpX21lbSAqbWVt LCBjb25zdCBzdHJ1Y3Qgc3BpX21lbV9vcCAqb3ApCit7CisJc3RydWN0IGFzcGVlZF9zcGkgKmFz cGkgPSBzcGlfY29udHJvbGxlcl9nZXRfZGV2ZGF0YShtZW0tPnNwaS0+bWFzdGVyKTsKKwlzdHJ1 Y3QgYXNwZWVkX3NwaV9jaGlwICpjaGlwID0gJmFzcGktPmNoaXBzW21lbS0+c3BpLT5jaGlwX3Nl bGVjdF07CisJdTMyIGFkZHJfbW9kZSwgYWRkcl9tb2RlX2JhY2t1cDsKKwl1MzIgY3RsX3ZhbDsK KwlpbnQgcmV0ID0gMDsKKworCWRldl9kYmcoYXNwaS0+ZGV2LAorCQkiQ0UlZCAlcyBPUCAlI3gg bW9kZTolZC4lZC4lZC4lZCBuYWRkcjolI3ggbmR1bW1pZXM6JSN4IGxlbjolI3giLAorCQljaGlw LT5jcywgb3AtPmRhdGEuZGlyID09IFNQSV9NRU1fREFUQV9JTiA/ICJyZWFkIiA6ICJ3cml0ZSIs CisJCW9wLT5jbWQub3Bjb2RlLCBvcC0+Y21kLmJ1c3dpZHRoLCBvcC0+YWRkci5idXN3aWR0aCwK KwkJb3AtPmR1bW15LmJ1c3dpZHRoLCBvcC0+ZGF0YS5idXN3aWR0aCwKKwkJb3AtPmFkZHIubmJ5 dGVzLCBvcC0+ZHVtbXkubmJ5dGVzLCBvcC0+ZGF0YS5uYnl0ZXMpOworCisJYWRkcl9tb2RlID0g cmVhZGwoYXNwaS0+cmVncyArIENFX0NUUkxfUkVHKTsKKwlhZGRyX21vZGVfYmFja3VwID0gYWRk cl9tb2RlOworCisJY3RsX3ZhbCA9IGNoaXAtPmN0bF92YWxbQVNQRUVEX1NQSV9CQVNFXTsKKwlj dGxfdmFsICY9IH5DVFJMX0lPX0NNRF9NQVNLOworCisJY3RsX3ZhbCB8PSBvcC0+Y21kLm9wY29k ZSA8PCBDVFJMX0NPTU1BTkRfU0hJRlQ7CisKKwkvKiA0QllURSBhZGRyZXNzIG1vZGUgKi8KKwlp ZiAob3AtPmFkZHIubmJ5dGVzKSB7CisJCWlmIChvcC0+YWRkci5uYnl0ZXMgPT0gNCkKKwkJCWFk ZHJfbW9kZSB8PSAoMHgxMSA8PCBjaGlwLT5jcyk7CisJCWVsc2UKKwkJCWFkZHJfbW9kZSAmPSB+ KDB4MTEgPDwgY2hpcC0+Y3MpOworCX0KKworCWlmIChvcC0+ZHVtbXkuYnVzd2lkdGggJiYgb3At PmR1bW15Lm5ieXRlcykKKwkJY3RsX3ZhbCB8PSBDVFJMX0lPX0RVTU1ZX1NFVChvcC0+ZHVtbXku bmJ5dGVzIC8gb3AtPmR1bW15LmJ1c3dpZHRoKTsKKworCWlmIChvcC0+ZGF0YS5uYnl0ZXMgIT0g MCkgeworCQlpZiAob3AtPmRhdGEuYnVzd2lkdGgpCisJCQljdGxfdmFsIHw9IGFzcGVlZF9zcGlf Z2V0X2lvX21vZGUob3ApOworCX0KKworCWlmIChvcC0+ZGF0YS5kaXIgPT0gU1BJX01FTV9EQVRB X09VVCkKKwkJY3RsX3ZhbCB8PSBDVFJMX0lPX01PREVfV1JJVEU7CisJZWxzZQorCQljdGxfdmFs IHw9IENUUkxfSU9fTU9ERV9SRUFEOworCisJaWYgKGFkZHJfbW9kZSAhPSBhZGRyX21vZGVfYmFj a3VwKQorCQl3cml0ZWwoYWRkcl9tb2RlLCBhc3BpLT5yZWdzICsgQ0VfQ1RSTF9SRUcpOworCXdy aXRlbChjdGxfdmFsLCBjaGlwLT5jdGwpOworCisJaWYgKG9wLT5kYXRhLmRpciA9PSBTUElfTUVN X0RBVEFfSU4pIHsKKwkJaWYgKCFvcC0+YWRkci5uYnl0ZXMpCisJCQlyZXQgPSBhc3BlZWRfc3Bp X3JlYWRfcmVnKGNoaXAsIG9wKTsKKwkJZWxzZQorCQkJcmV0ID0gYXNwZWVkX3NwaV9yZWFkX3Vz ZXIoY2hpcCwgb3AsIG9wLT5hZGRyLnZhbCwKKwkJCQkJCSAgIG9wLT5kYXRhLm5ieXRlcywgb3At PmRhdGEuYnVmLmluKTsKKwl9IGVsc2UgeworCQlpZiAoIW9wLT5hZGRyLm5ieXRlcykKKwkJCXJl dCA9IGFzcGVlZF9zcGlfd3JpdGVfcmVnKGNoaXAsIG9wKTsKKwkJZWxzZQorCQkJcmV0ID0gYXNw ZWVkX3NwaV93cml0ZV91c2VyKGNoaXAsIG9wKTsKKwl9CisKKwkvKiBSZXN0b3JlIGRlZmF1bHRz ICovCisJaWYgKGFkZHJfbW9kZSAhPSBhZGRyX21vZGVfYmFja3VwKQorCQl3cml0ZWwoYWRkcl9t b2RlX2JhY2t1cCwgYXNwaS0+cmVncyArIENFX0NUUkxfUkVHKTsKKwl3cml0ZWwoY2hpcC0+Y3Rs X3ZhbFtBU1BFRURfU1BJX1JFQURdLCBjaGlwLT5jdGwpOworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYyBpbnQgYXNwZWVkX3NwaV9leGVjX29wKHN0cnVjdCBzcGlfbWVtICptZW0sIGNvbnN0IHN0 cnVjdCBzcGlfbWVtX29wICpvcCkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gZG9fYXNwZWVkX3Nw aV9leGVjX29wKG1lbSwgb3ApOworCWlmIChyZXQpCisJCWRldl9lcnIoJm1lbS0+c3BpLT5kZXYs ICJvcGVyYXRpb24gZmFpbGVkOiAlZFxuIiwgcmV0KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0 aWMgY29uc3QgY2hhciAqYXNwZWVkX3NwaV9nZXRfbmFtZShzdHJ1Y3Qgc3BpX21lbSAqbWVtKQor eworCXN0cnVjdCBhc3BlZWRfc3BpICphc3BpID0gc3BpX2NvbnRyb2xsZXJfZ2V0X2RldmRhdGEo bWVtLT5zcGktPm1hc3Rlcik7CisJc3RydWN0IGRldmljZSAqZGV2ID0gYXNwaS0+ZGV2OworCisJ cmV0dXJuIGRldm1fa2FzcHJpbnRmKGRldiwgR0ZQX0tFUk5FTCwgIiVzLiVkIiwgZGV2X25hbWUo ZGV2KSwgbWVtLT5zcGktPmNoaXBfc2VsZWN0KTsKK30KKworc3RydWN0IGFzcGVlZF9zcGlfd2lu ZG93IHsKKwl1MzIgY3M7CisJdTMyIG9mZnNldDsKKwl1MzIgc2l6ZTsKK307CisKK3N0YXRpYyB2 b2lkIGFzcGVlZF9zcGlfZ2V0X3dpbmRvd3Moc3RydWN0IGFzcGVlZF9zcGkgKmFzcGksCisJCQkJ ICAgc3RydWN0IGFzcGVlZF9zcGlfd2luZG93IHdpbmRvd3NbQVNQRUVEX1NQSV9NQVhfTlVNX0NT XSkKK3sKKwljb25zdCBzdHJ1Y3QgYXNwZWVkX3NwaV9kYXRhICpkYXRhID0gYXNwaS0+ZGF0YTsK Kwl1MzIgcmVnX3ZhbDsKKwl1MzIgY3M7CisKKwlmb3IgKGNzID0gMDsgY3MgPCBhc3BpLT5kYXRh LT5tYXhfY3M7IGNzKyspIHsKKwkJcmVnX3ZhbCA9IHJlYWRsKGFzcGktPnJlZ3MgKyBDRTBfU0VH TUVOVF9BRERSX1JFRyArIGNzICogNCk7CisJCXdpbmRvd3NbY3NdLmNzID0gY3M7CisJCXdpbmRv d3NbY3NdLnNpemUgPSBkYXRhLT5zZWdtZW50X2VuZChhc3BpLCByZWdfdmFsKSAtCisJCQlkYXRh LT5zZWdtZW50X3N0YXJ0KGFzcGksIHJlZ192YWwpOworCQl3aW5kb3dzW2NzXS5vZmZzZXQgPSBj cyA/IHdpbmRvd3NbY3MgLSAxXS5vZmZzZXQgKyB3aW5kb3dzW2NzIC0gMV0uc2l6ZSA6IDA7CisJ CWRldl92ZGJnKGFzcGktPmRldiwgIkNFJWQgb2Zmc2V0PTB4JS44eCBzaXplPTB4JXhcbiIsIGNz LAorCQkJIHdpbmRvd3NbY3NdLm9mZnNldCwgd2luZG93c1tjc10uc2l6ZSk7CisJfQorfQorCisv KgorICogT24gdGhlIEFTVDI2MDAsIHNvbWUgQ0Ugd2luZG93cyBhcmUgY2xvc2VkIGJ5IGRlZmF1 bHQgYXQgcmVzZXQgYnV0CisgKiBVLUJvb3Qgc2hvdWxkIG9wZW4gYWxsLgorICovCitzdGF0aWMg aW50IGFzcGVlZF9zcGlfY2hpcF9zZXRfZGVmYXVsdF93aW5kb3coc3RydWN0IGFzcGVlZF9zcGlf Y2hpcCAqY2hpcCkKK3sKKwlzdHJ1Y3QgYXNwZWVkX3NwaSAqYXNwaSA9IGNoaXAtPmFzcGk7CisJ c3RydWN0IGFzcGVlZF9zcGlfd2luZG93IHdpbmRvd3NbQVNQRUVEX1NQSV9NQVhfTlVNX0NTXSA9 IHsgMCB9OworCXN0cnVjdCBhc3BlZWRfc3BpX3dpbmRvdyAqd2luID0gJndpbmRvd3NbY2hpcC0+ Y3NdOworCisJYXNwZWVkX3NwaV9nZXRfd2luZG93cyhhc3BpLCB3aW5kb3dzKTsKKworCWNoaXAt PmFoYl9iYXNlID0gYXNwaS0+YWhiX2Jhc2UgKyB3aW4tPm9mZnNldDsKKwljaGlwLT5haGJfd2lu ZG93X3NpemUgPSB3aW4tPnNpemU7CisKKwlkZXZfZGJnKGFzcGktPmRldiwgIkNFJWQgZGVmYXVs dCB3aW5kb3cgWyAweCUuOHggLSAweCUuOHggXSAlZE1CIiwKKwkJY2hpcC0+Y3MsIGFzcGktPmFo Yl9iYXNlX3BoeSArIHdpbi0+b2Zmc2V0LAorCQlhc3BpLT5haGJfYmFzZV9waHkgKyB3aW4tPm9m ZnNldCArIHdpbi0+c2l6ZSAtIDEsCisJCXdpbi0+c2l6ZSA+PiAyMCk7CisKKwlyZXR1cm4gY2hp cC0+YWhiX3dpbmRvd19zaXplID8gMCA6IC0xOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHNw aV9jb250cm9sbGVyX21lbV9vcHMgYXNwZWVkX3NwaV9tZW1fb3BzID0geworCS5zdXBwb3J0c19v cCA9IGFzcGVlZF9zcGlfc3VwcG9ydHNfb3AsCisJLmV4ZWNfb3AgPSBhc3BlZWRfc3BpX2V4ZWNf b3AsCisJLmdldF9uYW1lID0gYXNwZWVkX3NwaV9nZXRfbmFtZSwKK307CisKK3N0YXRpYyB2b2lk IGFzcGVlZF9zcGlfY2hpcF9zZXRfdHlwZShzdHJ1Y3QgYXNwZWVkX3NwaSAqYXNwaSwgdW5zaWdu ZWQgaW50IGNzLCBpbnQgdHlwZSkKK3sKKwl1MzIgcmVnOworCisJcmVnID0gcmVhZGwoYXNwaS0+ cmVncyArIENPTkZJR19SRUcpOworCXJlZyAmPSB+KDB4MyA8PCAoY3MgKiAyKSk7CisJcmVnIHw9 IHR5cGUgPDwgKGNzICogMik7CisJd3JpdGVsKHJlZywgYXNwaS0+cmVncyArIENPTkZJR19SRUcp OworfQorCitzdGF0aWMgdm9pZCBhc3BlZWRfc3BpX2NoaXBfZW5hYmxlKHN0cnVjdCBhc3BlZWRf c3BpICphc3BpLCB1bnNpZ25lZCBpbnQgY3MsIGJvb2wgZW5hYmxlKQoreworCXUzMiB3ZV9iaXQg PSBCSVQoYXNwaS0+ZGF0YS0+d2UwICsgY3MpOworCXUzMiByZWcgPSByZWFkbChhc3BpLT5yZWdz ICsgQ09ORklHX1JFRyk7CisKKwlpZiAoZW5hYmxlKQorCQlyZWcgfD0gd2VfYml0OworCWVsc2UK KwkJcmVnICY9IH53ZV9iaXQ7CisJd3JpdGVsKHJlZywgYXNwaS0+cmVncyArIENPTkZJR19SRUcp OworfQorCitzdGF0aWMgaW50IGFzcGVlZF9zcGlfc2V0dXAoc3RydWN0IHNwaV9kZXZpY2UgKnNw aSkKK3sKKwlzdHJ1Y3QgYXNwZWVkX3NwaSAqYXNwaSA9IHNwaV9jb250cm9sbGVyX2dldF9kZXZk YXRhKHNwaS0+bWFzdGVyKTsKKwljb25zdCBzdHJ1Y3QgYXNwZWVkX3NwaV9kYXRhICpkYXRhID0g YXNwaS0+ZGF0YTsKKwl1bnNpZ25lZCBpbnQgY3MgPSBzcGktPmNoaXBfc2VsZWN0OworCXN0cnVj dCBhc3BlZWRfc3BpX2NoaXAgKmNoaXAgPSAmYXNwaS0+Y2hpcHNbY3NdOworCisJY2hpcC0+YXNw aSA9IGFzcGk7CisJY2hpcC0+Y3MgPSBjczsKKwljaGlwLT5jdGwgPSBhc3BpLT5yZWdzICsgZGF0 YS0+Y3RsMCArIGNzICogNDsKKworCS8qIFRoZSBkcml2ZXIgb25seSBzdXBwb3J0cyBTUEkgdHlw ZSBmbGFzaCAqLworCWlmIChkYXRhLT5oYXN0eXBlKQorCQlhc3BlZWRfc3BpX2NoaXBfc2V0X3R5 cGUoYXNwaSwgY3MsIENPTkZJR19UWVBFX1NQSSk7CisKKwlpZiAoYXNwZWVkX3NwaV9jaGlwX3Nl dF9kZWZhdWx0X3dpbmRvdyhjaGlwKSA8IDApIHsKKwkJZGV2X3dhcm4oYXNwaS0+ZGV2LCAiQ0Ul ZCB3aW5kb3cgaW52YWxpZCIsIGNzKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJYXNwZWVk X3NwaV9jaGlwX2VuYWJsZShhc3BpLCBjcywgdHJ1ZSk7CisKKwljaGlwLT5jdGxfdmFsW0FTUEVF RF9TUElfQkFTRV0gPSBDVFJMX0NFX1NUT1BfQUNUSVZFIHwgQ1RSTF9JT19NT0RFX1VTRVI7CisK KwlkZXZfZGJnKGFzcGktPmRldiwgIkNFJWQgc2V0dXAgZG9uZVxuIiwgY3MpOworCXJldHVybiAw OworfQorCitzdGF0aWMgdm9pZCBhc3BlZWRfc3BpX2NsZWFudXAoc3RydWN0IHNwaV9kZXZpY2Ug KnNwaSkKK3sKKwlzdHJ1Y3QgYXNwZWVkX3NwaSAqYXNwaSA9IHNwaV9jb250cm9sbGVyX2dldF9k ZXZkYXRhKHNwaS0+bWFzdGVyKTsKKwl1bnNpZ25lZCBpbnQgY3MgPSBzcGktPmNoaXBfc2VsZWN0 OworCisJYXNwZWVkX3NwaV9jaGlwX2VuYWJsZShhc3BpLCBjcywgZmFsc2UpOworCisJZGV2X2Ri Zyhhc3BpLT5kZXYsICJDRSVkIGNsZWFudXAgZG9uZVxuIiwgY3MpOworfQorCitzdGF0aWMgdm9p ZCBhc3BlZWRfc3BpX2VuYWJsZShzdHJ1Y3QgYXNwZWVkX3NwaSAqYXNwaSwgYm9vbCBlbmFibGUp Cit7CisJaW50IGNzOworCisJZm9yIChjcyA9IDA7IGNzIDwgYXNwaS0+ZGF0YS0+bWF4X2NzOyBj cysrKQorCQlhc3BlZWRfc3BpX2NoaXBfZW5hYmxlKGFzcGksIGNzLCBlbmFibGUpOworfQorCitz dGF0aWMgaW50IGFzcGVlZF9zcGlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK K3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCWNvbnN0IHN0cnVjdCBhc3Bl ZWRfc3BpX2RhdGEgKmRhdGE7CisJc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxyOworCXN0cnVj dCBhc3BlZWRfc3BpICphc3BpOworCXN0cnVjdCByZXNvdXJjZSAqcmVzOworCWludCByZXQ7CisK KwlkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKCZwZGV2LT5kZXYpOworCWlmICghZGF0 YSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwljdGxyID0gZGV2bV9zcGlfYWxsb2NfbWFzdGVyKGRl diwgc2l6ZW9mKCphc3BpKSk7CisJaWYgKCFjdGxyKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWFz cGkgPSBzcGlfY29udHJvbGxlcl9nZXRfZGV2ZGF0YShjdGxyKTsKKwlwbGF0Zm9ybV9zZXRfZHJ2 ZGF0YShwZGV2LCBhc3BpKTsKKwlhc3BpLT5kYXRhID0gZGF0YTsKKwlhc3BpLT5kZXYgPSBkZXY7 CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDAp OworCWFzcGktPnJlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMpOworCWlmIChJ U19FUlIoYXNwaS0+cmVncykpIHsKKwkJZGV2X2VycihkZXYsICJtaXNzaW5nIEFIQiByZWdpc3Rl ciB3aW5kb3dcbiIpOworCQlyZXR1cm4gUFRSX0VSUihhc3BpLT5yZWdzKTsKKwl9CisKKwlyZXMg PSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDEpOworCWFzcGkt PmFoYl9iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVzKTsKKwlpZiAoSVNfRVJS KGFzcGktPmFoYl9iYXNlKSkgeworCQlkZXZfZXJyKGRldiwgIm1pc3NpbmcgQUhCIG1hcHBpbmcg d2luZG93XG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoYXNwaS0+YWhiX2Jhc2UpOworCX0KKworCWFz cGktPmFoYl93aW5kb3dfc2l6ZSA9IHJlc291cmNlX3NpemUocmVzKTsKKwlhc3BpLT5haGJfYmFz ZV9waHkgPSByZXMtPnN0YXJ0OworCisJYXNwaS0+Y2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5k ZXYsIE5VTEwpOworCWlmIChJU19FUlIoYXNwaS0+Y2xrKSkgeworCQlkZXZfZXJyKGRldiwgIm1p c3NpbmcgY2xvY2tcbiIpOworCQlyZXR1cm4gUFRSX0VSUihhc3BpLT5jbGspOworCX0KKworCWFz cGktPmNsa19mcmVxID0gY2xrX2dldF9yYXRlKGFzcGktPmNsayk7CisJaWYgKCFhc3BpLT5jbGtf ZnJlcSkgeworCQlkZXZfZXJyKGRldiwgImludmFsaWQgY2xvY2tcbiIpOworCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoYXNwaS0+Y2xrKTsKKwlpZiAo cmV0KSB7CisJCWRldl9lcnIoZGV2LCAiY2FuIG5vdCBlbmFibGUgdGhlIGNsb2NrXG4iKTsKKwkJ cmV0dXJuIHJldDsKKwl9CisKKwkvKiBJUlEgaXMgZm9yIERNQSwgd2hpY2ggdGhlIGRyaXZlciBk b2Vzbid0IHN1cHBvcnQgeWV0ICovCisKKwljdGxyLT5tb2RlX2JpdHMgPSBTUElfUlhfRFVBTCB8 IFNQSV9UWF9EVUFMIHwgZGF0YS0+bW9kZV9iaXRzOworCWN0bHItPmJ1c19udW0gPSBwZGV2LT5p ZDsKKwljdGxyLT5tZW1fb3BzID0gJmFzcGVlZF9zcGlfbWVtX29wczsKKwljdGxyLT5zZXR1cCA9 IGFzcGVlZF9zcGlfc2V0dXA7CisJY3Rsci0+Y2xlYW51cCA9IGFzcGVlZF9zcGlfY2xlYW51cDsK KwljdGxyLT5udW1fY2hpcHNlbGVjdCA9IGRhdGEtPm1heF9jczsKKwljdGxyLT5kZXYub2Zfbm9k ZSA9IGRldi0+b2Zfbm9kZTsKKworCXJldCA9IGRldm1fc3BpX3JlZ2lzdGVyX2NvbnRyb2xsZXIo ZGV2LCBjdGxyKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgInNwaV9yZWdp c3Rlcl9jb250cm9sbGVyIGZhaWxlZFxuIik7CisJCWdvdG8gZGlzYWJsZV9jbGs7CisJfQorCXJl dHVybiAwOworCitkaXNhYmxlX2NsazoKKwljbGtfZGlzYWJsZV91bnByZXBhcmUoYXNwaS0+Y2xr KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGFzcGVlZF9zcGlfcmVtb3ZlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGFzcGVlZF9zcGkgKmFzcGkgPSBw bGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCWFzcGVlZF9zcGlfZW5hYmxlKGFzcGksIGZh bHNlKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUoYXNwaS0+Y2xrKTsKKwlyZXR1cm4gMDsKK30K KworLyoKKyAqIEFIQiBtYXBwaW5ncworICovCisKKy8qCisgKiBUaGUgU2VnbWVudCBSZWdpc3Rl cnMgb2YgdGhlIEFTVDI0MDAgYW5kIEFTVDI1MDAgdXNlIGEgOE1CIHVuaXQuCisgKiBUaGUgYWRk cmVzcyByYW5nZSBpcyBlbmNvZGVkIHdpdGggYWJzb2x1dGUgYWRkcmVzc2VzIGluIHRoZSBvdmVy YWxsCisgKiBtYXBwaW5nIHdpbmRvdy4KKyAqLworc3RhdGljIHUzMiBhc3BlZWRfc3BpX3NlZ21l bnRfc3RhcnQoc3RydWN0IGFzcGVlZF9zcGkgKmFzcGksIHUzMiByZWcpCit7CisJcmV0dXJuICgo cmVnID4+IDE2KSAmIDB4RkYpIDw8IDIzOworfQorCitzdGF0aWMgdTMyIGFzcGVlZF9zcGlfc2Vn bWVudF9lbmQoc3RydWN0IGFzcGVlZF9zcGkgKmFzcGksIHUzMiByZWcpCit7CisJcmV0dXJuICgo cmVnID4+IDI0KSAmIDB4RkYpIDw8IDIzOworfQorCitzdGF0aWMgdTMyIGFzcGVlZF9zcGlfc2Vn bWVudF9yZWcoc3RydWN0IGFzcGVlZF9zcGkgKmFzcGksIHUzMiBzdGFydCwgdTMyIGVuZCkKK3sK KwlyZXR1cm4gKCgoc3RhcnQgPj4gMjMpICYgMHhGRikgPDwgMTYpIHwgKCgoZW5kID4+IDIzKSAm IDB4RkYpIDw8IDI0KTsKK30KKworLyoKKyAqIFRoZSBTZWdtZW50IFJlZ2lzdGVycyBvZiB0aGUg QVNUMjYwMCB1c2UgYSAxTUIgdW5pdC4gVGhlIGFkZHJlc3MKKyAqIHJhbmdlIGlzIGVuY29kZWQg d2l0aCBvZmZzZXRzIGluIHRoZSBvdmVyYWxsIG1hcHBpbmcgd2luZG93LgorICovCisKKyNkZWZp bmUgQVNUMjYwMF9TRUdfQUREUl9NQVNLIDB4MGZmMDAwMDAKKworc3RhdGljIHUzMiBhc3BlZWRf c3BpX3NlZ21lbnRfYXN0MjYwMF9zdGFydChzdHJ1Y3QgYXNwZWVkX3NwaSAqYXNwaSwKKwkJCQkJ ICAgIHUzMiByZWcpCit7CisJdTMyIHN0YXJ0X29mZnNldCA9IChyZWcgPDwgMTYpICYgQVNUMjYw MF9TRUdfQUREUl9NQVNLOworCisJcmV0dXJuIGFzcGktPmFoYl9iYXNlX3BoeSArIHN0YXJ0X29m ZnNldDsKK30KKworc3RhdGljIHUzMiBhc3BlZWRfc3BpX3NlZ21lbnRfYXN0MjYwMF9lbmQoc3Ry dWN0IGFzcGVlZF9zcGkgKmFzcGksCisJCQkJCSAgdTMyIHJlZykKK3sKKwl1MzIgZW5kX29mZnNl dCA9IHJlZyAmIEFTVDI2MDBfU0VHX0FERFJfTUFTSzsKKworCS8qIHNlZ21lbnQgaXMgZGlzYWJs ZWQgKi8KKwlpZiAoIWVuZF9vZmZzZXQpCisJCXJldHVybiBhc3BpLT5haGJfYmFzZV9waHk7CisK KwlyZXR1cm4gYXNwaS0+YWhiX2Jhc2VfcGh5ICsgZW5kX29mZnNldCArIDB4MTAwMDAwOworfQor CitzdGF0aWMgdTMyIGFzcGVlZF9zcGlfc2VnbWVudF9hc3QyNjAwX3JlZyhzdHJ1Y3QgYXNwZWVk X3NwaSAqYXNwaSwKKwkJCQkJICB1MzIgc3RhcnQsIHUzMiBlbmQpCit7CisJLyogZGlzYWJsZSB6 ZXJvIHNpemUgc2VnbWVudHMgKi8KKwlpZiAoc3RhcnQgPT0gZW5kKQorCQlyZXR1cm4gMDsKKwor CXJldHVybiAoKHN0YXJ0ICYgQVNUMjYwMF9TRUdfQUREUl9NQVNLKSA+PiAxNikgfAorCQkoKGVu ZCAtIDEpICYgQVNUMjYwMF9TRUdfQUREUl9NQVNLKTsKK30KKworLyoKKyAqIFBsYXRmb3JtIGRl ZmluaXRpb25zCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXNwZWVkX3NwaV9kYXRhIGFzdDI0 MDBfZm1jX2RhdGEgPSB7CisJLm1heF9jcwkgICAgICAgPSA1LAorCS5oYXN0eXBlICAgICAgID0g dHJ1ZSwKKwkud2UwCSAgICAgICA9IDE2LAorCS5jdGwwCSAgICAgICA9IENFMF9DVFJMX1JFRywK Kwkuc2VnbWVudF9zdGFydCA9IGFzcGVlZF9zcGlfc2VnbWVudF9zdGFydCwKKwkuc2VnbWVudF9l bmQgICA9IGFzcGVlZF9zcGlfc2VnbWVudF9lbmQsCisJLnNlZ21lbnRfcmVnICAgPSBhc3BlZWRf c3BpX3NlZ21lbnRfcmVnLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBhc3BlZWRfc3BpX2Rh dGEgYXN0MjUwMF9mbWNfZGF0YSA9IHsKKwkubWF4X2NzCSAgICAgICA9IDMsCisJLmhhc3R5cGUg ICAgICAgPSB0cnVlLAorCS53ZTAJICAgICAgID0gMTYsCisJLmN0bDAJICAgICAgID0gQ0UwX0NU UkxfUkVHLAorCS5zZWdtZW50X3N0YXJ0ID0gYXNwZWVkX3NwaV9zZWdtZW50X3N0YXJ0LAorCS5z ZWdtZW50X2VuZCAgID0gYXNwZWVkX3NwaV9zZWdtZW50X2VuZCwKKwkuc2VnbWVudF9yZWcgICA9 IGFzcGVlZF9zcGlfc2VnbWVudF9yZWcsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGFzcGVl ZF9zcGlfZGF0YSBhc3QyNTAwX3NwaV9kYXRhID0geworCS5tYXhfY3MJICAgICAgID0gMiwKKwku aGFzdHlwZSAgICAgICA9IGZhbHNlLAorCS53ZTAJICAgICAgID0gMTYsCisJLmN0bDAJICAgICAg ID0gQ0UwX0NUUkxfUkVHLAorCS5zZWdtZW50X3N0YXJ0ID0gYXNwZWVkX3NwaV9zZWdtZW50X3N0 YXJ0LAorCS5zZWdtZW50X2VuZCAgID0gYXNwZWVkX3NwaV9zZWdtZW50X2VuZCwKKwkuc2VnbWVu dF9yZWcgICA9IGFzcGVlZF9zcGlfc2VnbWVudF9yZWcsCit9OworCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGFzcGVlZF9zcGlfZGF0YSBhc3QyNjAwX2ZtY19kYXRhID0geworCS5tYXhfY3MJICAgICAg ID0gMywKKwkuaGFzdHlwZSAgICAgICA9IGZhbHNlLAorCS5tb2RlX2JpdHMgICAgID0gU1BJX1JY X1FVQUQgfCBTUElfUlhfUVVBRCwKKwkud2UwCSAgICAgICA9IDE2LAorCS5jdGwwCSAgICAgICA9 IENFMF9DVFJMX1JFRywKKwkuc2VnbWVudF9zdGFydCA9IGFzcGVlZF9zcGlfc2VnbWVudF9hc3Qy NjAwX3N0YXJ0LAorCS5zZWdtZW50X2VuZCAgID0gYXNwZWVkX3NwaV9zZWdtZW50X2FzdDI2MDBf ZW5kLAorCS5zZWdtZW50X3JlZyAgID0gYXNwZWVkX3NwaV9zZWdtZW50X2FzdDI2MDBfcmVnLAor fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBhc3BlZWRfc3BpX2RhdGEgYXN0MjYwMF9zcGlfZGF0 YSA9IHsKKwkubWF4X2NzCSAgICAgICA9IDIsCisJLmhhc3R5cGUgICAgICAgPSBmYWxzZSwKKwku bW9kZV9iaXRzICAgICA9IFNQSV9SWF9RVUFEIHwgU1BJX1JYX1FVQUQsCisJLndlMAkgICAgICAg PSAxNiwKKwkuY3RsMAkgICAgICAgPSBDRTBfQ1RSTF9SRUcsCisJLnNlZ21lbnRfc3RhcnQgPSBh c3BlZWRfc3BpX3NlZ21lbnRfYXN0MjYwMF9zdGFydCwKKwkuc2VnbWVudF9lbmQgICA9IGFzcGVl ZF9zcGlfc2VnbWVudF9hc3QyNjAwX2VuZCwKKwkuc2VnbWVudF9yZWcgICA9IGFzcGVlZF9zcGlf c2VnbWVudF9hc3QyNjAwX3JlZywKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNl X2lkIGFzcGVlZF9zcGlfbWF0Y2hlc1tdID0geworCXsgLmNvbXBhdGlibGUgPSAiYXNwZWVkLGFz dDI0MDAtZm1jIiwgLmRhdGEgPSAmYXN0MjQwMF9mbWNfZGF0YSB9LAorCXsgLmNvbXBhdGlibGUg PSAiYXNwZWVkLGFzdDI1MDAtZm1jIiwgLmRhdGEgPSAmYXN0MjUwMF9mbWNfZGF0YSB9LAorCXsg LmNvbXBhdGlibGUgPSAiYXNwZWVkLGFzdDI1MDAtc3BpIiwgLmRhdGEgPSAmYXN0MjUwMF9zcGlf ZGF0YSB9LAorCXsgLmNvbXBhdGlibGUgPSAiYXNwZWVkLGFzdDI2MDAtZm1jIiwgLmRhdGEgPSAm YXN0MjYwMF9mbWNfZGF0YSB9LAorCXsgLmNvbXBhdGlibGUgPSAiYXNwZWVkLGFzdDI2MDAtc3Bp IiwgLmRhdGEgPSAmYXN0MjYwMF9zcGlfZGF0YSB9LAorCXsgfQorfTsKK01PRFVMRV9ERVZJQ0Vf VEFCTEUob2YsIGFzcGVlZF9zcGlfbWF0Y2hlcyk7CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1f ZHJpdmVyIGFzcGVlZF9zcGlfZHJpdmVyID0geworCS5wcm9iZQkJCT0gYXNwZWVkX3NwaV9wcm9i ZSwKKwkucmVtb3ZlCQkJPSBhc3BlZWRfc3BpX3JlbW92ZSwKKwkuZHJpdmVyCT0geworCQkubmFt ZQkJPSBERVZJQ0VfTkFNRSwKKwkJLm9mX21hdGNoX3RhYmxlID0gYXNwZWVkX3NwaV9tYXRjaGVz LAorCX0KK307CisKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYXNwZWVkX3NwaV9kcml2ZXIpOwor CitNT0RVTEVfREVTQ1JJUFRJT04oIkFTUEVFRCBTdGF0aWMgTWVtb3J5IENvbnRyb2xsZXIgRHJp dmVyIik7CitNT0RVTEVfQVVUSE9SKCJDaGluLVRpbmcgS3VvIDxjaGluLXRpbmdfa3VvQGFzcGVl ZHRlY2guY29tPiIpOworTU9EVUxFX0FVVEhPUigiQ2VkcmljIExlIEdvYXRlciA8Y2xnQGthb2Qu b3JnPiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5F UlMgYi9NQUlOVEFJTkVSUwppbmRleCBmNWFiNzc1NDhlZjYuLmNiMTYzMDUyZmU2MSAxMDA2NDQK LS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTI5MzMsNiArMjkzMyw3IEBA IEw6CW9wZW5ibWNAbGlzdHMub3psYWJzLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJl cnMpCiBMOglsaW51eC1zcGlAdmdlci5rZXJuZWwub3JnCiBTOglNYWludGFpbmVkCiBGOglEb2N1 bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL2FzcGVlZCxhc3QyNjAwLWZtYy55YW1s CitGOglkcml2ZXJzL3NwaS9zcGktYXNwZWVkLXNtYy5jCiAKIEFTUEVFRCBWSURFTyBFTkdJTkUg RFJJVkVSCiBNOglFZGRpZSBKYW1lcyA8ZWFqYW1lc0BsaW51eC5pYm0uY29tPgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tdGQvc3BpLW5vci9jb250cm9sbGVycy9LY29uZmlnIGIvZHJpdmVycy9tdGQv c3BpLW5vci9jb250cm9sbGVycy9LY29uZmlnCmluZGV4IDg3NmE0NzA0MmZlYy4uMzVmMThjMDFi MWQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9zcGktbm9yL2NvbnRyb2xsZXJzL0tjb25maWcK KysrIGIvZHJpdmVycy9tdGQvc3BpLW5vci9jb250cm9sbGVycy9LY29uZmlnCkBAIC0xLDcgKzEs NyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiBjb25maWcgU1BJ X0FTUEVFRF9TTUNfTVREX1NQSV9OT1IKIAl0cmlzdGF0ZSAiQXNwZWVkIGZsYXNoIGNvbnRyb2xs ZXJzIGluIFNQSSBtb2RlIgotCWRlcGVuZHMgb24gQVJDSF9BU1BFRUQgfHwgQ09NUElMRV9URVNU CisJZGVwZW5kcyBvbiAoQVJDSF9BU1BFRUQgJiYgIVNQSV9BU1BFRURfU01DKSB8fCBDT01QSUxF X1RFU1QKIAlkZXBlbmRzIG9uIEhBU19JT01FTSAmJiBPRgogCWhlbHAKIAkgIFRoaXMgZW5hYmxl cyBzdXBwb3J0IGZvciB0aGUgRmlybXdhcmUgTWVtb3J5IGNvbnRyb2xsZXIgKEZNQykKZGlmZiAt LWdpdCBhL2RyaXZlcnMvc3BpL0tjb25maWcgYi9kcml2ZXJzL3NwaS9LY29uZmlnCmluZGV4IDgz ZTM1MmIwYzhmOS4uZGM0NDQ5MzQzOWZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9LY29uZmln CisrKyBiL2RyaXZlcnMvc3BpL0tjb25maWcKQEAgLTEwMSw2ICsxMDEsMTcgQEAgY29uZmlnIFNQ SV9BUk1BREFfMzcwMAogCSAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBTUEkgY29udHJv bGxlciBwcmVzZW50IG9uIHRoZQogCSAgTWFydmVsbCBBcm1hZGEgMzcwMCBTb0NzLgogCitjb25m aWcgU1BJX0FTUEVFRF9TTUMKKwl0cmlzdGF0ZSAiQXNwZWVkIGZsYXNoIGNvbnRyb2xsZXJzIGlu IFNQSSBtb2RlIgorCWRlcGVuZHMgb24gKEFSQ0hfQVNQRUVEICYmICFDT05GSUdfU1BJX0FTUEVF RF9TTUNfTVREX1NQSV9OT1IpIHx8IENPTVBJTEVfVEVTVAorCWRlcGVuZHMgb24gT0YKKwloZWxw CisJICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIEZpcm13YXJlIE1lbW9yeSBjb250cm9s bGVyIChGTUMpCisJICBpbiB0aGUgQXNwZWVkIEFTVDI2MDAsIEFTVDI1MDAgYW5kIEFTVDI0MDAg U29DcyB3aGVuIGF0dGFjaGVkCisJICB0byBTUEkgTk9SIGNoaXBzLCBhbmQgc3VwcG9ydCBmb3Ig dGhlIFNQSSBmbGFzaCBtZW1vcnkKKwkgIGNvbnRyb2xsZXIgKFNQSSkgZm9yIHRoZSBob3N0IGZp cm13YXJlLiBUaGUgaW1wbGVtZW50YXRpb24KKwkgIG9ubHkgc3VwcG9ydHMgU1BJIE5PUi4KKwog Y29uZmlnIFNQSV9BVE1FTAogCXRyaXN0YXRlICJBdG1lbCBTUEkgQ29udHJvbGxlciIKIAlkZXBl bmRzIG9uIEFSQ0hfQVQ5MSB8fCBDT01QSUxFX1RFU1QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3Bp L01ha2VmaWxlIGIvZHJpdmVycy9zcGkvTWFrZWZpbGUKaW5kZXggNjk5ZGI5NWM4NDQxLi4zZGQw ZTY0OWJlOTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL01ha2VmaWxlCisrKyBiL2RyaXZlcnMv c3BpL01ha2VmaWxlCkBAIC0xOSw2ICsxOSw3IEBAIG9iai0kKENPTkZJR19TUElfQUxURVJBX0NP UkUpCQkrPSBzcGktYWx0ZXJhLWNvcmUubwogb2JqLSQoQ09ORklHX1NQSV9BTFRFUkFfREZMKQkJ Kz0gc3BpLWFsdGVyYS1kZmwubwogb2JqLSQoQ09ORklHX1NQSV9BUjkzNFgpCQkrPSBzcGktYXI5 MzR4Lm8KIG9iai0kKENPTkZJR19TUElfQVJNQURBXzM3MDApCQkrPSBzcGktYXJtYWRhLTM3MDAu bworb2JqLSQoQ09ORklHX1NQSV9BU1BFRURfU01DKQkJKz0gc3BpLWFzcGVlZC1zbWMubwogb2Jq LSQoQ09ORklHX1NQSV9BVE1FTCkJCQkrPSBzcGktYXRtZWwubwogb2JqLSQoQ09ORklHX1NQSV9B VE1FTF9RVUFEU1BJKQkJKz0gYXRtZWwtcXVhZHNwaS5vCiBvYmotJChDT05GSUdfU1BJX0FUOTFf VVNBUlQpCQkrPSBzcGktYXQ5MS11c2FydC5vCi0tIAoyLjM0LjEKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Np b24gbWFpbGluZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtbXRkLwo=