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 9581AC25B7E for ; Fri, 31 May 2024 04:45:53 +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:References:In-Reply-To: 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: List-Owner; bh=Rb4d1m4xQ2w7G0BOzWJ+D4zTYv1kEoTAUA+7NAoNOFU=; b=QTFFFv2MWMiNcr /lE4pEzFKEQeerxruYC4eeSfHgYQbalqfwJpwpz/sfglG8hc6ButhyVZAUDC7OaCMMZj+d4q1FwXl /mBDb3ywCHAEjeVFdP9PH3t8DzPxzv2V9nT6EBV6EULjhys0kK6K8K3At4409UCQm25joWjqmvCu3 xGYXINGjGLuoYNG3QAPldMdCHa+M+KHeaBuKx6jcsIorL6Tu2FSp1TRJT1+fxxUa92A7Hjxy/WUPO cN1BhoxOMPQIVl7ng+f4aUmrxGTRmcWD3+cQRp5fOBZM1P/VfLj9VvyFOtRsfQhNyF320PqDfI8Gp AqUhGc6WU6xcgTMzMubg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sCu96-00000009EHL-2iwV; Fri, 31 May 2024 04:45:40 +0000 Received: from lelv0142.ext.ti.com ([198.47.23.249]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sCu8z-00000009EGC-1i94 for linux-arm-kernel@lists.infradead.org; Fri, 31 May 2024 04:45:35 +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 44V4jLBh120365; Thu, 30 May 2024 23:45:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1717130721; bh=T5Pg7iY8dxrt+YpDQSkVBpMRNzVCOYFJERFwd2F7sFM=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=iEX+JPJoT0wu/FAzJPlJAZ2isBP7TJjcJZ1joiH4gEw9KCk9dicQ0Yyyp8VwA8EtV 6loT73PLOzJXeKVOsrcpcPfqbMzbLMrc7oAArI0AU0MlR4tW3Ze0Mt1rz33LxPyJM7 s7Ws4dy4mxc4tSDFAnZu000PlfUMji2XIf1x9CTc= Received: from DLEE109.ent.ti.com (dlee109.ent.ti.com [157.170.170.41]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 44V4jLXo062280 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 30 May 2024 23:45:21 -0500 Received: from DLEE114.ent.ti.com (157.170.170.25) by DLEE109.ent.ti.com (157.170.170.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23; Thu, 30 May 2024 23:45:20 -0500 Received: from lelvsmtp6.itg.ti.com (10.180.75.249) by DLEE114.ent.ti.com (157.170.170.25) 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; Thu, 30 May 2024 23:45:20 -0500 Received: from fllv0122.itg.ti.com (fllv0122.itg.ti.com [10.247.120.72]) by lelvsmtp6.itg.ti.com (8.15.2/8.15.2) with ESMTP id 44V4jKUx035772; Thu, 30 May 2024 23:45:20 -0500 Received: from localhost (danish-tpc.dhcp.ti.com [10.24.69.25]) by fllv0122.itg.ti.com (8.14.7/8.14.7) with ESMTP id 44V4jJp8023398; Thu, 30 May 2024 23:45:20 -0500 From: MD Danish Anwar To: Jan Kiszka , Dan Carpenter , Andrew Lunn , Simon Horman , Diogo Ivo , Wolfram Sang , Randy Dunlap , Niklas Schnelle , Vladimir Oltean , Vignesh Raghavendra , Richard Cochran , Roger Quadros , MD Danish Anwar , Paolo Abeni , Jakub Kicinski , Eric Dumazet , "David S. Miller" CC: , , , , Jacob Keller , Roger Quadros Subject: [PATCH net-next v9 2/2] net: ti: icssg_prueth: add TAPRIO offload support Date: Fri, 31 May 2024 10:15:12 +0530 Message-ID: <20240531044512.981587-3-danishanwar@ti.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240531044512.981587-1-danishanwar@ti.com> References: <20240531044512.981587-1-danishanwar@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-20240530_214533_566308_E418B2C7 X-CRM114-Status: GOOD ( 32.10 ) 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 RnJvbTogUm9nZXIgUXVhZHJvcyA8cm9nZXJxQHRpLmNvbT4KClRoZSBJQ1NTRyBkdWFsLWVtYWMg LyBzd2l0Y2ggZmlybXdhcmUgc3VwcG9ydHMgRW5oYW5jZWQgU2NoZWR1bGVkIFRyYWZmaWMKKEVT VCDigJMgZGVmaW5lZCBpbiBQODAyLjFRYnYvRDIuMiB0aGF0IGxhdGVyIGdvdCBpbmNsdWRlZCBp biBJRUVFCjgwMi4xUS0yMDE4KSBjb25maWd1cmF0aW9uLiBFU1QgYWxsb3dzIGV4cHJlc3MgcXVl dWUgdHJhZmZpYyB0byBiZQpzY2hlZHVsZWQgKHBsYWNlZCkgb24gdGhlIHdpcmUgYXQgc3BlY2lm aWMgcmVwZWF0YWJsZSB0aW1lIGludGVydmFscy4gSW4KTGludXgga2VybmVsLCBFU1QgY29uZmln dXJhdGlvbiBpcyBkb25lIHRocm91Z2ggdGMgY29tbWFuZCBhbmQgdGhlIHRhcHJpbwpzY2hlZHVs ZXIgaW4gdGhlIG5ldCBjb3JlIGltcGxlbWVudHMgYSBzb2Z0d2FyZSBvbmx5IHNjaGVkdWxlcgoo U0NIX1RBUFJJTykuIElmIHRoZSBOSUMgaXMgY2FwYWJsZSBvZiBFU1QgY29uZmlndXJhdGlvbix1 c2VyIGluZGljYXRlCiJmbGFnIDIiIGluIHRoZSBjb21tYW5kIHdoaWNoIGlzIHRoZW4gcGFyc2Vk IGJ5IHRhcHJpbyBzY2hlZHVsZXIgaW4gbmV0CmNvcmUgYW5kIGluZGljYXRlIHRoYXQgdGhlIGNv bW1hbmQgaXMgdG8gYmUgb2ZmbG9hZGVkIHRvIGgvdy4gdGFwcmlvIHRoZW4Kb2ZmbG9hZHMgdGhl IGNvbW1hbmQgdG8gdGhlIGRyaXZlciBieSBjYWxsaW5nIG5kb19zZXR1cF90YygpIG5kbyBvcHMu IFRoaXMKcGF0Y2ggaW1wbGVtZW50cyBuZG9fc2V0dXBfdGMoKSB0byBvZmZsb2FkIEVTVCBjb25m aWd1cmF0aW9uIHRvIElDU1NHLgoKU2lnbmVkLW9mZi1ieTogUm9nZXIgUXVhZHJvcyA8cm9nZXJx QHRpLmNvbT4KU2lnbmVkLW9mZi1ieTogVmlnbmVzaCBSYWdoYXZlbmRyYSA8dmlnbmVzaHJAdGku Y29tPgpSZXZpZXdlZC1ieTogU2ltb24gSG9ybWFuIDxob3Jtc0BrZXJuZWwub3JnPgpTaWduZWQt b2ZmLWJ5OiBNRCBEYW5pc2ggQW53YXIgPGRhbmlzaGFud2FyQHRpLmNvbT4KLS0tCiBkcml2ZXJz L25ldC9ldGhlcm5ldC90aS9LY29uZmlnICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL25l dC9ldGhlcm5ldC90aS9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL25ldC9l dGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYyB8ICAgMyArCiBkcml2ZXJzL25ldC9ldGhl cm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaCB8ICAgMiArCiBkcml2ZXJzL25ldC9ldGhlcm5l dC90aS9pY3NzZy9pY3NzZ19xb3MuYyAgICB8IDI4OCArKysrKysrKysrKysrKysrKysrCiBkcml2 ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19xb3MuaCAgICB8IDExMyArKysrKysrKwog NiBmaWxlcyBjaGFuZ2VkLCA0MDggaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3Fvcy5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcW9zLmgKCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQv dGkvS2NvbmZpZwppbmRleCBmMTYwYTNiNzE0OTkuLjZkZWFjOTAzNTYxMCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5l dC90aS9LY29uZmlnCkBAIC0xOTAsNiArMTkwLDcgQEAgY29uZmlnIFRJX0lDU1NHX1BSVUVUSAog CWRlcGVuZHMgb24gUFJVX1JFTU9URVBST0MKIAlkZXBlbmRzIG9uIEFSQ0hfSzMgJiYgT0YgJiYg VElfSzNfVURNQV9HTFVFX0xBWUVSCiAJZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05B TAorCWRlcGVuZHMgb24gTkVUX1NDSF9UQVBSSU8KIAloZWxwCiAJICBTdXBwb3J0IGR1YWwgR2ln YWJpdCBFdGhlcm5ldCBwb3J0cyBvdmVyIHRoZSBJQ1NTRyBQUlUgU3Vic3lzdGVtLgogCSAgVGhp cyBzdWJzeXN0ZW0gaXMgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggdGhlIEFNNjUgcGxhdGZvcm0u CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9NYWtlZmlsZSBiL2RyaXZlcnMv bmV0L2V0aGVybmV0L3RpL01ha2VmaWxlCmluZGV4IDU5Y2QyMGEzODI2Ny4uMGE4NjMxMWJkMTcw IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9NYWtlZmlsZQorKysgYi9kcml2 ZXJzL25ldC9ldGhlcm5ldC90aS9NYWtlZmlsZQpAQCAtMzUsNiArMzUsNyBAQCBvYmotJChDT05G SUdfVElfSUNTU0dfUFJVRVRIKSArPSBpY3NzZy1wcnVldGgubwogaWNzc2ctcHJ1ZXRoLXkgOj0g aWNzc2cvaWNzc2dfcHJ1ZXRoLm8gXAogCQkgIGljc3NnL2ljc3NnX2NvbW1vbi5vIFwKIAkJICBp Y3NzZy9pY3NzZ19jbGFzc2lmaWVyLm8gXAorCQkgIGljc3NnL2ljc3NnX3Fvcy5vIFwKIAkJICBp Y3NzZy9pY3NzZ19xdWV1ZXMubyBcCiAJCSAgaWNzc2cvaWNzc2dfY29uZmlnLm8gXAogCQkgIGlj c3NnL2ljc3NnX21paV9jZmcubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90 aS9pY3NzZy9pY3NzZ19wcnVldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2lj c3NnX3BydWV0aC5jCmluZGV4IGQxNTliZGY3ZGQ5ZC4uODk4MmVjYjhhNDNkIDEwMDY0NAotLS0g YS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYworKysgYi9kcml2 ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYwpAQCAtNzA2LDYgKzcwNiw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZW1hY19uZXRkZXZfb3BzID0g ewogCS5uZG9fZXRoX2lvY3RsID0gZW1hY19uZG9faW9jdGwsCiAJLm5kb19nZXRfc3RhdHM2NCA9 IGVtYWNfbmRvX2dldF9zdGF0czY0LAogCS5uZG9fZ2V0X3BoeXNfcG9ydF9uYW1lID0gZW1hY19u ZG9fZ2V0X3BoeXNfcG9ydF9uYW1lLAorCS5uZG9fc2V0dXBfdGMgPSBpY3NzZ19xb3NfbmRvX3Nl dHVwX3RjLAogfTsKIAogc3RhdGljIGludCBwcnVldGhfbmV0ZGV2X2luaXQoc3RydWN0IHBydWV0 aCAqcHJ1ZXRoLApAQCAtODQwLDYgKzg0MSw4IEBAIHN0YXRpYyBpbnQgcHJ1ZXRoX25ldGRldl9p bml0KHN0cnVjdCBwcnVldGggKnBydWV0aCwKIAllbWFjLT5yeF9ocnRpbWVyLmZ1bmN0aW9uID0g JmVtYWNfcnhfdGltZXJfY2FsbGJhY2s7CiAJcHJ1ZXRoLT5lbWFjW21hY10gPSBlbWFjOwogCisJ aWNzc2dfcW9zX3Rhc19pbml0KG5kZXYpOworCiAJcmV0dXJuIDA7CiAKIGZyZWU6CmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguaCBiL2RyaXZl cnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5oCmluZGV4IGZhYjI0MjhkZTc4 Yi4uYzY4NTE1NDZlNmM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3Nz Zy9pY3NzZ19wcnVldGguaAorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3Nz Z19wcnVldGguaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImljc3NnX2NvbmZpZy5oIgog I2luY2x1ZGUgImljc3NfaWVwLmgiCiAjaW5jbHVkZSAiaWNzc2dfc3dpdGNoX21hcC5oIgorI2lu Y2x1ZGUgImljc3NnX3Fvcy5oIgogCiAjZGVmaW5lIFBSVUVUSF9NQVhfTVRVICAgICAgICAgICgy MDAwIC0gRVRIX0hMRU4gLSBFVEhfRkNTX0xFTikKICNkZWZpbmUgUFJVRVRIX01JTl9QS1RfU0la RSAgICAgKFZMQU5fRVRIX1pMRU4pCkBAIC0xOTUsNiArMTk2LDcgQEAgc3RydWN0IHBydWV0aF9l bWFjIHsKIAkvKiBSWCBJUlEgQ29hbGVzY2luZyBSZWxhdGVkICovCiAJc3RydWN0IGhydGltZXIg cnhfaHJ0aW1lcjsKIAl1bnNpZ25lZCBsb25nIHJ4X3BhY2VfdGltZW91dF9uczsKKwlzdHJ1Y3Qg cHJ1ZXRoX3FvcyBxb3M7CiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L3RpL2ljc3NnL2ljc3NnX3Fvcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cv aWNzc2dfcW9zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZTkz YjFiOWNhNDMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3Nz Zy9pY3NzZ19xb3MuYwpAQCAtMCwwICsxLDI4OCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAKKy8qIFRleGFzIEluc3RydW1lbnRzIElDU1NHIFBSVUVUSCBRb1Mgc3VibW9k dWxlCisgKiBDb3B5cmlnaHQgKEMpIDIwMjMgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVk IC0gaHR0cDovL3d3dy50aS5jb20vCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3ByaW50ay5oPgor I2luY2x1ZGUgImljc3NnX3BydWV0aC5oIgorI2luY2x1ZGUgImljc3NnX3N3aXRjaF9tYXAuaCIK Kworc3RhdGljIHZvaWQgdGFzX3VwZGF0ZV9md19saXN0X3BvaW50ZXJzKHN0cnVjdCBwcnVldGhf ZW1hYyAqZW1hYykKK3sKKwlzdHJ1Y3QgdGFzX2NvbmZpZyAqdGFzID0gJmVtYWMtPnFvcy50YXMu Y29uZmlnOworCisJaWYgKChyZWFkYih0YXMtPmFjdGl2ZV9saXN0KSkgPT0gVEFTX0xJU1QwKSB7 CisJCXRhcy0+ZndfYWN0aXZlX2xpc3QgPSBlbWFjLT5kcmFtLnZhICsgVEFTX0dBVEVfTUFTS19M SVNUMDsKKwkJdGFzLT5md19zaGFkb3dfbGlzdCA9IGVtYWMtPmRyYW0udmEgKyBUQVNfR0FURV9N QVNLX0xJU1QxOworCX0gZWxzZSB7CisJCXRhcy0+ZndfYWN0aXZlX2xpc3QgPSBlbWFjLT5kcmFt LnZhICsgVEFTX0dBVEVfTUFTS19MSVNUMTsKKwkJdGFzLT5md19zaGFkb3dfbGlzdCA9IGVtYWMt PmRyYW0udmEgKyBUQVNfR0FURV9NQVNLX0xJU1QwOworCX0KK30KKworc3RhdGljIHZvaWQgdGFz X3VwZGF0ZV9tYXhzZHVfdGFibGUoc3RydWN0IHBydWV0aF9lbWFjICplbWFjKQoreworCXN0cnVj dCB0YXNfY29uZmlnICp0YXMgPSAmZW1hYy0+cW9zLnRhcy5jb25maWc7CisJdTE2IF9faW9tZW0g Km1heF9zZHVfdGJsX3B0cjsKKwl1OCBnYXRlX2lkeDsKKworCS8qIHVwZGF0ZSB0aGUgbWF4c2R1 IHRhYmxlICovCisJbWF4X3NkdV90YmxfcHRyID0gZW1hYy0+ZHJhbS52YSArIFRBU19RVUVVRV9N QVhfU0RVX0xJU1Q7CisKKwlmb3IgKGdhdGVfaWR4ID0gMDsgZ2F0ZV9pZHggPCBUQVNfTUFYX05V TV9RVUVVRVM7IGdhdGVfaWR4KyspCisJCXdyaXRldyh0YXMtPm1heF9zZHVfdGFibGUubWF4X3Nk dVtnYXRlX2lkeF0sICZtYXhfc2R1X3RibF9wdHJbZ2F0ZV9pZHhdKTsKK30KKworc3RhdGljIHZv aWQgdGFzX3Jlc2V0KHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYykKK3sKKwlzdHJ1Y3QgdGFzX2Nv bmZpZyAqdGFzID0gJmVtYWMtPnFvcy50YXMuY29uZmlnOworCWludCBpOworCisJZm9yIChpID0g MDsgaSA8IFRBU19NQVhfTlVNX1FVRVVFUzsgaSsrKQorCQl0YXMtPm1heF9zZHVfdGFibGUubWF4 X3NkdVtpXSA9IDIwNDg7CisKKwl0YXNfdXBkYXRlX21heHNkdV90YWJsZShlbWFjKTsKKworCXdy aXRlYihUQVNfTElTVDAsIHRhcy0+YWN0aXZlX2xpc3QpOworCisJbWVtc2V0X2lvKHRhcy0+Zndf YWN0aXZlX2xpc3QsIDAsIHNpemVvZigqdGFzLT5md19hY3RpdmVfbGlzdCkpOworCW1lbXNldF9p byh0YXMtPmZ3X3NoYWRvd19saXN0LCAwLCBzaXplb2YoKnRhcy0+Zndfc2hhZG93X2xpc3QpKTsK K30KKworc3RhdGljIGludCB0YXNfc2V0X3N0YXRlKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYywg ZW51bSB0YXNfc3RhdGUgc3RhdGUpCit7CisJc3RydWN0IHRhc19jb25maWcgKnRhcyA9ICZlbWFj LT5xb3MudGFzLmNvbmZpZzsKKwlpbnQgcmV0OworCisJaWYgKHRhcy0+c3RhdGUgPT0gc3RhdGUp CisJCXJldHVybiAwOworCisJc3dpdGNoIChzdGF0ZSkgeworCWNhc2UgVEFTX1NUQVRFX1JFU0VU OgorCQl0YXNfcmVzZXQoZW1hYyk7CisJCXJldCA9IGVtYWNfc2V0X3BvcnRfc3RhdGUoZW1hYywg SUNTU0dfRU1BQ19QT1JUX1RBU19SRVNFVCk7CisJCXRhcy0+c3RhdGUgPSBUQVNfU1RBVEVfUkVT RVQ7CisJCWJyZWFrOworCWNhc2UgVEFTX1NUQVRFX0VOQUJMRToKKwkJcmV0ID0gZW1hY19zZXRf cG9ydF9zdGF0ZShlbWFjLCBJQ1NTR19FTUFDX1BPUlRfVEFTX0VOQUJMRSk7CisJCXRhcy0+c3Rh dGUgPSBUQVNfU1RBVEVfRU5BQkxFOworCQlicmVhazsKKwljYXNlIFRBU19TVEFURV9ESVNBQkxF OgorCQlyZXQgPSBlbWFjX3NldF9wb3J0X3N0YXRlKGVtYWMsIElDU1NHX0VNQUNfUE9SVF9UQVNf RElTQUJMRSk7CisJCXRhcy0+c3RhdGUgPSBUQVNfU1RBVEVfRElTQUJMRTsKKwkJYnJlYWs7CisJ ZGVmYXVsdDoKKwkJbmV0ZGV2X2VycihlbWFjLT5uZGV2LCAiJXM6IHVuc3VwcG9ydGVkIHN0YXRl XG4iLCBfX2Z1bmNfXyk7CisJCXJldCA9IC1FSU5WQUw7CisJCWJyZWFrOworCX0KKworCWlmIChy ZXQpCisJCW5ldGRldl9lcnIoZW1hYy0+bmRldiwgIlRBUyBzZXQgc3RhdGUgZmFpbGVkICVkXG4i LCByZXQpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgdGFzX3NldF90cmlnZ2VyX2xp c3RfY2hhbmdlKHN0cnVjdCBwcnVldGhfZW1hYyAqZW1hYykKK3sKKwlzdHJ1Y3QgdGNfdGFwcmlv X3FvcHRfb2ZmbG9hZCAqYWRtaW5fbGlzdCA9IGVtYWMtPnFvcy50YXMudGFwcmlvX2FkbWluOwor CXN0cnVjdCB0YXNfY29uZmlnICp0YXMgPSAmZW1hYy0+cW9zLnRhcy5jb25maWc7CisJc3RydWN0 IHB0cF9zeXN0ZW1fdGltZXN0YW1wIHN0czsKKwl1MzIgY2hhbmdlX2N5Y2xlX2NvdW50OworCXUz MiBjeWNsZV90aW1lOworCXU2NCBiYXNlX3RpbWU7CisJdTY0IGN1cl90aW1lOworCisJLyogSUVQ IGNsb2NrIGhhcyBhIGhhcmR3YXJlIGVycmF0YSBkdWUgdG8gd2hpY2ggaXQgd3JhcHMgYXJvdW5k IGV4YWN0bHkKKwkgKiBvbmNlIGV2ZXJ5IHRhcHJpbyBjeWNsZS4gVG8gY29tcGVuc2F0ZSBmb3Ig dGhhdCwgYWRqdXN0IGN5Y2xlIHRpbWUKKwkgKiBieSB0aGUgd3JhcCBhcm91bmQgdGltZSB3aGlj aCBpcyBzdG9yZWQgaW4gZW1hYy0+aWVwLT5kZWZfaW5jCisJICovCisJY3ljbGVfdGltZSA9IGFk bWluX2xpc3QtPmN5Y2xlX3RpbWUgLSBlbWFjLT5pZXAtPmRlZl9pbmM7CisJYmFzZV90aW1lID0g YWRtaW5fbGlzdC0+YmFzZV90aW1lOworCWN1cl90aW1lID0gcHJ1ZXRoX2llcF9nZXR0aW1lKGVt YWMsICZzdHMpOworCisJaWYgKGJhc2VfdGltZSA+IGN1cl90aW1lKQorCQljaGFuZ2VfY3ljbGVf Y291bnQgPSBESVZfUk9VTkRfVVBfVUxMKGJhc2VfdGltZSAtIGN1cl90aW1lLCBjeWNsZV90aW1l KTsKKwllbHNlCisJCWNoYW5nZV9jeWNsZV9jb3VudCA9IDE7CisKKwl3cml0ZWwoY3ljbGVfdGlt ZSwgZW1hYy0+ZHJhbS52YSArIFRBU19BRE1JTl9DWUNMRV9USU1FKTsKKwl3cml0ZWwoY2hhbmdl X2N5Y2xlX2NvdW50LCBlbWFjLT5kcmFtLnZhICsgVEFTX0NPTkZJR19DSEFOR0VfQ1lDTEVfQ09V TlQpOworCXdyaXRlYihhZG1pbl9saXN0LT5udW1fZW50cmllcywgZW1hYy0+ZHJhbS52YSArIFRB U19BRE1JTl9MSVNUX0xFTkdUSCk7CisKKwkvKiBjb25maWdfY2hhbmdlIGNsZWFyZWQgYnkgZi93 IHRvIGFjayByZWNlcHRpb24gb2YgbmV3IHNoYWRvdyBsaXN0ICovCisJd3JpdGViKDEsICZ0YXMt PmNvbmZpZ19saXN0LT5jb25maWdfY2hhbmdlKTsKKwkvKiBjb25maWdfcGVuZGluZyBjbGVhcmVk IGJ5IGYvdyB3aGVuIG5ldyBzaGFkb3cgbGlzdCBpcyBjb3BpZWQgdG8gYWN0aXZlIGxpc3QgKi8K Kwl3cml0ZWIoMSwgJnRhcy0+Y29uZmlnX2xpc3QtPmNvbmZpZ19wZW5kaW5nKTsKKworCXJldHVy biBlbWFjX3NldF9wb3J0X3N0YXRlKGVtYWMsIElDU1NHX0VNQUNfUE9SVF9UQVNfVFJJR0dFUik7 Cit9CisKK3N0YXRpYyBpbnQgdGFzX3VwZGF0ZV9vcGVyX2xpc3Qoc3RydWN0IHBydWV0aF9lbWFj ICplbWFjKQoreworCXN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICphZG1pbl9saXN0ID0g ZW1hYy0+cW9zLnRhcy50YXByaW9fYWRtaW47CisJc3RydWN0IHRhc19jb25maWcgKnRhcyA9ICZl bWFjLT5xb3MudGFzLmNvbmZpZzsKKwl1MzIgdGFzX2FjY19nYXRlX2Nsb3NlX3RpbWUgPSAwOwor CXU4IGlkeCwgZ2F0ZV9pZHgsIHZhbDsKKwlpbnQgcmV0OworCisJaWYgKGFkbWluX2xpc3QtPmN5 Y2xlX3RpbWUgPiBUQVNfTUFYX0NZQ0xFX1RJTUUpCisJCXJldHVybiAtRUlOVkFMOworCisJdGFz X3VwZGF0ZV9md19saXN0X3BvaW50ZXJzKGVtYWMpOworCisJZm9yIChpZHggPSAwOyBpZHggPCBh ZG1pbl9saXN0LT5udW1fZW50cmllczsgaWR4KyspIHsKKwkJd3JpdGViKGFkbWluX2xpc3QtPmVu dHJpZXNbaWR4XS5nYXRlX21hc2ssCisJCSAgICAgICAmdGFzLT5md19zaGFkb3dfbGlzdC0+Z2F0 ZV9tYXNrX2xpc3RbaWR4XSk7CisJCXRhc19hY2NfZ2F0ZV9jbG9zZV90aW1lICs9IGFkbWluX2xp c3QtPmVudHJpZXNbaWR4XS5pbnRlcnZhbDsKKworCQkvKiBleHRlbmQgbGFzdCBlbnRyeSB0aWxs IGVuZCBvZiBjeWNsZSB0aW1lICovCisJCWlmIChpZHggPT0gYWRtaW5fbGlzdC0+bnVtX2VudHJp ZXMgLSAxKQorCQkJd3JpdGVsKGFkbWluX2xpc3QtPmN5Y2xlX3RpbWUsCisJCQkgICAgICAgJnRh cy0+Zndfc2hhZG93X2xpc3QtPndpbl9lbmRfdGltZV9saXN0W2lkeF0pOworCQllbHNlCisJCQl3 cml0ZWwodGFzX2FjY19nYXRlX2Nsb3NlX3RpbWUsCisJCQkgICAgICAgJnRhcy0+Zndfc2hhZG93 X2xpc3QtPndpbl9lbmRfdGltZV9saXN0W2lkeF0pOworCX0KKworCS8qIGNsZWFyIHJlbWFpbmlu ZyBlbnRyaWVzICovCisJZm9yIChpZHggPSBhZG1pbl9saXN0LT5udW1fZW50cmllczsgaWR4IDwg VEFTX01BWF9DTURfTElTVFM7IGlkeCsrKSB7CisJCXdyaXRlYigwLCAmdGFzLT5md19zaGFkb3df bGlzdC0+Z2F0ZV9tYXNrX2xpc3RbaWR4XSk7CisJCXdyaXRlbCgwLCAmdGFzLT5md19zaGFkb3df bGlzdC0+d2luX2VuZF90aW1lX2xpc3RbaWR4XSk7CisJfQorCisJLyogdXBkYXRlIHRoZSBBcnJh eSBvZiBnYXRlIGNsb3NlIHRpbWUgZm9yIGVhY2ggcXVldWUgaW4gZWFjaCB3aW5kb3cgKi8KKwlm b3IgKGlkeCA9IDAgOyBpZHggPCBhZG1pbl9saXN0LT5udW1fZW50cmllczsgaWR4KyspIHsKKwkJ LyogT24gTGludXgsIG9ubHkgUFJVRVRIX01BWF9UWF9RVUVVRVMgYXJlIHN1cHBvcnRlZCBwZXIg cG9ydCAqLworCQlmb3IgKGdhdGVfaWR4ID0gMDsgZ2F0ZV9pZHggPCBQUlVFVEhfTUFYX1RYX1FV RVVFUzsgZ2F0ZV9pZHgrKykgeworCQkJdTggZ2F0ZV9tYXNrX2xpc3RfaWR4ID0gcmVhZGIoJnRh cy0+Zndfc2hhZG93X2xpc3QtPmdhdGVfbWFza19saXN0W2lkeF0pOworCQkJdTMyIGdhdGVfY2xv c2VfdGltZSA9IDA7CisKKwkJCWlmIChnYXRlX21hc2tfbGlzdF9pZHggJiBCSVQoZ2F0ZV9pZHgp KQorCQkJCWdhdGVfY2xvc2VfdGltZSA9IHJlYWRsKCZ0YXMtPmZ3X3NoYWRvd19saXN0LT53aW5f ZW5kX3RpbWVfbGlzdFtpZHhdKTsKKworCQkJd3JpdGVsKGdhdGVfY2xvc2VfdGltZSwKKwkJCSAg ICAgICAmdGFzLT5md19zaGFkb3dfbGlzdC0+Z2F0ZV9jbG9zZV90aW1lX2xpc3RbaWR4XVtnYXRl X2lkeF0pOworCQl9CisJfQorCisJLyogdGVsbCBmL3cgdG8gc3dhcCBhY3RpdmUgJiBzaGFkb3cg bGlzdCAqLworCXJldCA9IHRhc19zZXRfdHJpZ2dlcl9saXN0X2NoYW5nZShlbWFjKTsKKwlpZiAo cmV0KSB7CisJCW5ldGRldl9lcnIoZW1hYy0+bmRldiwgImZhaWxlZCB0byBzd2FwIGYvdyBjb25m aWcgbGlzdDogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJLyogV2FpdCBmb3Ig Y29tcGxldGlvbiAqLworCXJldCA9IHJlYWRiX3BvbGxfdGltZW91dCgmdGFzLT5jb25maWdfbGlz dC0+Y29uZmlnX2NoYW5nZSwgdmFsLCAhdmFsLAorCQkJCSBVU0VDX1BFUl9NU0VDLCAxMCAqIFVT RUNfUEVSX01TRUMpOworCWlmIChyZXQpIHsKKwkJbmV0ZGV2X2VycihlbWFjLT5uZGV2LCAiVEFT IGxpc3QgY2hhbmdlIGNvbXBsZXRpb24gdGltZSBvdXRcbiIpOworCQlyZXR1cm4gcmV0OworCX0K KworCXRhc191cGRhdGVfZndfbGlzdF9wb2ludGVycyhlbWFjKTsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IGVtYWNfdGFwcmlvX3JlcGxhY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYs CisJCQkgICAgICAgc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKnRhcHJpbykKK3sKKwlz dHJ1Y3QgcHJ1ZXRoX2VtYWMgKmVtYWMgPSBuZXRkZXZfcHJpdihuZGV2KTsKKwlpbnQgcmV0Owor CisJaWYgKHRhcHJpby0+Y3ljbGVfdGltZV9leHRlbnNpb24pIHsKKwkJTkxfU0VUX0VSUl9NU0df TU9EKHRhcHJpby0+ZXh0YWNrLCAiQ3ljbGUgdGltZSBleHRlbnNpb24gbm90IHN1cHBvcnRlZCIp OworCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJfQorCisJaWYgKHRhcHJpby0+Y3ljbGVfdGltZSA8 IFRBU19NSU5fQ1lDTEVfVElNRSkgeworCQlOTF9TRVRfRVJSX01TR19GTVRfTU9EKHRhcHJpby0+ ZXh0YWNrLCAiY3ljbGVfdGltZSAlbGx1IGlzIGxlc3MgdGhhbiBtaW4gc3VwcG9ydGVkIGN5Y2xl X3RpbWUgJWQiLAorCQkJCSAgICAgICB0YXByaW8tPmN5Y2xlX3RpbWUsIFRBU19NSU5fQ1lDTEVf VElNRSk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmICh0YXByaW8tPm51bV9lbnRyaWVz ID4gVEFTX01BWF9DTURfTElTVFMpIHsKKwkJTkxfU0VUX0VSUl9NU0dfRk1UX01PRCh0YXByaW8t PmV4dGFjaywgIm51bV9lbnRyaWVzICVsdSBpcyBtb3JlIHRoYW4gbWF4IHN1cHBvcnRlZCBlbnRy aWVzICVkIiwKKwkJCQkgICAgICAgdGFwcmlvLT5udW1fZW50cmllcywgVEFTX01BWF9DTURfTElT VFMpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAoZW1hYy0+cW9zLnRhcy50YXByaW9f YWRtaW4pCisJCXRhcHJpb19vZmZsb2FkX2ZyZWUoZW1hYy0+cW9zLnRhcy50YXByaW9fYWRtaW4p OworCisJZW1hYy0+cW9zLnRhcy50YXByaW9fYWRtaW4gPSB0YXByaW9fb2ZmbG9hZF9nZXQodGFw cmlvKTsKKwlyZXQgPSB0YXNfdXBkYXRlX29wZXJfbGlzdChlbWFjKTsKKwlpZiAocmV0KQorCQln b3RvIGNsZWFyX3RhcHJpbzsKKworCXJldCA9IHRhc19zZXRfc3RhdGUoZW1hYywgVEFTX1NUQVRF X0VOQUJMRSk7CisJaWYgKHJldCkKKwkJZ290byBjbGVhcl90YXByaW87CisKK2NsZWFyX3RhcHJp bzoKKwllbWFjLT5xb3MudGFzLnRhcHJpb19hZG1pbiA9IE5VTEw7CisJdGFwcmlvX29mZmxvYWRf ZnJlZSh0YXByaW8pOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBlbWFjX3RhcHJp b19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAorCQkJICAgICAgIHN0cnVjdCB0Y190 YXByaW9fcW9wdF9vZmZsb2FkICp0YXByaW8pCit7CisJc3RydWN0IHBydWV0aF9lbWFjICplbWFj ID0gbmV0ZGV2X3ByaXYobmRldik7CisJaW50IHJldDsKKworCXRhcHJpb19vZmZsb2FkX2ZyZWUo dGFwcmlvKTsKKworCXJldCA9IHRhc19zZXRfc3RhdGUoZW1hYywgVEFTX1NUQVRFX1JFU0VUKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIHRhc19zZXRfc3RhdGUoZW1hYywg VEFTX1NUQVRFX0RJU0FCTEUpOworfQorCitzdGF0aWMgaW50IGVtYWNfc2V0dXBfdGFwcmlvKHN0 cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICp0eXBlX2RhdGEpCit7CisJc3RydWN0IHRjX3Rh cHJpb19xb3B0X29mZmxvYWQgKnRhcHJpbyA9IHR5cGVfZGF0YTsKKwlpbnQgcmV0OworCisJc3dp dGNoICh0YXByaW8tPmNtZCkgeworCWNhc2UgVEFQUklPX0NNRF9SRVBMQUNFOgorCQlyZXQgPSBl bWFjX3RhcHJpb19yZXBsYWNlKG5kZXYsIHRhcHJpbyk7CisJCWJyZWFrOworCWNhc2UgVEFQUklP X0NNRF9ERVNUUk9ZOgorCQlyZXQgPSBlbWFjX3RhcHJpb19kZXN0cm95KG5kZXYsIHRhcHJpbyk7 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldCA9IC1FT1BOT1RTVVBQOworCX0KKworCXJldHVy biByZXQ7Cit9CisKK2ludCBpY3NzZ19xb3NfbmRvX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNl ICpuZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwKKwkJCSAgIHZvaWQgKnR5cGVfZGF0YSkK K3sKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNlIFRDX1NFVFVQX1FESVNDX1RBUFJJTzoKKwkJcmV0 dXJuIGVtYWNfc2V0dXBfdGFwcmlvKG5kZXYsIHR5cGVfZGF0YSk7CisJZGVmYXVsdDoKKwkJcmV0 dXJuIC1FT1BOT1RTVVBQOworCX0KK30KKwordm9pZCBpY3NzZ19xb3NfdGFzX2luaXQoc3RydWN0 IG5ldF9kZXZpY2UgKm5kZXYpCit7CisJc3RydWN0IHBydWV0aF9lbWFjICplbWFjID0gbmV0ZGV2 X3ByaXYobmRldik7CisJc3RydWN0IHRhc19jb25maWcgKnRhczsKKworCXRhcyA9ICZlbWFjLT5x b3MudGFzLmNvbmZpZzsKKworCXRhcy0+Y29uZmlnX2xpc3QgPSBlbWFjLT5kcmFtLnZhICsgVEFT X0NPTkZJR19DSEFOR0VfVElNRTsKKwl0YXMtPmFjdGl2ZV9saXN0ID0gZW1hYy0+ZHJhbS52YSAr IFRBU19BQ1RJVkVfTElTVF9JTkRFWDsKKworCXRhc191cGRhdGVfZndfbGlzdF9wb2ludGVycyhl bWFjKTsKKworCXRhc19zZXRfc3RhdGUoZW1hYywgVEFTX1NUQVRFX1JFU0VUKTsKK30KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3Fvcy5oIGIvZHJpdmVy cy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcW9zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi4yNWJhY2NkZDFjZTUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2 ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19xb3MuaApAQCAtMCwwICsxLDExMyBAQAor LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KKy8qIENvcHlyaWdodCAoQykg MjAyMyBUZXhhcyBJbnN0cnVtZW50cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8K KyAqLworCisjaWZuZGVmIF9fTkVUX1RJX0lDU1NHX1FPU19ICisjZGVmaW5lIF9fTkVUX1RJX0lD U1NHX1FPU19ICisKKyNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4KKyNpbmNsdWRlIDxsaW51eC9u ZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxuZXQvcGt0X3NjaGVkLmg+CisKKy8qIE1heGltdW0gbnVt YmVyIG9mIGdhdGUgY29tbWFuZCBlbnRyaWVzIGluIGVhY2ggbGlzdC4gKi8KKyNkZWZpbmUgVEFT X01BWF9DTURfTElTVFMgICAoMTYpCisKKy8qIE1heGltdW0gbnVtYmVyIG9mIHRyYW5zbWl0IHF1 ZXVlcyBzdXBwb3J0ZWQgYnkgaW1wbGVtZW50YXRpb24gKi8KKyNkZWZpbmUgVEFTX01BWF9OVU1f UVVFVUVTICAoOCkKKworLyogTWluaW11bSBjeWNsZSB0aW1lIHN1cHBvcnRlZCBieSBpbXBsZW1l bnRhdGlvbiAoaW4gbnMpICovCisjZGVmaW5lIFRBU19NSU5fQ1lDTEVfVElNRSAgKDEwMDAwMDAp CisKKy8qIE1pbmltdW0gY3ljbGUgdGltZSBzdXBwb3J0ZWQgYnkgaW1wbGVtZW50YXRpb24gKGlu IG5zKSAqLworI2RlZmluZSBUQVNfTUFYX0NZQ0xFX1RJTUUgICg0MDAwMDAwMDAwKQorCisvKiBN aW5pbXVtIFRBUyB3aW5kb3cgZHVyYXRpb24gc3VwcG9ydGVkIGJ5IGltcGxlbWVudGF0aW9uIChp biBucykgKi8KKyNkZWZpbmUgVEFTX01JTl9XSU5ET1dfRFVSQVRJT04gICgxMDAwMCkKKworLyoq CisgKiBlbnVtIHRhc19saXN0X251bSAtIFRBUyBsaXN0IG51bWJlcgorICogQFRBU19MSVNUMDog VEFTIGxpc3QgbnVtYmVyIGlzIDAKKyAqIEBUQVNfTElTVDE6IFRBUyBsaXN0IG51bWJlciBpcyAx CisgKi8KK2VudW0gdGFzX2xpc3RfbnVtIHsKKwlUQVNfTElTVDAgPSAwLAorCVRBU19MSVNUMSA9 IDEKK307CisKKy8qKgorICogZW51bSB0YXNfc3RhdGUgLSBTdGF0ZSBvZiBUQVMgaW4gZmlybXdh cmUKKyAqIEBUQVNfU1RBVEVfRElTQUJMRTogVEFTIHN0YXRlIG1hY2hpbmUgaXMgZGlzYWJsZWQu CisgKiBAVEFTX1NUQVRFX0VOQUJMRTogVEFTIHN0YXRlIG1hY2hpbmUgaXMgZW5hYmxlZC4KKyAq IEBUQVNfU1RBVEVfUkVTRVQ6IFRBUyBzdGF0ZSBtYWNoaW5lIGlzIHJlc2V0LgorICovCitlbnVt IHRhc19zdGF0ZSB7CisJVEFTX1NUQVRFX0RJU0FCTEUgPSAwLAorCVRBU19TVEFURV9FTkFCTEUg PSAxLAorCVRBU19TVEFURV9SRVNFVCA9IDIsCit9OworCisvKioKKyAqIHN0cnVjdCB0YXNfY29u ZmlnX2xpc3QgLSBDb25maWcgc3RhdGUgbWFjaGluZSB2YXJpYWJsZXMKKyAqIEBjb25maWdfY2hh bmdlX3RpbWU6IE5ldyBsaXN0IGlzIGNvcGllZCBhdCB0aGlzIHRpbWUKKyAqIEBjb25maWdfY2hh bmdlX2Vycm9yX2NvdW50ZXI6IEluY3JlbWVudGVkIGlmIGFkbWluLT5CYXNlVGltZSA8IGN1cnJl bnQgdGltZQorICoJCQkJIGFuZCBUQVNfZW5hYmxlZCBpcyB0cnVlCisgKiBAY29uZmlnX3BlbmRp bmc6IFRydWUgaWYgbGlzdCB1cGRhdGUgaXMgcGVuZGluZworICogQGNvbmZpZ19jaGFuZ2U6IFNl dCB0byB0cnVlIHdoZW4gYXBwbGljYXRpb24gdHJpZ2dlciB1cGRhdGluZyBvZiBhZG1pbiBsaXN0 CisgKgkJICAgdG8gYWN0aXZlIGxpc3QsIGNsZWFyZWQgd2hlbiBjb25maWdDaGFuZ2VUaW1lIGlz IHVwZGF0ZWQKKyAqLworc3RydWN0IHRhc19jb25maWdfbGlzdCB7CisJdTY0IGNvbmZpZ19jaGFu Z2VfdGltZTsKKwl1MzIgY29uZmlnX2NoYW5nZV9lcnJvcl9jb3VudGVyOworCXU4IGNvbmZpZ19w ZW5kaW5nOworCXU4IGNvbmZpZ19jaGFuZ2U7Cit9OworCisvKiBNYXggU0RVIHRhYmxlLiBTZWUg SUVFRSBTdGQgODAyLjFRLTIwMTggMTIuMjkuMS4xICovCitzdHJ1Y3QgdGFzX21heF9zZHVfdGFi bGUgeworCXUxNiBtYXhfc2R1W1RBU19NQVhfTlVNX1FVRVVFU107Cit9OworCisvKioKKyAqIHN0 cnVjdCB0YXNfZmlybXdhcmVfbGlzdCAtIFRBUyBMaXN0IFN0cnVjdHVyZSBiYXNlZCBvbiBmaXJt d2FyZSBtZW1vcnkgbWFwCisgKiBAZ2F0ZV9tYXNrX2xpc3Q6IFdpbmRvdyBnYXRlIG1hc2sgbGlz dAorICogQHdpbl9lbmRfdGltZV9saXN0OiBXaW5kb3cgZW5kIHRpbWUgbGlzdAorICogQGdhdGVf Y2xvc2VfdGltZV9saXN0OiBBcnJheSBvZiBnYXRlIGNsb3NlIHRpbWUgZm9yIGVhY2ggcXVldWUg aW4gZWFjaCB3aW5kb3cKKyAqLworc3RydWN0IHRhc19maXJtd2FyZV9saXN0IHsKKwl1OCBnYXRl X21hc2tfbGlzdFtUQVNfTUFYX0NNRF9MSVNUU107CisJdTMyIHdpbl9lbmRfdGltZV9saXN0W1RB U19NQVhfQ01EX0xJU1RTXTsKKwl1MzIgZ2F0ZV9jbG9zZV90aW1lX2xpc3RbVEFTX01BWF9DTURf TElTVFNdW1RBU19NQVhfTlVNX1FVRVVFU107Cit9OworCisvKioKKyAqIHN0cnVjdCB0YXNfY29u ZmlnIC0gTWFpbiBUaW1lIEF3YXJlIFNoYXBlciBIYW5kbGUKKyAqIEBzdGF0ZTogVEFTIHN0YXRl CisgKiBAbWF4X3NkdV90YWJsZTogTWF4IFNEVSB0YWJsZQorICogQGNvbmZpZ19saXN0OiBDb25m aWcgY2hhbmdlIHZhcmlhYmxlcworICogQGFjdGl2ZV9saXN0OiBDdXJyZW50IG9wZXJhdGluZyBs aXN0IG9wZXJhdGluZyBsaXN0CisgKiBAZndfYWN0aXZlX2xpc3Q6IEFjdGl2ZSBMaXN0IHBvaW50 ZXIsIHVzZWQgYnkgZmlybXdhcmUKKyAqIEBmd19zaGFkb3dfbGlzdDogU2hhZG93IExpc3QgcG9p bnRlciwgdXNlZCBieSBkcml2ZXIKKyAqLworc3RydWN0IHRhc19jb25maWcgeworCWVudW0gdGFz X3N0YXRlIHN0YXRlOworCXN0cnVjdCB0YXNfbWF4X3NkdV90YWJsZSBtYXhfc2R1X3RhYmxlOwor CXN0cnVjdCB0YXNfY29uZmlnX2xpc3QgX19pb21lbSAqY29uZmlnX2xpc3Q7CisJdTggX19pb21l bSAqYWN0aXZlX2xpc3Q7CisJc3RydWN0IHRhc19maXJtd2FyZV9saXN0IF9faW9tZW0gKmZ3X2Fj dGl2ZV9saXN0OworCXN0cnVjdCB0YXNfZmlybXdhcmVfbGlzdCBfX2lvbWVtICpmd19zaGFkb3df bGlzdDsKK307CisKK3N0cnVjdCBwcnVldGhfcW9zX3RhcyB7CisJc3RydWN0IHRjX3RhcHJpb19x b3B0X29mZmxvYWQgKnRhcHJpb19hZG1pbjsKKwlzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9h ZCAqdGFwcmlvX29wZXI7CisJc3RydWN0IHRhc19jb25maWcgY29uZmlnOworfTsKKworc3RydWN0 IHBydWV0aF9xb3MgeworCXN0cnVjdCBwcnVldGhfcW9zX3RhcyB0YXM7Cit9OworCit2b2lkIGlj c3NnX3Fvc190YXNfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7CitpbnQgaWNzc2dfcW9z X25kb19zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgZW51bSB0Y19zZXR1cF90eXBl IHR5cGUsCisJCQkgICB2b2lkICp0eXBlX2RhdGEpOworI2VuZGlmIC8qIF9fTkVUX1RJX0lDU1NH X1FPU19IICovCi0tIAoyLjM0LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2Vy bmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==