From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4653BA054A for ; Tue, 25 Oct 2022 14:35:44 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4178942847; Tue, 25 Oct 2022 14:35:44 +0200 (CEST) Received: from mail-oa1-f99.google.com (mail-oa1-f99.google.com [209.85.160.99]) by mails.dpdk.org (Postfix) with ESMTP id F3BF8427FF for ; Tue, 25 Oct 2022 14:35:42 +0200 (CEST) Received: by mail-oa1-f99.google.com with SMTP id 586e51a60fabf-1322d768ba7so15331988fac.5 for ; Tue, 25 Oct 2022 05:35:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; h=date:message-id:cc:to:from:subject:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=LNY+C/jolwuRQmErxhobO+TObeEzE4kDaWUbYPF7/Zk=; b=jeAF/KgtGnE4b/edyoIoG+BInwHSpMM21cBgrzp6XPeDDPrb+8XsNzw+f7PV1kn9NT N6Bgmx1OikLouT8ItM2ACcCwbGdhJWV6GYkd/v0y0Nx4+db+EokrDOHZ5L64uPCqcJEy xc8aJXpBXFOORWjqAkYdYV7cHp33mLt62jpUI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=date:message-id:cc:to:from:subject:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=LNY+C/jolwuRQmErxhobO+TObeEzE4kDaWUbYPF7/Zk=; b=SfmWJ7WAZ+NtHrs03OYdVPLwi2CdW1XP+QXPwP25LCbP2Dc/tDExZLgIsdyR3Qp/xz GpMIcPA5gl2S1U2DIeLzW+UmyBQxy6g99qjHeXSnHzdqegzEAjFehcboweiuIHgMyVnX kLYqmvzwOxnRO/r233SRYaERbmqHyRwRcShuNbD9rRMip4vODa8wYqxjQa1BhF/rpeq/ mO4bR/kPrjCw/zttnPw2+UVCkSF+lnXww+UN9MV8jcSG+pJXD5S7qaJX2IwFe0M5EkXu GcWy6G73kdCsML1idYVBoUDu9k80/Du9zoMzDv2B8PQWD4T6X9YJa1MKreVJR4ua0noo Gc9A== X-Gm-Message-State: ACrzQf0pBbk1M2hLP4yvfTao+NGJC7zXHpXbPAyYYsmX24McP1ZobvWX TQPUAvmd1us4hfzxAKFyB6RicVqk40I+mx+vWXxXmPtYLAA+Iw== X-Google-Smtp-Source: AMsMyM6zcnagkMizf/mq26PrKsQJm+nHsQ9Xj1/hdfY8/T7R7MJVw08evSDST/Ghbqv/FwrmECWy03VN2woD X-Received: by 2002:a05:6870:a7a0:b0:136:6fa8:6373 with SMTP id x32-20020a056870a7a000b001366fa86373mr39975358oao.162.1666701342307; Tue, 25 Oct 2022 05:35:42 -0700 (PDT) Received: from postal.iol.unh.edu (postal.iol.unh.edu. [132.177.123.84]) by smtp-relay.gmail.com with ESMTPS id d38-20020a056870d2a600b0013bb4c427a4sm201576oae.41.2022.10.25.05.35.41 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 25 Oct 2022 05:35:42 -0700 (PDT) X-Relaying-Domain: iol.unh.edu Received: from noxus.dpdklab.iol.unh.edu (unknown [IPv6:2606:4100:3880:1722::4]) by postal.iol.unh.edu (Postfix) with ESMTP id AB67460524E4; Tue, 25 Oct 2022 08:35:37 -0400 (EDT) Received: from noxus.dpdklab.iol.unh.edu (localhost [IPv6:::1]) by noxus.dpdklab.iol.unh.edu (Postfix) with ESMTP id A7DB045F; Tue, 25 Oct 2022 08:35:37 -0400 (EDT) Content-Type: multipart/mixed; boundary="===============4990474357483423271==" MIME-Version: 1.0 Subject: |WARNING| pw119093-119100 [PATCH] [v8, 8/8] net/gve: add support for Rx/Tx From: dpdklab@iol.unh.edu To: test-report@dpdk.org Cc: dpdk-test-reports@iol.unh.edu Message-Id: <20221025123537.A7DB045F@noxus.dpdklab.iol.unh.edu> Date: Tue, 25 Oct 2022 08:35:37 -0400 (EDT) X-BeenThere: test-report@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: automatic DPDK test reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: test-report-bounces@dpdk.org --===============4990474357483423271== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGVzdC1MYWJlbDogaW9sLXRlc3RpbmcKVGVzdC1TdGF0dXM6IFdBUk5JTkcKaHR0cDovL2RwZGsu b3JnL3BhdGNoLzExOTA5MwoKX2FwcGx5IHBhdGNoIGZhaWx1cmVfCgpTdWJtaXR0ZXI6IEp1bmZl bmcgR3VvIDxqdW5mZW5nLmd1b0BpbnRlbC5jb20+CkRhdGU6IFR1ZXNkYXksIE9jdG9iZXIgMjUg MjAyMiAwOTowNzoyOSAKQXBwbGllZCBvbjogQ29tbWl0SUQ6ZjgwMGMwM2RlOWY3MWE3YjU5MTEx YjU5NzI2NzZlZGI5OWMyOGIwYQpBcHBseSBwYXRjaCBzZXQgMTE5MDkzLTExOTEwMCBmYWlsZWQ6 CgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ndmUvYmFzZS9ndmUuaC4uLgplcnJvcjogZHJp dmVycy9uZXQvZ3ZlL2Jhc2UvZ3ZlLmg6IGFscmVhZHkgZXhpc3RzIGluIGluZGV4CkNoZWNraW5n IHBhdGNoIGRyaXZlcnMvbmV0L2d2ZS9iYXNlL2d2ZV9hZG1pbnEuYy4uLgplcnJvcjogZHJpdmVy cy9uZXQvZ3ZlL2Jhc2UvZ3ZlX2FkbWlucS5jOiBhbHJlYWR5IGV4aXN0cyBpbiBpbmRleApDaGVj a2luZyBwYXRjaCBkcml2ZXJzL25ldC9ndmUvYmFzZS9ndmVfYWRtaW5xLmguLi4KZXJyb3I6IGRy aXZlcnMvbmV0L2d2ZS9iYXNlL2d2ZV9hZG1pbnEuaDogYWxyZWFkeSBleGlzdHMgaW4gaW5kZXgK Q2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZ3ZlL2Jhc2UvZ3ZlX2Rlc2MuaC4uLgplcnJvcjog ZHJpdmVycy9uZXQvZ3ZlL2Jhc2UvZ3ZlX2Rlc2MuaDogYWxyZWFkeSBleGlzdHMgaW4gaW5kZXgK Q2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZ3ZlL2Jhc2UvZ3ZlX2Rlc2NfZHFvLmguLi4KZXJy b3I6IGRyaXZlcnMvbmV0L2d2ZS9iYXNlL2d2ZV9kZXNjX2Rxby5oOiBhbHJlYWR5IGV4aXN0cyBp biBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ndmUvYmFzZS9ndmVfcmVnaXN0ZXIu aC4uLgplcnJvcjogZHJpdmVycy9uZXQvZ3ZlL2Jhc2UvZ3ZlX3JlZ2lzdGVyLmg6IGFscmVhZHkg ZXhpc3RzIGluIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2d2ZS9iYXNlL2d2ZV9h ZG1pbnEuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKI2lmbmRlZiBfR1ZFX0FETUlO UV9ICiNkZWZpbmUgX0dWRV9BRE1JTlFfSAoKLyogQWRtaW4gcXVldWUgb3Bjb2RlcyAqLwplbnVt IGd2ZV9hZG1pbnFfb3Bjb2RlcyB7CglHVkVfQURNSU5RX0RFU0NSSUJFX0RFVklDRQkJPSAweDEs CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ndmUvYmFzZS9ndmVfYWRtaW5xLmg6 NgpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9ndmUvYmFzZS9ndmVfZGVzYy5oLi4uCmVycm9y OiB3aGlsZSBzZWFyY2hpbmcgZm9yOgojaWZuZGVmIF9HVkVfREVTQ19IXwojZGVmaW5lIF9HVkVf REVTQ19IXwoKLyogQSBub3RlIG9uIHNlZ19hZGRycwogKgogKiBCYXNlIGFkZHJlc3NlcyBlbmNv ZGVkIGluIHNlZ19hZGRyIGFyZSBub3QgYXNzdW1lZCB0byBiZSBwaHlzaWNhbAoKZXJyb3I6IHBh dGNoIGZhaWxlZDogZHJpdmVycy9uZXQvZ3ZlL2Jhc2UvZ3ZlX2Rlc2MuaDo4CkNoZWNraW5nIHBh dGNoIGRyaXZlcnMvbmV0L2d2ZS9iYXNlL2d2ZV9kZXNjX2Rxby5oLi4uCmVycm9yOiB3aGlsZSBz ZWFyY2hpbmcgZm9yOgojaWZuZGVmIF9HVkVfREVTQ19EUU9fSF8KI2RlZmluZSBfR1ZFX0RFU0Nf RFFPX0hfCgojZGVmaW5lIEdWRV9UWF9NQVhfSERSX1NJWkVfRFFPIDI1NQojZGVmaW5lIEdWRV9U WF9NSU5fVFNPX01TU19EUU8gODgKCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9n dmUvYmFzZS9ndmVfZGVzY19kcW8uaDo4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2d2ZS9i YXNlL2d2ZV9vc2RlcC5oLi4uCmVycm9yOiBkcml2ZXJzL25ldC9ndmUvYmFzZS9ndmVfb3NkZXAu aDogYWxyZWFkeSBleGlzdHMgaW4gaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZ3Zl L2Jhc2UvZ3ZlX3JlZ2lzdGVyLmguLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiNpZm5k ZWYgX0dWRV9SRUdJU1RFUl9IXwojZGVmaW5lIF9HVkVfUkVHSVNURVJfSF8KCi8qIEZpeGVkIENv bmZpZ3VyYXRpb24gUmVnaXN0ZXJzICovCnN0cnVjdCBndmVfcmVnaXN0ZXJzIHsKCV9fYmUzMglk ZXZpY2Vfc3RhdHVzOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvZ3ZlL2Jhc2Uv Z3ZlX3JlZ2lzdGVyLmg6NgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9ndmUvYmFzZS9ndmVf YWRtaW5xLmggd2l0aCAxIHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMxLgpBcHBseWluZyBwYXRj aCBkcml2ZXJzL25ldC9ndmUvYmFzZS9ndmVfZGVzYy5oIHdpdGggMSByZWplY3QuLi4KUmVqZWN0 ZWQgaHVuayAjMS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZ3ZlL2Jhc2UvZ3ZlX2Rlc2Nf ZHFvLmggd2l0aCAxIHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMxLgpBcHBseWluZyBwYXRjaCBk cml2ZXJzL25ldC9ndmUvYmFzZS9ndmVfcmVnaXN0ZXIuaCB3aXRoIDEgcmVqZWN0Li4uClJlamVj dGVkIGh1bmsgIzEuCmRpZmYgYS9kcml2ZXJzL25ldC9ndmUvYmFzZS9ndmVfYWRtaW5xLmggYi9k cml2ZXJzL25ldC9ndmUvYmFzZS9ndmVfYWRtaW5xLmgJKHJlamVjdGVkIGh1bmtzKQpAQCAtNiw2 ICs2LDggQEAKICNpZm5kZWYgX0dWRV9BRE1JTlFfSAogI2RlZmluZSBfR1ZFX0FETUlOUV9ICiAK KyNpbmNsdWRlICJndmVfb3NkZXAuaCIKKwogLyogQWRtaW4gcXVldWUgb3Bjb2RlcyAqLwogZW51 bSBndmVfYWRtaW5xX29wY29kZXMgewogCUdWRV9BRE1JTlFfREVTQ1JJQkVfREVWSUNFCQk9IDB4 MSwKZGlmZiBhL2RyaXZlcnMvbmV0L2d2ZS9iYXNlL2d2ZV9kZXNjLmggYi9kcml2ZXJzL25ldC9n dmUvYmFzZS9ndmVfZGVzYy5oCShyZWplY3RlZCBodW5rcykKQEAgLTgsNiArOCw4IEBACiAjaWZu ZGVmIF9HVkVfREVTQ19IXwogI2RlZmluZSBfR1ZFX0RFU0NfSF8KIAorI2luY2x1ZGUgImd2ZV9v c2RlcC5oIgorCiAvKiBBIG5vdGUgb24gc2VnX2FkZHJzCiAgKgogICogQmFzZSBhZGRyZXNzZXMg ZW5jb2RlZCBpbiBzZWdfYWRkciBhcmUgbm90IGFzc3VtZWQgdG8gYmUgcGh5c2ljYWwKZGlmZiBh L2RyaXZlcnMvbmV0L2d2ZS9iYXNlL2d2ZV9kZXNjX2Rxby5oIGIvZHJpdmVycy9uZXQvZ3ZlL2Jh c2UvZ3ZlX2Rlc2NfZHFvLmgJKHJlamVjdGVkIGh1bmtzKQpAQCAtOCw2ICs4LDggQEAKICNpZm5k ZWYgX0dWRV9ERVNDX0RRT19IXwogI2RlZmluZSBfR1ZFX0RFU0NfRFFPX0hfCiAKKyNpbmNsdWRl ICJndmVfb3NkZXAuaCIKKwogI2RlZmluZSBHVkVfVFhfTUFYX0hEUl9TSVpFX0RRTyAyNTUKICNk ZWZpbmUgR1ZFX1RYX01JTl9UU09fTVNTX0RRTyA4OAogCmRpZmYgYS9kcml2ZXJzL25ldC9ndmUv YmFzZS9ndmVfcmVnaXN0ZXIuaCBiL2RyaXZlcnMvbmV0L2d2ZS9iYXNlL2d2ZV9yZWdpc3Rlci5o CShyZWplY3RlZCBodW5rcykKQEAgLTYsNiArNiw4IEBACiAjaWZuZGVmIF9HVkVfUkVHSVNURVJf SF8KICNkZWZpbmUgX0dWRV9SRUdJU1RFUl9IXwogCisjaW5jbHVkZSAiZ3ZlX29zZGVwLmgiCisK IC8qIEZpeGVkIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXJzICovCiBzdHJ1Y3QgZ3ZlX3JlZ2lzdGVy cyB7CiAJX19iZTMyCWRldmljZV9zdGF0dXM7CkNoZWNraW5nIHBhdGNoIE1BSU5UQUlORVJTLi4u CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgpGOiBkb2MvZ3VpZGVzL25pY3MvZW5pYy5yc3QK RjogZG9jL2d1aWRlcy9uaWNzL2ZlYXR1cmVzL2VuaWMuaW5pCgpIaXNpbGljb24gaG5zMwpNOiBE b25nZG9uZyBMaXUgPGxpdWRvbmdkb25nM0BodWF3ZWkuY29tPgpNOiBZaXNlbiBaaHVhbmcgPHlp c2VuLnpodWFuZ0BodWF3ZWkuY29tPgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogTUFJTlRBSU5FUlM6 Njk3CkNoZWNraW5nIHBhdGNoIGRvYy9ndWlkZXMvbmljcy9mZWF0dXJlcy9ndmUuaW5pLi4uCmVy cm9yOiBkb2MvZ3VpZGVzL25pY3MvZmVhdHVyZXMvZ3ZlLmluaTogYWxyZWFkeSBleGlzdHMgaW4g aW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZG9jL2d1aWRlcy9uaWNzL2d2ZS5yc3QuLi4KZXJyb3I6IGRv Yy9ndWlkZXMvbmljcy9ndmUucnN0OiBhbHJlYWR5IGV4aXN0cyBpbiBpbmRleApDaGVja2luZyBw YXRjaCBkb2MvZ3VpZGVzL25pY3MvaW5kZXgucnN0Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcg Zm9yOgogICAgZW5ldGZlYwogICAgZW5pYwogICAgZm0xMGsKICAgIGhpbmljCiAgICBobnMzCiAg ICBpNDBlCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkb2MvZ3VpZGVzL25pY3MvaW5kZXgucnN0OjI5 CkNoZWNraW5nIHBhdGNoIGRvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjJfMTEucnN0Li4u CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgogICogQWRkZWQgUS1pbi1DTUIgZmVhdHVyZSBj b250cm9sbGVkIGJ5IGRldmFyZyBpb25pY19jbWIuCiAgKiBBZGRlZCBvcHRpbWl6ZWQgaGFuZGxl cnMgZm9yIG5vbi1zY2F0dGVyZWQgUnggYW5kIFR4LgoKKiAqKlVwZGF0ZWQgSW50ZWwgaWF2ZiBk cml2ZXIuKioKCiAgKiBBZGRlZCBmbG93IHN1YnNjcmlwdGlvbiBzdXBwb3J0LgoKZXJyb3I6IHBh dGNoIGZhaWxlZDogZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMl8xMS5yc3Q6MTUyCkNo ZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2d2ZS9iYXNlL2d2ZV9hZG1pbnEuYy4uLgplcnJvcjog d2hpbGUgc2VhcmNoaW5nIGZvcjoKICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjIgR29vZ2xlLCBJ bmMuCiAqLwoKI2luY2x1ZGUgImd2ZV9hZG1pbnEuaCIKI2luY2x1ZGUgImd2ZV9yZWdpc3Rlci5o IgoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2d2ZS9iYXNlL2d2ZV9hZG1pbnEu YzozCkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2LmMuLi4KZXJyb3I6 IGRyaXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2LmM6IGFscmVhZHkgZXhpc3RzIGluIGluZGV4CkNo ZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2LmguLi4KZXJyb3I6IGRyaXZl cnMvbmV0L2d2ZS9ndmVfZXRoZGV2Lmg6IGFscmVhZHkgZXhpc3RzIGluIGluZGV4CkNoZWNraW5n IHBhdGNoIGRyaXZlcnMvbmV0L2d2ZS9ndmVfbG9ncy5oLi4uCmVycm9yOiBkcml2ZXJzL25ldC9n dmUvZ3ZlX2xvZ3MuaDogYWxyZWFkeSBleGlzdHMgaW4gaW5kZXgKQ2hlY2tpbmcgcGF0Y2ggZHJp dmVycy9uZXQvZ3ZlL21lc29uLmJ1aWxkLi4uCmVycm9yOiBkcml2ZXJzL25ldC9ndmUvbWVzb24u YnVpbGQ6IGFscmVhZHkgZXhpc3RzIGluIGluZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0 L2d2ZS92ZXJzaW9uLm1hcC4uLgplcnJvcjogZHJpdmVycy9uZXQvZ3ZlL3ZlcnNpb24ubWFwOiBh bHJlYWR5IGV4aXN0cyBpbiBpbmRleApDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9tZXNvbi5i dWlsZC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKICAgICAgICAnZW5pYycsCiAgICAg ICAgJ2ZhaWxzYWZlJywKICAgICAgICAnZm0xMGsnLAogICAgICAgICdoaW5pYycsCiAgICAgICAg J2huczMnLAogICAgICAgICdpNDBlJywKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0 L21lc29uLmJ1aWxkOjIzCkFwcGx5aW5nIHBhdGNoIE1BSU5UQUlORVJTIHdpdGggMSByZWplY3Qu Li4KUmVqZWN0ZWQgaHVuayAjMS4KQXBwbHlpbmcgcGF0Y2ggZG9jL2d1aWRlcy9uaWNzL2luZGV4 LnJzdCB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1bmsgIzEuCkFwcGx5aW5nIHBhdGNoIGRv Yy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjJfMTEucnN0IHdpdGggMSByZWplY3QuLi4KUmVq ZWN0ZWQgaHVuayAjMS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZ3ZlL2Jhc2UvZ3ZlX2Fk bWlucS5jIHdpdGggMSByZWplY3QuLi4KUmVqZWN0ZWQgaHVuayAjMS4KQXBwbHlpbmcgcGF0Y2gg ZHJpdmVycy9uZXQvbWVzb24uYnVpbGQgd2l0aCAxIHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMx LgpkaWZmIGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwkocmVqZWN0ZWQgaHVua3MpCkBAIC02 OTcsNiArNjk3LDEyIEBAIEY6IGRyaXZlcnMvbmV0L2VuaWMvCiBGOiBkb2MvZ3VpZGVzL25pY3Mv ZW5pYy5yc3QKIEY6IGRvYy9ndWlkZXMvbmljcy9mZWF0dXJlcy9lbmljLmluaQogCitHb29nbGUg VmlydHVhbCBFdGhlcm5ldAorTTogSnVuZmVuZyBHdW8gPGp1bmZlbmcuZ3VvQGludGVsLmNvbT4K K0Y6IGRyaXZlcnMvbmV0L2d2ZS8KK0Y6IGRvYy9ndWlkZXMvbmljcy9ndmUucnN0CitGOiBkb2Mv Z3VpZGVzL25pY3MvZmVhdHVyZXMvZ3ZlLmluaQorCiBIaXNpbGljb24gaG5zMwogTTogRG9uZ2Rv bmcgTGl1IDxsaXVkb25nZG9uZzNAaHVhd2VpLmNvbT4KIE06IFlpc2VuIFpodWFuZyA8eWlzZW4u emh1YW5nQGh1YXdlaS5jb20+CmRpZmYgYS9kb2MvZ3VpZGVzL25pY3MvaW5kZXgucnN0IGIvZG9j L2d1aWRlcy9uaWNzL2luZGV4LnJzdAkocmVqZWN0ZWQgaHVua3MpCkBAIC0yOSw2ICsyOSw3IEBA IE5ldHdvcmsgSW50ZXJmYWNlIENvbnRyb2xsZXIgRHJpdmVycwogICAgIGVuZXRmZWMKICAgICBl bmljCiAgICAgZm0xMGsKKyAgICBndmUKICAgICBoaW5pYwogICAgIGhuczMKICAgICBpNDBlCmRp ZmYgYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIyXzExLnJzdCBiL2RvYy9ndWlkZXMv cmVsX25vdGVzL3JlbGVhc2VfMjJfMTEucnN0CShyZWplY3RlZCBodW5rcykKQEAgLTE1Miw2ICsx NTIsMTEgQEAgTmV3IEZlYXR1cmVzCiAgICogQWRkZWQgUS1pbi1DTUIgZmVhdHVyZSBjb250cm9s bGVkIGJ5IGRldmFyZyBpb25pY19jbWIuCiAgICogQWRkZWQgb3B0aW1pemVkIGhhbmRsZXJzIGZv ciBub24tc2NhdHRlcmVkIFJ4IGFuZCBUeC4KIAorKiAqKkFkZGVkIEdWRSBuZXQgUE1EKioKKwor ICAqIEFkZGVkIHRoZSBuZXcgYGBndmVgYCBuZXQgZHJpdmVyIGZvciBHb29nbGUgVmlydHVhbCBF dGhlcm5ldCBkZXZpY2VzLgorICAqIFNlZSB0aGUgOmRvYzpgLi4vbmljcy9ndmVgIE5JQyBndWlk ZSBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoaXMgbmV3IGRyaXZlci4KKwogKiAqKlVwZGF0ZWQgSW50 ZWwgaWF2ZiBkcml2ZXIuKioKIAogICAqIEFkZGVkIGZsb3cgc3Vic2NyaXB0aW9uIHN1cHBvcnQu CmRpZmYgYS9kcml2ZXJzL25ldC9ndmUvYmFzZS9ndmVfYWRtaW5xLmMgYi9kcml2ZXJzL25ldC9n dmUvYmFzZS9ndmVfYWRtaW5xLmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtMyw2ICszLDcgQEAKICAq IENvcHlyaWdodCAoQykgMjAxNS0yMDIyIEdvb2dsZSwgSW5jLgogICovCiAKKyNpbmNsdWRlICIu Li9ndmVfZXRoZGV2LmgiCiAjaW5jbHVkZSAiZ3ZlX2FkbWlucS5oIgogI2luY2x1ZGUgImd2ZV9y ZWdpc3Rlci5oIgogCmRpZmYgYS9kcml2ZXJzL25ldC9tZXNvbi5idWlsZCBiL2RyaXZlcnMvbmV0 L21lc29uLmJ1aWxkCShyZWplY3RlZCBodW5rcykKQEAgLTIzLDYgKzIzLDcgQEAgZHJpdmVycyA9 IFsKICAgICAgICAgJ2VuaWMnLAogICAgICAgICAnZmFpbHNhZmUnLAogICAgICAgICAnZm0xMGsn LAorICAgICAgICAnZ3ZlJywKICAgICAgICAgJ2hpbmljJywKICAgICAgICAgJ2huczMnLAogICAg ICAgICAnaTQwZScsCkNoZWNraW5nIHBhdGNoIGRvYy9ndWlkZXMvbmljcy9mZWF0dXJlcy9ndmUu aW5pLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgo7IFJlZmVyIHRvIGRlZmF1bHQuaW5p IGZvciB0aGUgZnVsbCBsaXN0IG9mIGF2YWlsYWJsZSBQTUQgZmVhdHVyZXMuCjsKW0ZlYXR1cmVz XQpMaW51eCAgICAgICAgICAgICAgICA9IFkKeDg2LTMyICAgICAgICAgICAgICAgPSBZCng4Ni02 NCAgICAgICAgICAgICAgID0gWQoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZG9jL2d1aWRlcy9uaWNz L2ZlYXR1cmVzL2d2ZS5pbmk6NApDaGVja2luZyBwYXRjaCBkb2MvZ3VpZGVzL25pY3MvZ3ZlLnJz dC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCkluIHRoaXMgcmVsZWFzZSwgdGhlIEdW RSBQTUQgcHJvdmlkZXMgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgb2YgcGFja2V0CnJlY2VwdGlv biBhbmQgdHJhbnNtaXNzaW9uLgoKQ3VycmVudGx5LCBvbmx5IEdRSV9RUEwgYW5kIEdRSV9SREEg cXVldWUgZm9ybWF0IGFyZSBzdXBwb3J0ZWQgaW4gUE1ELgpKdW1ibyBGcmFtZSBpcyBub3Qgc3Vw cG9ydGVkIGluIFBNRCBmb3Igbm93LiBJdCdsbCBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlCgplcnJv cjogcGF0Y2ggZmFpbGVkOiBkb2MvZ3VpZGVzL25pY3MvZ3ZlLnJzdDo2MApDaGVja2luZyBwYXRj aCBkcml2ZXJzL25ldC9ndmUvZ3ZlX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcg Zm9yOgoJcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbnQKZ3ZlX2Rldl9zdGFydChzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmRldikKewoJZGV2LT5kYXRhLT5kZXZfc3RhcnRlZCA9IDE7CgoJcmV0dXJuIDA7Cn0K CmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2LmM6MzQKZXJy b3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkuZGV2X3N0YXJ0ICAgICAgICAgICAgPSBndmVfZGV2 X3N0YXJ0LAoJLmRldl9zdG9wICAgICAgICAgICAgID0gZ3ZlX2Rldl9zdG9wLAoJLmRldl9jbG9z ZSAgICAgICAgICAgID0gZ3ZlX2Rldl9jbG9zZSwKfTsKCnN0YXRpYyB2b2lkCgplcnJvcjogcGF0 Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ndmUvZ3ZlX2V0aGRldi5jOjcyCkFwcGx5aW5nIHBhdGNo IGRvYy9ndWlkZXMvbmljcy9mZWF0dXJlcy9ndmUuaW5pIHdpdGggMSByZWplY3QuLi4KUmVqZWN0 ZWQgaHVuayAjMS4KQXBwbHlpbmcgcGF0Y2ggZG9jL2d1aWRlcy9uaWNzL2d2ZS5yc3Qgd2l0aCAx IHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMxLgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9n dmUvZ3ZlX2V0aGRldi5jIHdpdGggMiByZWplY3RzLi4uClJlamVjdGVkIGh1bmsgIzEuClJlamVj dGVkIGh1bmsgIzIuCmRpZmYgYS9kb2MvZ3VpZGVzL25pY3MvZmVhdHVyZXMvZ3ZlLmluaSBiL2Rv Yy9ndWlkZXMvbmljcy9mZWF0dXJlcy9ndmUuaW5pCShyZWplY3RlZCBodW5rcykKQEAgLTQsNiAr NCw3IEBACiA7IFJlZmVyIHRvIGRlZmF1bHQuaW5pIGZvciB0aGUgZnVsbCBsaXN0IG9mIGF2YWls YWJsZSBQTUQgZmVhdHVyZXMuCiA7CiBbRmVhdHVyZXNdCitMaW5rIHN0YXR1cyAgICAgICAgICA9 IFkKIExpbnV4ICAgICAgICAgICAgICAgID0gWQogeDg2LTMyICAgICAgICAgICAgICAgPSBZCiB4 ODYtNjQgICAgICAgICAgICAgICA9IFkKZGlmZiBhL2RvYy9ndWlkZXMvbmljcy9ndmUucnN0IGIv ZG9jL2d1aWRlcy9uaWNzL2d2ZS5yc3QJKHJlamVjdGVkIGh1bmtzKQpAQCAtNjAsNiArNjAsOSBA QCBGZWF0dXJlcyBhbmQgTGltaXRhdGlvbnMKIAogSW4gdGhpcyByZWxlYXNlLCB0aGUgR1ZFIFBN RCBwcm92aWRlcyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBwYWNrZXQKIHJlY2VwdGlvbiBh bmQgdHJhbnNtaXNzaW9uLgorU3VwcG9ydGVkIGZlYXR1cmVzIG9mIHRoZSBHVkUgUE1EIGFyZToK KworLSBMaW5rIHN0YXRlIGluZm9ybWF0aW9uCiAKIEN1cnJlbnRseSwgb25seSBHUUlfUVBMIGFu ZCBHUUlfUkRBIHF1ZXVlIGZvcm1hdCBhcmUgc3VwcG9ydGVkIGluIFBNRC4KIEp1bWJvIEZyYW1l IGlzIG5vdCBzdXBwb3J0ZWQgaW4gUE1EIGZvciBub3cuIEl0J2xsIGJlIGFkZGVkIGluIHRoZSBm dXR1cmUKZGlmZiBhL2RyaXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2LmMgYi9kcml2ZXJzL25ldC9n dmUvZ3ZlX2V0aGRldi5jCShyZWplY3RlZCBodW5rcykKQEAgLTM0LDEwICszNCwzOSBAQCBndmVf ZGV2X2NvbmZpZ3VyZShfX3J0ZV91bnVzZWQgc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCiAJcmV0 dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK2d2ZV9saW5rX3VwZGF0ZShzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldiwgX19ydGVfdW51c2VkIGludCB3YWl0X3RvX2NvbXBsZXRlKQoreworCXN0cnVjdCBn dmVfcHJpdiAqcHJpdiA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IHJ0ZV9ldGhf bGluayBsaW5rOworCWludCBlcnI7CisKKwltZW1zZXQoJmxpbmssIDAsIHNpemVvZihsaW5rKSk7 CisJbGluay5saW5rX2R1cGxleCA9IFJURV9FVEhfTElOS19GVUxMX0RVUExFWDsKKwlsaW5rLmxp bmtfYXV0b25lZyA9IFJURV9FVEhfTElOS19BVVRPTkVHOworCisJaWYgKCFkZXYtPmRhdGEtPmRl dl9zdGFydGVkKSB7CisJCWxpbmsubGlua19zdGF0dXMgPSBSVEVfRVRIX0xJTktfRE9XTjsKKwkJ bGluay5saW5rX3NwZWVkID0gUlRFX0VUSF9TUEVFRF9OVU1fTk9ORTsKKwl9IGVsc2UgeworCQls aW5rLmxpbmtfc3RhdHVzID0gUlRFX0VUSF9MSU5LX1VQOworCQlQTURfRFJWX0xPRyhERUJVRywg IkdldCBsaW5rIHN0YXR1cyBmcm9tIGh3Iik7CisJCWVyciA9IGd2ZV9hZG1pbnFfcmVwb3J0X2xp bmtfc3BlZWQocHJpdik7CisJCWlmIChlcnIpIHsKKwkJCVBNRF9EUlZfTE9HKEVSUiwgIkZhaWxl ZCB0byBnZXQgbGluayBzcGVlZC4iKTsKKwkJCXByaXYtPmxpbmtfc3BlZWQgPSBSVEVfRVRIX1NQ RUVEX05VTV9VTktOT1dOOworCQl9CisJCWxpbmsubGlua19zcGVlZCA9IHByaXYtPmxpbmtfc3Bl ZWQ7CisJfQorCisJcmV0dXJuIHJ0ZV9ldGhfbGlua3N0YXR1c19zZXQoZGV2LCAmbGluayk7Cit9 CisKIHN0YXRpYyBpbnQKIGd2ZV9kZXZfc3RhcnQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCiB7 CiAJZGV2LT5kYXRhLT5kZXZfc3RhcnRlZCA9IDE7CisJZ3ZlX2xpbmtfdXBkYXRlKGRldiwgMCk7 CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTcyLDYgKzEwMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZXRoX2Rldl9vcHMgZ3ZlX2V0aF9kZXZfb3BzID0gewogCS5kZXZfc3RhcnQgICAgICAgICAgICA9 IGd2ZV9kZXZfc3RhcnQsCiAJLmRldl9zdG9wICAgICAgICAgICAgID0gZ3ZlX2Rldl9zdG9wLAog CS5kZXZfY2xvc2UgICAgICAgICAgICA9IGd2ZV9kZXZfY2xvc2UsCisJLmxpbmtfdXBkYXRlICAg ICAgICAgID0gZ3ZlX2xpbmtfdXBkYXRlLAogfTsKIAogc3RhdGljIHZvaWQKQ2hlY2tpbmcgcGF0 Y2ggZG9jL2d1aWRlcy9uaWNzL2ZlYXR1cmVzL2d2ZS5pbmkuLi4KZXJyb3I6IHdoaWxlIHNlYXJj aGluZyBmb3I6CjsKW0ZlYXR1cmVzXQpMaW5rIHN0YXR1cyAgICAgICAgICA9IFkKTGludXggICAg ICAgICAgICAgICAgPSBZCng4Ni0zMiAgICAgICAgICAgICAgID0gWQp4ODYtNjQgICAgICAgICAg ICAgICA9IFkKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRvYy9ndWlkZXMvbmljcy9mZWF0dXJlcy9n dmUuaW5pOjUKQ2hlY2tpbmcgcGF0Y2ggZG9jL2d1aWRlcy9uaWNzL2d2ZS5yc3QuLi4KZXJyb3I6 IHdoaWxlIHNlYXJjaGluZyBmb3I6CkRQREsgcmVsZWFzZS4KQWxzbywgb25seSBHUUlfUVBMIHF1 ZXVlIGZvcm1hdCBpcyBpbiB1c2Ugb24gR0NQIHNpbmNlIEdRSV9SREEgaGFzbid0IGJlZW4KcmVs ZWFzZWQgaW4gcHJvZHVjdGlvbi4KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRvYy9ndWlkZXMvbmlj cy9ndmUucnN0OjY5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2LmMu Li4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglyZXR1cm4gZXJyOwp9CgpzdGF0aWMgY29u c3Qgc3RydWN0IGV0aF9kZXZfb3BzIGd2ZV9ldGhfZGV2X29wcyA9IHsKCS5kZXZfY29uZmlndXJl ICAgICAgICA9IGd2ZV9kZXZfY29uZmlndXJlLAoJLmRldl9zdGFydCAgICAgICAgICAgID0gZ3Zl X2Rldl9zdGFydCwKCS5kZXZfc3RvcCAgICAgICAgICAgICA9IGd2ZV9kZXZfc3RvcCwKCS5kZXZf Y2xvc2UgICAgICAgICAgICA9IGd2ZV9kZXZfY2xvc2UsCgkubGlua191cGRhdGUgICAgICAgICAg PSBndmVfbGlua191cGRhdGUsCn07CgpzdGF0aWMgdm9pZAoKZXJyb3I6IHBhdGNoIGZhaWxlZDog ZHJpdmVycy9uZXQvZ3ZlL2d2ZV9ldGhkZXYuYzo5NgpBcHBseWluZyBwYXRjaCBkb2MvZ3VpZGVz L25pY3MvZmVhdHVyZXMvZ3ZlLmluaSB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1bmsgIzEu CkFwcGx5aW5nIHBhdGNoIGRvYy9ndWlkZXMvbmljcy9ndmUucnN0IHdpdGggMSByZWplY3QuLi4K UmVqZWN0ZWQgaHVuayAjMS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZ3ZlL2d2ZV9ldGhk ZXYuYyB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVkIGh1bmsgIzEuCmRpZmYgYS9kb2MvZ3VpZGVz L25pY3MvZmVhdHVyZXMvZ3ZlLmluaSBiL2RvYy9ndWlkZXMvbmljcy9mZWF0dXJlcy9ndmUuaW5p CShyZWplY3RlZCBodW5rcykKQEAgLTUsNiArNSw3IEBACiA7CiBbRmVhdHVyZXNdCiBMaW5rIHN0 YXR1cyAgICAgICAgICA9IFkKK01UVSB1cGRhdGUgICAgICAgICAgID0gWQogTGludXggICAgICAg ICAgICAgICAgPSBZCiB4ODYtMzIgICAgICAgICAgICAgICA9IFkKIHg4Ni02NCAgICAgICAgICAg ICAgID0gWQpkaWZmIGEvZG9jL2d1aWRlcy9uaWNzL2d2ZS5yc3QgYi9kb2MvZ3VpZGVzL25pY3Mv Z3ZlLnJzdAkocmVqZWN0ZWQgaHVua3MpCkBAIC02OSwzICs2OSw1IEBAIEp1bWJvIEZyYW1lIGlz IG5vdCBzdXBwb3J0ZWQgaW4gUE1EIGZvciBub3cuIEl0J2xsIGJlIGFkZGVkIGluIHRoZSBmdXR1 cmUKIERQREsgcmVsZWFzZS4KIEFsc28sIG9ubHkgR1FJX1FQTCBxdWV1ZSBmb3JtYXQgaXMgaW4g dXNlIG9uIEdDUCBzaW5jZSBHUUlfUkRBIGhhc24ndCBiZWVuCiByZWxlYXNlZCBpbiBwcm9kdWN0 aW9uLgorCitDdXJyZW50bHksIHNldHRpbmcgTVRVIHdpdGggdmFsdWUgbGFyZ2VyIHRoYW4gMTQ2 MCBpcyBub3Qgc3VwcG9ydGVkLgpkaWZmIGEvZHJpdmVycy9uZXQvZ3ZlL2d2ZV9ldGhkZXYuYyBi L2RyaXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2LmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtOTYsMTIg Kzk2LDQwIEBAIGd2ZV9kZXZfY2xvc2Uoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCiAJcmV0dXJu IGVycjsKIH0KIAorc3RhdGljIGludAorZ3ZlX2Rldl9tdHVfc2V0KHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LCB1aW50MTZfdCBtdHUpCit7CisJc3RydWN0IGd2ZV9wcml2ICpwcml2ID0gZGV2LT5k YXRhLT5kZXZfcHJpdmF0ZTsKKwlpbnQgZXJyOworCisJaWYgKG10dSA8IFJURV9FVEhFUl9NSU5f TVRVIHx8IG10dSA+IHByaXYtPm1heF9tdHUpIHsKKwkJUE1EX0RSVl9MT0coRVJSLCAiTUlOIE1U VSBpcyAldSwgTUFYIE1UVSBpcyAldSIsCisJCQkgICAgUlRFX0VUSEVSX01JTl9NVFUsIHByaXYt Pm1heF9tdHUpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKiBtdHUgc2V0dGluZyBpcyBm b3JiaWRkZW4gaWYgcG9ydCBpcyBzdGFydCAqLworCWlmIChkZXYtPmRhdGEtPmRldl9zdGFydGVk KSB7CisJCVBNRF9EUlZfTE9HKEVSUiwgIlBvcnQgbXVzdCBiZSBzdG9wcGVkIGJlZm9yZSBjb25m aWd1cmF0aW9uIik7CisJCXJldHVybiAtRUJVU1k7CisJfQorCisJZXJyID0gZ3ZlX2FkbWlucV9z ZXRfbXR1KHByaXYsIG10dSk7CisJaWYgKGVycikgeworCQlQTURfRFJWX0xPRyhFUlIsICJGYWls ZWQgdG8gc2V0IG10dSBhcyAldSBlcnIgPSAlZCIsIG10dSwgZXJyKTsKKwkJcmV0dXJuIGVycjsK Kwl9CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBldGhfZGV2X29wcyBn dmVfZXRoX2Rldl9vcHMgPSB7CiAJLmRldl9jb25maWd1cmUgICAgICAgID0gZ3ZlX2Rldl9jb25m aWd1cmUsCiAJLmRldl9zdGFydCAgICAgICAgICAgID0gZ3ZlX2Rldl9zdGFydCwKIAkuZGV2X3N0 b3AgICAgICAgICAgICAgPSBndmVfZGV2X3N0b3AsCiAJLmRldl9jbG9zZSAgICAgICAgICAgID0g Z3ZlX2Rldl9jbG9zZSwKIAkubGlua191cGRhdGUgICAgICAgICAgPSBndmVfbGlua191cGRhdGUs CisJLm10dV9zZXQgICAgICAgICAgICAgID0gZ3ZlX2Rldl9tdHVfc2V0LAogfTsKIAogc3RhdGlj IHZvaWQKQ2hlY2tpbmcgcGF0Y2ggZG9jL2d1aWRlcy9uaWNzL2ZlYXR1cmVzL2d2ZS5pbmkuLi4K ZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CjsgUmVmZXIgdG8gZGVmYXVsdC5pbmkgZm9yIHRo ZSBmdWxsIGxpc3Qgb2YgYXZhaWxhYmxlIFBNRCBmZWF0dXJlcy4KOwpbRmVhdHVyZXNdCkxpbmsg c3RhdHVzICAgICAgICAgID0gWQpNVFUgdXBkYXRlICAgICAgICAgICA9IFkKTGludXggICAgICAg ICAgICAgICAgPSBZCng4Ni0zMiAgICAgICAgICAgICAgID0gWQp4ODYtNjQgICAgICAgICAgICAg ICA9IFkKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRvYy9ndWlkZXMvbmljcy9mZWF0dXJlcy9ndmUu aW5pOjQKQ2hlY2tpbmcgcGF0Y2ggZG9jL2d1aWRlcy9uaWNzL2d2ZS5yc3QuLi4KZXJyb3I6IHdo aWxlIHNlYXJjaGluZyBmb3I6CnJlbGVhc2VkIGluIHByb2R1Y3Rpb24uCgpDdXJyZW50bHksIHNl dHRpbmcgTVRVIHdpdGggdmFsdWUgbGFyZ2VyIHRoYW4gMTQ2MCBpcyBub3Qgc3VwcG9ydGVkLgoK ZXJyb3I6IHBhdGNoIGZhaWxlZDogZG9jL2d1aWRlcy9uaWNzL2d2ZS5yc3Q6NzEKQ2hlY2tpbmcg cGF0Y2ggZHJpdmVycy9uZXQvZ3ZlL2d2ZV9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNo aW5nIGZvcjoKfQoKc3RhdGljIGludApndmVfZGV2X2NvbmZpZ3VyZShfX3J0ZV91bnVzZWQgc3Ry dWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCnsKCXJldHVybiAwOwp9CgoKZXJyb3I6IHBhdGNoIGZhaWxl ZDogZHJpdmVycy9uZXQvZ3ZlL2d2ZV9ldGhkZXYuYzoyOQplcnJvcjogd2hpbGUgc2VhcmNoaW5n IGZvcjoKCXJldHVybiBlcnI7Cn0KCnN0YXRpYyBpbnQKZ3ZlX2Rldl9tdHVfc2V0KHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2LCB1aW50MTZfdCBtdHUpCnsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRy aXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2LmM6OTYKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6 CgkuZGV2X3N0YXJ0ICAgICAgICAgICAgPSBndmVfZGV2X3N0YXJ0LAoJLmRldl9zdG9wICAgICAg ICAgICAgID0gZ3ZlX2Rldl9zdG9wLAoJLmRldl9jbG9zZSAgICAgICAgICAgID0gZ3ZlX2Rldl9j bG9zZSwKCS5saW5rX3VwZGF0ZSAgICAgICAgICA9IGd2ZV9saW5rX3VwZGF0ZSwKCS5tdHVfc2V0 ICAgICAgICAgICAgICA9IGd2ZV9kZXZfbXR1X3NldCwKfTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6 IGRyaXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2LmM6MTI4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv bmV0L2d2ZS9ndmVfZXRoZGV2LmguLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiNkZWZp bmUgR1ZFX01JTl9CVUZfU0laRQkgICAgMTAyNAojZGVmaW5lIEdWRV9NQVhfUlhfUEtUTEVOCSAg ICA2NTUzNQoKLyogQSBsaXN0IG9mIHBhZ2VzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgZGV2aWNlIGR1 cmluZyBzZXR1cCBhbmQgdXNlZCBieSBhIHF1ZXVlCiAqIGFzIGJ1ZmZlcnMKICovCgplcnJvcjog cGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ndmUvZ3ZlX2V0aGRldi5oOjE4CkFwcGx5aW5nIHBh dGNoIGRvYy9ndWlkZXMvbmljcy9mZWF0dXJlcy9ndmUuaW5pIHdpdGggMSByZWplY3QuLi4KUmVq ZWN0ZWQgaHVuayAjMS4KQXBwbHlpbmcgcGF0Y2ggZG9jL2d1aWRlcy9uaWNzL2d2ZS5yc3Qgd2l0 aCAxIHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMxLgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25l dC9ndmUvZ3ZlX2V0aGRldi5jIHdpdGggMyByZWplY3RzLi4uClJlamVjdGVkIGh1bmsgIzEuClJl amVjdGVkIGh1bmsgIzIuClJlamVjdGVkIGh1bmsgIzMuCkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMv bmV0L2d2ZS9ndmVfZXRoZGV2Lmggd2l0aCAxIHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMxLgpk aWZmIGEvZG9jL2d1aWRlcy9uaWNzL2ZlYXR1cmVzL2d2ZS5pbmkgYi9kb2MvZ3VpZGVzL25pY3Mv ZmVhdHVyZXMvZ3ZlLmluaQkocmVqZWN0ZWQgaHVua3MpCkBAIC00LDggKzQsMTAgQEAKIDsgUmVm ZXIgdG8gZGVmYXVsdC5pbmkgZm9yIHRoZSBmdWxsIGxpc3Qgb2YgYXZhaWxhYmxlIFBNRCBmZWF0 dXJlcy4KIDsKIFtGZWF0dXJlc10KK1NwZWVkIGNhcGFiaWxpdGllcyAgID0gWQogTGluayBzdGF0 dXMgICAgICAgICAgPSBZCiBNVFUgdXBkYXRlICAgICAgICAgICA9IFkKK1JTUyBoYXNoICAgICAg ICAgICAgID0gWQogTGludXggICAgICAgICAgICAgICAgPSBZCiB4ODYtMzIgICAgICAgICAgICAg ICA9IFkKIHg4Ni02NCAgICAgICAgICAgICAgID0gWQpkaWZmIGEvZG9jL2d1aWRlcy9uaWNzL2d2 ZS5yc3QgYi9kb2MvZ3VpZGVzL25pY3MvZ3ZlLnJzdAkocmVqZWN0ZWQgaHVua3MpCkBAIC03MSwz ICs3MSw4IEBAIEFsc28sIG9ubHkgR1FJX1FQTCBxdWV1ZSBmb3JtYXQgaXMgaW4gdXNlIG9uIEdD UCBzaW5jZSBHUUlfUkRBIGhhc24ndCBiZWVuCiByZWxlYXNlZCBpbiBwcm9kdWN0aW9uLgogCiBD dXJyZW50bHksIHNldHRpbmcgTVRVIHdpdGggdmFsdWUgbGFyZ2VyIHRoYW4gMTQ2MCBpcyBub3Qg c3VwcG9ydGVkLgorCitDdXJyZW50bHksIG9ubHkgIlJTUyBoYXNoIiBpcyBmb3JjZSBlbmFibGVk IHNvIHRoYXQgdGhlIGJhY2tlbmQgaGFyZHdhcmUKK2RldmljZSBjYWxjdWxhdGVkIGhhc2ggdmFs dWVzIGNvdWxkIGJlIHNoYXJlZCB3aXRoIGFwcGxpY2F0aW9ucy4gQnV0IGZvcgorUlNTLCB0aGVy ZSBpcyBubyBzdWNoIEFQSSB0byBjb25maWcgUlNTIGhhc2ggZnVuY3Rpb24gb3IgUkVUQSB0YWJs ZS4gU28sCitsaW1pdGVkIFJTUyBpcyBzdXBwb3J0ZWQgb25seSB3aXRoIGRlZmF1bHQgY29uZmln L3NldHRpbmcuCmRpZmYgYS9kcml2ZXJzL25ldC9ndmUvZ3ZlX2V0aGRldi5jIGIvZHJpdmVycy9u ZXQvZ3ZlL2d2ZV9ldGhkZXYuYwkocmVqZWN0ZWQgaHVua3MpCkBAIC0yOSw4ICsyOSwxNiBAQCBn dmVfd3JpdGVfdmVyc2lvbih1aW50OF90ICpkcml2ZXJfdmVyc2lvbl9yZWdpc3RlcikKIH0KIAog c3RhdGljIGludAotZ3ZlX2Rldl9jb25maWd1cmUoX19ydGVfdW51c2VkIHN0cnVjdCBydGVfZXRo X2RldiAqZGV2KQorZ3ZlX2Rldl9jb25maWd1cmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCiB7 CisJc3RydWN0IGd2ZV9wcml2ICpwcml2ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsKKworCWlm IChkZXYtPmRhdGEtPmRldl9jb25mLnJ4bW9kZS5tcV9tb2RlICYgUlRFX0VUSF9NUV9SWF9SU1Nf RkxBRykKKwkJZGV2LT5kYXRhLT5kZXZfY29uZi5yeG1vZGUub2ZmbG9hZHMgfD0gUlRFX0VUSF9S WF9PRkZMT0FEX1JTU19IQVNIOworCisJaWYgKGRldi0+ZGF0YS0+ZGV2X2NvbmYucnhtb2RlLm9m ZmxvYWRzICYgUlRFX0VUSF9SWF9PRkZMT0FEX1RDUF9MUk8pCisJCXByaXYtPmVuYWJsZV9yc2Mg PSAxOworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTk2LDYgKzEwNCw1NCBAQCBndmVfZGV2X2Nsb3Nl KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQogCXJldHVybiBlcnI7CiB9CiAKK3N0YXRpYyBpbnQK K2d2ZV9kZXZfaW5mb19nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0cnVjdCBydGVfZXRo X2Rldl9pbmZvICpkZXZfaW5mbykKK3sKKwlzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYgPSBkZXYtPmRh dGEtPmRldl9wcml2YXRlOworCisJZGV2X2luZm8tPmRldmljZSA9IGRldi0+ZGV2aWNlOworCWRl dl9pbmZvLT5tYXhfbWFjX2FkZHJzID0gMTsKKwlkZXZfaW5mby0+bWF4X3J4X3F1ZXVlcyA9IHBy aXYtPm1heF9uYl9yeHE7CisJZGV2X2luZm8tPm1heF90eF9xdWV1ZXMgPSBwcml2LT5tYXhfbmJf dHhxOworCWRldl9pbmZvLT5taW5fcnhfYnVmc2l6ZSA9IEdWRV9NSU5fQlVGX1NJWkU7CisJZGV2 X2luZm8tPm1heF9yeF9wa3RsZW4gPSBHVkVfTUFYX1JYX1BLVExFTjsKKwlkZXZfaW5mby0+bWF4 X210dSA9IEdWRV9NQVhfTVRVOworCWRldl9pbmZvLT5taW5fbXR1ID0gR1ZFX01JTl9NVFU7CisK KwlkZXZfaW5mby0+cnhfb2ZmbG9hZF9jYXBhID0gMDsKKwlkZXZfaW5mby0+dHhfb2ZmbG9hZF9j YXBhID0gMDsKKworCWlmIChwcml2LT5xdWV1ZV9mb3JtYXQgPT0gR1ZFX0RRT19SREFfRk9STUFU KQorCQlkZXZfaW5mby0+cnhfb2ZmbG9hZF9jYXBhIHw9IFJURV9FVEhfUlhfT0ZGTE9BRF9UQ1Bf TFJPOworCisJZGV2X2luZm8tPmRlZmF1bHRfcnhjb25mID0gKHN0cnVjdCBydGVfZXRoX3J4Y29u ZikgeworCQkucnhfZnJlZV90aHJlc2ggPSBHVkVfREVGQVVMVF9SWF9GUkVFX1RIUkVTSCwKKwkJ LnJ4X2Ryb3BfZW4gPSAwLAorCQkub2ZmbG9hZHMgPSAwLAorCX07CisKKwlkZXZfaW5mby0+ZGVm YXVsdF90eGNvbmYgPSAoc3RydWN0IHJ0ZV9ldGhfdHhjb25mKSB7CisJCS50eF9mcmVlX3RocmVz aCA9IEdWRV9ERUZBVUxUX1RYX0ZSRUVfVEhSRVNILAorCQkub2ZmbG9hZHMgPSAwLAorCX07CisK KwlkZXZfaW5mby0+ZGVmYXVsdF9yeHBvcnRjb25mLnJpbmdfc2l6ZSA9IHByaXYtPnJ4X2Rlc2Nf Y250OworCWRldl9pbmZvLT5yeF9kZXNjX2xpbSA9IChzdHJ1Y3QgcnRlX2V0aF9kZXNjX2xpbSkg eworCQkubmJfbWF4ID0gcHJpdi0+cnhfZGVzY19jbnQsCisJCS5uYl9taW4gPSBwcml2LT5yeF9k ZXNjX2NudCwKKwkJLm5iX2FsaWduID0gMSwKKwl9OworCisJZGV2X2luZm8tPmRlZmF1bHRfdHhw b3J0Y29uZi5yaW5nX3NpemUgPSBwcml2LT50eF9kZXNjX2NudDsKKwlkZXZfaW5mby0+dHhfZGVz Y19saW0gPSAoc3RydWN0IHJ0ZV9ldGhfZGVzY19saW0pIHsKKwkJLm5iX21heCA9IHByaXYtPnR4 X2Rlc2NfY250LAorCQkubmJfbWluID0gcHJpdi0+dHhfZGVzY19jbnQsCisJCS5uYl9hbGlnbiA9 IDEsCisJfTsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50CiBndmVfZGV2X210dV9zZXQo c3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQxNl90IG10dSkKIHsKQEAgLTEyOCw2ICsxODQs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV0aF9kZXZfb3BzIGd2ZV9ldGhfZGV2X29wcyA9IHsK IAkuZGV2X3N0YXJ0ICAgICAgICAgICAgPSBndmVfZGV2X3N0YXJ0LAogCS5kZXZfc3RvcCAgICAg ICAgICAgICA9IGd2ZV9kZXZfc3RvcCwKIAkuZGV2X2Nsb3NlICAgICAgICAgICAgPSBndmVfZGV2 X2Nsb3NlLAorCS5kZXZfaW5mb3NfZ2V0ICAgICAgICA9IGd2ZV9kZXZfaW5mb19nZXQsCiAJLmxp bmtfdXBkYXRlICAgICAgICAgID0gZ3ZlX2xpbmtfdXBkYXRlLAogCS5tdHVfc2V0ICAgICAgICAg ICAgICA9IGd2ZV9kZXZfbXR1X3NldCwKIH07CmRpZmYgYS9kcml2ZXJzL25ldC9ndmUvZ3ZlX2V0 aGRldi5oIGIvZHJpdmVycy9uZXQvZ3ZlL2d2ZV9ldGhkZXYuaAkocmVqZWN0ZWQgaHVua3MpCkBA IC0xOCw2ICsxOCw5IEBACiAjZGVmaW5lIEdWRV9NSU5fQlVGX1NJWkUJICAgIDEwMjQKICNkZWZp bmUgR1ZFX01BWF9SWF9QS1RMRU4JICAgIDY1NTM1CiAKKyNkZWZpbmUgR1ZFX01BWF9NVFUJUlRF X0VUSEVSX01UVQorI2RlZmluZSBHVkVfTUlOX01UVQlSVEVfRVRIRVJfTUlOX01UVQorCiAvKiBB IGxpc3Qgb2YgcGFnZXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBkZXZpY2UgZHVyaW5nIHNldHVwIGFu ZCB1c2VkIGJ5IGEgcXVldWUKICAqIGFzIGJ1ZmZlcnMKICAqLwpDaGVja2luZyBwYXRjaCBkcml2 ZXJzL25ldC9ndmUvZ3ZlX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJ d3JpdGViKCdcbicsIGRyaXZlcl92ZXJzaW9uX3JlZ2lzdGVyKTsKfQoKc3RhdGljIGludApndmVf ZGV2X2NvbmZpZ3VyZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikKewoKZXJyb3I6IHBhdGNoIGZh aWxlZDogZHJpdmVycy9uZXQvZ3ZlL2d2ZV9ldGhkZXYuYzoyOApIdW5rICMyIHN1Y2NlZWRlZCBh dCAxNDEgKG9mZnNldCAzNyBsaW5lcykuCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgpzdGF0 aWMgaW50Cmd2ZV9kZXZfc3RhcnQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCnsKCWRldi0+ZGF0 YS0+ZGV2X3N0YXJ0ZWQgPSAxOwoJZ3ZlX2xpbmtfdXBkYXRlKGRldiwgMCk7CgoJcmV0dXJuIDA7 Cn0KCnN0YXRpYyBpbnQKZ3ZlX2Rldl9zdG9wKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQp7Cglk ZXYtPmRhdGEtPmRldl9saW5rLmxpbmtfc3RhdHVzID0gUlRFX0VUSF9MSU5LX0RPV047CglkZXYt PmRhdGEtPmRldl9zdGFydGVkID0gMDsKCglyZXR1cm4gMDsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6 IGRyaXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2LmM6NzMKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBm b3I6CnN0YXRpYyBpbnQKZ3ZlX2Rldl9jbG9zZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikKewoJ aW50IGVyciA9IDA7CgoJaWYgKGRldi0+ZGF0YS0+ZGV2X3N0YXJ0ZWQpIHsKCQllcnIgPSBndmVf ZGV2X3N0b3AoZGV2KTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2d2ZS9ndmVf ZXRoZGV2LmM6OTEKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkJCVBNRF9EUlZfTE9HKEVS UiwgIkZhaWxlZCB0byBzdG9wIGRldi4iKTsKCX0KCglkZXYtPmRhdGEtPm1hY19hZGRycyA9IE5V TEw7CgoJcmV0dXJuIGVycjsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2d2ZS9n dmVfZXRoZGV2LmM6OTkKZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkuZGV2X3N0b3AgICAg ICAgICAgICAgPSBndmVfZGV2X3N0b3AsCgkuZGV2X2Nsb3NlICAgICAgICAgICAgPSBndmVfZGV2 X2Nsb3NlLAoJLmRldl9pbmZvc19nZXQgICAgICAgID0gZ3ZlX2Rldl9pbmZvX2dldCwKCS5saW5r X3VwZGF0ZSAgICAgICAgICA9IGd2ZV9saW5rX3VwZGF0ZSwKCS5tdHVfc2V0ICAgICAgICAgICAg ICA9IGd2ZV9kZXZfbXR1X3NldCwKfTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0 L2d2ZS9ndmVfZXRoZGV2LmM6MTg1CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgpzdGF0aWMg aW50Cmd2ZV9pbml0X3ByaXYoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBib29sIHNraXBfZGVzY3Jp YmVfZGV2aWNlKQp7CglpbnQgbnVtX250Znk7CglpbnQgZXJyOwoKCS8qIFNldCB1cCB0aGUgYWRt aW5xICovCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ndmUvZ3ZlX2V0aGRldi5j OjMyMgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCVBNRF9EUlZfTE9HKElORk8sICJNYXgg VFggcXVldWVzICVkLCBNYXggUlggcXVldWVzICVkIiwKCQkgICAgcHJpdi0+bWF4X25iX3R4cSwg cHJpdi0+bWF4X25iX3J4cSk7CgpzZXR1cF9kZXZpY2U6CgllcnIgPSBndmVfc2V0dXBfZGV2aWNl X3Jlc291cmNlcyhwcml2KTsKCWlmICghZXJyKQoJCXJldHVybiAwOwpmcmVlX2FkbWlucToKCWd2 ZV9hZG1pbnFfZnJlZShwcml2KTsKCXJldHVybiBlcnI7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBk cml2ZXJzL25ldC9ndmUvZ3ZlX2V0aGRldi5jOjM3MwpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25l dC9ndmUvZ3ZlX2V0aGRldi5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJc3RydWN0 IGd2ZV90eF9zZWdfZGVzYyBzZWc7IC8qIHN1YnNlcXVlbnQgZGVzY3MgZm9yIGEgcGFja2V0ICov Cn07CgpzdHJ1Y3QgZ3ZlX3R4X3F1ZXVlIHsKCXZvbGF0aWxlIHVuaW9uIGd2ZV90eF9kZXNjICp0 eF9kZXNjX3Jpbmc7Cgljb25zdCBzdHJ1Y3QgcnRlX21lbXpvbmUgKm16OwoJdWludDY0X3QgdHhf cmluZ19waHlzX2FkZHI7CgoJdWludDE2X3QgbmJfdHhfZGVzYzsKCgkvKiBPbmx5IHZhbGlkIGZv ciBEUU9fUVBMIHF1ZXVlIGZvcm1hdCAqLwoJc3RydWN0IGd2ZV9xdWV1ZV9wYWdlX2xpc3QgKnFw bDsKCgl1aW50MTZfdCBwb3J0X2lkOwoJdWludDE2X3QgcXVldWVfaWQ7CgplcnJvcjogcGF0Y2gg ZmFpbGVkOiBkcml2ZXJzL25ldC9ndmUvZ3ZlX2V0aGRldi5oOjM3CmVycm9yOiB3aGlsZSBzZWFy Y2hpbmcgZm9yOgoKCS8qIE9ubHkgdmFsaWQgZm9yIERRT19SREEgcXVldWUgZm9ybWF0ICovCglz dHJ1Y3QgZ3ZlX3R4X3F1ZXVlICpjb21wbHE7Cn07CgpzdHJ1Y3QgZ3ZlX3J4X3F1ZXVlIHsKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2Lmg6NTkKZXJyb3I6 IHdoaWxlIHNlYXJjaGluZyBmb3I6Cgljb25zdCBzdHJ1Y3QgcnRlX21lbXpvbmUgKm16OwoJY29u c3Qgc3RydWN0IHJ0ZV9tZW16b25lICpkYXRhX216OwoJdWludDY0X3QgcnhfcmluZ19waHlzX2Fk ZHI7CgoJdWludDE2X3QgbmJfcnhfZGVzYzsKCgl2b2xhdGlsZSBydGVfYmUzMl90ICpudGZ5X2Fk ZHI7CgoJLyogb25seSB2YWxpZCBmb3IgR1FJX1FQTCBxdWV1ZSBmb3JtYXQgKi8KCmVycm9yOiBw YXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2Lmg6NjcKZXJyb3I6IHdoaWxl IHNlYXJjaGluZyBmb3I6CgoJLyogT25seSB2YWxpZCBmb3IgRFFPX1JEQSBxdWV1ZSBmb3JtYXQg Ki8KCXN0cnVjdCBndmVfcnhfcXVldWUgKmJ1ZnE7Cn07CgpzdHJ1Y3QgZ3ZlX3ByaXYgewoKZXJy b3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvZ3ZlL2d2ZV9ldGhkZXYuaDo4NgplcnJvcjog d2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkJCSZwcml2LT5zdGF0ZV9mbGFncyk7Cn0KCiNlbmRpZiAv KiBfR1ZFX0VUSERFVl9IXyAqLwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvZ3Zl L2d2ZV9ldGhkZXYuaDoyMjUKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZ3ZlL2d2ZV9yeC5j Li4uCmVycm9yOiBkcml2ZXJzL25ldC9ndmUvZ3ZlX3J4LmM6IGFscmVhZHkgZXhpc3RzIGluIGlu ZGV4CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2d2ZS9ndmVfdHguYy4uLgplcnJvcjogZHJp dmVycy9uZXQvZ3ZlL2d2ZV90eC5jOiBhbHJlYWR5IGV4aXN0cyBpbiBpbmRleApDaGVja2luZyBw YXRjaCBkcml2ZXJzL25ldC9ndmUvbWVzb24uYnVpbGQuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGlu ZyBmb3I6Cgpzb3VyY2VzID0gZmlsZXMoCiAgICAgICAgJ2Jhc2UvZ3ZlX2FkbWlucS5jJywKICAg ICAgICAnZ3ZlX2V0aGRldi5jJywKKQppbmNsdWRlcyArPSBpbmNsdWRlX2RpcmVjdG9yaWVzKCdi YXNlJykKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2d2ZS9tZXNvbi5idWlsZDo5 CkFwcGx5aW5nIHBhdGNoIGRyaXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2LmMgd2l0aCA3IHJlamVj dHMuLi4KUmVqZWN0ZWQgaHVuayAjMS4KSHVuayAjMiBhcHBsaWVkIGNsZWFubHkuClJlamVjdGVk IGh1bmsgIzMuClJlamVjdGVkIGh1bmsgIzQuClJlamVjdGVkIGh1bmsgIzUuClJlamVjdGVkIGh1 bmsgIzYuClJlamVjdGVkIGh1bmsgIzcuClJlamVjdGVkIGh1bmsgIzguCkFwcGx5aW5nIHBhdGNo IGRyaXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2Lmggd2l0aCA1IHJlamVjdHMuLi4KUmVqZWN0ZWQg aHVuayAjMS4KUmVqZWN0ZWQgaHVuayAjMi4KUmVqZWN0ZWQgaHVuayAjMy4KUmVqZWN0ZWQgaHVu ayAjNC4KUmVqZWN0ZWQgaHVuayAjNS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZ3ZlL21l c29uLmJ1aWxkIHdpdGggMSByZWplY3QuLi4KUmVqZWN0ZWQgaHVuayAjMS4KZGlmZiBhL2RyaXZl cnMvbmV0L2d2ZS9ndmVfZXRoZGV2LmMgYi9kcml2ZXJzL25ldC9ndmUvZ3ZlX2V0aGRldi5jCShy ZWplY3RlZCBodW5rcykKQEAgLTI4LDYgKzI4LDY4IEBAIGd2ZV93cml0ZV92ZXJzaW9uKHVpbnQ4 X3QgKmRyaXZlcl92ZXJzaW9uX3JlZ2lzdGVyKQogCXdyaXRlYignXG4nLCBkcml2ZXJfdmVyc2lv bl9yZWdpc3Rlcik7CiB9CiAKK3N0YXRpYyBpbnQKK2d2ZV9hbGxvY19xdWV1ZV9wYWdlX2xpc3Qo c3RydWN0IGd2ZV9wcml2ICpwcml2LCB1aW50MzJfdCBpZCwgdWludDMyX3QgcGFnZXMpCit7CisJ Y2hhciB6X25hbWVbUlRFX01FTVpPTkVfTkFNRVNJWkVdOworCXN0cnVjdCBndmVfcXVldWVfcGFn ZV9saXN0ICpxcGw7CisJY29uc3Qgc3RydWN0IHJ0ZV9tZW16b25lICptejsKKwlkbWFfYWRkcl90 IHBhZ2VfYnVzOworCXVpbnQzMl90IGk7CisKKwlpZiAocHJpdi0+bnVtX3JlZ2lzdGVyZWRfcGFn ZXMgKyBwYWdlcyA+CisJICAgIHByaXYtPm1heF9yZWdpc3RlcmVkX3BhZ2VzKSB7CisJCVBNRF9E UlZfTE9HKEVSUiwgIlBhZ2VzICUiIFBSSXU2NCAiID4gbWF4IHJlZ2lzdGVyZWQgcGFnZXMgJSIg UFJJdTY0LAorCQkJICAgIHByaXYtPm51bV9yZWdpc3RlcmVkX3BhZ2VzICsgcGFnZXMsCisJCQkg ICAgcHJpdi0+bWF4X3JlZ2lzdGVyZWRfcGFnZXMpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJ cXBsID0gJnByaXYtPnFwbFtpZF07CisJc25wcmludGYoel9uYW1lLCBzaXplb2Yoel9uYW1lKSwg Imd2ZV8lc19xcGwlZCIsIHByaXYtPnBjaV9kZXYtPmRldmljZS5uYW1lLCBpZCk7CisJbXogPSBy dGVfbWVtem9uZV9yZXNlcnZlX2FsaWduZWQoel9uYW1lLCBwYWdlcyAqIFBBR0VfU0laRSwKKwkJ CQkJIHJ0ZV9zb2NrZXRfaWQoKSwKKwkJCQkJIFJURV9NRU1aT05FX0lPVkFfQ09OVElHLCBQQUdF X1NJWkUpOworCWlmIChteiA9PSBOVUxMKSB7CisJCVBNRF9EUlZfTE9HKEVSUiwgIkZhaWxlZCB0 byBhbGxvYyAlcy4iLCB6X25hbWUpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJcXBsLT5wYWdl X2J1c2VzID0gcnRlX3ptYWxsb2MoInFwbCBwYWdlIGJ1c2VzIiwgcGFnZXMgKiBzaXplb2YoZG1h X2FkZHJfdCksIDApOworCWlmIChxcGwtPnBhZ2VfYnVzZXMgPT0gTlVMTCkgeworCQlQTURfRFJW X0xPRyhFUlIsICJGYWlsZWQgdG8gYWxsb2MgcXBsICV1IHBhZ2UgYnVzZXMiLCBpZCk7CisJCXJl dHVybiAtRU5PTUVNOworCX0KKwlwYWdlX2J1cyA9IG16LT5pb3ZhOworCWZvciAoaSA9IDA7IGkg PCBwYWdlczsgaSsrKSB7CisJCXFwbC0+cGFnZV9idXNlc1tpXSA9IHBhZ2VfYnVzOworCQlwYWdl X2J1cyArPSBQQUdFX1NJWkU7CisJfQorCXFwbC0+aWQgPSBpZDsKKwlxcGwtPm16ID0gbXo7CisJ cXBsLT5udW1fZW50cmllcyA9IHBhZ2VzOworCisJcHJpdi0+bnVtX3JlZ2lzdGVyZWRfcGFnZXMg Kz0gcGFnZXM7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2d2ZV9mcmVlX3FwbHMo c3RydWN0IGd2ZV9wcml2ICpwcml2KQoreworCXVpbnQxNl90IG5iX3R4cXMgPSBwcml2LT5tYXhf bmJfdHhxOworCXVpbnQxNl90IG5iX3J4cXMgPSBwcml2LT5tYXhfbmJfcnhxOworCXVpbnQzMl90 IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbmJfdHhxcyArIG5iX3J4cXM7IGkrKykgeworCQlpZiAo cHJpdi0+cXBsW2ldLm16ICE9IE5VTEwpCisJCQlydGVfbWVtem9uZV9mcmVlKHByaXYtPnFwbFtp XS5teik7CisJCWlmIChwcml2LT5xcGxbaV0ucGFnZV9idXNlcyAhPSBOVUxMKQorCQkJcnRlX2Zy ZWUocHJpdi0+cXBsW2ldLnBhZ2VfYnVzZXMpOworCX0KKworCWlmIChwcml2LT5xcGwgIT0gTlVM TCkKKwkJcnRlX2ZyZWUocHJpdi0+cXBsKTsKK30KKwogc3RhdGljIGludAogZ3ZlX2Rldl9jb25m aWd1cmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCiB7CkBAIC03MywxNiArMTcyLDcwIEBAIGd2 ZV9saW5rX3VwZGF0ZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgX19ydGVfdW51c2VkIGludCB3 YWl0X3RvX2NvbXBsZXRlKQogc3RhdGljIGludAogZ3ZlX2Rldl9zdGFydChzdHJ1Y3QgcnRlX2V0 aF9kZXYgKmRldikKIHsKKwl1aW50MTZfdCBudW1fcXVldWVzID0gZGV2LT5kYXRhLT5uYl90eF9x dWV1ZXM7CisJc3RydWN0IGd2ZV9wcml2ICpwcml2ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsK KwlzdHJ1Y3QgZ3ZlX3R4X3F1ZXVlICp0eHE7CisJc3RydWN0IGd2ZV9yeF9xdWV1ZSAqcnhxOwor CXVpbnQxNl90IGk7CisJaW50IGVycjsKKworCXByaXYtPnR4cXMgPSAoc3RydWN0IGd2ZV90eF9x dWV1ZSAqKilkZXYtPmRhdGEtPnR4X3F1ZXVlczsKKwllcnIgPSBndmVfYWRtaW5xX2NyZWF0ZV90 eF9xdWV1ZXMocHJpdiwgbnVtX3F1ZXVlcyk7CisJaWYgKGVycikgeworCQlQTURfRFJWX0xPRyhF UlIsICJmYWlsZWQgdG8gY3JlYXRlICV1IHR4IHF1ZXVlcy4iLCBudW1fcXVldWVzKTsKKwkJcmV0 dXJuIGVycjsKKwl9CisJZm9yIChpID0gMDsgaSA8IG51bV9xdWV1ZXM7IGkrKykgeworCQl0eHEg PSBwcml2LT50eHFzW2ldOworCQl0eHEtPnF0eF90YWlsID0KKwkJJnByaXYtPmRiX2JhcjJbcnRl X2JlX3RvX2NwdV8zMih0eHEtPnFyZXMtPmRiX2luZGV4KV07CisJCXR4cS0+cXR4X2hlYWQgPQor CQkmcHJpdi0+Y250X2FycmF5W3J0ZV9iZV90b19jcHVfMzIodHhxLT5xcmVzLT5jb3VudGVyX2lu ZGV4KV07CisKKwkJcnRlX3dyaXRlMzIocnRlX2NwdV90b19iZV8zMihHVkVfSVJRX01BU0spLCB0 eHEtPm50ZnlfYWRkcik7CisJfQorCisJbnVtX3F1ZXVlcyA9IGRldi0+ZGF0YS0+bmJfcnhfcXVl dWVzOworCXByaXYtPnJ4cXMgPSAoc3RydWN0IGd2ZV9yeF9xdWV1ZSAqKilkZXYtPmRhdGEtPnJ4 X3F1ZXVlczsKKwllcnIgPSBndmVfYWRtaW5xX2NyZWF0ZV9yeF9xdWV1ZXMocHJpdiwgbnVtX3F1 ZXVlcyk7CisJaWYgKGVycikgeworCQlQTURfRFJWX0xPRyhFUlIsICJmYWlsZWQgdG8gY3JlYXRl ICV1IHJ4IHF1ZXVlcy4iLCBudW1fcXVldWVzKTsKKwkJZ290byBlcnJfdHg7CisJfQorCWZvciAo aSA9IDA7IGkgPCBudW1fcXVldWVzOyBpKyspIHsKKwkJcnhxID0gcHJpdi0+cnhxc1tpXTsKKwkJ cnhxLT5xcnhfdGFpbCA9CisJCSZwcml2LT5kYl9iYXIyW3J0ZV9iZV90b19jcHVfMzIocnhxLT5x cmVzLT5kYl9pbmRleCldOworCisJCXJ0ZV93cml0ZTMyKHJ0ZV9jcHVfdG9fYmVfMzIoR1ZFX0lS UV9NQVNLKSwgcnhxLT5udGZ5X2FkZHIpOworCisJCWVyciA9IGd2ZV9yZWZpbGxfcGFnZXMocnhx KTsKKwkJaWYgKGVycikgeworCQkJUE1EX0RSVl9MT0coRVJSLCAiRmFpbGVkIHRvIHJlZmlsbCBm b3IgUlgiKTsKKwkJCWdvdG8gZXJyX3J4OworCQl9CisJfQorCiAJZGV2LT5kYXRhLT5kZXZfc3Rh cnRlZCA9IDE7CiAJZ3ZlX2xpbmtfdXBkYXRlKGRldiwgMCk7CiAKIAlyZXR1cm4gMDsKKworZXJy X3J4OgorCWd2ZV9zdG9wX3J4X3F1ZXVlcyhkZXYpOworZXJyX3R4OgorCWd2ZV9zdG9wX3R4X3F1 ZXVlcyhkZXYpOworCXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyBpbnQKIGd2ZV9kZXZfc3RvcChz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikKIHsKIAlkZXYtPmRhdGEtPmRldl9saW5rLmxpbmtfc3Rh dHVzID0gUlRFX0VUSF9MSU5LX0RPV047CisKKwlndmVfc3RvcF90eF9xdWV1ZXMoZGV2KTsKKwln dmVfc3RvcF9yeF9xdWV1ZXMoZGV2KTsKKwogCWRldi0+ZGF0YS0+ZGV2X3N0YXJ0ZWQgPSAwOwog CiAJcmV0dXJuIDA7CkBAIC05MSw3ICsyNDQsMTEgQEAgZ3ZlX2Rldl9zdG9wKHN0cnVjdCBydGVf ZXRoX2RldiAqZGV2KQogc3RhdGljIGludAogZ3ZlX2Rldl9jbG9zZShzdHJ1Y3QgcnRlX2V0aF9k ZXYgKmRldikKIHsKKwlzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYgPSBkZXYtPmRhdGEtPmRldl9wcml2 YXRlOworCXN0cnVjdCBndmVfdHhfcXVldWUgKnR4cTsKKwlzdHJ1Y3QgZ3ZlX3J4X3F1ZXVlICpy eHE7CiAJaW50IGVyciA9IDA7CisJdWludDE2X3QgaTsKIAogCWlmIChkZXYtPmRhdGEtPmRldl9z dGFydGVkKSB7CiAJCWVyciA9IGd2ZV9kZXZfc3RvcChkZXYpOwpAQCAtOTksNiArMjU2LDE5IEBA IGd2ZV9kZXZfY2xvc2Uoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpCiAJCQlQTURfRFJWX0xPRyhF UlIsICJGYWlsZWQgdG8gc3RvcCBkZXYuIik7CiAJfQogCisJZm9yIChpID0gMDsgaSA8IGRldi0+ ZGF0YS0+bmJfdHhfcXVldWVzOyBpKyspIHsKKwkJdHhxID0gZGV2LT5kYXRhLT50eF9xdWV1ZXNb aV07CisJCWd2ZV90eF9xdWV1ZV9yZWxlYXNlKHR4cSk7CisJfQorCisJZm9yIChpID0gMDsgaSA8 IGRldi0+ZGF0YS0+bmJfcnhfcXVldWVzOyBpKyspIHsKKwkJcnhxID0gZGV2LT5kYXRhLT5yeF9x dWV1ZXNbaV07CisJCWd2ZV9yeF9xdWV1ZV9yZWxlYXNlKHJ4cSk7CisJfQorCisJZ3ZlX2ZyZWVf cXBscyhwcml2KTsKKwlydGVfZnJlZShwcml2LT5hZG1pbnEpOworCiAJZGV2LT5kYXRhLT5tYWNf YWRkcnMgPSBOVUxMOwogCiAJcmV0dXJuIGVycjsKQEAgLTE4NSw2ICszNTUsOCBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGV0aF9kZXZfb3BzIGd2ZV9ldGhfZGV2X29wcyA9IHsKIAkuZGV2X3N0b3Ag ICAgICAgICAgICAgPSBndmVfZGV2X3N0b3AsCiAJLmRldl9jbG9zZSAgICAgICAgICAgID0gZ3Zl X2Rldl9jbG9zZSwKIAkuZGV2X2luZm9zX2dldCAgICAgICAgPSBndmVfZGV2X2luZm9fZ2V0LAor CS5yeF9xdWV1ZV9zZXR1cCAgICAgICA9IGd2ZV9yeF9xdWV1ZV9zZXR1cCwKKwkudHhfcXVldWVf c2V0dXAgICAgICAgPSBndmVfdHhfcXVldWVfc2V0dXAsCiAJLmxpbmtfdXBkYXRlICAgICAgICAg ID0gZ3ZlX2xpbmtfdXBkYXRlLAogCS5tdHVfc2V0ICAgICAgICAgICAgICA9IGd2ZV9kZXZfbXR1 X3NldCwKIH07CkBAIC0zMjIsNyArNDk0LDkgQEAgZ3ZlX3NldHVwX2RldmljZV9yZXNvdXJjZXMo c3RydWN0IGd2ZV9wcml2ICpwcml2KQogc3RhdGljIGludAogZ3ZlX2luaXRfcHJpdihzdHJ1Y3Qg Z3ZlX3ByaXYgKnByaXYsIGJvb2wgc2tpcF9kZXNjcmliZV9kZXZpY2UpCiB7CisJdWludDE2X3Qg cGFnZXM7CiAJaW50IG51bV9udGZ5OworCXVpbnQzMl90IGk7CiAJaW50IGVycjsKIAogCS8qIFNl dCB1cCB0aGUgYWRtaW5xICovCkBAIC0zNzMsMTAgKzU0Nyw0MCBAQCBndmVfaW5pdF9wcml2KHN0 cnVjdCBndmVfcHJpdiAqcHJpdiwgYm9vbCBza2lwX2Rlc2NyaWJlX2RldmljZSkKIAlQTURfRFJW X0xPRyhJTkZPLCAiTWF4IFRYIHF1ZXVlcyAlZCwgTWF4IFJYIHF1ZXVlcyAlZCIsCiAJCSAgICBw cml2LT5tYXhfbmJfdHhxLCBwcml2LT5tYXhfbmJfcnhxKTsKIAorCS8qIEluIEdRSV9RUEwgcXVl dWUgZm9ybWF0OgorCSAqIEFsbG9jYXRlIHF1ZXVlIHBhZ2UgbGlzdHMgYWNjb3JkaW5nIHRvIG1h eCBxdWV1ZSBudW1iZXIKKwkgKiB0eCBxcGwgaWQgc2hvdWxkIHN0YXJ0IGZyb20gMCB3aGlsZSBy eCBxcGwgaWQgc2hvdWxkIHN0YXJ0CisJICogZnJvbSBwcml2LT5tYXhfbmJfdHhxCisJICovCisJ aWYgKHByaXYtPnF1ZXVlX2Zvcm1hdCA9PSBHVkVfR1FJX1FQTF9GT1JNQVQpIHsKKwkJcHJpdi0+ cXBsID0gcnRlX3ptYWxsb2MoImd2ZV9xcGwiLAorCQkJCQkocHJpdi0+bWF4X25iX3R4cSArIHBy aXYtPm1heF9uYl9yeHEpICoKKwkJCQkJc2l6ZW9mKHN0cnVjdCBndmVfcXVldWVfcGFnZV9saXN0 KSwgMCk7CisJCWlmIChwcml2LT5xcGwgPT0gTlVMTCkgeworCQkJUE1EX0RSVl9MT0coRVJSLCAi RmFpbGVkIHRvIGFsbG9jIHFwbC4iKTsKKwkJCWVyciA9IC1FTk9NRU07CisJCQlnb3RvIGZyZWVf YWRtaW5xOworCQl9CisKKwkJZm9yIChpID0gMDsgaSA8IHByaXYtPm1heF9uYl90eHEgKyBwcml2 LT5tYXhfbmJfcnhxOyBpKyspIHsKKwkJCWlmIChpIDwgcHJpdi0+bWF4X25iX3R4cSkKKwkJCQlw YWdlcyA9IHByaXYtPnR4X3BhZ2VzX3Blcl9xcGw7CisJCQllbHNlCisJCQkJcGFnZXMgPSBwcml2 LT5yeF9kYXRhX3Nsb3RfY250OworCQkJZXJyID0gZ3ZlX2FsbG9jX3F1ZXVlX3BhZ2VfbGlzdChw cml2LCBpLCBwYWdlcyk7CisJCQlpZiAoZXJyICE9IDApIHsKKwkJCQlQTURfRFJWX0xPRyhFUlIs ICJGYWlsZWQgdG8gYWxsb2MgcXBsICV1LiIsIGkpOworCQkJCWdvdG8gZXJyX3FwbDsKKwkJCX0K KwkJfQorCX0KKwogc2V0dXBfZGV2aWNlOgogCWVyciA9IGd2ZV9zZXR1cF9kZXZpY2VfcmVzb3Vy Y2VzKHByaXYpOwogCWlmICghZXJyKQogCQlyZXR1cm4gMDsKK2Vycl9xcGw6CisJZ3ZlX2ZyZWVf cXBscyhwcml2KTsKIGZyZWVfYWRtaW5xOgogCWd2ZV9hZG1pbnFfZnJlZShwcml2KTsKIAlyZXR1 cm4gZXJyOwpkaWZmIGEvZHJpdmVycy9uZXQvZ3ZlL2d2ZV9ldGhkZXYuaCBiL2RyaXZlcnMvbmV0 L2d2ZS9ndmVfZXRoZGV2LmgJKHJlamVjdGVkIGh1bmtzKQpAQCAtMzcsMTUgKzM3LDM1IEBAIHVu aW9uIGd2ZV90eF9kZXNjIHsKIAlzdHJ1Y3QgZ3ZlX3R4X3NlZ19kZXNjIHNlZzsgLyogc3Vic2Vx dWVudCBkZXNjcyBmb3IgYSBwYWNrZXQgKi8KIH07CiAKK3N0cnVjdCBndmVfdHhfaW92ZWMgewor CXVpbnQzMl90IGlvdl9iYXNlOyAvKiBvZmZzZXQgaW4gZmlmbyAqLworCXVpbnQzMl90IGlvdl9s ZW47Cit9OworCiBzdHJ1Y3QgZ3ZlX3R4X3F1ZXVlIHsKIAl2b2xhdGlsZSB1bmlvbiBndmVfdHhf ZGVzYyAqdHhfZGVzY19yaW5nOwogCWNvbnN0IHN0cnVjdCBydGVfbWVtem9uZSAqbXo7CiAJdWlu dDY0X3QgdHhfcmluZ19waHlzX2FkZHI7CisJc3RydWN0IHJ0ZV9tYnVmICoqc3dfcmluZzsKKwl2 b2xhdGlsZSBydGVfYmUzMl90ICpxdHhfdGFpbDsKKwl2b2xhdGlsZSBydGVfYmUzMl90ICpxdHhf aGVhZDsKIAorCXVpbnQzMl90IHR4X3RhaWw7CiAJdWludDE2X3QgbmJfdHhfZGVzYzsKKwl1aW50 MTZfdCBuYl9mcmVlOworCXVpbnQzMl90IG5leHRfdG9fY2xlYW47CisJdWludDE2X3QgZnJlZV90 aHJlc2g7CiAKIAkvKiBPbmx5IHZhbGlkIGZvciBEUU9fUVBMIHF1ZXVlIGZvcm1hdCAqLworCXVp bnQxNl90IHN3X3RhaWw7CisJdWludDE2X3Qgc3dfbnRjOworCXVpbnQxNl90IHN3X25iX2ZyZWU7 CisJdWludDMyX3QgZmlmb19zaXplOworCXVpbnQzMl90IGZpZm9faGVhZDsKKwl1aW50MzJfdCBm aWZvX2F2YWlsOworCXVpbnQ2NF90IGZpZm9fYmFzZTsKIAlzdHJ1Y3QgZ3ZlX3F1ZXVlX3BhZ2Vf bGlzdCAqcXBsOworCXN0cnVjdCBndmVfdHhfaW92ZWMgKmlvdl9yaW5nOwogCiAJdWludDE2X3Qg cG9ydF9pZDsKIAl1aW50MTZfdCBxdWV1ZV9pZDsKQEAgLTU5LDYgKzc5LDggQEAgc3RydWN0IGd2 ZV90eF9xdWV1ZSB7CiAKIAkvKiBPbmx5IHZhbGlkIGZvciBEUU9fUkRBIHF1ZXVlIGZvcm1hdCAq LwogCXN0cnVjdCBndmVfdHhfcXVldWUgKmNvbXBscTsKKworCXVpbnQ4X3QgaXNfZ3FpX3FwbDsK IH07CiAKIHN0cnVjdCBndmVfcnhfcXVldWUgewpAQCAtNjcsOSArODksMTcgQEAgc3RydWN0IGd2 ZV9yeF9xdWV1ZSB7CiAJY29uc3Qgc3RydWN0IHJ0ZV9tZW16b25lICptejsKIAljb25zdCBzdHJ1 Y3QgcnRlX21lbXpvbmUgKmRhdGFfbXo7CiAJdWludDY0X3QgcnhfcmluZ19waHlzX2FkZHI7CisJ c3RydWN0IHJ0ZV9tYnVmICoqc3dfcmluZzsKKwlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wb29sOwog CisJdWludDE2X3QgcnhfdGFpbDsKIAl1aW50MTZfdCBuYl9yeF9kZXNjOworCXVpbnQxNl90IGV4 cGVjdGVkX3NlcW5vOyAvKiB0aGUgbmV4dCBleHBlY3RlZCBzZXFubyAqLworCXVpbnQxNl90IGZy ZWVfdGhyZXNoOworCXVpbnQzMl90IG5leHRfYXZhaWw7CisJdWludDMyX3QgbmJfYXZhaWw7CiAK Kwl2b2xhdGlsZSBydGVfYmUzMl90ICpxcnhfdGFpbDsKIAl2b2xhdGlsZSBydGVfYmUzMl90ICpu dGZ5X2FkZHI7CiAKIAkvKiBvbmx5IHZhbGlkIGZvciBHUUlfUVBMIHF1ZXVlIGZvcm1hdCAqLwpA QCAtODYsNiArMTE2LDggQEAgc3RydWN0IGd2ZV9yeF9xdWV1ZSB7CiAKIAkvKiBPbmx5IHZhbGlk IGZvciBEUU9fUkRBIHF1ZXVlIGZvcm1hdCAqLwogCXN0cnVjdCBndmVfcnhfcXVldWUgKmJ1ZnE7 CisKKwl1aW50OF90IGlzX2dxaV9xcGw7CiB9OwogCiBzdHJ1Y3QgZ3ZlX3ByaXYgewpAQCAtMjI1 LDQgKzI1NywyNCBAQCBndmVfY2xlYXJfZGV2aWNlX3JpbmdzX29rKHN0cnVjdCBndmVfcHJpdiAq cHJpdikKIAkJCQkmcHJpdi0+c3RhdGVfZmxhZ3MpOwogfQogCitpbnQKK2d2ZV9yeF9xdWV1ZV9z ZXR1cChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWludDE2X3QgcXVldWVfaWQsIHVpbnQxNl90 IG5iX2Rlc2MsCisJCSAgIHVuc2lnbmVkIGludCBzb2NrZXRfaWQsIGNvbnN0IHN0cnVjdCBydGVf ZXRoX3J4Y29uZiAqY29uZiwKKwkJICAgc3RydWN0IHJ0ZV9tZW1wb29sICpwb29sKTsKK2ludAor Z3ZlX3R4X3F1ZXVlX3NldHVwKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MTZfdCBxdWV1 ZV9pZCwgdWludDE2X3QgbmJfZGVzYywKKwkJICAgdW5zaWduZWQgaW50IHNvY2tldF9pZCwgY29u c3Qgc3RydWN0IHJ0ZV9ldGhfdHhjb25mICpjb25mKTsKKwordm9pZAorZ3ZlX3R4X3F1ZXVlX3Jl bGVhc2Uodm9pZCAqdHhxKTsKKwordm9pZAorZ3ZlX3J4X3F1ZXVlX3JlbGVhc2Uodm9pZCAqcnhx KTsKKwordm9pZAorZ3ZlX3N0b3BfdHhfcXVldWVzKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsK Kwordm9pZAorZ3ZlX3N0b3BfcnhfcXVldWVzKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsKKwog I2VuZGlmIC8qIF9HVkVfRVRIREVWX0hfICovCmRpZmYgYS9kcml2ZXJzL25ldC9ndmUvbWVzb24u YnVpbGQgYi9kcml2ZXJzL25ldC9ndmUvbWVzb24uYnVpbGQJKHJlamVjdGVkIGh1bmtzKQpAQCAt OSw2ICs5LDggQEAgZW5kaWYKIAogc291cmNlcyA9IGZpbGVzKAogICAgICAgICAnYmFzZS9ndmVf YWRtaW5xLmMnLAorICAgICAgICAnZ3ZlX3J4LmMnLAorICAgICAgICAnZ3ZlX3R4LmMnLAogICAg ICAgICAnZ3ZlX2V0aGRldi5jJywKICkKIGluY2x1ZGVzICs9IGluY2x1ZGVfZGlyZWN0b3JpZXMo J2Jhc2UnKQpDaGVja2luZyBwYXRjaCBkb2MvZ3VpZGVzL25pY3MvZmVhdHVyZXMvZ3ZlLmluaS4u LgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKU3BlZWQgY2FwYWJpbGl0aWVzICAgPSBZCkxp bmsgc3RhdHVzICAgICAgICAgID0gWQpNVFUgdXBkYXRlICAgICAgICAgICA9IFkKUlNTIGhhc2gg ICAgICAgICAgICAgPSBZCkxpbnV4ICAgICAgICAgICAgICAgID0gWQp4ODYtMzIgICAgICAgICAg ICAgICA9IFkKeDg2LTY0ICAgICAgICAgICAgICAgPSBZCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBk b2MvZ3VpZGVzL25pY3MvZmVhdHVyZXMvZ3ZlLmluaTo3CkNoZWNraW5nIHBhdGNoIGRvYy9ndWlk ZXMvbmljcy9ndmUucnN0Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgpyZWNlcHRpb24g YW5kIHRyYW5zbWlzc2lvbi4KU3VwcG9ydGVkIGZlYXR1cmVzIG9mIHRoZSBHVkUgUE1EIGFyZToK Ci0gTGluayBzdGF0ZSBpbmZvcm1hdGlvbgoKQ3VycmVudGx5LCBvbmx5IEdRSV9RUEwgYW5kIEdR SV9SREEgcXVldWUgZm9ybWF0IGFyZSBzdXBwb3J0ZWQgaW4gUE1ELgpKdW1ibyBGcmFtZSBpcyBu b3Qgc3VwcG9ydGVkIGluIFBNRCBmb3Igbm93LiBJdCdsbCBiZSBhZGRlZCBpbiB0aGUgZnV0dXJl CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkb2MvZ3VpZGVzL25pY3MvZ3ZlLnJzdDo2MgpDaGVja2lu ZyBwYXRjaCBkcml2ZXJzL25ldC9ndmUvZ3ZlX2V0aGRldi5jLi4uCmVycm9yOiBkcml2ZXJzL25l dC9ndmUvZ3ZlX2V0aGRldi5jOiBkb2VzIG5vdCBtYXRjaCBpbmRleApDaGVja2luZyBwYXRjaCBk cml2ZXJzL25ldC9ndmUvZ3ZlX2V0aGRldi5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9y OgoJc3RydWN0IGd2ZV90eF9zZWdfZGVzYyBzZWc7IC8qIHN1YnNlcXVlbnQgZGVzY3MgZm9yIGEg cGFja2V0ICovCn07CgpzdHJ1Y3QgZ3ZlX3R4X2lvdmVjIHsKCXVpbnQzMl90IGlvdl9iYXNlOyAv KiBvZmZzZXQgaW4gZmlmbyAqLwoJdWludDMyX3QgaW92X2xlbjsKCmVycm9yOiBwYXRjaCBmYWls ZWQ6IGRyaXZlcnMvbmV0L2d2ZS9ndmVfZXRoZGV2Lmg6MzcKZXJyb3I6IHdoaWxlIHNlYXJjaGlu ZyBmb3I6CnZvaWQKZ3ZlX3N0b3BfcnhfcXVldWVzKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsK CiNlbmRpZiAvKiBfR1ZFX0VUSERFVl9IXyAqLwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVy cy9uZXQvZ3ZlL2d2ZV9ldGhkZXYuaDoyNzcKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZ3Zl L2d2ZV9yeC5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgojaW5jbHVkZSAiZ3ZlX2V0 aGRldi5oIgojaW5jbHVkZSAiYmFzZS9ndmVfYWRtaW5xLmgiCgpzdGF0aWMgaW5saW5lIHZvaWQK Z3ZlX3Jlc2V0X3J4cShzdHJ1Y3QgZ3ZlX3J4X3F1ZXVlICpyeHEpCnsKCmVycm9yOiBwYXRjaCBm YWlsZWQ6IGRyaXZlcnMvbmV0L2d2ZS9ndmVfcnguYzo1CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv bmV0L2d2ZS9ndmVfdHguYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKI2luY2x1ZGUg Imd2ZV9ldGhkZXYuaCIKI2luY2x1ZGUgImJhc2UvZ3ZlX2FkbWlucS5oIgoKc3RhdGljIGlubGlu ZSB2b2lkCmd2ZV9yZXNldF90eHEoc3RydWN0IGd2ZV90eF9xdWV1ZSAqdHhxKQp7CgplcnJvcjog cGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9ndmUvZ3ZlX3R4LmM6NQpBcHBseWluZyBwYXRjaCBk b2MvZ3VpZGVzL25pY3MvZmVhdHVyZXMvZ3ZlLmluaSB3aXRoIDEgcmVqZWN0Li4uClJlamVjdGVk IGh1bmsgIzEuCkFwcGx5aW5nIHBhdGNoIGRvYy9ndWlkZXMvbmljcy9ndmUucnN0IHdpdGggMSBy ZWplY3QuLi4KUmVqZWN0ZWQgaHVuayAjMS4KQXBwbHlpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZ3Zl L2d2ZV9ldGhkZXYuaCB3aXRoIDIgcmVqZWN0cy4uLgpSZWplY3RlZCBodW5rICMxLgpSZWplY3Rl ZCBodW5rICMyLgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9ndmUvZ3ZlX3J4LmMgd2l0aCAx IHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMxLgpBcHBseWluZyBwYXRjaCBkcml2ZXJzL25ldC9n dmUvZ3ZlX3R4LmMgd2l0aCAxIHJlamVjdC4uLgpSZWplY3RlZCBodW5rICMxLgpkaWZmIGEvZG9j L2d1aWRlcy9uaWNzL2ZlYXR1cmVzL2d2ZS5pbmkgYi9kb2MvZ3VpZGVzL25pY3MvZmVhdHVyZXMv Z3ZlLmluaQkocmVqZWN0ZWQgaHVua3MpCkBAIC03LDcgKzcsOSBAQAogU3BlZWQgY2FwYWJpbGl0 aWVzICAgPSBZCiBMaW5rIHN0YXR1cyAgICAgICAgICA9IFkKIE1UVSB1cGRhdGUgICAgICAgICAg ID0gWQorVFNPICAgICAgICAgICAgICAgICAgPSBZCiBSU1MgaGFzaCAgICAgICAgICAgICA9IFkK K0w0IGNoZWNrc3VtIG9mZmxvYWQgID0gWQogTGludXggICAgICAgICAgICAgICAgPSBZCiB4ODYt MzIgICAgICAgICAgICAgICA9IFkKIHg4Ni02NCAgICAgICAgICAgICAgID0gWQpkaWZmIGEvZG9j L2d1aWRlcy9uaWNzL2d2ZS5yc3QgYi9kb2MvZ3VpZGVzL25pY3MvZ3ZlLnJzdAkocmVqZWN0ZWQg aHVua3MpCkBAIC02Miw3ICs2MiwxMSBAQCBJbiB0aGlzIHJlbGVhc2UsIHRoZSBHVkUgUE1EIHBy b3ZpZGVzIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIHBhY2tldAogcmVjZXB0aW9uIGFuZCB0 cmFuc21pc3Npb24uCiBTdXBwb3J0ZWQgZmVhdHVyZXMgb2YgdGhlIEdWRSBQTUQgYXJlOgogCist IE11bHRpcGxlIHF1ZXVlcyBmb3IgVFggYW5kIFJYCistIFRTTyBvZmZsb2FkCiAtIExpbmsgc3Rh dGUgaW5mb3JtYXRpb24KKy0gVFggbXVsdGktc2VnbWVudHMgKFNjYXR0ZXIgVFgpCistIFR4IFVE UC9UQ1AvU0NUUCBDaGVja3N1bQogCiBDdXJyZW50bHksIG9ubHkgR1FJX1FQTCBhbmQgR1FJX1JE QSBxdWV1ZSBmb3JtYXQgYXJlIHN1cHBvcnRlZCBpbiBQTUQuCiBKdW1ibyBGcmFtZSBpcyBub3Qg c3VwcG9ydGVkIGluIFBNRCBmb3Igbm93LiBJdCdsbCBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlCmRp ZmYgYS9kcml2ZXJzL25ldC9ndmUvZ3ZlX2V0aGRldi5oIGIvZHJpdmVycy9uZXQvZ3ZlL2d2ZV9l dGhkZXYuaAkocmVqZWN0ZWQgaHVua3MpCkBAIC0zNyw2ICszNywxOCBAQCB1bmlvbiBndmVfdHhf ZGVzYyB7CiAJc3RydWN0IGd2ZV90eF9zZWdfZGVzYyBzZWc7IC8qIHN1YnNlcXVlbnQgZGVzY3Mg Zm9yIGEgcGFja2V0ICovCiB9OwogCisvKiBPZmZsb2FkIGZlYXR1cmVzICovCit1bmlvbiBndmVf dHhfb2ZmbG9hZCB7CisJdWludDY0X3QgZGF0YTsKKwlzdHJ1Y3QgeworCQl1aW50NjRfdCBsMl9s ZW46NzsgLyogTDIgKE1BQykgSGVhZGVyIExlbmd0aC4gKi8KKwkJdWludDY0X3QgbDNfbGVuOjk7 IC8qIEwzIChJUCkgSGVhZGVyIExlbmd0aC4gKi8KKwkJdWludDY0X3QgbDRfbGVuOjg7IC8qIEw0 IEhlYWRlciBMZW5ndGguICovCisJCXVpbnQ2NF90IHRzb19zZWdzejoxNjsgLyogVENQIFRTTyBz ZWdtZW50IHNpemUgKi8KKwkJLyogdWludDY0X3QgdW51c2VkIDogMjQ7ICovCisJfTsKK307CisK IHN0cnVjdCBndmVfdHhfaW92ZWMgewogCXVpbnQzMl90IGlvdl9iYXNlOyAvKiBvZmZzZXQgaW4g ZmlmbyAqLwogCXVpbnQzMl90IGlvdl9sZW47CkBAIC0yNzcsNCArMjg5LDEwIEBAIGd2ZV9zdG9w X3R4X3F1ZXVlcyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldik7CiB2b2lkCiBndmVfc3RvcF9yeF9x dWV1ZXMoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOwogCit1aW50MTZfdAorZ3ZlX3J4X2J1cnN0 KHZvaWQgKnJ4cSwgc3RydWN0IHJ0ZV9tYnVmICoqcnhfcGt0cywgdWludDE2X3QgbmJfcGt0cyk7 CisKK3VpbnQxNl90CitndmVfdHhfYnVyc3Qodm9pZCAqdHhxLCBzdHJ1Y3QgcnRlX21idWYgKip0 eF9wa3RzLCB1aW50MTZfdCBuYl9wa3RzKTsKKwogI2VuZGlmIC8qIF9HVkVfRVRIREVWX0hfICov CmRpZmYgYS9kcml2ZXJzL25ldC9ndmUvZ3ZlX3J4LmMgYi9kcml2ZXJzL25ldC9ndmUvZ3ZlX3J4 LmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtNSw2ICs1LDE0OCBAQAogI2luY2x1ZGUgImd2ZV9ldGhk ZXYuaCIKICNpbmNsdWRlICJiYXNlL2d2ZV9hZG1pbnEuaCIKIAorc3RhdGljIGlubGluZSB2b2lk CitndmVfcnhfcmVmaWxsKHN0cnVjdCBndmVfcnhfcXVldWUgKnJ4cSkKK3sKKwl1aW50MTZfdCBt YXNrID0gcnhxLT5uYl9yeF9kZXNjIC0gMTsKKwl1aW50MTZfdCBpZHggPSByeHEtPm5leHRfYXZh aWwgJiBtYXNrOworCXVpbnQzMl90IG5leHRfYXZhaWwgPSByeHEtPm5leHRfYXZhaWw7CisJdWlu dDE2X3QgbmJfYWxsb2MsIGk7CisJc3RydWN0IHJ0ZV9tYnVmICpubWI7CisJaW50IGRpYWc7CisK KwkvKiB3cmFwIGFyb3VuZCAqLworCW5iX2FsbG9jID0gcnhxLT5uYl9yeF9kZXNjIC0gaWR4Owor CWlmIChuYl9hbGxvYyA8PSByeHEtPm5iX2F2YWlsKSB7CisJCWRpYWcgPSBydGVfcGt0bWJ1Zl9h bGxvY19idWxrKHJ4cS0+bXBvb2wsICZyeHEtPnN3X3JpbmdbaWR4XSwgbmJfYWxsb2MpOworCQlp ZiAoZGlhZyA8IDApIHsKKwkJCWZvciAoaSA9IDA7IGkgPCBuYl9hbGxvYzsgaSsrKSB7CisJCQkJ bm1iID0gcnRlX3BrdG1idWZfYWxsb2MocnhxLT5tcG9vbCk7CisJCQkJaWYgKCFubWIpCisJCQkJ CWJyZWFrOworCQkJCXJ4cS0+c3dfcmluZ1tpZHggKyBpXSA9IG5tYjsKKwkJCX0KKwkJCWlmIChp ICE9IG5iX2FsbG9jKQorCQkJCW5iX2FsbG9jID0gaTsKKwkJfQorCQlyeHEtPm5iX2F2YWlsIC09 IG5iX2FsbG9jOworCQluZXh0X2F2YWlsICs9IG5iX2FsbG9jOworCisJCS8qIHF1ZXVlIHBhZ2Ug bGlzdCBtb2RlIGRvZXNuJ3QgbmVlZCByZWFsIHJlZmlsbC4gKi8KKwkJaWYgKHJ4cS0+aXNfZ3Fp X3FwbCkgeworCQkJaWR4ICs9IG5iX2FsbG9jOworCQl9IGVsc2UgeworCQkJZm9yIChpID0gMDsg aSA8IG5iX2FsbG9jOyBpKyspIHsKKwkJCQlubWIgPSByeHEtPnN3X3JpbmdbaWR4XTsKKwkJCQly eHEtPnJ4X2RhdGFfcmluZ1tpZHhdLmFkZHIgPQorCQkJCQlydGVfY3B1X3RvX2JlXzY0KHJ0ZV9t YnVmX2RhdGFfaW92YShubWIpKTsKKwkJCQlpZHgrKzsKKwkJCX0KKwkJfQorCQlpZiAoaWR4ID09 IHJ4cS0+bmJfcnhfZGVzYykKKwkJCWlkeCA9IDA7CisJfQorCisJaWYgKHJ4cS0+bmJfYXZhaWwg PiAwKSB7CisJCW5iX2FsbG9jID0gcnhxLT5uYl9hdmFpbDsKKwkJaWYgKHJ4cS0+bmJfcnhfZGVz YyA8IGlkeCArIHJ4cS0+bmJfYXZhaWwpCisJCQluYl9hbGxvYyA9IHJ4cS0+bmJfcnhfZGVzYyAt IGlkeDsKKwkJZGlhZyA9IHJ0ZV9wa3RtYnVmX2FsbG9jX2J1bGsocnhxLT5tcG9vbCwgJnJ4cS0+ c3dfcmluZ1tpZHhdLCBuYl9hbGxvYyk7CisJCWlmIChkaWFnIDwgMCkgeworCQkJZm9yIChpID0g MDsgaSA8IG5iX2FsbG9jOyBpKyspIHsKKwkJCQlubWIgPSBydGVfcGt0bWJ1Zl9hbGxvYyhyeHEt Pm1wb29sKTsKKwkJCQlpZiAoIW5tYikKKwkJCQkJYnJlYWs7CisJCQkJcnhxLT5zd19yaW5nW2lk eCArIGldID0gbm1iOworCQkJfQorCQkJbmJfYWxsb2MgPSBpOworCQl9CisJCXJ4cS0+bmJfYXZh aWwgLT0gbmJfYWxsb2M7CisJCW5leHRfYXZhaWwgKz0gbmJfYWxsb2M7CisKKwkJaWYgKCFyeHEt PmlzX2dxaV9xcGwpIHsKKwkJCWZvciAoaSA9IDA7IGkgPCBuYl9hbGxvYzsgaSsrKSB7CisJCQkJ bm1iID0gcnhxLT5zd19yaW5nW2lkeF07CisJCQkJcnhxLT5yeF9kYXRhX3JpbmdbaWR4XS5hZGRy ID0KKwkJCQkJcnRlX2NwdV90b19iZV82NChydGVfbWJ1Zl9kYXRhX2lvdmEobm1iKSk7CisJCQkJ aWR4Kys7CisJCQl9CisJCX0KKwl9CisKKwlpZiAobmV4dF9hdmFpbCAhPSByeHEtPm5leHRfYXZh aWwpIHsKKwkJcnRlX3dyaXRlMzIocnRlX2NwdV90b19iZV8zMihuZXh0X2F2YWlsKSwgcnhxLT5x cnhfdGFpbCk7CisJCXJ4cS0+bmV4dF9hdmFpbCA9IG5leHRfYXZhaWw7CisJfQorfQorCit1aW50 MTZfdAorZ3ZlX3J4X2J1cnN0KHZvaWQgKnJ4X3F1ZXVlLCBzdHJ1Y3QgcnRlX21idWYgKipyeF9w a3RzLCB1aW50MTZfdCBuYl9wa3RzKQoreworCXZvbGF0aWxlIHN0cnVjdCBndmVfcnhfZGVzYyAq cnhyLCAqcnhkOworCXN0cnVjdCBndmVfcnhfcXVldWUgKnJ4cSA9IHJ4X3F1ZXVlOworCXVpbnQx Nl90IHJ4X2lkID0gcnhxLT5yeF90YWlsOworCXN0cnVjdCBydGVfbWJ1ZiAqcnhlOworCXVpbnQx Nl90IG5iX3J4LCBsZW47CisJdWludDY0X3QgYWRkcjsKKwl1aW50MTZfdCBpOworCisJcnhyID0g cnhxLT5yeF9kZXNjX3Jpbmc7CisJbmJfcnggPSAwOworCisJZm9yIChpID0gMDsgaSA8IG5iX3Br dHM7IGkrKykgeworCQlyeGQgPSAmcnhyW3J4X2lkXTsKKwkJaWYgKEdWRV9TRVFOTyhyeGQtPmZs YWdzX3NlcSkgIT0gcnhxLT5leHBlY3RlZF9zZXFubykKKwkJCWJyZWFrOworCisJCWlmIChyeGQt PmZsYWdzX3NlcSAmIEdWRV9SWEZfRVJSKQorCQkJY29udGludWU7CisKKwkJbGVuID0gcnRlX2Jl X3RvX2NwdV8xNihyeGQtPmxlbikgLSBHVkVfUlhfUEFEOworCQlyeGUgPSByeHEtPnN3X3Jpbmdb cnhfaWRdOworCQlpZiAocnhxLT5pc19ncWlfcXBsKSB7CisJCQlhZGRyID0gKHVpbnQ2NF90KShy eHEtPnFwbC0+bXotPmFkZHIpICsgcnhfaWQgKiBQQUdFX1NJWkUgKyBHVkVfUlhfUEFEOworCQkJ cnRlX21lbWNweSgodm9pZCAqKSgoc2l6ZV90KXJ4ZS0+YnVmX2FkZHIgKyByeGUtPmRhdGFfb2Zm KSwKKwkJCQkgICAodm9pZCAqKShzaXplX3QpYWRkciwgbGVuKTsKKwkJfQorCQlyeGUtPnBrdF9s ZW4gPSBsZW47CisJCXJ4ZS0+ZGF0YV9sZW4gPSBsZW47CisJCXJ4ZS0+cG9ydCA9IHJ4cS0+cG9y dF9pZDsKKwkJcnhlLT5vbF9mbGFncyA9IDA7CisKKwkJaWYgKHJ4ZC0+ZmxhZ3Nfc2VxICYgR1ZF X1JYRl9UQ1ApCisJCQlyeGUtPnBhY2tldF90eXBlIHw9IFJURV9QVFlQRV9MNF9UQ1A7CisJCWlm IChyeGQtPmZsYWdzX3NlcSAmIEdWRV9SWEZfVURQKQorCQkJcnhlLT5wYWNrZXRfdHlwZSB8PSBS VEVfUFRZUEVfTDRfVURQOworCQlpZiAocnhkLT5mbGFnc19zZXEgJiBHVkVfUlhGX0lQVjQpCisJ CQlyeGUtPnBhY2tldF90eXBlIHw9IFJURV9QVFlQRV9MM19JUFY0OworCQlpZiAocnhkLT5mbGFn c19zZXEgJiBHVkVfUlhGX0lQVjYpCisJCQlyeGUtPnBhY2tldF90eXBlIHw9IFJURV9QVFlQRV9M M19JUFY2OworCisJCWlmIChndmVfbmVlZHNfcnNzKHJ4ZC0+ZmxhZ3Nfc2VxKSkgeworCQkJcnhl LT5vbF9mbGFncyB8PSBSVEVfTUJVRl9GX1JYX1JTU19IQVNIOworCQkJcnhlLT5oYXNoLnJzcyA9 IHJ0ZV9iZV90b19jcHVfMzIocnhkLT5yc3NfaGFzaCk7CisJCX0KKworCQlyeHEtPmV4cGVjdGVk X3NlcW5vID0gZ3ZlX25leHRfc2Vxbm8ocnhxLT5leHBlY3RlZF9zZXFubyk7CisKKwkJcnhfaWQr KzsKKwkJaWYgKHJ4X2lkID09IHJ4cS0+bmJfcnhfZGVzYykKKwkJCXJ4X2lkID0gMDsKKworCQly eF9wa3RzW25iX3J4XSA9IHJ4ZTsKKwkJbmJfcngrKzsKKwl9CisKKwlyeHEtPm5iX2F2YWlsICs9 IG5iX3J4OworCXJ4cS0+cnhfdGFpbCA9IHJ4X2lkOworCisJaWYgKHJ4cS0+bmJfYXZhaWwgPiBy eHEtPmZyZWVfdGhyZXNoKQorCQlndmVfcnhfcmVmaWxsKHJ4cSk7CisKKwlyZXR1cm4gbmJfcng7 Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZAogZ3ZlX3Jlc2V0X3J4cShzdHJ1Y3QgZ3ZlX3J4X3F1 ZXVlICpyeHEpCiB7CmRpZmYgYS9kcml2ZXJzL25ldC9ndmUvZ3ZlX3R4LmMgYi9kcml2ZXJzL25l dC9ndmUvZ3ZlX3R4LmMJKHJlamVjdGVkIGh1bmtzKQpAQCAtNSw2ICs1LDQ2MSBAQAogI2luY2x1 ZGUgImd2ZV9ldGhkZXYuaCIKICNpbmNsdWRlICJiYXNlL2d2ZV9hZG1pbnEuaCIKIAorc3RhdGlj IGlubGluZSB2b2lkCitndmVfZnJlZV9idWxrX21idWYoc3RydWN0IHJ0ZV9tYnVmICoqdHhlcCwg aW50IG51bSkKK3sKKwlzdHJ1Y3QgcnRlX21idWYgKm0sICpmcmVlW0dWRV9UWF9NQVhfRlJFRV9T Wl07CisJaW50IG5iX2ZyZWUgPSAwOworCWludCBpLCBzOworCisJaWYgKHVubGlrZWx5KG51bSA9 PSAwKSkKKwkJcmV0dXJuOworCisJLyogRmluZCB0aGUgMXN0IG1idWYgd2hpY2ggbmVlZHMgdG8g YmUgZnJlZSAqLworCWZvciAocyA9IDA7IHMgPCBudW07IHMrKykgeworCQlpZiAodHhlcFtzXSAh PSBOVUxMKSB7CisJCQltID0gcnRlX3BrdG1idWZfcHJlZnJlZV9zZWcodHhlcFtzXSk7CisJCQlp ZiAobSAhPSBOVUxMKQorCQkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKHMgPT0gbnVtKQorCQly ZXR1cm47CisKKwlmcmVlWzBdID0gbTsKKwluYl9mcmVlID0gMTsKKwlmb3IgKGkgPSBzICsgMTsg aSA8IG51bTsgaSsrKSB7CisJCWlmIChsaWtlbHkodHhlcFtpXSAhPSBOVUxMKSkgeworCQkJbSA9 IHJ0ZV9wa3RtYnVmX3ByZWZyZWVfc2VnKHR4ZXBbaV0pOworCQkJaWYgKGxpa2VseShtICE9IE5V TEwpKSB7CisJCQkJaWYgKGxpa2VseShtLT5wb29sID09IGZyZWVbMF0tPnBvb2wpKSB7CisJCQkJ CWZyZWVbbmJfZnJlZSsrXSA9IG07CisJCQkJfSBlbHNlIHsKKwkJCQkJcnRlX21lbXBvb2xfcHV0 X2J1bGsoZnJlZVswXS0+cG9vbCwgKHZvaWQgKilmcmVlLCBuYl9mcmVlKTsKKwkJCQkJZnJlZVsw XSA9IG07CisJCQkJCW5iX2ZyZWUgPSAxOworCQkJCX0KKwkJCX0KKwkJCXR4ZXBbaV0gPSBOVUxM OworCQl9CisJfQorCXJ0ZV9tZW1wb29sX3B1dF9idWxrKGZyZWVbMF0tPnBvb2wsICh2b2lkICoq KWZyZWUsIG5iX2ZyZWUpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK2d2ZV90eF9jbGVhbihz dHJ1Y3QgZ3ZlX3R4X3F1ZXVlICp0eHEpCit7CisJdWludDE2X3QgbWFzayA9IHR4cS0+bmJfdHhf ZGVzYyAtIDE7CisJdWludDMyX3Qgc3RhcnQgPSB0eHEtPm5leHRfdG9fY2xlYW4gJiBtYXNrOwor CXVpbnQzMl90IG50YywgbmJfY2xlYW4sIGk7CisJc3RydWN0IGd2ZV90eF9pb3ZlYyAqaW92Owor CisJbnRjID0gcnRlX2JlX3RvX2NwdV8zMihydGVfcmVhZDMyKHR4cS0+cXR4X2hlYWQpKTsKKwlu dGMgPSBudGMgJiBtYXNrOworCisJaWYgKG50YyA9PSBzdGFydCkKKwkJcmV0dXJuOworCisJLyog aWYgd3JhcCBhcm91bmQsIGZyZWUgdHdpY2UuICovCisJaWYgKG50YyA8IHN0YXJ0KSB7CisJCW5i X2NsZWFuID0gdHhxLT5uYl90eF9kZXNjIC0gc3RhcnQ7CisJCWlmIChuYl9jbGVhbiA+IEdWRV9U WF9NQVhfRlJFRV9TWikKKwkJCW5iX2NsZWFuID0gR1ZFX1RYX01BWF9GUkVFX1NaOworCQlpZiAo dHhxLT5pc19ncWlfcXBsKSB7CisJCQlmb3IgKGkgPSBzdGFydDsgaSA8IHN0YXJ0ICsgbmJfY2xl YW47IGkrKykgeworCQkJCWlvdiA9ICZ0eHEtPmlvdl9yaW5nW2ldOworCQkJCXR4cS0+Zmlmb19h dmFpbCArPSBpb3YtPmlvdl9sZW47CisJCQkJaW92LT5pb3ZfYmFzZSA9IDA7CisJCQkJaW92LT5p b3ZfbGVuID0gMDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWd2ZV9mcmVlX2J1bGtfbWJ1ZigmdHhx LT5zd19yaW5nW3N0YXJ0XSwgbmJfY2xlYW4pOworCQl9CisJCXR4cS0+bmJfZnJlZSArPSBuYl9j bGVhbjsKKwkJc3RhcnQgKz0gbmJfY2xlYW47CisJCWlmIChzdGFydCA9PSB0eHEtPm5iX3R4X2Rl c2MpCisJCQlzdGFydCA9IDA7CisJCXR4cS0+bmV4dF90b19jbGVhbiArPSBuYl9jbGVhbjsKKwl9 CisKKwlpZiAobnRjID4gc3RhcnQpIHsKKwkJbmJfY2xlYW4gPSBudGMgLSBzdGFydDsKKwkJaWYg KG5iX2NsZWFuID4gR1ZFX1RYX01BWF9GUkVFX1NaKQorCQkJbmJfY2xlYW4gPSBHVkVfVFhfTUFY X0ZSRUVfU1o7CisJCWlmICh0eHEtPmlzX2dxaV9xcGwpIHsKKwkJCWZvciAoaSA9IHN0YXJ0OyBp IDwgc3RhcnQgKyBuYl9jbGVhbjsgaSsrKSB7CisJCQkJaW92ID0gJnR4cS0+aW92X3JpbmdbaV07 CisJCQkJdHhxLT5maWZvX2F2YWlsICs9IGlvdi0+aW92X2xlbjsKKwkJCQlpb3YtPmlvdl9iYXNl ID0gMDsKKwkJCQlpb3YtPmlvdl9sZW4gPSAwOworCQkJfQorCQl9IGVsc2UgeworCQkJZ3ZlX2Zy ZWVfYnVsa19tYnVmKCZ0eHEtPnN3X3Jpbmdbc3RhcnRdLCBuYl9jbGVhbik7CisJCX0KKwkJdHhx LT5uYl9mcmVlICs9IG5iX2NsZWFuOworCQl0eHEtPm5leHRfdG9fY2xlYW4gKz0gbmJfY2xlYW47 CisJfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK2d2ZV90eF9jbGVhbl9zd3JfcXBsKHN0cnVj dCBndmVfdHhfcXVldWUgKnR4cSkKK3sKKwl1aW50MzJfdCBzdGFydCA9IHR4cS0+c3dfbnRjOwor CXVpbnQzMl90IG50YywgbmJfY2xlYW47CisKKwludGMgPSB0eHEtPnN3X3RhaWw7CisKKwlpZiAo bnRjID09IHN0YXJ0KQorCQlyZXR1cm47CisKKwkvKiBpZiB3cmFwIGFyb3VuZCwgZnJlZSB0d2lj ZS4gKi8KKwlpZiAobnRjIDwgc3RhcnQpIHsKKwkJbmJfY2xlYW4gPSB0eHEtPm5iX3R4X2Rlc2Mg LSBzdGFydDsKKwkJaWYgKG5iX2NsZWFuID4gR1ZFX1RYX01BWF9GUkVFX1NaKQorCQkJbmJfY2xl YW4gPSBHVkVfVFhfTUFYX0ZSRUVfU1o7CisJCWd2ZV9mcmVlX2J1bGtfbWJ1ZigmdHhxLT5zd19y aW5nW3N0YXJ0XSwgbmJfY2xlYW4pOworCisJCXR4cS0+c3dfbmJfZnJlZSArPSBuYl9jbGVhbjsK KwkJc3RhcnQgKz0gbmJfY2xlYW47CisJCWlmIChzdGFydCA9PSB0eHEtPm5iX3R4X2Rlc2MpCisJ CQlzdGFydCA9IDA7CisJCXR4cS0+c3dfbnRjID0gc3RhcnQ7CisJfQorCisJaWYgKG50YyA+IHN0 YXJ0KSB7CisJCW5iX2NsZWFuID0gbnRjIC0gc3RhcnQ7CisJCWlmIChuYl9jbGVhbiA+IEdWRV9U WF9NQVhfRlJFRV9TWikKKwkJCW5iX2NsZWFuID0gR1ZFX1RYX01BWF9GUkVFX1NaOworCQlndmVf ZnJlZV9idWxrX21idWYoJnR4cS0+c3dfcmluZ1tzdGFydF0sIG5iX2NsZWFuKTsKKwkJdHhxLT5z d19uYl9mcmVlICs9IG5iX2NsZWFuOworCQlzdGFydCArPSBuYl9jbGVhbjsKKwkJdHhxLT5zd19u dGMgPSBzdGFydDsKKwl9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorZ3ZlX3R4X2ZpbGxfcGt0 X2Rlc2Modm9sYXRpbGUgdW5pb24gZ3ZlX3R4X2Rlc2MgKmRlc2MsIHN0cnVjdCBydGVfbWJ1ZiAq bWJ1ZiwKKwkJICAgICB1aW50OF90IGRlc2NfY250LCB1aW50MTZfdCBsZW4sIHVpbnQ2NF90IGFk ZHIpCit7CisJdWludDY0X3QgY3N1bV9sNCA9IG1idWYtPm9sX2ZsYWdzICYgUlRFX01CVUZfRl9U WF9MNF9NQVNLOworCXVpbnQ4X3QgbDRfY3N1bV9vZmZzZXQgPSAwOworCXVpbnQ4X3QgbDRfaGRy X29mZnNldCA9IDA7CisKKwlpZiAobWJ1Zi0+b2xfZmxhZ3MgJiBSVEVfTUJVRl9GX1RYX1RDUF9T RUcpCisJCWNzdW1fbDQgfD0gUlRFX01CVUZfRl9UWF9UQ1BfQ0tTVU07CisKKwlzd2l0Y2ggKGNz dW1fbDQpIHsKKwljYXNlIFJURV9NQlVGX0ZfVFhfVENQX0NLU1VNOgorCQlsNF9jc3VtX29mZnNl dCA9IG9mZnNldG9mKHN0cnVjdCBydGVfdGNwX2hkciwgY2tzdW0pOworCQlsNF9oZHJfb2Zmc2V0 ID0gbWJ1Zi0+bDJfbGVuICsgbWJ1Zi0+bDNfbGVuOworCQlicmVhazsKKwljYXNlIFJURV9NQlVG X0ZfVFhfVURQX0NLU1VNOgorCQlsNF9jc3VtX29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBydGVf dWRwX2hkciwgZGdyYW1fY2tzdW0pOworCQlsNF9oZHJfb2Zmc2V0ID0gbWJ1Zi0+bDJfbGVuICsg bWJ1Zi0+bDNfbGVuOworCQlicmVhazsKKwljYXNlIFJURV9NQlVGX0ZfVFhfU0NUUF9DS1NVTToK KwkJbDRfY3N1bV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgcnRlX3NjdHBfaGRyLCBja3N1bSk7 CisJCWw0X2hkcl9vZmZzZXQgPSBtYnVmLT5sMl9sZW4gKyBtYnVmLT5sM19sZW47CisJCWJyZWFr OworCX0KKworCWlmIChtYnVmLT5vbF9mbGFncyAmIFJURV9NQlVGX0ZfVFhfVENQX1NFRykgewor CQlkZXNjLT5wa3QudHlwZV9mbGFncyA9IEdWRV9UWERfVFNPIHwgR1ZFX1RYRl9MNENTVU07CisJ CWRlc2MtPnBrdC5sNF9jc3VtX29mZnNldCA9IGw0X2NzdW1fb2Zmc2V0ID4+IDE7CisJCWRlc2Mt PnBrdC5sNF9oZHJfb2Zmc2V0ID0gbDRfaGRyX29mZnNldCA+PiAxOworCX0gZWxzZSBpZiAobWJ1 Zi0+b2xfZmxhZ3MgJiBSVEVfTUJVRl9GX1RYX0w0X01BU0spIHsKKwkJZGVzYy0+cGt0LnR5cGVf ZmxhZ3MgPSBHVkVfVFhEX1NURCB8IEdWRV9UWEZfTDRDU1VNOworCQlkZXNjLT5wa3QubDRfY3N1 bV9vZmZzZXQgPSBsNF9jc3VtX29mZnNldCA+PiAxOworCQlkZXNjLT5wa3QubDRfaGRyX29mZnNl dCA9IGw0X2hkcl9vZmZzZXQgPj4gMTsKKwl9IGVsc2UgeworCQlkZXNjLT5wa3QudHlwZV9mbGFn cyA9IEdWRV9UWERfU1REOworCQlkZXNjLT5wa3QubDRfY3N1bV9vZmZzZXQgPSAwOworCQlkZXNj LT5wa3QubDRfaGRyX29mZnNldCA9IDA7CisJfQorCWRlc2MtPnBrdC5kZXNjX2NudCA9IGRlc2Nf Y250OworCWRlc2MtPnBrdC5sZW4gPSBydGVfY3B1X3RvX2JlXzE2KG1idWYtPnBrdF9sZW4pOwor CWRlc2MtPnBrdC5zZWdfbGVuID0gcnRlX2NwdV90b19iZV8xNihsZW4pOworCWRlc2MtPnBrdC5z ZWdfYWRkciA9IHJ0ZV9jcHVfdG9fYmVfNjQoYWRkcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p ZAorZ3ZlX3R4X2ZpbGxfc2VnX2Rlc2Modm9sYXRpbGUgdW5pb24gZ3ZlX3R4X2Rlc2MgKmRlc2Ms IHVpbnQ2NF90IG9sX2ZsYWdzLAorCQkgICAgICB1bmlvbiBndmVfdHhfb2ZmbG9hZCB0eF9vZmZs b2FkLAorCQkgICAgICB1aW50MTZfdCBsZW4sIHVpbnQ2NF90IGFkZHIpCit7CisJZGVzYy0+c2Vn LnR5cGVfZmxhZ3MgPSBHVkVfVFhEX1NFRzsKKwlpZiAob2xfZmxhZ3MgJiBSVEVfTUJVRl9GX1RY X1RDUF9TRUcpIHsKKwkJaWYgKG9sX2ZsYWdzICYgUlRFX01CVUZfRl9UWF9JUFY2KQorCQkJZGVz Yy0+c2VnLnR5cGVfZmxhZ3MgfD0gR1ZFX1RYU0ZfSVBWNjsKKwkJZGVzYy0+c2VnLmwzX29mZnNl dCA9IHR4X29mZmxvYWQubDJfbGVuID4+IDE7CisJCWRlc2MtPnNlZy5tc3MgPSBydGVfY3B1X3Rv X2JlXzE2KHR4X29mZmxvYWQudHNvX3NlZ3N6KTsKKwl9CisJZGVzYy0+c2VnLnNlZ19sZW4gPSBy dGVfY3B1X3RvX2JlXzE2KGxlbik7CisJZGVzYy0+c2VnLnNlZ19hZGRyID0gcnRlX2NwdV90b19i ZV82NChhZGRyKTsKK30KKworc3RhdGljIGlubGluZSBib29sCitpc19maWZvX2F2YWlsKHN0cnVj dCBndmVfdHhfcXVldWUgKnR4cSwgdWludDE2X3QgbGVuKQoreworCWlmICh0eHEtPmZpZm9fYXZh aWwgPCBsZW4pCisJCXJldHVybiBmYWxzZTsKKwkvKiBEb24ndCBzcGxpdCBzZWdtZW50LiAqLwor CWlmICh0eHEtPmZpZm9faGVhZCArIGxlbiA+IHR4cS0+Zmlmb19zaXplICYmCisJICAgIHR4cS0+ Zmlmb19zaXplIC0gdHhxLT5maWZvX2hlYWQgKyBsZW4gPiB0eHEtPmZpZm9fYXZhaWwpCisJCXJl dHVybiBmYWxzZTsKKwlyZXR1cm4gdHJ1ZTsKK30KK3N0YXRpYyBpbmxpbmUgdWludDY0X3QKK2d2 ZV90eF9hbGxvY19mcm9tX2ZpZm8oc3RydWN0IGd2ZV90eF9xdWV1ZSAqdHhxLCB1aW50MTZfdCB0 eF9pZCwgdWludDE2X3QgbGVuKQoreworCXVpbnQzMl90IGhlYWQgPSB0eHEtPmZpZm9faGVhZDsK Kwl1aW50MzJfdCBzaXplID0gdHhxLT5maWZvX3NpemU7CisJc3RydWN0IGd2ZV90eF9pb3ZlYyAq aW92OworCXVpbnQzMl90IGFsaWduZWRfaGVhZDsKKwl1aW50MzJfdCBpb3ZfbGVuID0gMDsKKwl1 aW50NjRfdCBmaWZvX2FkZHI7CisKKwlpb3YgPSAmdHhxLT5pb3ZfcmluZ1t0eF9pZF07CisKKwkv KiBEb24ndCBzcGxpdCBzZWdtZW50ICovCisJaWYgKGhlYWQgKyBsZW4gPiBzaXplKSB7CisJCWlv dl9sZW4gKz0gKHNpemUgLSBoZWFkKTsKKwkJaGVhZCA9IDA7CisJfQorCisJZmlmb19hZGRyID0g aGVhZDsKKwlpb3ZfbGVuICs9IGxlbjsKKwlpb3YtPmlvdl9iYXNlID0gaGVhZDsKKworCS8qIFJl LWFsaWduIHRvIGEgY2FjaGVsaW5lIGZvciBuZXh0IGhlYWQgKi8KKwloZWFkICs9IGxlbjsKKwlh bGlnbmVkX2hlYWQgPSBSVEVfQUxJR04oaGVhZCwgUlRFX0NBQ0hFX0xJTkVfU0laRSk7CisJaW92 X2xlbiArPSAoYWxpZ25lZF9oZWFkIC0gaGVhZCk7CisJaW92LT5pb3ZfbGVuID0gaW92X2xlbjsK KworCWlmIChhbGlnbmVkX2hlYWQgPT0gdHhxLT5maWZvX3NpemUpCisJCWFsaWduZWRfaGVhZCA9 IDA7CisJdHhxLT5maWZvX2hlYWQgPSBhbGlnbmVkX2hlYWQ7CisJdHhxLT5maWZvX2F2YWlsIC09 IGlvdl9sZW47CisKKwlyZXR1cm4gZmlmb19hZGRyOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQx Nl90CitndmVfdHhfYnVyc3RfcXBsKHZvaWQgKnR4X3F1ZXVlLCBzdHJ1Y3QgcnRlX21idWYgKip0 eF9wa3RzLCB1aW50MTZfdCBuYl9wa3RzKQoreworCXVuaW9uIGd2ZV90eF9vZmZsb2FkIHR4X29m ZmxvYWQgPSB7MH07CisJdm9sYXRpbGUgdW5pb24gZ3ZlX3R4X2Rlc2MgKnR4ciwgKnR4ZDsKKwlz dHJ1Y3QgZ3ZlX3R4X3F1ZXVlICp0eHEgPSB0eF9xdWV1ZTsKKwlzdHJ1Y3QgcnRlX21idWYgKipz d19yaW5nID0gdHhxLT5zd19yaW5nOworCXVpbnQxNl90IG1hc2sgPSB0eHEtPm5iX3R4X2Rlc2Mg LSAxOworCXVpbnQxNl90IHR4X2lkID0gdHhxLT50eF90YWlsICYgbWFzazsKKwl1aW50NjRfdCBv bF9mbGFncywgYWRkciwgZmlmb19hZGRyOworCXVpbnQzMl90IHR4X3RhaWwgPSB0eHEtPnR4X3Rh aWw7CisJc3RydWN0IHJ0ZV9tYnVmICp0eF9wa3QsICpmaXJzdDsKKwl1aW50MTZfdCBzd19pZCA9 IHR4cS0+c3dfdGFpbDsKKwl1aW50MTZfdCBuYl91c2VkLCBpOworCXVpbnQxNl90IG5iX3R4ID0g MDsKKwl1aW50MzJfdCBobGVuOworCisJdHhyID0gdHhxLT50eF9kZXNjX3Jpbmc7CisKKwlpZiAo dHhxLT5uYl9mcmVlIDwgdHhxLT5mcmVlX3RocmVzaCB8fCB0eHEtPmZpZm9fYXZhaWwgPT0gMCkK KwkJZ3ZlX3R4X2NsZWFuKHR4cSk7CisKKwlpZiAodHhxLT5zd19uYl9mcmVlIDwgdHhxLT5mcmVl X3RocmVzaCkKKwkJZ3ZlX3R4X2NsZWFuX3N3cl9xcGwodHhxKTsKKworCWZvciAobmJfdHggPSAw OyBuYl90eCA8IG5iX3BrdHM7IG5iX3R4KyspIHsKKwkJdHhfcGt0ID0gKnR4X3BrdHMrKzsKKwkJ b2xfZmxhZ3MgPSB0eF9wa3QtPm9sX2ZsYWdzOworCisJCWlmICh0eHEtPnN3X25iX2ZyZWUgPCB0 eF9wa3QtPm5iX3NlZ3MpIHsKKwkJCWd2ZV90eF9jbGVhbl9zd3JfcXBsKHR4cSk7CisJCQlpZiAo dHhxLT5zd19uYl9mcmVlIDwgdHhfcGt0LT5uYl9zZWdzKQorCQkJCWdvdG8gZW5kX29mX3R4Owor CQl9CisKKwkJLyogRXZlbiBmb3IgbXVsdGktc2VncywgdXNlIDEgcXBsIGJ1ZiBmb3IgZGF0YSAq LworCQluYl91c2VkID0gMTsKKwkJaWYgKG9sX2ZsYWdzICYgUlRFX01CVUZfRl9UWF9UQ1BfU0VH KQorCQkJbmJfdXNlZCsrOworCisJCWlmICh0eHEtPm5iX2ZyZWUgPCBuYl91c2VkKQorCQkJZ290 byBlbmRfb2ZfdHg7CisKKwkJdHhfb2ZmbG9hZC5sMl9sZW4gPSB0eF9wa3QtPmwyX2xlbjsKKwkJ dHhfb2ZmbG9hZC5sM19sZW4gPSB0eF9wa3QtPmwzX2xlbjsKKwkJdHhfb2ZmbG9hZC5sNF9sZW4g PSB0eF9wa3QtPmw0X2xlbjsKKwkJdHhfb2ZmbG9hZC50c29fc2Vnc3ogPSB0eF9wa3QtPnRzb19z ZWdzejsKKworCQlmaXJzdCA9IHR4X3BrdDsKKwkJdHhkID0gJnR4clt0eF9pZF07CisJCWhsZW4g PSBvbF9mbGFncyAmIFJURV9NQlVGX0ZfVFhfVENQX1NFRyA/CisJCQkodWludDMyX3QpKHR4X29m ZmxvYWQubDJfbGVuICsgdHhfb2ZmbG9hZC5sM19sZW4gKyB0eF9vZmZsb2FkLmw0X2xlbikgOgor CQkJdHhfcGt0LT5wa3RfbGVuOworCisJCXN3X3Jpbmdbc3dfaWRdID0gdHhfcGt0OworCQlpZiAo IWlzX2ZpZm9fYXZhaWwodHhxLCBobGVuKSkgeworCQkJZ3ZlX3R4X2NsZWFuKHR4cSk7CisJCQlp ZiAoIWlzX2ZpZm9fYXZhaWwodHhxLCBobGVuKSkKKwkJCQlnb3RvIGVuZF9vZl90eDsKKwkJfQor CQlhZGRyID0gKHVpbnQ2NF90KSh0eF9wa3QtPmJ1Zl9hZGRyKSArIHR4X3BrdC0+ZGF0YV9vZmY7 CisJCWZpZm9fYWRkciA9IGd2ZV90eF9hbGxvY19mcm9tX2ZpZm8odHhxLCB0eF9pZCwgaGxlbik7 CisKKwkJLyogRm9yIFRTTywgY2hlY2sgaWYgdGhlcmUncyBlbm91Z2ggZmlmbyBzcGFjZSBmb3Ig ZGF0YSBmaXJzdCAqLworCQlpZiAob2xfZmxhZ3MgJiBSVEVfTUJVRl9GX1RYX1RDUF9TRUcpIHsK KwkJCWlmICghaXNfZmlmb19hdmFpbCh0eHEsIHR4X3BrdC0+cGt0X2xlbiAtIGhsZW4pKSB7CisJ CQkJZ3ZlX3R4X2NsZWFuKHR4cSk7CisJCQkJaWYgKCFpc19maWZvX2F2YWlsKHR4cSwgdHhfcGt0 LT5wa3RfbGVuIC0gaGxlbikpCisJCQkJCWdvdG8gZW5kX29mX3R4OworCQkJfQorCQl9CisJCWlm ICh0eF9wa3QtPm5iX3NlZ3MgPT0gMSB8fCBvbF9mbGFncyAmIFJURV9NQlVGX0ZfVFhfVENQX1NF RykKKwkJCXJ0ZV9tZW1jcHkoKHZvaWQgKikoc2l6ZV90KShmaWZvX2FkZHIgKyB0eHEtPmZpZm9f YmFzZSksCisJCQkJICAgKHZvaWQgKikoc2l6ZV90KWFkZHIsIGhsZW4pOworCQllbHNlCisJCQly dGVfcGt0bWJ1Zl9yZWFkKHR4X3BrdCwgMCwgaGxlbiwKKwkJCQkJICh2b2lkICopKHNpemVfdCko Zmlmb19hZGRyICsgdHhxLT5maWZvX2Jhc2UpKTsKKwkJZ3ZlX3R4X2ZpbGxfcGt0X2Rlc2ModHhk LCB0eF9wa3QsIG5iX3VzZWQsIGhsZW4sIGZpZm9fYWRkcik7CisKKwkJaWYgKG9sX2ZsYWdzICYg UlRFX01CVUZfRl9UWF9UQ1BfU0VHKSB7CisJCQl0eF9pZCA9ICh0eF9pZCArIDEpICYgbWFzazsK KwkJCXR4ZCA9ICZ0eHJbdHhfaWRdOworCQkJYWRkciA9ICh1aW50NjRfdCkodHhfcGt0LT5idWZf YWRkcikgKyB0eF9wa3QtPmRhdGFfb2ZmICsgaGxlbjsKKwkJCWZpZm9fYWRkciA9IGd2ZV90eF9h bGxvY19mcm9tX2ZpZm8odHhxLCB0eF9pZCwgdHhfcGt0LT5wa3RfbGVuIC0gaGxlbik7CisJCQlp ZiAodHhfcGt0LT5uYl9zZWdzID09IDEpCisJCQkJcnRlX21lbWNweSgodm9pZCAqKShzaXplX3Qp KGZpZm9fYWRkciArIHR4cS0+Zmlmb19iYXNlKSwKKwkJCQkJICAgKHZvaWQgKikoc2l6ZV90KWFk ZHIsCisJCQkJCSAgIHR4X3BrdC0+cGt0X2xlbiAtIGhsZW4pOworCQkJZWxzZQorCQkJCXJ0ZV9w a3RtYnVmX3JlYWQodHhfcGt0LCBobGVuLCB0eF9wa3QtPnBrdF9sZW4gLSBobGVuLAorCQkJCQkJ ICh2b2lkICopKHNpemVfdCkoZmlmb19hZGRyICsgdHhxLT5maWZvX2Jhc2UpKTsKKworCQkJZ3Zl X3R4X2ZpbGxfc2VnX2Rlc2ModHhkLCBvbF9mbGFncywgdHhfb2ZmbG9hZCwKKwkJCQkJICAgICB0 eF9wa3QtPnBrdF9sZW4gLSBobGVuLCBmaWZvX2FkZHIpOworCQl9CisKKwkJLyogcmVjb3JkIG1i dWYgaW4gc3dfcmluZyBmb3IgZnJlZSAqLworCQlmb3IgKGkgPSAxOyBpIDwgZmlyc3QtPm5iX3Nl Z3M7IGkrKykgeworCQkJc3dfaWQgPSAoc3dfaWQgKyAxKSAmIG1hc2s7CisJCQl0eF9wa3QgPSB0 eF9wa3QtPm5leHQ7CisJCQlzd19yaW5nW3N3X2lkXSA9IHR4X3BrdDsKKwkJfQorCisJCXN3X2lk ID0gKHN3X2lkICsgMSkgJiBtYXNrOworCQl0eF9pZCA9ICh0eF9pZCArIDEpICYgbWFzazsKKwor CQl0eHEtPm5iX2ZyZWUgLT0gbmJfdXNlZDsKKwkJdHhxLT5zd19uYl9mcmVlIC09IGZpcnN0LT5u Yl9zZWdzOworCQl0eF90YWlsICs9IG5iX3VzZWQ7CisJfQorCitlbmRfb2ZfdHg6CisJaWYgKG5i X3R4KSB7CisJCXJ0ZV93cml0ZTMyKHJ0ZV9jcHVfdG9fYmVfMzIodHhfdGFpbCksIHR4cS0+cXR4 X3RhaWwpOworCQl0eHEtPnR4X3RhaWwgPSB0eF90YWlsOworCQl0eHEtPnN3X3RhaWwgPSBzd19p ZDsKKwl9CisKKwlyZXR1cm4gbmJfdHg7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDE2X3QKK2d2 ZV90eF9idXJzdF9yYSh2b2lkICp0eF9xdWV1ZSwgc3RydWN0IHJ0ZV9tYnVmICoqdHhfcGt0cywg dWludDE2X3QgbmJfcGt0cykKK3sKKwl1bmlvbiBndmVfdHhfb2ZmbG9hZCB0eF9vZmZsb2FkID0g ezB9OworCXZvbGF0aWxlIHVuaW9uIGd2ZV90eF9kZXNjICp0eHIsICp0eGQ7CisJc3RydWN0IGd2 ZV90eF9xdWV1ZSAqdHhxID0gdHhfcXVldWU7CisJc3RydWN0IHJ0ZV9tYnVmICoqc3dfcmluZyA9 IHR4cS0+c3dfcmluZzsKKwl1aW50MTZfdCBtYXNrID0gdHhxLT5uYl90eF9kZXNjIC0gMTsKKwl1 aW50MTZfdCB0eF9pZCA9IHR4cS0+dHhfdGFpbCAmIG1hc2s7CisJdWludDMyX3QgdHhfdGFpbCA9 IHR4cS0+dHhfdGFpbDsKKwlzdHJ1Y3QgcnRlX21idWYgKnR4X3BrdCwgKmZpcnN0OworCXVpbnQx Nl90IG5iX3VzZWQsIGhsZW4sIGk7CisJdWludDY0X3Qgb2xfZmxhZ3MsIGFkZHI7CisJdWludDE2 X3QgbmJfdHggPSAwOworCisJdHhyID0gdHhxLT50eF9kZXNjX3Jpbmc7CisKKwlpZiAodHhxLT5u Yl9mcmVlIDwgdHhxLT5mcmVlX3RocmVzaCkKKwkJZ3ZlX3R4X2NsZWFuKHR4cSk7CisKKwlmb3Ig KG5iX3R4ID0gMDsgbmJfdHggPCBuYl9wa3RzOyBuYl90eCsrKSB7CisJCXR4X3BrdCA9ICp0eF9w a3RzKys7CisJCW9sX2ZsYWdzID0gdHhfcGt0LT5vbF9mbGFnczsKKworCQluYl91c2VkID0gdHhf cGt0LT5uYl9zZWdzOworCQlpZiAob2xfZmxhZ3MgJiBSVEVfTUJVRl9GX1RYX1RDUF9TRUcpCisJ CQluYl91c2VkKys7CisKKwkJaWYgKHR4cS0+bmJfZnJlZSA8IG5iX3VzZWQpCisJCQlnb3RvIGVu ZF9vZl90eDsKKworCQl0eF9vZmZsb2FkLmwyX2xlbiA9IHR4X3BrdC0+bDJfbGVuOworCQl0eF9v ZmZsb2FkLmwzX2xlbiA9IHR4X3BrdC0+bDNfbGVuOworCQl0eF9vZmZsb2FkLmw0X2xlbiA9IHR4 X3BrdC0+bDRfbGVuOworCQl0eF9vZmZsb2FkLnRzb19zZWdzeiA9IHR4X3BrdC0+dHNvX3NlZ3N6 OworCisJCWZpcnN0ID0gdHhfcGt0OworCQl0eGQgPSAmdHhyW3R4X2lkXTsKKworCQlobGVuID0g b2xfZmxhZ3MgJiBSVEVfTUJVRl9GX1RYX1RDUF9TRUcgPworCQkJKHVpbnQzMl90KSh0eF9vZmZs b2FkLmwyX2xlbiArIHR4X29mZmxvYWQubDNfbGVuICsgdHhfb2ZmbG9hZC5sNF9sZW4pIDoKKwkJ CXR4X3BrdC0+cGt0X2xlbjsKKwkJLyoKKwkJICogaWYgdHNvLCB0aGUgZHJpdmVyIG5lZWRzIHRv IGZpbGwgMiBkZXNjcyBmb3IgMSBtYnVmCisJCSAqIHNvIG9ubHkgcHV0IHRoaXMgbWJ1ZiBpbnRv IHRoZSAxc3QgdHggZW50cnkgaW4gc3cgcmluZworCQkgKi8KKwkJc3dfcmluZ1t0eF9pZF0gPSB0 eF9wa3Q7CisJCWFkZHIgPSBydGVfbWJ1Zl9kYXRhX2lvdmEodHhfcGt0KTsKKwkJZ3ZlX3R4X2Zp bGxfcGt0X2Rlc2ModHhkLCB0eF9wa3QsIG5iX3VzZWQsIGhsZW4sIGFkZHIpOworCisJCWlmIChv bF9mbGFncyAmIFJURV9NQlVGX0ZfVFhfVENQX1NFRykgeworCQkJdHhfaWQgPSAodHhfaWQgKyAx KSAmIG1hc2s7CisJCQl0eGQgPSAmdHhyW3R4X2lkXTsKKwkJCWFkZHIgPSBydGVfbWJ1Zl9kYXRh X2lvdmEodHhfcGt0KSArIGhsZW47CisJCQlndmVfdHhfZmlsbF9zZWdfZGVzYyh0eGQsIG9sX2Zs YWdzLCB0eF9vZmZsb2FkLAorCQkJCQkgICAgIHR4X3BrdC0+ZGF0YV9sZW4gLSBobGVuLCBhZGRy KTsKKwkJfQorCisJCWZvciAoaSA9IDE7IGkgPCBmaXJzdC0+bmJfc2VnczsgaSsrKSB7CisJCQl0 eF9pZCA9ICh0eF9pZCArIDEpICYgbWFzazsKKwkJCXR4ZCA9ICZ0eHJbdHhfaWRdOworCQkJdHhf cGt0ID0gdHhfcGt0LT5uZXh0OworCQkJc3dfcmluZ1t0eF9pZF0gPSB0eF9wa3Q7CisJCQlhZGRy ID0gcnRlX21idWZfZGF0YV9pb3ZhKHR4X3BrdCk7CisJCQlndmVfdHhfZmlsbF9zZWdfZGVzYyh0 eGQsIG9sX2ZsYWdzLCB0eF9vZmZsb2FkLAorCQkJCQkgICAgIHR4X3BrdC0+ZGF0YV9sZW4sIGFk ZHIpOworCQl9CisJCXR4X2lkID0gKHR4X2lkICsgMSkgJiBtYXNrOworCisJCXR4cS0+bmJfZnJl ZSAtPSBuYl91c2VkOworCQl0eF90YWlsICs9IG5iX3VzZWQ7CisJfQorCitlbmRfb2ZfdHg6CisJ aWYgKG5iX3R4KSB7CisJCXJ0ZV93cml0ZTMyKHJ0ZV9jcHVfdG9fYmVfMzIodHhfdGFpbCksIHR4 cS0+cXR4X3RhaWwpOworCQl0eHEtPnR4X3RhaWwgPSB0eF90YWlsOworCX0KKworCXJldHVybiBu Yl90eDsKK30KKwordWludDE2X3QKK2d2ZV90eF9idXJzdCh2b2lkICp0eF9xdWV1ZSwgc3RydWN0 IHJ0ZV9tYnVmICoqdHhfcGt0cywgdWludDE2X3QgbmJfcGt0cykKK3sKKwlzdHJ1Y3QgZ3ZlX3R4 X3F1ZXVlICp0eHEgPSB0eF9xdWV1ZTsKKworCWlmICh0eHEtPmlzX2dxaV9xcGwpCisJCXJldHVy biBndmVfdHhfYnVyc3RfcXBsKHR4X3F1ZXVlLCB0eF9wa3RzLCBuYl9wa3RzKTsKKworCXJldHVy biBndmVfdHhfYnVyc3RfcmEodHhfcXVldWUsIHR4X3BrdHMsIG5iX3BrdHMpOworfQorCiBzdGF0 aWMgaW5saW5lIHZvaWQKIGd2ZV9yZXNldF90eHEoc3RydWN0IGd2ZV90eF9xdWV1ZSAqdHhxKQog ewoKaHR0cHM6Ly9sYWIuZHBkay5vcmcvcmVzdWx0cy9kYXNoYm9hcmQvcGF0Y2hzZXRzLzI0MTgw LwoKVU5ILUlPTCBEUERLIENvbW11bml0eSBMYWIK --===============4990474357483423271==--