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 X-Spam-Level: X-Spam-Status: No, score=-8.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,T_DKIMWL_WL_HIGH,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5A3F6C04A6B for ; Mon, 6 May 2019 12:52:47 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 24219205C9 for ; Mon, 6 May 2019 12:52:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="OKIKcSD9"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="pbSoVWMN"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ti.com header.i=@ti.com header.b="WCAVYHVl" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 24219205C9 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=ti.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=of/5YGVHL6xpHl2ZChxhhuvwD3LiQQ0VrTkP35Gd6CY=; b=OKIKcSD9c3qdir IpFR+8Hzqil6q4Ms/ITpywUsHcB2eOc9OjiZ7VsyW8Ls6t42oWWqMz+epyse4o6la0eKw0sdiw+KE B6sgeLkMKAaxqoF5FIqXXZe6gpPkfXYK7H7ppizJtwTPSd5bwrxfxoJlTdml8JzSDR67MyQjDpSGh UMfarhvdM5B2LV50jBl1g4gw1N4ETQzbSDyXykjEBpHM/rCpvtGp+SxZHliMRZ/EeZVRNwtLorcsP 6rhGoc+yZbcVrR2zQEFuqGiZJxSxb/juuJMdE2SbVjy4CUbSXDBVToFVVGIZU3Unmf7YxKOjtAB/b HW67c2/1BYY2ehFTnIEw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hNd6f-0008RU-92; Mon, 06 May 2019 12:52:33 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hNd6a-0008Hp-1U for linux-arm-kernel@bombadil.infradead.org; Mon, 06 May 2019 12:52:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:Content-Type: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=gcHJTzn/ad9fpmbq6OlOw+H1dNMZeARlPggnanOnKEI=; b=pbSoVWMNHAnwoMeHKjZWIpebKX Zs7u5QvnvN2MbnxtqM6NfQ1wbA2A0eGRethXuE7oJCz3CzYogJWsb6EHStFL8SnUJwjhy4O1XIjbx XeQ7ljD6LEejJEBgXvIYExZ3PscG0XDRqSuDTKpHDvRgQRQEpQk2Tn+KEQCpZNhmlKNfXaAjvE0Iq dENiH5lfgLySIXWEiOG1CI1Nn6JLkMC6gdVAVtevQhc3Wgo9R8X1F9w0twLjD4Pr9dT8hi3w3MeVX 6/SfyPdf9XgZ7fK1aIgdg+xtMdk/Cd8T0J4BKdwoAjIii5ZVO4q+4Xhx1LIHNrmbOs+Xm+vJ31uos wdAwQDbA==; Received: from fllv0015.ext.ti.com ([198.47.19.141]) by casper.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hNcqE-0004xT-OD for linux-arm-kernel@lists.infradead.org; Mon, 06 May 2019 12:35:38 +0000 Received: from fllv0034.itg.ti.com ([10.64.40.246]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id x46CZRod110974; Mon, 6 May 2019 07:35:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1557146127; bh=gcHJTzn/ad9fpmbq6OlOw+H1dNMZeARlPggnanOnKEI=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=WCAVYHVldGpihgAYpQkE1DU1n8SdwJeacpQWv657kDxGZ6CN8CAaHX0ibDQtkd9qX nAXnI7lxs/XnQVyUCL/zJftBAGAMnjKyhSQ+TxGsV5uPf6VZ1SQA4ielB/UkMG5ZIf 8ATxTryYIt8ovRu5kbV0QHLFox0wzfS5tJKyyaPo= Received: from DFLE106.ent.ti.com (dfle106.ent.ti.com [10.64.6.27]) by fllv0034.itg.ti.com (8.15.2/8.15.2) with ESMTPS id x46CZRtR024330 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 6 May 2019 07:35:27 -0500 Received: from DFLE115.ent.ti.com (10.64.6.36) by DFLE106.ent.ti.com (10.64.6.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5; Mon, 6 May 2019 07:35:25 -0500 Received: from fllv0040.itg.ti.com (10.64.41.20) by DFLE115.ent.ti.com (10.64.6.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5 via Frontend Transport; Mon, 6 May 2019 07:35:25 -0500 Received: from feketebors.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by fllv0040.itg.ti.com (8.15.2/8.15.2) with ESMTP id x46CYpUG110286; Mon, 6 May 2019 07:35:22 -0500 From: Peter Ujfalusi To: , , , Subject: [PATCH 10/16] dmaengine: ti: New driver for K3 UDMA - split#1: defines, structs, io func Date: Mon, 6 May 2019 15:34:50 +0300 Message-ID: <20190506123456.6777-11-peter.ujfalusi@ti.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190506123456.6777-1-peter.ujfalusi@ti.com> References: <20190506123456.6777-1-peter.ujfalusi@ti.com> MIME-Version: 1.0 X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190506_133535_045186_AB000359 X-CRM114-Status: GOOD ( 28.59 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, grygorii.strashko@ti.com, lokeshvutla@ti.com, linux-kernel@vger.kernel.org, t-kristo@ti.com, tony@atomide.com, dmaengine@vger.kernel.org, dan.j.williams@intel.com, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org U3BsaXQgcGF0Y2ggZm9yIHJldmlldyBjb250YWluaW5nOiBkZWZpbmVzLCBzdHJ1Y3RzLCBpbyBh bmQgbG93IGxldmVsCmZ1bmN0aW9ucyBhbmQgaW50ZXJydXB0IGNhbGxiYWNrcy4KCkRNQSBkcml2 ZXIgZm9yClRleGFzIEluc3RydW1lbnRzIEszIE5BVlNTIFVuaWZpZWQgRE1BIOKAkyBQZXJpcGhl cmFsIFJvb3QgQ29tcGxleCAoVURNQS1QKQoKVGhlIFVETUEtUCBpcyBpbnRlbmRlZCB0byBwZXJm b3JtIHNpbWlsYXIgKGJ1dCBzaWduaWZpY2FudGx5IHVwZ3JhZGVkKSBmdW5jdGlvbnMKYXMgdGhl IHBhY2tldC1vcmllbnRlZCBETUEgdXNlZCBvbiBwcmV2aW91cyBTb0MgZGV2aWNlcy4gVGhlIFVE TUEtUCBtb2R1bGUKc3VwcG9ydHMgdGhlIHRyYW5zbWlzc2lvbiBhbmQgcmVjZXB0aW9uIG9mIHZh cmlvdXMgcGFja2V0IHR5cGVzLiBUaGUgVURNQS1QIGlzCmFyY2hpdGVjdGVkIHRvIGZhY2lsaXRh dGUgdGhlIHNlZ21lbnRhdGlvbiBhbmQgcmVhc3NlbWJseSBvZiBTb0MgRE1BIGRhdGEKc3RydWN0 dXJlIGNvbXBsaWFudCBwYWNrZXRzIHRvL2Zyb20gc21hbGxlciBkYXRhIGJsb2NrcyB0aGF0IGFy ZSBuYXRpdmVseQpjb21wYXRpYmxlIHdpdGggdGhlIHNwZWNpZmljIHJlcXVpcmVtZW50cyBvZiBl YWNoIGNvbm5lY3RlZCBwZXJpcGhlcmFsLiBNdWx0aXBsZQpUeCBhbmQgUnggY2hhbm5lbHMgYXJl IHByb3ZpZGVkIHdpdGhpbiB0aGUgRE1BIHdoaWNoIGFsbG93IG11bHRpcGxlIHNlZ21lbnRhdGlv bgpvciByZWFzc2VtYmx5IG9wZXJhdGlvbnMgdG8gYmUgb25nb2luZy4gVGhlIERNQSBjb250cm9s bGVyIG1haW50YWlucyBzdGF0ZQppbmZvcm1hdGlvbiBmb3IgZWFjaCBvZiB0aGUgY2hhbm5lbHMg d2hpY2ggYWxsb3dzIHBhY2tldCBzZWdtZW50YXRpb24gYW5kCnJlYXNzZW1ibHkgb3BlcmF0aW9u cyB0byBiZSB0aW1lIGRpdmlzaW9uIG11bHRpcGxleGVkIGJldHdlZW4gY2hhbm5lbHMgaW4gb3Jk ZXIKdG8gc2hhcmUgdGhlIHVuZGVybHlpbmcgRE1BIGhhcmR3YXJlLiBBbiBleHRlcm5hbCBETUEg c2NoZWR1bGVyIGlzIHVzZWQgdG8KY29udHJvbCB0aGUgb3JkZXJpbmcgYW5kIHJhdGUgYXQgd2hp Y2ggdGhpcyBtdWx0aXBsZXhpbmcgb2NjdXJzIGZvciBUcmFuc21pdApvcGVyYXRpb25zLiBUaGUg b3JkZXJpbmcgYW5kIHJhdGUgb2YgUmVjZWl2ZSBvcGVyYXRpb25zIGlzIGluZGlyZWN0bHkgY29u dHJvbGxlZApieSB0aGUgb3JkZXIgaW4gd2hpY2ggYmxvY2tzIGFyZSBwdXNoZWQgaW50byB0aGUg RE1BIG9uIHRoZSBSeCBQU0ktTCBpbnRlcmZhY2UuCgpUaGUgVURNQS1QIGFsc28gc3VwcG9ydHMg YWN0aW5nIGFzIGJvdGggYSBVVEMgYW5kIFVETUEtQyBmb3IgaXRzIGludGVybmFsCmNoYW5uZWxz LiBDaGFubmVscyBpbiB0aGUgVURNQS1QIGNhbiBiZSBjb25maWd1cmVkIHRvIGJlIGVpdGhlciBQ YWNrZXQtQmFzZWQgb3IKVGhpcmQtUGFydHkgY2hhbm5lbHMgb24gYSBjaGFubmVsIGJ5IGNoYW5u ZWwgYmFzaXMuCgpUaGUgaW5pdGlhbCBkcml2ZXIgc3VwcG9ydHM6Ci0gTUVNX1RPX01FTSAoVFIg bW9kZSkKLSBERVZfVE9fTUVNIChQYWNrZXQgLyBUUiBtb2RlKQotIE1FTV9UT19ERVYgKFBhY2tl dCAvIFRSIG1vZGUpCi0gQ3ljbGljIChQYWNrZXQgLyBUUiBtb2RlKQotIE1ldGFkYXRhIGZvciBk ZXNjcmlwdG9ycwoKU2lnbmVkLW9mZi1ieTogUGV0ZXIgVWpmYWx1c2kgPHBldGVyLnVqZmFsdXNp QHRpLmNvbT4KLS0tCiBkcml2ZXJzL2RtYS90aS9rMy11ZG1hLmMgICAgICAgICAgfCAxMDA4ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2RtYS90aS9rMy11ZG1hLmggICAg ICAgICAgfCAgMTI5ICsrKysKIGluY2x1ZGUvZHQtYmluZGluZ3MvZG1hL2szLXVkbWEuaCB8ICAg MjYgKwogMyBmaWxlcyBjaGFuZ2VkLCAxMTYzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2RtYS90aS9rMy11ZG1hLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2RtYS90aS9rMy11ZG1hLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2R0LWJpbmRpbmdz L2RtYS9rMy11ZG1hLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS90aS9rMy11ZG1hLmMgYi9k cml2ZXJzL2RtYS90aS9rMy11ZG1hLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi44MWJjNTJmNTkwNDQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2RtYS90aS9r My11ZG1hLmMKQEAgLTAsMCArMSwxMDA4IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTkgVGV4YXMgSW5zdHJ1bWVudHMgSW5j b3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20KKyAqICBBdXRob3I6IFBldGVyIFVqZmFsdXNp IDxwZXRlci51amZhbHVzaUB0aS5jb20+CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o PgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvZG1hZW5naW5lLmg+ CisjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWFwb29s Lmg+CisjaW5jbHVkZSA8bGludXgvZXJyLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2lu Y2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNs dWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4K KyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgor I2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8bGludXgvb2YuaD4KKyNpbmNs dWRlIDxsaW51eC9vZl9kbWEuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KKyNpbmNs dWRlIDxsaW51eC9vZl9pcnEuaD4KKyNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUuaD4KKyNpbmNs dWRlIDxsaW51eC9jb21wbGV0aW9uLmg+CisjaW5jbHVkZSA8ZHQtYmluZGluZ3MvZG1hL2szLXVk bWEuaD4KKyNpbmNsdWRlIDxsaW51eC9zb2MvdGkvazMtcmluZ2FjYy5oPgorI2luY2x1ZGUgPGxp bnV4L3NvYy90aS90aV9zY2lfcHJvdG9jb2wuaD4KKyNpbmNsdWRlIDxsaW51eC9zb2MvdGkvdGlf c2NpX2ludGFfbXNpLmg+CisjaW5jbHVkZSA8bGludXgvZG1hL3RpLWNwcGk1Lmg+CisKKyNpbmNs dWRlICIuLi92aXJ0LWRtYS5oIgorI2luY2x1ZGUgImszLXVkbWEuaCIKKworc3RydWN0IHVkbWFf c3RhdGljX3RyIHsKKwl1OCBlbHNpemU7IC8qIFJQU1RSMCAqLworCXUxNiBlbGNudDsgLyogUlBT VFIwICovCisJdTE2IGJzdGNudDsgLyogUlBTVFIxICovCit9OworCisjZGVmaW5lIEszX1VETUFf TUFYX1JGTE9XUwkJMTAyNAorI2RlZmluZSBLM19VRE1BX0RFRkFVTFRfUklOR19TSVpFCTE2CisK K3N0cnVjdCB1ZG1hX2NoYW47CisKK2VudW0gdWRtYV9tbXIgeworCU1NUl9HQ0ZHID0gMCwKKwlN TVJfUkNIQU5SVCwKKwlNTVJfVENIQU5SVCwKKwlNTVJfTEFTVCwKK307CisKK3N0YXRpYyBjb25z dCBjaGFyICogY29uc3QgbW1yX25hbWVzW10gPSB7ICJnY2ZnIiwgInJjaGFucnQiLCAidGNoYW5y dCIgfTsKKworc3RydWN0IHVkbWFfdGNoYW4geworCXZvaWQgX19pb21lbSAqcmVnX3J0OworCisJ aW50IGlkOworCXN0cnVjdCBrM19yaW5nICp0X3Jpbmc7IC8qIFRyYW5zbWl0IHJpbmcgKi8KKwlz dHJ1Y3QgazNfcmluZyAqdGNfcmluZzsgLyogVHJhbnNtaXQgQ29tcGxldGlvbiByaW5nICovCit9 OworCitzdHJ1Y3QgdWRtYV9yY2hhbiB7CisJdm9pZCBfX2lvbWVtICpyZWdfcnQ7CisKKwlpbnQg aWQ7CisJc3RydWN0IGszX3JpbmcgKmZkX3Jpbmc7IC8qIEZyZWUgRGVzY3JpcHRvciByaW5nICov CisJc3RydWN0IGszX3JpbmcgKnJfcmluZzsgLyogUmVjZWl2ZSByaW5nKi8KK307CisKK3N0cnVj dCB1ZG1hX3JmbG93IHsKKwl2b2lkIF9faW9tZW0gKnJlZ19yZmxvdzsKKworCWludCBpZDsKK307 CisKK3N0cnVjdCB1ZG1hX21hdGNoX2RhdGEgeworCWJvb2wgZW5hYmxlX21lbWNweV9zdXBwb3J0 OworCXU4IHRwbF9sZXZlbHM7CisJdTMyIGxldmVsX3N0YXJ0X2lkeFtdOworfTsKKworc3RydWN0 IHVkbWFfZGV2IHsKKwlzdHJ1Y3QgZG1hX2RldmljZSBkZGV2OworCXN0cnVjdCBkZXZpY2UgKmRl djsKKwl2b2lkIF9faW9tZW0gKm1tcnNbTU1SX0xBU1RdOworCWNvbnN0IHN0cnVjdCB1ZG1hX21h dGNoX2RhdGEgKm1hdGNoX2RhdGE7CisKKwlzaXplX3QgZGVzY19hbGlnbjsgLyogYWxpZ25tZW50 IHRvIHVzZSBmb3IgZGVzY3JpcHRvcnMgKi8KKworCXN0cnVjdCB1ZG1hX3Rpc2NpX3JtIHRpc2Np X3JtOworCisJc3RydWN0IGszX3JpbmdhY2MgKnJpbmdhY2M7CisKKwlzdHJ1Y3Qgd29ya19zdHJ1 Y3QgcHVyZ2Vfd29yazsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGRlc2NfdG9fcHVyZ2U7CisJc3Bpbmxv Y2tfdCBsb2NrOworCisJaW50IHRjaGFuX2NudDsKKwlpbnQgZWNoYW5fY250OworCWludCByY2hh bl9jbnQ7CisJaW50IHJmbG93X2NudDsKKwl1bnNpZ25lZCBsb25nICp0Y2hhbl9tYXA7CisJdW5z aWduZWQgbG9uZyAqcmNoYW5fbWFwOworCXVuc2lnbmVkIGxvbmcgKnJmbG93X21hcDsKKwl1bnNp Z25lZCBsb25nICpyZmxvd19tYXBfcmVzZXJ2ZWQ7CisKKwlzdHJ1Y3QgdWRtYV90Y2hhbiAqdGNo YW5zOworCXN0cnVjdCB1ZG1hX3JjaGFuICpyY2hhbnM7CisJc3RydWN0IHVkbWFfcmZsb3cgKnJm bG93czsKKworCXN0cnVjdCB1ZG1hX2NoYW4gKmNoYW5uZWxzOworCXUzMiBwc2lsX2Jhc2U7Cit9 OworCitzdHJ1Y3QgdWRtYV9od2Rlc2MgeworCXNpemVfdCBjcHBpNV9kZXNjX3NpemU7CisJdm9p ZCAqY3BwaTVfZGVzY192YWRkcjsKKwlkbWFfYWRkcl90IGNwcGk1X2Rlc2NfcGFkZHI7CisKKwkv KiBUUiBkZXNjcmlwdG9yIGludGVybmFsIHBvaW50ZXJzICovCisJdm9pZCAqdHJfcmVxX2Jhc2U7 CisJc3RydWN0IGNwcGk1X3RyX3Jlc3BfdCAqdHJfcmVzcF9iYXNlOworfTsKKworc3RydWN0IHVk bWFfZGVzYyB7CisJc3RydWN0IHZpcnRfZG1hX2Rlc2MgdmQ7CisKKwlib29sIHRlcm1pbmF0ZWQ7 CisKKwllbnVtIGRtYV90cmFuc2Zlcl9kaXJlY3Rpb24gZGlyOworCisJc3RydWN0IHVkbWFfc3Rh dGljX3RyIHN0YXRpY190cjsKKwl1MzIgcmVzaWR1ZTsKKworCXVuc2lnbmVkIGludCBzZ2xlbjsK Kwl1bnNpZ25lZCBpbnQgZGVzY19pZHg7IC8qIE9ubHkgdXNlZCBmb3IgY3ljbGljIGluIHBhY2tl dCBtb2RlICovCisJdW5zaWduZWQgaW50IHRyX2lkeDsKKworCXUzMiBtZXRhZGF0YV9zaXplOwor CXZvaWQgKm1ldGFkYXRhOyAvKiBwb2ludGVyIHRvIHByb3ZpZGVkIG1ldGFkYXRhIGJ1ZmZlciAo RVBJUCwgUFNkYXRhKSAqLworCisJdW5zaWduZWQgaW50IGh3ZGVzY19jb3VudDsKKwlzdHJ1Y3Qg dWRtYV9od2Rlc2MgaHdkZXNjWzBdOworfTsKKworZW51bSB1ZG1hX2NoYW5fc3RhdGUgeworCVVE TUFfQ0hBTl9JU19JRExFID0gMCwgLyogbm90IGFjdGl2ZSwgbm8gdGVhcmRvd24gaXMgaW4gcHJv Z3Jlc3MgKi8KKwlVRE1BX0NIQU5fSVNfQUNUSVZFLCAvKiBOb3JtYWwgb3BlcmF0aW9uICovCisJ VURNQV9DSEFOX0lTX0FDVElWRV9GTFVTSCwgLyogRmx1c2hpbmcgZm9yIGRlbGF5ZWQgdHggKi8K KwlVRE1BX0NIQU5fSVNfVEVSTUlOQVRJTkcsIC8qIGNoYW5uZWwgaXMgYmVpbmcgdGVybWluYXRl ZCAqLworfTsKKworc3RydWN0IHVkbWFfY2hhbiB7CisJc3RydWN0IHZpcnRfZG1hX2NoYW4gdmM7 CisJc3RydWN0IGRtYV9zbGF2ZV9jb25maWcJY2ZnOworCXN0cnVjdCB1ZG1hX2RldiAqdWQ7CisJ c3RydWN0IHVkbWFfZGVzYyAqZGVzYzsKKwlzdHJ1Y3QgdWRtYV9kZXNjICp0ZXJtaW5hdGVkX2Rl c2M7CisJc3RydWN0IHVkbWFfc3RhdGljX3RyIHN0YXRpY190cjsKKwljaGFyICpuYW1lOworCisJ c3RydWN0IHVkbWFfdGNoYW4gKnRjaGFuOworCXN0cnVjdCB1ZG1hX3JjaGFuICpyY2hhbjsKKwlz dHJ1Y3QgdWRtYV9yZmxvdyAqcmZsb3c7CisKKwlib29sIHBzaWxfcGFpcmVkOworCisJaW50IGly cV9udW1fcmluZzsKKwlpbnQgaXJxX251bV91ZG1hOworCisJYm9vbCBjeWNsaWM7CisJYm9vbCBw YXVzZWQ7CisKKwllbnVtIHVkbWFfY2hhbl9zdGF0ZSBzdGF0ZTsKKwlzdHJ1Y3QgY29tcGxldGlv biB0ZWFyZG93bl9jb21wbGV0ZWQ7CisKKwl1MzIgYmNudDsgLyogbnVtYmVyIG9mIGJ5dGVzIGNv bXBsZXRlZCBzaW5jZSB0aGUgc3RhcnQgb2YgdGhlIGNoYW5uZWwgKi8KKwl1MzIgaW5fcmluZ19j bnQ7IC8qIG51bWJlciBvZiBkZXNjcmlwdG9ycyBpbiBmbGlnaHQgKi8KKworCWJvb2wgcGt0X21v ZGU7IC8qIFRSIG9yIHBhY2tldCAqLworCWJvb2wgbmVlZHNfZXBpYjsgLyogRVBJQiBpcyBuZWVk ZWQgZm9yIHRoZSBjb21tdW5pY2F0aW9uIG9yIG5vdCAqLworCXUzMiBwc2Rfc2l6ZTsgLyogc2l6 ZSBvZiBQcm90b2NvbCBTcGVjaWZpYyBEYXRhICovCisJdTMyIG1ldGFkYXRhX3NpemU7IC8qIChu ZWVkc19lcGliID8gMTY6MCkgKyBwc2Rfc2l6ZSAqLworCXUzMiBoZGVzY19zaXplOyAvKiBTaXpl IG9mIGEgcGFja2V0IGRlc2NyaXB0b3IgaW4gcGFja2V0IG1vZGUgKi8KKwlpbnQgcmVtb3RlX3Ro cmVhZF9pZDsKKwl1MzIgc3JjX3RocmVhZDsKKwl1MzIgZHN0X3RocmVhZDsKKwl1MzIgc3RhdGlj X3RyX3R5cGU7CisJZW51bSB1ZG1hX3RwX2xldmVsIGNoYW5uZWxfdHBsOyAvKiBDaGFubmVsIFRo cm91Z2hwdXQgTGV2ZWwgKi8KKworCS8qIGRtYXBvb2wgZm9yIHBhY2tldCBtb2RlIGRlc2NyaXB0 b3JzICovCisJYm9vbCB1c2VfZG1hX3Bvb2w7CisJc3RydWN0IGRtYV9wb29sICpoZGVzY19wb29s OworCisJdTMyIGlkOworCWVudW0gZG1hX3RyYW5zZmVyX2RpcmVjdGlvbiBkaXI7Cit9OworCitz dGF0aWMgaW5saW5lIHN0cnVjdCB1ZG1hX2RldiAqdG9fdWRtYV9kZXYoc3RydWN0IGRtYV9kZXZp Y2UgKmQpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihkLCBzdHJ1Y3QgdWRtYV9kZXYsIGRkZXYp OworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCB1ZG1hX2NoYW4gKnRvX3VkbWFfY2hhbihzdHJ1 Y3QgZG1hX2NoYW4gKmMpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihjLCBzdHJ1Y3QgdWRtYV9j aGFuLCB2Yy5jaGFuKTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgdWRtYV9kZXNjICp0b191 ZG1hX2Rlc2Moc3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yICp0KQoreworCXJldHVybiBj b250YWluZXJfb2YodCwgc3RydWN0IHVkbWFfZGVzYywgdmQudHgpOworfQorCisvKiBHZW5lcmlj IHJlZ2lzdGVyIGFjY2VzcyBmdW5jdGlvbnMgKi8KK3N0YXRpYyBpbmxpbmUgdTMyIHVkbWFfcmVh ZCh2b2lkIF9faW9tZW0gKmJhc2UsIGludCByZWcpCit7CisJcmV0dXJuIF9fcmF3X3JlYWRsKGJh c2UgKyByZWcpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgdWRtYV93cml0ZSh2b2lkIF9faW9t ZW0gKmJhc2UsIGludCByZWcsIHUzMiB2YWwpCit7CisJX19yYXdfd3JpdGVsKHZhbCwgYmFzZSAr IHJlZyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB1ZG1hX3VwZGF0ZV9iaXRzKHZvaWQgX19p b21lbSAqYmFzZSwgaW50IHJlZywKKwkJCQkgICAgdTMyIG1hc2ssIHUzMiB2YWwpCit7CisJdTMy IHRtcCwgb3JpZzsKKworCW9yaWcgPSBfX3Jhd19yZWFkbChiYXNlICsgcmVnKTsKKwl0bXAgPSBv cmlnICYgfm1hc2s7CisJdG1wIHw9ICh2YWwgJiBtYXNrKTsKKworCWlmICh0bXAgIT0gb3JpZykK KwkJX19yYXdfd3JpdGVsKHRtcCwgYmFzZSArIHJlZyk7Cit9CisKKy8qIFRDSEFOUlQgKi8KK3N0 YXRpYyBpbmxpbmUgdTMyIHVkbWFfdGNoYW5ydF9yZWFkKHN0cnVjdCB1ZG1hX3RjaGFuICp0Y2hh biwgaW50IHJlZykKK3sKKwlpZiAoIXRjaGFuKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gdWRtYV9y ZWFkKHRjaGFuLT5yZWdfcnQsIHJlZyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB1ZG1hX3Rj aGFucnRfd3JpdGUoc3RydWN0IHVkbWFfdGNoYW4gKnRjaGFuLCBpbnQgcmVnLAorCQkJCSAgICAg IHUzMiB2YWwpCit7CisJaWYgKCF0Y2hhbikKKwkJcmV0dXJuOworCXVkbWFfd3JpdGUodGNoYW4t PnJlZ19ydCwgcmVnLCB2YWwpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgdWRtYV90Y2hhbnJ0 X3VwZGF0ZV9iaXRzKHN0cnVjdCB1ZG1hX3RjaGFuICp0Y2hhbiwgaW50IHJlZywKKwkJCQkJICAg IHUzMiBtYXNrLCB1MzIgdmFsKQoreworCWlmICghdGNoYW4pCisJCXJldHVybjsKKwl1ZG1hX3Vw ZGF0ZV9iaXRzKHRjaGFuLT5yZWdfcnQsIHJlZywgbWFzaywgdmFsKTsKK30KKworLyogUkNIQU5S VCAqLworc3RhdGljIGlubGluZSB1MzIgdWRtYV9yY2hhbnJ0X3JlYWQoc3RydWN0IHVkbWFfcmNo YW4gKnJjaGFuLCBpbnQgcmVnKQoreworCWlmICghcmNoYW4pCisJCXJldHVybiAwOworCXJldHVy biB1ZG1hX3JlYWQocmNoYW4tPnJlZ19ydCwgcmVnKTsKK30KKworc3RhdGljIGlubGluZSB2b2lk IHVkbWFfcmNoYW5ydF93cml0ZShzdHJ1Y3QgdWRtYV9yY2hhbiAqcmNoYW4sIGludCByZWcsCisJ CQkJICAgICAgdTMyIHZhbCkKK3sKKwlpZiAoIXJjaGFuKQorCQlyZXR1cm47CisJdWRtYV93cml0 ZShyY2hhbi0+cmVnX3J0LCByZWcsIHZhbCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB1ZG1h X3JjaGFucnRfdXBkYXRlX2JpdHMoc3RydWN0IHVkbWFfcmNoYW4gKnJjaGFuLCBpbnQgcmVnLAor CQkJCQkgICAgdTMyIG1hc2ssIHUzMiB2YWwpCit7CisJaWYgKCFyY2hhbikKKwkJcmV0dXJuOwor CXVkbWFfdXBkYXRlX2JpdHMocmNoYW4tPnJlZ19ydCwgcmVnLCBtYXNrLCB2YWwpOworfQorCitz dGF0aWMgaW50IG5hdnNzX3BzaWxfcGFpcihzdHJ1Y3QgdWRtYV9kZXYgKnVkLCB1MzIgc3JjX3Ro cmVhZCwgdTMyIGRzdF90aHJlYWQpCit7CisJc3RydWN0IHVkbWFfdGlzY2lfcm0gKnRpc2NpX3Jt ID0gJnVkLT50aXNjaV9ybTsKKworCWRzdF90aHJlYWQgfD0gVURNQV9QU0lMX0RTVF9USFJFQURf SURfT0ZGU0VUOworCXJldHVybiB0aXNjaV9ybS0+dGlzY2lfcHNpbF9vcHMtPnBhaXIodGlzY2lf cm0tPnRpc2NpLAorCQkJCQkgICAgICB0aXNjaV9ybS0+dGlzY2lfbmF2c3NfZGV2X2lkLAorCQkJ CQkgICAgICBzcmNfdGhyZWFkLCBkc3RfdGhyZWFkKTsKK30KKworc3RhdGljIGludCBuYXZzc19w c2lsX3VucGFpcihzdHJ1Y3QgdWRtYV9kZXYgKnVkLCB1MzIgc3JjX3RocmVhZCwKKwkJCSAgICAg dTMyIGRzdF90aHJlYWQpCit7CisJc3RydWN0IHVkbWFfdGlzY2lfcm0gKnRpc2NpX3JtID0gJnVk LT50aXNjaV9ybTsKKworCWRzdF90aHJlYWQgfD0gVURNQV9QU0lMX0RTVF9USFJFQURfSURfT0ZG U0VUOworCXJldHVybiB0aXNjaV9ybS0+dGlzY2lfcHNpbF9vcHMtPnVucGFpcih0aXNjaV9ybS0+ dGlzY2ksCisJCQkJCQl0aXNjaV9ybS0+dGlzY2lfbmF2c3NfZGV2X2lkLAorCQkJCQkJc3JjX3Ro cmVhZCwgZHN0X3RocmVhZCk7Cit9CisKK3N0YXRpYyBjaGFyICp1ZG1hX2dldF9kaXJfdGV4dChl bnVtIGRtYV90cmFuc2Zlcl9kaXJlY3Rpb24gZGlyKQoreworCXN3aXRjaCAoZGlyKSB7CisJY2Fz ZSBETUFfREVWX1RPX01FTToKKwkJcmV0dXJuICJERVZfVE9fTUVNIjsKKwljYXNlIERNQV9NRU1f VE9fREVWOgorCQlyZXR1cm4gIk1FTV9UT19ERVYiOworCWNhc2UgRE1BX01FTV9UT19NRU06CisJ CXJldHVybiAiTUVNX1RPX01FTSI7CisJY2FzZSBETUFfREVWX1RPX0RFVjoKKwkJcmV0dXJuICJE RVZfVE9fREVWIjsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisKKwlyZXR1cm4gImludmFsaWQi OworfQorCitzdGF0aWMgdm9pZCB1ZG1hX2R1bXBfY2hhbl9zdGRhdGEoc3RydWN0IHVkbWFfY2hh biAqdWMpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gdWMtPnVkLT5kZXY7CisJdTMyIG9mZnNl dDsKKwlpbnQgaTsKKworCWlmICh1Yy0+ZGlyID09IERNQV9NRU1fVE9fREVWIHx8IHVjLT5kaXIg PT0gRE1BX01FTV9UT19NRU0pIHsKKwkJZGV2X2RiZyhkZXYsICJUQ0hBTiBTdGF0ZSBkYXRhOlxu Iik7CisJCWZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7CisJCQlvZmZzZXQgPSBVRE1BX1RDSEFO X1JUX1NUREFUQV9SRUcgKyBpICogNDsKKwkJCWRldl9kYmcoZGV2LCAiVFJUX1NUREFUQVslMDJk XTogMHglMDh4XG4iLCBpLAorCQkJCXVkbWFfdGNoYW5ydF9yZWFkKHVjLT50Y2hhbiwgb2Zmc2V0 KSk7CisJCX0KKwl9CisKKwlpZiAodWMtPmRpciA9PSBETUFfREVWX1RPX01FTSB8fCB1Yy0+ZGly ID09IERNQV9NRU1fVE9fTUVNKSB7CisJCWRldl9kYmcoZGV2LCAiUkNIQU4gU3RhdGUgZGF0YTpc biIpOworCQlmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykgeworCQkJb2Zmc2V0ID0gVURNQV9SQ0hB Tl9SVF9TVERBVEFfUkVHICsgaSAqIDQ7CisJCQlkZXZfZGJnKGRldiwgIlJSVF9TVERBVEFbJTAy ZF06IDB4JTA4eFxuIiwgaSwKKwkJCQl1ZG1hX3JjaGFucnRfcmVhZCh1Yy0+cmNoYW4sIG9mZnNl dCkpOworCQl9CisJfQorfQorCitzdGF0aWMgaW5saW5lIGRtYV9hZGRyX3QgdWRtYV9jdXJyX2Nw cGk1X2Rlc2NfcGFkZHIoc3RydWN0IHVkbWFfZGVzYyAqZCwKKwkJCQkJCSAgICBpbnQgaWR4KQor eworCXJldHVybiBkLT5od2Rlc2NbaWR4XS5jcHBpNV9kZXNjX3BhZGRyOworfQorCitzdGF0aWMg aW5saW5lIHZvaWQgKnVkbWFfY3Vycl9jcHBpNV9kZXNjX3ZhZGRyKHN0cnVjdCB1ZG1hX2Rlc2Mg KmQsIGludCBpZHgpCit7CisJcmV0dXJuIGQtPmh3ZGVzY1tpZHhdLmNwcGk1X2Rlc2NfdmFkZHI7 Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdWRtYV9kZXNjICp1ZG1hX3VkbWFfZGVzY19mcm9tX3BhZGRy KHN0cnVjdCB1ZG1hX2NoYW4gKnVjLAorCQkJCQkJICAgZG1hX2FkZHJfdCBwYWRkcikKK3sKKwlz dHJ1Y3QgdWRtYV9kZXNjICpkID0gdWMtPnRlcm1pbmF0ZWRfZGVzYzsKKworCWlmIChkKSB7CisJ CWRtYV9hZGRyX3QgZGVzY19wYWRkciA9IHVkbWFfY3Vycl9jcHBpNV9kZXNjX3BhZGRyKGQsCisJ CQkJCQkJCSAgIGQtPmRlc2NfaWR4KTsKKworCQlpZiAoZGVzY19wYWRkciAhPSBwYWRkcikKKwkJ CWQgPSBOVUxMOworCX0KKworCWlmICghZCkgeworCQlkID0gdWMtPmRlc2M7CisJCWlmIChkKSB7 CisJCQlkbWFfYWRkcl90IGRlc2NfcGFkZHIgPSB1ZG1hX2N1cnJfY3BwaTVfZGVzY19wYWRkcihk LAorCQkJCQkJCQlkLT5kZXNjX2lkeCk7CisKKwkJCWlmIChkZXNjX3BhZGRyICE9IHBhZGRyKQor CQkJCWQgPSBOVUxMOworCQl9CisJfQorCisJcmV0dXJuIGQ7Cit9CisKK3N0YXRpYyB2b2lkIHVk bWFfZnJlZV9od2Rlc2Moc3RydWN0IHVkbWFfY2hhbiAqdWMsIHN0cnVjdCB1ZG1hX2Rlc2MgKmQp Cit7CisJaWYgKHVjLT51c2VfZG1hX3Bvb2wpIHsKKwkJaW50IGk7CisKKwkJZm9yIChpID0gMDsg aSA8IGQtPmh3ZGVzY19jb3VudDsgaSsrKSB7CisJCQlpZiAoIWQtPmh3ZGVzY1tpXS5jcHBpNV9k ZXNjX3ZhZGRyKQorCQkJCWNvbnRpbnVlOworCisJCQlkbWFfcG9vbF9mcmVlKHVjLT5oZGVzY19w b29sLAorCQkJCSAgICAgIGQtPmh3ZGVzY1tpXS5jcHBpNV9kZXNjX3ZhZGRyLAorCQkJCSAgICAg IGQtPmh3ZGVzY1tpXS5jcHBpNV9kZXNjX3BhZGRyKTsKKworCQkJZC0+aHdkZXNjW2ldLmNwcGk1 X2Rlc2NfdmFkZHIgPSBOVUxMOworCQl9CisJfSBlbHNlIGlmIChkLT5od2Rlc2NbMF0uY3BwaTVf ZGVzY192YWRkcikgeworCQlzdHJ1Y3QgdWRtYV9kZXYgKnVkID0gdWMtPnVkOworCisJCWRtYV9m cmVlX2NvaGVyZW50KHVkLT5kZXYsIGQtPmh3ZGVzY1swXS5jcHBpNV9kZXNjX3NpemUsCisJCQkJ ICBkLT5od2Rlc2NbMF0uY3BwaTVfZGVzY192YWRkciwKKwkJCQkgIGQtPmh3ZGVzY1swXS5jcHBp NV9kZXNjX3BhZGRyKTsKKworCQlkLT5od2Rlc2NbMF0uY3BwaTVfZGVzY192YWRkciA9IE5VTEw7 CisJfQorfQorCitzdGF0aWMgdm9pZCB1ZG1hX3B1cmdlX2Rlc2Nfd29yayhzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndvcmspCit7CisJc3RydWN0IHVkbWFfZGV2ICp1ZCA9IGNvbnRhaW5lcl9vZih3b3Jr LCB0eXBlb2YoKnVkKSwgcHVyZ2Vfd29yayk7CisJc3RydWN0IHZpcnRfZG1hX2Rlc2MgKnZkLCAq X3ZkOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJTElTVF9IRUFEKGhlYWQpOworCisJc3Bpbl9s b2NrX2lycXNhdmUoJnVkLT5sb2NrLCBmbGFncyk7CisJbGlzdF9zcGxpY2VfdGFpbF9pbml0KCZ1 ZC0+ZGVzY190b19wdXJnZSwgJmhlYWQpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVkLT5s b2NrLCBmbGFncyk7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodmQsIF92ZCwgJmhlYWQs IG5vZGUpIHsKKwkJc3RydWN0IHVkbWFfY2hhbiAqdWMgPSB0b191ZG1hX2NoYW4odmQtPnR4LmNo YW4pOworCQlzdHJ1Y3QgdWRtYV9kZXNjICpkID0gdG9fdWRtYV9kZXNjKCZ2ZC0+dHgpOworCisJ CXVkbWFfZnJlZV9od2Rlc2ModWMsIGQpOworCQlsaXN0X2RlbCgmdmQtPm5vZGUpOworCQlrZnJl ZShkKTsKKwl9CisKKwkvKiBJZiBtb3JlIHRvIHB1cmdlLCBzY2hlZHVsZSB0aGUgd29yayBhZ2Fp biAqLworCWlmICghbGlzdF9lbXB0eSgmdWQtPmRlc2NfdG9fcHVyZ2UpKQorCQlzY2hlZHVsZV93 b3JrKCZ1ZC0+cHVyZ2Vfd29yayk7Cit9CisKK3N0YXRpYyB2b2lkIHVkbWFfZGVzY19mcmVlKHN0 cnVjdCB2aXJ0X2RtYV9kZXNjICp2ZCkKK3sKKwlzdHJ1Y3QgdWRtYV9kZXYgKnVkID0gdG9fdWRt YV9kZXYodmQtPnR4LmNoYW4tPmRldmljZSk7CisJc3RydWN0IHVkbWFfY2hhbiAqdWMgPSB0b191 ZG1hX2NoYW4odmQtPnR4LmNoYW4pOworCXN0cnVjdCB1ZG1hX2Rlc2MgKmQgPSB0b191ZG1hX2Rl c2MoJnZkLT50eCk7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCWlmICh1Yy0+dGVybWluYXRl ZF9kZXNjID09IGQpCisJCXVjLT50ZXJtaW5hdGVkX2Rlc2MgPSBOVUxMOworCisJaWYgKHVjLT51 c2VfZG1hX3Bvb2wpIHsKKwkJdWRtYV9mcmVlX2h3ZGVzYyh1YywgZCk7CisJCWtmcmVlKGQpOwor CQlyZXR1cm47CisJfQorCisJc3Bpbl9sb2NrX2lycXNhdmUoJnVkLT5sb2NrLCBmbGFncyk7CisJ bGlzdF9hZGRfdGFpbCgmdmQtPm5vZGUsICZ1ZC0+ZGVzY190b19wdXJnZSk7CisJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmdWQtPmxvY2ssIGZsYWdzKTsKKworCXNjaGVkdWxlX3dvcmsoJnVkLT5w dXJnZV93b3JrKTsKK30KKworc3RhdGljIGJvb2wgdWRtYV9pc19jaGFuX3J1bm5pbmcoc3RydWN0 IHVkbWFfY2hhbiAqdWMpCit7CisJdTMyIHRydF9jdGwgPSAwOworCXUzMiBycnRfY3RsID0gMDsK KworCWlmICh1Yy0+dGNoYW4pCisJCXRydF9jdGwgPSB1ZG1hX3RjaGFucnRfcmVhZCh1Yy0+dGNo YW4sIFVETUFfVENIQU5fUlRfQ1RMX1JFRyk7CisJaWYgKHVjLT5yY2hhbikKKwkJcnJ0X2N0bCA9 IHVkbWFfcmNoYW5ydF9yZWFkKHVjLT5yY2hhbiwgVURNQV9SQ0hBTl9SVF9DVExfUkVHKTsKKwor CWlmICh0cnRfY3RsICYgVURNQV9DSEFOX1JUX0NUTF9FTiB8fCBycnRfY3RsICYgVURNQV9DSEFO X1JUX0NUTF9FTikKKwkJcmV0dXJuIHRydWU7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRp YyB2b2lkIHVkbWFfc3luY19mb3JfZGV2aWNlKHN0cnVjdCB1ZG1hX2NoYW4gKnVjLCBpbnQgaWR4 KQoreworCXN0cnVjdCB1ZG1hX2Rlc2MgKmQgPSB1Yy0+ZGVzYzsKKworCWlmICh1Yy0+Y3ljbGlj ICYmIHVjLT5wa3RfbW9kZSkgeworCQlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZSh1Yy0+dWQt PmRldiwKKwkJCQkJICAgZC0+aHdkZXNjW2lkeF0uY3BwaTVfZGVzY19wYWRkciwKKwkJCQkJICAg ZC0+aHdkZXNjW2lkeF0uY3BwaTVfZGVzY19zaXplLAorCQkJCQkgICBETUFfVE9fREVWSUNFKTsK Kwl9IGVsc2UgeworCQlpbnQgaTsKKworCQlmb3IgKGkgPSAwOyBpIDwgZC0+aHdkZXNjX2NvdW50 OyBpKyspIHsKKwkJCWlmICghZC0+aHdkZXNjW2ldLmNwcGk1X2Rlc2NfdmFkZHIpCisJCQkJY29u dGludWU7CisKKwkJCWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKHVjLT51ZC0+ZGV2LAorCQkJ CQkJZC0+aHdkZXNjW2ldLmNwcGk1X2Rlc2NfcGFkZHIsCisJCQkJCQlkLT5od2Rlc2NbaV0uY3Bw aTVfZGVzY19zaXplLAorCQkJCQkJRE1BX1RPX0RFVklDRSk7CisJCX0KKwl9Cit9CisKK3N0YXRp YyBpbnQgdWRtYV9wdXNoX3RvX3Jpbmcoc3RydWN0IHVkbWFfY2hhbiAqdWMsIGludCBpZHgpCit7 CisJc3RydWN0IHVkbWFfZGVzYyAqZCA9IHVjLT5kZXNjOworCisJc3RydWN0IGszX3JpbmcgKnJp bmcgPSBOVUxMOworCWludCByZXQgPSAtRUlOVkFMOworCisJc3dpdGNoICh1Yy0+ZGlyKSB7CisJ Y2FzZSBETUFfREVWX1RPX01FTToKKwkJcmluZyA9IHVjLT5yY2hhbi0+ZmRfcmluZzsKKwkJYnJl YWs7CisJY2FzZSBETUFfTUVNX1RPX0RFVjoKKwljYXNlIERNQV9NRU1fVE9fTUVNOgorCQlyaW5n ID0gdWMtPnRjaGFuLT50X3Jpbmc7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0K KworCWlmIChyaW5nKSB7CisJCWRtYV9hZGRyX3QgZGVzY19hZGRyID0gdWRtYV9jdXJyX2NwcGk1 X2Rlc2NfcGFkZHIoZCwgaWR4KTsKKworCQl3bWIoKTsgLyogRW5zdXJlIHRoYXQgd3JpdGVzIGFy ZSBub3QgbW92ZWQgb3ZlciB0aGlzIHBvaW50ICovCisJCXVkbWFfc3luY19mb3JfZGV2aWNlKHVj LCBpZHgpOworCQlyZXQgPSBrM19yaW5nYWNjX3JpbmdfcHVzaChyaW5nLCAmZGVzY19hZGRyKTsK KwkJdWMtPmluX3JpbmdfY250Kys7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGlu dCB1ZG1hX3BvcF9mcm9tX3Jpbmcoc3RydWN0IHVkbWFfY2hhbiAqdWMsIGRtYV9hZGRyX3QgKmFk ZHIpCit7CisJc3RydWN0IGszX3JpbmcgKnJpbmcgPSBOVUxMOworCWludCByZXQgPSAtRU5PRU5U OworCisJc3dpdGNoICh1Yy0+ZGlyKSB7CisJY2FzZSBETUFfREVWX1RPX01FTToKKwkJcmluZyA9 IHVjLT5yY2hhbi0+cl9yaW5nOworCQlicmVhazsKKwljYXNlIERNQV9NRU1fVE9fREVWOgorCWNh c2UgRE1BX01FTV9UT19NRU06CisJCXJpbmcgPSB1Yy0+dGNoYW4tPnRjX3Jpbmc7CisJCWJyZWFr OworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKworCWlmIChyaW5nICYmIGszX3JpbmdhY2Nfcmlu Z19nZXRfb2NjKHJpbmcpKSB7CisJCXN0cnVjdCB1ZG1hX2Rlc2MgKmQgPSBOVUxMOworCisJCXJl dCA9IGszX3JpbmdhY2NfcmluZ19wb3AocmluZywgYWRkcik7CisJCWlmIChyZXQpCisJCQlyZXR1 cm4gcmV0OworCisJCS8qIFRlYXJkb3duIGNvbXBsZXRpb24gKi8KKwkJaWYgKCphZGRyICYgMHgx KQorCQkJcmV0dXJuIHJldDsKKworCQlkID0gdWRtYV91ZG1hX2Rlc2NfZnJvbV9wYWRkcih1Yywg KmFkZHIpOworCisJCWlmIChkKQorCQkJZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUodWMtPnVkLT5k ZXYsICphZGRyLAorCQkJCQkJZC0+aHdkZXNjWzBdLmNwcGk1X2Rlc2Nfc2l6ZSwKKwkJCQkJCURN QV9GUk9NX0RFVklDRSk7CisJCXJtYigpOyAvKiBFbnN1cmUgdGhhdCByZWFkcyBhcmUgbm90IG1v dmVkIGJlZm9yZSB0aGlzIHBvaW50ICovCisKKwkJaWYgKCFyZXQpCisJCQl1Yy0+aW5fcmluZ19j bnQtLTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCB1ZG1hX3Jlc2V0X3Jp bmdzKHN0cnVjdCB1ZG1hX2NoYW4gKnVjKQoreworCXN0cnVjdCBrM19yaW5nICpyaW5nMSA9IE5V TEw7CisJc3RydWN0IGszX3JpbmcgKnJpbmcyID0gTlVMTDsKKworCXN3aXRjaCAodWMtPmRpcikg eworCWNhc2UgRE1BX0RFVl9UT19NRU06CisJCWlmICh1Yy0+cmNoYW4pIHsKKwkJCXJpbmcxID0g dWMtPnJjaGFuLT5mZF9yaW5nOworCQkJcmluZzIgPSB1Yy0+cmNoYW4tPnJfcmluZzsKKwkJfQor CQlicmVhazsKKwljYXNlIERNQV9NRU1fVE9fREVWOgorCWNhc2UgRE1BX01FTV9UT19NRU06CisJ CWlmICh1Yy0+dGNoYW4pIHsKKwkJCXJpbmcxID0gdWMtPnRjaGFuLT50X3Jpbmc7CisJCQlyaW5n MiA9IHVjLT50Y2hhbi0+dGNfcmluZzsKKwkJfQorCQlicmVhazsKKwlkZWZhdWx0OgorCQlicmVh azsKKwl9CisKKwlpZiAocmluZzEpCisJCWszX3JpbmdhY2NfcmluZ19yZXNldF9kbWEocmluZzEs CisJCQkJCSAgazNfcmluZ2FjY19yaW5nX2dldF9vY2MocmluZzEpKTsKKwlpZiAocmluZzIpCisJ CWszX3JpbmdhY2NfcmluZ19yZXNldChyaW5nMik7CisKKwkvKiBtYWtlIHN1cmUgd2UgYXJlIG5v dCBsZWFraW5nIG1lbW9yeSBieSBzdGFsbGVkIGRlc2NyaXB0b3IgKi8KKwlpZiAodWMtPnRlcm1p bmF0ZWRfZGVzYykgeworCQl1ZG1hX2Rlc2NfZnJlZSgmdWMtPnRlcm1pbmF0ZWRfZGVzYy0+dmQp OworCQl1Yy0+dGVybWluYXRlZF9kZXNjID0gTlVMTDsKKwl9CisKKwl1Yy0+aW5fcmluZ19jbnQg PSAwOworfQorCitzdGF0aWMgdm9pZCB1ZG1hX3Jlc2V0X2NvdW50ZXJzKHN0cnVjdCB1ZG1hX2No YW4gKnVjKQoreworCXUzMiB2YWw7CisKKwlpZiAodWMtPnRjaGFuKSB7CisJCXZhbCA9IHVkbWFf dGNoYW5ydF9yZWFkKHVjLT50Y2hhbiwgVURNQV9UQ0hBTl9SVF9CQ05UX1JFRyk7CisJCXVkbWFf dGNoYW5ydF93cml0ZSh1Yy0+dGNoYW4sIFVETUFfVENIQU5fUlRfQkNOVF9SRUcsIHZhbCk7CisK KwkJdmFsID0gdWRtYV90Y2hhbnJ0X3JlYWQodWMtPnRjaGFuLCBVRE1BX1RDSEFOX1JUX1NCQ05U X1JFRyk7CisJCXVkbWFfdGNoYW5ydF93cml0ZSh1Yy0+dGNoYW4sIFVETUFfVENIQU5fUlRfU0JD TlRfUkVHLCB2YWwpOworCisJCXZhbCA9IHVkbWFfdGNoYW5ydF9yZWFkKHVjLT50Y2hhbiwgVURN QV9UQ0hBTl9SVF9QQ05UX1JFRyk7CisJCXVkbWFfdGNoYW5ydF93cml0ZSh1Yy0+dGNoYW4sIFVE TUFfVENIQU5fUlRfUENOVF9SRUcsIHZhbCk7CisKKwkJdmFsID0gdWRtYV90Y2hhbnJ0X3JlYWQo dWMtPnRjaGFuLCBVRE1BX1RDSEFOX1JUX1BFRVJfQkNOVF9SRUcpOworCQl1ZG1hX3RjaGFucnRf d3JpdGUodWMtPnRjaGFuLCBVRE1BX1RDSEFOX1JUX1BFRVJfQkNOVF9SRUcsIHZhbCk7CisJfQor CisJaWYgKHVjLT5yY2hhbikgeworCQl2YWwgPSB1ZG1hX3JjaGFucnRfcmVhZCh1Yy0+cmNoYW4s IFVETUFfUkNIQU5fUlRfQkNOVF9SRUcpOworCQl1ZG1hX3JjaGFucnRfd3JpdGUodWMtPnJjaGFu LCBVRE1BX1JDSEFOX1JUX0JDTlRfUkVHLCB2YWwpOworCisJCXZhbCA9IHVkbWFfcmNoYW5ydF9y ZWFkKHVjLT5yY2hhbiwgVURNQV9SQ0hBTl9SVF9TQkNOVF9SRUcpOworCQl1ZG1hX3JjaGFucnRf d3JpdGUodWMtPnJjaGFuLCBVRE1BX1JDSEFOX1JUX1NCQ05UX1JFRywgdmFsKTsKKworCQl2YWwg PSB1ZG1hX3JjaGFucnRfcmVhZCh1Yy0+cmNoYW4sIFVETUFfUkNIQU5fUlRfUENOVF9SRUcpOwor CQl1ZG1hX3JjaGFucnRfd3JpdGUodWMtPnJjaGFuLCBVRE1BX1JDSEFOX1JUX1BDTlRfUkVHLCB2 YWwpOworCisJCXZhbCA9IHVkbWFfcmNoYW5ydF9yZWFkKHVjLT5yY2hhbiwgVURNQV9SQ0hBTl9S VF9QRUVSX0JDTlRfUkVHKTsKKwkJdWRtYV9yY2hhbnJ0X3dyaXRlKHVjLT5yY2hhbiwgVURNQV9S Q0hBTl9SVF9QRUVSX0JDTlRfUkVHLCB2YWwpOworCX0KKworCXVjLT5iY250ID0gMDsKK30KKwor c3RhdGljIGludCB1ZG1hX3Jlc2V0X2NoYW4oc3RydWN0IHVkbWFfY2hhbiAqdWMsIGJvb2wgaGFy ZCkKK3sKKwlzd2l0Y2ggKHVjLT5kaXIpIHsKKwljYXNlIERNQV9ERVZfVE9fTUVNOgorCQl1ZG1h X3JjaGFucnRfd3JpdGUodWMtPnJjaGFuLCBVRE1BX1JDSEFOX1JUX1BFRVJfUlRfRU5fUkVHLCAw KTsKKwkJdWRtYV9yY2hhbnJ0X3dyaXRlKHVjLT5yY2hhbiwgVURNQV9SQ0hBTl9SVF9DVExfUkVH LCAwKTsKKwkJYnJlYWs7CisJY2FzZSBETUFfTUVNX1RPX0RFVjoKKwkJdWRtYV90Y2hhbnJ0X3dy aXRlKHVjLT50Y2hhbiwgVURNQV9UQ0hBTl9SVF9DVExfUkVHLCAwKTsKKwkJdWRtYV90Y2hhbnJ0 X3dyaXRlKHVjLT50Y2hhbiwgVURNQV9UQ0hBTl9SVF9QRUVSX1JUX0VOX1JFRywgMCk7CisJCWJy ZWFrOworCWNhc2UgRE1BX01FTV9UT19NRU06CisJCXVkbWFfcmNoYW5ydF93cml0ZSh1Yy0+cmNo YW4sIFVETUFfUkNIQU5fUlRfQ1RMX1JFRywgMCk7CisJCXVkbWFfdGNoYW5ydF93cml0ZSh1Yy0+ dGNoYW4sIFVETUFfVENIQU5fUlRfQ1RMX1JFRywgMCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJ CXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIFJlc2V0IGFsbCBjb3VudGVycyAqLworCXVkbWFf cmVzZXRfY291bnRlcnModWMpOworCisJLyogSGFyZCByZXNldDogcmUtaW5pdGlhbGl6ZSB0aGUg Y2hhbm5lbCB0byByZXNldCAqLworCWlmIChoYXJkKSB7CisJCXN0cnVjdCB1ZG1hX2NoYW4gdWNf YmFja3VwID0gKnVjOworCQlpbnQgcmV0OworCisJCXVjLT51ZC0+ZGRldi5kZXZpY2VfZnJlZV9j aGFuX3Jlc291cmNlcygmdWMtPnZjLmNoYW4pOworCQkvKiByZXN0b3JlIHRoZSBjaGFubmVsIGNv bmZpZ3VyYXRpb24gKi8KKwkJdWMtPmRpciA9IHVjX2JhY2t1cC5kaXI7CisJCXVjLT5yZW1vdGVf dGhyZWFkX2lkID0gdWNfYmFja3VwLnJlbW90ZV90aHJlYWRfaWQ7CisJCXVjLT5wa3RfbW9kZSA9 IHVjX2JhY2t1cC5wa3RfbW9kZTsKKwkJdWMtPnN0YXRpY190cl90eXBlID0gdWNfYmFja3VwLnN0 YXRpY190cl90eXBlOworCQl1Yy0+Y2hhbm5lbF90cGwgPSB1Y19iYWNrdXAuY2hhbm5lbF90cGw7 CisJCXVjLT5wc2Rfc2l6ZSA9IHVjX2JhY2t1cC5wc2Rfc2l6ZTsKKwkJdWMtPm1ldGFkYXRhX3Np emUgPSB1Y19iYWNrdXAubWV0YWRhdGFfc2l6ZTsKKwkJdWMtPmhkZXNjX3NpemUgPSB1Y19iYWNr dXAuaGRlc2Nfc2l6ZTsKKworCQlyZXQgPSB1Yy0+dWQtPmRkZXYuZGV2aWNlX2FsbG9jX2NoYW5f cmVzb3VyY2VzKCZ1Yy0+dmMuY2hhbik7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCX0K Kwl1Yy0+c3RhdGUgPSBVRE1BX0NIQU5fSVNfSURMRTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgdm9pZCB1ZG1hX3N0YXJ0X2Rlc2Moc3RydWN0IHVkbWFfY2hhbiAqdWMpCit7CisJaWYgKHVj LT5wa3RfbW9kZSAmJiAodWMtPmN5Y2xpYyB8fCB1Yy0+ZGlyID09IERNQV9ERVZfVE9fTUVNKSkg eworCQlpbnQgaTsKKworCQkvKiBQdXNoIGFsbCBkZXNjcmlwdG9ycyB0byByaW5nIGZvciBwYWNr ZXQgbW9kZSBjeWNsaWMgb3IgUlggKi8KKwkJZm9yIChpID0gMDsgaSA8IHVjLT5kZXNjLT5zZ2xl bjsgaSsrKQorCQkJdWRtYV9wdXNoX3RvX3JpbmcodWMsIGkpOworCX0gZWxzZSB7CisJCXVkbWFf cHVzaF90b19yaW5nKHVjLCAwKTsKKwl9Cit9CisKK3N0YXRpYyBib29sIHVkbWFfY2hhbl9uZWVk c19yZWNvbmZpZ3VyYXRpb24oc3RydWN0IHVkbWFfY2hhbiAqdWMpCit7CisJLyogT25seSBQRE1B cyBoYXZlIHN0YXRpY1RSICovCisJaWYgKCF1Yy0+c3RhdGljX3RyX3R5cGUpCisJCXJldHVybiBm YWxzZTsKKworCS8qIENoZWNrIGlmIHRoZSBzdGF0aWNUUiBjb25maWd1cmF0aW9uIGhhcyBjaGFu Z2VkIGZvciBUWCAqLworCWlmIChtZW1jbXAoJnVjLT5zdGF0aWNfdHIsICZ1Yy0+ZGVzYy0+c3Rh dGljX3RyLCBzaXplb2YodWMtPnN0YXRpY190cikpKQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVy biBmYWxzZTsKK30KKworc3RhdGljIGludCB1ZG1hX3N0YXJ0KHN0cnVjdCB1ZG1hX2NoYW4gKnVj KQoreworCXN0cnVjdCB2aXJ0X2RtYV9kZXNjICp2ZCA9IHZjaGFuX25leHRfZGVzYygmdWMtPnZj KTsKKworCWlmICghdmQpIHsKKwkJdWMtPmRlc2MgPSBOVUxMOworCQlyZXR1cm4gLUVOT0VOVDsK Kwl9CisKKwlsaXN0X2RlbCgmdmQtPm5vZGUpOworCisJdWMtPmRlc2MgPSB0b191ZG1hX2Rlc2Mo JnZkLT50eCk7CisKKwkvKiBDaGFubmVsIGlzIGFscmVhZHkgcnVubmluZyBhbmQgZG9lcyBub3Qg bmVlZCByZWNvbmZpZ3VyYXRpb24gKi8KKwlpZiAodWRtYV9pc19jaGFuX3J1bm5pbmcodWMpICYm ICF1ZG1hX2NoYW5fbmVlZHNfcmVjb25maWd1cmF0aW9uKHVjKSkgeworCQl1ZG1hX3N0YXJ0X2Rl c2ModWMpOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBNYWtlIHN1cmUgdGhhdCB3ZSBjbGVhciB0 aGUgdGVhcmRvd24gYml0LCBpZiBpdCBpcyBzZXQgKi8KKwl1ZG1hX3Jlc2V0X2NoYW4odWMsIGZh bHNlKTsKKworCS8qIFB1c2ggZGVzY3JpcHRvcnMgYmVmb3JlIHdlIHN0YXJ0IHRoZSBjaGFubmVs ICovCisJdWRtYV9zdGFydF9kZXNjKHVjKTsKKworCXN3aXRjaCAodWMtPmRlc2MtPmRpcikgewor CWNhc2UgRE1BX0RFVl9UT19NRU06CisJCS8qIENvbmZpZyByZW1vdGUgVFIgKi8KKwkJaWYgKHVj LT5zdGF0aWNfdHJfdHlwZSkgeworCQkJdWRtYV9yY2hhbnJ0X3dyaXRlKHVjLT5yY2hhbiwKKwkJ CQlVRE1BX1JDSEFOX1JUX1BFRVJfU1RBVElDX1RSX1hZX1JFRywKKwkJCQlQRE1BX1NUQVRJQ19U Ul9ZKHVjLT5kZXNjLT5zdGF0aWNfdHIuZWxjbnQpIHwKKwkJCQlQRE1BX1NUQVRJQ19UUl9YKHVj LT5kZXNjLT5zdGF0aWNfdHIuZWxzaXplKSk7CisJCQl1ZG1hX3JjaGFucnRfd3JpdGUodWMtPnJj aGFuLAorCQkJCVVETUFfUkNIQU5fUlRfUEVFUl9TVEFUSUNfVFJfWl9SRUcsCisJCQkJUERNQV9T VEFUSUNfVFJfWih1Yy0+ZGVzYy0+c3RhdGljX3RyLmJzdGNudCkpOworCisJCQkvKiBzYXZlIHRo ZSBjdXJyZW50IHN0YXRpY1RSIGNvbmZpZ3VyYXRpb24gKi8KKwkJCW1lbWNweSgmdWMtPnN0YXRp Y190ciwgJnVjLT5kZXNjLT5zdGF0aWNfdHIsCisJCQkgICAgICAgc2l6ZW9mKHVjLT5zdGF0aWNf dHIpKTsKKwkJfQorCisJCXVkbWFfcmNoYW5ydF93cml0ZSh1Yy0+cmNoYW4sIFVETUFfUkNIQU5f UlRfQ1RMX1JFRywKKwkJCQkgICBVRE1BX0NIQU5fUlRfQ1RMX0VOKTsKKworCQkvKiBFbmFibGUg cmVtb3RlICovCisJCXVkbWFfcmNoYW5ydF93cml0ZSh1Yy0+cmNoYW4sIFVETUFfUkNIQU5fUlRf UEVFUl9SVF9FTl9SRUcsCisJCQkJICAgVURNQV9QRUVSX1JUX0VOX0VOQUJMRSk7CisKKwkJYnJl YWs7CisJY2FzZSBETUFfTUVNX1RPX0RFVjoKKwkJLyogQ29uZmlnIHJlbW90ZSBUUiAqLworCQlp ZiAodWMtPnN0YXRpY190cl90eXBlKSB7CisJCQl1ZG1hX3RjaGFucnRfd3JpdGUodWMtPnRjaGFu LAorCQkJCVVETUFfVENIQU5fUlRfUEVFUl9TVEFUSUNfVFJfWFlfUkVHLAorCQkJCVBETUFfU1RB VElDX1RSX1kodWMtPmRlc2MtPnN0YXRpY190ci5lbGNudCkgfAorCQkJCVBETUFfU1RBVElDX1RS X1godWMtPmRlc2MtPnN0YXRpY190ci5lbHNpemUpKTsKKworCQkJLyogc2F2ZSB0aGUgY3VycmVu dCBzdGF0aWNUUiBjb25maWd1cmF0aW9uICovCisJCQltZW1jcHkoJnVjLT5zdGF0aWNfdHIsICZ1 Yy0+ZGVzYy0+c3RhdGljX3RyLAorCQkJICAgICAgIHNpemVvZih1Yy0+c3RhdGljX3RyKSk7CisJ CX0KKworCQkvKiBFbmFibGUgcmVtb3RlICovCisJCXVkbWFfdGNoYW5ydF93cml0ZSh1Yy0+dGNo YW4sIFVETUFfVENIQU5fUlRfUEVFUl9SVF9FTl9SRUcsCisJCQkJICAgVURNQV9QRUVSX1JUX0VO X0VOQUJMRSk7CisKKwkJdWRtYV90Y2hhbnJ0X3dyaXRlKHVjLT50Y2hhbiwgVURNQV9UQ0hBTl9S VF9DVExfUkVHLAorCQkJCSAgIFVETUFfQ0hBTl9SVF9DVExfRU4pOworCisJCWJyZWFrOworCWNh c2UgRE1BX01FTV9UT19NRU06CisJCXVkbWFfcmNoYW5ydF93cml0ZSh1Yy0+cmNoYW4sIFVETUFf UkNIQU5fUlRfQ1RMX1JFRywKKwkJCQkgICBVRE1BX0NIQU5fUlRfQ1RMX0VOKTsKKwkJdWRtYV90 Y2hhbnJ0X3dyaXRlKHVjLT50Y2hhbiwgVURNQV9UQ0hBTl9SVF9DVExfUkVHLAorCQkJCSAgIFVE TUFfQ0hBTl9SVF9DVExfRU4pOworCisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlO VkFMOworCX0KKworCXVjLT5zdGF0ZSA9IFVETUFfQ0hBTl9JU19BQ1RJVkU7CitvdXQ6CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCB1ZG1hX3N0b3Aoc3RydWN0IHVkbWFfY2hhbiAqdWMp Cit7CisJZW51bSB1ZG1hX2NoYW5fc3RhdGUgb2xkX3N0YXRlID0gdWMtPnN0YXRlOworCisJdWMt PnN0YXRlID0gVURNQV9DSEFOX0lTX1RFUk1JTkFUSU5HOworCXJlaW5pdF9jb21wbGV0aW9uKCZ1 Yy0+dGVhcmRvd25fY29tcGxldGVkKTsKKworCXN3aXRjaCAodWMtPmRpcikgeworCWNhc2UgRE1B X0RFVl9UT19NRU06CisJCXVkbWFfcmNoYW5ydF93cml0ZSh1Yy0+cmNoYW4sIFVETUFfUkNIQU5f UlRfUEVFUl9SVF9FTl9SRUcsCisJCQkJICAgVURNQV9QRUVSX1JUX0VOX0VOQUJMRSB8CisJCQkJ ICAgVURNQV9QRUVSX1JUX0VOX1RFQVJET1dOKTsKKwkJYnJlYWs7CisJY2FzZSBETUFfTUVNX1RP X0RFVjoKKwkJdWRtYV90Y2hhbnJ0X3dyaXRlKHVjLT50Y2hhbiwgVURNQV9UQ0hBTl9SVF9QRUVS X1JUX0VOX1JFRywKKwkJCQkgICBVRE1BX1BFRVJfUlRfRU5fRU5BQkxFIHwKKwkJCQkgICBVRE1B X1BFRVJfUlRfRU5fRkxVU0gpOworCQl1ZG1hX3RjaGFucnRfd3JpdGUodWMtPnRjaGFuLCBVRE1B X1RDSEFOX1JUX0NUTF9SRUcsCisJCQkJICAgVURNQV9DSEFOX1JUX0NUTF9FTiB8CisJCQkJICAg VURNQV9DSEFOX1JUX0NUTF9URE9XTik7CisJCWJyZWFrOworCWNhc2UgRE1BX01FTV9UT19NRU06 CisJCXVkbWFfdGNoYW5ydF93cml0ZSh1Yy0+dGNoYW4sIFVETUFfVENIQU5fUlRfQ1RMX1JFRywK KwkJCQkgICBVRE1BX0NIQU5fUlRfQ1RMX0VOIHwKKwkJCQkgICBVRE1BX0NIQU5fUlRfQ1RMX1RE T1dOKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJdWMtPnN0YXRlID0gb2xkX3N0YXRlOworCQlj b21wbGV0ZV9hbGwoJnVjLT50ZWFyZG93bl9jb21wbGV0ZWQpOworCQlyZXR1cm4gLUVJTlZBTDsK Kwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdWRtYV9jeWNsaWNfcGFja2V0X2Vs YXBzZWQoc3RydWN0IHVkbWFfY2hhbiAqdWMpCit7CisJc3RydWN0IHVkbWFfZGVzYyAqZCA9IHVj LT5kZXNjOworCXN0cnVjdCBjcHBpNV9ob3N0X2Rlc2NfdCAqaF9kZXNjOworCisJaF9kZXNjID0g ZC0+aHdkZXNjW2QtPmRlc2NfaWR4XS5jcHBpNV9kZXNjX3ZhZGRyOworCWNwcGk1X2hkZXNjX3Jl c2V0X3RvX29yaWdpbmFsKGhfZGVzYyk7CisJdWRtYV9wdXNoX3RvX3JpbmcodWMsIGQtPmRlc2Nf aWR4KTsKKwlkLT5kZXNjX2lkeCA9IChkLT5kZXNjX2lkeCArIDEpICUgZC0+c2dsZW47Cit9CisK K3N0YXRpYyBpbmxpbmUgdm9pZCB1ZG1hX2ZldGNoX2VwaWIoc3RydWN0IHVkbWFfY2hhbiAqdWMs IHN0cnVjdCB1ZG1hX2Rlc2MgKmQpCit7CisJc3RydWN0IGNwcGk1X2hvc3RfZGVzY190ICpoX2Rl c2MgPSBkLT5od2Rlc2NbMF0uY3BwaTVfZGVzY192YWRkcjsKKworCW1lbWNweShkLT5tZXRhZGF0 YSwgaF9kZXNjLT5lcGliLCBkLT5tZXRhZGF0YV9zaXplKTsKK30KKworc3RhdGljIGJvb2wgdWRt YV9pc19kZXNjX3JlYWxseV9kb25lKHN0cnVjdCB1ZG1hX2NoYW4gKnVjLAorCQkJCQkgICAgc3Ry dWN0IHVkbWFfZGVzYyAqZCkKK3sKKwl1MzIgcGVlcl9iY250LCBiY250OworCisJLyogT25seSBU WCB0b3dhcmRzIFBETUEgaXMgYWZmZWN0ZWQgKi8KKwlpZiAoIXVjLT5zdGF0aWNfdHJfdHlwZSB8 fCB1Yy0+ZGlyICE9IERNQV9NRU1fVE9fREVWKQorCQlyZXR1cm4gdHJ1ZTsKKworCXBlZXJfYmNu dCA9IHVkbWFfdGNoYW5ydF9yZWFkKHVjLT50Y2hhbiwgVURNQV9UQ0hBTl9SVF9QRUVSX0JDTlRf UkVHKTsKKwliY250ID0gdWRtYV90Y2hhbnJ0X3JlYWQodWMtPnRjaGFuLCBVRE1BX1RDSEFOX1JU X0JDTlRfUkVHKTsKKworCWlmIChwZWVyX2JjbnQgPCBiY250KQorCQlyZXR1cm4gZmFsc2U7CisK KwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgdWRtYV9mbHVzaF90eChzdHJ1Y3QgdWRt YV9jaGFuICp1YykKK3sKKwlpZiAodWMtPmRpciAhPSBETUFfTUVNX1RPX0RFVikKKwkJcmV0dXJu OworCisJdWMtPnN0YXRlID0gVURNQV9DSEFOX0lTX0FDVElWRV9GTFVTSDsKKworCXVkbWFfdGNo YW5ydF93cml0ZSh1Yy0+dGNoYW4sIFVETUFfVENIQU5fUlRfQ1RMX1JFRywKKwkJCSAgIFVETUFf Q0hBTl9SVF9DVExfRU4gfAorCQkJICAgVURNQV9DSEFOX1JUX0NUTF9URE9XTik7Cit9CisKK3N0 YXRpYyB2b2lkIHVkbWFfcmluZ19jYWxsYmFjayhzdHJ1Y3QgdWRtYV9jaGFuICp1YywgZG1hX2Fk ZHJfdCBwYWRkcikKK3sKKwlzdHJ1Y3QgdWRtYV9kZXNjICpkOworCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CisKKwlpZiAoIXBhZGRyKQorCQlyZXR1cm47CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmdWMt PnZjLmxvY2ssIGZsYWdzKTsKKworCS8qIFRlYXJkb3duIGNvbXBsZXRpb24gbWVzc2FnZSAqLwor CWlmIChwYWRkciAmIDB4MSkgeworCQkvKiBDb21wZW5zYXRlIG91ciBpbnRlcm5hbCBwb3AvcHVz aCBjb3VudGVyICovCisJCXVjLT5pbl9yaW5nX2NudCsrOworCisJCWNvbXBsZXRlX2FsbCgmdWMt PnRlYXJkb3duX2NvbXBsZXRlZCk7CisKKwkJaWYgKHVjLT50ZXJtaW5hdGVkX2Rlc2MpIHsKKwkJ CXVkbWFfZGVzY19mcmVlKCZ1Yy0+dGVybWluYXRlZF9kZXNjLT52ZCk7CisJCQl1Yy0+dGVybWlu YXRlZF9kZXNjID0gTlVMTDsKKwkJfQorCisJCWlmICghdWMtPmRlc2MpCisJCQl1ZG1hX3N0YXJ0 KHVjKTsKKworCQlpZiAodWMtPnN0YXRlICE9IFVETUFfQ0hBTl9JU19BQ1RJVkVfRkxVU0gpCisJ CQlnb3RvIG91dDsKKwkJZWxzZSBpZiAodWMtPmRlc2MpCisJCQlwYWRkciA9IHVkbWFfY3Vycl9j cHBpNV9kZXNjX3BhZGRyKHVjLT5kZXNjLAorCQkJCQkJCSAgIHVjLT5kZXNjLT5kZXNjX2lkeCk7 CisJfQorCisJZCA9IHVkbWFfdWRtYV9kZXNjX2Zyb21fcGFkZHIodWMsIHBhZGRyKTsKKworCWlm IChkKSB7CisJCWRtYV9hZGRyX3QgZGVzY19wYWRkciA9IHVkbWFfY3Vycl9jcHBpNV9kZXNjX3Bh ZGRyKGQsCisJCQkJCQkJCSAgIGQtPmRlc2NfaWR4KTsKKwkJaWYgKGRlc2NfcGFkZHIgIT0gcGFk ZHIpIHsKKwkJCWRldl9lcnIodWMtPnVkLT5kZXYsICJub3QgbWF0Y2hpbmcgZGVzY3JpcHRvcnMh XG4iKTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJaWYgKHVjLT5jeWNsaWMpIHsKKwkJCS8qIHB1 c2ggdGhlIGRlc2NyaXB0b3IgYmFjayB0byB0aGUgcmluZyAqLworCQkJaWYgKGQgPT0gdWMtPmRl c2MpIHsKKwkJCQl1ZG1hX2N5Y2xpY19wYWNrZXRfZWxhcHNlZCh1Yyk7CisJCQkJdmNoYW5fY3lj bGljX2NhbGxiYWNrKCZkLT52ZCk7CisJCQl9CisJCX0gZWxzZSB7CisJCQlib29sIGRlc2NfZG9u ZSA9IHRydWU7CisKKwkJCWlmIChkID09IHVjLT5kZXNjKSB7CisJCQkJZGVzY19kb25lID0gdWRt YV9pc19kZXNjX3JlYWxseV9kb25lKHVjLCBkKTsKKworCQkJCWlmIChkZXNjX2RvbmUpIHsKKwkJ CQkJdWMtPmJjbnQgKz0gZC0+cmVzaWR1ZTsKKwkJCQkJdWRtYV9zdGFydCh1Yyk7CisJCQkJfSBl bHNlIHsKKwkJCQkJdWRtYV9mbHVzaF90eCh1Yyk7CisJCQkJfQorCQkJfSBlbHNlIGlmIChkID09 IHVjLT50ZXJtaW5hdGVkX2Rlc2MpIHsKKwkJCQl1Yy0+dGVybWluYXRlZF9kZXNjID0gTlVMTDsK KwkJCX0KKworCQkJaWYgKGRlc2NfZG9uZSkKKwkJCQl2Y2hhbl9jb29raWVfY29tcGxldGUoJmQt PnZkKTsKKwkJfQorCX0KK291dDoKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ1Yy0+dmMubG9j aywgZmxhZ3MpOworfQorCitzdGF0aWMgdm9pZCB1ZG1hX3RyX2V2ZW50X2NhbGxiYWNrKHN0cnVj dCB1ZG1hX2NoYW4gKnVjKQoreworCXN0cnVjdCB1ZG1hX2Rlc2MgKmQ7CisJdW5zaWduZWQgbG9u ZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZ1Yy0+dmMubG9jaywgZmxhZ3MpOworCWQg PSB1Yy0+ZGVzYzsKKwlpZiAoZCkgeworCQlkLT50cl9pZHggPSAoZC0+dHJfaWR4ICsgMSkgJSBk LT5zZ2xlbjsKKworCQlpZiAodWMtPmN5Y2xpYykgeworCQkJdmNoYW5fY3ljbGljX2NhbGxiYWNr KCZkLT52ZCk7CisJCX0gZWxzZSB7CisJCQkvKiBUT0RPOiBmaWd1cmUgb3V0IHRoZSByZWFsIGFt b3VudCBvZiBkYXRhICovCisJCQl1Yy0+YmNudCArPSBkLT5yZXNpZHVlOworCQkJdWRtYV9zdGFy dCh1Yyk7CisJCQl2Y2hhbl9jb29raWVfY29tcGxldGUoJmQtPnZkKTsKKwkJfQorCX0KKworCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnVjLT52Yy5sb2NrLCBmbGFncyk7Cit9CisKK3N0YXRpYyBp cnFyZXR1cm5fdCB1ZG1hX3JpbmdfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSkKK3sK KwlzdHJ1Y3QgdWRtYV9jaGFuICp1YyA9IGRhdGE7CisJZG1hX2FkZHJfdCBwYWRkciA9IDA7CisK KwlpZiAoIXVkbWFfcG9wX2Zyb21fcmluZyh1YywgJnBhZGRyKSkKKwkJdWRtYV9yaW5nX2NhbGxi YWNrKHVjLCBwYWRkcik7CisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3N0YXRpYyBpcnFy ZXR1cm5fdCB1ZG1hX3VkbWFfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSkKK3sKKwlz dHJ1Y3QgdWRtYV9jaGFuICp1YyA9IGRhdGE7CisKKwl1ZG1hX3RyX2V2ZW50X2NhbGxiYWNrKHVj KTsKKworCXJldHVybiBJUlFfSEFORExFRDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL3Rp L2szLXVkbWEuaCBiL2RyaXZlcnMvZG1hL3RpL2szLXVkbWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjk3MDRjYjZhYzg1NQotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZG1hL3RpL2szLXVkbWEuaApAQCAtMCwwICsxLDEyOSBAQAorLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE5IFRleGFz IEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tCisgKi8KKworI2lm bmRlZiBLM19VRE1BX0hfCisjZGVmaW5lIEszX1VETUFfSF8KKworI2luY2x1ZGUgPGxpbnV4L3Nv Yy90aS90aV9zY2lfcHJvdG9jb2wuaD4KKworI2RlZmluZSBVRE1BX1BTSUxfRFNUX1RIUkVBRF9J RF9PRkZTRVQgMHg4MDAwCisKKy8qIEdsb2JhbCByZWdpc3RlcnMgKi8KKyNkZWZpbmUgVURNQV9S RVZfUkVHCQkJMHgwCisjZGVmaW5lIFVETUFfUEVSRl9DVExfUkVHCQkweDQKKyNkZWZpbmUgVURN QV9FTVVfQ1RMX1JFRwkJMHg4CisjZGVmaW5lIFVETUFfUFNJTF9UT19SRUcJCTB4MTAKKyNkZWZp bmUgVURNQV9VVENfQ1RMX1JFRwkJMHgxYworI2RlZmluZSBVRE1BX0NBUF9SRUcoaSkJCQkoMHgy MCArIChpICogNCkpCisjZGVmaW5lIFVETUFfUlhfRkxPV19JRF9GV19PRVNfUkVHCTB4ODAKKyNk ZWZpbmUgVURNQV9SWF9GTE9XX0lEX0ZXX1NUQVRVU19SRUcJMHg4OAorCisvKiBUWCBjaGFuIFJU IHJlZ3MgKi8KKyNkZWZpbmUgVURNQV9UQ0hBTl9SVF9DVExfUkVHCQkweDAKKyNkZWZpbmUgVURN QV9UQ0hBTl9SVF9TV1RSSUdfUkVHCTB4OAorI2RlZmluZSBVRE1BX1RDSEFOX1JUX1NUREFUQV9S RUcJMHg4MAorCisjZGVmaW5lIFVETUFfVENIQU5fUlRfUEVFUm5fUkVHKGkpCSgweDIwMCArIChp ICogMHg0KSkKKyNkZWZpbmUgVURNQV9UQ0hBTl9SVF9QRUVSX1NUQVRJQ19UUl9YWV9SRUcJXAor CVVETUFfVENIQU5fUlRfUEVFUm5fUkVHKDApCS8qIFBTSS1MOiAweDQwMCAqLworI2RlZmluZSBV RE1BX1RDSEFOX1JUX1BFRVJfU1RBVElDX1RSX1pfUkVHCVwKKwlVRE1BX1RDSEFOX1JUX1BFRVJu X1JFRygxKQkvKiBQU0ktTDogMHg0MDEgKi8KKyNkZWZpbmUgVURNQV9UQ0hBTl9SVF9QRUVSX0JD TlRfUkVHCQlcCisJVURNQV9UQ0hBTl9SVF9QRUVSbl9SRUcoNCkJLyogUFNJLUw6IDB4NDA0ICov CisjZGVmaW5lIFVETUFfVENIQU5fUlRfUEVFUl9SVF9FTl9SRUcJCVwKKwlVRE1BX1RDSEFOX1JU X1BFRVJuX1JFRyg4KQkvKiBQU0ktTDogMHg0MDggKi8KKworI2RlZmluZSBVRE1BX1RDSEFOX1JU X1BDTlRfUkVHCQkweDQwMAorI2RlZmluZSBVRE1BX1RDSEFOX1JUX0JDTlRfUkVHCQkweDQwOAor I2RlZmluZSBVRE1BX1RDSEFOX1JUX1NCQ05UX1JFRwkJMHg0MTAKKworLyogUlggY2hhbiBSVCBy ZWdzICovCisjZGVmaW5lIFVETUFfUkNIQU5fUlRfQ1RMX1JFRwkJMHgwCisjZGVmaW5lIFVETUFf UkNIQU5fUlRfU1dUUklHX1JFRwkweDgKKyNkZWZpbmUgVURNQV9SQ0hBTl9SVF9TVERBVEFfUkVH CTB4ODAKKworI2RlZmluZSBVRE1BX1JDSEFOX1JUX1BFRVJuX1JFRyhpKQkoMHgyMDAgKyAoaSAq IDB4NCkpCisjZGVmaW5lIFVETUFfUkNIQU5fUlRfUEVFUl9TVEFUSUNfVFJfWFlfUkVHCVwKKwlV RE1BX1JDSEFOX1JUX1BFRVJuX1JFRygwKQkvKiBQU0ktTDogMHg0MDAgKi8KKyNkZWZpbmUgVURN QV9SQ0hBTl9SVF9QRUVSX1NUQVRJQ19UUl9aX1JFRwlcCisJVURNQV9SQ0hBTl9SVF9QRUVSbl9S RUcoMSkJLyogUFNJLUw6IDB4NDAxICovCisjZGVmaW5lIFVETUFfUkNIQU5fUlRfUEVFUl9CQ05U X1JFRwkJXAorCVVETUFfUkNIQU5fUlRfUEVFUm5fUkVHKDQpCS8qIFBTSS1MOiAweDQwNCAqLwor I2RlZmluZSBVRE1BX1JDSEFOX1JUX1BFRVJfUlRfRU5fUkVHCQlcCisJVURNQV9SQ0hBTl9SVF9Q RUVSbl9SRUcoOCkJLyogUFNJLUw6IDB4NDA4ICovCisKKyNkZWZpbmUgVURNQV9SQ0hBTl9SVF9Q Q05UX1JFRwkJMHg0MDAKKyNkZWZpbmUgVURNQV9SQ0hBTl9SVF9CQ05UX1JFRwkJMHg0MDgKKyNk ZWZpbmUgVURNQV9SQ0hBTl9SVF9TQkNOVF9SRUcJCTB4NDEwCisKKy8qIFVETUFfVENIQU5fUlRf Q1RMX1JFRy9VRE1BX1JDSEFOX1JUX0NUTF9SRUcgKi8KKyNkZWZpbmUgVURNQV9DSEFOX1JUX0NU TF9FTgkJQklUKDMxKQorI2RlZmluZSBVRE1BX0NIQU5fUlRfQ1RMX1RET1dOCQlCSVQoMzApCisj ZGVmaW5lIFVETUFfQ0hBTl9SVF9DVExfUEFVU0UJCUJJVCgyOSkKKyNkZWZpbmUgVURNQV9DSEFO X1JUX0NUTF9GVERPV04JCUJJVCgyOCkKKyNkZWZpbmUgVURNQV9DSEFOX1JUX0NUTF9FUlJPUgkJ QklUKDApCisKKy8qIFVETUFfVENIQU5fUlRfUEVFUl9SVF9FTl9SRUcvVURNQV9SQ0hBTl9SVF9Q RUVSX1JUX0VOX1JFRyAoUFNJLUw6IDB4NDA4KSAqLworI2RlZmluZSBVRE1BX1BFRVJfUlRfRU5f RU5BQkxFCQlCSVQoMzEpCisjZGVmaW5lIFVETUFfUEVFUl9SVF9FTl9URUFSRE9XTglCSVQoMzAp CisjZGVmaW5lIFVETUFfUEVFUl9SVF9FTl9QQVVTRQkJQklUKDI5KQorI2RlZmluZSBVRE1BX1BF RVJfUlRfRU5fRkxVU0gJCUJJVCgyOCkKKyNkZWZpbmUgVURNQV9QRUVSX1JUX0VOX0lETEUJCUJJ VCgxKQorCisvKgorICogVURNQV9UQ0hBTl9SVF9QRUVSX1NUQVRJQ19UUl9YWV9SRUcgLworICog VURNQV9SQ0hBTl9SVF9QRUVSX1NUQVRJQ19UUl9YWV9SRUcKKyAqLworI2RlZmluZSBQRE1BX1NU QVRJQ19UUl9YX01BU0sJCUdFTk1BU0soMjYsIDI0KQorI2RlZmluZSBQRE1BX1NUQVRJQ19UUl9Y X1NISUZUCQkoMjQpCisjZGVmaW5lIFBETUFfU1RBVElDX1RSX1lfTUFTSwkJR0VOTUFTSygxMSwg MCkKKyNkZWZpbmUgUERNQV9TVEFUSUNfVFJfWV9TSElGVAkJKDApCisKKyNkZWZpbmUgUERNQV9T VEFUSUNfVFJfWSh4KQlcCisJKCgoeCkgPDwgUERNQV9TVEFUSUNfVFJfWV9TSElGVCkgJiBQRE1B X1NUQVRJQ19UUl9ZX01BU0spCisjZGVmaW5lIFBETUFfU1RBVElDX1RSX1goeCkJXAorCSgoKHgp IDw8IFBETUFfU1RBVElDX1RSX1hfU0hJRlQpICYgUERNQV9TVEFUSUNfVFJfWF9NQVNLKQorCisv KgorICogVURNQV9UQ0hBTl9SVF9QRUVSX1NUQVRJQ19UUl9aX1JFRyAvCisgKiBVRE1BX1JDSEFO X1JUX1BFRVJfU1RBVElDX1RSX1pfUkVHCisgKi8KKyNkZWZpbmUgUERNQV9TVEFUSUNfVFJfWl9N QVNLCQlHRU5NQVNLKDExLCAwKQorI2RlZmluZSBQRE1BX1NUQVRJQ19UUl9aX1NISUZUCQkoMCkK KyNkZWZpbmUgUERNQV9TVEFUSUNfVFJfWih4KQlcCisJKCgoeCkgPDwgUERNQV9TVEFUSUNfVFJf Wl9TSElGVCkgJiBQRE1BX1NUQVRJQ19UUl9aX01BU0spCisKK3N0cnVjdCB1ZG1hX2RldjsKK3N0 cnVjdCB1ZG1hX3RjaGFuOworc3RydWN0IHVkbWFfcmNoYW47CitzdHJ1Y3QgdWRtYV9yZmxvdzsK KworZW51bSB1ZG1hX3JtX3JhbmdlIHsKKwlSTV9SQU5HRV9UQ0hBTiA9IDAsCisJUk1fUkFOR0Vf UkNIQU4sCisJUk1fUkFOR0VfUkZMT1csCisJUk1fUkFOR0VfTEFTVCwKK307CisKKy8qIENoYW5u ZWwgVGhyb3VnaHB1dCBMZXZlbHMgKi8KK2VudW0gdWRtYV90cF9sZXZlbCB7CisJVURNQV9UUF9O T1JNQUwgPSAwLAorCVVETUFfVFBfSElHSCA9IDEsCisJVURNQV9UUF9MQVNULAorfTsKKworc3Ry dWN0IHVkbWFfdGlzY2lfcm0geworCWNvbnN0IHN0cnVjdCB0aV9zY2lfaGFuZGxlICp0aXNjaTsK Kwljb25zdCBzdHJ1Y3QgdGlfc2NpX3JtX3VkbWFwX29wcyAqdGlzY2lfdWRtYXBfb3BzOworCXUz MiAgdGlzY2lfZGV2X2lkOworCisJLyogdGlzY2kgaW5mb3JtYXRpb24gZm9yIFBTSS1MIHRocmVh ZCBwYWlyaW5nL3VucGFpcmluZyAqLworCWNvbnN0IHN0cnVjdCB0aV9zY2lfcm1fcHNpbF9vcHMg KnRpc2NpX3BzaWxfb3BzOworCXUzMiAgdGlzY2lfbmF2c3NfZGV2X2lkOworCisJc3RydWN0IHRp X3NjaV9yZXNvdXJjZSAqcm1fcmFuZ2VzW1JNX1JBTkdFX0xBU1RdOworfTsKKworI2VuZGlmIC8q IEszX1VETUFfSF8gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHQtYmluZGluZ3MvZG1hL2szLXVk bWEuaCBiL2luY2x1ZGUvZHQtYmluZGluZ3MvZG1hL2szLXVkbWEuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg5YmE2YTlkNGE4ZgotLS0gL2Rldi9udWxsCisrKyBi L2luY2x1ZGUvZHQtYmluZGluZ3MvZG1hL2szLXVkbWEuaApAQCAtMCwwICsxLDI2IEBACisjaWZu ZGVmIF9fRFRfVElfVURNQV9ICisjZGVmaW5lIF9fRFRfVElfVURNQV9ICisKKyNkZWZpbmUgVURN QV9UUl9NT0RFCQkwCisjZGVmaW5lIFVETUFfUEtUX01PREUJCTEKKworI2RlZmluZSBVRE1BX0RJ Ul9UWAkJMAorI2RlZmluZSBVRE1BX0RJUl9SWAkJMQorCisjZGVmaW5lIFBTSUxfU1RBVElDX1RS X05PTkUJMAorI2RlZmluZSBQU0lMX1NUQVRJQ19UUl9YWQkxCisjZGVmaW5lIFBTSUxfU1RBVElD X1RSX01DQU4JMgorCisjZGVmaW5lIFVETUFfUERNQV9UUl9YWShpZCkJCQkJXAorCXRpLHBzaWwt Y29uZmlnIyNpZCB7CQkJCVwKKwkJbGludXgsdWRtYS1tb2RlID0gPFVETUFfVFJfTU9ERT47CVwK KwkJc3RhdGljdHItdHlwZSA9IDxQU0lMX1NUQVRJQ19UUl9YWT47CVwKKwl9CisKKyNkZWZpbmUg VURNQV9QRE1BX1BLVF9YWShpZCkJCQkJXAorCXRpLHBzaWwtY29uZmlnIyNpZCB7CQkJCVwKKwkJ bGludXgsdWRtYS1tb2RlID0gPFVETUFfUEtUX01PREU+OwlcCisJCXN0YXRpY3RyLXR5cGUgPSA8 UFNJTF9TVEFUSUNfVFJfWFk+OwlcCisJfQorCisjZW5kaWYgLyogX19EVF9USV9VRE1BX0ggKi8K LS0gClBldGVyCgpUZXhhcyBJbnN0cnVtZW50cyBGaW5sYW5kIE95LCBQb3Jra2FsYW5rYXR1IDIy LCAwMDE4MCBIZWxzaW5raS4KWS10dW5udXMvQnVzaW5lc3MgSUQ6IDA2MTU1MjEtNC4gS290aXBh aWtrYS9Eb21pY2lsZTogSGVsc2lua2kKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==