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 2BE12ECDFB6 for ; Tue, 1 Oct 2019 06:19:48 +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 EB2A1215EA for ; Tue, 1 Oct 2019 06:19: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="Sd6/nuf/"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ti.com header.i=@ti.com header.b="dOWcrnKT" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EB2A1215EA 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=ONqzxZHYusqr1n/oi13HKd/Z6eFMcOhQahOo0Kwrwf8=; b=Sd6/nuf/nzd+GB tZnSXitApJvqeJfc8UVDVy0ltyy5alm45QUM5/G3CoysU+0KM5Vuvl2B/8W5VKaJtRphJ06uyiwdw 24Xie1dKHg2Z9WMruWrooRpWeLOX1r1dNpYqFeROHLu8ls8eBT8Aoz3u28GZwnNUpL6qDeKeIp3S3 ULYP/fwZR0035+O8I92OpRXf5+Zd71tLICoBOayzcqV+LN455AHL9mQddWIEFvBLBpsH8CkIBeZM1 DylbBUY7iCJiI3REZaHsQOlqdPo2pIwZbtoQaBcHnyp1HufJVyM20ZNpKajdKJaQzWx9CIR2PxqL5 PM5StSkWA2V4NqBcI1RQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.2 #3 (Red Hat Linux)) id 1iFBVj-0003EA-J6; Tue, 01 Oct 2019 06:19:47 +0000 Received: from fllv0016.ext.ti.com ([198.47.19.142]) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iFBT6-0000hj-50 for linux-arm-kernel@lists.infradead.org; Tue, 01 Oct 2019 06:17:06 +0000 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by fllv0016.ext.ti.com (8.15.2/8.15.2) with ESMTP id x916H04f128299; Tue, 1 Oct 2019 01:17:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1569910620; bh=O3eicC9FX4E6FszHR0+MfXyhWNEXborG/HRP1QSjsGo=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=dOWcrnKT8QQwLGuzjpdXh0260MFlM0owPTtmC78gAUOh42F6ePw1dstBfPISMR6eS 2uG3XLWWDZAI2E1dsTFK1otyb0QlJP1CYr+bjOgh8SKRxt1TI2KG3GOmydtU/qIdnX UkaAV1tUgLvLIZFFbhskgO7K+XF4Ea73Sz9hjbUI= Received: from DFLE107.ent.ti.com (dfle107.ent.ti.com [10.64.6.28]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id x916H0gI018521 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 1 Oct 2019 01:17:00 -0500 Received: from DFLE108.ent.ti.com (10.64.6.29) by DFLE107.ent.ti.com (10.64.6.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5; Tue, 1 Oct 2019 01:16:50 -0500 Received: from fllv0039.itg.ti.com (10.64.41.19) by DFLE108.ent.ti.com (10.64.6.29) 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; Tue, 1 Oct 2019 01:16:50 -0500 Received: from feketebors.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by fllv0039.itg.ti.com (8.15.2/8.15.2) with ESMTP id x916GGXG090310; Tue, 1 Oct 2019 01:16:56 -0500 From: Peter Ujfalusi To: , , , Subject: [PATCH v3 11/14] dmaengine: ti: New driver for K3 UDMA - split#4: dma_device callbacks 1 Date: Tue, 1 Oct 2019 09:17:01 +0300 Message-ID: <20191001061704.2399-12-peter.ujfalusi@ti.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191001061704.2399-1-peter.ujfalusi@ti.com> References: <20191001061704.2399-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-20190930_231704_299656_EAFC1133 X-CRM114-Status: GOOD ( 18.45 ) 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+Ci0tLQogZHJpdmVycy9kbWEvdGkvazMtdWRtYS5jIHwgMjk1ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDI5NSBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvdGkvazMtdWRtYS5jIGIvZHJpdmVy cy9kbWEvdGkvazMtdWRtYS5jCmluZGV4IGM3MzY4ZTE1MDExOC4uNjlhMTI1ZWMzZDA3IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2RtYS90aS9rMy11ZG1hLmMKKysrIGIvZHJpdmVycy9kbWEvdGkvazMt dWRtYS5jCkBAIC0xODE2LDYgKzE4MTYsMzAxIEBAIHN0YXRpYyBpbnQgdWRtYV9hbGxvY19jaGFu X3Jlc291cmNlcyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCiAJcmV0dXJuIHJldDsKIH0KIAorc3Rh dGljIGludCB1ZG1hX3NsYXZlX2NvbmZpZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sCisJCQkgICAg IHN0cnVjdCBkbWFfc2xhdmVfY29uZmlnICpjZmcpCit7CisJc3RydWN0IHVkbWFfY2hhbiAqdWMg PSB0b191ZG1hX2NoYW4oY2hhbik7CisKKwltZW1jcHkoJnVjLT5jZmcsIGNmZywgc2l6ZW9mKHVj LT5jZmcpKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB1ZG1hX2lzc3VlX3BlbmRp bmcoc3RydWN0IGRtYV9jaGFuICpjaGFuKQoreworCXN0cnVjdCB1ZG1hX2NoYW4gKnVjID0gdG9f dWRtYV9jaGFuKGNoYW4pOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJx c2F2ZSgmdWMtPnZjLmxvY2ssIGZsYWdzKTsKKworCS8qIElmIHdlIGhhdmUgc29tZXRoaW5nIHBl bmRpbmcgYW5kIG5vIGFjdGl2ZSBkZXNjcmlwdG9yLCB0aGVuICovCisJaWYgKHZjaGFuX2lzc3Vl X3BlbmRpbmcoJnVjLT52YykgJiYgIXVjLT5kZXNjKSB7CisJCS8qCisJCSAqIHN0YXJ0IGEgZGVz Y3JpcHRvciBpZiB0aGUgY2hhbm5lbCBpcyBOT1QgW21hcmtlZCBhcworCQkgKiB0ZXJtaW5hdGlu ZyBfYW5kXyBpdCBpcyBzdGlsbCBydW5uaW5nICh0ZWFyZG93biBoYXMgbm90CisJCSAqIGNvbXBs ZXRlZCB5ZXQpXS4KKwkJICovCisJCWlmICghKHVjLT5zdGF0ZSA9PSBVRE1BX0NIQU5fSVNfVEVS TUlOQVRJTkcgJiYKKwkJICAgICAgdWRtYV9pc19jaGFuX3J1bm5pbmcodWMpKSkKKwkJCXVkbWFf c3RhcnQodWMpOworCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVjLT52Yy5sb2NrLCBm bGFncyk7Cit9CisKKy8qIE5vdCBtdWNoIHlldCAqLworc3RhdGljIGVudW0gZG1hX3N0YXR1cyB1 ZG1hX3R4X3N0YXR1cyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sCisJCQkJICAgICAgZG1hX2Nvb2tp ZV90IGNvb2tpZSwKKwkJCQkgICAgICBzdHJ1Y3QgZG1hX3R4X3N0YXRlICp0eHN0YXRlKQorewor CXN0cnVjdCB1ZG1hX2NoYW4gKnVjID0gdG9fdWRtYV9jaGFuKGNoYW4pOworCWVudW0gZG1hX3N0 YXR1cyByZXQ7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZ1 Yy0+dmMubG9jaywgZmxhZ3MpOworCisJcmV0ID0gZG1hX2Nvb2tpZV9zdGF0dXMoY2hhbiwgY29v a2llLCB0eHN0YXRlKTsKKworCWlmICghdWRtYV9pc19jaGFuX3J1bm5pbmcodWMpKQorCQlyZXQg PSBETUFfQ09NUExFVEU7CisKKwlpZiAocmV0ID09IERNQV9DT01QTEVURSB8fCAhdHhzdGF0ZSkK KwkJZ290byBvdXQ7CisKKwlpZiAodWMtPmRlc2MgJiYgdWMtPmRlc2MtPnZkLnR4LmNvb2tpZSA9 PSBjb29raWUpIHsKKwkJdTMyIHBlZXJfYmNudCA9IDA7CisJCXUzMiBiY250ID0gMDsKKwkJdTMy IHJlc2lkdWUgPSB1Yy0+ZGVzYy0+cmVzaWR1ZTsKKwkJdTMyIGRlbGF5ID0gMDsKKworCQlpZiAo dWMtPmRlc2MtPmRpciA9PSBETUFfTUVNX1RPX0RFVikgeworCQkJYmNudCA9IHVkbWFfdGNoYW5y dF9yZWFkKHVjLT50Y2hhbiwKKwkJCQkJCSBVRE1BX1RDSEFOX1JUX1NCQ05UX1JFRyk7CisKKwkJ CWlmICh1Yy0+c3RhdGljX3RyX3R5cGUpIHsKKwkJCQlwZWVyX2JjbnQgPSB1ZG1hX3RjaGFucnRf cmVhZCh1Yy0+dGNoYW4sCisJCQkJCQlVRE1BX1RDSEFOX1JUX1BFRVJfQkNOVF9SRUcpOworCisJ CQkJaWYgKGJjbnQgPiBwZWVyX2JjbnQpCisJCQkJCWRlbGF5ID0gYmNudCAtIHBlZXJfYmNudDsK KwkJCX0KKwkJfSBlbHNlIGlmICh1Yy0+ZGVzYy0+ZGlyID09IERNQV9ERVZfVE9fTUVNKSB7CisJ CQliY250ID0gdWRtYV9yY2hhbnJ0X3JlYWQodWMtPnJjaGFuLAorCQkJCQkJIFVETUFfUkNIQU5f UlRfQkNOVF9SRUcpOworCisJCQlpZiAodWMtPnN0YXRpY190cl90eXBlKSB7CisJCQkJcGVlcl9i Y250ID0gdWRtYV9yY2hhbnJ0X3JlYWQodWMtPnJjaGFuLAorCQkJCQkJVURNQV9SQ0hBTl9SVF9Q RUVSX0JDTlRfUkVHKTsKKworCQkJCWlmIChwZWVyX2JjbnQgPiBiY250KQorCQkJCQlkZWxheSA9 IHBlZXJfYmNudCAtIGJjbnQ7CisJCQl9CisJCX0gZWxzZSB7CisJCQliY250ID0gdWRtYV90Y2hh bnJ0X3JlYWQodWMtPnRjaGFuLAorCQkJCQkJIFVETUFfVENIQU5fUlRfQkNOVF9SRUcpOworCQl9 CisKKwkJYmNudCAtPSB1Yy0+YmNudDsKKwkJaWYgKGJjbnQgJiYgIShiY250ICUgdWMtPmRlc2Mt PnJlc2lkdWUpKQorCQkJcmVzaWR1ZSA9IDA7CisJCWVsc2UKKwkJCXJlc2lkdWUgLT0gYmNudCAl IHVjLT5kZXNjLT5yZXNpZHVlOworCisJCWlmICghcmVzaWR1ZSAmJiAodWMtPmRpciA9PSBETUFf REVWX1RPX01FTSB8fCAhZGVsYXkpKSB7CisJCQlyZXQgPSBETUFfQ09NUExFVEU7CisJCQlkZWxh eSA9IDA7CisJCX0KKworCQlkbWFfc2V0X3Jlc2lkdWUodHhzdGF0ZSwgcmVzaWR1ZSk7CisJCWRt YV9zZXRfaW5fZmxpZ2h0X2J5dGVzKHR4c3RhdGUsIGRlbGF5KTsKKworCX0gZWxzZSB7CisJCXJl dCA9IERNQV9DT01QTEVURTsKKwl9CisKK291dDoKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ1 Yy0+dmMubG9jaywgZmxhZ3MpOworCXJldHVybiByZXQ7Cit9CisKKworc3RhdGljIGludCB1ZG1h 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