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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id B0BDAE92FDE for ; Fri, 6 Oct 2023 10:21:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:CC :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=DljnW91bPTB1k0PctyKPOJ22N/4xRyQzApxb5i5KA78=; b=ZgXfkOTU/5Jnki 0sTnv8ftbxouG7e5LqpiLrVnexKKODRcJ+tzMjYjCcnfKBeH1ESXflu88mrl7sMIhOj9m8VN/CcEM KHRUtOTZgCBtGY/SfXN3W1X24j7xXSebQwv3KWA+OjQeemx8TjLyOLiCf69K6UnENm8Y3bUuAenjJ CA6/ML1kMarU60ctl/KT82M1prTAFLMtliJ46iCLYFeHJhVvk/OQ/P9SRP4Yu5Oo2G2GW2CAtY1k6 5S6mRuSXJLx2GdH1T5SROC7CyXXvTGjHlV8RT9E4hTFUpu3DPqe1v4ZB1fNg/HYjJ9rxhvJk1naBA 6JwbHC8C5Na0r+MVRAJg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qohx7-005X4q-1g; Fri, 06 Oct 2023 10:21:01 +0000 Received: from fllv0016.ext.ti.com ([198.47.19.142]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qohx2-005WyT-11 for linux-arm-kernel@lists.infradead.org; Fri, 06 Oct 2023 10:20:59 +0000 Received: from fllv0035.itg.ti.com ([10.64.41.0]) by fllv0016.ext.ti.com (8.15.2/8.15.2) with ESMTP id 396AKaxm050184; Fri, 6 Oct 2023 05:20:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1696587636; bh=E+MOIOYFXC6YR6DckKzrL3U8cHbnfyCJ+ZKr6CEID7E=; h=From:To:CC:Subject:Date; b=vgT5bwqmjrM5Ec96pwbdb/TZ4Tsd4SYwScIzKju7660EOcmU9TONF/5CT4UPJsMkA 20zhFp+rH4kYQt6wUqEaDOBrW2aFOiFn+yyMHCfm2g6yxGXrnYlhDrc6GwtkEAt6Nr D0fKCVYA19x8h33MuO8nNCUjzWiQpuGxgioRBbG8= Received: from DLEE103.ent.ti.com (dlee103.ent.ti.com [157.170.170.33]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 396AKa2F111040 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 6 Oct 2023 05:20:36 -0500 Received: from DLEE107.ent.ti.com (157.170.170.37) 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.2507.23; Fri, 6 Oct 2023 05:20:35 -0500 Received: from fllv0040.itg.ti.com (10.64.41.20) by DLEE107.ent.ti.com (157.170.170.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23 via Frontend Transport; Fri, 6 Oct 2023 05:20:35 -0500 Received: from lelv0854.itg.ti.com (lelv0854.itg.ti.com [10.181.64.140]) by fllv0040.itg.ti.com (8.15.2/8.15.2) with ESMTP id 396AKZGV007838; Fri, 6 Oct 2023 05:20:35 -0500 Received: from localhost (dhcp-10-24-69-31.dhcp.ti.com [10.24.69.31]) by lelv0854.itg.ti.com (8.14.7/8.14.7) with ESMTP id 396AKYpI004890; Fri, 6 Oct 2023 05:20:35 -0500 From: MD Danish Anwar To: Andrew Lunn , Roger Quadros , Vignesh Raghavendra , MD Danish Anwar , Richard Cochran , Paolo Abeni , Jakub Kicinski , Eric Dumazet , "David S. Miller" , , Simon Horman CC: , , , , , Roger Quadros , Vinicius Costa Gomes Subject: [PATCH net-next v4] net: ti: icssg_prueth: add TAPRIO offload support Date: Fri, 6 Oct 2023 15:50:28 +0530 Message-ID: <20231006102028.3831341-1-danishanwar@ti.com> X-Mailer: git-send-email 2.34.1 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-20231006_032056_455118_931C568C X-CRM114-Status: GOOD ( 35.01 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RnJvbTogUm9nZXIgUXVhZHJvcyA8cm9nZXJxQHRpLmNvbT4KCklDU1NHIGR1YWwtZW1hYyBmL3cg c3VwcG9ydHMgRW5oYW5jZWQgU2NoZWR1bGVkIFRyYWZmaWMgKEVTVCDigJMgZGVmaW5lZAppbiBQ ODAyLjFRYnYvRDIuMiB0aGF0IGxhdGVyIGdvdCBpbmNsdWRlZCBpbiBJRUVFIDgwMi4xUS0yMDE4 KQpjb25maWd1cmF0aW9uLiBFU1QgYWxsb3dzIGV4cHJlc3MgcXVldWUgdHJhZmZpYyB0byBiZSBz Y2hlZHVsZWQKKHBsYWNlZCkgb24gdGhlIHdpcmUgYXQgc3BlY2lmaWMgcmVwZWF0YWJsZSB0aW1l IGludGVydmFscy4gSW4KTGludXgga2VybmVsLCBFU1QgY29uZmlndXJhdGlvbiBpcyBkb25lIHRo cm91Z2ggdGMgY29tbWFuZCBhbmQKdGhlIHRhcHJpbyBzY2hlZHVsZXIgaW4gdGhlIG5ldCBjb3Jl IGltcGxlbWVudHMgYSBzb2Z0d2FyZSBvbmx5CnNjaGVkdWxlciAoU0NIX1RBUFJJTykuIElmIHRo ZSBOSUMgaXMgY2FwYWJsZSBvZiBFU1QgY29uZmlndXJhdGlvbiwKdXNlciBpbmRpY2F0ZSAiZmxh ZyAyIiBpbiB0aGUgY29tbWFuZCB3aGljaCBpcyB0aGVuIHBhcnNlZCBieQp0YXByaW8gc2NoZWR1 bGVyIGluIG5ldCBjb3JlIGFuZCBpbmRpY2F0ZSB0aGF0IHRoZSBjb21tYW5kIGlzIHRvCmJlIG9m ZmxvYWRlZCB0byBoL3cuIHRhcHJpbyB0aGVuIG9mZmxvYWRzIHRoZSBjb21tYW5kIHRvIHRoZQpk cml2ZXIgYnkgY2FsbGluZyBuZG9fc2V0dXBfdGMoKSBuZG8gb3BzLiBUaGlzIHBhdGNoIGltcGxl bWVudHMKbmRvX3NldHVwX3RjKCkgdG8gb2ZmbG9hZCBFU1QgY29uZmlndXJhdGlvbiB0byBJQ1NT Ry4KClNpZ25lZC1vZmYtYnk6IFJvZ2VyIFF1YWRyb3MgPHJvZ2VycUB0aS5jb20+ClNpZ25lZC1v ZmYtYnk6IFZpZ25lc2ggUmFnaGF2ZW5kcmEgPHZpZ25lc2hyQHRpLmNvbT4KU2lnbmVkLW9mZi1i eTogTUQgRGFuaXNoIEFud2FyIDxkYW5pc2hhbndhckB0aS5jb20+Ci0tLQpDYzogUm9nZXIgUXVh ZHJvcyA8cm9nZXJxQHRpLmNvbT4KQ2M6IEFuZHJldyBMdW5uIDxhbmRyZXdAbHVubi5jaD4KQ2M6 IFZpbmljaXVzIENvc3RhIEdvbWVzIDx2aW5pY2l1cy5nb21lc0BpbnRlbC5jb20+CkNjOiBKYWt1 YiBLaWNpbnNraSA8a3ViYUBrZXJuZWwub3JnPgoKQ2hhbmdlcyBmcm9tIHYzIHRvIHY0OgoqKSBS ZWJhc2VkIG9uIHRoZSBsYXRlc3QgbmV4dC0yMDIzMTAwNSBsaW51eC1uZXh0LgoqKSBBZGRyZXNz ZWQgUm9nZXIgYW5kIFZpbmljaXVzJyBjb21tZW50cyBhbmQgbW92ZWQgYWxsIHRoZSB2YWxpZGF0 aW9ucyB0bwogICBlbWFjX3RhcHJpb19yZXBsYWNlKCkgQVBJLgoqKSBNb2RpZmllZCBlbWFjX3Nl dHVwX3RhcHJpbygpIEFQSSB0byB1c2Ugc3dpdGNoIGNhc2UgYmFzZWQgb24gdGFwcmlvLT5jbWQK ICAgYW5kIGFkZGVkIGVtYWNfdGFwcmlvX2Rlc3Ryb3koKSBhbmQgZW1hY190YXByaW9fcmVwbGFj ZSgpIEFQSXMuCiopIE1vZGlmaWVkIHRoZSBkb2N1bWVudGF0aW9uIG9mIHN0cnVjdHMgLyBlbnVt cyBpbiBpY3NzZ19xb3MuaCBieSB1c2luZwogICB0aGUgY29ycmVjdCBrZG9jIGZvcm1hdC4KCkNo YW5nZXMgZnJvbSB2MiB0byB2MzoKKikgUmViYXNlZCBvbiB0aGUgbGF0ZXN0IG5leHQtMjAyMzA5 MjggbGludXgtbmV4dC4KKikgUmV0YWluZWQgb3JpZ2luYWwgYXV0aG9yc2hpcCBvZiB0aGUgcGF0 Y2guCiopIEFkZHJlc3NlZCBSb2dlcidzIGNvbW1lbnRzIGFuZCBtb2RpZmllZCBlbWFjX3NldHVw X3RhcHJpbygpIGFuZAogICBlbWFjX3NldF90YXByaW8oKSBBUElzIGFjY29yZGluZ2x5LgoqKSBS ZW1vdmVkIG5ldGlmX3J1bm5pbmcoKSBjaGVjayBmcm9tIGVtYWNfc2V0dXBfdGFwcmlvKCkuCiop IEFkZHJlc3NlZCBWaW5pY2l1cycgY29tbWVudHMgYW5kIGFkZGVkIGNoZWNrIGZvciBNSU4gYW5k IE1BWCBjeWNsZSB0aW1lLgoqKSBBZGRlZCBjaGVjayBmb3IgYWxsb2NhdGlvbiBmYWlsdXJlIG9m IGVzdF9uZXcgaW4gZW1hY19zZXR1cF90YXByaW8oKS4KCkNoYW5nZXMgZnJvbSB2MSB0byB2MjoK KikgUmViYXNlZCBvbiB0aGUgbGF0ZXN0IG5leHQtMjAyMzA5MjEgbGludXgtbmV4dC4KKikgRHJv cHBlZCB0aGUgUkZDIHRhZyBhcyBtZXJnZSB3aW5kb3cgaXMgb3BlbiBub3cuCiopIFNwbGl0dGVk IHRoaXMgcGF0Y2ggZnJvbSB0aGUgc3dpdGNoIG1vZGUgc2VyaWVzIFt2MV0uCiopIFJlbW92ZWQg VE9ETyBjb21tZW50IGFzIGFza2VkIGJ5IEFuZHJldyBhbmQgUm9nZXIuCiopIENoYW5nZWQgQ29w eXJpZ2h0IHRvIDIwMjMgYXMgYXNrZWQgYnkgUm9nZXIuCgp2MzogaHR0cHM6Ly9sb3JlLmtlcm5l bC5vcmcvYWxsLzIwMjMwOTI4MTAzMDAwLjE4NjMwNC0xLWRhbmlzaGFud2FyQHRpLmNvbS8KdjI6 IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDIzMDkyMTA3MDAzMS43OTU3ODgtMS1kYW5p c2hhbndhckB0aS5jb20vCnYxOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAyMzA4MzAx MTA4NDcuMTIxOTUxNS0xLWRhbmlzaGFud2FyQHRpLmNvbS8KCiBkcml2ZXJzL25ldC9ldGhlcm5l dC90aS9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9uZXQvZXRoZXJuZXQv dGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMgfCAgIDUgKy0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L3Rp L2ljc3NnL2ljc3NnX3BydWV0aC5oIHwgICA2ICsKIGRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2lj c3NnL2ljc3NnX3Fvcy5jICAgIHwgMzAxICsrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0 L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3Fvcy5oICAgIHwgMTEzICsrKysrKysKIDUgZmlsZXMg Y2hhbmdlZCwgNDI2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcW9zLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19xb3MuaAoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL01ha2VmaWxlIGIvZHJpdmVycy9uZXQv ZXRoZXJuZXQvdGkvTWFrZWZpbGUKaW5kZXggMzRmZDdhNzE2YmE2Li4wZGY2MGRlZDFiMmQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL01ha2VmaWxlCisrKyBiL2RyaXZlcnMv bmV0L2V0aGVybmV0L3RpL01ha2VmaWxlCkBAIC0zNyw1ICszNyw2IEBAIGljc3NnLXBydWV0aC15 IDo9IGszLWNwcGktZGVzYy1wb29sLm8gXAogCQkgIGljc3NnL2ljc3NnX2NvbmZpZy5vIFwKIAkJ ICBpY3NzZy9pY3NzZ19taWlfY2ZnLm8gXAogCQkgIGljc3NnL2ljc3NnX3N0YXRzLm8gXAotCQkg IGljc3NnL2ljc3NnX2V0aHRvb2wubworCQkgIGljc3NnL2ljc3NnX2V0aHRvb2wubyBcCisJCSAg aWNzc2cvaWNzc2dfcW9zLm8KIG9iai0kKENPTkZJR19USV9JQ1NTX0lFUCkgKz0gaWNzc2cvaWNz c19pZXAubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2df cHJ1ZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYwpp bmRleCA2NjM1YjI4YmM2NzIuLjg5YzMwMTcxNjkyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQv ZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJu ZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMKQEAgLTExNjYsNyArMTE2Niw3IEBAIHN0YXRpYyBp bnQgZW1hY19waHlfY29ubmVjdChzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMpCiAJcmV0dXJuIDA7 CiB9CiAKLXN0YXRpYyB1NjQgcHJ1ZXRoX2llcF9nZXR0aW1lKHZvaWQgKmNsb2Nrb3BzX2RhdGEs IHN0cnVjdCBwdHBfc3lzdGVtX3RpbWVzdGFtcCAqc3RzKQordTY0IHBydWV0aF9pZXBfZ2V0dGlt ZSh2b2lkICpjbG9ja29wc19kYXRhLCBzdHJ1Y3QgcHRwX3N5c3RlbV90aW1lc3RhbXAgKnN0cykK IHsKIAl1MzIgaGlfcm9sbG92ZXJfY291bnQsIGhpX3JvbGxvdmVyX2NvdW50X3I7CiAJc3RydWN0 IHBydWV0aF9lbWFjICplbWFjID0gY2xvY2tvcHNfZGF0YTsKQEAgLTE0MDMsNiArMTQwMyw4IEBA IHN0YXRpYyBpbnQgZW1hY19uZG9fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKIAkJbmFw aV9lbmFibGUoJmVtYWMtPnR4X2NobnNbaV0ubmFwaV90eCk7CiAJbmFwaV9lbmFibGUoJmVtYWMt Pm5hcGlfcngpOwogCisJaWNzc2dfcW9zX3Rhc19pbml0KG5kZXYpOworCiAJLyogc3RhcnQgUEhZ ICovCiAJcGh5X3N0YXJ0KG5kZXYtPnBoeWRldik7CiAKQEAgLTE2NjksNiArMTY3MSw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW1hY19uZXRkZXZfb3BzID0gewogCS5u ZG9fc2V0X3J4X21vZGUgPSBlbWFjX25kb19zZXRfcnhfbW9kZSwKIAkubmRvX2V0aF9pb2N0bCA9 IGVtYWNfbmRvX2lvY3RsLAogCS5uZG9fZ2V0X3N0YXRzNjQgPSBlbWFjX25kb19nZXRfc3RhdHM2 NCwKKwkubmRvX3NldHVwX3RjID0gaWNzc2dfcW9zX25kb19zZXR1cF90YywKIH07CiAKIC8qIGdl dCBlbWFjX3BvcnQgY29ycmVzcG9uZGluZyB0byBldGhfbm9kZSBuYW1lICovCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaCBiL2RyaXZlcnMv bmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oCmluZGV4IDhiNmQ2YjQ5NzAxMC4u N2NiZjBlNTYxOTA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9p Y3NzZ19wcnVldGguaAorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19w cnVldGguaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImljc3NnX2NvbmZpZy5oIgogI2lu Y2x1ZGUgImljc3NfaWVwLmgiCiAjaW5jbHVkZSAiaWNzc2dfc3dpdGNoX21hcC5oIgorI2luY2x1 ZGUgImljc3NnX3Fvcy5oIgogCiAjZGVmaW5lIFBSVUVUSF9NQVhfTVRVICAgICAgICAgICgyMDAw IC0gRVRIX0hMRU4gLSBFVEhfRkNTX0xFTikKICNkZWZpbmUgUFJVRVRIX01JTl9QS1RfU0laRSAg ICAgKFZMQU5fRVRIX1pMRU4pCkBAIC0xNzQsNiArMTc1LDggQEAgc3RydWN0IHBydWV0aF9lbWFj IHsKIAogCXN0cnVjdCBwcnVzc19tZW1fcmVnaW9uIGRyYW07CiAKKwlzdHJ1Y3QgcHJ1ZXRoX3Fv cyBxb3M7CisKIAlzdHJ1Y3QgZGVsYXllZF93b3JrIHN0YXRzX3dvcms7CiAJdTY0IHN0YXRzW0lD U1NHX05VTV9TVEFUU107CiB9OwpAQCAtMjg1LDQgKzI4OCw3IEBAIHUzMiBpY3NzZ19xdWV1ZV9s ZXZlbChzdHJ1Y3QgcHJ1ZXRoICpwcnVldGgsIGludCBxdWV1ZSk7CiB2b2lkIGVtYWNfc3RhdHNf d29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiB2b2lkIGVtYWNfdXBkYXRl X2hhcmR3YXJlX3N0YXRzKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYyk7CiBpbnQgZW1hY19nZXRf c3RhdF9ieV9uYW1lKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywgY2hhciAqc3RhdF9uYW1lKTsK KwordTY0IHBydWV0aF9pZXBfZ2V0dGltZSh2b2lkICpjbG9ja29wc19kYXRhLCBzdHJ1Y3QgcHRw X3N5c3RlbV90aW1lc3RhbXAgKnN0cyk7CisKICNlbmRpZiAvKiBfX05FVF9USV9JQ1NTR19QUlVF VEhfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2df cW9zLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19xb3MuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM4YzQ0NTBjNDFiYgotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3Fvcy5jCkBAIC0w LDAgKzEsMzAxIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyogVGV4 YXMgSW5zdHJ1bWVudHMgSUNTU0cgUFJVRVRIIFFvUyBzdWJtb2R1bGUKKyAqIENvcHlyaWdodCAo QykgMjAyMyBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNv bS8KKyAqLworCisjaW5jbHVkZSA8bGludXgvcHJpbnRrLmg+CisjaW5jbHVkZSAiaWNzc2dfcHJ1 ZXRoLmgiCisjaW5jbHVkZSAiaWNzc2dfc3dpdGNoX21hcC5oIgorCitzdGF0aWMgdm9pZCB0YXNf dXBkYXRlX2Z3X2xpc3RfcG9pbnRlcnMoc3RydWN0IHBydWV0aF9lbWFjICplbWFjKQoreworCXN0 cnVjdCB0YXNfY29uZmlnICp0YXMgPSAmZW1hYy0+cW9zLnRhcy5jb25maWc7CisKKwlpZiAoKHJl YWRiKHRhcy0+YWN0aXZlX2xpc3QpKSA9PSBUQVNfTElTVDApIHsKKwkJdGFzLT5md19hY3RpdmVf bGlzdCA9IGVtYWMtPmRyYW0udmEgKyBUQVNfR0FURV9NQVNLX0xJU1QwOworCQl0YXMtPmZ3X3No YWRvd19saXN0ID0gZW1hYy0+ZHJhbS52YSArIFRBU19HQVRFX01BU0tfTElTVDE7CisJfSBlbHNl IHsKKwkJdGFzLT5md19hY3RpdmVfbGlzdCA9IGVtYWMtPmRyYW0udmEgKyBUQVNfR0FURV9NQVNL X0xJU1QxOworCQl0YXMtPmZ3X3NoYWRvd19saXN0ID0gZW1hYy0+ZHJhbS52YSArIFRBU19HQVRF X01BU0tfTElTVDA7CisJfQorfQorCitzdGF0aWMgdm9pZCB0YXNfdXBkYXRlX21heHNkdV90YWJs ZShzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMpCit7CisJc3RydWN0IHRhc19jb25maWcgKnRhcyA9 ICZlbWFjLT5xb3MudGFzLmNvbmZpZzsKKwl1MTYgX19pb21lbSAqbWF4X3NkdV90YmxfcHRyOwor CXU4IGdhdGVfaWR4OworCisJLyogdXBkYXRlIHRoZSBtYXhzZHUgdGFibGUgKi8KKwltYXhfc2R1 X3RibF9wdHIgPSBlbWFjLT5kcmFtLnZhICsgVEFTX1FVRVVFX01BWF9TRFVfTElTVDsKKworCWZv ciAoZ2F0ZV9pZHggPSAwOyBnYXRlX2lkeCA8IFRBU19NQVhfTlVNX1FVRVVFUzsgZ2F0ZV9pZHgr KykKKwkJd3JpdGV3KHRhcy0+bWF4X3NkdV90YWJsZS5tYXhfc2R1W2dhdGVfaWR4XSwgJm1heF9z ZHVfdGJsX3B0cltnYXRlX2lkeF0pOworfQorCitzdGF0aWMgdm9pZCB0YXNfcmVzZXQoc3RydWN0 IHBydWV0aF9lbWFjICplbWFjKQoreworCXN0cnVjdCB0YXNfY29uZmlnICp0YXMgPSAmZW1hYy0+ cW9zLnRhcy5jb25maWc7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgVEFTX01BWF9OVU1f UVVFVUVTOyBpKyspCisJCXRhcy0+bWF4X3NkdV90YWJsZS5tYXhfc2R1W2ldID0gMjA0ODsKKwor CXRhc191cGRhdGVfbWF4c2R1X3RhYmxlKGVtYWMpOworCisJd3JpdGViKFRBU19MSVNUMCwgdGFz LT5hY3RpdmVfbGlzdCk7CisKKwltZW1zZXRfaW8odGFzLT5md19hY3RpdmVfbGlzdCwgMCwgc2l6 ZW9mKCp0YXMtPmZ3X2FjdGl2ZV9saXN0KSk7CisJbWVtc2V0X2lvKHRhcy0+Zndfc2hhZG93X2xp c3QsIDAsIHNpemVvZigqdGFzLT5md19zaGFkb3dfbGlzdCkpOworfQorCitzdGF0aWMgaW50IHRh c19zZXRfc3RhdGUoc3RydWN0IHBydWV0aF9lbWFjICplbWFjLCBlbnVtIHRhc19zdGF0ZSBzdGF0 ZSkKK3sKKwlzdHJ1Y3QgdGFzX2NvbmZpZyAqdGFzID0gJmVtYWMtPnFvcy50YXMuY29uZmlnOwor CWludCByZXQ7CisKKwlpZiAodGFzLT5zdGF0ZSA9PSBzdGF0ZSkKKwkJcmV0dXJuIDA7CisKKwlz d2l0Y2ggKHN0YXRlKSB7CisJY2FzZSBUQVNfU1RBVEVfUkVTRVQ6CisJCXRhc19yZXNldChlbWFj KTsKKwkJcmV0ID0gZW1hY19zZXRfcG9ydF9zdGF0ZShlbWFjLCBJQ1NTR19FTUFDX1BPUlRfVEFT X1JFU0VUKTsKKwkJdGFzLT5zdGF0ZSA9IFRBU19TVEFURV9SRVNFVDsKKwkJYnJlYWs7CisJY2Fz ZSBUQVNfU1RBVEVfRU5BQkxFOgorCQlyZXQgPSBlbWFjX3NldF9wb3J0X3N0YXRlKGVtYWMsIElD U1NHX0VNQUNfUE9SVF9UQVNfRU5BQkxFKTsKKwkJdGFzLT5zdGF0ZSA9IFRBU19TVEFURV9FTkFC TEU7CisJCWJyZWFrOworCWNhc2UgVEFTX1NUQVRFX0RJU0FCTEU6CisJCXJldCA9IGVtYWNfc2V0 X3BvcnRfc3RhdGUoZW1hYywgSUNTU0dfRU1BQ19QT1JUX1RBU19ESVNBQkxFKTsKKwkJdGFzLT5z dGF0ZSA9IFRBU19TVEFURV9ESVNBQkxFOworCQlicmVhazsKKwlkZWZhdWx0OgorCQluZXRkZXZf ZXJyKGVtYWMtPm5kZXYsICIlczogdW5zdXBwb3J0ZWQgc3RhdGVcbiIsIF9fZnVuY19fKTsKKwkJ cmV0ID0gLUVJTlZBTDsKKwkJYnJlYWs7CisJfQorCisJaWYgKHJldCkKKwkJbmV0ZGV2X2Vycihl bWFjLT5uZGV2LCAiVEFTIHNldCBzdGF0ZSBmYWlsZWQgJWRcbiIsIHJldCk7CisJcmV0dXJuIHJl dDsKK30KKworc3RhdGljIGludCB0YXNfc2V0X3RyaWdnZXJfbGlzdF9jaGFuZ2Uoc3RydWN0IHBy dWV0aF9lbWFjICplbWFjKQoreworCXN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICphZG1p bl9saXN0ID0gZW1hYy0+cW9zLnRhcy50YXByaW9fYWRtaW47CisJc3RydWN0IHRhc19jb25maWcg KnRhcyA9ICZlbWFjLT5xb3MudGFzLmNvbmZpZzsKKwlzdHJ1Y3QgcHRwX3N5c3RlbV90aW1lc3Rh bXAgc3RzOworCXUzMiBjaGFuZ2VfY3ljbGVfY291bnQ7CisJdTMyIGN5Y2xlX3RpbWU7CisJdTY0 IGJhc2VfdGltZTsKKwl1NjQgY3VyX3RpbWU7CisKKwlpZiAoYWRtaW5fbGlzdC0+Y3ljbGVfdGlt ZSA8IFRBU19NSU5fQ1lDTEVfVElNRSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljeWNsZV90aW1l ID0gYWRtaW5fbGlzdC0+Y3ljbGVfdGltZSAtIDQ7IC8qIC00bnMgdG8gY29tcGVuc2F0ZSBmb3Ig SUVQIHdyYXBhcm91bmQgdGltZSAqLworCWJhc2VfdGltZSA9IGFkbWluX2xpc3QtPmJhc2VfdGlt ZTsKKwljdXJfdGltZSA9IHBydWV0aF9pZXBfZ2V0dGltZShlbWFjLCAmc3RzKTsKKworCWlmIChi YXNlX3RpbWUgPiBjdXJfdGltZSkKKwkJY2hhbmdlX2N5Y2xlX2NvdW50ID0gRElWX1JPVU5EX1VQ X1VMTChiYXNlX3RpbWUgLSBjdXJfdGltZSwgY3ljbGVfdGltZSk7CisJZWxzZQorCQljaGFuZ2Vf Y3ljbGVfY291bnQgPSAxOworCisJd3JpdGVsKGN5Y2xlX3RpbWUsIGVtYWMtPmRyYW0udmEgKyBU QVNfQURNSU5fQ1lDTEVfVElNRSk7CisJd3JpdGVsKGNoYW5nZV9jeWNsZV9jb3VudCwgZW1hYy0+ ZHJhbS52YSArIFRBU19DT05GSUdfQ0hBTkdFX0NZQ0xFX0NPVU5UKTsKKwl3cml0ZWIoYWRtaW5f bGlzdC0+bnVtX2VudHJpZXMsIGVtYWMtPmRyYW0udmEgKyBUQVNfQURNSU5fTElTVF9MRU5HVEgp OworCisJLyogY29uZmlnX2NoYW5nZSBjbGVhcmVkIGJ5IGYvdyB0byBhY2sgcmVjZXB0aW9uIG9m IG5ldyBzaGFkb3cgbGlzdCAqLworCXdyaXRlYigxLCAmdGFzLT5jb25maWdfbGlzdC0+Y29uZmln X2NoYW5nZSk7CisJLyogY29uZmlnX3BlbmRpbmcgY2xlYXJlZCBieSBmL3cgd2hlbiBuZXcgc2hh ZG93IGxpc3QgaXMgY29waWVkIHRvIGFjdGl2ZSBsaXN0ICovCisJd3JpdGViKDEsICZ0YXMtPmNv bmZpZ19saXN0LT5jb25maWdfcGVuZGluZyk7CisKKwlyZXR1cm4gZW1hY19zZXRfcG9ydF9zdGF0 ZShlbWFjLCBJQ1NTR19FTUFDX1BPUlRfVEFTX1RSSUdHRVIpOworfQorCitzdGF0aWMgaW50IHRh c191cGRhdGVfb3Blcl9saXN0KHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYykKK3sKKwlzdHJ1Y3Qg dGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqYWRtaW5fbGlzdCA9IGVtYWMtPnFvcy50YXMudGFwcmlv X2FkbWluOworCXN0cnVjdCB0YXNfY29uZmlnICp0YXMgPSAmZW1hYy0+cW9zLnRhcy5jb25maWc7 CisJdTMyIHRhc19hY2NfZ2F0ZV9jbG9zZV90aW1lID0gMDsKKwl1OCBpZHgsIGdhdGVfaWR4LCB2 YWw7CisJaW50IHJldDsKKworCWlmIChhZG1pbl9saXN0LT5jeWNsZV90aW1lID4gVEFTX01BWF9D WUNMRV9USU1FKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXRhc191cGRhdGVfZndfbGlzdF9wb2lu dGVycyhlbWFjKTsKKworCWZvciAoaWR4ID0gMDsgaWR4IDwgYWRtaW5fbGlzdC0+bnVtX2VudHJp ZXM7IGlkeCsrKSB7CisJCXdyaXRlYihhZG1pbl9saXN0LT5lbnRyaWVzW2lkeF0uZ2F0ZV9tYXNr LAorCQkgICAgICAgJnRhcy0+Zndfc2hhZG93X2xpc3QtPmdhdGVfbWFza19saXN0W2lkeF0pOwor CQl0YXNfYWNjX2dhdGVfY2xvc2VfdGltZSArPSBhZG1pbl9saXN0LT5lbnRyaWVzW2lkeF0uaW50 ZXJ2YWw7CisKKwkJLyogZXh0ZW5kIGxhc3QgZW50cnkgdGlsbCBlbmQgb2YgY3ljbGUgdGltZSAq LworCQlpZiAoaWR4ID09IGFkbWluX2xpc3QtPm51bV9lbnRyaWVzIC0gMSkKKwkJCXdyaXRlbChh ZG1pbl9saXN0LT5jeWNsZV90aW1lLAorCQkJICAgICAgICZ0YXMtPmZ3X3NoYWRvd19saXN0LT53 aW5fZW5kX3RpbWVfbGlzdFtpZHhdKTsKKwkJZWxzZQorCQkJd3JpdGVsKHRhc19hY2NfZ2F0ZV9j bG9zZV90aW1lLAorCQkJICAgICAgICZ0YXMtPmZ3X3NoYWRvd19saXN0LT53aW5fZW5kX3RpbWVf bGlzdFtpZHhdKTsKKwl9CisKKwkvKiBjbGVhciByZW1haW5pbmcgZW50cmllcyAqLworCWZvciAo aWR4ID0gYWRtaW5fbGlzdC0+bnVtX2VudHJpZXM7IGlkeCA8IFRBU19NQVhfQ01EX0xJU1RTOyBp ZHgrKykgeworCQl3cml0ZWIoMCwgJnRhcy0+Zndfc2hhZG93X2xpc3QtPmdhdGVfbWFza19saXN0 W2lkeF0pOworCQl3cml0ZWwoMCwgJnRhcy0+Zndfc2hhZG93X2xpc3QtPndpbl9lbmRfdGltZV9s aXN0W2lkeF0pOworCX0KKworCS8qIHVwZGF0ZSB0aGUgQXJyYXkgb2YgZ2F0ZSBjbG9zZSB0aW1l IGZvciBlYWNoIHF1ZXVlIGluIGVhY2ggd2luZG93ICovCisJZm9yIChpZHggPSAwIDsgaWR4IDwg YWRtaW5fbGlzdC0+bnVtX2VudHJpZXM7IGlkeCsrKSB7CisJCS8qIE9uIExpbnV4LCBvbmx5IFBS VUVUSF9NQVhfVFhfUVVFVUVTIGFyZSBzdXBwb3J0ZWQgcGVyIHBvcnQgKi8KKwkJZm9yIChnYXRl X2lkeCA9IDA7IGdhdGVfaWR4IDwgUFJVRVRIX01BWF9UWF9RVUVVRVM7IGdhdGVfaWR4KyspIHsK KwkJCXU4IGdhdGVfbWFza19saXN0X2lkeCA9IHJlYWRiKCZ0YXMtPmZ3X3NoYWRvd19saXN0LT5n YXRlX21hc2tfbGlzdFtpZHhdKTsKKwkJCXUzMiBnYXRlX2Nsb3NlX3RpbWUgPSAwOworCisJCQlp ZiAoZ2F0ZV9tYXNrX2xpc3RfaWR4ICYgQklUKGdhdGVfaWR4KSkKKwkJCQlnYXRlX2Nsb3NlX3Rp bWUgPSByZWFkbCgmdGFzLT5md19zaGFkb3dfbGlzdC0+d2luX2VuZF90aW1lX2xpc3RbaWR4XSk7 CisKKwkJCXdyaXRlbChnYXRlX2Nsb3NlX3RpbWUsCisJCQkgICAgICAgJnRhcy0+Zndfc2hhZG93 X2xpc3QtPmdhdGVfY2xvc2VfdGltZV9saXN0W2lkeF1bZ2F0ZV9pZHhdKTsKKwkJfQorCX0KKwor CS8qIHRlbGwgZi93IHRvIHN3YXAgYWN0aXZlICYgc2hhZG93IGxpc3QgKi8KKwlyZXQgPSB0YXNf c2V0X3RyaWdnZXJfbGlzdF9jaGFuZ2UoZW1hYyk7CisJaWYgKHJldCkgeworCQluZXRkZXZfZXJy KGVtYWMtPm5kZXYsICJmYWlsZWQgdG8gc3dhcCBmL3cgY29uZmlnIGxpc3Q6ICVkXG4iLCByZXQp OworCQlyZXR1cm4gcmV0OworCX0KKworCS8qIFdhaXQgZm9yIGNvbXBsZXRpb24gKi8KKwlyZXQg PSByZWFkYl9wb2xsX3RpbWVvdXQoJnRhcy0+Y29uZmlnX2xpc3QtPmNvbmZpZ19jaGFuZ2UsIHZh bCwgIXZhbCwKKwkJCQkgVVNFQ19QRVJfTVNFQywgMTAgKiBVU0VDX1BFUl9NU0VDKTsKKwlpZiAo cmV0KSB7CisJCW5ldGRldl9lcnIoZW1hYy0+bmRldiwgIlRBUyBsaXN0IGNoYW5nZSBjb21wbGV0 aW9uIHRpbWUgb3V0XG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwl0YXNfdXBkYXRlX2Z3X2xp c3RfcG9pbnRlcnMoZW1hYyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZW1hY19j cF90YXByaW8oc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKmZyb20sCisJCQkgICBzdHJ1 Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqdG8pCit7CisJaW50IGk7CisKKwkqdG8gPSAqZnJv bTsKKwlmb3IgKGkgPSAwOyBpIDwgZnJvbS0+bnVtX2VudHJpZXM7IGkrKykKKwkJdG8tPmVudHJp ZXNbaV0gPSBmcm9tLT5lbnRyaWVzW2ldOworfQorCitzdGF0aWMgaW50IGVtYWNfdGFwcmlvX3Jl cGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCisJCQkgICAgICAgc3RydWN0IHRjX3RhcHJp b19xb3B0X29mZmxvYWQgKnRhcHJpbykKK3sKKwlzdHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMgPSBu ZXRkZXZfcHJpdihuZGV2KTsKKwlzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqZXN0X25l dzsKKwlpbnQgcmV0LCBpZHg7CisKKwlpZiAodGFwcmlvLT5jeWNsZV90aW1lX2V4dGVuc2lvbikg eworCQluZXRkZXZfZXJyKG5kZXYsICJGYWlsZWQgdG8gc2V0IGN5Y2xlIHRpbWUgZXh0ZW5zaW9u Iik7CisJCXJldHVybiAtRU9QTk9UU1VQUDsKKwl9CisKKwlpZiAodGFwcmlvLT5udW1fZW50cmll cyA9PSAwIHx8CisJICAgIHRhcHJpby0+bnVtX2VudHJpZXMgPiBUQVNfTUFYX0NNRF9MSVNUUykg eworCQlOTF9TRVRfRVJSX01TR19GTVRfTU9EKHRhcHJpby0+ZXh0YWNrLCAidW5zdXBwb3J0ZWQg bnVtX2VudHJpZXMgJWxkIGluIHRhcHJpbyBjb25maWdcbiIsCisJCQkJICAgICAgIHRhcHJpby0+ bnVtX2VudHJpZXMpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBJZiBhbnkgdGltZV9p bnRlcnZhbCBpcyAwIGluIGJldHdlZW4gdGhlIGxpc3QsIHRoZW4gZXhpdCAqLworCWZvciAoaWR4 ID0gMDsgaWR4IDwgdGFwcmlvLT5udW1fZW50cmllczsgaWR4KyspIHsKKwkJaWYgKHRhcHJpby0+ ZW50cmllc1tpZHhdLmludGVydmFsID09IDApIHsKKwkJCU5MX1NFVF9FUlJfTVNHX01PRCh0YXBy aW8tPmV4dGFjaywgIjAgaW50ZXJ2YWwgaW4gdGFwcmlvIGNvbmZpZyBub3Qgc3VwcG9ydGVkXG4i KTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfQorCisJaWYgKGVtYWMtPnFvcy50YXMudGFw cmlvX2FkbWluKQorCQlkZXZtX2tmcmVlKCZuZGV2LT5kZXYsIGVtYWMtPnFvcy50YXMudGFwcmlv X2FkbWluKTsKKworCWVzdF9uZXcgPSBkZXZtX2t6YWxsb2MoJm5kZXYtPmRldiwKKwkJCSAgICAg ICBzdHJ1Y3Rfc2l6ZShlc3RfbmV3LCBlbnRyaWVzLCB0YXByaW8tPm51bV9lbnRyaWVzKSwKKwkJ CSAgICAgICBHRlBfS0VSTkVMKTsKKwlpZiAoIWVzdF9uZXcpCisJCXJldHVybiAtRU5PTUVNOwor CisJZW1hY19jcF90YXByaW8odGFwcmlvLCBlc3RfbmV3KTsKKwllbWFjLT5xb3MudGFzLnRhcHJp b19hZG1pbiA9IGVzdF9uZXc7CisJcmV0ID0gdGFzX3VwZGF0ZV9vcGVyX2xpc3QoZW1hYyk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9ICB0YXNfc2V0X3N0YXRlKGVtYWMsIFRB U19TVEFURV9FTkFCTEUpOworCWlmIChyZXQpCisJCWRldm1fa2ZyZWUoJm5kZXYtPmRldiwgZXN0 X25ldyk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGVtYWNfdGFwcmlvX2Rlc3Ry b3koc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCit7CisJc3RydWN0IHBydWV0aF9lbWFjICplbWFj ID0gbmV0ZGV2X3ByaXYobmRldik7CisJaW50IHJldDsKKworCXJldCA9IHRhc19zZXRfc3RhdGUo ZW1hYywgVEFTX1NUQVRFX1JFU0VUKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0 dXJuIHRhc19zZXRfc3RhdGUoZW1hYywgVEFTX1NUQVRFX0RJU0FCTEUpOworfQorCitzdGF0aWMg aW50IGVtYWNfc2V0dXBfdGFwcmlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICp0eXBl X2RhdGEpCit7CisJc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKnRhcHJpbyA9IHR5cGVf ZGF0YTsKKwlpbnQgcmV0OworCisJc3dpdGNoICh0YXByaW8tPmNtZCkgeworCWNhc2UgVEFQUklP X0NNRF9SRVBMQUNFOgorCQlyZXQgPSBlbWFjX3RhcHJpb19yZXBsYWNlKG5kZXYsIHRhcHJpbyk7 CisJCWJyZWFrOworCWNhc2UgVEFQUklPX0NNRF9ERVNUUk9ZOgorCQlyZXQgPSBlbWFjX3RhcHJp b19kZXN0cm95KG5kZXYpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXQgPSAtRU9QTk9UU1VQ UDsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitpbnQgaWNzc2dfcW9zX25kb19zZXR1cF90Yyhz dHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsCisJCQkgICB2 b2lkICp0eXBlX2RhdGEpCit7CisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBUQ19TRVRVUF9RRElT Q19UQVBSSU86CisJCXJldHVybiBlbWFjX3NldHVwX3RhcHJpbyhuZGV2LCB0eXBlX2RhdGEpOwor CWRlZmF1bHQ6CisJCXJldHVybiAtRU9QTk9UU1VQUDsKKwl9Cit9CisKK3ZvaWQgaWNzc2dfcW9z X3Rhc19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQoreworCXN0cnVjdCBwcnVldGhfZW1h YyAqZW1hYyA9IG5ldGRldl9wcml2KG5kZXYpOworCXN0cnVjdCB0YXNfY29uZmlnICp0YXM7CisK Kwl0YXMgPSAmZW1hYy0+cW9zLnRhcy5jb25maWc7CisKKwl0YXMtPmNvbmZpZ19saXN0ID0gZW1h Yy0+ZHJhbS52YSArIFRBU19DT05GSUdfQ0hBTkdFX1RJTUU7CisJdGFzLT5hY3RpdmVfbGlzdCA9 IGVtYWMtPmRyYW0udmEgKyBUQVNfQUNUSVZFX0xJU1RfSU5ERVg7CisKKwl0YXNfdXBkYXRlX2Z3 X2xpc3RfcG9pbnRlcnMoZW1hYyk7CisKKwl0YXNfc2V0X3N0YXRlKGVtYWMsIFRBU19TVEFURV9S RVNFVCk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3Nz Z19xb3MuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3Fvcy5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjViYWNjZGQxY2U1Ci0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcW9zLmgKQEAg LTAsMCArMSwxMTMgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCisv KiBDb3B5cmlnaHQgKEMpIDIwMjMgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0 cDovL3d3dy50aS5jb20vCisgKi8KKworI2lmbmRlZiBfX05FVF9USV9JQ1NTR19RT1NfSAorI2Rl ZmluZSBfX05FVF9USV9JQ1NTR19RT1NfSAorCisjaW5jbHVkZSA8bGludXgvYXRvbWljLmg+Cisj aW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CisjaW5jbHVkZSA8bmV0L3BrdF9zY2hlZC5oPgor CisvKiBNYXhpbXVtIG51bWJlciBvZiBnYXRlIGNvbW1hbmQgZW50cmllcyBpbiBlYWNoIGxpc3Qu ICovCisjZGVmaW5lIFRBU19NQVhfQ01EX0xJU1RTICAgKDE2KQorCisvKiBNYXhpbXVtIG51bWJl ciBvZiB0cmFuc21pdCBxdWV1ZXMgc3VwcG9ydGVkIGJ5IGltcGxlbWVudGF0aW9uICovCisjZGVm aW5lIFRBU19NQVhfTlVNX1FVRVVFUyAgKDgpCisKKy8qIE1pbmltdW0gY3ljbGUgdGltZSBzdXBw b3J0ZWQgYnkgaW1wbGVtZW50YXRpb24gKGluIG5zKSAqLworI2RlZmluZSBUQVNfTUlOX0NZQ0xF X1RJTUUgICgxMDAwMDAwKQorCisvKiBNaW5pbXVtIGN5Y2xlIHRpbWUgc3VwcG9ydGVkIGJ5IGlt cGxlbWVudGF0aW9uIChpbiBucykgKi8KKyNkZWZpbmUgVEFTX01BWF9DWUNMRV9USU1FICAoNDAw MDAwMDAwMCkKKworLyogTWluaW11bSBUQVMgd2luZG93IGR1cmF0aW9uIHN1cHBvcnRlZCBieSBp bXBsZW1lbnRhdGlvbiAoaW4gbnMpICovCisjZGVmaW5lIFRBU19NSU5fV0lORE9XX0RVUkFUSU9O ICAoMTAwMDApCisKKy8qKgorICogZW51bSB0YXNfbGlzdF9udW0gLSBUQVMgbGlzdCBudW1iZXIK KyAqIEBUQVNfTElTVDA6IFRBUyBsaXN0IG51bWJlciBpcyAwCisgKiBAVEFTX0xJU1QxOiBUQVMg bGlzdCBudW1iZXIgaXMgMQorICovCitlbnVtIHRhc19saXN0X251bSB7CisJVEFTX0xJU1QwID0g MCwKKwlUQVNfTElTVDEgPSAxCit9OworCisvKioKKyAqIGVudW0gdGFzX3N0YXRlIC0gU3RhdGUg b2YgVEFTIGluIGZpcm13YXJlCisgKiBAVEFTX1NUQVRFX0RJU0FCTEU6IFRBUyBzdGF0ZSBtYWNo aW5lIGlzIGRpc2FibGVkLgorICogQFRBU19TVEFURV9FTkFCTEU6IFRBUyBzdGF0ZSBtYWNoaW5l IGlzIGVuYWJsZWQuCisgKiBAVEFTX1NUQVRFX1JFU0VUOiBUQVMgc3RhdGUgbWFjaGluZSBpcyBy ZXNldC4KKyAqLworZW51bSB0YXNfc3RhdGUgeworCVRBU19TVEFURV9ESVNBQkxFID0gMCwKKwlU QVNfU1RBVEVfRU5BQkxFID0gMSwKKwlUQVNfU1RBVEVfUkVTRVQgPSAyLAorfTsKKworLyoqCisg KiBzdHJ1Y3QgdGFzX2NvbmZpZ19saXN0IC0gQ29uZmlnIHN0YXRlIG1hY2hpbmUgdmFyaWFibGVz CisgKiBAY29uZmlnX2NoYW5nZV90aW1lOiBOZXcgbGlzdCBpcyBjb3BpZWQgYXQgdGhpcyB0aW1l CisgKiBAY29uZmlnX2NoYW5nZV9lcnJvcl9jb3VudGVyOiBJbmNyZW1lbnRlZCBpZiBhZG1pbi0+ QmFzZVRpbWUgPCBjdXJyZW50IHRpbWUKKyAqCQkJCSBhbmQgVEFTX2VuYWJsZWQgaXMgdHJ1ZQor ICogQGNvbmZpZ19wZW5kaW5nOiBUcnVlIGlmIGxpc3QgdXBkYXRlIGlzIHBlbmRpbmcKKyAqIEBj b25maWdfY2hhbmdlOiBTZXQgdG8gdHJ1ZSB3aGVuIGFwcGxpY2F0aW9uIHRyaWdnZXIgdXBkYXRp bmcgb2YgYWRtaW4gbGlzdAorICoJCSAgIHRvIGFjdGl2ZSBsaXN0LCBjbGVhcmVkIHdoZW4gY29u ZmlnQ2hhbmdlVGltZSBpcyB1cGRhdGVkCisgKi8KK3N0cnVjdCB0YXNfY29uZmlnX2xpc3Qgewor CXU2NCBjb25maWdfY2hhbmdlX3RpbWU7CisJdTMyIGNvbmZpZ19jaGFuZ2VfZXJyb3JfY291bnRl cjsKKwl1OCBjb25maWdfcGVuZGluZzsKKwl1OCBjb25maWdfY2hhbmdlOworfTsKKworLyogTWF4 IFNEVSB0YWJsZS4gU2VlIElFRUUgU3RkIDgwMi4xUS0yMDE4IDEyLjI5LjEuMSAqLworc3RydWN0 IHRhc19tYXhfc2R1X3RhYmxlIHsKKwl1MTYgbWF4X3NkdVtUQVNfTUFYX05VTV9RVUVVRVNdOwor fTsKKworLyoqCisgKiBzdHJ1Y3QgdGFzX2Zpcm13YXJlX2xpc3QgLSBUQVMgTGlzdCBTdHJ1Y3R1 cmUgYmFzZWQgb24gZmlybXdhcmUgbWVtb3J5IG1hcAorICogQGdhdGVfbWFza19saXN0OiBXaW5k b3cgZ2F0ZSBtYXNrIGxpc3QKKyAqIEB3aW5fZW5kX3RpbWVfbGlzdDogV2luZG93IGVuZCB0aW1l IGxpc3QKKyAqIEBnYXRlX2Nsb3NlX3RpbWVfbGlzdDogQXJyYXkgb2YgZ2F0ZSBjbG9zZSB0aW1l IGZvciBlYWNoIHF1ZXVlIGluIGVhY2ggd2luZG93CisgKi8KK3N0cnVjdCB0YXNfZmlybXdhcmVf bGlzdCB7CisJdTggZ2F0ZV9tYXNrX2xpc3RbVEFTX01BWF9DTURfTElTVFNdOworCXUzMiB3aW5f ZW5kX3RpbWVfbGlzdFtUQVNfTUFYX0NNRF9MSVNUU107CisJdTMyIGdhdGVfY2xvc2VfdGltZV9s aXN0W1RBU19NQVhfQ01EX0xJU1RTXVtUQVNfTUFYX05VTV9RVUVVRVNdOworfTsKKworLyoqCisg KiBzdHJ1Y3QgdGFzX2NvbmZpZyAtIE1haW4gVGltZSBBd2FyZSBTaGFwZXIgSGFuZGxlCisgKiBA c3RhdGU6IFRBUyBzdGF0ZQorICogQG1heF9zZHVfdGFibGU6IE1heCBTRFUgdGFibGUKKyAqIEBj b25maWdfbGlzdDogQ29uZmlnIGNoYW5nZSB2YXJpYWJsZXMKKyAqIEBhY3RpdmVfbGlzdDogQ3Vy cmVudCBvcGVyYXRpbmcgbGlzdCBvcGVyYXRpbmcgbGlzdAorICogQGZ3X2FjdGl2ZV9saXN0OiBB Y3RpdmUgTGlzdCBwb2ludGVyLCB1c2VkIGJ5IGZpcm13YXJlCisgKiBAZndfc2hhZG93X2xpc3Q6 IFNoYWRvdyBMaXN0IHBvaW50ZXIsIHVzZWQgYnkgZHJpdmVyCisgKi8KK3N0cnVjdCB0YXNfY29u ZmlnIHsKKwllbnVtIHRhc19zdGF0ZSBzdGF0ZTsKKwlzdHJ1Y3QgdGFzX21heF9zZHVfdGFibGUg bWF4X3NkdV90YWJsZTsKKwlzdHJ1Y3QgdGFzX2NvbmZpZ19saXN0IF9faW9tZW0gKmNvbmZpZ19s aXN0OworCXU4IF9faW9tZW0gKmFjdGl2ZV9saXN0OworCXN0cnVjdCB0YXNfZmlybXdhcmVfbGlz dCBfX2lvbWVtICpmd19hY3RpdmVfbGlzdDsKKwlzdHJ1Y3QgdGFzX2Zpcm13YXJlX2xpc3QgX19p b21lbSAqZndfc2hhZG93X2xpc3Q7Cit9OworCitzdHJ1Y3QgcHJ1ZXRoX3Fvc190YXMgeworCXN0 cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICp0YXByaW9fYWRtaW47CisJc3RydWN0IHRjX3Rh cHJpb19xb3B0X29mZmxvYWQgKnRhcHJpb19vcGVyOworCXN0cnVjdCB0YXNfY29uZmlnIGNvbmZp ZzsKK307CisKK3N0cnVjdCBwcnVldGhfcW9zIHsKKwlzdHJ1Y3QgcHJ1ZXRoX3Fvc190YXMgdGFz OworfTsKKwordm9pZCBpY3NzZ19xb3NfdGFzX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYp OworaW50IGljc3NnX3Fvc19uZG9fc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGVu dW0gdGNfc2V0dXBfdHlwZSB0eXBlLAorCQkJICAgdm9pZCAqdHlwZV9kYXRhKTsKKyNlbmRpZiAv KiBfX05FVF9USV9JQ1NTR19RT1NfSCAqLwotLSAKMi4zNC4xCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxp c3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=