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,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 564CCC0650F for ; Tue, 30 Jul 2019 09:39:23 +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 2794D20665 for ; Tue, 30 Jul 2019 09:39:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="AYuBD5q/"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ti.com header.i=@ti.com header.b="k6wuNf7i" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2794D20665 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=hyGibItD5iPxYl0cAQUf0WdcIj7hjtSFNuy592o5xdg=; b=AYuBD5q/QUt0N7 GoebraMVhZTHVUGfyhUPB8mMkwjzH45iz8fZjIl1LYNn5za5f5Ua9E+0f68zjpgjDOXoOoXfTgzhN 2Q9NaSIHFvhm0B4UOqX8Fmz2FRK6nMfuhR9Wbrt4a/vhONp07cCNJQ1xHszwB3WpG/Q5KYTB5ITI8 xHFlMag7v+44/NArHkBHtfX+L07rxJnlHnux9X6ElOvtXdcN2zqkMJbKAPYOhjmrjMtawdZyrE4WO 5AaWYkzKq4iZbSfeC1YhnRoXuMr46ZSbi2yVdrUva8GxCOMqhy0gZLrcstKI/3Q0ChKFF+eC6JEeg zGwLGXv7OVWX21MiZeXQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hsObC-0001WV-RM; Tue, 30 Jul 2019 09:39:14 +0000 Received: from fllv0016.ext.ti.com ([198.47.19.142]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1hsOY3-0007HF-0R for linux-arm-kernel@lists.infradead.org; Tue, 30 Jul 2019 09:36:00 +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 x6U9Zt4b101040; Tue, 30 Jul 2019 04:35:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1564479355; bh=dX51YZpxiE/yuZ+iCV9zUfHg8YioELDnbdsOHahGMNY=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=k6wuNf7iwHsEHr6YZSbr6nnG/xa8HPwUkFf9Kij7HRZE+84Vm1DOS+nJqicS5kuHM SCPTiNkFHk6UFMC+R82o/gbPklWtVrn+ynzugBe4bMpbhHjIGXvU7YfdxPozC9H+bh f7ZVkYIrBYXNdVzrGF0+S4dIFWOffv4BbzTSgzeU= Received: from DLEE103.ent.ti.com (dlee103.ent.ti.com [157.170.170.33]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id x6U9ZtOk049460 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 30 Jul 2019 04:35:55 -0500 Received: from DLEE113.ent.ti.com (157.170.170.24) by DLEE103.ent.ti.com (157.170.170.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5; Tue, 30 Jul 2019 04:35:55 -0500 Received: from lelv0326.itg.ti.com (10.180.67.84) by DLEE113.ent.ti.com (157.170.170.24) 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, 30 Jul 2019 04:35:55 -0500 Received: from feketebors.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id x6U9YkU8027547; Tue, 30 Jul 2019 04:35:52 -0500 From: Peter Ujfalusi To: , , , Subject: [PATCH v2 11/14] dmaengine: ti: New driver for K3 UDMA - split#4: dma_device callbacks 1 Date: Tue, 30 Jul 2019 12:34:47 +0300 Message-ID: <20190730093450.12664-12-peter.ujfalusi@ti.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190730093450.12664-1-peter.ujfalusi@ti.com> References: <20190730093450.12664-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-20190730_023559_146268_2110F4FB X-CRM114-Status: GOOD ( 17.00 ) 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+Ci0tLQogZHJpdmVycy9kbWEvdGkvazMtdWRtYS5jIHwgMjk3ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDI5NyBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvdGkvazMtdWRtYS5jIGIvZHJpdmVy cy9kbWEvdGkvazMtdWRtYS5jCmluZGV4IDBkZTM4ZGIwM2I4ZC4uODA3NjcwYmE5Nzc0IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2RtYS90aS9rMy11ZG1hLmMKKysrIGIvZHJpdmVycy9kbWEvdGkvazMt dWRtYS5jCkBAIC0xNzcwLDYgKzE3NzAsMzAzIEBAIHN0YXRpYyBpbnQgdWRtYV9hbGxvY19jaGFu 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 bWFfdGNoYW5ydF9yZWFkKHVjLT50Y2hhbiwKKwkJCQkJCSBVRE1BX1RDSEFOX1JUX1NCQ05UX1JF Ryk7CisJCQlwZG1hX2JjbnQgPSB1ZG1hX3RjaGFucnRfcmVhZCh1Yy0+dGNoYW4sCisJCQkJCQlV RE1BX1RDSEFOX1JUX1BFRVJfQkNOVF9SRUcpOworCQkJcGNudCA9IHVkbWFfdGNoYW5ydF9yZWFk KHVjLT50Y2hhbiwKKwkJCQkJCSBVRE1BX1RDSEFOX1JUX1BDTlRfUkVHKTsKKworCQkJaWYgKGJj bnQgPiBwZG1hX2JjbnQpCisJCQkJZGVsYXkgPSBiY250IC0gcGRtYV9iY250OworCQl9IGVsc2Ug aWYgKHVjLT5kZXNjLT5kaXIgPT0gRE1BX0RFVl9UT19NRU0pIHsKKwkJCWJjbnQgPSB1ZG1hX3Jj aGFucnRfcmVhZCh1Yy0+cmNoYW4sCisJCQkJCQkgVURNQV9SQ0hBTl9SVF9CQ05UX1JFRyk7CisJ CQlwZG1hX2JjbnQgPSB1ZG1hX3JjaGFucnRfcmVhZCh1Yy0+cmNoYW4sCisJCQkJCQlVRE1BX1JD SEFOX1JUX1BFRVJfQkNOVF9SRUcpOworCQkJcGNudCA9IHVkbWFfcmNoYW5ydF9yZWFkKHVjLT5y Y2hhbiwKKwkJCQkJCSBVRE1BX1JDSEFOX1JUX1BDTlRfUkVHKTsKKworCQkJaWYgKHBkbWFfYmNu dCA+IGJjbnQpCisJCQkJZGVsYXkgPSBwZG1hX2JjbnQgLSBiY250OworCQl9IGVsc2UgeworCQkJ dTMyIHNiY250OworCisJCQlzYmNudCA9IHVkbWFfdGNoYW5ydF9yZWFkKHVjLT50Y2hhbiwKKwkJ CQkJCSAgVURNQV9UQ0hBTl9SVF9CQ05UX1JFRyk7CisJCQliY250ID0gdWRtYV90Y2hhbnJ0X3Jl YWQodWMtPnRjaGFuLAorCQkJCQkJIFVETUFfVENIQU5fUlRfUEVFUl9CQ05UX1JFRyk7CisJCQlw Y250ID0gdWRtYV90Y2hhbnJ0X3JlYWQodWMtPnRjaGFuLAorCQkJCQkJIFVETUFfVENIQU5fUlRf UENOVF9SRUcpOworCisJCQlpZiAoc2JjbnQgPiBiY250KQorCQkJCWRlbGF5ID0gc2JjbnQgLSBi Y250OworCQl9CisKKwkJYmNudCAtPSB1Yy0+YmNudDsKKwkJaWYgKGJjbnQgJiYgIShiY250ICUg dWMtPmRlc2MtPnJlc2lkdWUpKQorCQkJcmVzaWR1ZSA9IDA7CisJCWVsc2UKKwkJCXJlc2lkdWUg LT0gYmNudCAlIHVjLT5kZXNjLT5yZXNpZHVlOworCisJCWlmICghcmVzaWR1ZSAmJiAodWMtPmRp ciA9PSBETUFfREVWX1RPX01FTSB8fCAhZGVsYXkpKSB7CisJCQlyZXQgPSBETUFfQ09NUExFVEU7 CisJCQlkZWxheSA9IDA7CisJCX0KKworCQlkbWFfc2V0X3Jlc2lkdWUodHhzdGF0ZSwgcmVzaWR1 ZSk7CisJCWRtYV9zZXRfaW5fZmxpZ2h0X2J5dGVzKHR4c3RhdGUsIGRlbGF5KTsKKworCX0gZWxz ZSB7CisJCXJldCA9IERNQV9DT01QTEVURTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0 aWMgaW50IHVkbWFfcGF1c2Uoc3RydWN0IGRtYV9jaGFuICpjaGFuKQoreworCXN0cnVjdCB1ZG1h X2NoYW4gKnVjID0gdG9fdWRtYV9jaGFuKGNoYW4pOworCisJaWYgKCF1Yy0+ZGVzYykKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwkvKiBwYXVzZSB0aGUgY2hhbm5lbCAqLworCXN3aXRjaCAodWMtPmRl c2MtPmRpcikgeworCWNhc2UgRE1BX0RFVl9UT19NRU06CisJCXVkbWFfcmNoYW5ydF91cGRhdGVf Yml0cyh1Yy0+cmNoYW4sCisJCQkJCSBVRE1BX1JDSEFOX1JUX1BFRVJfUlRfRU5fUkVHLAorCQkJ CQkgVURNQV9QRUVSX1JUX0VOX1BBVVNFLAorCQkJCQkgVURNQV9QRUVSX1JUX0VOX1BBVVNFKTsK KwkJYnJlYWs7CisJY2FzZSBETUFfTUVNX1RPX0RFVjoKKwkJdWRtYV90Y2hhbnJ0X3VwZGF0ZV9i aXRzKHVjLT50Y2hhbiwKKwkJCQkJIFVETUFfVENIQU5fUlRfUEVFUl9SVF9FTl9SRUcsCisJCQkJ CSBVRE1BX1BFRVJfUlRfRU5fUEFVU0UsCisJCQkJCSBVRE1BX1BFRVJfUlRfRU5fUEFVU0UpOwor CQlicmVhazsKKwljYXNlIERNQV9NRU1fVE9fTUVNOgorCQl1ZG1hX3RjaGFucnRfdXBkYXRlX2Jp dHModWMtPnRjaGFuLCBVRE1BX1RDSEFOX1JUX0NUTF9SRUcsCisJCQkJCSBVRE1BX0NIQU5fUlRf Q1RMX1BBVVNFLAorCQkJCQkgVURNQV9DSEFOX1JUX0NUTF9QQVVTRSk7CisJCWJyZWFrOworCWRl ZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMg aW50IHVkbWFfcmVzdW1lKHN0cnVjdCBkbWFfY2hhbiAqY2hhbikKK3sKKwlzdHJ1Y3QgdWRtYV9j aGFuICp1YyA9IHRvX3VkbWFfY2hhbihjaGFuKTsKKworCWlmICghdWMtPmRlc2MpCisJCXJldHVy biAtRUlOVkFMOworCisJLyogcmVzdW1lIHRoZSBjaGFubmVsICovCisJc3dpdGNoICh1Yy0+ZGVz Yy0+ZGlyKSB7CisJY2FzZSBETUFfREVWX1RPX01FTToKKwkJdWRtYV9yY2hhbnJ0X3VwZGF0ZV9i aXRzKHVjLT5yY2hhbiwKKwkJCQkJIFVETUFfUkNIQU5fUlRfUEVFUl9SVF9FTl9SRUcsCisJCQkJ CSBVRE1BX1BFRVJfUlRfRU5fUEFVU0UsIDApOworCisJCWJyZWFrOworCWNhc2UgRE1BX01FTV9U T19ERVY6CisJCXVkbWFfdGNoYW5ydF91cGRhdGVfYml0cyh1Yy0+dGNoYW4sCisJCQkJCSBVRE1B X1RDSEFOX1JUX1BFRVJfUlRfRU5fUkVHLAorCQkJCQkgVURNQV9QRUVSX1JUX0VOX1BBVVNFLCAw KTsKKwkJYnJlYWs7CisJY2FzZSBETUFfTUVNX1RPX01FTToKKwkJdWRtYV90Y2hhbnJ0X3VwZGF0 ZV9iaXRzKHVjLT50Y2hhbiwgVURNQV9UQ0hBTl9SVF9DVExfUkVHLAorCQkJCQkgVURNQV9DSEFO X1JUX0NUTF9QQVVTRSwgMCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFM OworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHVkbWFfdGVybWluYXRlX2FsbChz dHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCit7CisJc3RydWN0IHVkbWFfY2hhbiAqdWMgPSB0b191ZG1h X2NoYW4oY2hhbik7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlMSVNUX0hFQUQoaGVhZCk7CisK KwlzcGluX2xvY2tfaXJxc2F2ZSgmdWMtPnZjLmxvY2ssIGZsYWdzKTsKKworCWlmICh1ZG1hX2lz X2NoYW5fcnVubmluZyh1YykpCisJCXVkbWFfc3RvcCh1Yyk7CisKKwlpZiAodWMtPmRlc2MpIHsK KwkJdWMtPnRlcm1pbmF0ZWRfZGVzYyA9IHVjLT5kZXNjOworCQl1Yy0+ZGVzYyA9IE5VTEw7CisJ CXVjLT50ZXJtaW5hdGVkX2Rlc2MtPnRlcm1pbmF0ZWQgPSB0cnVlOworCX0KKworCXVjLT5wYXVz ZWQgPSBmYWxzZTsKKworCXZjaGFuX2dldF9hbGxfZGVzY3JpcHRvcnMoJnVjLT52YywgJmhlYWQp OworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnVjLT52Yy5sb2NrLCBmbGFncyk7CisJdmNoYW5f ZG1hX2Rlc2NfZnJlZV9saXN0KCZ1Yy0+dmMsICZoZWFkKTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgdm9pZCB1ZG1hX3N5bmNocm9uaXplKHN0cnVjdCBkbWFfY2hhbiAqY2hhbikKK3sKKwlz dHJ1Y3QgdWRtYV9jaGFuICp1YyA9IHRvX3VkbWFfY2hhbihjaGFuKTsKKwl1bnNpZ25lZCBsb25n IHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKDEwMDApOworCisJdmNoYW5fc3luY2hyb25pemUo JnVjLT52Yyk7CisKKwlpZiAodWMtPnN0YXRlID09IFVETUFfQ0hBTl9JU19URVJNSU5BVElORykg eworCQl0aW1lb3V0ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZ1Yy0+dGVhcmRvd25f Y29tcGxldGVkLAorCQkJCQkJICAgICAgdGltZW91dCk7CisJCWlmICghdGltZW91dCkgeworCQkJ ZGV2X3dhcm4odWMtPnVkLT5kZXYsICJjaGFuJWQgdGVhcmRvd24gdGltZW91dCFcbiIsCisJCQkJ IHVjLT5pZCk7CisJCQl1ZG1hX2R1bXBfY2hhbl9zdGRhdGEodWMpOworCQkJdWRtYV9yZXNldF9j aGFuKHVjLCB0cnVlKTsKKwkJfQorCX0KKworCXVkbWFfcmVzZXRfY2hhbih1YywgZmFsc2UpOwor CWlmICh1ZG1hX2lzX2NoYW5fcnVubmluZyh1YykpCisJCWRldl93YXJuKHVjLT51ZC0+ZGV2LCAi Y2hhbiVkIHJlZnVzZWQgdG8gc3RvcCFcbiIsIHVjLT5pZCk7CisKKwl1ZG1hX3Jlc2V0X3Jpbmdz KHVjKTsKK30KKworc3RhdGljIHZvaWQgdWRtYV9kZXNjX3ByZV9jYWxsYmFjayhzdHJ1Y3Qgdmly dF9kbWFfY2hhbiAqdmMsCisJCQkJICAgc3RydWN0IHZpcnRfZG1hX2Rlc2MgKnZkLAorCQkJCSAg IHN0cnVjdCBkbWFlbmdpbmVfcmVzdWx0ICpyZXN1bHQpCit7CisJc3RydWN0IHVkbWFfY2hhbiAq dWMgPSB0b191ZG1hX2NoYW4oJnZjLT5jaGFuKTsKKwlzdHJ1Y3QgdWRtYV9kZXNjICpkOworCisJ aWYgKCF2ZCkKKwkJcmV0dXJuOworCisJZCA9IHRvX3VkbWFfZGVzYygmdmQtPnR4KTsKKworCWlm IChkLT5tZXRhZGF0YV9zaXplKQorCQl1ZG1hX2ZldGNoX2VwaWIodWMsIGQpOworCisJLyogUHJv dmlkZSByZXNpZHVlIGluZm9ybWF0aW9uIGZvciB0aGUgY2xpZW50ICovCisJaWYgKHJlc3VsdCkg eworCQl2b2lkICpkZXNjX3ZhZGRyID0gdWRtYV9jdXJyX2NwcGk1X2Rlc2NfdmFkZHIoZCwgZC0+ ZGVzY19pZHgpOworCisJCWlmIChjcHBpNV9kZXNjX2dldF90eXBlKGRlc2NfdmFkZHIpID09CisJ CSAgICBDUFBJNV9JTkZPMF9ERVNDX1RZUEVfVkFMX0hPU1QpIHsKKwkJCXJlc3VsdC0+cmVzaWR1 ZSA9IGNwcGk1X2hkZXNjX2dldF9wa3RsZW4oZGVzY192YWRkcik7CisJCQlpZiAocmVzdWx0LT5y ZXNpZHVlID09IGQtPnJlc2lkdWUpCisJCQkJcmVzdWx0LT5yZXN1bHQgPSBETUFfVFJBTlNfTk9F UlJPUjsKKwkJCWVsc2UKKwkJCQlyZXN1bHQtPnJlc3VsdCA9IERNQV9UUkFOU19BQk9SVEVEOwor CQl9IGVsc2UgeworCQkJcmVzdWx0LT5yZXNpZHVlID0gZC0+cmVzaWR1ZTsKKwkJCXJlc3VsdC0+ cmVzdWx0ID0gRE1BX1RSQU5TX05PRVJST1I7CisJCX0KKwl9Cit9CisKKy8qCisgKiBUaGlzIHRh c2tsZXQgaGFuZGxlcyB0aGUgY29tcGxldGlvbiBvZiBhIERNQSBkZXNjcmlwdG9yIGJ5CisgKiBj YWxsaW5nIGl0cyBjYWxsYmFjayBhbmQgZnJlZWluZyBpdC4KKyAqLworc3RhdGljIHZvaWQgdWRt YV92Y2hhbl9jb21wbGV0ZSh1bnNpZ25lZCBsb25nIGFyZykKK3sKKwlzdHJ1Y3QgdmlydF9kbWFf Y2hhbiAqdmMgPSAoc3RydWN0IHZpcnRfZG1hX2NoYW4gKilhcmc7CisJc3RydWN0IHZpcnRfZG1h X2Rlc2MgKnZkLCAqX3ZkOworCXN0cnVjdCBkbWFlbmdpbmVfZGVzY19jYWxsYmFjayBjYjsKKwlM SVNUX0hFQUQoaGVhZCk7CisKKwlzcGluX2xvY2tfaXJxKCZ2Yy0+bG9jayk7CisJbGlzdF9zcGxp Y2VfdGFpbF9pbml0KCZ2Yy0+ZGVzY19jb21wbGV0ZWQsICZoZWFkKTsKKwl2ZCA9IHZjLT5jeWNs aWM7CisJaWYgKHZkKSB7CisJCXZjLT5jeWNsaWMgPSBOVUxMOworCQlkbWFlbmdpbmVfZGVzY19n ZXRfY2FsbGJhY2soJnZkLT50eCwgJmNiKTsKKwl9IGVsc2UgeworCQltZW1zZXQoJmNiLCAwLCBz aXplb2YoY2IpKTsKKwl9CisJc3Bpbl91bmxvY2tfaXJxKCZ2Yy0+bG9jayk7CisKKwl1ZG1hX2Rl c2NfcHJlX2NhbGxiYWNrKHZjLCB2ZCwgTlVMTCk7CisJZG1hZW5naW5lX2Rlc2NfY2FsbGJhY2tf aW52b2tlKCZjYiwgTlVMTCk7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodmQsIF92ZCwg JmhlYWQsIG5vZGUpIHsKKwkJc3RydWN0IGRtYWVuZ2luZV9yZXN1bHQgcmVzdWx0OworCisJCWRt YWVuZ2luZV9kZXNjX2dldF9jYWxsYmFjaygmdmQtPnR4LCAmY2IpOworCisJCWxpc3RfZGVsKCZ2 ZC0+bm9kZSk7CisKKwkJdWRtYV9kZXNjX3ByZV9jYWxsYmFjayh2YywgdmQsICZyZXN1bHQpOwor CQlkbWFlbmdpbmVfZGVzY19jYWxsYmFja19pbnZva2UoJmNiLCAmcmVzdWx0KTsKKworCQl2Y2hh bl92ZGVzY19maW5pKHZkKTsKKwl9Cit9CisKIHN0YXRpYyB2b2lkIHVkbWFfZnJlZV9jaGFuX3Jl c291cmNlcyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCiB7CiAJc3RydWN0IHVkbWFfY2hhbiAqdWMg PSB0b191ZG1hX2NoYW4oY2hhbik7Ci0tIApQZXRlcgoKVGV4YXMgSW5zdHJ1bWVudHMgRmlubGFu ZCBPeSwgUG9ya2thbGFua2F0dSAyMiwgMDAxODAgSGVsc2lua2kuClktdHVubnVzL0J1c2luZXNz IElEOiAwNjE1NTIxLTQuIEtvdGlwYWlra2EvRG9taWNpbGU6IEhlbHNpbmtpCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=