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 480ECC04A6B for ; Mon, 6 May 2019 12:37:16 +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 1914820830 for ; Mon, 6 May 2019 12:37:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="po7qpQk+"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ti.com header.i=@ti.com header.b="N/ozna+5" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1914820830 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=5L1ObZrx3n7Dhg2DW2F6NwaDBLOA6vMo4a7V19GQ5+c=; b=po7qpQk+O/FdQB jfJkGfWdXAcVTQBlesjH9vxbDZ0ZguK5W2/wgUGuRzgh8jWwLRjNpWgKL3kWwV0aXQEL0imZuk+ko jsDJ4qJrvaxucXj568aeyLl4KIlajFSPaB0e5c2zDxwmpqIMZmjHW6/DGKGSzf3nQtiPAO4sDPgA0 VGqgm/amxaEi4OndgGuv9cwg8PXWKVCEV6H1OqAw5oHgr+z7vsTSlpFySpBPlU9CsM7/chIwHY/6Q oKGsiQoUbXHXN124TgwgK0VMluLmYHL1RUYcmB6/Q/KyuY+H0rFPcimi5Nh9BpY/arCaJSc9FvMDe kpym6M1kd8EVgJtjJ+Gg==; 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 1hNcrk-00019W-KT; Mon, 06 May 2019 12:37:08 +0000 Received: from lelv0143.ext.ti.com ([198.47.23.248]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hNcqK-0007r2-Q7 for linux-arm-kernel@lists.infradead.org; Mon, 06 May 2019 12:36:09 +0000 Received: from lelv0266.itg.ti.com ([10.180.67.225]) by lelv0143.ext.ti.com (8.15.2/8.15.2) with ESMTP id x46CZasB067074; Mon, 6 May 2019 07:35:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1557146136; bh=58jzZtnjegy+wLb7nyXlUbU3O0r5tR3q5iuP9UPJKZk=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=N/ozna+5UMoCVm+lsdWFsgEhJivjmj6BjlI8MphkuZoAIDLgtv0CNcOIjJiHgi9HI M1JUgOBd86lH525goorAv7lNw8kHqG/VGJmp5nmlbk8gwTkeffz5sb87pUu7b3j6Af hao/GBuQB1bwdOBw72NMa02TA6pfspcR5TcNf0bM= Received: from DFLE104.ent.ti.com (dfle104.ent.ti.com [10.64.6.25]) by lelv0266.itg.ti.com (8.15.2/8.15.2) with ESMTPS id x46CZajp024734 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 6 May 2019 07:35:36 -0500 Received: from DFLE102.ent.ti.com (10.64.6.23) by DFLE104.ent.ti.com (10.64.6.25) 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:34 -0500 Received: from fllv0040.itg.ti.com (10.64.41.20) by DFLE102.ent.ti.com (10.64.6.23) 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:34 -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 x46CYpUJ110286; Mon, 6 May 2019 07:35:31 -0500 From: Peter Ujfalusi To: , , , Subject: [PATCH 13/16] dmaengine: ti: New driver for K3 UDMA - split#4: dma_device callbacks 1 Date: Mon, 6 May 2019 15:34:53 +0300 Message-ID: <20190506123456.6777-14-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_053541_312253_BA45695B X-CRM114-Status: GOOD ( 17.51 ) 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 U3BsaXQgcGF0Y2ggZm9yIHJldmlldyBjb250YWluaW5nOgpkZXZpY2VfY29uZmlnLCBkZXZpY2Vf aXNzdWVfcGVuZGluZywgZGV2aWNlX3R4X3N0YXR1cywgZGV2aWNlX3BhdXNlLApkZXZpY2VfcmVz dW1lLCBkZXZpY2VfdGVybWluYXRlX2FsbCBhbmQgZGV2aWNlX3N5bmNocm9uaXplIGNhbGxiYWNr CmltcGxlbWVudGF0aW9uIGFuZCB0aGUgY3VzdG9tIHVkbWFfdmNoYW5fY29tcGxldGUuCgpETUEg ZHJpdmVyIGZvcgpUZXhhcyBJbnN0cnVtZW50cyBLMyBOQVZTUyBVbmlmaWVkIERNQSDigJMgUGVy aXBoZXJhbCBSb290IENvbXBsZXggKFVETUEtUCkKClRoZSBVRE1BLVAgaXMgaW50ZW5kZWQgdG8g cGVyZm9ybSBzaW1pbGFyIChidXQgc2lnbmlmaWNhbnRseSB1cGdyYWRlZCkgZnVuY3Rpb25zCmFz IHRoZSBwYWNrZXQtb3JpZW50ZWQgRE1BIHVzZWQgb24gcHJldmlvdXMgU29DIGRldmljZXMuIFRo ZSBVRE1BLVAgbW9kdWxlCnN1cHBvcnRzIHRoZSB0cmFuc21pc3Npb24gYW5kIHJlY2VwdGlvbiBv ZiB2YXJpb3VzIHBhY2tldCB0eXBlcy4gVGhlIFVETUEtUCBpcwphcmNoaXRlY3RlZCB0byBmYWNp bGl0YXRlIHRoZSBzZWdtZW50YXRpb24gYW5kIHJlYXNzZW1ibHkgb2YgU29DIERNQSBkYXRhCnN0 cnVjdHVyZSBjb21wbGlhbnQgcGFja2V0cyB0by9mcm9tIHNtYWxsZXIgZGF0YSBibG9ja3MgdGhh dCBhcmUgbmF0aXZlbHkKY29tcGF0aWJsZSB3aXRoIHRoZSBzcGVjaWZpYyByZXF1aXJlbWVudHMg b2YgZWFjaCBjb25uZWN0ZWQgcGVyaXBoZXJhbC4gTXVsdGlwbGUKVHggYW5kIFJ4IGNoYW5uZWxz IGFyZSBwcm92aWRlZCB3aXRoaW4gdGhlIERNQSB3aGljaCBhbGxvdyBtdWx0aXBsZSBzZWdtZW50 YXRpb24Kb3IgcmVhc3NlbWJseSBvcGVyYXRpb25zIHRvIGJlIG9uZ29pbmcuIFRoZSBETUEgY29u dHJvbGxlciBtYWludGFpbnMgc3RhdGUKaW5mb3JtYXRpb24gZm9yIGVhY2ggb2YgdGhlIGNoYW5u ZWxzIHdoaWNoIGFsbG93cyBwYWNrZXQgc2VnbWVudGF0aW9uIGFuZApyZWFzc2VtYmx5IG9wZXJh dGlvbnMgdG8gYmUgdGltZSBkaXZpc2lvbiBtdWx0aXBsZXhlZCBiZXR3ZWVuIGNoYW5uZWxzIGlu IG9yZGVyCnRvIHNoYXJlIHRoZSB1bmRlcmx5aW5nIERNQSBoYXJkd2FyZS4gQW4gZXh0ZXJuYWwg RE1BIHNjaGVkdWxlciBpcyB1c2VkIHRvCmNvbnRyb2wgdGhlIG9yZGVyaW5nIGFuZCByYXRlIGF0 IHdoaWNoIHRoaXMgbXVsdGlwbGV4aW5nIG9jY3VycyBmb3IgVHJhbnNtaXQKb3BlcmF0aW9ucy4g VGhlIG9yZGVyaW5nIGFuZCByYXRlIG9mIFJlY2VpdmUgb3BlcmF0aW9ucyBpcyBpbmRpcmVjdGx5 IGNvbnRyb2xsZWQKYnkgdGhlIG9yZGVyIGluIHdoaWNoIGJsb2NrcyBhcmUgcHVzaGVkIGludG8g dGhlIERNQSBvbiB0aGUgUnggUFNJLUwgaW50ZXJmYWNlLgoKVGhlIFVETUEtUCBhbHNvIHN1cHBv cnRzIGFjdGluZyBhcyBib3RoIGEgVVRDIGFuZCBVRE1BLUMgZm9yIGl0cyBpbnRlcm5hbApjaGFu bmVscy4gQ2hhbm5lbHMgaW4gdGhlIFVETUEtUCBjYW4gYmUgY29uZmlndXJlZCB0byBiZSBlaXRo ZXIgUGFja2V0LUJhc2VkIG9yClRoaXJkLVBhcnR5IGNoYW5uZWxzIG9uIGEgY2hhbm5lbCBieSBj aGFubmVsIGJhc2lzLgoKVGhlIGluaXRpYWwgZHJpdmVyIHN1cHBvcnRzOgotIE1FTV9UT19NRU0g KFRSIG1vZGUpCi0gREVWX1RPX01FTSAoUGFja2V0IC8gVFIgbW9kZSkKLSBNRU1fVE9fREVWIChQ YWNrZXQgLyBUUiBtb2RlKQotIEN5Y2xpYyAoUGFja2V0IC8gVFIgbW9kZSkKLSBNZXRhZGF0YSBm b3IgZGVzY3JpcHRvcnMKClNpZ25lZC1vZmYtYnk6IFBldGVyIFVqZmFsdXNpIDxwZXRlci51amZh bHVzaUB0aS5jb20+Ci0tLQogZHJpdmVycy9kbWEvdGkvazMtdWRtYS5jIHwgMjk3ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDI5NyBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvdGkvazMtdWRtYS5jIGIvZHJpdmVy cy9kbWEvdGkvazMtdWRtYS5jCmluZGV4IDVkOGUwYzVkMWFjMS4uMmY3MGQ1MGZhYThhIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2RtYS90aS9rMy11ZG1hLmMKKysrIGIvZHJpdmVycy9kbWEvdGkvazMt dWRtYS5jCkBAIC0xNzMzLDYgKzE3MzMsMzAzIEBAIHN0YXRpYyBpbnQgdWRtYV9hbGxvY19jaGFu X3Jlc291cmNlcyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCiAJcmV0dXJuIHJldDsKIH0KIAorc3Rh dGljIGludCB1ZG1hX3NsYXZlX2NvbmZpZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sCisJCQkgICAg IHN0cnVjdCBkbWFfc2xhdmVfY29uZmlnICpjZmcpCit7CisJc3RydWN0IHVkbWFfY2hhbiAqdWMg PSB0b191ZG1hX2NoYW4oY2hhbik7CisKKwltZW1jcHkoJnVjLT5jZmcsIGNmZywgc2l6ZW9mKHVj LT5jZmcpKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB1ZG1hX2lzc3VlX3BlbmRp bmcoc3RydWN0IGRtYV9jaGFuICpjaGFuKQoreworCXN0cnVjdCB1ZG1hX2NoYW4gKnVjID0gdG9f dWRtYV9jaGFuKGNoYW4pOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJx c2F2ZSgmdWMtPnZjLmxvY2ssIGZsYWdzKTsKKworCS8qIElmIHdlIGhhdmUgc29tZXRoaW5nIHBl bmRpbmcgYW5kIG5vIGFjdGl2ZSBkZXNjcmlwdG9yLCB0aGVuICovCisJaWYgKHZjaGFuX2lzc3Vl X3BlbmRpbmcoJnVjLT52YykgJiYgIXVjLT5kZXNjKSB7CisJCS8qCisJCSAqIHN0YXJ0IGEgZGVz Y3JpcHRvciBpZiB0aGUgY2hhbm5lbCBpcyBOT1QgW21hcmtlZCBhcworCQkgKiB0ZXJtaW5hdGlu ZyBfYW5kXyBpdCBpcyBzdGlsbCBydW5uaW5nICh0ZWFyZG93biBoYXMgbm90CisJCSAqIGNvbXBs ZXRlZCB5ZXQpXS4KKwkJICovCisJCWlmICghKHVjLT5zdGF0ZSA9PSBVRE1BX0NIQU5fSVNfVEVS TUlOQVRJTkcgJiYKKwkJICAgICAgdWRtYV9pc19jaGFuX3J1bm5pbmcodWMpKSkKKwkJCXVkbWFf c3RhcnQodWMpOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVjLT52Yy5sb2NrLCBm bGFncyk7Cit9CisKKy8qIE5vdCBtdWNoIHlldCAqLworc3RhdGljIGVudW0gZG1hX3N0YXR1cyB1 ZG1hX3R4X3N0YXR1cyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sCisJCQkJICAgICAgZG1hX2Nvb2tp ZV90IGNvb2tpZSwKKwkJCQkgICAgICBzdHJ1Y3QgZG1hX3R4X3N0YXRlICp0eHN0YXRlKQorewor CXN0cnVjdCB1ZG1hX2NoYW4gKnVjID0gdG9fdWRtYV9jaGFuKGNoYW4pOworCWVudW0gZG1hX3N0 YXR1cyByZXQ7CisKKwlyZXQgPSBkbWFfY29va2llX3N0YXR1cyhjaGFuLCBjb29raWUsIHR4c3Rh dGUpOworCisJaWYgKCF1ZG1hX2lzX2NoYW5fcnVubmluZyh1YykpCisJCXJldCA9IERNQV9DT01Q TEVURTsKKworCWlmIChyZXQgPT0gRE1BX0NPTVBMRVRFIHx8ICF0eHN0YXRlKQorCQlyZXR1cm4g cmV0OworCisJaWYgKHVjLT5kZXNjICYmIHVjLT5kZXNjLT52ZC50eC5jb29raWUgPT0gY29va2ll KSB7CisJCXUzMiBwZG1hX2JjbnQgPSAwOworCQl1MzIgYmNudCA9IDA7CisJCXUzMiBwY250ID0g MDsKKwkJdTMyIHJlc2lkdWUgPSB1Yy0+ZGVzYy0+cmVzaWR1ZTsKKwkJdTMyIGRlbGF5ID0gMDsK KworCQlpZiAodWMtPmRlc2MtPmRpciA9PSBETUFfTUVNX1RPX0RFVikgeworCQkJYmNudCA9IHVk bWFfdGNoYW5ydF9yZWFkKHVjLT50Y2hhbiwKKwkJCQkJCSBVRE1BX1RDSEFOX1JUX0JDTlRfUkVH KTsKKwkJCXBkbWFfYmNudCA9IHVkbWFfdGNoYW5ydF9yZWFkKHVjLT50Y2hhbiwKKwkJCQkJCVVE TUFfVENIQU5fUlRfUEVFUl9CQ05UX1JFRyk7CisJCQlwY250ID0gdWRtYV90Y2hhbnJ0X3JlYWQo dWMtPnRjaGFuLAorCQkJCQkJIFVETUFfVENIQU5fUlRfUENOVF9SRUcpOworCisJCQlpZiAoYmNu dCA+IHBkbWFfYmNudCkKKwkJCQlkZWxheSA9IGJjbnQgLSBwZG1hX2JjbnQ7CisJCX0gZWxzZSBp ZiAodWMtPmRlc2MtPmRpciA9PSBETUFfREVWX1RPX01FTSkgeworCQkJYmNudCA9IHVkbWFfcmNo YW5ydF9yZWFkKHVjLT5yY2hhbiwKKwkJCQkJCSBVRE1BX1JDSEFOX1JUX1NCQ05UX1JFRyk7CisJ CQlwZG1hX2JjbnQgPSB1ZG1hX3JjaGFucnRfcmVhZCh1Yy0+cmNoYW4sCisJCQkJCQlVRE1BX1JD SEFOX1JUX1BFRVJfQkNOVF9SRUcpOworCQkJcGNudCA9IHVkbWFfcmNoYW5ydF9yZWFkKHVjLT5y Y2hhbiwKKwkJCQkJCSBVRE1BX1JDSEFOX1JUX1BDTlRfUkVHKTsKKworCQkJaWYgKHBkbWFfYmNu dCA+IGJjbnQpCisJCQkJZGVsYXkgPSBwZG1hX2JjbnQgLSBiY250OworCQl9IGVsc2UgeworCQkJ dTMyIHNiY250OworCisJCQlzYmNudCA9IHVkbWFfdGNoYW5ydF9yZWFkKHVjLT50Y2hhbiwKKwkJ CQkJCSAgVURNQV9UQ0hBTl9SVF9TQkNOVF9SRUcpOworCQkJYmNudCA9IHVkbWFfdGNoYW5ydF9y ZWFkKHVjLT50Y2hhbiwKKwkJCQkJCSBVRE1BX1RDSEFOX1JUX1BFRVJfQkNOVF9SRUcpOworCQkJ cGNudCA9IHVkbWFfdGNoYW5ydF9yZWFkKHVjLT50Y2hhbiwKKwkJCQkJCSBVRE1BX1RDSEFOX1JU X1BDTlRfUkVHKTsKKworCQkJaWYgKHNiY250ID4gYmNudCkKKwkJCQlkZWxheSA9IHNiY250IC0g YmNudDsKKwkJfQorCisJCWJjbnQgLT0gdWMtPmJjbnQ7CisJCWlmIChiY250ICYmICEoYmNudCAl IHVjLT5kZXNjLT5yZXNpZHVlKSkKKwkJCXJlc2lkdWUgPSAwOworCQllbHNlCisJCQlyZXNpZHVl IC09IGJjbnQgJSB1Yy0+ZGVzYy0+cmVzaWR1ZTsKKworCQlpZiAoIXJlc2lkdWUgJiYgKHVjLT5k aXIgPT0gRE1BX0RFVl9UT19NRU0gfHwgIWRlbGF5KSkgeworCQkJcmV0ID0gRE1BX0NPTVBMRVRF OworCQkJZGVsYXkgPSAwOworCQl9CisKKwkJZG1hX3NldF9yZXNpZHVlKHR4c3RhdGUsIHJlc2lk dWUpOworCQlkbWFfc2V0X2luX2ZsaWdodF9ieXRlcyh0eHN0YXRlLCBkZWxheSk7CisKKwl9IGVs c2UgeworCQlyZXQgPSBETUFfQ09NUExFVEU7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIGludCB1ZG1hX3BhdXNlKHN0cnVjdCBkbWFfY2hhbiAqY2hhbikKK3sKKwlzdHJ1Y3QgdWRt YV9jaGFuICp1YyA9IHRvX3VkbWFfY2hhbihjaGFuKTsKKworCWlmICghdWMtPmRlc2MpCisJCXJl dHVybiAtRUlOVkFMOworCisJLyogcGF1c2UgdGhlIGNoYW5uZWwgKi8KKwlzd2l0Y2ggKHVjLT5k ZXNjLT5kaXIpIHsKKwljYXNlIERNQV9ERVZfVE9fTUVNOgorCQl1ZG1hX3JjaGFucnRfdXBkYXRl X2JpdHModWMtPnJjaGFuLAorCQkJCQkgVURNQV9SQ0hBTl9SVF9QRUVSX1JUX0VOX1JFRywKKwkJ CQkJIFVETUFfUEVFUl9SVF9FTl9QQVVTRSwKKwkJCQkJIFVETUFfUEVFUl9SVF9FTl9QQVVTRSk7 CisJCWJyZWFrOworCWNhc2UgRE1BX01FTV9UT19ERVY6CisJCXVkbWFfdGNoYW5ydF91cGRhdGVf Yml0cyh1Yy0+dGNoYW4sCisJCQkJCSBVRE1BX1RDSEFOX1JUX1BFRVJfUlRfRU5fUkVHLAorCQkJ CQkgVURNQV9QRUVSX1JUX0VOX1BBVVNFLAorCQkJCQkgVURNQV9QRUVSX1JUX0VOX1BBVVNFKTsK KwkJYnJlYWs7CisJY2FzZSBETUFfTUVNX1RPX01FTToKKwkJdWRtYV90Y2hhbnJ0X3VwZGF0ZV9i aXRzKHVjLT50Y2hhbiwgVURNQV9UQ0hBTl9SVF9DVExfUkVHLAorCQkJCQkgVURNQV9DSEFOX1JU X0NUTF9QQVVTRSwKKwkJCQkJIFVETUFfQ0hBTl9SVF9DVExfUEFVU0UpOworCQlicmVhazsKKwlk ZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCB1ZG1hX3Jlc3VtZShzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCit7CisJc3RydWN0IHVkbWFf Y2hhbiAqdWMgPSB0b191ZG1hX2NoYW4oY2hhbik7CisKKwlpZiAoIXVjLT5kZXNjKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCS8qIHJlc3VtZSB0aGUgY2hhbm5lbCAqLworCXN3aXRjaCAodWMtPmRl c2MtPmRpcikgeworCWNhc2UgRE1BX0RFVl9UT19NRU06CisJCXVkbWFfcmNoYW5ydF91cGRhdGVf Yml0cyh1Yy0+cmNoYW4sCisJCQkJCSBVRE1BX1JDSEFOX1JUX1BFRVJfUlRfRU5fUkVHLAorCQkJ CQkgVURNQV9QRUVSX1JUX0VOX1BBVVNFLCAwKTsKKworCQlicmVhazsKKwljYXNlIERNQV9NRU1f VE9fREVWOgorCQl1ZG1hX3RjaGFucnRfdXBkYXRlX2JpdHModWMtPnRjaGFuLAorCQkJCQkgVURN QV9UQ0hBTl9SVF9QRUVSX1JUX0VOX1JFRywKKwkJCQkJIFVETUFfUEVFUl9SVF9FTl9QQVVTRSwg MCk7CisJCWJyZWFrOworCWNhc2UgRE1BX01FTV9UT19NRU06CisJCXVkbWFfdGNoYW5ydF91cGRh dGVfYml0cyh1Yy0+dGNoYW4sIFVETUFfVENIQU5fUlRfQ1RMX1JFRywKKwkJCQkJIFVETUFfQ0hB Tl9SVF9DVExfUEFVU0UsIDApOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB1ZG1hX3Rlcm1pbmF0ZV9hbGwo c3RydWN0IGRtYV9jaGFuICpjaGFuKQoreworCXN0cnVjdCB1ZG1hX2NoYW4gKnVjID0gdG9fdWRt YV9jaGFuKGNoYW4pOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJTElTVF9IRUFEKGhlYWQpOwor CisJc3Bpbl9sb2NrX2lycXNhdmUoJnVjLT52Yy5sb2NrLCBmbGFncyk7CisKKwlpZiAodWRtYV9p c19jaGFuX3J1bm5pbmcodWMpKQorCQl1ZG1hX3N0b3AodWMpOworCisJaWYgKHVjLT5kZXNjKSB7 CisJCXVjLT50ZXJtaW5hdGVkX2Rlc2MgPSB1Yy0+ZGVzYzsKKwkJdWMtPmRlc2MgPSBOVUxMOwor CQl1Yy0+dGVybWluYXRlZF9kZXNjLT50ZXJtaW5hdGVkID0gdHJ1ZTsKKwl9CisKKwl1Yy0+cGF1 c2VkID0gZmFsc2U7CisKKwl2Y2hhbl9nZXRfYWxsX2Rlc2NyaXB0b3JzKCZ1Yy0+dmMsICZoZWFk KTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ1Yy0+dmMubG9jaywgZmxhZ3MpOworCXZjaGFu X2RtYV9kZXNjX2ZyZWVfbGlzdCgmdWMtPnZjLCAmaGVhZCk7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIHZvaWQgdWRtYV9zeW5jaHJvbml6ZShzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCit7CisJ c3RydWN0IHVkbWFfY2hhbiAqdWMgPSB0b191ZG1hX2NoYW4oY2hhbik7CisJdW5zaWduZWQgbG9u ZyB0aW1lb3V0ID0gbXNlY3NfdG9famlmZmllcygxMDAwKTsKKworCXZjaGFuX3N5bmNocm9uaXpl KCZ1Yy0+dmMpOworCisJaWYgKHVjLT5zdGF0ZSA9PSBVRE1BX0NIQU5fSVNfVEVSTUlOQVRJTkcp IHsKKwkJdGltZW91dCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmdWMtPnRlYXJkb3du X2NvbXBsZXRlZCwKKwkJCQkJCSAgICAgIHRpbWVvdXQpOworCQlpZiAoIXRpbWVvdXQpIHsKKwkJ CWRldl93YXJuKHVjLT51ZC0+ZGV2LCAiY2hhbiVkIHRlYXJkb3duIHRpbWVvdXQhXG4iLAorCQkJ CSB1Yy0+aWQpOworCQkJdWRtYV9kdW1wX2NoYW5fc3RkYXRhKHVjKTsKKwkJCXVkbWFfcmVzZXRf Y2hhbih1YywgdHJ1ZSk7CisJCX0KKwl9CisKKwl1ZG1hX3Jlc2V0X2NoYW4odWMsIGZhbHNlKTsK KwlpZiAodWRtYV9pc19jaGFuX3J1bm5pbmcodWMpKQorCQlkZXZfd2Fybih1Yy0+dWQtPmRldiwg ImNoYW4lZCByZWZ1c2VkIHRvIHN0b3AhXG4iLCB1Yy0+aWQpOworCisJdWRtYV9yZXNldF9yaW5n cyh1Yyk7Cit9CisKK3N0YXRpYyB2b2lkIHVkbWFfZGVzY19wcmVfY2FsbGJhY2soc3RydWN0IHZp cnRfZG1hX2NoYW4gKnZjLAorCQkJCSAgIHN0cnVjdCB2aXJ0X2RtYV9kZXNjICp2ZCwKKwkJCQkg ICBzdHJ1Y3QgZG1hZW5naW5lX3Jlc3VsdCAqcmVzdWx0KQoreworCXN0cnVjdCB1ZG1hX2NoYW4g KnVjID0gdG9fdWRtYV9jaGFuKCZ2Yy0+Y2hhbik7CisJc3RydWN0IHVkbWFfZGVzYyAqZDsKKwor CWlmICghdmQpCisJCXJldHVybjsKKworCWQgPSB0b191ZG1hX2Rlc2MoJnZkLT50eCk7CisKKwlp ZiAoZC0+bWV0YWRhdGFfc2l6ZSkKKwkJdWRtYV9mZXRjaF9lcGliKHVjLCBkKTsKKworCS8qIFBy b3ZpZGUgcmVzaWR1ZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGNsaWVudCAqLworCWlmIChyZXN1bHQp IHsKKwkJdm9pZCAqZGVzY192YWRkciA9IHVkbWFfY3Vycl9jcHBpNV9kZXNjX3ZhZGRyKGQsIGQt PmRlc2NfaWR4KTsKKworCQlpZiAoY3BwaTVfZGVzY19nZXRfdHlwZShkZXNjX3ZhZGRyKSA9PQor CQkgICAgQ1BQSTVfSU5GTzBfREVTQ19UWVBFX1ZBTF9IT1NUKSB7CisJCQlyZXN1bHQtPnJlc2lk dWUgPSBjcHBpNV9oZGVzY19nZXRfcGt0bGVuKGRlc2NfdmFkZHIpOworCQkJaWYgKHJlc3VsdC0+ cmVzaWR1ZSA9PSBkLT5yZXNpZHVlKQorCQkJCXJlc3VsdC0+cmVzdWx0ID0gRE1BX1RSQU5TX05P RVJST1I7CisJCQllbHNlCisJCQkJcmVzdWx0LT5yZXN1bHQgPSBETUFfVFJBTlNfQUJPUlRFRDsK KwkJfSBlbHNlIHsKKwkJCXJlc3VsdC0+cmVzaWR1ZSA9IGQtPnJlc2lkdWU7CisJCQlyZXN1bHQt PnJlc3VsdCA9IERNQV9UUkFOU19OT0VSUk9SOworCQl9CisJfQorfQorCisvKgorICogVGhpcyB0 YXNrbGV0IGhhbmRsZXMgdGhlIGNvbXBsZXRpb24gb2YgYSBETUEgZGVzY3JpcHRvciBieQorICog Y2FsbGluZyBpdHMgY2FsbGJhY2sgYW5kIGZyZWVpbmcgaXQuCisgKi8KK3N0YXRpYyB2b2lkIHVk bWFfdmNoYW5fY29tcGxldGUodW5zaWduZWQgbG9uZyBhcmcpCit7CisJc3RydWN0IHZpcnRfZG1h X2NoYW4gKnZjID0gKHN0cnVjdCB2aXJ0X2RtYV9jaGFuICopYXJnOworCXN0cnVjdCB2aXJ0X2Rt YV9kZXNjICp2ZCwgKl92ZDsKKwlzdHJ1Y3QgZG1hZW5naW5lX2Rlc2NfY2FsbGJhY2sgY2I7CisJ TElTVF9IRUFEKGhlYWQpOworCisJc3Bpbl9sb2NrX2lycSgmdmMtPmxvY2spOworCWxpc3Rfc3Bs aWNlX3RhaWxfaW5pdCgmdmMtPmRlc2NfY29tcGxldGVkLCAmaGVhZCk7CisJdmQgPSB2Yy0+Y3lj bGljOworCWlmICh2ZCkgeworCQl2Yy0+Y3ljbGljID0gTlVMTDsKKwkJZG1hZW5naW5lX2Rlc2Nf Z2V0X2NhbGxiYWNrKCZ2ZC0+dHgsICZjYik7CisJfSBlbHNlIHsKKwkJbWVtc2V0KCZjYiwgMCwg c2l6ZW9mKGNiKSk7CisJfQorCXNwaW5fdW5sb2NrX2lycSgmdmMtPmxvY2spOworCisJdWRtYV9k ZXNjX3ByZV9jYWxsYmFjayh2YywgdmQsIE5VTEwpOworCWRtYWVuZ2luZV9kZXNjX2NhbGxiYWNr X2ludm9rZSgmY2IsIE5VTEwpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZkLCBfdmQs ICZoZWFkLCBub2RlKSB7CisJCXN0cnVjdCBkbWFlbmdpbmVfcmVzdWx0IHJlc3VsdDsKKworCQlk bWFlbmdpbmVfZGVzY19nZXRfY2FsbGJhY2soJnZkLT50eCwgJmNiKTsKKworCQlsaXN0X2RlbCgm dmQtPm5vZGUpOworCisJCXVkbWFfZGVzY19wcmVfY2FsbGJhY2sodmMsIHZkLCAmcmVzdWx0KTsK KwkJZG1hZW5naW5lX2Rlc2NfY2FsbGJhY2tfaW52b2tlKCZjYiwgJnJlc3VsdCk7CisKKwkJdmNo YW5fdmRlc2NfZmluaSh2ZCk7CisJfQorfQorCiBzdGF0aWMgdm9pZCB1ZG1hX2ZyZWVfY2hhbl9y ZXNvdXJjZXMoc3RydWN0IGRtYV9jaGFuICpjaGFuKQogewogCXN0cnVjdCB1ZG1hX2NoYW4gKnVj ID0gdG9fdWRtYV9jaGFuKGNoYW4pOwotLSAKUGV0ZXIKClRleGFzIEluc3RydW1lbnRzIEZpbmxh bmQgT3ksIFBvcmtrYWxhbmthdHUgMjIsIDAwMTgwIEhlbHNpbmtpLgpZLXR1bm51cy9CdXNpbmVz cyBJRDogMDYxNTUyMS00LiBLb3RpcGFpa2thL0RvbWljaWxlOiBIZWxzaW5raQoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwg bWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK