Date: Sat, 20 Jan 2018 12:21:49 +0000 From: "sux2mfgj_gmail.com (Shunsuke Mie)" <phabric-noreply@FreeBSD.org> To: freebsd-virtualization@freebsd.org Subject: [Differential] D13995: NVMe controller emulator for bhyve. Message-ID: <differential-rev-PHID-DREV-vgewguea2dhplsjkeozl-req@FreeBSD.org>
next in thread | raw e-mail | index | archive | help
--b1_03bd2db2ea9364bf79c571da2b2f20e4 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: base64 c3V4Mm1mZ2pfZ21haWwuY29tIGNyZWF0ZWQgdGhpcyByZXZpc2lvbi4Kc3V4Mm1mZ2pfZ21haWwu Y29tIGFkZGVkIHJldmlld2VyczogZ3JlaGFuLCB0cmFzei4Kc3V4Mm1mZ2pfZ21haWwuY29tIGFk ZGVkIGEgcHJvamVjdDogYmh5dmUuCgpSRVZJU0lPTiBTVU1NQVJZCiAgVGhpcyBlbXVsYXRvciBp cyBpbXBsZW1lbnRlZCBhY2NvcmRpbmcgdG8gTlZNZSBzcGVjaWZpY2F0aW9uIDEuMCwgYW5kIGRp ZG4ndCBjb3ZlcmVkIGFsbC4gSG93ZXZlciwgSSB0ZXN0ZWQgdXNpbmcgYG5ld2ZzYCBhbmQgYG52 bWVjb250cm9sIHBlcmZgOyBUaGVzZSB3YXMgY2xlYXJlZC4gVGhlIHRlc3Qgd2FzIGV4ZWN1dGVk IG1hbnVhbGx5LgoKUkVWSVNJT04gREVUQUlMCiAgaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3Jn L0QxMzk5NQoKQUZGRUNURUQgRklMRVMKICBzeXMvZGV2L252bWUvbnZtZS5oCiAgdXNyLnNiaW4v Ymh5dmUvTWFrZWZpbGUKICB1c3Iuc2Jpbi9iaHl2ZS9iaHl2ZS44CiAgdXNyLnNiaW4vYmh5dmUv cGNpX252bWUuYwoKRU1BSUwgUFJFRkVSRU5DRVMKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5v cmcvc2V0dGluZ3MvcGFuZWwvZW1haWxwcmVmZXJlbmNlcy8KClRvOiBzdXgybWZnal9nbWFpbC5j b20sIGdyZWhhbiwgdHJhc3oKQ2M6IGZyZWVic2QtdmlydHVhbGl6YXRpb24tbGlzdCwgY2h1Y2sK --b1_03bd2db2ea9364bf79c571da2b2f20e4 Content-Type: text/x-patch; charset=utf-8; name="D13995.38245.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D13995.38245.patch" ZGlmZiAtLWdpdCBhL3Vzci5zYmluL2JoeXZlL3BjaV9udm1lLmMgYi91c3Iuc2Jpbi9iaHl2ZS9w Y2lfbnZtZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvdXNyLnNi aW4vYmh5dmUvcGNpX252bWUuYwpAQCAtMCwwICsxLDEyNTcgQEAKKyNpbmNsdWRlIDxzdGRpby5o PgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0 ZGJvb2wuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNs dWRlIDxwdGhyZWFkLmg+CisKKyNpbmNsdWRlIDxtYWNoaW5lL3ZtbS5oPgorI2luY2x1ZGUgPHZt bWFwaS5oPgorCisjaW5jbHVkZSA8bnZtZS5oPgorCisjaW5jbHVkZSAicGNpX2VtdWwuaCIKKyNp bmNsdWRlICJibG9ja19pZi5oIgorI2luY2x1ZGUgImJoeXZlcnVuLmgiCisKKyNpZmRlZiBOVk1F X0RFQlVHCitzdGF0aWMgRklMRSogZGJnOworI2RlZmluZSBEUFJJTlRGKGZvcm1hdCwgYXJnLi4u KSAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg IGZwcmludGYoZGJnLCBmb3JtYXQsICMjYXJnKTsgXAorICAgICAgICBmZmx1c2goZGJnKTsgICAg ICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorI2Vsc2UKKyNkZWZpbmUgRFBSSU5URihm b3JtYXQsIGFyZy4uLikKKyNlbmRpZgorCitlbnVtIG52bWVfY29udHJvbGxlcl9yZWdpc3Rlcl9v ZmZzZXRzIHsKKyAgICBOVk1FX0NSX0NBUF9MT1cgPSAweDAwLAorICAgIE5WTUVfQ1JfQ0FQX0hJ ID0gMHgwNCwKKyAgICBOVk1FX0NSX1ZTID0gMHgwOCwKKyAgICBOVk1FX0NSX0lOVE1TID0gMHgw YywKKyAgICBOVk1FX0NSX0lOVE1DID0gMHgxMCwKKyAgICBOVk1FX0NSX0NDID0gMHgxNCwKKyAg ICBOVk1FX0NSX0NTVFMgPSAweDFjLAorICAgIE5WTUVfQ1JfTlNTUiA9IDB4MjAsCisgICAgTlZN RV9DUl9BUUEgPSAweDI0LAorICAgIE5WTUVfQ1JfQVNRX0xPVyA9IDB4MjgsCisgICAgTlZNRV9D Ul9BU1FfSEkgPSAweDJjLAorICAgIE5WTUVfQ1JfQUNRX0xPVyA9IDB4MzAsCisgICAgTlZNRV9D Ul9BQ1FfSEkgPSAweDM0LAorICAgIC8vIHN1Ym1pc3Npb24gcXVldWUgMCB0YWlsIGRvb3JiZWxs IChhZG1pbikKKyAgICBOVk1FX0NSX0lPX1FVRVVFX0JBU0UgPSAweDEwMDAsCisgICAgLyoKKyAg ICAgKiAweDEwMDAgfiAweDEwMDMgIDogc3VibWlzc2lvbiBxdWV1ZSAwIGhlYWQgZG9vcmJlbGwo YWRtaW4pCisgICAgICogMHgxMDA0IH4gMHgxMDA3ICA6IGNvbXBsZXRpb24gcXVldWUgMCB0YWls IGRvb3JiZWxsKGFkbWluKQorICAgICAqIDB4MTAwOCB+IDB4MTAwYiAgOiBzdWJtaXNzaW9uIHF1 ZXVlIDEgaGVhZCBkb29yYmVsbAorICAgICAqIDB4MTAwYyB+IDB4MTAwZiAgOiBjb21wbGV0aW9u IHF1ZXVlIDEgdGFpbCBkb29yYmVsbAorICAgICAqLworICAgIE5WTUVfQ1JfQURNSU5fU1FfVEFJ TCA9IDB4MTAwMCwKKyAgICBOVk1FX0NSX0FETUlOX0NRX0hFQUQgPSAweDEwMDQsCisgICAgTlZN RV9DUl9TUV8xX1RBSUwgPSAweDEwMDgsCisgICAgTlZNRV9DUl9DUV8xX0hFQUQgPSAweDEwMGMs CisgICAgTlZNRV9DUl9TSVpFID0gMHgxMDEwLAorfTsKKworI2RlZmluZSBOVk1FX0lPX1NRX05V TSAxCisjZGVmaW5lIE5WTUVfSU9fQ1FfTlVNIDEKKworI2RlZmluZSBOVk1FX0lPX1NRU19TSVpF IChOVk1FX0lPX1NRX05VTSArIDEpCisjZGVmaW5lIE5WTUVfSU9fQ1FTX1NJWkUgKE5WTUVfSU9f Q1FfTlVNICsgMSkKKworZW51bSBudm1lX3BjaV9iYXIgeworICAgIE5WTUVfQkFSX0NSID0gMCwg Ly8gMCBhbmQgMQorICAgIE5WTUVfQkFSX1JTViA9IDMsIC8vIHJlc2VydmVkCisgICAgTlZNRV9C QVJfTVNJWCA9IDQsIC8vIDQgYW5kIDUKK307CisKKy8qCisgKiBOVk1FX0NSX0FETUlOX0NRX0hF QUQgYW5kIE5WTWUgSS9PIGNvbXBsZXRpb24gcXVldWVzCisgKi8KKyNkZWZpbmUgTlZNRV9DT01Q TEVUSU9OX1FVRVVFX05VTSAoTlZNRV9JT19DUV9OVU0gKyAxKQorCitlbnVtIG52bWVfY21kX2lk ZW50aWZ5X2NkdzEwIHsKKyAgICBOVk1FX0NNRF9JREVOVElGWV9DRFcxMF9DTlRJRCA9IDB4ZmZm ZjAwMDAsCisgICAgTlZNRV9DTURfSURFTlRJRllfQ0RXMTBfUlNWID0gMHgwMDAwZmYwMCwKKyAg ICBOVk1FX0NNRF9JREVOVElGWV9DRFcxMF9DTlMgPSAweDAwMDAwMGZmLAorfTsKKworZW51bSBu dm1lX2NtZF9pZGVudGlmeV9kYXRhIHsKKyAgICBOVk1FX0NNRF9JREVOVElGWV9DTlNfTkFNRVNQ QUNFID0gMHgwLAorICAgIE5WTUVfQ01EX0lERU5USUZZX0NOU19DT05UUk9MTEVSID0gMHgxLAor fTsKKworZW51bSBudm1lX2NjX2JpdHMgeworICAgIE5WTUVfQ0NfRU4gPSAweDAwMDAwMDAxLAor ICAgIE5WTUVfQ0NfUlNWMCA9IDB4MDAwMDAwMGUsCisgICAgTlZNRV9DQ19DQ1MgPSAweDAwMDAw MDcwLAorICAgIE5WTUVfQ0NfTVBTID0gMHgwMDAwMDc4MCwKKyAgICBOVk1FX0NDX0FNUyA9IDB4 MDAwMDM4MDAsCisgICAgTlZNRV9DQ19TSE4gPSAweDAwMDBjMDAwLAorICAgIE5WTUVfQ0NfSU9T UUVTID0gMHgwMDBmMDAwMCwKKyAgICBOVk1FX0NDX0lPQ1FFUyA9IDB4MDBmMDAwMDAsCisgICAg TlZNRV9DQ19SU1YxID0gMHhmZjAwMDAwMCwKK307CisKK3N0cnVjdCBudm1lX2ZlYXR1cmVzIHsK KyAgICB1bmlvbiB7CisgICAgICAgIHVpbnQzMl90IHJhdzsKKyAgICAgICAgc3RydWN0IHsKKyAg ICAgICAgICAgIHVpbnQ4X3QgYWIgOiAyOworICAgICAgICAgICAgdWludDhfdCByZXNlcnZlZCA6 IDU7CisgICAgICAgICAgICB1aW50OF90IGxwdyA6IDg7CisgICAgICAgICAgICB1aW50OF90IG1w dyA6IDg7CisgICAgICAgICAgICB1aW50OF90IGhwdyA6IDg7CisgICAgICAgIH0gX19wYWNrZWQg Yml0czsKKyAgICB9IF9fcGFja2VkIGFyYml0cmF0aW9uOworCisgICAgdW5pb24geworICAgICAg ICB1aW50MzJfdCByYXc7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50OF90IHBz IDogNTsKKyAgICAgICAgICAgIHVpbnQzMl90IHJlc2VydmVkIDogMjc7CisgICAgICAgIH0gX19w YWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIHBvd2VyX21hbmFnZW1lbnQ7CisKKyAgICB1bmlv biB7CisgICAgICAgIHVpbnQzMl90IHJhdzsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAg IHVpbnQ4X3QgbnVtIDogNjsKKyAgICAgICAgICAgIHVpbnQzMl90IHJlc2VydmVkIDogMjY7Cisg ICAgICAgIH0gX19wYWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIGxiYV9yYW5nZV90eXBlOwor CisgICAgdW5pb24geworICAgICAgICB1aW50MzJfdCByYXc7CisgICAgICAgIHN0cnVjdCB7Cisg ICAgICAgICAgICB1aW50MTZfdCBvdmVyOworICAgICAgICAgICAgdWludDE2X3QgdW5kZXI7Cisg ICAgICAgIH0gX19wYWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIHRlbXBhcnR1cmVfdGhyZXNo b2xkOworCisgICAgdW5pb24geworICAgICAgICB1aW50MzJfdCByYXc7CisgICAgICAgIHN0cnVj dCB7CisgICAgICAgICAgICB1aW50MTZfdCB0bGVyOworICAgICAgICAgICAgdWludDE2X3QgcmVz ZXJ2ZWQ7CisgICAgICAgIH0gX19wYWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIGVycm9yX3Jl Y292ZXJ5OworCisgICAgdW5pb24geworICAgICAgICB1aW50MzJfdCByYXc7CisgICAgICAgIHN0 cnVjdCB7CisgICAgICAgICAgICB1aW50OF90IHdjZSA6IDE7CisgICAgICAgICAgICB1aW50MzJf dCByZXNlcnZlZCA6IDMxOworICAgICAgICB9IF9fcGFja2VkIGJpdHM7CisgICAgfSBfX3BhY2tl ZCB2b2xhdGlsZV93cml0ZV9jYWNoZTsKKworICAgIHVuaW9uIHsKKyAgICAgICAgdWludDMyX3Qg cmF3OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDE2X3QgbmNxciA6IDE2Owor ICAgICAgICAgICAgdWludDE2X3QgbnNxciA6IDE2OworICAgICAgICB9IF9fcGFja2VkIGJpdHM7 CisgICAgfSBfX3BhY2tlZCBudW1fb2ZfcXVldWVzOworCisgICAgdW5pb24geworICAgICAgICB1 aW50MzJfdCByYXc7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50OF90IHRociA6 IDg7CisgICAgICAgICAgICB1aW50OF90IHRpbWUgOiA4OworICAgICAgICAgICAgdWludDE2X3Qg cmVzZXJ2ZWQgOiAxNjsKKyAgICAgICAgfSBfX3BhY2tlZCBiaXRzOworICAgIH0gX19wYWNrZWQg aW50ZXJydXB0X2NvYWxzY2luZzsKKworICAgIHVuaW9uIHsKKyAgICAgICAgdWludDMyX3QgcmF3 OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDE2X3QgaXY7CisgICAgICAgICAg ICB1aW50OF90IGNkIDogMTsKKyAgICAgICAgICAgIHVpbnQxNl90IHJlc2VydmVkIDogMTU7Cisg ICAgICAgIH0gX19wYWNrZWQgYml0czsKKworCisgICAgfSBfX3BhY2tlZCBpbnRlcnJ1cHRfdmVj dG9yX2NvbmZpZzsKKworICAgIHVuaW9uIHsKKyAgICAgICAgdWludDMyX3QgcmF3OworICAgICAg ICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDhfdCBkbiA6IDE7CisgICAgICAgICAgICB1aW50 MzJfdCByZXNlcnZlZCA6IDMxOworICAgICAgICB9IF9fcGFja2VkIGJpdHM7CisgICAgfSBfX3Bh Y2tlZCB3cml0ZV9hdG9taWNpdHk7CisKKyAgICB1bmlvbiB7CisgICAgICAgIHVpbnQzMl90IHJh dzsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQxNl90IHNtYXJ0IDogODsKKyAg ICAgICAgICAgIHVpbnQxNl90IG5zX2F0dHJfbm90aSA6IDE7CisgICAgICAgICAgICB1aW50MTZf dCBmd19hY3Rfbm90aSA6IDE7CisgICAgICAgICAgICB1aW50MTZfdCB0ZWxlX2xvZ19ub3RpIDog MTsKKyAgICAgICAgICAgIHVpbnQzMl90IHJlc2VydmVkIDogMjE7CisgICAgICAgIH0gX19wYWNr ZWQgYml0czsKKyAgICB9IF9fcGFja2VkIGFzeW5jX2V2ZW50X2NvbmZpZzsKKworICAgIHVuaW9u IHsKKyAgICAgICAgdWludDMyX3QgcmF3OworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAg dWludDhfdCBwYnNsYzsKKyAgICAgICAgICAgIHVpbnQzMl90IHJlc2VydmVkIDogMjQ7CisgICAg ICAgIH0gX19wYWNrZWQgYml0czsKKyAgICB9IF9fcGFja2VkIHNvZnR3YXJlX3Byb2dyZXNzX21h cmtlcjsKKworfTsKKworc3RydWN0IG52bWVfY29tcGxldGlvbl9xdWV1ZV9pbmZvIHsKKyAgICB1 aW50cHRyX3QgYmFzZV9hZGRyOworICAgIHVpbnQxNl90IHNpemU7CisgICAgdWludDE2X3QgdGFp bDsKKyAgICB1aW50MTZfdCBxaWQ7CisgICAgdWludDE2X3QgaW50ZXJydXB0X3ZlY3RvcjsKKyAg ICBwdGhyZWFkX211dGV4X3QgbXR4OworfTsKKworc3RydWN0IHBjaV9udm1lX3NvZnRjOworLy8g aW8gcmVxdWVzdCB0byBibG9ja19pZi4KK3N0cnVjdCBudm1lX2lvcmVxIHsKKyAgICBzdHJ1Y3Qg YmxvY2tpZl9yZXEgaW9fcmVxOworICAgIHN0cnVjdCBudm1lX2NvbXBsZXRpb24gY29tcGxldGlv bl9lbnRyeTsKKyAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uX3F1ZXVlX2luZm8qIGNxX2luZm87 CisgICAgc3RydWN0IG52bWVfc3VibWlzc2lvbl9xdWV1ZV9pbmZvKiBzcV9pbmZvOworICAgIHN0 cnVjdCBwY2lfbnZtZV9zb2Z0Yyogc2M7CisgICAgU1RBSUxRX0VOVFJZKG52bWVfaW9yZXEpIGlv X2ZsaXN0OworICAgIFRBSUxRX0VOVFJZKG52bWVfaW9yZXEpIGlvX2JsaXN0OworfTsKKworc3Ry dWN0IG52bWVfc3VibWlzc2lvbl9xdWV1ZV9pbmZvIHsKKyAgICB1aW50cHRyX3QgYmFzZV9hZGRy OworICAgIHVpbnQxNl90IHNpemU7CisgICAgdWludDE2X3QgcWlkOworICAgIHVpbnQxNl90IGNv bXBsZXRpb25fcWlkOworICAgIHN0cnVjdCBudm1lX2lvcmVxKiBpb3JlcTsKKyAgICBTVEFJTFFf SEVBRChudm1lX2ZoZWFkLCBudm1lX2lvcmVxKSBpb2ZoZDsKKyAgICBUQUlMUV9IRUFEKG52bWVf YmhlYWQsIG52bWVfaW9yZXEpIGlvYmhkOworfTsKKworc3RydWN0IHBjaV9udm1lX3NvZnRjIHsK KyAgICBzdHJ1Y3QgbnZtZV9yZWdpc3RlcnMgcmVnczsKKyAgICBzdHJ1Y3QgbnZtZV9mZWF0dXJl cyBmZWF0dXJlczsKKyAgICBzdHJ1Y3QgcGNpX2Rldmluc3QqIHBpOworICAgIHVpbnQxNl90IGNv bXBsZXRpb25fcXVldWVfaGVhZDsKKyAgICB1aW50MTZfdCBzdWJtaXNzaW9uX3F1ZXVlX3RhaWw7 CisgICAgdWludHB0cl90IGFzcV9iYXNlOworICAgIHVpbnRwdHJfdCBhY3FfYmFzZTsKKyAgICBz dHJ1Y3QgbnZtZV9jb250cm9sbGVyX2RhdGEgY29udHJvbGxlcl9kYXRhOworICAgIHN0cnVjdCBu dm1lX25hbWVzcGFjZV9kYXRhIG5hbWVzcGFjZV9kYXRhOworICAgIHN0cnVjdCBudm1lX2NvbXBs ZXRpb25fcXVldWVfaW5mbyogY3FzX2luZm87CisgICAgc3RydWN0IG52bWVfc3VibWlzc2lvbl9x dWV1ZV9pbmZvKiBzcXNfaW5mbzsKKyAgICBzdHJ1Y3QgYmxvY2tpZl9jdHh0KiBiY3R4OworfTsK Kworc3RhdGljIHZvaWQgcGNpX252bWVfcmVzZXQoc3RydWN0IHBjaV9udm1lX3NvZnRjKiBzYykK K3sKKyAgICAvKgorICAgICAqIENvbnRyb2xsZXIgUmVnaXN0ZXIgdmFsdWVzIGFyZSBhY2NvcmRp bmcgdG8gTlZNZSBzcGVjaWZpY2F0aW9uIDEuMGUuCisgICAgICovCisKKyAgICAvKgorICAgICAq IENvbnRyb2xsZXIgQ2FwYWJpbGl0ZXMKKyAgICAgKi8KKyAgICAvLyBNYXhpbXVtIHF1ZXVlIChJ L08gc3VibWlzc2lvbiBhbmQgY29tcGxldGlvbiBxdWV1ZSkgZW50cmllcyBzdXBwb3J0ZWQgYnkg bnZtZSBjb250cm9sbGVyCisgICAgc2MtPnJlZ3MuY2FwX2xvLmJpdHMubXFlcyA9IDB4MTA7CisK KyAgICAvLyBDb250aWd1b3VzIFF1ZXVlcyBSZXF1aXJlZAorICAgIHNjLT5yZWdzLmNhcF9sby5i aXRzLmNxciA9IDE7CisgICAgc2MtPnJlZ3MuY2FwX2xvLmJpdHMuYW1zID0gMDsKKyAgICBzYy0+ cmVncy5jYXBfbG8uYml0cy5yZXNlcnZlZDEgPSAwOworICAgIHNjLT5yZWdzLmNhcF9sby5iaXRz LnRvID0gMTA7CisKKyAgICBzYy0+cmVncy5jYXBfaGkuYml0cy5kc3RyZCA9IDA7CisgICAgc2Mt PnJlZ3MuY2FwX2hpLmJpdHMucmVzZXJ2ZWQzID0gMDsKKyAgICBzYy0+cmVncy5jYXBfaGkuYml0 cy5jc3NfbnZtID0gMDsKKyAgICBzYy0+cmVncy5jYXBfaGkuYml0cy5jc3NfcmVzZXJ2ZWQgPSAw OworICAgIHNjLT5yZWdzLmNhcF9oaS5iaXRzLnJlc2VydmVkMiA9IDA7CisgICAgLyoKKyAgICAg KiBNUFNNSU4gYW5kIE1QU01BWCAKKyAgICAgKiAgaW5kaWNhdGUgdGhlIG1pbmltdW0gYW5kIG1h eGltdW0gaG9zdCBtZW1vcnkgcGFnZSBzaXplCisgICAgICogICgyIF4gKDEyICsgTVBTTUFYIG9y IE1QU01JTikpCisgICAgICovCisgICAgc2MtPnJlZ3MuY2FwX2hpLmJpdHMubXBzbWluID0gMDsK KyAgICBzYy0+cmVncy5jYXBfaGkuYml0cy5tcHNtYXggPSAwOworICAgIHNjLT5yZWdzLmNhcF9o aS5iaXRzLnJlc2VydmVkMSA9IDA7CisKKyAgICAvKgorICAgICAqIFZlcnNpb24gb2YgTlZNIGV4 cHJlc3Mgc3BlY2lmaWNhdGlvbi4KKyAgICAgKi8gCisgICAgLy8gaW4gdGhpcyBjYXNlLCB0aGUg dmVyc2lvbiBpcyAxLjAKKyAgICB1aW50MzJfdCB2ZXJzaW9uID0gKDB4MDAwMSA8PCAxNikgfCAw eDAwMDA7CisgICAgc2MtPnJlZ3MudnMgPSB2ZXJzaW9uOworCisgICAgLy8gSW50ZXJydXB0IE1h c2sgU2V0CisgICAgc2MtPnJlZ3MuaW50bXMgPSAwOworICAgIAorICAgIC8vIEludGVycnVwdCBN YXNrIGNsZWFyCisgICAgc2MtPnJlZ3MuaW50bWMgPSAwOworCisgICAgc2MtPnJlZ3MuY2MucmF3 ID0gMDsKKworICAgIHNjLT5yZWdzLmNzdHMucmF3ID0gMDsKKworICAgIHNjLT5jb21wbGV0aW9u X3F1ZXVlX2hlYWQgPSAwOworICAgIHNjLT5hc3FfYmFzZSA9IDA7CisgICAgc2MtPmFjcV9iYXNl ID0gMDsKK30KKworc3RhdGljIHZvaWQgbnZtZV9pbml0aWFsaXplX2ZlYXR1cmUoc3RydWN0IHBj aV9udm1lX3NvZnRjKiBzYykKK3sKKyAgICBzYy0+ZmVhdHVyZXMuYXJiaXRyYXRpb24ucmF3ID0g MDsKKworICAgIHNjLT5mZWF0dXJlcy50ZW1wYXJ0dXJlX3RocmVzaG9sZC5iaXRzLm92ZXIgPSAw eGZmZmY7CisgICAgc2MtPmZlYXR1cmVzLnRlbXBhcnR1cmVfdGhyZXNob2xkLmJpdHMudW5kZXIg PSAweDAwMDA7CisKKyAgICBzYy0+ZmVhdHVyZXMucG93ZXJfbWFuYWdlbWVudC5yYXcgPSAwOwor CisgICAgc2MtPmZlYXR1cmVzLmVycm9yX3JlY292ZXJ5LnJhdyA9IDA7CisgICAgCisgICAgc2Mt PmZlYXR1cmVzLm51bV9vZl9xdWV1ZXMucmF3ID0gMDsKKworICAgIHNjLT5mZWF0dXJlcy5pbnRl cnJ1cHRfY29hbHNjaW5nLnJhdyA9IDA7CisKKyAgICBzYy0+ZmVhdHVyZXMuaW50ZXJydXB0X3Zl Y3Rvcl9jb25maWcucmF3ID0gMDsKKyAgICBzYy0+ZmVhdHVyZXMuaW50ZXJydXB0X3ZlY3Rvcl9j b25maWcuYml0cy5jZCA9IDE7CisKKyAgICBzYy0+ZmVhdHVyZXMuYXN5bmNfZXZlbnRfY29uZmln LnJhdyA9IDA7Cit9CisKK3N0YXRpYyB2b2lkIG52bWVfaW5pdGlhbGl6ZV9pZGVudGlmeShzdHJ1 Y3QgcGNpX252bWVfc29mdGMqIHNjKQoreworICAgIC8vIG9ubHkgb25lIG5hbWVzcGFjZQorICAg IHNjLT5jb250cm9sbGVyX2RhdGEubm4gPSAweDE7ICAKKworICAgIC8vIExCQSBmb3JtYXQKKyAg ICBzYy0+bmFtZXNwYWNlX2RhdGEubGJhZlswXS5tcyA9IDB4MDA7CisKKyAgICAvKgorICAgICAq IExCQSBkYXRhIHNpemUgaXMgMl5uIChuIGlzIHN0YXJ0ZWQgYnkgMCkKKyAgICAgKiBzaG91bGQg YmUgbGFyZ2VyIHRoYW4gOS4oaS5lLiA1MTIgYnl0ZXMpCisgICAgICovCisgICAgdWludDY0X3Qg bGJhX2RhdGFfc2l6ZSA9IDk7CisgICAgc2MtPm5hbWVzcGFjZV9kYXRhLmxiYWZbMF0ubGJhZHMg PSBsYmFfZGF0YV9zaXplOworICAgIHNjLT5uYW1lc3BhY2VfZGF0YS5sYmFmWzBdLnJwID0gMHgw OworCisgICAgc2MtPm5hbWVzcGFjZV9kYXRhLm5sYmFmID0gMHgwMDsKKyAgICBzYy0+bmFtZXNw YWNlX2RhdGEuZmxiYXMuZm9ybWF0ID0gMHgwMDsKKyAgICBzYy0+bmFtZXNwYWNlX2RhdGEubmxi YWYgPSAweDE7CisKKyAgICB1aW50NjRfdCBibG9ja19zaXplID0gYmxvY2tpZl9zaXplKHNjLT5i Y3R4KTsKKyAgICBzYy0+bmFtZXNwYWNlX2RhdGEubnN6ZSA9IGJsb2NrX3NpemUgLyAoMiA8PCAo bGJhX2RhdGFfc2l6ZSAtIDEpKTsKKyAgICBzYy0+bmFtZXNwYWNlX2RhdGEubmNhcCA9IGJsb2Nr X3NpemUgLyAoMiA8PCAobGJhX2RhdGFfc2l6ZSAtIDEpKTsKK30KKworc3RhdGljIGludCBwY2lf bnZtZV9zdWJtaXNzaW9uX3F1ZXVlX2luaXQoCisgICAgc3RydWN0IG52bWVfc3VibWlzc2lvbl9x dWV1ZV9pbmZvKiBxaW5mbywKKyAgICBzdHJ1Y3QgYmxvY2tpZl9jdHh0KiBjdHh0KQoreworICAg IHN0cnVjdCBudm1lX2lvcmVxKiByZXE7CisgICAgaW50IGlvcV9zaXplID0gYmxvY2tpZl9xdWV1 ZXN6KGN0eHQpOworICAgIHFpbmZvLT5pb3JlcSA9IGNhbGxvYyhpb3Ffc2l6ZSwgc2l6ZW9mKHN0 cnVjdCBudm1lX2lvcmVxKSk7CisgICAgU1RBSUxRX0lOSVQoJnFpbmZvLT5pb2ZoZCk7CisKKyAg ICAvLyBzZXR1cCBhbmQgaW5zZXJ0IHJlcXVlc3RzIHRvIHRoZSBmcmVlIHF1ZXVlCisgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBpb3Ffc2l6ZTsgKytpKSB7CisgICAgICAgIHJlcSA9ICZxaW5mby0+ aW9yZXFbaV07CisgICAgICAgIHJlcS0+c3FfaW5mbyA9IHFpbmZvOworICAgICAgICAvLyBzZXR1 cCBjYWxsYmFjayBmdW5jdGlvbgorICAgICAgICBTVEFJTFFfSU5TRVJUX1RBSUwoJnFpbmZvLT5p b2ZoZCwgcmVxLCBpb19mbGlzdCk7CisgICAgfQorCisgICAgVEFJTFFfSU5JVCgmcWluZm8tPmlv YmhkKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3BjaV9udm1lX2NxX2luaXQo c3RydWN0IG52bWVfY29tcGxldGlvbl9xdWV1ZV9pbmZvKiBjcWluZm8pIAoreworICAgIHB0aHJl YWRfbXV0ZXhfaW5pdCgmY3FpbmZvLT5tdHgsIE5VTEwpOworICAgIGNxaW5mby0+YmFzZV9hZGRy ID0gKHVpbnRwdHJfdClOVUxMOworICAgIGNxaW5mby0+c2l6ZSA9IC0xOworICAgIGNxaW5mby0+ dGFpbCA9IDA7CisgICAgY3FpbmZvLT5xaWQgPSAtMTsKKyAgICBjcWluZm8tPmludGVycnVwdF92 ZWN0b3IgPSAtMTsKK30KKworc3RhdGljIGludCBwY2lfbnZtZV9pbml0KHN0cnVjdCB2bWN0eCog Y3R4LCBzdHJ1Y3QgcGNpX2Rldmluc3QqIHBpLCBjaGFyKiBvcHRzKQoreworICAgIHN0cnVjdCBw Y2lfbnZtZV9zb2Z0Yyogc2M7CisgICAgc3RydWN0IGJsb2NraWZfY3R4dCogYmN0eHQ7CisJY2hh ciBiaWRlbnRbc2l6ZW9mKCJYWDpYOlgiKV07CisKKyNpZmRlZiBOVk1FX0RFQlVHCisgICAgZGJn ID0gZm9wZW4oIi90bXAvbnZtZV9lbXVfbG9nIiwgIncrIik7CisjZW5kaWYKKyAgICBEUFJJTlRG KCItLS0gc3RhcnQgbnZtZSBjb250cm9sbGVyIC0tLVxuIik7CisKKyAgICBpZiAob3B0cyA9PSBO VUxMKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAicGNpX252bWU6IGJhY2tpbmcgZGV2aWNl IHJlcXVpcmVkXG4iKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIERQUklOVEYoIiVz XG4iLCBvcHRzKTsKKworICAgIC8qIAorICAgICAqIEF0dGVtcHQgdG8gb3BlbiB0aGUgYmFja2lu ZyBpbWFnZS4gVXNlIHRoZSBQQ0kKKwkgKiBzbG90L2Z1bmMgZm9yIHRoZSBpZGVudGlmaWVyIHN0 cmluZy4KKwkgKi8KKwlzbnByaW50ZihiaWRlbnQsIHNpemVvZihiaWRlbnQpLCAiJWQ6JWQiLCBw aS0+cGlfc2xvdCwgcGktPnBpX2Z1bmMpOworICAgIGJjdHh0ID0gYmxvY2tpZl9vcGVuKG9wdHMs IGJpZGVudCk7CisgICAgaWYgKGJjdHh0ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmYWlsOwor ICAgIH0KKworLyogICAgIHBjaV9zZXRfY2ZnZGF0YTE2KHBpLCBQQ0lSX0RFVklDRSwgMHgwOTUz KTsgKi8KKyAgICBwY2lfc2V0X2NmZ2RhdGExNihwaSwgUENJUl9ERVZJQ0UsIDB4MDExMSk7Cisg ICAgcGNpX3NldF9jZmdkYXRhMTYocGksIFBDSVJfVkVORE9SLCAweDgwODYpOworICAgIHBjaV9z ZXRfY2ZnZGF0YTgocGksIFBDSVJfQ0xBU1MsIFBDSUNfU1RPUkFHRSk7CisKKyAgICAvLyBmb3Ig TlZNZSBDb250cm9sbGVyIFJlZ2lzdGVycworICAgIGlmIChwY2lfZW11bF9hbGxvY19iYXIocGks IE5WTUVfQkFSX0NSLCBQQ0lCQVJfTUVNNjQsIE5WTUVfQ1JfU0laRSkpIHsKKyAgICAgICAgRFBS SU5URigiZXJyb3IgaXMgb2NjdXJlZCBpbiBwY2lfZW11bF9hbGxvY19iYXJcbiIpOworICAgICAg ICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgLy8gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGUg Y29udHJvbGxlciBhbGxvY2F0ZSBhIHVuaXF1ZXVlIE1TSS1YIHZlY3RvciBmb3IgZWFjaCBjb21w bGV0aW9uIHF1ZXVlLgorICAgIGlmIChwY2lfZW11bF9hZGRfbXNpeGNhcChwaSwgTlZNRV9DT01Q TEVUSU9OX1FVRVVFX05VTSwgTlZNRV9CQVJfTVNJWCkpIAorICAgIHsKKyAgICAgICAgRFBSSU5U RigiZXJyb3IgaXMgb2NjdXJlZCBpbiBwY2lfZW11bF9hZGRfbXNpeGNhcFxuIik7CisgICAgICAg IGdvdG8gZmFpbDsKKyAgICB9CisgICAgRFBSSU5URigidGFibGUgJWQsIHBiYSAlZFxuIiwgcGNp X21zaXhfdGFibGVfYmFyKHBpKSwgcGNpX21zaXhfcGJhX2JhcihwaSkpOworCisgICAgc2MgPSBj YWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBwY2lfbnZtZV9zb2Z0YykpOworICAgIHBpLT5waV9hcmcg PSBzYzsKKyAgICBwaS0+cGlfdm1jdHggPSBjdHg7CisgICAgc2MtPnBpID0gcGk7CisKKyAgICBz Yy0+YmN0eCA9IGJjdHh0OworCisgICAgcGNpX252bWVfcmVzZXQoc2MpOworCisgICAgc2MtPmNx c19pbmZvID0gY2FsbG9jKE5WTUVfSU9fQ1FTX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVvZihzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uX3F1ZXVlX2luZm8pKTsKKyAgICBmb3Io aW50IGk9MDsgaTwgTlZNRV9JT19DUVNfU0laRTsgKytpKSB7CisgICAgICAgIHBjaV9udm1lX2Nx X2luaXQoJnNjLT5jcXNfaW5mb1tpXSk7CisgICAgfQorCisgICAgc2MtPnNxc19pbmZvID0gY2Fs bG9jKE5WTUVfSU9fU1FTX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihz dHJ1Y3QgbnZtZV9zdWJtaXNzaW9uX3F1ZXVlX2luZm8pKTsKKworICAgIGZvciAoaW50IGkgPSAw OyBpIDwgTlZNRV9JT19TUVNfU0laRTsgKytpKSB7CisgICAgICAgIHBjaV9udm1lX3N1Ym1pc3Np b25fcXVldWVfaW5pdCgmc2MtPnNxc19pbmZvW2ldLCBzYy0+YmN0eCk7CisgICAgfQorCisgICAg bnZtZV9pbml0aWFsaXplX2lkZW50aWZ5KHNjKTsKKyAgICBudm1lX2luaXRpYWxpemVfZmVhdHVy ZShzYyk7CisKKyAgICByZXR1cm4gMDsKKworZmFpbDoKKyAgICBibG9ja2lmX2Nsb3NlKGJjdHh0 KTsKKyAgICBmcmVlKHNjLT5jcXNfaW5mbyk7CisgICAgZnJlZShzYy0+c3FzX2luZm8pOworICAg IGZyZWUoc2MpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgdm9pZCBwY2lfbnZtZV9zZXR1 cF9jb250cm9sbGVyKHN0cnVjdCB2bWN0eCogY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjKQoreworICAgIERQUklOVEYo ImFzcXMgMHgleCwgYWNxcyAweCV4XG4iLCBzYy0+cmVncy5hcWEuYml0cy5hc3FzLAorICAgICAg ICAgICAgc2MtPnJlZ3MuYXFhLmJpdHMuYWNxcyk7CisgICAgc2MtPmFzcV9iYXNlID0gKHVpbnRw dHJfdCl2bV9tYXBfZ3BhKAorICAgICAgICBjdHgsIHNjLT5yZWdzLmFzcSwKKyAgICAgICAgc2l6 ZW9mKHN0cnVjdCBudm1lX2NvbW1hbmQpICogc2MtPnJlZ3MuYXFhLmJpdHMuYXNxcyk7CisgICAg c2MtPmFjcV9iYXNlID0gKHVpbnRwdHJfdCl2bV9tYXBfZ3BhKAorICAgICAgICBjdHgsIHNjLT5y ZWdzLmFjcSwKKyAgICAgICAgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbXBsZXRpb24pICogc2MtPnJl Z3MuYXFhLmJpdHMuYWNxcyk7CisKKyAgICBzYy0+cmVncy5jc3RzLmJpdHMucmR5ID0gMTsKK30K Kworc3RhdGljIHZvaWQgZXhlY3V0ZV9zZXRfZmVhdHVyZV9jb21tYW5kKHN0cnVjdCBwY2lfbnZt ZV9zb2Z0Yyogc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IG52bWVfY29tbWFuZCogY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uKiBjbXBfZW50cnkpCit7CisgICAgRFBS SU5URigiMHgleFxuIiwgY29tbWFuZC0+Y2R3MTEpOworICAgIERQUklOVEYoIjB4JXhcbiIsIGNv bW1hbmQtPmNkdzEwKTsKKyAgICBjbXBfZW50cnktPmNkdzAgPSAweDAwMDAwMDAwOworICAgIGVu dW0gbnZtZV9mZWF0dXJlIGZlYXR1cmUgPSBjb21tYW5kLT5jZHcxMCAmIDB4ZjsKKyAgICBzd2l0 Y2ggKGZlYXR1cmUpIHsKKyAgICAgICAgY2FzZSBOVk1FX0ZFQVRfTlVNQkVSX09GX1FVRVVFUzoK KyAgICAgICAgICAgIHNjLT5mZWF0dXJlcy5udW1fb2ZfcXVldWVzLnJhdyA9IGNvbW1hbmQtPmNk dzExICYgMHhmZmZmOworICAgICAgICAgICAgRFBSSU5URigiU0VUX0ZFQVRVUkUgY21kOiBuY3Fy IDB4JXgsIG5zcXIgMHgleFxuIiwKKyAgICAgICAgICAgICAgICAgICAgKGNvbW1hbmQtPmNkdzEx ID4+IDE2KSwgKGNvbW1hbmQtPmNkdzExICYgMHhmZmZmKSk7CisgICAgICAgICAgICBjbXBfZW50 cnktPnN0YXR1cy5zYyA9IDB4MDA7CisgICAgICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zY3Qg PSAweDA7CisgICAgICAgICAgICBpZiAocGNpX21zaXhfZW5hYmxlZChzYy0+cGkpKSB7CisgICAg ICAgICAgICAgICAgRFBSSU5URigiZ2VuZXJhdGUgbXNpeCwgdGFibGVfY291bnQgJWQsIFxuIiwK KyAgICAgICAgICAgICAgICAgICAgICAgIHNjLT5waS0+cGlfbXNpeC50YWJsZV9jb3VudCk7Cisg ICAgICAgICAgICAgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCAwKTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydCgwICYmICJwY2lf bXNpeCBpcyBkaXNhYmxlPyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisK KyAgICAgICAgY2FzZSBOVk1FX0ZFQVRfQVNZTkNfRVZFTlRfQ09ORklHVVJBVElPTjoKKyAgICAg ICAgICAgIC8vVE9ETyAKKyAgICAgICAgICAgIHNjLT5mZWF0dXJlcy5hc3luY19ldmVudF9jb25m aWcucmF3ID0gY29tbWFuZC0+Y2R3MTE7CisgICAgICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5z YyA9IDB4MDA7CisgICAgICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zY3QgPSAweDA7CisgICAg ICAgICAgICBwY2lfZ2VuZXJhdGVfbXNpeChzYy0+cGksIDApOworICAgICAgICAgICAgYnJlYWs7 CisKKyAgICAgICAgY2FzZSBOVk1FX0ZFQVRfSU5URVJSVVBUX0NPQUxFU0NJTkc6CisgICAgICAg ICAgICBEUFJJTlRGKCJpbnRlcnJ1cHQgY29hbGVzY2luZyBjZHcxMSAweCV4XG4iLCBjb21tYW5k LT5jZHcxMSk7CisgICAgICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zYyA9IDB4MDA7CisgICAg ICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zY3QgPSAweDA7CisgICAgICAgICAgICBzYy0+ZmVh dHVyZXMuaW50ZXJydXB0X2NvYWxzY2luZy5iaXRzLnRociA9IGNvbW1hbmQtPmNkdzExICYgMHhm ZjsKKyAgICAgICAgICAgIHNjLT5mZWF0dXJlcy5pbnRlcnJ1cHRfY29hbHNjaW5nLmJpdHMudGlt ZSA9CisgICAgICAgICAgICAgICAgKGNvbW1hbmQtPmNkdzExID4+IDgpICYgMHhmZjsKKyAgICAg ICAgICAgIHBjaV9nZW5lcmF0ZV9tc2l4KHNjLT5waSwgMCk7CisgICAgICAgICAgICBicmVhazsK KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDAgJiYgInRoaXMgZmVhdHVy ZSBpcyBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICB9Cit9CisKK2VudW0gdGVtcF90aHJlc2hvbGRf Y2R3MTEgeworICAgIE5WTUVfVEVNUF9USFJFU0hPTERfVE1QVEggPSAweDAwMDBmZmZmLAorICAg IE5WTUVfVEVNUF9USFJFU0hPTERfVE1QU0VMID0gMHgwMDBmMDAwMCwKKyAgICBOVk1FX1RFTVBf VEhSRVNIT0xEX1RIU0VMID0gMHgwMDMwMDAwMCwKKyAgICBOVk1FX1RFTVBfVEhSRVNIT0xEX1JF U0VSVkVEID0gMHhmZmMwMDAwMCwKK307CisKK3N0YXRpYyB2b2lkIGV4ZWN1dGVfZ2V0X2ZlYXR1 cmVfY29tbWFuZChzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudm1lX2NvbW1hbmQqIGNvbW1hbmQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG52bWVfY29tcGxldGlv biogY21wX2VudHJ5KQoreworICAgIGVudW0gbnZtZV9mZWF0dXJlIGZlYXR1cmUgPSBjb21tYW5k LT5jZHcxMCAmIDB4ZjsKKyAgICBzd2l0Y2ggKGZlYXR1cmUpIHsKKyAgICAgICAgY2FzZSBOVk1F X0ZFQVRfVEVNUEVSQVRVUkVfVEhSRVNIT0xEOiB7CisgICAgICAgICAgICB1aW50OF90IHRoc2Vs ID0gKGNvbW1hbmQtPmNkdzExICYgTlZNRV9URU1QX1RIUkVTSE9MRF9USFNFTCkgPj4gMjA7Cisg ICAgICAgICAgICAvLyBvdmVyIHRlbXBhcnR1cmUgdGhyZXNob2xkCisgICAgICAgICAgICBpZiAo dGhzZWwgPT0gMHgwMCkgeworICAgICAgICAgICAgICAgIGNtcF9lbnRyeS0+Y2R3MCA9IHNjLT5m ZWF0dXJlcy50ZW1wYXJ0dXJlX3RocmVzaG9sZC5iaXRzLm92ZXI7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICAvLyB1bmRlciB0ZW1wYXJ0dXJlIHRocmVzaG9sZAorICAgICAgICAgICAgZWxz ZSBpZiAodGhzZWwgPT0gMHgxKSB7CisgICAgICAgICAgICAgICAgY21wX2VudHJ5LT5jZHcwID0g c2MtPmZlYXR1cmVzLnRlbXBhcnR1cmVfdGhyZXNob2xkLmJpdHMudW5kZXI7CisgICAgICAgICAg ICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoInRoZSB0aHNl bCBpcyBpbnZhbGllZCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY21wX2VudHJ5LT5z dGF0dXMuc2MgPSAweDAwOworICAgICAgICAgICAgY21wX2VudHJ5LT5zdGF0dXMuc2N0ID0gMHgw OworICAgICAgICAgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCAwKTsKKyAgICAgICAgICAg IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERQUklO VEYoImZlYXR1cmUgbnVtYmVyOiAweCV4XG4iLCBmZWF0dXJlKTsKKyAgICAgICAgICAgIGFzc2Vy dCgwICYmICJub3QgaW1wbGVtZW50ZWQiKTsKKyAgICB9CisKKyAgICByZXR1cm47Cit9CisKK3N0 YXRpYyB2b2lkIG52bWVfZXhlY3V0ZV9pZGVudGlmeV9jb21tYW5kKHN0cnVjdCBwY2lfbnZtZV9z b2Z0Yyogc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IG52bWVfY29tcGxldGlvbiogY21wX2VudHJ5KQoreworICAgIERQ UklOVEYoIklkZW50aWZ5IGNvbW1hbmQgKDB4JXgpXG4iLCAKKyAgICAgICAgICAgIGNvbW1hbmQt PmNkdzEwICYgTlZNRV9DTURfSURFTlRJRllfQ0RXMTBfQ05TKTsKKyAgICBEUFJJTlRGKCJjZHcx MCAweCV4LCBkcHRyIDB4JWx4LCAweCVseCIsIGNvbW1hbmQtPmNkdzEwLCBjb21tYW5kLT5wcnAx LAorICAgICAgICAgICAgY29tbWFuZC0+cHJwMik7CisgICAgdWludHB0cl90IGRlc3RfYWRkciA9 ICh1aW50cHRyX3Qpdm1fbWFwX2dwYSgKKyAgICAgICAgc2MtPnBpLT5waV92bWN0eCwgY29tbWFu ZC0+cHJwMSwgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbnRyb2xsZXJfZGF0YSkpOworCisgICAgLy8g VE9ETyBoYXZlIHRvIGNvbnNpZGVyIGFib3V0IGNvbXBsZXRpb24gcXVldWUgZW50cnkgY29udGVu dAorICAgIHN3aXRjaCAoY29tbWFuZC0+Y2R3MTAgJiBOVk1FX0NNRF9JREVOVElGWV9DRFcxMF9D TlMpIHsKKyAgICAgICAgY2FzZSBOVk1FX0NNRF9JREVOVElGWV9DTlNfTkFNRVNQQUNFOgorICAg ICAgICAgICAgbWVtY3B5KChzdHJ1Y3QgbnZtZV9uYW1lc3BhY2VfZGF0YSopZGVzdF9hZGRyLCAm c2MtPm5hbWVzcGFjZV9kYXRhLAorICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgbnZt ZV9uYW1lc3BhY2VfZGF0YSkpOworICAgICAgICAgICAgY21wX2VudHJ5LT5zdGF0dXMuc2MgPSAw eDAwOworICAgICAgICAgICAgY21wX2VudHJ5LT5zdGF0dXMuc2N0ID0gMHgwOworICAgICAgICAg ICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg ICAgICAgY2FzZSBOVk1FX0NNRF9JREVOVElGWV9DTlNfQ09OVFJPTExFUjoKKyAgICAgICAgICAg IG1lbWNweSgoc3RydWN0IG52bWVfY29udHJvbGxlcl9kYXRhKilkZXN0X2FkZHIsCisgICAgICAg ICAgICAgICAgICAgJnNjLT5jb250cm9sbGVyX2RhdGEsIHNpemVvZihzdHJ1Y3QgbnZtZV9jb250 cm9sbGVyX2RhdGEpKTsKKyAgICAgICAgICAgIGNtcF9lbnRyeS0+c3RhdHVzLnNjID0gMHgwMDsK KyAgICAgICAgICAgIGNtcF9lbnRyeS0+c3RhdHVzLnNjdCA9IDB4MDsKKyAgICAgICAgICAgIHBj aV9nZW5lcmF0ZV9tc2l4KHNjLT5waSwgMCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg IGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCAmJiAiW0NOU10gbm90IGlucGxlbWVudGVk Iik7CisgICAgfQorCisgICAgYXNzZXJ0KDApOworfQorCitlbnVtIGNyZWF0ZV9pb19jcV9jZHcx MSB7CisgICAgTlZNRV9DUkVBVEVfSU9fQ1FfQ0RXMTFfUEMgPSAweDAwMDAwMDAxLAorICAgIE5W TUVfQ1JFQVRFX0lPX0NRX0NEVzExX0lFTiA9IDB4MDAwMDAwMDIsCisgICAgTlZNRV9DUkVBVEVf SU9fQ1FfQ0RXMTFfUlNWID0gMHgwMDAwZmZmYywKKyAgICBOVk1FX0NSRUFURV9JT19DUV9DRFcx MV9JViA9IDB4ZmZmZjAwMDAsCit9OworCitzdGF0aWMgdm9pZCAKK252bWVfZXhlY3V0ZV9jcmVh dGVfaW9fY3FfY29tbWFuZChzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBudm1lX2NvbW1hbmQqIGNv bW1hbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IG52bWVfY29tcGxldGlvbiogY21wX2VudHJ5KQoreworICAgIC8vIFRPRE8KKyAgICAvLyAg SUVOCisgICAgLy8gIElWCisgICAgRFBSSU5URigiaW50ZXJydXB0IHZlY3RvciAweCV4XG4iLCBj b21tYW5kLT5jZHcxMSA+PiAxNik7CisgICAgaWYgKGNvbW1hbmQtPmNkdzExICYgTlZNRV9DUkVB VEVfSU9fQ1FfQ0RXMTFfUEMpIHsKKyAgICAgICAgdWludDE2X3QgcWlkID0gY29tbWFuZC0+Y2R3 MTAgJiAweGZmZmY7CisgICAgICAgIGFzc2VydChxaWQgPCBOVk1FX0lPX0NRU19TSVpFICYmIAor ICAgICAgICAgICAgICAgICJ5b3Ugc2hvdWxkIGluY3JlYXNlIG51bWJlciBvZiBjb21wbGV0aW9u IHF1ZXVlIG9mIHRoaXMgY29udHJvbGxlciBlbXVsYXRvciIpOworCisgICAgICAgIGlmIChzYy0+ Y3FzX2luZm9bcWlkXS5iYXNlX2FkZHIgIT0gKHVpbnRwdHJfdClOVUxMKSB7CisgICAgICAgICAg ICBhc3NlcnQoMCAmJiAidGhlIGNvbXBsZXRpb24gcXVldWUgaXMgYWxyZWFkeSB1c2VkIik7Cisg ICAgICAgIH0KKworICAgICAgICB1aW50MTZfdCBpbnRlcnJ1cHRfdmVjdG9yID0gY29tbWFuZC0+ Y2R3MTEgPj4gMTY7CisgICAgICAgIHVpbnQxNl90IHF1ZXVlX3NpemUgPSBjb21tYW5kLT5jZHcx MCA+PiAxNjsKKyAgICAgICAgc2MtPmNxc19pbmZvW3FpZF0uYmFzZV9hZGRyID0KKyAgICAgICAg ICAgICh1aW50cHRyX3Qpdm1fbWFwX2dwYShzYy0+cGktPnBpX3ZtY3R4LCBjb21tYW5kLT5wcnAx LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgbnZtZV9j b21wbGV0aW9uKSAqIHF1ZXVlX3NpemUpOworICAgICAgICBzYy0+Y3FzX2luZm9bcWlkXS5zaXpl ID0gcXVldWVfc2l6ZTsKKyAgICAgICAgc2MtPmNxc19pbmZvW3FpZF0ucWlkID0gcWlkOworICAg ICAgICBzYy0+Y3FzX2luZm9bcWlkXS5pbnRlcnJ1cHRfdmVjdG9yID0gaW50ZXJydXB0X3ZlY3Rv cjsKKworICAgICAgICBjbXBfZW50cnktPnN0YXR1cy5zYyA9IDB4MDA7CisgICAgICAgIGNtcF9l bnRyeS0+c3RhdHVzLnNjdCA9IDB4MDsKKyAgICAgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBp LCAwKTsKKyAgICAgICAgRFBSSU5URigicWlkICVkLCBxc2l6ZSAweCV4LCBhZGRyIDB4JWx4LCBJ ViAlZFxuIiwgCisgICAgICAgICAgICAgICAgcWlkLCBxdWV1ZV9zaXplLCBjb21tYW5kLT5wcnAx LCBpbnRlcnJ1cHRfdmVjdG9yKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydCgw ICYmICJub3QgaW1wbGVtZW50ZWQiKTsKKyAgICB9CisKKyAgICByZXR1cm47Cit9CisKK2VudW0g Y3JlYXRlX2lvX3NxX2NkdzExIHsKKyAgICBOVk1FX0NSRUFURV9JT19TUV9DRFcxMV9QQyA9IDB4 MDAwMDAwMDEsCisgICAgTlZNRV9DUkVBVEVfSU9fU1FfQ0RXMTFfUVBSSU8gPSAweDAwMDAwMDYw LAorICAgIE5WTUVfQ1JFQVRFX0lPX1NRX0NEVzExX1JTViA9IDB4MDAwMGZmODAsCisgICAgTlZN RV9DUkVBVEVfSU9fU1FfQ0RXMTFfQ1FJRCA9IDB4ZmZmZjAwMDAsCit9OworCitzdGF0aWMgdm9p ZCBudm1lX2V4ZWN1dGVfY3JlYXRlX2lvX3NxX2NvbW1hbmQoc3RydWN0IHBjaV9udm1lX3NvZnRj KiBzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBudm1lX2NvbXBsZXRpb24qIGNtcF9lbnRyeSkKK3sKKyAg ICBpZiAoY29tbWFuZC0+Y2R3MTEgJiBOVk1FX0NSRUFURV9JT19TUV9DRFcxMV9QQykgeworICAg ICAgICB1aW50MTZfdCBxaWQgPSBjb21tYW5kLT5jZHcxMCAmIDB4ZmZmZjsKKyAgICAgICAgYXNz ZXJ0KHFpZCA8IE5WTUVfSU9fU1FTX1NJWkUgJiYgCisgICAgICAgICAgICAgICAgInlvdSBzaG91 bGQgaW5jcmVhc2UgbnVtYmVyIG9mIHN1Ym1pc3Npb24gcXVldWUgb2YgdGhpcyBjb250cm9sbGVy IGVtdWxhdG9yIik7CisgICAgICAgIC8vIFRPRE8KKyAgICAgICAgLyogICAgICAgICB1aW50OF90 IHF1ZXVlX3ByaW9yaXR5ID0gKGNvbW1hbmQtPmNkdzExICYKKyAgICAgICAgICogTlZNRV9DUkVB VEVfSU9fU1FfQ0RXMTFfUVBSSU8pID4+IDE7ICovCisgICAgICAgIHN0cnVjdCBudm1lX3N1Ym1p c3Npb25fcXVldWVfaW5mbyogc3FfaW5mbyA9ICZzYy0+c3FzX2luZm9bcWlkXTsKKyAgICAgICAg aWYgKHNxX2luZm8tPmJhc2VfYWRkciAhPSAodWludHB0cl90KU5VTEwpIHsKKyAgICAgICAgICAg IGFzc2VydCgwKTsKKyAgICAgICAgfQorICAgICAgICB1aW50MTZfdCBjcWlkID0gY29tbWFuZC0+ Y2R3MTEgPj4gMTY7CisgICAgICAgIHVpbnQxNl90IHF1ZXVlX3NpemUgPSBjb21tYW5kLT5jZHcx MCA+PiAxNjsKKyAgICAgICAgc3FfaW5mby0+YmFzZV9hZGRyID0KKyAgICAgICAgICAgICh1aW50 cHRyX3Qpdm1fbWFwX2dwYShzYy0+cGktPnBpX3ZtY3R4LCBjb21tYW5kLT5wcnAxLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgbnZtZV9jb21tYW5kKSAq IHF1ZXVlX3NpemUpOworICAgICAgICBzcV9pbmZvLT5zaXplID0gcXVldWVfc2l6ZTsKKyAgICAg ICAgc3FfaW5mby0+Y29tcGxldGlvbl9xaWQgPSBjcWlkOworICAgICAgICBzcV9pbmZvLT5xaWQg PSBxaWQ7CisKKyAgICAgICAgY21wX2VudHJ5LT5zdGF0dXMuc2MgPSAweDAwOworICAgICAgICBj bXBfZW50cnktPnN0YXR1cy5zY3QgPSAweDA7CisgICAgICAgIHBjaV9nZW5lcmF0ZV9tc2l4KHNj LT5waSwgMCk7CisgICAgICAgIERQUklOVEYoInFpZCAlZCwgcXNpemUgMHgleCwgYWRkciAweCVs eCwgY3FpZCAlZFxuIiwgCisgICAgICAgICAgICAgICAgcWlkLCBxdWV1ZV9zaXplLCBjb21tYW5k LT5wcnAxLCBjcWlkKTsKKworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KDAgJiYg Im5vdCBpbXBsZW1lbnRlZCIpOworICAgIH0KK30KK3N0YXRpYyB2b2lkIG52bWVfZXhlY3V0ZV9k ZWxldGVfaW9fc3FfY29tbWFuZCgKKyAgICBzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAg IHN0cnVjdCBudm1lX2NvbW1hbmQqIGNvbW1hbmQsCisgICAgc3RydWN0IG52bWVfY29tcGxldGlv biogY21wX2VudHJ5KQoreworICAgIHVpbnQxNl90IHFpZCA9IGNvbW1hbmQtPmNkdzEwICYgMHhm ZmZmOworICAgIHNjLT5zcXNfaW5mb1txaWRdLmJhc2VfYWRkciA9ICh1aW50cHRyX3QpTlVMTDsK KyAgICBwY2lfZ2VuZXJhdGVfbXNpeChzYy0+cGksIDApOworfQorCitzdGF0aWMgdm9pZCBudm1l X2V4ZWN1dGVfZGVsZXRlX2lvX2NxX2NvbW1hbmQoCisgICAgc3RydWN0IHBjaV9udm1lX3NvZnRj KiBzYywKKyAgICBzdHJ1Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kLAorICAgIHN0cnVjdCBudm1l X2NvbXBsZXRpb24qIGNtcF9lbnRyeSkKK3sKKyAgICB1aW50MTZfdCBxaWQgPSBjb21tYW5kLT5j ZHcxMCAmIDB4ZmZmZjsKKyAgICBzYy0+Y3FzX2luZm9bcWlkXS5iYXNlX2FkZHIgPSAodWludHB0 cl90KU5VTEw7CisgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCAwKTsKK30KKworc3RhdGlj IHZvaWQgZXhlY3V0ZV9hc3luY19ldmVudF9yZXF1ZXN0X2NvbW1hbmQoCisgICAgc3RydWN0IHBj aV9udm1lX3NvZnRjKiBzYywKKyAgICBzdHJ1Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kLAorICAg IHN0cnVjdCBudm1lX2NvbXBsZXRpb24qIGNtcF9lbnRyeSkKK3sKKyAgICAvLyBUT0RPCisgICAg Ly8gd2hlbiBzb21lIGV2ZW50cyBhcmUgb2NjdXJlZCwgdGhlIGNvbnRyb2xsZXIgc2VuZCBub3Rp ZnkKK30KKworc3RhdGljIHZvaWQgcGNpX252bWVfZXhlY3V0ZV9hZG1pbl9jb21tYW5kKHN0cnVj dCBwY2lfbnZtZV9zb2Z0Yyogc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDY0X3QgdmFsdWUpCit7CisgICAgc3RydWN0IG52bWVfY29tbWFuZCogY29t bWFuZCA9CisgICAgICAgIChzdHJ1Y3QgbnZtZV9jb21tYW5kKikoc2MtPmFzcV9iYXNlICsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IG52bWVfY29tbWFuZCkg KiAodmFsdWUgLSAxKSk7CisKKyAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uKiBjbXBfZW50cnkg PQorICAgICAgICAoc3RydWN0IG52bWVfY29tcGxldGlvbiopKHNjLT5hY3FfYmFzZSArCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbXBsZXRp b24pICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2MtPmNvbXBsZXRp b25fcXVldWVfaGVhZCk7CisKKyAgICBjbXBfZW50cnktPnNxaWQgPSAwOworICAgIGNtcF9lbnRy eS0+c3FoZCA9IHZhbHVlIC0gMTsKKyAgICBjbXBfZW50cnktPmNpZCA9IGNvbW1hbmQtPmNpZDsK KyAgICBjbXBfZW50cnktPnN0YXR1cy5wID0gIWNtcF9lbnRyeS0+c3RhdHVzLnA7CisKKyAgICBE UFJJTlRGKCJbYWRtaW4gY29tbWFuZF0gMHgleFxuIiwgY29tbWFuZC0+b3BjKTsKKyAgICBzd2l0 Y2ggKGNvbW1hbmQtPm9wYykgeworICAgICAgICBjYXNlIE5WTUVfT1BDX0RFTEVURV9JT19TUToK KyAgICAgICAgICAgIG52bWVfZXhlY3V0ZV9kZWxldGVfaW9fc3FfY29tbWFuZChzYywgY29tbWFu ZCwgY21wX2VudHJ5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5WTUVfT1BD X0NSRUFURV9JT19TUToKKyAgICAgICAgICAgIG52bWVfZXhlY3V0ZV9jcmVhdGVfaW9fc3FfY29t bWFuZChzYywgY29tbWFuZCwgY21wX2VudHJ5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICBjYXNlIE5WTUVfT1BDX0RFTEVURV9JT19DUToKKyAgICAgICAgICAgIG52bWVfZXhlY3V0ZV9k ZWxldGVfaW9fY3FfY29tbWFuZChzYywgY29tbWFuZCwgY21wX2VudHJ5KTsKKyAgICAgICAgICAg IGJyZWFrOworICAgICAgICBjYXNlIE5WTUVfT1BDX0NSRUFURV9JT19DUToKKyAgICAgICAgICAg IG52bWVfZXhlY3V0ZV9jcmVhdGVfaW9fY3FfY29tbWFuZChzYywgY29tbWFuZCwgY21wX2VudHJ5 KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5WTUVfT1BDX0lERU5USUZZOgor ICAgICAgICAgICAgbnZtZV9leGVjdXRlX2lkZW50aWZ5X2NvbW1hbmQoc2MsIGNvbW1hbmQsIGNt cF9lbnRyeSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOVk1FX09QQ19TRVRf RkVBVFVSRVM6CisgICAgICAgICAgICBleGVjdXRlX3NldF9mZWF0dXJlX2NvbW1hbmQoc2MsIGNv bW1hbmQsIGNtcF9lbnRyeSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOVk1F X09QQ19HRVRfRkVBVFVSRVM6CisgICAgICAgICAgICBleGVjdXRlX2dldF9mZWF0dXJlX2NvbW1h bmQoc2MsIGNvbW1hbmQsIGNtcF9lbnRyeSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg Y2FzZSBOVk1FX09QQ19BU1lOQ19FVkVOVF9SRVFVRVNUOgorICAgICAgICAgICAgLy8gWFhYIHRo aXMgaXMgYSBkaXJ0eSBoYWNrLi4uLiBzaG91bGQgYmUgZml4ZWQuLi4KKyAgICAgICAgICAgIGNt cF9lbnRyeS0+c3RhdHVzLnAgPSAhY21wX2VudHJ5LT5zdGF0dXMucDsKKyAgICAgICAgICAgIGV4 ZWN1dGVfYXN5bmNfZXZlbnRfcmVxdWVzdF9jb21tYW5kKHNjLCBjb21tYW5kLCBjbXBfZW50cnkp OworICAgICAgICAgICAgc2MtPmNvbXBsZXRpb25fcXVldWVfaGVhZC0tOworICAgICAgICAgICAg YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCAmJiAidGhlIGFk bWluIGNvbW1hbmQgaXMgbm90IGltcGxlbWVudGVkIik7CisgICAgfQorCisgICAgc2MtPmNvbXBs ZXRpb25fcXVldWVfaGVhZCsrOworICAgIGlmKHNjLT5yZWdzLmFxYS5iaXRzLmFjcXMgPT0gc2Mt PmNvbXBsZXRpb25fcXVldWVfaGVhZCkKKyAgICB7CisgICAgICAgIHNjLT5jb21wbGV0aW9uX3F1 ZXVlX2hlYWQgPSAwOworICAgIH0KK30KKworc3RhdGljIHZvaWQgcGNpX252bWVfYmxvY2tpZl9p b3JlcV9jYihzdHJ1Y3QgYmxvY2tpZl9yZXEqIGJyLCBpbnQgZXJyKQoreworICAgIERQUklOVEYo IiVzICVkXG4iLCBfX2Z1bmNfXywgZXJyKTsKKworICAgIHN0cnVjdCBudm1lX2lvcmVxKiBucmVx ID0gYnItPmJyX3BhcmFtOworICAgIHN0cnVjdCBudm1lX2NvbXBsZXRpb25fcXVldWVfaW5mbyog Y3FfaW5mbyA9IG5yZXEtPmNxX2luZm87CisgICAgc3RydWN0IG52bWVfc3VibWlzc2lvbl9xdWV1 ZV9pbmZvKiBzcV9pbmZvID0gbnJlcS0+c3FfaW5mbzsKKworICAgIHB0aHJlYWRfbXV0ZXhfbG9j aygmY3FfaW5mby0+bXR4KTsKKyAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uKiBjb21wbGV0aW9u X2VudHJ5ID0KKyAgICAgICAgKHN0cnVjdCBudm1lX2NvbXBsZXRpb24qKShjcV9pbmZvLT5iYXNl X2FkZHIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qg bnZtZV9jb21wbGV0aW9uKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNxX2luZm8tPnRhaWwpOworCisgICAgbnJlcS0+Y29tcGxldGlvbl9lbnRyeS5zdGF0dXMuc2N0 ID0gMHgwOworICAgIG5yZXEtPmNvbXBsZXRpb25fZW50cnkuc3RhdHVzLnNjID0gMHgwMDsKKwor ICAgIC8vIHNhdmUgcGhhc2UgdmFsdWUgYmVmb3JlIHdyaXRlIHZhbHVlcyB0byBjb21wbGV0aW9u IHF1ZXVlIGVudHJ5CisgICAgdWludDhfdCBzdGF0dXNfcGhhc2UgPSBjb21wbGV0aW9uX2VudHJ5 LT5zdGF0dXMucDsKKworICAgIG1lbWNweShjb21wbGV0aW9uX2VudHJ5LCAmbnJlcS0+Y29tcGxl dGlvbl9lbnRyeSwKKyAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbXBsZXRpb24pKTsK KyAgICBjb21wbGV0aW9uX2VudHJ5LT5zdGF0dXMucCA9ICFzdGF0dXNfcGhhc2U7CisKKyAgICBE UFJJTlRGKCJicl9yZXNpZCAweCVseFxuIiwgYnItPmJyX3Jlc2lkKTsKKyAgICBEUFJJTlRGKCJj cV9oZWFkIDB4JXgobWF4IDB4JXgpLCBxaWQgJWQsIHN0YXR1cyBwaGFzZSAleCBJViAlZFxuIiwK KyAgICAgICAgICAgIGNxX2luZm8tPnRhaWwsIGNxX2luZm8tPnNpemUsIGNxX2luZm8tPnFpZCwg CisgICAgICAgICAgICAhc3RhdHVzX3BoYXNlLCBjcV9pbmZvLT5pbnRlcnJ1cHRfdmVjdG9yKTsK KworICAgIGNxX2luZm8tPnRhaWwrKzsKKy8qICAgICBpZiAoY3FfaW5mby0+dGFpbCA9PSBjcV9p bmZvLT5zaXplKSB7ICovCisgICAgaWYgKGNxX2luZm8tPnRhaWwgPiBjcV9pbmZvLT5zaXplKSB7 CisgICAgICAgIGNxX2luZm8tPnRhaWwgPSAwOworICAgIH0KKworICAgIFRBSUxRX1JFTU9WRSgm c3FfaW5mby0+aW9iaGQsIG5yZXEsIGlvX2JsaXN0KTsKKworICAgIFNUQUlMUV9JTlNFUlRfVEFJ TCgmc3FfaW5mby0+aW9maGQsIG5yZXEsIGlvX2ZsaXN0KTsKKworICAgIHBjaV9nZW5lcmF0ZV9t c2l4KG5yZXEtPnNjLT5waSwgY3FfaW5mby0+aW50ZXJydXB0X3ZlY3Rvcik7CisgICAgcHRocmVh ZF9tdXRleF91bmxvY2soJmNxX2luZm8tPm10eCk7Cit9CisKK3N0YXRpYyB2b2lkIG52bWVfbnZt X2NvbW1hbmRfcmVhZF93cml0ZSgKKyAgICBzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAg IHN0cnVjdCBudm1lX2NvbW1hbmQqIGNvbW1hbmQsCisgICAgc3RydWN0IG52bWVfc3VibWlzc2lv bl9xdWV1ZV9pbmZvKiBzcV9pbmZvLAorICAgIHVpbnQxNl90IHNxaGQpCit7CisgICAgaW50IGVy ciA9IDA7CisgICAgdWludHB0cl90IHN0YXJ0aW5nX2xiYSA9ICgodWludDY0X3QpY29tbWFuZC0+ Y2R3MTEgPDwgMzIpIHwgY29tbWFuZC0+Y2R3MTA7CisgICAgLy8gTkxCIChudW1iZXIgb2YgbG9n aWMgYmxvY2spIGlzIGEgMCdzIGJhc2VkIHZhbHVlCisgICAgdWludDE2X3QgbnVtYmVyX29mX2xi ID0gKGNvbW1hbmQtPmNkdzEyICYgMHhmZmZmKSArIDE7CisgICAgaW50IGxvZ2ljX2Jsb2NrX3Np emUgPSAxIDw8IHNjLT5uYW1lc3BhY2VfZGF0YS5sYmFmWzBdLmxiYWRzOworCisgICAgRFBSSU5U Rigic2xiYSAweCVseCwgbmxiYSAweCV4LCBsYiBzaXplIDB4JXhcbiIsCisgICAgICAgICAgICBz dGFydGluZ19sYmEsIG51bWJlcl9vZl9sYiwgbG9naWNfYmxvY2tfc2l6ZSk7CisgICAgRFBSSU5U Rigic3FoZDogMHgleCwgZGVzdGluYXRpb24gYWRkciA6IDB4JTA4bHhcbiIsIHNxaGQsIGNvbW1h bmQtPnBycDEpOworCisgICAgLyogICAgIHN0cnVjdCBudm1lX2lvcmVxICpucmVxID0gc3FfaW5m by0+aW9yZXE7ICovCisgICAgc3RydWN0IG52bWVfaW9yZXEqIG5yZXEgPSBTVEFJTFFfRklSU1Qo JnNxX2luZm8tPmlvZmhkKTsKKyAgICBhc3NlcnQobnJlcSAhPSBOVUxMKTsKKyAgICBTVEFJTFFf UkVNT1ZFX0hFQUQoJnNxX2luZm8tPmlvZmhkLCBpb19mbGlzdCk7CisKKyAgICBucmVxLT5jb21w bGV0aW9uX2VudHJ5LnNxaGQgPSBzcWhkOworICAgIG5yZXEtPmNvbXBsZXRpb25fZW50cnkuc3Fp ZCA9IHNxX2luZm8tPnFpZDsKKyAgICBucmVxLT5jb21wbGV0aW9uX2VudHJ5LmNpZCA9IGNvbW1h bmQtPmNpZDsKKyAgICBucmVxLT5jcV9pbmZvID0gJnNjLT5jcXNfaW5mb1tzcV9pbmZvLT5jb21w bGV0aW9uX3FpZF07CisgICAgbnJlcS0+c2MgPSBzYzsKKyAgICBucmVxLT5zcV9pbmZvID0gc3Ff aW5mbzsKKyAgICBEUFJJTlRGKCJzcWlkICVkLCBjcWlkICVkXG4iLCBzcV9pbmZvLT5xaWQsIHNx X2luZm8tPmNvbXBsZXRpb25fcWlkKTsKKworICAgIAorICAgIGludCBkYXRhX3NpemUgPSBudW1i ZXJfb2ZfbGIgKiBsb2dpY19ibG9ja19zaXplOworICAgIGludCBwYWdlX251bSA9IGRhdGFfc2l6 ZSAvICgxIDw8IDEyKTsKKyAgICBpZihkYXRhX3NpemUgJSAoMSA8PCAxMikpCisgICAgeworICAg ICAgICBwYWdlX251bSsrOworICAgIH0KKyAgICAvL1RPRE8gcGFnZSBzaXplIGlzIGRlcGVuZCBv biBDQy5NUFMKKyAgICBEUFJJTlRGKCJhbGwgc2l6ZSAweCV4LCBwYWdlIG51bSAweCV4XG4iLCBk YXRhX3NpemUsIHBhZ2VfbnVtKTsKKyAgICBEUFJJTlRGKCJtb2QgMHgleFxuIiwgZGF0YV9zaXpl ICUgKDEgPDwgMTIpKTsKKyAgICBEUFJJTlRGKCJQUlAgMHglMDhseCAweCUwOGx4XG4iLCBjb21t YW5kLT5wcnAxLCBjb21tYW5kLT5wcnAyKTsKKyAgICBEUFJJTlRGKCJDRFcwIDB4JXhcbiIsIGNv bW1hbmQtPnJzdmQxKTsKKworICAgIHN0cnVjdCBibG9ja2lmX3JlcSogYnJlcSA9ICZucmVxLT5p b19yZXE7CisgICAgYnJlcS0+YnJfb2Zmc2V0ID0gMDsKKworICAgIGlmKGNvbW1hbmQtPnBycDIg PT0gMCkgeworCisgICAgICAgIGJyZXEtPmJyX2lvdlswXS5pb3ZfYmFzZSA9CisgICAgICAgICAg ICBwYWRkcl9ndWVzdDJob3N0KHNjLT5waS0+cGlfdm1jdHgsIGNvbW1hbmQtPnBycDEsIGRhdGFf c2l6ZSk7CisgICAgICAgIGJyZXEtPmJyX2lvdlswXS5pb3ZfbGVuID0gZGF0YV9zaXplOworICAg ICAgICBicmVxLT5icl9pb3ZjbnQgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKworICAgICAgICBp ZihwYWdlX251bSA9PSAyKSB7CisgICAgICAgICAgICAvLyBwYWdlIHNpemUgKDRrKQorICAgICAg ICAgICAgaW50IHNpemUgPSAxIDw8IDEyOworICAgICAgICAgICAgYnJlcS0+YnJfaW92WzBdLmlv dl9iYXNlID0KKyAgICAgICAgICAgICAgICBwYWRkcl9ndWVzdDJob3N0KHNjLT5waS0+cGlfdm1j dHgsIGNvbW1hbmQtPnBycDEsIHNpemUpOyAKKyAgICAgICAgICAgIGJyZXEtPmJyX2lvdlswXS5p b3ZfbGVuID0gc2l6ZTsKKworICAgICAgICAgICAgYnJlcS0+YnJfaW92WzFdLmlvdl9iYXNlID0g CisgICAgICAgICAgICAgICAgcGFkZHJfZ3Vlc3QyaG9zdChzYy0+cGktPnBpX3ZtY3R4LCBjb21t YW5kLT5wcnAyLCBzaXplKTsKKyAgICAgICAgICAgIGJyZXEtPmJyX2lvdlsxXS5pb3ZfbGVuID0g c2l6ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKHBhZ2VfbnVtID4gMikgeworCisgICAg ICAgICAgICBpbnQgcHJwMV9vZmZzZXQgPSAoY29tbWFuZC0+cHJwMSAmIDB4ZmZmKTsKKyAgICAg ICAgICAgIGludCBwcnAxX3NpemUgPSAoMSA8PCAxMikgLSBwcnAxX29mZnNldDsKKworICAgICAg ICAgICAgYnJlcS0+YnJfaW92WzBdLmlvdl9iYXNlID0KKyAgICAgICAgICAgICAgICBwYWRkcl9n dWVzdDJob3N0KHNjLT5waS0+cGlfdm1jdHgsIGNvbW1hbmQtPnBycDEsIHBycDFfc2l6ZSk7Cisg ICAgICAgICAgICBicmVxLT5icl9pb3ZbMF0uaW92X2xlbiA9IHBycDFfc2l6ZTsKKworICAgICAg ICAgICAgZGF0YV9zaXplIC09IDEgPDwgMTI7CisKKyAgICAgICAgICAgIHVpbnQ2NF90KiBwcnBf bGlzdCA9IHBhZGRyX2d1ZXN0Mmhvc3QoCisgICAgICAgICAgICAgICAgICAgIHNjLT5waS0+cGlf dm1jdHgsIAorICAgICAgICAgICAgICAgICAgICBjb21tYW5kLT5wcnAyLAorICAgICAgICAgICAg ICAgICAgICBzaXplb2YodWludDY0X3QpICogKHBhZ2VfbnVtIC0gMSkpOworCisgICAgICAgICAg ICBEUFJJTlRGKCJwcnAxICAgOiAweCVseCwgMHgleFxuIiwgY29tbWFuZC0+cHJwMSwgcHJwMV9z aXplKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvL1RPRE8gYmUgY2FyZWZ1 bGwgb2Ygc2l6ZS4gYnJfaW92W0JMT0NLSUZfSU9WX01BWF0uCisgICAgICAgICAgICBmb3IoaW50 IGk9MTsgaTwgcGFnZV9udW07ICsraSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp bnQgc2l6ZSA9ICgxPDwxMik7CisgICAgICAgICAgICAgICAgaWYoZGF0YV9zaXplIDwgKDEgPDwg MTIpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGkgPT0g KHBhZ2VfbnVtIC0gMSkpOworICAgICAgICAgICAgICAgICAgICBzaXplID0gZGF0YV9zaXplOwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVxLT5icl9pb3ZbaV0uaW92X2Jh c2UgPSAKKyAgICAgICAgICAgICAgICAgICAgcGFkZHJfZ3Vlc3QyaG9zdChzYy0+cGktPnBpX3Zt Y3R4LCBwcnBfbGlzdFtpIC0gMV0sIHNpemUpOworICAgICAgICAgICAgICAgIGJyZXEtPmJyX2lv dltpXS5pb3ZfbGVuID0gc2l6ZTsKKworICAgICAgICAgICAgICAgIGRhdGFfc2l6ZSAtPSBzaXpl OworICAgICAgICAgICAgICAgIERQUklOVEYoInBycDJbJWRdICAgOiAweCVseCwgMHgleFxuIiwg aSwgcHJwX2xpc3RbaV0sIHNpemUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRFBSSU5U RigibGFzdCBkYXRhIHNpemU6IDB4JXhcbiIsIGRhdGFfc2l6ZSk7CisgICAgICAgICAgICBEUFJJ TlRGKCJwYWdlIG51bSAweCV4IiwgcGFnZV9udW0pOworICAgICAgICB9CisgICAgICAgIGVsc2Ug eworICAgICAgICAgICAgYnJlcS0+YnJfaW92WzBdLmlvdl9iYXNlID0KKyAgICAgICAgICAgICAg ICBwYWRkcl9ndWVzdDJob3N0KHNjLT5waS0+cGlfdm1jdHgsIGNvbW1hbmQtPnBycDEsCisgICAg ICAgICAgICAgICAgICAgICAgICBudW1iZXJfb2ZfbGIgKiBsb2dpY19ibG9ja19zaXplKTsKKwor ICAgICAgICAgICAgYnJlcS0+YnJfaW92WzBdLmlvdl9sZW4gPSBudW1iZXJfb2ZfbGIgKiBsb2dp Y19ibG9ja19zaXplOworICAgICAgICB9CisgICAgfQorICAgIGJyZXEtPmJyX2lvdmNudCA9IHBh Z2VfbnVtOworICAgIGJyZXEtPmJyX29mZnNldCArPSBzdGFydGluZ19sYmEgKiBsb2dpY19ibG9j a19zaXplOworICAgIGJyZXEtPmJyX3Jlc2lkID0gbnVtYmVyX29mX2xiICogbG9naWNfYmxvY2tf c2l6ZTsKKyAgICBicmVxLT5icl9jYWxsYmFjayA9IHBjaV9udm1lX2Jsb2NraWZfaW9yZXFfY2I7 CisgICAgYnJlcS0+YnJfcGFyYW0gPSBucmVxOworCisgICAgVEFJTFFfSU5TRVJUX0hFQUQoJnNx X2luZm8tPmlvYmhkLCBucmVxLCBpb19ibGlzdCk7CisKKyAgICBzd2l0Y2ggKGNvbW1hbmQtPm9w YykgeworICAgICAgICBjYXNlIE5WTUVfT1BDX1JFQUQ6CisgICAgICAgICAgICBlcnIgPSBibG9j a2lmX3JlYWQoc2MtPmJjdHgsIGJyZXEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh c2UgTlZNRV9PUENfV1JJVEU6CisgICAgICAgICAgICBlcnIgPSBibG9ja2lmX3dyaXRlKHNjLT5i Y3R4LCBicmVxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg ICAgICAgLy9UT0RPCisgICAgICAgICAgICBhc3NlcnQoMCAmJiAiPz8iKTsKKyAgICB9CisKKyAg ICBhc3NlcnQoZXJyID09IDAgJiYgImJsb2NraWZfcmVhZCBvciBibG9ja2lmX3dyaXRlIGZhaWxl ZCIpOworfQorCisvKiBzdGF0aWMgdm9pZCBudm1lX252bV9jb21tYW5kX2ZsdXNoKHN0cnVjdCBw Y2lfbnZtZV9zb2Z0Yyogc2MsICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBudm1lX3N1Ym1pc3Npb25fcXVldWVfaW5mbyogc3FfaW5mbywgKi8KKy8qICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgY2lkLCAqLworLyogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBzcWhkKSAqLworLyogeyAq LworLyogICAgIGFzc2VydCgibm90IHlldCBpbXBsZW1lbnRlZCIpOyAqLworLyogICAgIHN0cnVj dCBudm1lX2NvbXBsZXRpb25fcXVldWVfaW5mbyogY3FfaW5mbyA9ICovCisvKiAgICAgICAgICZz Yy0+Y3FzX2luZm9bc3FfaW5mby0+Y29tcGxldGlvbl9xaWRdOyAqLworCisvKiAgICAgcHRocmVh ZF9tdXRleF9sb2NrKCZjcV9pbmZvLT5tdHgpOyAqLworLyogICAgIHN0cnVjdCBudm1lX2NvbXBs ZXRpb24qIGNvbXBsZXRpb25fZW50cnkgPSAqLworLyogICAgICAgICAoc3RydWN0IG52bWVfY29t cGxldGlvbiopKGNxX2luZm8tPmJhc2VfYWRkciArICovCisvKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBudm1lX2NvbXBsZXRpb24pICogKi8KKy8qICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3FfaW5mby0+aGVhZCk7ICovCisK Ky8qICAgICBjb21wbGV0aW9uX2VudHJ5LT5zcWhkID0gc3FoZDsgKi8KKy8qICAgICBjb21wbGV0 aW9uX2VudHJ5LT5zcWlkID0gc3FfaW5mby0+cWlkOyAqLworLyogICAgIGNvbXBsZXRpb25fZW50 cnktPmNpZCA9IGNpZDsgKi8KKy8qICAgICBjb21wbGV0aW9uX2VudHJ5LT5zdGF0dXMuc2N0ID0g MHgwOyAqLworLyogICAgIGNvbXBsZXRpb25fZW50cnktPnN0YXR1cy5zYyA9IDB4MDA7ICovCisv KiAgICAgY29tcGxldGlvbl9lbnRyeS0+c3RhdHVzLnAgPSAhY29tcGxldGlvbl9lbnRyeS0+c3Rh dHVzLnA7ICovCisKKy8qICAgICBEUFJJTlRGKCJjaWQ6IDB4JXgsIGNxaWQ6IDB4JXgsIGNxX2lu Zm8tPmhlYWQgMHgleCwgY3FfaW5mby0+c2l6ZSAweCV4XG4iLCAqLworLyogICAgICAgICAgICAg Y2lkLCBzcV9pbmZvLT5jb21wbGV0aW9uX3FpZCwgY3FfaW5mby0+aGVhZCwgY3FfaW5mby0+c2l6 ZSk7ICovCisvKiAgICAgY3FfaW5mby0+aGVhZCsrOyAqLworLyogICAgIGlmIChjcV9pbmZvLT5o ZWFkID09IGNxX2luZm8tPnNpemUpIHsgKi8KKy8qICAgICAgICAgY3FfaW5mby0+aGVhZCA9IDA7 ICovCisvKiAgICAgfSAqLworLyogICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZjcV9pbmZvLT5t dHgpOyAqLworCisvKiAgICAgcGNpX2dlbmVyYXRlX21zaXgoc2MtPnBpLCBzcV9pbmZvLT5jb21w bGV0aW9uX3FpZCk7ICovCisvKiB9ICovCisKK3N0YXRpYyB2b2lkIHBjaV9udm1lX2V4ZWN1dGVf bnZtZV9jb21tYW5kKHN0cnVjdCBwY2lfbnZtZV9zb2Z0Yyogc2MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBxaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBzcV90YWlsKQoreworICAgIHN0cnVj dCBudm1lX3N1Ym1pc3Npb25fcXVldWVfaW5mbyogc3FfaW5mbyA9ICZzYy0+c3FzX2luZm9bcWlk XTsKKworICAgIHVpbnQxNl90IGNvbW1hbmRfaW5kZXggPSBzcV90YWlsIC0gMTsKKyAgICB1aW50 MTZfdCBzcWhkID0gc3FfdGFpbCAtIDE7CisgICAgaWYgKHNxX3RhaWwgPT0gMHgwKSB7CisgICAg ICAgIGNvbW1hbmRfaW5kZXggPSBzcV9pbmZvLT5zaXplOworICAgICAgICBzcWhkID0gc3FfaW5m by0+c2l6ZTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgbnZtZV9jb21tYW5kKiBjb21tYW5kID0KKyAg ICAgICAgKHN0cnVjdCBudm1lX2NvbW1hbmQqKShzcV9pbmZvLT5iYXNlX2FkZHIgKworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgbnZtZV9jb21tYW5kKSAqIChj b21tYW5kX2luZGV4KSk7CisKKyAgICAvKiAgICAgdWludDE2X3QgY29tcGxldGlvbl9xaWQgPSBz cV9pbmZvLT5jb21wbGV0aW9uX3FpZDsgKi8KKyAgICAvKiAgICAgc3RydWN0IG52bWVfY29tcGxl dGlvbl9xdWV1ZV9pbmZvICpjcV9pbmZvID0KKyAgICAgKiAmc2MtPmNxc19pbmZvW2NvbXBsZXRp b25fcWlkXTsgKi8KKworICAgIERQUklOVEYoIioqKioqIG52bSBjb21tYW5kIDB4JXggKioqKipc biIsIGNvbW1hbmQtPm9wYyk7CisgICAgRFBSSU5URigib3BjOiAweCV4LCBjaWQ6IDB4JXgsIG5z aWQ6IDB4JXgsIHFpZDogMHgleCwgc3FfdGFpbCAweCVseFxuIiwKKyAgICAgICAgICAgIGNvbW1h bmQtPm9wYywgY29tbWFuZC0+Y2lkLCBjb21tYW5kLT5uc2lkLCBxaWQsIHNxX3RhaWwpOworCisg ICAgc3dpdGNoIChjb21tYW5kLT5vcGMpIHsKKyAgICAgICAgY2FzZSBOVk1FX09QQ19SRUFEOgor ICAgICAgICBjYXNlIE5WTUVfT1BDX1dSSVRFOgorICAgICAgICAgICAgbnZtZV9udm1fY29tbWFu ZF9yZWFkX3dyaXRlKHNjLCBjb21tYW5kLCBzcV9pbmZvLCBzcWhkKTsKKyAgICAgICAgICAgIHJl dHVybjsKKyAgICAgICAgLyogICAgICAgICBjYXNlIE5WTUVfT1BDX0ZMVVNIOiAqLworICAgICAg ICAvKiAgICAgICAgICAgICBudm1lX252bV9jb21tYW5kX2ZsdXNoKHNjLCBzcV9pbmZvLCBjb21t YW5kLT5jaWQsIHNxaGQpOworICAgICAgICAgKi8KKyAgICAgICAgLyogICAgICAgICAgICAgcmV0 dXJuOyAqLworICAgICAgICAvKiAgICAgICAgIGNhc2UgTlZNRV9PUENfREFUQVNFVF9NQU5BR0VN RU5UOiAqLworICAgICAgICAvKiAgICAgICAgICAgICB7ICovCisgICAgICAgIC8qICAgICAgICAg ICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmNxX2luZm8tPm10eCk7ICovCisgICAgICAgIC8q ICAgICAgICAgICAgICAgICBzdHJ1Y3QgbnZtZV9jb21wbGV0aW9uKiBjb21wbGV0aW9uX2VudHJ5 ID0gICovCisgICAgICAgIC8qICAgICAgICAgICAgICAgICAgICAgcGNpX252bWVfYWNxdWlyZV9j b21wbGV0aW9uX2VudHJ5KHNjLCBjcV9pbmZvKTsKKyAgICAgICAgICovCisgICAgICAgIC8qICAg ICAgICAgICAgICAgICBjb21wbGV0aW9uX2VudHJ5LT5zdGF0dXMuc2MgPSAweDAwOyAqLworICAg ICAgICAvKiAgICAgICAgICAgICAgICAgY29tcGxldGlvbl9lbnRyeS0+c3RhdHVzLnNjdCA9IDB4 MDsgKi8KKyAgICAgICAgLyogICAgICAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZj cV9pbmZvLT5tdHgpOyAqLworCisgICAgICAgIC8qICAgICAgICAgICAgICAgICBwY2lfZ2VuZXJh dGVfbXNpeChzYy0+cGksIHNxX2luZm8tPmNvbXBsZXRpb25fcWlkKTsKKyAgICAgICAgICovCisg ICAgICAgIC8qICAgICAgICAgICAgICAgICByZXR1cm47ICovCisgICAgICAgIC8qICAgICAgICAg ICAgIH0gKi8KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDAgJiYgInRo ZSBudm1lIGNvbW1hbmQgaXMgbm90IGltcGxlbWVudGVkIHlldCIpOworICAgIH0KK30KKworc3Rh dGljIHZvaWQgcGNpX252bWVfd3JpdGVfYmFyXzAoc3RydWN0IHZtY3R4KiBjdHgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGNpX252bWVfc29mdGMqIHNjLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgcmVnb2ZmLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdmFsdWUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgc2l6ZSkKK3sKKyAgICAvLyB3cml0ZSB2YWx1ZSB0byBkb29y YmVsbCByZWdpc3RlcgorICAgIC8vIFRPRE8gbGltaXQgb2YgZG9vcmJlbGwgcmVnaXN0ZXIgYWRk cmVzcyBpcyBkZXBlbmQgb24gdGhlIG51bWJlciBvZiBxdWV1ZQorICAgIC8vIHBhaXJzLgorICAg IGlmIChyZWdvZmYgPj0gTlZNRV9DUl9JT19RVUVVRV9CQVNFICYmIHJlZ29mZiA8IE5WTUVfQ1Jf U0laRSkgeworICAgICAgICBpbnQgcXVldWVfb2Zmc2V0ID0gcmVnb2ZmIC0gTlZNRV9DUl9JT19R VUVVRV9CQVNFOyAgLy8gMHgxMDAwIGlzIE5WTUVfQ1JfSU9fUVVFVUVfQkFTRQorICAgICAgICBE UFJJTlRGKCJyZWdvZmYgMHglbHhcbiIsIHJlZ29mZik7CisgICAgICAgIGludCBxaWQgPSBxdWV1 ZV9vZmZzZXQgLyA4OyAgLy8gNCBpcyBkb29yYmVsbCByZWdpc3RlciBzaXplCisgICAgICAgIGlu dCBpc19jb21wbGV0aW9uID0gKHF1ZXVlX29mZnNldCAvIDQpICUgMjsKKworICAgICAgICAvLyBj b21wbGV0aW9uIGRvb3JiZWxsCisgICAgICAgIGlmIChpc19jb21wbGV0aW9uKSB7CisgICAgICAg ICAgICBEUFJJTlRGKCJjb21wbGV0aW9uIGRvb3JiZWxsICglZCkgaXMga25vY2tlZCwgY3FoZCAw eCV4XG4iLCAKKyAgICAgICAgICAgICAgICAgICAgcWlkLCAodWludDE2X3QpdmFsdWUpOworICAg ICAgICAgICAgaWYgKHFpZCA9PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gVE9ETworICAgICAg ICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVE9ETworICAg ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIHN1 Ym1pc3Npb24gZG9vcmJlbGwKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBhZG1pbiBj b21tYW5kCisgICAgICAgICAgICBpZiAocWlkID09IDApIHsKKyAgICAgICAgICAgICAgICBwY2lf bnZtZV9leGVjdXRlX2FkbWluX2NvbW1hbmQoc2MsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBy ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBudm1lIGNvbW1hbmQKKyAgICAg ICAgICAgIC8vIFRPRE8gdmFsaWRhdGUgcWlkCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg ICAgICAgICBwY2lfbnZtZV9leGVjdXRlX252bWVfY29tbWFuZChzYywgcWlkLCB2YWx1ZSk7Cisg ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg IGFzc2VydCgwKTsKKyAgICB9CisKKyAgICBEUFJJTlRGKCJ3cml0ZSAweCVseCwgdmFsdWUgJWx4 IFxuIiwgcmVnb2ZmLCB2YWx1ZSk7CisgICAgYXNzZXJ0KHNpemUgPT0gNCAmJiAid29yZCBzaXpl IHNob3VsZCBiZSA0KGJ5dGUpIik7CisgICAgc3dpdGNoIChyZWdvZmYpIHsKKyAgICAgICAgY2Fz ZSBOVk1FX0NSX0NDOgorCisgICAgICAgICAgICAvLyBlbmFibGUgKEVOKSBiaXQgaW4gY29udHJv bGxlciByZWdpc3RlcgorICAgICAgICAgICAgLyogLSAwIC0+IDEKKyAgICAgICAgICAgICAqICAg ICAgLSBXaGVuIGEgY29udHJvbGxlciBpcyByZWFkeSB0byBwcm9jZXNzIGNvbW1hbmRzLCB0aGUK KyAgICAgICAgICAgICAqICAgICAgY29udHJvbGxlciBzZXQgJzEnIHRvIENTVFMuUkRZLgorICAg ICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoKHNjLT5yZWdzLmNjLmJpdHMuZW4gPT0gMCkg JiYgKHZhbHVlICYgTlZNRV9DQ19FTikpIHsKKyAgICAgICAgICAgICAgICBwY2lfbnZtZV9yZXNl dChzYyk7CisgICAgICAgICAgICAgICAgcGNpX252bWVfc2V0dXBfY29udHJvbGxlcihjdHgsIHNj KTsKKyAgICAgICAgICAgICAgICBEUFJJTlRGKCJudm1lIHVwXG4iKTsKKyAgICAgICAgICAgIH0K KworICAgICAgICAgICAgLy8gVE9ETworICAgICAgICAgICAgLyogLSAxIC0+IDAKKyAgICAgICAg ICAgICAqICBDb250cm9sZXIgUmVzZXQKKyAgICAgICAgICAgICAqICAgICAgLSBkZWxldGUgYWxs IEkvTyBTdWJtaXNzaW9uIHF1ZXVlcyBhbmQgQ29tcGxldGlvbiBxdWV1ZXMKKyAgICAgICAgICAg ICAqICAgICAgLSByZXNldCBhZG1pbiBzdWJtaXR0aW9uIHF1ZXVlIGFuZCBjb21wbGV0aW9uIHF1 ZXVlCisgICAgICAgICAgICAgKiAgICAgIC0gbW92ZSB0byBpZGxlIHN0YXRlCisgICAgICAgICAg ICAgKiAgICAgIC0gYWxsIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIGFyZSByZXNldCB0byB0aGVpciBk ZWZhdWx0IHZhbHVlcworICAgICAgICAgICAgICogICAgICAoZGVmaW5lZCBpbiBzZWN0aW9uIDUu MjEuMSkKKyAgICAgICAgICAgICAqICAgICAgLSBDU1RTLlJEWSBiaXQgaXMgY2xlYXJlZCB0byAn MCcuCisgICAgICAgICAgICAgKi8gIAorICAgICAgICAgICAgaWYgKChzYy0+cmVncy5jYy5iaXRz LmVuID09IDEpICYmICEodmFsdWUgJiBOVk1FX0NDX0VOKSkgeworICAgICAgICAgICAgICAgIERQ UklOVEYoIm52bWUgZG93blxuIik7CisgICAgICAgICAgICAgICAgc2MtPnJlZ3MuY3N0cy5iaXRz LnJkeSA9IDA7CisgICAgICAgICAgICAgICAgLy8gVE9ETworICAgICAgICAgICAgICAgIC8qICAg ICAgICAgICAgICAgICAgICAgYXNzZXJ0KDApOyAqLworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICBzd2l0Y2goKHZhbHVlICYgTlZNRV9DQ19TSE4pID4+IDE0KQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgIGNhc2UgTlZNRV9TSE5fTk9FRkNUOgorICAgICAgICAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE5WTUVfU0hOX05PUk1BTDoKKyAgICAgICAg ICAgICAgICAgICAgc2MtPnJlZ3MuY3N0cy5iaXRzLnNoc3QgPSBOVk1FX1NIU1RfQ09NUExFVEU7 CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTlZNRV9T SE5fQUJSVVBUOgorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg IGFzc2VydCgwICYmICJub3QgeWV0IGltcGxlbWVudGVkIik7CisgICAgICAgICAgICB9CisKKyAg ICAgICAgICAgIHNjLT5yZWdzLmNjLnJhdyA9ICh1aW50MzJfdCl2YWx1ZTsKKyAgICAgICAgICAg IHJldHVybjsKKworICAgICAgICBjYXNlIE5WTUVfQ1JfQVFBOgorICAgICAgICAgICAgc2MtPnJl Z3MuYXFhLnJhdyA9ICh1aW50MzJfdCl2YWx1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAg ICAgICBjYXNlIE5WTUVfQ1JfQVNRX0xPVzoKKyAgICAgICAgICAgIHNjLT5yZWdzLmFzcSA9Cisg ICAgICAgICAgICAgICAgKHNjLT5yZWdzLmFzcSAmIDB4ZmZmZmZmZmYwMDAwMDAwMCkgfCAoMHhm ZmZmZjAwMCAmIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNlIE5W TUVfQ1JfQVNRX0hJOgorICAgICAgICAgICAgc2MtPnJlZ3MuYXNxID0gKHNjLT5yZWdzLmFzcSAm IDB4MDAwMDAwMDBmZmZmZmZmZikgfCAodmFsdWUgPDwgMzIpOworICAgICAgICAgICAgcmV0dXJu OworCisgICAgICAgIGNhc2UgTlZNRV9DUl9BQ1FfTE9XOgorICAgICAgICAgICAgc2MtPnJlZ3Mu YWNxID0KKyAgICAgICAgICAgICAgICAoc2MtPnJlZ3MuYWNxICYgMHhmZmZmZmZmZjAwMDAwMDAw KSB8ICgweGZmZmZmMDAwICYgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg IGNhc2UgTlZNRV9DUl9BQ1FfSEk6CisgICAgICAgICAgICBzYy0+cmVncy5hY3EgPSAoc2MtPnJl Z3MuYWNxICYgMHgwMDAwMDAwMGZmZmZmZmZmKSB8ICh2YWx1ZSA8PCAzMik7CisgICAgICAgICAg ICByZXR1cm47CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERQUklOVEYoInVua25v d24gcmVnb2ZmIDB4JWx4IHdpdGggdmFsdWUgMHglbHgsIHNpemUgJWQgaW4gJXNcbiIsCisgICAg ICAgICAgICAgICAgICAgIHJlZ29mZiwgdmFsdWUsIHNpemUsIF9fZnVuY19fKTsKKyAgICAgICAg ICAgIGFzc2VydCgwKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHBjaV9udm1lX3dyaXRlKHN0 cnVjdCB2bWN0eCogY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZjcHUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGNpX2Rldmluc3QqIHBpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IGJhcmlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQ2NF90IHJlZ29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXpl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdmFsdWUpCit7CisgICAgc3Ry dWN0IHBjaV9udm1lX3NvZnRjKiBzYyA9IHBpLT5waV9hcmc7CisKKyAgICBpZiAoYmFyaWR4ID09 IHBjaV9tc2l4X3RhYmxlX2JhcihwaSkgfHwgYmFyaWR4ID09IHBjaV9tc2l4X3BiYV9iYXIocGkp KSB7CisgICAgICAgIERQUklOVEYoImJhcmlkeCwgJWQsIG1zaXg6IHJlZ29mZiAweCVseCwgc2l6 ZSAlZCwgdmFsdWUgJWx4XG4iLCBiYXJpZHgsCisgICAgICAgICAgICAgICAgcmVnb2ZmLCBzaXpl LCB2YWx1ZSk7CisgICAgICAgIHBjaV9lbXVsX21zaXhfdHdyaXRlKHBpLCByZWdvZmYsIHNpemUs IHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoYmFyaWR4KSB7 CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIHBjaV9udm1lX3dyaXRlX2Jhcl8wKGN0eCwg c2MsIHJlZ29mZiwgdmFsdWUsIHNpemUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg ZGVmYXVsdDoKKyAgICAgICAgICAgIERQUklOVEYoInVua25vd24gYmFyaWR4ICVkIHdpdGggMHgl bHggaW4gJXNcbiIsIGJhcmlkeCwgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgIF9fZnVuY19f KTsKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICB9Cit9CisKK3N0YXRpYyB1aW50NjRfdCBw Y2lfbnZtZV9yZWFkX2Jhcl8wKAorICAgIHN0cnVjdCBwY2lfbnZtZV9zb2Z0Yyogc2MsCisgICAg ZW51bSBudm1lX2NvbnRyb2xsZXJfcmVnaXN0ZXJfb2Zmc2V0cyBvZmZzZXQsCisgICAgaW50IHNp emUpCit7CisgICAgRFBSSU5URigicmVhZCAweCV4XG4iLCBvZmZzZXQpOworICAgIGFzc2VydChz aXplID09IDQgJiYgIndvcmQgc2l6ZSBzaG91bGQgYmUgNC4iKTsKKyAgICBzd2l0Y2ggKG9mZnNl dCkgeworICAgICAgICBjYXNlIE5WTUVfQ1JfQ0FQX0xPVzoKKyAgICAgICAgICAgIHJldHVybiAo dWludDY0X3Qpc2MtPnJlZ3MuY2FwX2xvLnJhdzsKKworICAgICAgICBjYXNlIE5WTUVfQ1JfQ0FQ X0hJOgorICAgICAgICAgICAgcmV0dXJuICh1aW50NjRfdClzYy0+cmVncy5jYXBfaGkucmF3Owor CisgICAgICAgIGNhc2UgTlZNRV9DUl9WUzoKKyAgICAgICAgICAgIHJldHVybiAodWludDY0X3Qp c2MtPnJlZ3MudnM7CisKKyAgICAgICAgY2FzZSBOVk1FX0NSX0NDOgorICAgICAgICAgICAgcmV0 dXJuICh1aW50NjRfdClzYy0+cmVncy5jYy5yYXc7CisKKyAgICAgICAgY2FzZSBOVk1FX0NSX0NT VFM6CisgICAgICAgICAgICBEUFJJTlRGKCJDU1RTIHJhdyAweCV4XG4iLCBzYy0+cmVncy5jc3Rz LnJhdyk7CisgICAgICAgICAgICByZXR1cm4gKHVpbnQ2NF90KXNjLT5yZWdzLmNzdHMucmF3Owor CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBEUFJJTlRGKCJ1bmtub3duIHJlZ29mZiB2 YWx1ZTogMHgleCwgc2l6ZSAlZCBpbiAlc1xuIiwgb2Zmc2V0LCBzaXplLAorICAgICAgICAgICAg ICAgICAgICBfX2Z1bmNfXyk7CisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgfQorCisgICAg cmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBwY2lfbnZtZV9yZWFkKHN0cnVjdCB2bWN0 eCogY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZjcHUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGNpX2Rldmluc3QqIHBpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IGJhcmlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ2NF90IHJlZ29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBzaXplKQoreworICAgIHN0cnVjdCBwY2lfbnZtZV9zb2Z0Yyogc2MgPSBwaS0+cGlfYXJnOwor CisgICAgaWYgKGJhcmlkeCA9PSBwY2lfbXNpeF90YWJsZV9iYXIocGkpIHx8IGJhcmlkeCA9PSBw Y2lfbXNpeF9wYmFfYmFyKHBpKSkgeworICAgICAgICBEUFJJTlRGKCJiYXJpZHg6ICVkLCBtc2l4 OiByZWdvZmYgMHglbHgsIHNpemUgJWRcbiIsIGJhcmlkeCwgcmVnb2ZmLAorICAgICAgICAgICAg ICAgIHNpemUpOworICAgICAgICByZXR1cm4gcGNpX2VtdWxfbXNpeF90cmVhZChwaSwgcmVnb2Zm LCBzaXplKTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGJhcmlkeCkgeworICAgICAgICBjYXNlIDA6 CisgICAgICAgICAgICByZXR1cm4gcGNpX252bWVfcmVhZF9iYXJfMChzYywgcmVnb2ZmLCBzaXpl KTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgRFBSSU5URigidW5rbm93biBiYXIg JWQsIDB4JWx4XG4iLCBiYXJpZHgsIHJlZ29mZik7CisgICAgICAgICAgICBhc3NlcnQoMCk7Cisg ICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBwY2lfZGV2ZW11IHBjaV9kZV9udm1l ID0geworICAgIC5wZV9lbXUgPSAibnZtZSIsCisgICAgLnBlX2luaXQgPSBwY2lfbnZtZV9pbml0 LAorICAgIC5wZV9iYXJ3cml0ZSA9IHBjaV9udm1lX3dyaXRlLAorICAgIC5wZV9iYXJyZWFkID0g cGNpX252bWVfcmVhZAorfTsKK1BDSV9FTVVMX1NFVChwY2lfZGVfbnZtZSk7CmRpZmYgLS1naXQg YS91c3Iuc2Jpbi9iaHl2ZS9iaHl2ZS44IGIvdXNyLnNiaW4vYmh5dmUvYmh5dmUuOAotLS0gYS91 c3Iuc2Jpbi9iaHl2ZS9iaHl2ZS44CisrKyBiL3Vzci5zYmluL2JoeXZlL2JoeXZlLjgKQEAgLTE4 MCw2ICsxODAsOCBAQAogLkl0IExpIGxwYwogTFBDIFBDSS1JU0EgYnJpZGdlIHdpdGggQ09NMSBh bmQgQ09NMiAxNjU1MCBzZXJpYWwgcG9ydHMgYW5kIGEgYm9vdCBST00uCiBUaGUgTFBDIGJyaWRn ZSBlbXVsYXRpb24gY2FuIG9ubHkgYmUgY29uZmlndXJlZCBvbiBidXMgMC4KKy5JdCBMaSBudm1l CitOVk1lIGNvbnRyb2xsZXIgYXR0YWNoZWQuCiAuRWwKIC5JdCBPcCBBciBjb25mCiBUaGlzIG9w dGlvbmFsIHBhcmFtZXRlciBkZXNjcmliZXMgdGhlIGJhY2tlbmQgZm9yIGRldmljZSBlbXVsYXRp b25zLgpkaWZmIC0tZ2l0IGEvdXNyLnNiaW4vYmh5dmUvTWFrZWZpbGUgYi91c3Iuc2Jpbi9iaHl2 ZS9NYWtlZmlsZQotLS0gYS91c3Iuc2Jpbi9iaHl2ZS9NYWtlZmlsZQorKysgYi91c3Iuc2Jpbi9i aHl2ZS9NYWtlZmlsZQpAQCAtMzksNiArMzksNyBAQAogCXBjaV92aXJ0aW9fcm5kLmMJXAogCXBj aV91YXJ0LmMJCVwKIAlwY2lfeGhjaS5jCQlcCisJcGNpX252bWUuYwkJXAogCXBtLmMJCQlcCiAJ cG9zdC5jCQkJXAogCXBzMmtiZC5jCQlcCkBAIC02MSw3ICs2Miw3IEBACiAKIExJQkFERD0Jdm1t YXBpIG1kIHB0aHJlYWQgegogCi1DRkxBR1MrPSAtSSR7QkhZVkVfU1lTRElSfS9zeXMvZGV2L3Vz Yi9jb250cm9sbGVyCitDRkxBR1MrPSAtSSR7QkhZVkVfU1lTRElSfS9zeXMvZGV2L3VzYi9jb250 cm9sbGVyIC1JJHtCSFlWRV9TWVNESVJ9L3N5cy9kZXYvbnZtZS8KIAogV0FSTlM/PQkyCiAKZGlm ZiAtLWdpdCBhL3N5cy9kZXYvbnZtZS9udm1lLmggYi9zeXMvZGV2L252bWUvbnZtZS5oCi0tLSBh L3N5cy9kZXYvbnZtZS9udm1lLmgKKysrIGIvc3lzL2Rldi9udm1lL252bWUuaApAQCAtMTI0LDYg KzEyNCw3IEBACiB9IF9fcGFja2VkOwogCiBlbnVtIHNobl92YWx1ZSB7CisgICAgTlZNRV9TSE5f Tk9FRkNUICAgICA9IDB4MCwKIAlOVk1FX1NITl9OT1JNQUwJCT0gMHgxLAogCU5WTUVfU0hOX0FC UlVQVAkJPSAweDIsCiB9OwoK --b1_03bd2db2ea9364bf79c571da2b2f20e4--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?differential-rev-PHID-DREV-vgewguea2dhplsjkeozl-req>