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 80100CA9ECF for ; Fri, 1 Nov 2019 08:47:02 +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 4C6CC208E3 for ; Fri, 1 Nov 2019 08:47:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="hjljfXb/"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ti.com header.i=@ti.com header.b="gT2UKjpT" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4C6CC208E3 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=7qri+tN9YFGM6QLVFCG5uLRMDFP1yt6u3LlCcRs2E98=; b=hjljfXb/ep+4DM 2/hyrr4nTgr6WIdSCvet+5MAIZ98jd5oQY63SEtUj2SvSpvy2Vhlr6ovo1UqSb1GucwODXfT4Lydj uA3WkFrFY1lp7TUxZHEFGXRx9iIUTpvS95bImzJG0y28FRWjgZY17OtOvrdxfCeKk820sv+nud7/p 4cRmlDJgS0l8o6ogrln9df+Z9Zo9CuwLZvE+tVyoFAeQxbUrT1sJHCPT8bo2XcIT0PsleRuMtT+ae 4/+P5NWAdQ1pzW7VQth55ZtqLa3tODcZ4vj/rIYpf2883E3a86whU5PiQp5MDyt/r8AdDduHNTy1H e03gu4bJTBWjr6B5WSLw==; 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 1iQSa7-0006cE-D7; Fri, 01 Nov 2019 08:46:55 +0000 Received: from lelv0142.ext.ti.com ([198.47.23.249]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iQSUh-0000gE-GU for linux-arm-kernel@lists.infradead.org; Fri, 01 Nov 2019 08:41:24 +0000 Received: from fllv0035.itg.ti.com ([10.64.41.0]) by lelv0142.ext.ti.com (8.15.2/8.15.2) with ESMTP id xA18fF9G038287; Fri, 1 Nov 2019 03:41:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1572597675; bh=C3GaylUO18bbv16a3d9flFav9OqNNykTsNGThzik/aA=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=gT2UKjpTL92mz23sB3NSRz9Byx4NOflAUDTXRpaGOYXv5uP1PMK3vQ6mNX4XaR8Ag SXA9ibPtU0mk4arkoAjj8Vqvg6uaroLL2NLZThq+J3OwKr6aA9EjNpEWCqZZvkj+FA I1KLgfVkyRssUCRT3NfEbSL3x+Z9lm6Zks6zyRUI= Received: from DFLE107.ent.ti.com (dfle107.ent.ti.com [10.64.6.28]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTP id xA18fFF8122772; Fri, 1 Nov 2019 03:41:15 -0500 Received: from DFLE112.ent.ti.com (10.64.6.33) 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; Fri, 1 Nov 2019 03:41:02 -0500 Received: from lelv0327.itg.ti.com (10.180.67.183) by DFLE112.ent.ti.com (10.64.6.33) 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; Fri, 1 Nov 2019 03:41:02 -0500 Received: from feketebors.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0327.itg.ti.com (8.15.2/8.15.2) with ESMTP id xA18eP8l036903; Fri, 1 Nov 2019 03:41:12 -0500 From: Peter Ujfalusi To: , , , Subject: [PATCH v4 12/15] dmaengine: ti: New driver for K3 UDMA - split#4: dma_device callbacks 1 Date: Fri, 1 Nov 2019 10:41:32 +0200 Message-ID: <20191101084135.14811-13-peter.ujfalusi@ti.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191101084135.14811-1-peter.ujfalusi@ti.com> References: <20191101084135.14811-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-20191101_014119_797555_28E6F91E X-CRM114-Status: GOOD ( 16.30 ) 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 cy9kbWEvdGkvazMtdWRtYS5jCmluZGV4IDJjZTIyZDJmMjAzZS4uNmJkMzQ2ZmJhYTU5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2RtYS90aS9rMy11ZG1hLmMKKysrIGIvZHJpdmVycy9kbWEvdGkvazMt dWRtYS5jCkBAIC0xODEyLDYgKzE4MTIsMzAxIEBAIHN0YXRpYyBpbnQgdWRtYV9hbGxvY19jaGFu 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+ZXBfdHlwZSAhPSBQU0lMX0VQX05BVElWRSkgeworCQkJCXBlZXJfYmNudCA9IHVk bWFfdGNoYW5ydF9yZWFkKHVjLT50Y2hhbiwKKwkJCQkJCVVETUFfVENIQU5fUlRfUEVFUl9CQ05U X1JFRyk7CisKKwkJCQlpZiAoYmNudCA+IHBlZXJfYmNudCkKKwkJCQkJZGVsYXkgPSBiY250IC0g cGVlcl9iY250OworCQkJfQorCQl9IGVsc2UgaWYgKHVjLT5kZXNjLT5kaXIgPT0gRE1BX0RFVl9U T19NRU0pIHsKKwkJCWJjbnQgPSB1ZG1hX3JjaGFucnRfcmVhZCh1Yy0+cmNoYW4sCisJCQkJCQkg VURNQV9SQ0hBTl9SVF9CQ05UX1JFRyk7CisKKwkJCWlmICh1Yy0+ZXBfdHlwZSAhPSBQU0lMX0VQ X05BVElWRSkgeworCQkJCXBlZXJfYmNudCA9IHVkbWFfcmNoYW5ydF9yZWFkKHVjLT5yY2hhbiwK KwkJCQkJCVVETUFfUkNIQU5fUlRfUEVFUl9CQ05UX1JFRyk7CisKKwkJCQlpZiAocGVlcl9iY250 ID4gYmNudCkKKwkJCQkJZGVsYXkgPSBwZWVyX2JjbnQgLSBiY250OworCQkJfQorCQl9IGVsc2Ug eworCQkJYmNudCA9IHVkbWFfdGNoYW5ydF9yZWFkKHVjLT50Y2hhbiwKKwkJCQkJCSBVRE1BX1RD SEFOX1JUX0JDTlRfUkVHKTsKKwkJfQorCisJCWJjbnQgLT0gdWMtPmJjbnQ7CisJCWlmIChiY250 ICYmICEoYmNudCAlIHVjLT5kZXNjLT5yZXNpZHVlKSkKKwkJCXJlc2lkdWUgPSAwOworCQllbHNl CisJCQlyZXNpZHVlIC09IGJjbnQgJSB1Yy0+ZGVzYy0+cmVzaWR1ZTsKKworCQlpZiAoIXJlc2lk dWUgJiYgKHVjLT5kaXIgPT0gRE1BX0RFVl9UT19NRU0gfHwgIWRlbGF5KSkgeworCQkJcmV0ID0g RE1BX0NPTVBMRVRFOworCQkJZGVsYXkgPSAwOworCQl9CisKKwkJZG1hX3NldF9yZXNpZHVlKHR4 c3RhdGUsIHJlc2lkdWUpOworCQlkbWFfc2V0X2luX2ZsaWdodF9ieXRlcyh0eHN0YXRlLCBkZWxh eSk7CisKKwl9IGVsc2UgeworCQlyZXQgPSBETUFfQ09NUExFVEU7CisJfQorCitvdXQ6CisJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmdWMtPnZjLmxvY2ssIGZsYWdzKTsKKwlyZXR1cm4gcmV0Owor fQorCisKK3N0YXRpYyBpbnQgdWRtYV9wYXVzZShzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCit7CisJ c3RydWN0IHVkbWFfY2hhbiAqdWMgPSB0b191ZG1hX2NoYW4oY2hhbik7CisKKwlpZiAoIXVjLT5k ZXNjKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIHBhdXNlIHRoZSBjaGFubmVsICovCisJc3dp dGNoICh1Yy0+ZGVzYy0+ZGlyKSB7CisJY2FzZSBETUFfREVWX1RPX01FTToKKwkJdWRtYV9yY2hh bnJ0X3VwZGF0ZV9iaXRzKHVjLT5yY2hhbiwKKwkJCQkJIFVETUFfUkNIQU5fUlRfUEVFUl9SVF9F Tl9SRUcsCisJCQkJCSBVRE1BX1BFRVJfUlRfRU5fUEFVU0UsCisJCQkJCSBVRE1BX1BFRVJfUlRf RU5fUEFVU0UpOworCQlicmVhazsKKwljYXNlIERNQV9NRU1fVE9fREVWOgorCQl1ZG1hX3RjaGFu cnRfdXBkYXRlX2JpdHModWMtPnRjaGFuLAorCQkJCQkgVURNQV9UQ0hBTl9SVF9QRUVSX1JUX0VO X1JFRywKKwkJCQkJIFVETUFfUEVFUl9SVF9FTl9QQVVTRSwKKwkJCQkJIFVETUFfUEVFUl9SVF9F Tl9QQVVTRSk7CisJCWJyZWFrOworCWNhc2UgRE1BX01FTV9UT19NRU06CisJCXVkbWFfdGNoYW5y dF91cGRhdGVfYml0cyh1Yy0+dGNoYW4sIFVETUFfVENIQU5fUlRfQ1RMX1JFRywKKwkJCQkJIFVE TUFfQ0hBTl9SVF9DVExfUEFVU0UsCisJCQkJCSBVRE1BX0NIQU5fUlRfQ1RMX1BBVVNFKTsKKwkJ YnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgdWRtYV9yZXN1bWUoc3RydWN0IGRtYV9jaGFuICpjaGFuKQoreworCXN0 cnVjdCB1ZG1hX2NoYW4gKnVjID0gdG9fdWRtYV9jaGFuKGNoYW4pOworCisJaWYgKCF1Yy0+ZGVz YykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiByZXN1bWUgdGhlIGNoYW5uZWwgKi8KKwlzd2l0 Y2ggKHVjLT5kZXNjLT5kaXIpIHsKKwljYXNlIERNQV9ERVZfVE9fTUVNOgorCQl1ZG1hX3JjaGFu cnRfdXBkYXRlX2JpdHModWMtPnJjaGFuLAorCQkJCQkgVURNQV9SQ0hBTl9SVF9QRUVSX1JUX0VO X1JFRywKKwkJCQkJIFVETUFfUEVFUl9SVF9FTl9QQVVTRSwgMCk7CisKKwkJYnJlYWs7CisJY2Fz ZSBETUFfTUVNX1RPX0RFVjoKKwkJdWRtYV90Y2hhbnJ0X3VwZGF0ZV9iaXRzKHVjLT50Y2hhbiwK KwkJCQkJIFVETUFfVENIQU5fUlRfUEVFUl9SVF9FTl9SRUcsCisJCQkJCSBVRE1BX1BFRVJfUlRf RU5fUEFVU0UsIDApOworCQlicmVhazsKKwljYXNlIERNQV9NRU1fVE9fTUVNOgorCQl1ZG1hX3Rj aGFucnRfdXBkYXRlX2JpdHModWMtPnRjaGFuLCBVRE1BX1RDSEFOX1JUX0NUTF9SRUcsCisJCQkJ CSBVRE1BX0NIQU5fUlRfQ1RMX1BBVVNFLCAwKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0 dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdWRtYV90ZXJt aW5hdGVfYWxsKHN0cnVjdCBkbWFfY2hhbiAqY2hhbikKK3sKKwlzdHJ1Y3QgdWRtYV9jaGFuICp1 YyA9IHRvX3VkbWFfY2hhbihjaGFuKTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCUxJU1RfSEVB RChoZWFkKTsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZ1Yy0+dmMubG9jaywgZmxhZ3MpOworCisJ aWYgKHVkbWFfaXNfY2hhbl9ydW5uaW5nKHVjKSkKKwkJdWRtYV9zdG9wKHVjKTsKKworCWlmICh1 Yy0+ZGVzYykgeworCQl1Yy0+dGVybWluYXRlZF9kZXNjID0gdWMtPmRlc2M7CisJCXVjLT5kZXNj ID0gTlVMTDsKKwkJdWMtPnRlcm1pbmF0ZWRfZGVzYy0+dGVybWluYXRlZCA9IHRydWU7CisJfQor CisJdWMtPnBhdXNlZCA9IGZhbHNlOworCisJdmNoYW5fZ2V0X2FsbF9kZXNjcmlwdG9ycygmdWMt PnZjLCAmaGVhZCk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdWMtPnZjLmxvY2ssIGZsYWdz KTsKKwl2Y2hhbl9kbWFfZGVzY19mcmVlX2xpc3QoJnVjLT52YywgJmhlYWQpOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyB2b2lkIHVkbWFfc3luY2hyb25pemUoc3RydWN0IGRtYV9jaGFuICpj aGFuKQoreworCXN0cnVjdCB1ZG1hX2NoYW4gKnVjID0gdG9fdWRtYV9jaGFuKGNoYW4pOworCXVu c2lnbmVkIGxvbmcgdGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMoMTAwMCk7CisKKwl2Y2hhbl9z eW5jaHJvbml6ZSgmdWMtPnZjKTsKKworCWlmICh1Yy0+c3RhdGUgPT0gVURNQV9DSEFOX0lTX1RF Uk1JTkFUSU5HKSB7CisJCXRpbWVvdXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoJnVj LT50ZWFyZG93bl9jb21wbGV0ZWQsCisJCQkJCQkgICAgICB0aW1lb3V0KTsKKwkJaWYgKCF0aW1l b3V0KSB7CisJCQlkZXZfd2Fybih1Yy0+dWQtPmRldiwgImNoYW4lZCB0ZWFyZG93biB0aW1lb3V0 IVxuIiwKKwkJCQkgdWMtPmlkKTsKKwkJCXVkbWFfZHVtcF9jaGFuX3N0ZGF0YSh1Yyk7CisJCQl1 ZG1hX3Jlc2V0X2NoYW4odWMsIHRydWUpOworCQl9CisJfQorCisJdWRtYV9yZXNldF9jaGFuKHVj LCBmYWxzZSk7CisJaWYgKHVkbWFfaXNfY2hhbl9ydW5uaW5nKHVjKSkKKwkJZGV2X3dhcm4odWMt PnVkLT5kZXYsICJjaGFuJWQgcmVmdXNlZCB0byBzdG9wIVxuIiwgdWMtPmlkKTsKKworCXVkbWFf cmVzZXRfcmluZ3ModWMpOworfQorCitzdGF0aWMgdm9pZCB1ZG1hX2Rlc2NfcHJlX2NhbGxiYWNr KHN0cnVjdCB2aXJ0X2RtYV9jaGFuICp2YywKKwkJCQkgICBzdHJ1Y3QgdmlydF9kbWFfZGVzYyAq dmQsCisJCQkJICAgc3RydWN0IGRtYWVuZ2luZV9yZXN1bHQgKnJlc3VsdCkKK3sKKwlzdHJ1Y3Qg dWRtYV9jaGFuICp1YyA9IHRvX3VkbWFfY2hhbigmdmMtPmNoYW4pOworCXN0cnVjdCB1ZG1hX2Rl c2MgKmQ7CisKKwlpZiAoIXZkKQorCQlyZXR1cm47CisKKwlkID0gdG9fdWRtYV9kZXNjKCZ2ZC0+ dHgpOworCisJaWYgKGQtPm1ldGFkYXRhX3NpemUpCisJCXVkbWFfZmV0Y2hfZXBpYih1YywgZCk7 CisKKwkvKiBQcm92aWRlIHJlc2lkdWUgaW5mb3JtYXRpb24gZm9yIHRoZSBjbGllbnQgKi8KKwlp ZiAocmVzdWx0KSB7CisJCXZvaWQgKmRlc2NfdmFkZHIgPSB1ZG1hX2N1cnJfY3BwaTVfZGVzY192 YWRkcihkLCBkLT5kZXNjX2lkeCk7CisKKwkJaWYgKGNwcGk1X2Rlc2NfZ2V0X3R5cGUoZGVzY192 YWRkcikgPT0KKwkJICAgIENQUEk1X0lORk8wX0RFU0NfVFlQRV9WQUxfSE9TVCkgeworCQkJcmVz dWx0LT5yZXNpZHVlID0gY3BwaTVfaGRlc2NfZ2V0X3BrdGxlbihkZXNjX3ZhZGRyKTsKKwkJCWlm IChyZXN1bHQtPnJlc2lkdWUgPT0gZC0+cmVzaWR1ZSkKKwkJCQlyZXN1bHQtPnJlc3VsdCA9IERN QV9UUkFOU19OT0VSUk9SOworCQkJZWxzZQorCQkJCXJlc3VsdC0+cmVzdWx0ID0gRE1BX1RSQU5T X0FCT1JURUQ7CisJCX0gZWxzZSB7CisJCQlyZXN1bHQtPnJlc2lkdWUgPSBkLT5yZXNpZHVlOwor CQkJcmVzdWx0LT5yZXN1bHQgPSBETUFfVFJBTlNfTk9FUlJPUjsKKwkJfQorCX0KK30KKworLyoK KyAqIFRoaXMgdGFza2xldCBoYW5kbGVzIHRoZSBjb21wbGV0aW9uIG9mIGEgRE1BIGRlc2NyaXB0 b3IgYnkKKyAqIGNhbGxpbmcgaXRzIGNhbGxiYWNrIGFuZCBmcmVlaW5nIGl0LgorICovCitzdGF0 aWMgdm9pZCB1ZG1hX3ZjaGFuX2NvbXBsZXRlKHVuc2lnbmVkIGxvbmcgYXJnKQoreworCXN0cnVj dCB2aXJ0X2RtYV9jaGFuICp2YyA9IChzdHJ1Y3QgdmlydF9kbWFfY2hhbiAqKWFyZzsKKwlzdHJ1 Y3QgdmlydF9kbWFfZGVzYyAqdmQsICpfdmQ7CisJc3RydWN0IGRtYWVuZ2luZV9kZXNjX2NhbGxi YWNrIGNiOworCUxJU1RfSEVBRChoZWFkKTsKKworCXNwaW5fbG9ja19pcnEoJnZjLT5sb2NrKTsK KwlsaXN0X3NwbGljZV90YWlsX2luaXQoJnZjLT5kZXNjX2NvbXBsZXRlZCwgJmhlYWQpOworCXZk ID0gdmMtPmN5Y2xpYzsKKwlpZiAodmQpIHsKKwkJdmMtPmN5Y2xpYyA9IE5VTEw7CisJCWRtYWVu Z2luZV9kZXNjX2dldF9jYWxsYmFjaygmdmQtPnR4LCAmY2IpOworCX0gZWxzZSB7CisJCW1lbXNl dCgmY2IsIDAsIHNpemVvZihjYikpOworCX0KKwlzcGluX3VubG9ja19pcnEoJnZjLT5sb2NrKTsK KworCXVkbWFfZGVzY19wcmVfY2FsbGJhY2sodmMsIHZkLCBOVUxMKTsKKwlkbWFlbmdpbmVfZGVz Y19jYWxsYmFja19pbnZva2UoJmNiLCBOVUxMKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2Fm ZSh2ZCwgX3ZkLCAmaGVhZCwgbm9kZSkgeworCQlzdHJ1Y3QgZG1hZW5naW5lX3Jlc3VsdCByZXN1 bHQ7CisKKwkJZG1hZW5naW5lX2Rlc2NfZ2V0X2NhbGxiYWNrKCZ2ZC0+dHgsICZjYik7CisKKwkJ bGlzdF9kZWwoJnZkLT5ub2RlKTsKKworCQl1ZG1hX2Rlc2NfcHJlX2NhbGxiYWNrKHZjLCB2ZCwg JnJlc3VsdCk7CisJCWRtYWVuZ2luZV9kZXNjX2NhbGxiYWNrX2ludm9rZSgmY2IsICZyZXN1bHQp OworCisJCXZjaGFuX3ZkZXNjX2ZpbmkodmQpOworCX0KK30KKwogc3RhdGljIHZvaWQgdWRtYV9m cmVlX2NoYW5fcmVzb3VyY2VzKHN0cnVjdCBkbWFfY2hhbiAqY2hhbikKIHsKIAlzdHJ1Y3QgdWRt YV9jaGFuICp1YyA9IHRvX3VkbWFfY2hhbihjaGFuKTsKLS0gClBldGVyCgpUZXhhcyBJbnN0cnVt ZW50cyBGaW5sYW5kIE95LCBQb3Jra2FsYW5rYXR1IDIyLCAwMDE4MCBIZWxzaW5raS4KWS10dW5u dXMvQnVzaW5lc3MgSUQ6IDA2MTU1MjEtNC4gS290aXBhaWtrYS9Eb21pY2lsZTogSGVsc2lua2kK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCg==