From owner-freebsd-virtualization@freebsd.org Mon Jul 11 13:19:23 2016 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 24284B838E4 for ; Mon, 11 Jul 2016 13:19:23 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from reviews.nyi.freebsd.org (reviews.nyi.freebsd.org [IPv6:2610:1c1:1:607c::16:b]) by mx1.freebsd.org (Postfix) with ESMTP id E2E0C16FE for ; Mon, 11 Jul 2016 13:19:22 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by reviews.nyi.freebsd.org (Postfix, from userid 1346) id A3C0A161D; Mon, 11 Jul 2016 13:19:22 +0000 (UTC) Date: Mon, 11 Jul 2016 13:19:22 +0000 To: freebsd-virtualization@freebsd.org From: "jceel (Jakub Klama)" Reply-to: D7185+333+7754cf487cff2162@reviews.freebsd.org Subject: [Differential] D7185: Add virtio-console support to bhyve Message-ID: X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , , , Thread-Topic: D7185: Add virtio-console support to bhyve X-Herald-Rules: <28> X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: Precedence: bulk Thread-Index: MjhlZGRiYzhlY2RmMDVlMjRhODI2ZDZhMGU4 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_a323306a2e70d59516842eb696491cc6" X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.22 List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jul 2016 13:19:23 -0000 --b1_a323306a2e70d59516842eb696491cc6 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: base64 amNlZWwgY3JlYXRlZCB0aGlzIHJldmlzaW9uLgpqY2VlbCBhZGRlZCByZXZpZXdlcnM6IGdyZWhh biwgdHJhc3ouCmpjZWVsIGFkZGVkIGEgc3Vic2NyaWJlcjogZnJlZWJzZC12aXJ0dWFsaXphdGlv bi1saXN0LgpqY2VlbCBzZXQgdGhlIHJlcG9zaXRvcnkgZm9yIHRoaXMgcmV2aXNpb24gdG8gclMg RnJlZUJTRCBzcmMgcmVwb3NpdG9yeS4KSGVyYWxkIGFkZGVkIGEgc3Vic2NyaWJlcjogaW1wLgoK UkVWSVNJT04gU1VNTUFSWQogIEFkZHMgdmlydGlvLWNvbnNvbGUgZGV2aWNlIHN1cHBvcnQgdG8g Ymh5dmUsIGFsbG93aW5nIHRvIGNyZWF0ZSBiaWRpcmVjdGlvbmFsIGNoYXJhY3RlciBzdHJlYW1z IGJldHdlZW4gaG9zdCBhbmQgZ3Vlc3QuCiAgCiAgU3ludGF4OgogIGAtcyA8c2xvdG51bT4sdmly dGlvLWNvbnNvbGUscG9ydDE9L3BhdGgvdG8vcG9ydDEuc29jayxwb3J0Mj0vcGF0aC90by9wb3J0 Mi5zb2NrLC4uLmAKICAKICBNYXhpbXVtIG9mIDE2IHBvcnRzIHBlciBkZXZpY2UgY2FuIGJlIGNy ZWF0ZWQuIEV2ZXJ5IHBvcnQgaXMgbmFtZWQgYW5kIGNvcnJlc3BvbmRzIHRvIGFuIFVuaXggZG9t YWluIHNvY2tldCBjcmVhdGVkIGJ5IGJoeXZlLiBiaHl2ZSBhY2NlcHRzIGF0IG1vc3Qgb25lIHVu aXggZG9tYWluIHNvY2tldCBjb25uZWN0aW9uIHBlciBwb3J0IGF0IGEgdGltZS4KICAKICBMaW1p dGF0aW9uczoKICAKICAtIGR1ZSB0byBsYWNrIG9mIGRlc3RydWN0b3JzIG9mIGluIGJoeXZlLCBz b2NrZXRzIG9uIHRoZSBmaWxlc3lzdGVtIG11c3QgYmUgY2xlYW5lZCB1cCBtYW51YWxseSBhZnRl ciBiaHl2ZSBleGl0cwogIC0gdGhlcmUncyBubyB3YXkgdG8gdXNlICJjb25zb2xlIHBvcnQiIGZl YXR1cmUsIG5vciB0aGUgY29uc29sZSBwb3J0IHJlc2l6ZSBhcyBvZiB5ZXQKICAtIGVtZXJnZW5j eSB3cml0ZSBpcyBhZHZlcnRpc2VkLCBidXQgbm8tb3AgYXMgb2YgeWV0CgpURVNUIFBMQU4KICBT dGFydCBGcmVlQlNEIGd1ZXN0IGluIGJoeXZlIHdpdGggYC1zIDksdmlydGlvLWNvbnNvbGUsdGVz dHBvcnQ9L3RtcC90ZXN0cG9ydC5zb2NrYC4gVHlwZSBga2xkbG9hZCB2aXJ0aW9fY29uc29sZWAg aW4gdGhlIGd1ZXN0LCB0aGVuIGBjdSAtbCAvZGV2L3R0eVYwLjBgIGluIHRoZSBndWVzdCBhbmQg YHNvY2F0IC0gL3RtcC90ZXN0cG9ydC5zb2NrYCBpbiB0aGUgaG9zdC4KClJFUE9TSVRPUlkKICBy UyBGcmVlQlNEIHNyYyByZXBvc2l0b3J5CgpSRVZJU0lPTiBERVRBSUwKICBodHRwczovL3Jldmll d3MuZnJlZWJzZC5vcmcvRDcxODUKCkFGRkVDVEVEIEZJTEVTCiAgdXNyLnNiaW4vYmh5dmUvTWFr ZWZpbGUKICB1c3Iuc2Jpbi9iaHl2ZS9wY2lfdmlydGlvX2NvbnNvbGUuYwogIHVzci5zYmluL2Jo eXZlL3ZpcnRpby5oCgpFTUFJTCBQUkVGRVJFTkNFUwogIGh0dHBzOi8vcmV2aWV3cy5mcmVlYnNk Lm9yZy9zZXR0aW5ncy9wYW5lbC9lbWFpbHByZWZlcmVuY2VzLwoKVG86IGpjZWVsLCBncmVoYW4s IHRyYXN6CkNjOiBpbXAsIGZyZWVic2QtdmlydHVhbGl6YXRpb24tbGlzdAo= --b1_a323306a2e70d59516842eb696491cc6 Content-Type: text/x-patch; charset=utf-8; name="D7185.18284.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D7185.18284.patch" ZGlmZiAtLWdpdCBhL3Vzci5zYmluL2JoeXZlL3ZpcnRpby5oIGIvdXNyLnNiaW4vYmh5dmUvdmly dGlvLmgKLS0tIGEvdXNyLnNiaW4vYmh5dmUvdmlydGlvLmgKKysrIGIvdXNyLnNiaW4vYmh5dmUv dmlydGlvLmgKQEAgLTIxMCw2ICsyMTAsNyBAQAogI2RlZmluZQlWSVJUSU9fREVWX05FVAkJMHgx MDAwCiAjZGVmaW5lCVZJUlRJT19ERVZfQkxPQ0sJMHgxMDAxCiAjZGVmaW5lCVZJUlRJT19ERVZf UkFORE9NCTB4MTAwMgorI2RlZmluZQlWSVJUSU9fREVWX0NPTlNPTEUJMHgxMDAzCiAKIC8qCiAg KiBQQ0kgY29uZmlnIHNwYWNlIGNvbnN0YW50cy4KZGlmZiAtLWdpdCBhL3Vzci5zYmluL2JoeXZl L3BjaV92aXJ0aW9fY29uc29sZS5jIGIvdXNyLnNiaW4vYmh5dmUvcGNpX3ZpcnRpb19jb25zb2xl LmMKLS0tIGEvdXNyLnNiaW4vYmh5dmUvcGNpX3ZpcnRpb19jb25zb2xlLmMKKysrIGIvdXNyLnNi aW4vYmh5dmUvcGNpX3ZpcnRpb19jb25zb2xlLmMKQEAgLTAsMCArMSw2MzEgQEAKKy8qLQorICog Q29weXJpZ2h0IChjKSAyMDE2IGlYc3lzdGVtcyBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk LgorICoKKyAqIFRoaXMgc29mdHdhcmUgd2FzIGRldmVsb3BlZCBieSBKYWt1YiBLbGFtYSA8amNl ZWxARnJlZUJTRC5vcmc+CisgKiB1bmRlciBzcG9uc29yc2hpcCBmcm9tIGlYc3lzdGVtcyBJbmMu CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGlzIHBvc2l0aW9uIGFuZCB1bmNoYW5nZWQuCisgKiAy LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBg YEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBB UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVU T1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisg KiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT IElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRP UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ CisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg VEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3lz L2NkZWZzLmg+CitfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CisKKyNpbmNsdWRlIDxzeXMvcGFyYW0u aD4KKyNpbmNsdWRlIDxzeXMvbGlua2VyX3NldC5oPgorI2luY2x1ZGUgPHN5cy91aW8uaD4KKyNp bmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8 c3lzL3VuLmg+CisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5j bHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+ CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8YXNz ZXJ0Lmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPGxpYmdlbi5oPgorCisjaW5j bHVkZSAiYmh5dmVydW4uaCIKKyNpbmNsdWRlICJwY2lfZW11bC5oIgorI2luY2x1ZGUgInZpcnRp by5oIgorI2luY2x1ZGUgIm1ldmVudC5oIgorCisjZGVmaW5lCVZUQ09OX1JJTkdTWgk2NAorI2Rl ZmluZQlWVENPTl9NQVhQT1JUUwkxNgorI2RlZmluZQlWVENPTl9NQVhRCShWVENPTl9NQVhQT1JU UyAqIDIgKyAyKQorCisjZGVmaW5lCVZUQ09OX0RFVklDRV9SRUFEWQkwCisjZGVmaW5lCVZUQ09O X0RFVklDRV9BREQJMQorI2RlZmluZQlWVENPTl9ERVZJQ0VfUkVNT1ZFCTIKKyNkZWZpbmUJVlRD T05fUE9SVF9SRUFEWQkzCisjZGVmaW5lCVZUQ09OX0NPTlNPTEVfUE9SVAk0CisjZGVmaW5lCVZU Q09OX0NPTlNPTEVfUkVTSVpFCTUKKyNkZWZpbmUJVlRDT05fUE9SVF9PUEVOCQk2CisjZGVmaW5l CVZUQ09OX1BPUlRfTkFNRQkJNworCisjZGVmaW5lCVZUQ09OX0ZfU0laRQkJMAorI2RlZmluZQlW VENPTl9GX01VTFRJUE9SVAkxCisjZGVmaW5lCVZUQ09OX0ZfRU1FUkdfV1JJVEUJMgorI2RlZmlu ZQlWVENPTl9TX0hPU1RDQVBTCVwKKyAgICAoVlRDT05fRl9TSVpFIHwgVlRDT05fRl9NVUxUSVBP UlQgfCBWVENPTl9GX0VNRVJHX1dSSVRFKQorCitzdGF0aWMgaW50IHBjaV92dGNvbl9kZWJ1ZzsK KyNkZWZpbmUgRFBSSU5URihwYXJhbXMpIGlmIChwY2lfdnRjb25fZGVidWcpIHByaW50ZiBwYXJh bXMKKyNkZWZpbmUgV1BSSU5URihwYXJhbXMpIHByaW50ZiBwYXJhbXMKKworc3RydWN0IHBjaV92 dGNvbl9zb2Z0YzsKK3N0cnVjdCBwY2lfdnRjb25fcG9ydDsKK3N0cnVjdCBwY2lfdnRjb25fY29u ZmlnOwordHlwZWRlZiB2b2lkIChwY2lfdnRjb25fY2JfdCkoc3RydWN0IHBjaV92dGNvbl9wb3J0 ICosIHZvaWQgKiwgc3RydWN0IGlvdmVjICosCisgICAgaW50KTsKKworc3RydWN0IHBjaV92dGNv bl9wb3J0IHsKKwlzdHJ1Y3QgcGNpX3Z0Y29uX3NvZnRjICogdnNwX3NjOworCWludCAgICAgICAg ICAgICAgICAgICAgICB2c3BfaWQ7CisJY29uc3QgY2hhciAqICAgICAgICAgICAgIHZzcF9uYW1l OworCWJvb2wgICAgICAgICAgICAgICAgICAgICB2c3BfZW5hYmxlZDsKKwlib29sICAgICAgICAg ICAgICAgICAgICAgdnNwX2NvbnNvbGU7CisJYm9vbCAgICAgICAgICAgICAgICAgICAgIHZzcF9y eF9yZWFkeTsKKwlpbnQgICAgICAgICAgICAgICAgICAgICAgdnNwX3J4cTsKKwlpbnQgICAgICAg ICAgICAgICAgICAgICAgdnNwX3R4cTsKKwl2b2lkICogICAgICAgICAgICAgICAgICAgdnNwX2Fy ZzsKKwlwY2lfdnRjb25fY2JfdCAqICAgICAgICAgdnNwX2NiOworfTsKKworc3RydWN0IHBjaV92 dGNvbl9zb2NrCit7CisJc3RydWN0IHBjaV92dGNvbl9wb3J0ICogIHZzc19wb3J0OworCWNvbnN0 IGNoYXIgKiAgICAgICAgICAgICB2c3NfcGF0aDsKKwlzdHJ1Y3QgbWV2ZW50ICogICAgICAgICAg dnNzX3NlcnZlcl9ldnA7CisJc3RydWN0IG1ldmVudCAqICAgICAgICAgIHZzc19jb25uX2V2cDsK KwlpbnQgICAgICAgICAgICAgICAgICAgICAgdnNzX3NlcnZlcl9mZDsKKwlpbnQgICAgICAgICAg ICAgICAgICAgICAgdnNzX2Nvbm5fZmQ7CisJYm9vbCAgICAgICAgICAgICAgICAgICAgIHZzc19v cGVuOworfTsKKworc3RydWN0IHBjaV92dGNvbl9zb2Z0YyB7CisJc3RydWN0IHZpcnRpb19zb2Z0 YyAgICAgIHZzY192czsKKwlzdHJ1Y3QgdnF1ZXVlX2luZm8gICAgICAgdnNjX3F1ZXVlc1tWVENP Tl9NQVhRXTsKKwlwdGhyZWFkX211dGV4X3QgICAgICAgICAgdnNjX210eDsKKwl1aW50NjRfdCAg ICAgICAgICAgICAgICAgdnNjX2NmZzsKKwl1aW50NjRfdCAgICAgICAgICAgICAgICAgdnNjX2Zl YXR1cmVzOworCWNoYXIgKiAgICAgICAgICAgICAgICAgICB2c2Nfcm9vdGRpcjsKKwlpbnQgICAg ICAgICAgICAgICAgICAgICAgdnNjX2txOworCWludCAgICAgICAgICAgICAgICAgICAgICB2c2Nf bnBvcnRzOworCXN0cnVjdCBwY2lfdnRjb25fcG9ydCAgICB2c2NfY29udHJvbF9wb3J0OworIAlz dHJ1Y3QgcGNpX3Z0Y29uX3BvcnQgICAgdnNjX3BvcnRzW1ZUQ09OX01BWFBPUlRTXTsKKwlzdHJ1 Y3QgcGNpX3Z0Y29uX2NvbmZpZyAqdnNjX2NvbmZpZzsKK307CisKK3N0cnVjdCBwY2lfdnRjb25f Y29uZmlnIHsKKwl1aW50MTZfdCBjb2xzOworCXVpbnQxNl90IHJvd3M7CisJdWludDMyX3QgbWF4 X25yX3BvcnRzOworCXVpbnQzMl90IGVtZXJnX3dyOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp KTsKKworc3RydWN0IHBjaV92dGNvbl9jb250cm9sIHsKKwl1aW50MzJfdCBpZDsKKwl1aW50MTZf dCBldmVudDsKKwl1aW50MTZfdCB2YWx1ZTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisK K3N0cnVjdCBwY2lfdnRjb25fY29uc29sZV9yZXNpemUgeworCXVpbnQxNl90IGNvbHM7CisJdWlu dDE2X3Qgcm93czsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKK3N0YXRpYyB2b2lkIHBj aV92dGNvbl9yZXNldCh2b2lkICopOworc3RhdGljIHZvaWQgcGNpX3Z0Y29uX25vdGlmeV9yeCh2 b2lkICosIHN0cnVjdCB2cXVldWVfaW5mbyAqKTsKK3N0YXRpYyB2b2lkIHBjaV92dGNvbl9ub3Rp ZnlfdHgodm9pZCAqLCBzdHJ1Y3QgdnF1ZXVlX2luZm8gKik7CitzdGF0aWMgaW50IHBjaV92dGNv bl9jZmdyZWFkKHZvaWQgKiwgaW50LCBpbnQsIHVpbnQzMl90ICopOworc3RhdGljIGludCBwY2lf dnRjb25fY2Znd3JpdGUodm9pZCAqLCBpbnQsIGludCwgdWludDMyX3QpOworc3RhdGljIHZvaWQg cGNpX3Z0Y29uX25lZ19mZWF0dXJlcyh2b2lkICosIHVpbnQ2NF90KTsKK3N0YXRpYyB2b2lkIHBj aV92dGNvbl9zb2NrX2FjY2VwdChpbnQsIGVudW0gZXZfdHlwZSwgIHZvaWQgKik7CitzdGF0aWMg dm9pZCBwY2lfdnRjb25fc29ja19yeChpbnQsIGVudW0gZXZfdHlwZSwgdm9pZCAqKTsKK3N0YXRp YyB2b2lkIHBjaV92dGNvbl9zb2NrX3R4KHN0cnVjdCBwY2lfdnRjb25fcG9ydCAqLCB2b2lkICos IHN0cnVjdCBpb3ZlYyAqLAorICAgIGludCk7CitzdGF0aWMgdm9pZCBwY2lfdnRjb25fY29udHJv bF9zZW5kKHN0cnVjdCBwY2lfdnRjb25fc29mdGMgKiwKKyAgICBzdHJ1Y3QgcGNpX3Z0Y29uX2Nv bnRyb2wgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOworc3RhdGljIHZvaWQgcGNpX3Z0Y29uX2Fu bm91bmNlX3BvcnQoc3RydWN0IHBjaV92dGNvbl9wb3J0ICopOworc3RhdGljIHZvaWQgcGNpX3Z0 Y29uX29wZW5fcG9ydChzdHJ1Y3QgcGNpX3Z0Y29uX3BvcnQgKiwgYm9vbCk7CisKK3N0YXRpYyBz dHJ1Y3QgdmlydGlvX2NvbnN0cyB2dGNvbl92aV9jb25zdHMgPSB7CisJInZ0Y29uIiwJCS8qIG91 ciBuYW1lICovCisJVlRDT05fTUFYUSwJCS8qIHdlIHN1cHBvcnQgVlRDT05fTUFYUSB2aXJ0cXVl dWVzICovCisJc2l6ZW9mKHN0cnVjdCBwY2lfdnRjb25fY29uZmlnKSwgLyogY29uZmlnIHJlZyBz aXplICovCisJcGNpX3Z0Y29uX3Jlc2V0LAkvKiByZXNldCAqLworCU5VTEwsCQkJLyogZGV2aWNl LXdpZGUgcW5vdGlmeSAqLworCXBjaV92dGNvbl9jZmdyZWFkLAkvKiByZWFkIHZpcnRpbyBjb25m aWcgKi8KKwlwY2lfdnRjb25fY2Znd3JpdGUsCS8qIHdyaXRlIHZpcnRpbyBjb25maWcgKi8KKwlw Y2lfdnRjb25fbmVnX2ZlYXR1cmVzLAkvKiBhcHBseSBuZWdvdGlhdGVkIGZlYXR1cmVzICovCisJ VlRDT05fU19IT1NUQ0FQUywJLyogb3VyIGNhcGFiaWxpdGllcyAqLworfTsKKworCitzdGF0aWMg dm9pZAorcGNpX3Z0Y29uX3Jlc2V0KHZvaWQgKnZzYykKK3sKKwlzdHJ1Y3QgcGNpX3Z0Y29uX3Nv ZnRjICpzYzsKKworCXNjID0gdnNjOworCisJRFBSSU5URigoInZ0Y29uOiBkZXZpY2UgcmVzZXQg cmVxdWVzdGVkIVxuIikpOworCXZpX3Jlc2V0X2Rldigmc2MtPnZzY192cyk7Cit9CisKK3N0YXRp YyB2b2lkCitwY2lfdnRjb25fbmVnX2ZlYXR1cmVzKHZvaWQgKnZzYywgdWludDY0X3QgbmVnb3Rp YXRlZF9mZWF0dXJlcykKK3sKKwlzdHJ1Y3QgcGNpX3Z0Y29uX3NvZnRjICpzYyA9IHZzYzsKKwor CXNjLT52c2NfZmVhdHVyZXMgPSBuZWdvdGlhdGVkX2ZlYXR1cmVzOworfQorCitzdGF0aWMgaW50 CitwY2lfdnRjb25fY2ZncmVhZCh2b2lkICp2c2MsIGludCBvZmZzZXQsIGludCBzaXplLCB1aW50 MzJfdCAqcmV0dmFsKQoreworCXN0cnVjdCBwY2lfdnRjb25fc29mdGMgKnNjID0gdnNjOworCXZv aWQgKnB0cjsKKworCXB0ciA9ICh1aW50OF90ICopc2MtPnZzY19jb25maWcgKyBvZmZzZXQ7CisJ bWVtY3B5KHJldHZhbCwgcHRyLCBzaXplKTsKKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgaW50 CitwY2lfdnRjb25fY2Znd3JpdGUodm9pZCAqdnNjLCBpbnQgb2Zmc2V0LCBpbnQgc2l6ZSwgdWlu dDMyX3QgdmFsKQoreworCisJcmV0dXJuICgwKTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3Qg cGNpX3Z0Y29uX3BvcnQgKgorcGNpX3Z0Y29uX3ZxX3RvX3BvcnQoc3RydWN0IHBjaV92dGNvbl9z b2Z0YyAqc2MsIHN0cnVjdCB2cXVldWVfaW5mbyAqdnEpCit7CisJdWludDE2X3QgbnVtID0gdnEt PnZxX251bTsKKworCWlmIChudW0gPT0gMCB8fCBudW0gPT0gMSkKKwkJcmV0dXJuICgmc2MtPnZz Y19wb3J0c1swXSk7CisKKwlpZiAobnVtID09IDIgfHwgbnVtID09IDMpCisJCXJldHVybiAoJnNj LT52c2NfY29udHJvbF9wb3J0KTsKKworCXJldHVybiAoJnNjLT52c2NfcG9ydHNbKG51bSAvIDIp IC0gMV0pOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCB2cXVldWVfaW5mbyAqCitwY2lfdnRj b25fcG9ydF90b192cShzdHJ1Y3QgcGNpX3Z0Y29uX3BvcnQgKnBvcnQsIGJvb2wgdHhfcXVldWUp Cit7CisJaW50IHFudW07CisKKwlxbnVtID0gdHhfcXVldWUgPyBwb3J0LT52c3BfdHhxIDogcG9y dC0+dnNwX3J4cTsKKwlyZXR1cm4gKCZwb3J0LT52c3Bfc2MtPnZzY19xdWV1ZXNbcW51bV0pOwor fQorCitzdGF0aWMgc3RydWN0IHBjaV92dGNvbl9wb3J0ICoKK3BjaV92dGNvbl9wb3J0X2FkZChz dHJ1Y3QgcGNpX3Z0Y29uX3NvZnRjICpzYywgY29uc3QgY2hhciAqbmFtZSwKKyAgICBwY2lfdnRj b25fY2JfdCAqY2IsIHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgcGNpX3Z0Y29uX3BvcnQgKnBvcnQ7 CisKKwlpZiAoc2MtPnZzY19ucG9ydHMgPT0gVlRDT05fTUFYUE9SVFMpIHsKKwkJZXJybm8gPSBF QlVTWTsKKwkJcmV0dXJuIChOVUxMKTsKKwl9CisKKwlwb3J0ID0gJnNjLT52c2NfcG9ydHNbc2Mt PnZzY19ucG9ydHMrK107CisJcG9ydC0+dnNwX2lkID0gc2MtPnZzY19ucG9ydHMgLSAxOworCXBv cnQtPnZzcF9zYyA9IHNjOworCXBvcnQtPnZzcF9uYW1lID0gbmFtZTsKKwlwb3J0LT52c3BfY2Ig PSBjYjsKKwlwb3J0LT52c3BfYXJnID0gYXJnOworCisJaWYgKHBvcnQtPnZzcF9pZCA9PSAwKSB7 CisJCS8qIHBvcnQwICovCisJCXBvcnQtPnZzcF90eHEgPSAwOworCQlwb3J0LT52c3BfcnhxID0g MTsKKwl9IGVsc2UgeworCQlwb3J0LT52c3BfdHhxID0gc2MtPnZzY19ucG9ydHMgKiAyOworCQlw b3J0LT52c3BfcnhxID0gcG9ydC0+dnNwX3R4cSArIDE7CisJfQorCisJcG9ydC0+dnNwX2VuYWJs ZWQgPSB0cnVlOworCXJldHVybiAocG9ydCk7Cit9CisKK3N0YXRpYyBpbnQKK3BjaV92dGNvbl9z b2NrX2FkZChzdHJ1Y3QgcGNpX3Z0Y29uX3NvZnRjICpzYywgY29uc3QgY2hhciAqbmFtZSwKKyAg ICBjb25zdCBjaGFyICpwYXRoKQoreworCXN0cnVjdCBwY2lfdnRjb25fc29jayAqc29jazsKKwlz dHJ1Y3Qgc29ja2FkZHJfdW4gc3VuOworCWludCBzID0gLTEsIGZkID0gLTEsIGVycm9yID0gMDsK KworCXNvY2sgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBwY2lfdnRjb25fc29jaykpOworCWlm IChzb2NrID09IE5VTEwpIHsKKwkJZXJyb3IgPSAtMTsKKwkJZ290byBvdXQ7CisJfQorCisJcyA9 IHNvY2tldChBRl9VTklYLCBTT0NLX1NUUkVBTSwgMCk7CisJaWYgKHMgPCAwKSB7CisJCWVycm9y ID0gLTE7CisJCWdvdG8gb3V0OworCX0KKworCWZkID0gb3BlbihkaXJuYW1lKHBhdGgpLCBPX1JE T05MWSB8IE9fRElSRUNUT1JZKTsKKwlpZiAoZmQgPCAwKSB7CisJCWVycm9yID0gLTE7CisJCWdv dG8gb3V0OworCX0KKworCXN1bi5zdW5fZmFtaWx5ID0gQUZfVU5JWDsKKwlzdW4uc3VuX2xlbiA9 IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pOworCXN0cm5jcHkoc3VuLnN1bl9wYXRoLCBiYXNl bmFtZShwYXRoKSwgc2l6ZW9mKHN1bi5zdW5fcGF0aCkpOworCisJaWYgKGJpbmRhdChmZCwgcywg KHN0cnVjdCBzb2NrYWRkciAqKSZzdW4sIHN1bi5zdW5fbGVuKSA8IDApIHsKKwkJZXJyb3IgPSAt MTsKKwkJZ290byBvdXQ7CisJfQorCisJaWYgKGZjbnRsKHMsIEZfU0VURkwsIE9fTk9OQkxPQ0sp IDwgMCkgeworCQllcnJvciA9IC0xOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAobGlzdGVuKHMs IDEpIDwgMCkgeworCQllcnJvciA9IC0xOworCQlnb3RvIG91dDsKKwl9CisKKworCXNvY2stPnZz c19wb3J0ID0gcGNpX3Z0Y29uX3BvcnRfYWRkKHNjLCBuYW1lLCBwY2lfdnRjb25fc29ja190eCwg c29jayk7CisJaWYgKHNvY2stPnZzc19wb3J0ID09IE5VTEwpIHsKKwkJZXJyb3IgPSAtMTsKKwkJ Z290byBvdXQ7CisJfQorCisJc29jay0+dnNzX29wZW4gPSBmYWxzZTsKKwlzb2NrLT52c3NfY29u bl9mZCA9IC0xOworCXNvY2stPnZzc19zZXJ2ZXJfZmQgPSBzOworCXNvY2stPnZzc19zZXJ2ZXJf ZXZwID0gbWV2ZW50X2FkZChzLCBFVkZfUkVBRCwgcGNpX3Z0Y29uX3NvY2tfYWNjZXB0LAorCSAg ICBzb2NrKTsKKworCWlmIChzb2NrLT52c3Nfc2VydmVyX2V2cCA9PSBOVUxMKSB7CisJCWVycm9y ID0gLTE7CisJCWdvdG8gb3V0OworCX0KKworb3V0OgorCWlmIChmZCAhPSAtMSkKKwkJY2xvc2Uo ZmQpOworCisJaWYgKGVycm9yICE9IDAgJiYgcyAhPSAtMSkKKwkJY2xvc2Uocyk7CisKKwlyZXR1 cm4gKGVycm9yKTsKK30KKworc3RhdGljIHZvaWQKK3BjaV92dGNvbl9zb2NrX2FjY2VwdChpbnQg ZmQgX191bnVzZWQsIGVudW0gZXZfdHlwZSB0IF9fdW51c2VkLCB2b2lkICphcmcpCit7CisJc3Ry dWN0IHBjaV92dGNvbl9zb2NrICpzb2NrID0gKHN0cnVjdCBwY2lfdnRjb25fc29jayAqKWFyZzsK KwlpbnQgczsKKworCXMgPSBhY2NlcHQoc29jay0+dnNzX3NlcnZlcl9mZCwgTlVMTCwgTlVMTCk7 CisJaWYgKHMgPCAwKQorCQlyZXR1cm47CisKKwlpZiAoc29jay0+dnNzX29wZW4pIHsKKwkJY2xv c2Uocyk7CisJCXJldHVybjsKKwl9CisKKwlzb2NrLT52c3Nfb3BlbiA9IHRydWU7CisJc29jay0+ dnNzX2Nvbm5fZmQgPSBzOworCXNvY2stPnZzc19jb25uX2V2cCA9IG1ldmVudF9hZGQocywgRVZG X1JFQUQsIHBjaV92dGNvbl9zb2NrX3J4LCBzb2NrKTsKKwlwY2lfdnRjb25fb3Blbl9wb3J0KHNv Y2stPnZzc19wb3J0LCB0cnVlKTsKK30KKworc3RhdGljIHZvaWQKK3BjaV92dGNvbl9zb2NrX3J4 KGludCBmZCBfX3VudXNlZCwgZW51bSBldl90eXBlIHQgX191bnVzZWQsIHZvaWQgKmFyZykKK3sK KwlzdHJ1Y3QgcGNpX3Z0Y29uX3BvcnQgKnBvcnQ7CisJc3RydWN0IHBjaV92dGNvbl9zb2NrICpz b2NrID0gKHN0cnVjdCBwY2lfdnRjb25fc29jayAqKWFyZzsKKwlzdHJ1Y3QgdnF1ZXVlX2luZm8g KnZxOworCXN0cnVjdCBpb3ZlYyBpb3Y7CisJc3RhdGljIGNoYXIgZHVtbXlidWZbMjA0OF07CisJ aW50IGxlbiwgbjsKKwl1aW50MTZfdCBpZHg7CisKKwlwb3J0ID0gc29jay0+dnNzX3BvcnQ7CisJ dnEgPSBwY2lfdnRjb25fcG9ydF90b192cShwb3J0LCB0cnVlKTsKKworCWlmICghc29jay0+dnNz X29wZW4gfHwgIXBvcnQtPnZzcF9yeF9yZWFkeSkgeworCQlsZW4gPSByZWFkKHNvY2stPnZzc19j b25uX2ZkLCBkdW1teWJ1Ziwgc2l6ZW9mKGR1bW15YnVmKSk7CisJCWlmIChsZW4gPT0gMCkKKwkJ CWdvdG8gY2xvc2U7CisKKwkJcmV0dXJuOworCX0KKworCWlmICghdnFfaGFzX2Rlc2NzKHZxKSkg eworCQlsZW4gPSByZWFkKHNvY2stPnZzc19jb25uX2ZkLCBkdW1teWJ1Ziwgc2l6ZW9mKGR1bW15 YnVmKSk7CisJCXZxX2VuZGNoYWlucyh2cSwgMSk7CisJCWlmIChsZW4gPT0gMCkKKwkJCWdvdG8g Y2xvc2U7CisKKwkJcmV0dXJuOworCX0KKworCWRvIHsKKwkJbiA9IHZxX2dldGNoYWluKHZxLCAm aWR4LCAmaW92LCAxLCBOVUxMKTsKKwkJbGVuID0gcmVhZHYoc29jay0+dnNzX2Nvbm5fZmQsICZp b3YsIG4pOworCisJCWlmIChsZW4gPT0gMCB8fCAobGVuIDwgMCAmJiBlcnJubyA9PSBFV09VTERC TE9DSykpIHsKKwkJCXZxX3JldGNoYWluKHZxKTsKKwkJCXZxX2VuZGNoYWlucyh2cSwgMCk7CisJ CQlpZiAobGVuID09IDApCisJCQkJZ290byBjbG9zZTsKKworCQkJcmV0dXJuOworCQl9CisKKwkJ dnFfcmVsY2hhaW4odnEsIGlkeCwgbGVuKTsKKwl9IHdoaWxlICh2cV9oYXNfZGVzY3ModnEpKTsK KworCXZxX2VuZGNoYWlucyh2cSwgMSk7CisKK2Nsb3NlOgorCW1ldmVudF9kZWxldGVfY2xvc2Uo c29jay0+dnNzX2Nvbm5fZXZwKTsKKwlzb2NrLT52c3NfY29ubl9mZCA9IC0xOworCXNvY2stPnZz c19vcGVuID0gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkCitwY2lfdnRjb25fc29ja190eChzdHJ1 Y3QgcGNpX3Z0Y29uX3BvcnQgKnBvcnQsIHZvaWQgKmFyZywgc3RydWN0IGlvdmVjICppb3YsCisg ICAgaW50IG5pb3YpCit7CisJc3RydWN0IHBjaV92dGNvbl9zb2NrICpzb2NrOworCWludCByZXQ7 CisKKwlzb2NrID0gKHN0cnVjdCBwY2lfdnRjb25fc29jayAqKWFyZzsKKworCWlmIChzb2NrLT52 c3NfY29ubl9mZCA9PSAtMSkKKwkJcmV0dXJuOworCisJcmV0ID0gd3JpdGV2KHNvY2stPnZzc19j b25uX2ZkLCBpb3YsIG5pb3YpOworCisJaWYgKHJldCA8IDAgJiYgZXJybm8gIT0gRVdPVUxEQkxP Q0spIHsKKwkJbWV2ZW50X2RlbGV0ZV9jbG9zZShzb2NrLT52c3NfY29ubl9ldnApOworCQlzb2Nr LT52c3NfY29ubl9mZCA9IC0xOworCQlzb2NrLT52c3Nfb3BlbiA9IGZhbHNlOworCX0KK30KKwor c3RhdGljIHZvaWQKK3BjaV92dGNvbl9jb250cm9sX3R4KHN0cnVjdCBwY2lfdnRjb25fcG9ydCAq cG9ydCwgdm9pZCAqYXJnLCBzdHJ1Y3QgaW92ZWMgKmlvdiwKKyAgICBpbnQgbmlvdikKK3sKKwlz dHJ1Y3QgcGNpX3Z0Y29uX3NvZnRjICpzYzsKKwlzdHJ1Y3QgcGNpX3Z0Y29uX3BvcnQgKnRtcDsK KwlzdHJ1Y3QgcGNpX3Z0Y29uX2NvbnRyb2wgcmVzcCwgKmN0cmw7CisJaW50IGk7CisKKwlhc3Nl cnQobmlvdiA9PSAxKTsKKworCXNjID0gcG9ydC0+dnNwX3NjOworCWN0cmwgPSAoc3RydWN0IHBj aV92dGNvbl9jb250cm9sICopaW92LT5pb3ZfYmFzZTsKKworCXN3aXRjaCAoY3RybC0+ZXZlbnQp IHsKKwljYXNlIFZUQ09OX0RFVklDRV9SRUFEWToKKwkJLyogc2V0IHBvcnQgcmVhZHkgZXZlbnRz IGZvciByZWdpc3RlcmVkIHBvcnRzICovCisJCWZvciAoaSA9IDA7IGkgPCBWVENPTl9NQVhQT1JU UzsgaSsrKSB7CisJCQl0bXAgPSAmc2MtPnZzY19wb3J0c1tpXTsKKwkJCWlmICh0bXAtPnZzcF9l bmFibGVkKQorCQkJCXBjaV92dGNvbl9hbm5vdW5jZV9wb3J0KHRtcCk7CisJCX0KKwkJYnJlYWs7 CisKKwljYXNlIFZUQ09OX1BPUlRfUkVBRFk6CisJCWlmIChjdHJsLT5pZCA+PSBzYy0+dnNjX25w b3J0cykgeworCQkJV1BSSU5URigoIlZUQ09OX1BPUlRfUkVBRFkgZXZlbnQgZm9yIHVua25vd24g cG9ydCAlZFxuIiwKKwkJCSAgICBjdHJsLT5pZCkpOworCQkJcmV0dXJuOworCQl9CisKKwkJdG1w ID0gJnNjLT52c2NfcG9ydHNbY3RybC0+aWRdOworCQlpZiAodG1wLT52c3BfY29uc29sZSkgewor CQkJcmVzcC5ldmVudCA9IFZUQ09OX0NPTlNPTEVfUE9SVDsKKwkJCXJlc3AuaWQgPSBjdHJsLT5p ZDsKKwkJCXJlc3AudmFsdWUgPSAxOworCQkJcGNpX3Z0Y29uX2NvbnRyb2xfc2VuZChzYywgJnJl c3AsIE5VTEwsIDApOworCQl9CisJCWJyZWFrOworCX0KK30KKworc3RhdGljIHZvaWQKK3BjaV92 dGNvbl9hbm5vdW5jZV9wb3J0KHN0cnVjdCBwY2lfdnRjb25fcG9ydCAqcG9ydCkKK3sKKwlzdHJ1 Y3QgcGNpX3Z0Y29uX2NvbnRyb2wgZXZlbnQ7CisKKwlldmVudC5pZCA9IHBvcnQtPnZzcF9pZDsK KwlldmVudC5ldmVudCA9IFZUQ09OX0RFVklDRV9BREQ7CisJZXZlbnQudmFsdWUgPSAxOworCXBj aV92dGNvbl9jb250cm9sX3NlbmQocG9ydC0+dnNwX3NjLCAmZXZlbnQsIE5VTEwsIDApOworCisJ ZXZlbnQuZXZlbnQgPSBWVENPTl9QT1JUX05BTUU7CisJcGNpX3Z0Y29uX2NvbnRyb2xfc2VuZChw b3J0LT52c3Bfc2MsICZldmVudCwgcG9ydC0+dnNwX25hbWUsCisJICAgIHN0cmxlbihwb3J0LT52 c3BfbmFtZSkpOworfQorCitzdGF0aWMgdm9pZAorcGNpX3Z0Y29uX29wZW5fcG9ydChzdHJ1Y3Qg cGNpX3Z0Y29uX3BvcnQgKnBvcnQsIGJvb2wgb3BlbikKK3sKKwlzdHJ1Y3QgcGNpX3Z0Y29uX2Nv bnRyb2wgZXZlbnQ7CisKKwlldmVudC5pZCA9IHBvcnQtPnZzcF9pZDsKKwlldmVudC5ldmVudCA9 IFZUQ09OX1BPUlRfT1BFTjsKKwlldmVudC52YWx1ZSA9IChpbnQpb3BlbjsKKwlwY2lfdnRjb25f Y29udHJvbF9zZW5kKHBvcnQtPnZzcF9zYywgJmV2ZW50LCBOVUxMLCAwKTsKK30KKworc3RhdGlj IHZvaWQKK3BjaV92dGNvbl9jb250cm9sX3NlbmQoc3RydWN0IHBjaV92dGNvbl9zb2Z0YyAqc2Ms CisgICAgc3RydWN0IHBjaV92dGNvbl9jb250cm9sICpjdHJsLCBjb25zdCB2b2lkICpwYXlsb2Fk LCBzaXplX3QgbGVuKQoreworCXN0cnVjdCB2cXVldWVfaW5mbyAqdnE7CisJc3RydWN0IGlvdmVj IGlvdjsKKwl1aW50MTZfdCBpZHg7CisJaW50IG47CisKKwl2cSA9IHBjaV92dGNvbl9wb3J0X3Rv X3ZxKCZzYy0+dnNjX2NvbnRyb2xfcG9ydCwgdHJ1ZSk7CisKKwlpZiAoIXZxX2hhc19kZXNjcyh2 cSkpCisJCXJldHVybjsKKworCW4gPSB2cV9nZXRjaGFpbih2cSwgJmlkeCwgJmlvdiwgMSwgTlVM TCk7CisKKwlhc3NlcnQobiA9PSAxKTsKKworCW1lbWNweShpb3YuaW92X2Jhc2UsIGN0cmwsIHNp emVvZihzdHJ1Y3QgcGNpX3Z0Y29uX2NvbnRyb2wpKTsKKwlpZiAocGF5bG9hZCAhPSBOVUxMICYm IGxlbiA+IDApCisJCW1lbWNweShpb3YuaW92X2Jhc2UgKyBzaXplb2Yoc3RydWN0IHBjaV92dGNv bl9jb250cm9sKSwKKwkJICAgICBwYXlsb2FkLCBsZW4pOworCisJdnFfcmVsY2hhaW4odnEsIGlk eCwgc2l6ZW9mKHN0cnVjdCBwY2lfdnRjb25fY29udHJvbCkgKyBsZW4pOworCXZxX2VuZGNoYWlu cyh2cSwgMSk7Cit9CisgICAgCisKK3N0YXRpYyB2b2lkCitwY2lfdnRjb25fbm90aWZ5X3R4KHZv aWQgKnZzYywgc3RydWN0IHZxdWV1ZV9pbmZvICp2cSkKK3sKKwlzdHJ1Y3QgcGNpX3Z0Y29uX3Nv ZnRjICpzYzsKKwlzdHJ1Y3QgcGNpX3Z0Y29uX3BvcnQgKnBvcnQ7CisJc3RydWN0IGlvdmVjIGlv dlsxXTsKKwl1aW50MTZfdCBpZHgsIG47CisJdWludDE2X3QgZmxhZ3NbOF07CisKKwlzYyA9IHZz YzsKKwlwb3J0ID0gcGNpX3Z0Y29uX3ZxX3RvX3BvcnQoc2MsIHZxKTsKKworCXdoaWxlICh2cV9o YXNfZGVzY3ModnEpKSB7CisJCW4gPSB2cV9nZXRjaGFpbih2cSwgJmlkeCwgaW92LCAxLCBmbGFn cyk7CisJCWlmIChwb3J0ICE9IE5VTEwpCisJCQlwb3J0LT52c3BfY2IocG9ydCwgcG9ydC0+dnNw X2FyZywgaW92LCAxKTsKKworCQkvKgorCQkgKiBSZWxlYXNlIHRoaXMgY2hhaW4gYW5kIGhhbmRs ZSBtb3JlCisJCSAqLworCQl2cV9yZWxjaGFpbih2cSwgaWR4LCAwKTsKKwl9CisJdnFfZW5kY2hh aW5zKHZxLCAxKTsJLyogR2VuZXJhdGUgaW50ZXJydXB0IGlmIGFwcHJvcHJpYXRlLiAqLworfQor CitzdGF0aWMgdm9pZAorcGNpX3Z0Y29uX25vdGlmeV9yeCh2b2lkICp2c2MsIHN0cnVjdCB2cXVl dWVfaW5mbyAqdnEpCit7CisJc3RydWN0IHBjaV92dGNvbl9zb2Z0YyAqc2M7CisJc3RydWN0IHBj aV92dGNvbl9wb3J0ICpwb3J0OworCisJc2MgPSB2c2M7CisJcG9ydCA9IHBjaV92dGNvbl92cV90 b19wb3J0KHNjLCB2cSk7CisKKwlpZiAoIXBvcnQtPnZzcF9yeF9yZWFkeSkgeworCQlwb3J0LT52 c3BfcnhfcmVhZHkgPSAxOworCQl2cS0+dnFfdXNlZC0+dnVfZmxhZ3MgfD0gVlJJTkdfVVNFRF9G X05PX05PVElGWTsKKwl9Cit9CisKK3N0YXRpYyBpbnQKK3BjaV92dGNvbl9pbml0KHN0cnVjdCB2 bWN0eCAqY3R4LCBzdHJ1Y3QgcGNpX2Rldmluc3QgKnBpLCBjaGFyICpvcHRzKQoreworCXN0cnVj dCBwY2lfdnRjb25fc29mdGMgKnNjOworCWNoYXIgKnBvcnRuYW1lID0gTlVMTDsKKwljaGFyICpw b3J0cGF0aCA9IE5VTEw7CisJY2hhciAqb3B0OworCWludCBpOwkKKworCXNjID0gY2FsbG9jKDEs IHNpemVvZihzdHJ1Y3QgcGNpX3Z0Y29uX3NvZnRjKSk7CisJc2MtPnZzY19jb25maWcgPSBjYWxs b2MoMSwgc2l6ZW9mKHN0cnVjdCBwY2lfdnRjb25fY29uZmlnKSk7CisJc2MtPnZzY19jb25maWct Pm1heF9ucl9wb3J0cyA9IFZUQ09OX01BWFBPUlRTOworCXNjLT52c2NfY29uZmlnLT5jb2xzID0g ODA7CisJc2MtPnZzY19jb25maWctPnJvd3MgPSAyNTsgCisKKwl2aV9zb2Z0Y19saW5rdXAoJnNj LT52c2NfdnMsICZ2dGNvbl92aV9jb25zdHMsIHNjLCBwaSwgc2MtPnZzY19xdWV1ZXMpOworCXNj LT52c2NfdnMudnNfbXR4ID0gJnNjLT52c2NfbXR4OworCisJZm9yIChpID0gMDsgaSA8IFZUQ09O X01BWFE7IGkrKykgeworCQlzYy0+dnNjX3F1ZXVlc1tpXS52cV9xc2l6ZSA9IFZUQ09OX1JJTkdT WjsKKwkJc2MtPnZzY19xdWV1ZXNbaV0udnFfbm90aWZ5ID0gaSAlIDIgPT0gMAorCQkgICAgPyBw Y2lfdnRjb25fbm90aWZ5X3J4CisJCSAgICA6IHBjaV92dGNvbl9ub3RpZnlfdHg7CisJfQorCisJ LyogaW5pdGlhbGl6ZSBjb25maWcgc3BhY2UgKi8KKwlwY2lfc2V0X2NmZ2RhdGExNihwaSwgUENJ Ul9ERVZJQ0UsIFZJUlRJT19ERVZfQ09OU09MRSk7CisJcGNpX3NldF9jZmdkYXRhMTYocGksIFBD SVJfVkVORE9SLCBWSVJUSU9fVkVORE9SKTsKKwlwY2lfc2V0X2NmZ2RhdGE4KHBpLCBQQ0lSX0NM QVNTLCBQQ0lDX1NJTVBMRUNPTU0pOworCXBjaV9zZXRfY2ZnZGF0YTE2KHBpLCBQQ0lSX1NVQkRF Vl8wLCBWSVJUSU9fVFlQRV9DT05TT0xFKTsKKwlwY2lfc2V0X2NmZ2RhdGExNihwaSwgUENJUl9T VUJWRU5EXzAsIFZJUlRJT19WRU5ET1IpOworCisJaWYgKHZpX2ludHJfaW5pdCgmc2MtPnZzY192 cywgMSwgZmJzZHJ1bl92aXJ0aW9fbXNpeCgpKSkKKwkJcmV0dXJuICgxKTsKKwl2aV9zZXRfaW9f YmFyKCZzYy0+dnNjX3ZzLCAwKTsKKworCS8qIGNyZWF0ZSBjb250cm9sIHBvcnQgKi8KKwlzYy0+ dnNjX2NvbnRyb2xfcG9ydC52c3Bfc2MgPSBzYzsKKwlzYy0+dnNjX2NvbnRyb2xfcG9ydC52c3Bf dHhxID0gMjsKKwlzYy0+dnNjX2NvbnRyb2xfcG9ydC52c3BfcnhxID0gMzsKKwlzYy0+dnNjX2Nv bnRyb2xfcG9ydC52c3BfY2IgPSBwY2lfdnRjb25fY29udHJvbF90eDsKKwlzYy0+dnNjX2NvbnRy b2xfcG9ydC52c3BfZW5hYmxlZCA9IHRydWU7CisKKwl3aGlsZSAoKG9wdCA9IHN0cnNlcCgmb3B0 cywgIiwiKSkgIT0gTlVMTCkgeworCQlwb3J0bmFtZSA9IHN0cnNlcCgmb3B0LCAiPSIpOworCQlw b3J0cGF0aCA9IHN0cmR1cChvcHQpOworCisJCS8qIGNyZWF0ZSBwb3J0ICovCisJCWlmIChwY2lf dnRjb25fc29ja19hZGQoc2MsIHBvcnRuYW1lLCBwb3J0cGF0aCkgPCAwKSB7CisJCQlmcHJpbnRm KHN0ZGVyciwgImNhbm5vdCBjcmVhdGUgcG9ydCAlczogJXNcbiIsCisJCQkgICAgcG9ydG5hbWUs IHN0cmVycm9yKGVycm5vKSk7CisJCQlyZXR1cm4gKDEpOworCQl9CisJfQorCisJcmV0dXJuICgw KTsKK30KKworc3RydWN0IHBjaV9kZXZlbXUgcGNpX2RlX3Zjb24gPSB7CisJLnBlX2VtdSA9CSJ2 aXJ0aW8tY29uc29sZSIsCisJLnBlX2luaXQgPQlwY2lfdnRjb25faW5pdCwKKwkucGVfYmFyd3Jp dGUgPQl2aV9wY2lfd3JpdGUsCisJLnBlX2JhcnJlYWQgPQl2aV9wY2lfcmVhZAorfTsKK1BDSV9F TVVMX1NFVChwY2lfZGVfdmNvbik7CmRpZmYgLS1naXQgYS91c3Iuc2Jpbi9iaHl2ZS9NYWtlZmls ZSBiL3Vzci5zYmluL2JoeXZlL01ha2VmaWxlCi0tLSBhL3Vzci5zYmluL2JoeXZlL01ha2VmaWxl CisrKyBiL3Vzci5zYmluL2JoeXZlL01ha2VmaWxlCkBAIC0zNiw2ICszNiw3IEBACiAJcGNpX2xw Yy5jCQlcCiAJcGNpX3Bhc3N0aHJ1LmMJCVwKIAlwY2lfdmlydGlvX2Jsb2NrLmMJXAorCXBjaV92 aXJ0aW9fY29uc29sZS5jCVwKIAlwY2lfdmlydGlvX25ldC5jCVwKIAlwY2lfdmlydGlvX3JuZC5j CVwKIAlwY2lfdWFydC5jCQlcCgo= --b1_a323306a2e70d59516842eb696491cc6--