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=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,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 DFAE4C43331 for ; Mon, 11 Nov 2019 13:56:24 +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 B0B1E206A3 for ; Mon, 11 Nov 2019 13:56:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="r8Fv814v"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ti.com header.i=@ti.com header.b="nSdpEnb4" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B0B1E206A3 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=RCoEuD0onY1t9KHHNYPDPaRi9yKmHQruEbxhiAjnwQ4=; b=r8Fv814vlYuOS9 KJoR70h3TnfDwB6UAWmHYq13WIsIbBX1ICopSS7CJ5e7N3xwVhkk8eLcCfWS9IwTP+EBHJtpqtZ+p yh9gONluoQyIeUnBUaQX+oIo8MA25KWeiUUvATfeBv6uKrQPQsVfwkYuaEcIYTPFLQcmF8DdxEmxD NKcPDr7JgFB5LCDsOaWVH/qc1mkc2gnzf5QS1ufpPhe79/bMO2PvR39jpiqmCithfwpKuBAKP0Y9Q 39vebM4cXw8wUg+M7q2iV9fPDylyMQjjrGkTcgmxtPlOxZ6NjRi91F+SSRbPQOqt3pfIb9xra/w4t 9xaKoI0s69NR+chyap8w==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iUAB5-0005FN-SL; Mon, 11 Nov 2019 13:56:23 +0000 Received: from fllv0016.ext.ti.com ([198.47.19.142]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iUA7v-0000yQ-Iz for linux-arm-kernel@lists.infradead.org; Mon, 11 Nov 2019 13:53:12 +0000 Received: from fllv0034.itg.ti.com ([10.64.40.246]) by fllv0016.ext.ti.com (8.15.2/8.15.2) with ESMTP id xABDr39e059799; Mon, 11 Nov 2019 07:53:03 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1573480383; bh=6vbxv0kVIQl7q+0r5nfZvB02faIMt5uGsQqFEmSO9pA=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=nSdpEnb48ongdQ5C96E3czhNsMSsjmYFMbxpHzF1y20E4YroIOr+Z9Bmg+E1vtla0 53JJX3lcpmzLD1ayMvEGpyTuP1RTSEKCyPGMtnT0d/p4mUsLnOUs8djMEGMGaDv5w5 CPt8UsAzs2v299KsHZmHe9r/4Za8tOYMKyfyAGgQ= Received: from DFLE115.ent.ti.com (dfle115.ent.ti.com [10.64.6.36]) by fllv0034.itg.ti.com (8.15.2/8.15.2) with ESMTPS id xABDr2aH111897 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 11 Nov 2019 07:53:03 -0600 Received: from DFLE105.ent.ti.com (10.64.6.26) 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.1847.3; Mon, 11 Nov 2019 07:52:45 -0600 Received: from fllv0040.itg.ti.com (10.64.41.20) by DFLE105.ent.ti.com (10.64.6.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3 via Frontend Transport; Mon, 11 Nov 2019 07:52:45 -0600 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 xABDqE8x097668; Mon, 11 Nov 2019 07:52:59 -0600 From: Peter Ujfalusi To: , , , Subject: [PATCH v5 12/15] dmaengine: ti: New driver for K3 UDMA - split#4: dma_device callbacks 1 Date: Mon, 11 Nov 2019 15:53:27 +0200 Message-ID: <20191111135330.8235-13-peter.ujfalusi@ti.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191111135330.8235-1-peter.ujfalusi@ti.com> References: <20191111135330.8235-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-20191111_055307_786252_F7619B95 X-CRM114-Status: GOOD ( 16.86 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 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, j-keerthy@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+Ci0tLQogZHJpdmVycy9kbWEvdGkvazMtdWRtYS5jIHwgMjkzICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDI5MyBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvdGkvazMtdWRtYS5jIGIvZHJpdmVy cy9kbWEvdGkvazMtdWRtYS5jCmluZGV4IDExY2VmNzY1ZWY4ZS4uNGIxMTNjNGViM2Q5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2RtYS90aS9rMy11ZG1hLmMKKysrIGIvZHJpdmVycy9kbWEvdGkvazMt dWRtYS5jCkBAIC0xNzgwLDYgKzE3ODAsMjk5IEBAIHN0YXRpYyBpbnQgdWRtYV9hbGxvY19jaGFu X3Jlc291cmNlcyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCiAJcmV0dXJuIHJldDsKIH0KIAorc3Rh dGljIGludCB1ZG1hX3NsYXZlX2NvbmZpZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sCisJCQkgICAg IHN0cnVjdCBkbWFfc2xhdmVfY29uZmlnICpjZmcpCit7CisJc3RydWN0IHVkbWFfY2hhbiAqdWMg PSB0b191ZG1hX2NoYW4oY2hhbik7CisKKwltZW1jcHkoJnVjLT5jZmcsIGNmZywgc2l6ZW9mKHVj LT5jZmcpKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB1ZG1hX2lzc3VlX3BlbmRp bmcoc3RydWN0IGRtYV9jaGFuICpjaGFuKQoreworCXN0cnVjdCB1ZG1hX2NoYW4gKnVjID0gdG9f dWRtYV9jaGFuKGNoYW4pOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJx c2F2ZSgmdWMtPnZjLmxvY2ssIGZsYWdzKTsKKworCS8qIElmIHdlIGhhdmUgc29tZXRoaW5nIHBl bmRpbmcgYW5kIG5vIGFjdGl2ZSBkZXNjcmlwdG9yLCB0aGVuICovCisJaWYgKHZjaGFuX2lzc3Vl X3BlbmRpbmcoJnVjLT52YykgJiYgIXVjLT5kZXNjKSB7CisJCS8qCisJCSAqIHN0YXJ0IGEgZGVz Y3JpcHRvciBpZiB0aGUgY2hhbm5lbCBpcyBOT1QgW21hcmtlZCBhcworCQkgKiB0ZXJtaW5hdGlu ZyBfYW5kXyBpdCBpcyBzdGlsbCBydW5uaW5nICh0ZWFyZG93biBoYXMgbm90CisJCSAqIGNvbXBs ZXRlZCB5ZXQpXS4KKwkJICovCisJCWlmICghKHVjLT5zdGF0ZSA9PSBVRE1BX0NIQU5fSVNfVEVS TUlOQVRJTkcgJiYKKwkJICAgICAgdWRtYV9pc19jaGFuX3J1bm5pbmcodWMpKSkKKwkJCXVkbWFf c3RhcnQodWMpOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVjLT52Yy5sb2NrLCBm bGFncyk7Cit9CisKK3N0YXRpYyBlbnVtIGRtYV9zdGF0dXMgdWRtYV90eF9zdGF0dXMoc3RydWN0 IGRtYV9jaGFuICpjaGFuLAorCQkJCSAgICAgIGRtYV9jb29raWVfdCBjb29raWUsCisJCQkJICAg ICAgc3RydWN0IGRtYV90eF9zdGF0ZSAqdHhzdGF0ZSkKK3sKKwlzdHJ1Y3QgdWRtYV9jaGFuICp1 YyA9IHRvX3VkbWFfY2hhbihjaGFuKTsKKwllbnVtIGRtYV9zdGF0dXMgcmV0OworCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmdWMtPnZjLmxvY2ssIGZsYWdzKTsK KworCXJldCA9IGRtYV9jb29raWVfc3RhdHVzKGNoYW4sIGNvb2tpZSwgdHhzdGF0ZSk7CisKKwlp ZiAoIXVkbWFfaXNfY2hhbl9ydW5uaW5nKHVjKSkKKwkJcmV0ID0gRE1BX0NPTVBMRVRFOworCisJ aWYgKHJldCA9PSBETUFfQ09NUExFVEUgfHwgIXR4c3RhdGUpCisJCWdvdG8gb3V0OworCisJaWYg KHVjLT5kZXNjICYmIHVjLT5kZXNjLT52ZC50eC5jb29raWUgPT0gY29va2llKSB7CisJCXUzMiBw ZWVyX2JjbnQgPSAwOworCQl1MzIgYmNudCA9IDA7CisJCXUzMiByZXNpZHVlID0gdWMtPmRlc2Mt PnJlc2lkdWU7CisJCXUzMiBkZWxheSA9IDA7CisKKwkJaWYgKHVjLT5kZXNjLT5kaXIgPT0gRE1B X01FTV9UT19ERVYpIHsKKwkJCWJjbnQgPSB1ZG1hX3RjaGFucnRfcmVhZCh1Yy0+dGNoYW4sCisJ CQkJCQkgVURNQV9UQ0hBTl9SVF9TQkNOVF9SRUcpOworCisJCQlpZiAodWMtPmVwX3R5cGUgIT0g UFNJTF9FUF9OQVRJVkUpIHsKKwkJCQlwZWVyX2JjbnQgPSB1ZG1hX3RjaGFucnRfcmVhZCh1Yy0+ dGNoYW4sCisJCQkJCQlVRE1BX1RDSEFOX1JUX1BFRVJfQkNOVF9SRUcpOworCisJCQkJaWYgKGJj bnQgPiBwZWVyX2JjbnQpCisJCQkJCWRlbGF5ID0gYmNudCAtIHBlZXJfYmNudDsKKwkJCX0KKwkJ fSBlbHNlIGlmICh1Yy0+ZGVzYy0+ZGlyID09IERNQV9ERVZfVE9fTUVNKSB7CisJCQliY250ID0g dWRtYV9yY2hhbnJ0X3JlYWQodWMtPnJjaGFuLAorCQkJCQkJIFVETUFfUkNIQU5fUlRfQkNOVF9S RUcpOworCisJCQlpZiAodWMtPmVwX3R5cGUgIT0gUFNJTF9FUF9OQVRJVkUpIHsKKwkJCQlwZWVy X2JjbnQgPSB1ZG1hX3JjaGFucnRfcmVhZCh1Yy0+cmNoYW4sCisJCQkJCQlVRE1BX1JDSEFOX1JU X1BFRVJfQkNOVF9SRUcpOworCisJCQkJaWYgKHBlZXJfYmNudCA+IGJjbnQpCisJCQkJCWRlbGF5 ID0gcGVlcl9iY250IC0gYmNudDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWJjbnQgPSB1ZG1hX3Rj aGFucnRfcmVhZCh1Yy0+dGNoYW4sCisJCQkJCQkgVURNQV9UQ0hBTl9SVF9CQ05UX1JFRyk7CisJ CX0KKworCQliY250IC09IHVjLT5iY250OworCQlpZiAoYmNudCAmJiAhKGJjbnQgJSB1Yy0+ZGVz Yy0+cmVzaWR1ZSkpCisJCQlyZXNpZHVlID0gMDsKKwkJZWxzZQorCQkJcmVzaWR1ZSAtPSBiY250 ICUgdWMtPmRlc2MtPnJlc2lkdWU7CisKKwkJaWYgKCFyZXNpZHVlICYmICh1Yy0+ZGlyID09IERN QV9ERVZfVE9fTUVNIHx8ICFkZWxheSkpIHsKKwkJCXJldCA9IERNQV9DT01QTEVURTsKKwkJCWRl bGF5ID0gMDsKKwkJfQorCisJCWRtYV9zZXRfcmVzaWR1ZSh0eHN0YXRlLCByZXNpZHVlKTsKKwkJ ZG1hX3NldF9pbl9mbGlnaHRfYnl0ZXModHhzdGF0ZSwgZGVsYXkpOworCisJfSBlbHNlIHsKKwkJ cmV0ID0gRE1BX0NPTVBMRVRFOworCX0KKworb3V0OgorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JnVjLT52Yy5sb2NrLCBmbGFncyk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB1ZG1h X3BhdXNlKHN0cnVjdCBkbWFfY2hhbiAqY2hhbikKK3sKKwlzdHJ1Y3QgdWRtYV9jaGFuICp1YyA9 IHRvX3VkbWFfY2hhbihjaGFuKTsKKworCWlmICghdWMtPmRlc2MpCisJCXJldHVybiAtRUlOVkFM OworCisJLyogcGF1c2UgdGhlIGNoYW5uZWwgKi8KKwlzd2l0Y2ggKHVjLT5kZXNjLT5kaXIpIHsK KwljYXNlIERNQV9ERVZfVE9fTUVNOgorCQl1ZG1hX3JjaGFucnRfdXBkYXRlX2JpdHModWMtPnJj aGFuLAorCQkJCQkgVURNQV9SQ0hBTl9SVF9QRUVSX1JUX0VOX1JFRywKKwkJCQkJIFVETUFfUEVF Ul9SVF9FTl9QQVVTRSwKKwkJCQkJIFVETUFfUEVFUl9SVF9FTl9QQVVTRSk7CisJCWJyZWFrOwor CWNhc2UgRE1BX01FTV9UT19ERVY6CisJCXVkbWFfdGNoYW5ydF91cGRhdGVfYml0cyh1Yy0+dGNo YW4sCisJCQkJCSBVRE1BX1RDSEFOX1JUX1BFRVJfUlRfRU5fUkVHLAorCQkJCQkgVURNQV9QRUVS X1JUX0VOX1BBVVNFLAorCQkJCQkgVURNQV9QRUVSX1JUX0VOX1BBVVNFKTsKKwkJYnJlYWs7CisJ Y2FzZSBETUFfTUVNX1RPX01FTToKKwkJdWRtYV90Y2hhbnJ0X3VwZGF0ZV9iaXRzKHVjLT50Y2hh biwgVURNQV9UQ0hBTl9SVF9DVExfUkVHLAorCQkJCQkgVURNQV9DSEFOX1JUX0NUTF9QQVVTRSwK KwkJCQkJIFVETUFfQ0hBTl9SVF9DVExfUEFVU0UpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQly ZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB1ZG1hX3Jl c3VtZShzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCit7CisJc3RydWN0IHVkbWFfY2hhbiAqdWMgPSB0 b191ZG1hX2NoYW4oY2hhbik7CisKKwlpZiAoIXVjLT5kZXNjKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCS8qIHJlc3VtZSB0aGUgY2hhbm5lbCAqLworCXN3aXRjaCAodWMtPmRlc2MtPmRpcikgewor CWNhc2UgRE1BX0RFVl9UT19NRU06CisJCXVkbWFfcmNoYW5ydF91cGRhdGVfYml0cyh1Yy0+cmNo YW4sCisJCQkJCSBVRE1BX1JDSEFOX1JUX1BFRVJfUlRfRU5fUkVHLAorCQkJCQkgVURNQV9QRUVS X1JUX0VOX1BBVVNFLCAwKTsKKworCQlicmVhazsKKwljYXNlIERNQV9NRU1fVE9fREVWOgorCQl1 ZG1hX3RjaGFucnRfdXBkYXRlX2JpdHModWMtPnRjaGFuLAorCQkJCQkgVURNQV9UQ0hBTl9SVF9Q RUVSX1JUX0VOX1JFRywKKwkJCQkJIFVETUFfUEVFUl9SVF9FTl9QQVVTRSwgMCk7CisJCWJyZWFr OworCWNhc2UgRE1BX01FTV9UT19NRU06CisJCXVkbWFfdGNoYW5ydF91cGRhdGVfYml0cyh1Yy0+ dGNoYW4sIFVETUFfVENIQU5fUlRfQ1RMX1JFRywKKwkJCQkJIFVETUFfQ0hBTl9SVF9DVExfUEFV U0UsIDApOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCB1ZG1hX3Rlcm1pbmF0ZV9hbGwoc3RydWN0IGRtYV9j aGFuICpjaGFuKQoreworCXN0cnVjdCB1ZG1hX2NoYW4gKnVjID0gdG9fdWRtYV9jaGFuKGNoYW4p OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJTElTVF9IRUFEKGhlYWQpOworCisJc3Bpbl9sb2Nr X2lycXNhdmUoJnVjLT52Yy5sb2NrLCBmbGFncyk7CisKKwlpZiAodWRtYV9pc19jaGFuX3J1bm5p bmcodWMpKQorCQl1ZG1hX3N0b3AodWMpOworCisJaWYgKHVjLT5kZXNjKSB7CisJCXVjLT50ZXJt aW5hdGVkX2Rlc2MgPSB1Yy0+ZGVzYzsKKwkJdWMtPmRlc2MgPSBOVUxMOworCQl1Yy0+dGVybWlu YXRlZF9kZXNjLT50ZXJtaW5hdGVkID0gdHJ1ZTsKKwl9CisKKwl1Yy0+cGF1c2VkID0gZmFsc2U7 CisKKwl2Y2hhbl9nZXRfYWxsX2Rlc2NyaXB0b3JzKCZ1Yy0+dmMsICZoZWFkKTsKKwlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZ1Yy0+dmMubG9jaywgZmxhZ3MpOworCXZjaGFuX2RtYV9kZXNjX2Zy ZWVfbGlzdCgmdWMtPnZjLCAmaGVhZCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQg dWRtYV9zeW5jaHJvbml6ZShzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCit7CisJc3RydWN0IHVkbWFf Y2hhbiAqdWMgPSB0b191ZG1hX2NoYW4oY2hhbik7CisJdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0g bXNlY3NfdG9famlmZmllcygxMDAwKTsKKworCXZjaGFuX3N5bmNocm9uaXplKCZ1Yy0+dmMpOwor CisJaWYgKHVjLT5zdGF0ZSA9PSBVRE1BX0NIQU5fSVNfVEVSTUlOQVRJTkcpIHsKKwkJdGltZW91 dCA9IHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmdWMtPnRlYXJkb3duX2NvbXBsZXRlZCwK KwkJCQkJCSAgICAgIHRpbWVvdXQpOworCQlpZiAoIXRpbWVvdXQpIHsKKwkJCWRldl93YXJuKHVj LT51ZC0+ZGV2LCAiY2hhbiVkIHRlYXJkb3duIHRpbWVvdXQhXG4iLAorCQkJCSB1Yy0+aWQpOwor CQkJdWRtYV9kdW1wX2NoYW5fc3RkYXRhKHVjKTsKKwkJCXVkbWFfcmVzZXRfY2hhbih1YywgdHJ1 ZSk7CisJCX0KKwl9CisKKwl1ZG1hX3Jlc2V0X2NoYW4odWMsIGZhbHNlKTsKKwlpZiAodWRtYV9p c19jaGFuX3J1bm5pbmcodWMpKQorCQlkZXZfd2Fybih1Yy0+dWQtPmRldiwgImNoYW4lZCByZWZ1 c2VkIHRvIHN0b3AhXG4iLCB1Yy0+aWQpOworCisJdWRtYV9yZXNldF9yaW5ncyh1Yyk7Cit9CisK K3N0YXRpYyB2b2lkIHVkbWFfZGVzY19wcmVfY2FsbGJhY2soc3RydWN0IHZpcnRfZG1hX2NoYW4g KnZjLAorCQkJCSAgIHN0cnVjdCB2aXJ0X2RtYV9kZXNjICp2ZCwKKwkJCQkgICBzdHJ1Y3QgZG1h ZW5naW5lX3Jlc3VsdCAqcmVzdWx0KQoreworCXN0cnVjdCB1ZG1hX2NoYW4gKnVjID0gdG9fdWRt YV9jaGFuKCZ2Yy0+Y2hhbik7CisJc3RydWN0IHVkbWFfZGVzYyAqZDsKKworCWlmICghdmQpCisJ CXJldHVybjsKKworCWQgPSB0b191ZG1hX2Rlc2MoJnZkLT50eCk7CisKKwlpZiAoZC0+bWV0YWRh dGFfc2l6ZSkKKwkJdWRtYV9mZXRjaF9lcGliKHVjLCBkKTsKKworCS8qIFByb3ZpZGUgcmVzaWR1 ZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGNsaWVudCAqLworCWlmIChyZXN1bHQpIHsKKwkJdm9pZCAq ZGVzY192YWRkciA9IHVkbWFfY3Vycl9jcHBpNV9kZXNjX3ZhZGRyKGQsIGQtPmRlc2NfaWR4KTsK KworCQlpZiAoY3BwaTVfZGVzY19nZXRfdHlwZShkZXNjX3ZhZGRyKSA9PQorCQkgICAgQ1BQSTVf SU5GTzBfREVTQ19UWVBFX1ZBTF9IT1NUKSB7CisJCQlyZXN1bHQtPnJlc2lkdWUgPSBjcHBpNV9o ZGVzY19nZXRfcGt0bGVuKGRlc2NfdmFkZHIpOworCQkJaWYgKHJlc3VsdC0+cmVzaWR1ZSA9PSBk LT5yZXNpZHVlKQorCQkJCXJlc3VsdC0+cmVzdWx0ID0gRE1BX1RSQU5TX05PRVJST1I7CisJCQll bHNlCisJCQkJcmVzdWx0LT5yZXN1bHQgPSBETUFfVFJBTlNfQUJPUlRFRDsKKwkJfSBlbHNlIHsK KwkJCXJlc3VsdC0+cmVzaWR1ZSA9IGQtPnJlc2lkdWU7CisJCQlyZXN1bHQtPnJlc3VsdCA9IERN QV9UUkFOU19OT0VSUk9SOworCQl9CisJfQorfQorCisvKgorICogVGhpcyB0YXNrbGV0IGhhbmRs ZXMgdGhlIGNvbXBsZXRpb24gb2YgYSBETUEgZGVzY3JpcHRvciBieQorICogY2FsbGluZyBpdHMg Y2FsbGJhY2sgYW5kIGZyZWVpbmcgaXQuCisgKi8KK3N0YXRpYyB2b2lkIHVkbWFfdmNoYW5fY29t cGxldGUodW5zaWduZWQgbG9uZyBhcmcpCit7CisJc3RydWN0IHZpcnRfZG1hX2NoYW4gKnZjID0g KHN0cnVjdCB2aXJ0X2RtYV9jaGFuICopYXJnOworCXN0cnVjdCB2aXJ0X2RtYV9kZXNjICp2ZCwg Kl92ZDsKKwlzdHJ1Y3QgZG1hZW5naW5lX2Rlc2NfY2FsbGJhY2sgY2I7CisJTElTVF9IRUFEKGhl YWQpOworCisJc3Bpbl9sb2NrX2lycSgmdmMtPmxvY2spOworCWxpc3Rfc3BsaWNlX3RhaWxfaW5p dCgmdmMtPmRlc2NfY29tcGxldGVkLCAmaGVhZCk7CisJdmQgPSB2Yy0+Y3ljbGljOworCWlmICh2 ZCkgeworCQl2Yy0+Y3ljbGljID0gTlVMTDsKKwkJZG1hZW5naW5lX2Rlc2NfZ2V0X2NhbGxiYWNr KCZ2ZC0+dHgsICZjYik7CisJfSBlbHNlIHsKKwkJbWVtc2V0KCZjYiwgMCwgc2l6ZW9mKGNiKSk7 CisJfQorCXNwaW5fdW5sb2NrX2lycSgmdmMtPmxvY2spOworCisJdWRtYV9kZXNjX3ByZV9jYWxs YmFjayh2YywgdmQsIE5VTEwpOworCWRtYWVuZ2luZV9kZXNjX2NhbGxiYWNrX2ludm9rZSgmY2Is IE5VTEwpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZkLCBfdmQsICZoZWFkLCBub2Rl KSB7CisJCXN0cnVjdCBkbWFlbmdpbmVfcmVzdWx0IHJlc3VsdDsKKworCQlkbWFlbmdpbmVfZGVz Y19nZXRfY2FsbGJhY2soJnZkLT50eCwgJmNiKTsKKworCQlsaXN0X2RlbCgmdmQtPm5vZGUpOwor CisJCXVkbWFfZGVzY19wcmVfY2FsbGJhY2sodmMsIHZkLCAmcmVzdWx0KTsKKwkJZG1hZW5naW5l X2Rlc2NfY2FsbGJhY2tfaW52b2tlKCZjYiwgJnJlc3VsdCk7CisKKwkJdmNoYW5fdmRlc2NfZmlu aSh2ZCk7CisJfQorfQorCiBzdGF0aWMgdm9pZCB1ZG1hX2ZyZWVfY2hhbl9yZXNvdXJjZXMoc3Ry dWN0IGRtYV9jaGFuICpjaGFuKQogewogCXN0cnVjdCB1ZG1hX2NoYW4gKnVjID0gdG9fdWRtYV9j aGFuKGNoYW4pOwotLSAKUGV0ZXIKClRleGFzIEluc3RydW1lbnRzIEZpbmxhbmQgT3ksIFBvcmtr YWxhbmthdHUgMjIsIDAwMTgwIEhlbHNpbmtpLgpZLXR1bm51cy9CdXNpbmVzcyBJRDogMDYxNTUy MS00LiBLb3RpcGFpa2thL0RvbWljaWxlOiBIZWxzaW5raQoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0 CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK