Date: Mon, 25 Jan 2016 05:02:06 +0000 From: Phabricator <phabric-noreply@FreeBSD.org> To: freebsd-net@freebsd.org Subject: [Differential] [Closed] D4972: hyperv/hn: Partly rework transmission path Message-ID: <d2ebb1e510a55e19fba0ba13c5d96832@localhost.localdomain> In-Reply-To: <differential-rev-PHID-DREV-dh7no3ven3cefij67n4k-req@FreeBSD.org> References: <differential-rev-PHID-DREV-dh7no3ven3cefij67n4k-req@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--b1_d2ebb1e510a55e19fba0ba13c5d96832 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: 8bit This revision was automatically updated to reflect the committed changes. Closed by commit rS294700: hyperv/hn: Partly rework transmission path (authored by sephe). CHANGED PRIOR TO COMMIT https://reviews.freebsd.org/D4972?vs=12444&id=12668#toc REPOSITORY rS FreeBSD src repository CHANGES SINCE LAST UPDATE https://reviews.freebsd.org/D4972?vs=12444&id=12668 REVISION DETAIL https://reviews.freebsd.org/D4972 AFFECTED FILES head/sys/dev/hyperv/netvsc/hv_net_vsc.c head/sys/dev/hyperv/netvsc/hv_net_vsc.h head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c head/sys/dev/hyperv/netvsc/hv_rndis.h head/sys/dev/hyperv/netvsc/hv_rndis_filter.c head/sys/dev/hyperv/netvsc/hv_rndis_filter.h EMAIL PREFERENCES https://reviews.freebsd.org/settings/panel/emailpreferences/ To: sepherosa_gmail.com, delphij, decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com, royger, network, adrian Cc: freebsd-net-list --b1_d2ebb1e510a55e19fba0ba13c5d96832 Content-Type: text/x-patch; charset=utf-8; name="D4972.12668.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D4972.12668.patch" ZGlmZiAtLWdpdCBhL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X3JuZGlzX2ZpbHRlci5o IGIvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfcm5kaXNfZmlsdGVyLmgKLS0tIGEvaGVh ZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfcm5kaXNfZmlsdGVyLmgKKysrIGIvaGVhZC9zeXMv ZGV2L2h5cGVydi9uZXR2c2MvaHZfcm5kaXNfZmlsdGVyLmgKQEAgLTk5LDYgKzk5LDcgQEAKIGlu dCBodl9yZl9vbl9yZWNlaXZlKG5ldHZzY19kZXYgKm5ldF9kZXYsCiAgICAgc3RydWN0IGh2X2Rl dmljZSAqZGV2aWNlLCBuZXR2c2NfcGFja2V0ICpwa3QpOwogdm9pZCBodl9yZl9yZWNlaXZlX3Jv bGx1cChuZXR2c2NfZGV2ICpuZXRfZGV2KTsKK3ZvaWQgaHZfcmZfY2hhbm5lbF9yb2xsdXAobmV0 dnNjX2RldiAqbmV0X2Rldik7CiBpbnQgaHZfcmZfb25fZGV2aWNlX2FkZChzdHJ1Y3QgaHZfZGV2 aWNlICpkZXZpY2UsIHZvaWQgKmFkZGl0bF9pbmZvKTsKIGludCBodl9yZl9vbl9kZXZpY2VfcmVt b3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSwgYm9vbGVhbl90IGRlc3Ryb3lfY2hhbm5lbCk7 CiBpbnQgaHZfcmZfb25fb3BlbihzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UpOwpkaWZmIC0tZ2l0 IGEvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfcm5kaXNfZmlsdGVyLmMgYi9oZWFkL3N5 cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9ybmRpc19maWx0ZXIuYwotLS0gYS9oZWFkL3N5cy9kZXYv aHlwZXJ2L25ldHZzYy9odl9ybmRpc19maWx0ZXIuYworKysgYi9oZWFkL3N5cy9kZXYvaHlwZXJ2 L25ldHZzYy9odl9ybmRpc19maWx0ZXIuYwpAQCAtOTc0LDMgKzk3NCwyMSBAQAogCXJuZGlzX2Rl diA9IChybmRpc19kZXZpY2UgKiluZXRfZGV2LT5leHRlbnNpb247CiAJbmV0dnNjX3JlY3Zfcm9s bHVwKHJuZGlzX2Rldi0+bmV0X2Rldi0+ZGV2KTsKIH0KKwordm9pZAoraHZfcmZfY2hhbm5lbF9y b2xsdXAobmV0dnNjX2RldiAqbmV0X2RldikKK3sKKwlybmRpc19kZXZpY2UgKnJuZGlzX2RldjsK KworCXJuZGlzX2RldiA9IChybmRpc19kZXZpY2UgKiluZXRfZGV2LT5leHRlbnNpb247CisKKwkv KgorCSAqIFRoaXMgY291bGQgYmUgY2FsbGVkIHByZXR0eSBlYXJseSwgc28gd2UgbmVlZAorCSAq IHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGhhcyBiZWVuIHNldHVwLgorCSAqLworCWlmIChybmRp c19kZXYgPT0gTlVMTCB8fAorCSAgICBybmRpc19kZXYtPm5ldF9kZXYgPT0gTlVMTCB8fAorCSAg ICBybmRpc19kZXYtPm5ldF9kZXYtPmRldiA9PSBOVUxMKQorCQlyZXR1cm47CisJbmV0dnNjX2No YW5uZWxfcm9sbHVwKHJuZGlzX2Rldi0+bmV0X2Rldi0+ZGV2KTsKK30KZGlmZiAtLWdpdCBhL2hl YWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X3JuZGlzLmggYi9oZWFkL3N5cy9kZXYvaHlwZXJ2 L25ldHZzYy9odl9ybmRpcy5oCi0tLSBhL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X3Ju ZGlzLmgKKysrIGIvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfcm5kaXMuaApAQCAtMTA1 MCw2ICsxMDUwLDcgQEAKICAgICBuZXR2c2NfcGFja2V0ICpwYWNrZXQsIAogICAgIHJuZGlzX3Rj cF9pcF9jc3VtX2luZm8gKmNzdW1faW5mbyk7CiB2b2lkIG5ldHZzY19yZWN2X3JvbGx1cChzdHJ1 Y3QgaHZfZGV2aWNlICpkZXZpY2VfY3R4KTsKK3ZvaWQgbmV0dnNjX2NoYW5uZWxfcm9sbHVwKHN0 cnVjdCBodl9kZXZpY2UgKmRldmljZV9jdHgpOwogCiB2b2lkKiBodl9zZXRfcnBwaV9kYXRhKHJu ZGlzX21zZyAqcm5kaXNfbWVzZywKICAgICB1aW50MzJfdCBycHBpX3NpemUsCmRpZmYgLS1naXQg YS9oZWFkL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXR2c2NfZHJ2X2ZyZWVic2QuYyBiL2hl YWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jCi0tLSBhL2hl YWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jCisrKyBiL2hl YWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jCkBAIC0xMjks NiArMTI5LDQxIEBACiAjZGVmaW5lIEhWX05WX1NDX1BUUl9PRkZTRVRfSU5fQlVGICAgICAgICAg MAogI2RlZmluZSBIVl9OVl9QQUNLRVRfT0ZGU0VUX0lOX0JVRiAgICAgICAgIDE2CiAKKy8qIFlZ WSBzaG91bGQgZ2V0IGl0IGZyb20gdGhlIHVuZGVybHlpbmcgY2hhbm5lbCAqLworI2RlZmluZSBI Tl9UWF9ERVNDX0NOVAkJCTUxMgorCisjZGVmaW5lIEhOX1JORElTX01TR19MRU4JCVwKKyAgICAo c2l6ZW9mKHJuZGlzX21zZykgKwkJXAorICAgICBSTkRJU19WTEFOX1BQSV9TSVpFICsJCVwKKyAg ICAgUk5ESVNfVFNPX1BQSV9TSVpFICsJCVwKKyAgICAgUk5ESVNfQ1NVTV9QUElfU0laRSkKKyNk ZWZpbmUgSE5fUk5ESVNfTVNHX0JPVU5EQVJZCQlQQUdFX1NJWkUKKyNkZWZpbmUgSE5fUk5ESVNf TVNHX0FMSUdOCQlDQUNIRV9MSU5FX1NJWkUKKworI2RlZmluZSBITl9UWF9EQVRBX0JPVU5EQVJZ CQlQQUdFX1NJWkUKKyNkZWZpbmUgSE5fVFhfREFUQV9NQVhTSVpFCQlJUF9NQVhQQUNLRVQKKyNk ZWZpbmUgSE5fVFhfREFUQV9TRUdTSVpFCQlQQUdFX1NJWkUKKyNkZWZpbmUgSE5fVFhfREFUQV9T RUdDTlRfTUFYCQlcCisgICAgKE5FVFZTQ19QQUNLRVRfTUFYUEFHRSAtIEhWX1JGX05VTV9UWF9S RVNFUlZFRF9QQUdFX0JVRlMpCisKK3N0cnVjdCBobl90eGRlc2MgeworCVNMSVNUX0VOVFJZKGhu X3R4ZGVzYykgbGluazsKKwlzdHJ1Y3QgbWJ1ZgkqbTsKKwlzdHJ1Y3QgaG5fc29mdGMJKnNjOwor CWludAkJcmVmczsKKwl1aW50MzJfdAlmbGFnczsJCS8qIEhOX1RYRF9GTEFHXyAqLworCW5ldHZz Y19wYWNrZXQJbmV0dnNjX3BrdDsJLyogWFhYIHRvIGJlIHJlbW92ZWQgKi8KKworCWJ1c19kbWFt YXBfdAlkYXRhX2RtYXA7CisKKwlidXNfYWRkcl90CXJuZGlzX21zZ19wYWRkcjsKKwlybmRpc19t c2cJKnJuZGlzX21zZzsKKwlidXNfZG1hbWFwX3QJcm5kaXNfbXNnX2RtYXA7Cit9OworCisjZGVm aW5lIEhOX1RYRF9GTEFHX09OTElTVAkweDEKKyNkZWZpbmUgSE5fVFhEX0ZMQUdfRE1BTUFQCTB4 MgorCiAvKgogICogQSB1bmlmaWVkIGZsYWcgZm9yIGFsbCBvdXRib3VuZCBjaGVjayBzdW0gZmxh Z3MgaXMgdXNlZnVsLAogICogYW5kIGl0IGhlbHBzIGF2b2lkaW5nIHVubmVjZXNzYXJ5IGNoZWNr IHN1bSBjYWxjdWxhdGlvbiBpbgpAQCAtMTc0LDIxICsyMDksMzQgQEAKIHN0YXRpYyBpbnQgaG5f dHJ1c3RfaG9zdHRjcCA9IDA7CiBUVU5BQkxFX0lOVCgiZGV2LmhuLnRydXN0X2hvc3R0Y3AiLCAm aG5fdHJ1c3RfaG9zdHRjcCk7CiAKKyNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSAxMTAwMDQ1Cisv KiBMaW1pdCBUU08gYnVyc3Qgc2l6ZSAqLworc3RhdGljIGludCBobl90c29fbWF4bGVuID0gMDsK K1RVTkFCTEVfSU5UKCJkZXYuaG4udHNvX21heGxlbiIsICZobl90c29fbWF4bGVuKTsKKyNlbmRp ZgorCisvKiBMaW1pdCBjaGltbmV5IHNlbmQgc2l6ZSAqLworc3RhdGljIGludCBobl90eF9jaGlt bmV5X3NpemUgPSAwOworVFVOQUJMRV9JTlQoImRldi5obi50eF9jaGltbmV5X3NpemUiLCAmaG5f dHhfY2hpbW5leV9zaXplKTsKKwogLyoKICAqIEZvcndhcmQgZGVjbGFyYXRpb25zCiAgKi8KIHN0 YXRpYyB2b2lkIGhuX3N0b3AoaG5fc29mdGNfdCAqc2MpOwogc3RhdGljIHZvaWQgaG5faWZpbml0 X2xvY2tlZChobl9zb2Z0Y190ICpzYyk7CiBzdGF0aWMgdm9pZCBobl9pZmluaXQodm9pZCAqeHNj KTsKIHN0YXRpYyBpbnQgIGhuX2lvY3RsKHN0cnVjdCBpZm5ldCAqaWZwLCB1X2xvbmcgY21kLCBj YWRkcl90IGRhdGEpOwotc3RhdGljIGludCAgaG5fc3RhcnRfbG9ja2VkKHN0cnVjdCBpZm5ldCAq aWZwKTsKK3N0YXRpYyB2b2lkIGhuX3N0YXJ0X2xvY2tlZChzdHJ1Y3QgaWZuZXQgKmlmcCk7CiBz dGF0aWMgdm9pZCBobl9zdGFydChzdHJ1Y3QgaWZuZXQgKmlmcCk7CiBzdGF0aWMgaW50IGhuX2lm bWVkaWFfdXBkKHN0cnVjdCBpZm5ldCAqaWZwKTsKIHN0YXRpYyB2b2lkIGhuX2lmbWVkaWFfc3Rz KHN0cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgaWZtZWRpYXJlcSAqaWZtcik7CiAjaWZkZWYgSE5f TFJPX0hJV0FUCiBzdGF0aWMgaW50IGhuX2xyb19oaXdhdF9zeXNjdGwoU1lTQ1RMX0hBTkRMRVJf QVJHUyk7CiAjZW5kaWYKK3N0YXRpYyBpbnQgaG5fdHhfY2hpbW5leV9zaXplX3N5c2N0bChTWVND VExfSEFORExFUl9BUkdTKTsKIHN0YXRpYyBpbnQgaG5fY2hlY2tfaXBsZW4oY29uc3Qgc3RydWN0 IG1idWYgKiwgaW50KTsKK3N0YXRpYyBpbnQgaG5fY3JlYXRlX3R4X3Jpbmcoc3RydWN0IGhuX3Nv ZnRjICpzYyk7CitzdGF0aWMgdm9pZCBobl9kZXN0cm95X3R4X3Jpbmcoc3RydWN0IGhuX3NvZnRj ICpzYyk7CiAKIHN0YXRpYyBfX2lubGluZSB2b2lkCiBobl9zZXRfbHJvX2hpd2F0KHN0cnVjdCBo bl9zb2Z0YyAqc2MsIGludCBoaXdhdCkKQEAgLTMxOCwxMCArMzY2LDEzIEBACiAJbmV0dnNjX2Rl dmljZV9pbmZvIGRldmljZV9pbmZvOwogCWhuX3NvZnRjX3QgKnNjOwogCWludCB1bml0ID0gZGV2 aWNlX2dldF91bml0KGRldik7Ci0Jc3RydWN0IGlmbmV0ICppZnA7CisJc3RydWN0IGlmbmV0ICpp ZnAgPSBOVUxMOwogCXN0cnVjdCBzeXNjdGxfb2lkX2xpc3QgKmNoaWxkOwogCXN0cnVjdCBzeXNj dGxfY3R4X2xpc3QgKmN0eDsKLQlpbnQgcmV0OworCWludCBlcnJvcjsKKyNpZiBfX0ZyZWVCU0Rf dmVyc2lvbiA+PSAxMTAwMDQ1CisJaW50IHRzb19tYXhsZW47CisjZW5kaWYKIAogCXNjID0gZGV2 aWNlX2dldF9zb2Z0YyhkZXYpOwogCWlmIChzYyA9PSBOVUxMKSB7CkBAIC0zMzQsNiArMzg1LDEw IEBACiAJc2MtPmhuX2xyb19oaXdhdCA9IEhOX0xST19ISVdBVF9ERUY7CiAJc2MtPmhuX3RydXN0 X2hvc3R0Y3AgPSBobl90cnVzdF9ob3N0dGNwOwogCisJZXJyb3IgPSBobl9jcmVhdGVfdHhfcmlu ZyhzYyk7CisJaWYgKGVycm9yKQorCQlnb3RvIGZhaWxlZDsKKwogCU5WX0xPQ0tfSU5JVChzYywg Ik5ldFZTQ0xvY2siKTsKIAogCXNjLT5obl9kZXZfb2JqID0gZGV2aWNlX2N0eDsKQEAgLTM4MSwx MiArNDM2LDEwIEBACiAJZWxzZQogCQlpZnAtPmlmX2h3YXNzaXN0ID0gQ1NVTV9UQ1AgfCBDU1VN X1RTTzsKIAotCXJldCA9IGh2X3JmX29uX2RldmljZV9hZGQoZGV2aWNlX2N0eCwgJmRldmljZV9p bmZvKTsKLQlpZiAocmV0ICE9IDApIHsKLQkJaWZfZnJlZShpZnApOworCWVycm9yID0gaHZfcmZf b25fZGV2aWNlX2FkZChkZXZpY2VfY3R4LCAmZGV2aWNlX2luZm8pOworCWlmIChlcnJvcikKKwkJ Z290byBmYWlsZWQ7CiAKLQkJcmV0dXJuIChyZXQpOwotCX0KIAlpZiAoZGV2aWNlX2luZm8ubGlu a19zdGF0ZSA9PSAwKSB7CiAJCXNjLT5obl9jYXJyaWVyID0gMTsKIAl9CkBAIC00MDAsOCArNDUz LDMwIEBACiAjZW5kaWYKICNlbmRpZgkvKiBJTkVUIHx8IElORVQ2ICovCiAKKyNpZiBfX0ZyZWVC U0RfdmVyc2lvbiA+PSAxMTAwMDQ1CisJdHNvX21heGxlbiA9IGhuX3Rzb19tYXhsZW47CisJaWYg KHRzb19tYXhsZW4gPD0gMCB8fCB0c29fbWF4bGVuID4gSVBfTUFYUEFDS0VUKQorCQl0c29fbWF4 bGVuID0gSVBfTUFYUEFDS0VUOworCisJaWZwLT5pZl9od190c29tYXhzZWdjb3VudCA9IEhOX1RY X0RBVEFfU0VHQ05UX01BWDsKKwlpZnAtPmlmX2h3X3Rzb21heHNlZ3NpemUgPSBQQUdFX1NJWkU7 CisJaWZwLT5pZl9od190c29tYXggPSB0c29fbWF4bGVuIC0KKwkgICAgKEVUSEVSX0hEUl9MRU4g KyBFVEhFUl9WTEFOX0VOQ0FQX0xFTik7CisjZW5kaWYKKwogCWV0aGVyX2lmYXR0YWNoKGlmcCwg ZGV2aWNlX2luZm8ubWFjX2FkZHIpOwogCisjaWYgX19GcmVlQlNEX3ZlcnNpb24gPj0gMTEwMDA0 NQorCWlmX3ByaW50ZihpZnAsICJUU086ICV1LyV1LyV1XG4iLCBpZnAtPmlmX2h3X3Rzb21heCwK KwkgICAgaWZwLT5pZl9od190c29tYXhzZWdjb3VudCwgaWZwLT5pZl9od190c29tYXhzZWdzaXpl KTsKKyNlbmRpZgorCisJc2MtPmhuX3R4X2NoaW1uZXlfbWF4ID0gc2MtPm5ldF9kZXYtPnNlbmRf c2VjdGlvbl9zaXplOworCXNjLT5obl90eF9jaGltbmV5X3NpemUgPSBzYy0+aG5fdHhfY2hpbW5l eV9tYXg7CisJaWYgKGhuX3R4X2NoaW1uZXlfc2l6ZSA+IDAgJiYKKwkgICAgaG5fdHhfY2hpbW5l eV9zaXplIDwgc2MtPmhuX3R4X2NoaW1uZXlfbWF4KQorCQlzYy0+aG5fdHhfY2hpbW5leV9zaXpl ID0gaG5fdHhfY2hpbW5leV9zaXplOworCiAJY3R4ID0gZGV2aWNlX2dldF9zeXNjdGxfY3R4KGRl dik7CiAJY2hpbGQgPSBTWVNDVExfQ0hJTERSRU4oZGV2aWNlX2dldF9zeXNjdGxfdHJlZShkZXYp KTsKIApAQCAtNDI5LDYgKzUwNCwyNiBAQAogCSAgICAiIyBvZiBUQ1Agc2VnZW1lbnRzIHRoYXQg d2UgdHJ1c3QgaG9zdCdzIGNzdW0gdmVyaWZpY2F0aW9uIik7CiAJU1lTQ1RMX0FERF9VTE9ORyhj dHgsIGNoaWxkLCBPSURfQVVUTywgInNtYWxsX3BrdHMiLAogCSAgICBDVExGTEFHX1JXLCAmc2Mt PmhuX3NtYWxsX3BrdHMsICIjIG9mIHNtYWxsIHBhY2tldHMgcmVjZWl2ZWQiKTsKKwlTWVNDVExf QUREX1VMT05HKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAibm9fdHhkZXNjcyIsCisJICAgIENUTEZM QUdfUlcsICZzYy0+aG5fbm9fdHhkZXNjcywgIiMgb2YgdGltZXMgc2hvcnQgb2YgVFggZGVzY3Mi KTsKKwlTWVNDVExfQUREX1VMT05HKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAic2VuZF9mYWlsZWQi LAorCSAgICBDVExGTEFHX1JXLCAmc2MtPmhuX3NlbmRfZmFpbGVkLCAiIyBvZiBoeXBlci12IHNl bmRpbmcgZmFpbHVyZSIpOworCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBjaGlsZCwgT0lEX0FVVE8s ICJ0eGRtYV9mYWlsZWQiLAorCSAgICBDVExGTEFHX1JXLCAmc2MtPmhuX3R4ZG1hX2ZhaWxlZCwg IiMgb2YgVFggRE1BIGZhaWx1cmUiKTsKKwlTWVNDVExfQUREX1VMT05HKGN0eCwgY2hpbGQsIE9J RF9BVVRPLCAidHhfY29sbGFwc2VkIiwKKwkgICAgQ1RMRkxBR19SVywgJnNjLT5obl90eF9jb2xs YXBzZWQsICIjIG9mIFRYIG1idWYgY29sbGFwc2VkIik7CisJU1lTQ1RMX0FERF9VTE9ORyhjdHgs IGNoaWxkLCBPSURfQVVUTywgInR4X2NoaW1uZXkiLAorCSAgICBDVExGTEFHX1JXLCAmc2MtPmhu X3R4X2NoaW1uZXksICIjIG9mIGNoaW1uZXkgc2VuZCIpOworCVNZU0NUTF9BRERfSU5UKGN0eCwg Y2hpbGQsIE9JRF9BVVRPLCAidHhkZXNjX2NudCIsCisJICAgIENUTEZMQUdfUkQsICZzYy0+aG5f dHhkZXNjX2NudCwgMCwgIiMgb2YgdG90YWwgVFggZGVzY3MiKTsKKwlTWVNDVExfQUREX0lOVChj dHgsIGNoaWxkLCBPSURfQVVUTywgInR4ZGVzY19hdmFpbCIsCisJICAgIENUTEZMQUdfUkQsICZz Yy0+aG5fdHhkZXNjX2F2YWlsLCAwLCAiIyBvZiBhdmFpbGFibGUgVFggZGVzY3MiKTsKKwlTWVND VExfQUREX0lOVChjdHgsIGNoaWxkLCBPSURfQVVUTywgInR4X2NoaW1uZXlfbWF4IiwKKwkgICAg Q1RMRkxBR19SRCwgJnNjLT5obl90eF9jaGltbmV5X21heCwgMCwKKwkgICAgIkNoaW1uZXkgc2Vu ZCBwYWNrZXQgc2l6ZSB1cHBlciBib3VuZGFyeSIpOworCVNZU0NUTF9BRERfUFJPQyhjdHgsIGNo aWxkLCBPSURfQVVUTywgInR4X2NoaW1uZXlfc2l6ZSIsCisJICAgIENUTFRZUEVfSU5UIHwgQ1RM RkxBR19SVywgc2MsIDAsIGhuX3R4X2NoaW1uZXlfc2l6ZV9zeXNjdGwsCisJICAgICJJIiwgIkNo aW1uZXkgc2VuZCBwYWNrZXQgc2l6ZSBsaW1pdCIpOwogCiAJaWYgKHVuaXQgPT0gMCkgewogCQlz dHJ1Y3Qgc3lzY3RsX2N0eF9saXN0ICpkY19jdHg7CkBAIC00NDYsOSArNTQxLDIxIEBACiAJCSAg ICBDVExGTEFHX1JELCAmaG5fdHJ1c3RfaG9zdHRjcCwgMCwKIAkJICAgICJUcnVzdCB0Y3Agc2Vn ZW1lbnQgdmVyaWZpY2F0aW9uIG9uIGhvc3Qgc2lkZSwgIgogCQkgICAgIndoZW4gY3N1bSBpbmZv IGlzIG1pc3NpbmcgKGdsb2JhbCBzZXR0aW5nKSIpOworCQlTWVNDVExfQUREX0lOVChkY19jdHgs IGRjX2NoaWxkLCBPSURfQVVUTywgInR4X2NoaW1uZXlfc2l6ZSIsCisJCSAgICBDVExGTEFHX1JE LCAmaG5fdHhfY2hpbW5leV9zaXplLCAwLAorCQkgICAgIkNoaW1uZXkgc2VuZCBwYWNrZXQgc2l6 ZSBsaW1pdCIpOworI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDExMDAwNDUKKwkJU1lTQ1RMX0FE RF9JTlQoZGNfY3R4LCBkY19jaGlsZCwgT0lEX0FVVE8sICJ0c29fbWF4bGVuIiwKKwkJICAgIENU TEZMQUdfUkQsICZobl90c29fbWF4bGVuLCAwLCAiVFNPIGJ1cnN0IGxpbWl0Iik7CisjZW5kaWYK IAl9CiAKIAlyZXR1cm4gKDApOworZmFpbGVkOgorCWhuX2Rlc3Ryb3lfdHhfcmluZyhzYyk7CisJ aWYgKGlmcCAhPSBOVUxMKQorCQlpZl9mcmVlKGlmcCk7CisJcmV0dXJuIChlcnJvcik7CiB9CiAK IC8qCkBAIC00ODAsNiArNTg3LDcgQEAKICNpZiBkZWZpbmVkKElORVQpIHx8IGRlZmluZWQoSU5F VDYpCiAJdGNwX2xyb19mcmVlKCZzYy0+aG5fbHJvKTsKICNlbmRpZgorCWhuX2Rlc3Ryb3lfdHhf cmluZyhzYyk7CiAKIAlyZXR1cm4gKDApOwogfQpAQCAtNDkzLDYgKzYwMSwxMTIgQEAKIAlyZXR1 cm4gKDApOwogfQogCitzdGF0aWMgX19pbmxpbmUgaW50Citobl90eGRlc2NfZG1hbWFwX2xvYWQo c3RydWN0IGhuX3NvZnRjICpzYywgc3RydWN0IGhuX3R4ZGVzYyAqdHhkLAorICAgIHN0cnVjdCBt YnVmICoqbV9oZWFkLCBidXNfZG1hX3NlZ21lbnRfdCAqc2VncywgaW50ICpuc2VncykKK3sKKwlz dHJ1Y3QgbWJ1ZiAqbSA9ICptX2hlYWQ7CisJaW50IGVycm9yOworCisJZXJyb3IgPSBidXNfZG1h bWFwX2xvYWRfbWJ1Zl9zZyhzYy0+aG5fdHhfZGF0YV9kdGFnLCB0eGQtPmRhdGFfZG1hcCwKKwkg ICAgbSwgc2VncywgbnNlZ3MsIEJVU19ETUFfTk9XQUlUKTsKKwlpZiAoZXJyb3IgPT0gRUZCSUcp IHsKKwkJc3RydWN0IG1idWYgKm1fbmV3OworCisJCW1fbmV3ID0gbV9jb2xsYXBzZShtLCBNX05P V0FJVCwgSE5fVFhfREFUQV9TRUdDTlRfTUFYKTsKKwkJaWYgKG1fbmV3ID09IE5VTEwpCisJCQly ZXR1cm4gRU5PQlVGUzsKKwkJZWxzZQorCQkJKm1faGVhZCA9IG0gPSBtX25ldzsKKwkJc2MtPmhu X3R4X2NvbGxhcHNlZCsrOworCisJCWVycm9yID0gYnVzX2RtYW1hcF9sb2FkX21idWZfc2coc2Mt PmhuX3R4X2RhdGFfZHRhZywKKwkJICAgIHR4ZC0+ZGF0YV9kbWFwLCBtLCBzZWdzLCBuc2Vncywg QlVTX0RNQV9OT1dBSVQpOworCX0KKwlpZiAoIWVycm9yKSB7CisJCWJ1c19kbWFtYXBfc3luYyhz Yy0+aG5fdHhfZGF0YV9kdGFnLCB0eGQtPmRhdGFfZG1hcCwKKwkJICAgIEJVU19ETUFTWU5DX1BS RVdSSVRFKTsKKwkJdHhkLT5mbGFncyB8PSBITl9UWERfRkxBR19ETUFNQVA7CisJfQorCXJldHVy biBlcnJvcjsKK30KKworc3RhdGljIF9faW5saW5lIHZvaWQKK2huX3R4ZGVzY19kbWFtYXBfdW5s b2FkKHN0cnVjdCBobl9zb2Z0YyAqc2MsIHN0cnVjdCBobl90eGRlc2MgKnR4ZCkKK3sKKworCWlm ICh0eGQtPmZsYWdzICYgSE5fVFhEX0ZMQUdfRE1BTUFQKSB7CisJCWJ1c19kbWFtYXBfc3luYyhz Yy0+aG5fdHhfZGF0YV9kdGFnLAorCQkgICAgdHhkLT5kYXRhX2RtYXAsIEJVU19ETUFTWU5DX1BP U1RXUklURSk7CisJCWJ1c19kbWFtYXBfdW5sb2FkKHNjLT5obl90eF9kYXRhX2R0YWcsCisJCSAg ICB0eGQtPmRhdGFfZG1hcCk7CisJCXR4ZC0+ZmxhZ3MgJj0gfkhOX1RYRF9GTEFHX0RNQU1BUDsK Kwl9Cit9CisKK3N0YXRpYyBfX2lubGluZSBpbnQKK2huX3R4ZGVzY19wdXQoc3RydWN0IGhuX3Nv ZnRjICpzYywgc3RydWN0IGhuX3R4ZGVzYyAqdHhkKQoreworCisJS0FTU0VSVCgodHhkLT5mbGFn cyAmIEhOX1RYRF9GTEFHX09OTElTVCkgPT0gMCwKKwkgICAgKCJwdXQgYW4gb25saXN0IHR4ZCAl I3giLCB0eGQtPmZsYWdzKSk7CisKKwlLQVNTRVJUKHR4ZC0+cmVmcyA+IDAsICgiaW52YWxpZCB0 eGQgcmVmcyAlZCIsIHR4ZC0+cmVmcykpOworCWlmIChhdG9taWNfZmV0Y2hhZGRfaW50KCZ0eGQt PnJlZnMsIC0xKSAhPSAxKQorCQlyZXR1cm4gMDsKKworCWhuX3R4ZGVzY19kbWFtYXBfdW5sb2Fk KHNjLCB0eGQpOworCWlmICh0eGQtPm0gIT0gTlVMTCkgeworCQltX2ZyZWVtKHR4ZC0+bSk7CisJ CXR4ZC0+bSA9IE5VTEw7CisJfQorCisJdHhkLT5mbGFncyB8PSBITl9UWERfRkxBR19PTkxJU1Q7 CisKKwltdHhfbG9ja19zcGluKCZzYy0+aG5fdHhsaXN0X3NwaW4pOworCUtBU1NFUlQoc2MtPmhu X3R4ZGVzY19hdmFpbCA+PSAwICYmCisJICAgIHNjLT5obl90eGRlc2NfYXZhaWwgPCBzYy0+aG5f dHhkZXNjX2NudCwKKwkgICAgKCJ0eGRlc2NfcHV0OiBpbnZhbGlkIHR4ZCBhdmFpbCAlZCIsIHNj LT5obl90eGRlc2NfYXZhaWwpKTsKKwlzYy0+aG5fdHhkZXNjX2F2YWlsKys7CisJU0xJU1RfSU5T RVJUX0hFQUQoJnNjLT5obl90eGxpc3QsIHR4ZCwgbGluayk7CisJbXR4X3VubG9ja19zcGluKCZz Yy0+aG5fdHhsaXN0X3NwaW4pOworCisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBfX2lubGluZSBz dHJ1Y3QgaG5fdHhkZXNjICoKK2huX3R4ZGVzY19nZXQoc3RydWN0IGhuX3NvZnRjICpzYykKK3sK KwlzdHJ1Y3QgaG5fdHhkZXNjICp0eGQ7CisKKwltdHhfbG9ja19zcGluKCZzYy0+aG5fdHhsaXN0 X3NwaW4pOworCXR4ZCA9IFNMSVNUX0ZJUlNUKCZzYy0+aG5fdHhsaXN0KTsKKwlpZiAodHhkICE9 IE5VTEwpIHsKKwkJS0FTU0VSVChzYy0+aG5fdHhkZXNjX2F2YWlsID4gMCwKKwkJICAgICgidHhk ZXNjX2dldDogaW52YWxpZCB0eGQgYXZhaWwgJWQiLCBzYy0+aG5fdHhkZXNjX2F2YWlsKSk7CisJ CXNjLT5obl90eGRlc2NfYXZhaWwtLTsKKwkJU0xJU1RfUkVNT1ZFX0hFQUQoJnNjLT5obl90eGxp c3QsIGxpbmspOworCX0KKwltdHhfdW5sb2NrX3NwaW4oJnNjLT5obl90eGxpc3Rfc3Bpbik7CisK KwlpZiAodHhkICE9IE5VTEwpIHsKKwkJS0FTU0VSVCh0eGQtPm0gPT0gTlVMTCAmJiB0eGQtPnJl ZnMgPT0gMCAmJgorCQkgICAgKHR4ZC0+ZmxhZ3MgJiBITl9UWERfRkxBR19PTkxJU1QpLCAoImlu dmFsaWQgdHhkIikpOworCQl0eGQtPmZsYWdzICY9IH5ITl9UWERfRkxBR19PTkxJU1Q7CisJCXR4 ZC0+cmVmcyA9IDE7CisJfQorCXJldHVybiB0eGQ7Cit9CisKK3N0YXRpYyBfX2lubGluZSB2b2lk Citobl90eGRlc2NfaG9sZChzdHJ1Y3QgaG5fdHhkZXNjICp0eGQpCit7CisKKwkvKiAwLT4xIHRy YW5zaXRpb24gd2lsbCBuZXZlciB3b3JrICovCisJS0FTU0VSVCh0eGQtPnJlZnMgPiAwLCAoImlu dmFsaWQgcmVmcyAlZCIsIHR4ZC0+cmVmcykpOworCWF0b21pY19hZGRfaW50KCZ0eGQtPnJlZnMs IDEpOworfQorCiAvKgogICogU2VuZCBjb21wbGV0aW9uIHByb2Nlc3NpbmcKICAqCkBAIC01MDMs MTI5ICs3MTcsOTggQEAKIHZvaWQKIG5ldHZzY194bWl0X2NvbXBsZXRpb24odm9pZCAqY29udGV4 dCkKIHsKLQluZXR2c2NfcGFja2V0ICpwYWNrZXQgPSAobmV0dnNjX3BhY2tldCAqKWNvbnRleHQ7 Ci0Jc3RydWN0IG1idWYgKm1iOwotCXVpbnQ4X3QgKmJ1ZjsKKwluZXR2c2NfcGFja2V0ICpwYWNr ZXQgPSBjb250ZXh0OworCXN0cnVjdCBobl90eGRlc2MgKnR4ZDsKKwlzdHJ1Y3QgaG5fc29mdGMg KnNjOworCisJdHhkID0gKHN0cnVjdCBobl90eGRlc2MgKikodWludHB0cl90KQorCSAgICBwYWNr ZXQtPmNvbXBsLnNlbmQuc2VuZF9jb21wbGV0aW9uX3RpZDsKKworCXNjID0gdHhkLT5zYzsKKwlz Yy0+aG5fdHhlb2YgPSAxOworCWhuX3R4ZGVzY19wdXQoc2MsIHR4ZCk7Cit9CiAKLQltYiA9IChz dHJ1Y3QgbWJ1ZiAqKSh1aW50cHRyX3QpcGFja2V0LT5jb21wbC5zZW5kLnNlbmRfY29tcGxldGlv bl90aWQ7Ci0JYnVmID0gKCh1aW50OF90ICopcGFja2V0KSAtIEhWX05WX1BBQ0tFVF9PRkZTRVRf SU5fQlVGOwordm9pZAorbmV0dnNjX2NoYW5uZWxfcm9sbHVwKHN0cnVjdCBodl9kZXZpY2UgKmRl dmljZV9jdHgpCit7CisJc3RydWN0IGhuX3NvZnRjICpzYyA9IGRldmljZV9nZXRfc29mdGMoZGV2 aWNlX2N0eC0+ZGV2aWNlKTsKKwlzdHJ1Y3QgaWZuZXQgKmlmcDsKIAotCWZyZWUoYnVmLCBNX05F VFZTQyk7CisJaWYgKCFzYy0+aG5fdHhlb2YpCisJCXJldHVybjsKIAotCWlmIChtYiAhPSBOVUxM KSB7Ci0JCW1fZnJlZW0obWIpOwotCX0KKwlzYy0+aG5fdHhlb2YgPSAwOworCWlmcCA9IHNjLT5o bl9pZnA7CisJTlZfTE9DSyhzYyk7CisJaWZwLT5pZl9kcnZfZmxhZ3MgJj0gfklGRl9EUlZfT0FD VElWRTsKKwlobl9zdGFydF9sb2NrZWQoaWZwKTsKKwlOVl9VTkxPQ0soc2MpOwogfQogCiAvKgog ICogU3RhcnQgYSB0cmFuc21pdCBvZiBvbmUgb3IgbW9yZSBwYWNrZXRzCiAgKi8KLXN0YXRpYyBp bnQKK3N0YXRpYyB2b2lkCiBobl9zdGFydF9sb2NrZWQoc3RydWN0IGlmbmV0ICppZnApCiB7CiAJ aG5fc29mdGNfdCAqc2MgPSBpZnAtPmlmX3NvZnRjOwogCXN0cnVjdCBodl9kZXZpY2UgKmRldmlj ZV9jdHggPSB2bWJ1c19nZXRfZGV2Y3R4KHNjLT5obl9kZXYpOwogCW5ldHZzY19kZXYgKm5ldF9k ZXYgPSBzYy0+bmV0X2RldjsKLQlkZXZpY2VfdCBkZXYgPSBkZXZpY2VfY3R4LT5kZXZpY2U7Ci0J dWludDhfdCAqYnVmOwogCW5ldHZzY19wYWNrZXQgKnBhY2tldDsKIAlzdHJ1Y3QgbWJ1ZiAqbV9o ZWFkLCAqbTsKLQlzdHJ1Y3QgbWJ1ZiAqbWNfaGVhZCA9IE5VTEw7CiAJc3RydWN0IGV0aGVyX3Zs YW5faGVhZGVyICplaDsKIAlybmRpc19tc2cgKnJuZGlzX21lc2c7CiAJcm5kaXNfcGFja2V0ICpy bmRpc19wa3Q7CiAJcm5kaXNfcGVyX3BhY2tldF9pbmZvICpycHBpOwogCW5kaXNfODAyMXFfaW5m byAqcnBwaV92bGFuX2luZm87CiAJcm5kaXNfdGNwX2lwX2NzdW1faW5mbyAqY3N1bV9pbmZvOwog CXJuZGlzX3RjcF90c29faW5mbyAqdHNvX2luZm87CQogCWludCBldGhlcl9sZW47Ci0JaW50IGk7 Ci0JaW50IG51bV9mcmFnczsKLQlpbnQgbGVuOwotCWludCByZXRyaWVzID0gMDsKLQlpbnQgcmV0 ID0gMDsJCiAJdWludDMyX3Qgcm5kaXNfbXNnX3NpemUgPSAwOwogCXVpbnQzMl90IHRyYW5zX3By b3RvX3R5cGU7CiAJdWludDMyX3Qgc2VuZF9idWZfc2VjdGlvbl9pZHggPQogCSAgICBOVlNQXzFf Q0hJTU5FWV9TRU5EX0lOVkFMSURfU0VDVElPTl9JTkRFWDsKIAotCXdoaWxlICghSUZRX0RSVl9J U19FTVBUWSgmc2MtPmhuX2lmcC0+aWZfc25kKSkgewotCQlJRlFfRFJWX0RFUVVFVUUoJnNjLT5o bl9pZnAtPmlmX3NuZCwgbV9oZWFkKTsKLQkJaWYgKG1faGVhZCA9PSBOVUxMKSB7Ci0JCQlicmVh azsKLQkJfQotCi0JCWxlbiA9IDA7Ci0JCW51bV9mcmFncyA9IDA7Ci0KLQkJLyogV2FsayB0aGUg bWJ1ZiBsaXN0IGNvbXB1dGluZyB0b3RhbCBsZW5ndGggYW5kIG51bSBmcmFncyAqLwotCQlmb3Ig KG0gPSBtX2hlYWQ7IG0gIT0gTlVMTDsgbSA9IG0tPm1fbmV4dCkgewotCQkJaWYgKG0tPm1fbGVu ICE9IDApIHsKLQkJCQludW1fZnJhZ3MrKzsKLQkJCQlsZW4gKz0gbS0+bV9sZW47Ci0JCQl9Ci0J CX0KKwlpZiAoKGlmcC0+aWZfZHJ2X2ZsYWdzICYgKElGRl9EUlZfUlVOTklORyB8IElGRl9EUlZf T0FDVElWRSkpICE9CisJICAgIElGRl9EUlZfUlVOTklORykKKwkJcmV0dXJuOwogCi0JCS8qCi0J CSAqIFJlc2VydmUgdGhlIG51bWJlciBvZiBwYWdlcyByZXF1ZXN0ZWQuICBDdXJyZW50bHksCi0J CSAqIG9uZSBwYWdlIGlzIHJlc2VydmVkIGZvciB0aGUgbWVzc2FnZSBpbiB0aGUgUk5ESVMKLQkJ ICogZmlsdGVyIHBhY2tldAotCQkgKi8KLQkJbnVtX2ZyYWdzICs9IEhWX1JGX05VTV9UWF9SRVNF UlZFRF9QQUdFX0JVRlM7CisJd2hpbGUgKCFJRlFfRFJWX0lTX0VNUFRZKCZpZnAtPmlmX3NuZCkp IHsKKwkJYnVzX2RtYV9zZWdtZW50X3Qgc2Vnc1tITl9UWF9EQVRBX1NFR0NOVF9NQVhdOworCQlp bnQgZXJyb3IsIG5zZWdzLCBpLCBzZW5kX2ZhaWxlZCA9IDA7CisJCXN0cnVjdCBobl90eGRlc2Mg KnR4ZDsKIAotCQkvKiBJZiBleGNlZWRzICMgcGFnZV9idWZmZXJzIGluIG5ldHZzY19wYWNrZXQg Ki8KLQkJaWYgKG51bV9mcmFncyA+IE5FVFZTQ19QQUNLRVRfTUFYUEFHRSkgewotCQkJZGV2aWNl X3ByaW50ZihkZXYsICJleGNlZWQgbWF4IHBhZ2UgYnVmZmVycywlZCwlZFxuIiwKLQkJCSAgICBu dW1fZnJhZ3MsIE5FVFZTQ19QQUNLRVRfTUFYUEFHRSk7Ci0JCQltX2ZyZWVtKG1faGVhZCk7Ci0J CQlpZl9pbmNfY291bnRlcihpZnAsIElGQ09VTlRFUl9PRVJST1JTLCAxKTsKLQkJCXJldHVybiAo RUlOVkFMKTsKLQkJfQorCQlJRlFfRFJWX0RFUVVFVUUoJmlmcC0+aWZfc25kLCBtX2hlYWQpOwor CQlpZiAobV9oZWFkID09IE5VTEwpCisJCQlicmVhazsKIAotCQkvKgotCQkgKiBBbGxvY2F0ZSBh IGJ1ZmZlciB3aXRoIHNwYWNlIGZvciBhIG5ldHZzYyBwYWNrZXQgcGx1cyBhCi0JCSAqIG51bWJl ciBvZiByZXNlcnZlZCBhcmVhcy4gIEZpcnN0IGNvbWVzIGEgKGN1cnJlbnRseSAxNgotCQkgKiBi eXRlcywgY3VycmVudGx5IHVudXNlZCkgcmVzZXJ2ZWQgZGF0YSBhcmVhLiAgU2Vjb25kIGlzCi0J CSAqIHRoZSBuZXR2c2NfcGFja2V0LiBUaGlyZCBpcyBhbiBhcmVhIHJlc2VydmVkIGZvciBhbiAK LQkJICogcm5kaXNfZmlsdGVyX3BhY2tldCBzdHJ1Y3QuIEZvdXJ0aCAob3B0aW9uYWwpIGlzIGEg Ci0JCSAqIHJuZGlzX3Blcl9wYWNrZXRfaW5mbyBzdHJ1Y3QuCi0JCSAqIENoYW5nZWQgbWFsbG9j IHRvIE1fTk9XQUlUIHRvIGF2b2lkIHNsZWVwIHVuZGVyIHNwaW4gbG9jay4KLQkJICogTm8gbG9u Z2VyIHJlc2VydmluZyBleHRyYSBzcGFjZSBmb3IgcGFnZSBidWZmZXJzLCBhcyB0aGV5Ci0JCSAq IGFyZSBhbHJlYWR5IHBhcnQgb2YgdGhlIG5ldHZzY19wYWNrZXQuCi0JCSAqLwotCQlidWYgPSBt YWxsb2MoSFZfTlZfUEFDS0VUX09GRlNFVF9JTl9CVUYgKwotCQkJc2l6ZW9mKG5ldHZzY19wYWNr ZXQpICsgCi0JCQlzaXplb2Yocm5kaXNfbXNnKSArCi0JCQlSTkRJU19WTEFOX1BQSV9TSVpFICsK LQkJCVJORElTX1RTT19QUElfU0laRSArCi0JCQlSTkRJU19DU1VNX1BQSV9TSVpFLAotCQkJTV9O RVRWU0MsIE1fWkVSTyB8IE1fTk9XQUlUKTsKLQkJaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0JCQlkZXZp Y2VfcHJpbnRmKGRldiwgImhuOm1hbGxvYyBwYWNrZXQgZmFpbGVkXG4iKTsKLQkJCW1fZnJlZW0o bV9oZWFkKTsKLQkJCWlmX2luY19jb3VudGVyKGlmcCwgSUZDT1VOVEVSX09FUlJPUlMsIDEpOwot CQkJcmV0dXJuIChFTk9NRU0pOworCQl0eGQgPSBobl90eGRlc2NfZ2V0KHNjKTsKKwkJaWYgKHR4 ZCA9PSBOVUxMKSB7CisJCQlzYy0+aG5fbm9fdHhkZXNjcysrOworCQkJSUZfUFJFUEVORCgmaWZw LT5pZl9zbmQsIG1faGVhZCk7CisJCQlpZnAtPmlmX2Rydl9mbGFncyB8PSBJRkZfRFJWX09BQ1RJ VkU7CisJCQlicmVhazsKIAkJfQogCi0JCXBhY2tldCA9IChuZXR2c2NfcGFja2V0ICopKGJ1ZiAr IEhWX05WX1BBQ0tFVF9PRkZTRVRfSU5fQlVGKTsKLQkJKih2bV9vZmZzZXRfdCAqKWJ1ZiA9IEhW X05WX1NDX1BUUl9PRkZTRVRfSU5fQlVGOworCQlwYWNrZXQgPSAmdHhkLT5uZXR2c2NfcGt0Owor CQkvKiBYWFggbm90IG5lY2Vzc2FyeSAqLworCQltZW1zZXQocGFja2V0LCAwLCBzaXplb2YoKnBh Y2tldCkpOwogCiAJCXBhY2tldC0+aXNfZGF0YV9wa3QgPSBUUlVFOwogCi0JCS8qIFNldCB1cCB0 aGUgcm5kaXMgaGVhZGVyICovCi0JCXBhY2tldC0+cGFnZV9idWZfY291bnQgPSBudW1fZnJhZ3M7 Ci0KIAkJLyogSW5pdGlhbGl6ZSBpdCBmcm9tIHRoZSBtYnVmICovCi0JCXBhY2tldC0+dG90X2Rh dGFfYnVmX2xlbiA9IGxlbjsKKwkJcGFja2V0LT50b3RfZGF0YV9idWZfbGVuID0gbV9oZWFkLT5t X3BrdGhkci5sZW47CiAKIAkJLyoKIAkJICogZXh0ZW5zaW9uIHBvaW50cyB0byB0aGUgYXJlYSBy ZXNlcnZlZCBmb3IgdGhlCiAJCSAqIHJuZGlzX2ZpbHRlcl9wYWNrZXQsIHdoaWNoIGlzIHBsYWNl ZCBqdXN0IGFmdGVyCiAJCSAqIHRoZSBuZXR2c2NfcGFja2V0IChhbmQgcnBwaSBzdHJ1Y3QsIGlm IHByZXNlbnQ7CiAJCSAqIGxlbmd0aCBpcyB1cGRhdGVkIGxhdGVyKS4KIAkJICovCi0JCXBhY2tl dC0+cm5kaXNfbWVzZyA9IHBhY2tldCArIDE7Ci0JCXJuZGlzX21lc2cgPSAocm5kaXNfbXNnICop cGFja2V0LT5ybmRpc19tZXNnOworCQlybmRpc19tZXNnID0gdHhkLT5ybmRpc19tc2c7CisJCS8q IFhYWCBub3QgbmVjZXNzYXJ5ICovCisJCW1lbXNldChybmRpc19tZXNnLCAwLCBITl9STkRJU19N U0dfTEVOKTsKIAkJcm5kaXNfbWVzZy0+bmRpc19tc2dfdHlwZSA9IFJFTU9URV9ORElTX1BBQ0tF VF9NU0c7CiAKIAkJcm5kaXNfcGt0ID0gJnJuZGlzX21lc2ctPm1zZy5wYWNrZXQ7CkBAIC02NDQs OCArODI3LDYgQEAKIAkJCSAqIHNldCB1cCBzb21lIGFkZGl0aW9uYWwgZmllbGRzIHNvIHRoZSBI eXBlci1WIGluZnJhc3RydWN0dXJlIHdpbGwgc3R1ZmYgdGhlIFZMQU4gdGFnCiAJCQkgKiBpbnRv IHRoZSBmcmFtZS4KIAkJCSAqLwotCQkJcGFja2V0LT52bGFuX3RjaSA9IG1faGVhZC0+bV9wa3Ro ZHIuZXRoZXJfdnRhZzsKLQogCQkJcm5kaXNfbXNnX3NpemUgKz0gUk5ESVNfVkxBTl9QUElfU0la RTsKIAogCQkJcnBwaSA9IGh2X3NldF9ycHBpX2RhdGEocm5kaXNfbWVzZywgUk5ESVNfVkxBTl9Q UElfU0laRSwKQEAgLTY1Niw3ICs4MzcsNyBAQAogCQkJICAgIHJwcGktPnBlcl9wYWNrZXRfaW5m b19vZmZzZXQpOwogCQkJLyogRnJlZUJTRCBkb2VzIG5vdCBzdXBwb3J0IENGSSBvciBwcmlvcml0 eSAqLwogCQkJcnBwaV92bGFuX2luZm8tPnUxLnMxLnZsYW5faWQgPQotCQkJICAgIHBhY2tldC0+ dmxhbl90Y2kgJiAweGZmZjsKKwkJCSAgICBtX2hlYWQtPm1fcGt0aGRyLmV0aGVyX3Z0YWcgJiAw eGZmZjsKIAkJfQogCiAJCS8qIE9ubHkgY2hlY2sgdGhlIGZsYWdzIGZvciBvdXRib3VuZCBhbmQg aWdub3JlIHRoZSBvbmVzIGZvciBpbmJvdW5kICovCkBAIC03NTgsNyArOTM5LDcgQEAKIAkJcGFj a2V0LT50b3RfZGF0YV9idWZfbGVuID0gcm5kaXNfbWVzZy0+bXNnX2xlbjsKIAogCQkvKiBzZW5k IHBhY2tldCB3aXRoIHNlbmQgYnVmZmVyICovCi0JCWlmIChwYWNrZXQtPnRvdF9kYXRhX2J1Zl9s ZW4gPCBuZXRfZGV2LT5zZW5kX3NlY3Rpb25fc2l6ZSkgeworCQlpZiAocGFja2V0LT50b3RfZGF0 YV9idWZfbGVuIDwgc2MtPmhuX3R4X2NoaW1uZXlfc2l6ZSkgewogCQkJc2VuZF9idWZfc2VjdGlv bl9pZHggPQogCQkJICAgIGh2X252X2dldF9uZXh0X3NlbmRfc2VjdGlvbihuZXRfZGV2KTsKIAkJ CWlmIChzZW5kX2J1Zl9zZWN0aW9uX2lkeCAhPQpAQCAtNzgzLDk3ICs5NjQsMTE1IEBACiAJCQkJ cGFja2V0LT5zZW5kX2J1Zl9zZWN0aW9uX3NpemUgPQogCQkJCSAgICBwYWNrZXQtPnRvdF9kYXRh X2J1Zl9sZW47CiAJCQkJcGFja2V0LT5wYWdlX2J1Zl9jb3VudCA9IDA7CisJCQkJc2MtPmhuX3R4 X2NoaW1uZXkrKzsKIAkJCQlnb3RvIGRvX3NlbmQ7CiAJCQl9CiAJCX0KIAorCQllcnJvciA9IGhu X3R4ZGVzY19kbWFtYXBfbG9hZChzYywgdHhkLCAmbV9oZWFkLCBzZWdzLCAmbnNlZ3MpOworCQlp ZiAoZXJyb3IpIHsKKwkJCWludCBmcmVlZDsKKworCQkJLyoKKwkJCSAqIFRoaXMgbWJ1ZiBpcyBu b3QgbGlua2VkIHcvIHRoZSB0eGQgeWV0LCBzbyBmcmVlCisJCQkgKiBpdCBub3cuCisJCQkgKi8K KwkJCW1fZnJlZW0obV9oZWFkKTsKKwkJCWZyZWVkID0gaG5fdHhkZXNjX3B1dChzYywgdHhkKTsK KwkJCUtBU1NFUlQoZnJlZWQgIT0gMCwKKwkJCSAgICAoImZhaWwgdG8gZnJlZSB0eGQgdXBvbiB0 eGRtYSBlcnJvciIpKTsKKworCQkJc2MtPmhuX3R4ZG1hX2ZhaWxlZCsrOworCQkJaWZfaW5jX2Nv dW50ZXIoaWZwLCBJRkNPVU5URVJfT0VSUk9SUywgMSk7CisJCQljb250aW51ZTsKKwkJfQorCisJ CXBhY2tldC0+cGFnZV9idWZfY291bnQgPSBuc2VncyArCisJCSAgICBIVl9SRl9OVU1fVFhfUkVT RVJWRURfUEFHRV9CVUZTOworCiAJCS8qIHNlbmQgcGFja2V0IHdpdGggcGFnZSBidWZmZXIgKi8K LQkJcGFja2V0LT5wYWdlX2J1ZmZlcnNbMF0ucGZuID0KLQkJICAgIGF0b3AoaHZfZ2V0X3BoeXNf YWRkcihybmRpc19tZXNnKSk7CisJCXBhY2tldC0+cGFnZV9idWZmZXJzWzBdLnBmbiA9IGF0b3Ao dHhkLT5ybmRpc19tc2dfcGFkZHIpOwogCQlwYWNrZXQtPnBhZ2VfYnVmZmVyc1swXS5vZmZzZXQg PQotCQkgICAgKHVuc2lnbmVkIGxvbmcpcm5kaXNfbWVzZyAmIFBBR0VfTUFTSzsKKwkJICAgIHR4 ZC0+cm5kaXNfbXNnX3BhZGRyICYgUEFHRV9NQVNLOwogCQlwYWNrZXQtPnBhZ2VfYnVmZmVyc1sw XS5sZW5ndGggPSBybmRpc19tc2dfc2l6ZTsKIAogCQkvKgogCQkgKiBGaWxsIHRoZSBwYWdlIGJ1 ZmZlcnMgd2l0aCBtYnVmIGluZm8gc3RhcnRpbmcgYXQgaW5kZXgKIAkJICogSFZfUkZfTlVNX1RY X1JFU0VSVkVEX1BBR0VfQlVGUy4KIAkJICovCi0JCWkgPSBIVl9SRl9OVU1fVFhfUkVTRVJWRURf UEFHRV9CVUZTOwotCQlmb3IgKG0gPSBtX2hlYWQ7IG0gIT0gTlVMTDsgbSA9IG0tPm1fbmV4dCkg ewotCQkJaWYgKG0tPm1fbGVuKSB7Ci0JCQkJdm1fb2Zmc2V0X3QgcGFkZHIgPQotCQkJCSAgICB2 dG9waHlzKG10b2QobSwgdm1fb2Zmc2V0X3QpKTsKLQkJCQlwYWNrZXQtPnBhZ2VfYnVmZmVyc1tp XS5wZm4gPQotCQkJCSAgICBwYWRkciA+PiBQQUdFX1NISUZUOwotCQkJCXBhY2tldC0+cGFnZV9i dWZmZXJzW2ldLm9mZnNldCA9Ci0JCQkJICAgIHBhZGRyICYgKFBBR0VfU0laRSAtIDEpOwotCQkJ CXBhY2tldC0+cGFnZV9idWZmZXJzW2ldLmxlbmd0aCA9IG0tPm1fbGVuOwotCQkJCWkrKzsKLQkJ CX0KKwkJZm9yIChpID0gMDsgaSA8IG5zZWdzOyArK2kpIHsKKwkJCWh2X3ZtYnVzX3BhZ2VfYnVm ZmVyICpwYiA9ICZwYWNrZXQtPnBhZ2VfYnVmZmVyc1sKKwkJCSAgICBpICsgSFZfUkZfTlVNX1RY X1JFU0VSVkVEX1BBR0VfQlVGU107CisKKwkJCXBiLT5wZm4gPSBhdG9wKHNlZ3NbaV0uZHNfYWRk cik7CisJCQlwYi0+b2Zmc2V0ID0gc2Vnc1tpXS5kc19hZGRyICYgUEFHRV9NQVNLOworCQkJcGIt Pmxlbmd0aCA9IHNlZ3NbaV0uZHNfbGVuOwogCQl9CiAKIAkJcGFja2V0LT5zZW5kX2J1Zl9zZWN0 aW9uX2lkeCA9IAogCQkgICAgTlZTUF8xX0NISU1ORVlfU0VORF9JTlZBTElEX1NFQ1RJT05fSU5E RVg7CiAJCXBhY2tldC0+c2VuZF9idWZfc2VjdGlvbl9zaXplID0gMDsKIAogZG9fc2VuZDoKKwkJ dHhkLT5tID0gbV9oZWFkOwogCi0JCS8qCi0JCSAqIElmIGJwZiwgY29weSB0aGUgbWJ1ZiBjaGFp bi4gIFRoaXMgaXMgbGVzcyBleHBlbnNpdmUgdGhhbgotCQkgKiBpdCBhcHBlYXJzOyB0aGUgbWJ1 ZiBjbHVzdGVycyBhcmUgbm90IGNvcGllZCwgb25seSB0aGVpcgotCQkgKiByZWZlcmVuY2UgY291 bnRzIGFyZSBpbmNyZW1lbnRlZC4KLQkJICogTmVlZGVkIHRvIGF2b2lkIGEgcmFjZSBjb25kaXRp b24gd2hlcmUgdGhlIGNvbXBsZXRpb24KLQkJICogY2FsbGJhY2sgaXMgaW52b2tlZCwgZnJlZWlu ZyB0aGUgbWJ1ZiBjaGFpbiwgYmVmb3JlIHRoZQotCQkgKiBicGZfbXRhcCBjb2RlIGhhcyBhIGNo YW5jZSB0byBydW4uCi0JCSAqLwotCQlpZiAoaWZwLT5pZl9icGYpIHsKLQkJCW1jX2hlYWQgPSBt X2NvcHlwYWNrZXQobV9oZWFkLCBNX05PV0FJVCk7Ci0JCX0KLXJldHJ5X3NlbmQ6CiAJCS8qIFNl dCB0aGUgY29tcGxldGlvbiByb3V0aW5lICovCiAJCXBhY2tldC0+Y29tcGwuc2VuZC5vbl9zZW5k X2NvbXBsZXRpb24gPSBuZXR2c2NfeG1pdF9jb21wbGV0aW9uOwogCQlwYWNrZXQtPmNvbXBsLnNl bmQuc2VuZF9jb21wbGV0aW9uX2NvbnRleHQgPSBwYWNrZXQ7Ci0JCXBhY2tldC0+Y29tcGwuc2Vu ZC5zZW5kX2NvbXBsZXRpb25fdGlkID0gKHVpbnQ2NF90KSh1aW50cHRyX3QpbV9oZWFkOworCQlw YWNrZXQtPmNvbXBsLnNlbmQuc2VuZF9jb21wbGV0aW9uX3RpZCA9CisJCSAgICAodWludDY0X3Qp KHVpbnRwdHJfdCl0eGQ7CiAKLQkJLyogUmVtb3ZlZCBjcml0aWNhbF9lbnRlcigpLCBkb2VzIG5v dCBhcHBlYXIgbmVjZXNzYXJ5ICovCi0JCXJldCA9IGh2X252X29uX3NlbmQoZGV2aWNlX2N0eCwg cGFja2V0KTsKLQkJaWYgKHJldCA9PSAwKSB7CithZ2FpbjoKKwkJLyoKKwkJICogTWFrZSBzdXJl IHRoYXQgdHhkIGlzIG5vdCBmcmVlZCBiZWZvcmUgRVRIRVJfQlBGX01UQVAuCisJCSAqLworCQlo bl90eGRlc2NfaG9sZCh0eGQpOworCQllcnJvciA9IGh2X252X29uX3NlbmQoZGV2aWNlX2N0eCwg cGFja2V0KTsKKwkJaWYgKCFlcnJvcikgeworCQkJRVRIRVJfQlBGX01UQVAoaWZwLCBtX2hlYWQp OwogCQkJaWZfaW5jX2NvdW50ZXIoaWZwLCBJRkNPVU5URVJfT1BBQ0tFVFMsIDEpOwotCQkJLyog aWYgYnBmICYmIG1jX2hlYWQsIGNhbGwgYnBmX210YXAgY29kZSAqLwotCQkJaWYgKG1jX2hlYWQp IHsKLQkJCQlFVEhFUl9CUEZfTVRBUChpZnAsIG1jX2hlYWQpOwotCQkJfQotCQl9IGVsc2Ugewot CQkJcmV0cmllcysrOwotCQkJaWYgKHJldHJpZXMgPCA0KSB7Ci0JCQkJZ290byByZXRyeV9zZW5k OwotCQkJfQorCQl9CisJCWhuX3R4ZGVzY19wdXQoc2MsIHR4ZCk7CiAKLQkJCUlGX1BSRVBFTkQo JmlmcC0+aWZfc25kLCBtX2hlYWQpOwotCQkJaWZwLT5pZl9kcnZfZmxhZ3MgfD0gSUZGX0RSVl9P QUNUSVZFOworCQlpZiAoX19wcmVkaWN0X2ZhbHNlKGVycm9yKSkgeworCQkJaW50IGZyZWVkOwog CiAJCQkvKgotCQkJICogTnVsbCB0aGUgbWJ1ZiBwb2ludGVyIHNvIHRoZSBjb21wbGV0aW9uIGZ1 bmN0aW9uCi0JCQkgKiBkb2VzIG5vdCBmcmVlIHRoZSBtYnVmIGNoYWluLiAgV2UganVzdCBwdXNo ZWQgdGhlCi0JCQkgKiBtYnVmIGNoYWluIGJhY2sgb24gdGhlIGlmX3NuZCBxdWV1ZS4KKwkJCSAq IFRoaXMgc2hvdWxkICJyZWFsbHkgcmFyZWx5IiBoYXBwZW4uCisJCQkgKgorCQkJICogWFhYIFRv byBtYW55IFJYIHRvIGJlIGFja2VkIG9yIHRvbyBtYW55IHNpZGViYW5kCisJCQkgKiBjb21tYW5k cyB0byBydW4/ICBBc2sgbmV0dnNjX2NoYW5uZWxfcm9sbHVwKCkKKwkJCSAqIHRvIGtpY2sgc3Rh cnQgbGF0ZXIuCiAJCQkgKi8KLQkJCXBhY2tldC0+Y29tcGwuc2VuZC5zZW5kX2NvbXBsZXRpb25f dGlkID0gMDsKKwkJCXNjLT5obl90eGVvZiA9IDE7CisJCQlpZiAoIXNlbmRfZmFpbGVkKSB7CisJ CQkJc2MtPmhuX3NlbmRfZmFpbGVkKys7CisJCQkJc2VuZF9mYWlsZWQgPSAxOworCQkJCS8qCisJ CQkJICogVHJ5IHNlbmRpbmcgYWdhaW4gYWZ0ZXIgc2V0IGhuX3R4ZW9mOworCQkJCSAqIGluIGNh c2UgdGhhdCB3ZSBtaXNzZWQgdGhlIGxhc3QKKwkJCQkgKiBuZXR2c2NfY2hhbm5lbF9yb2xsdXAo KS4KKwkJCQkgKi8KKwkJCQlnb3RvIGFnYWluOworCQkJfQorCQkJaWZfcHJpbnRmKGlmcCwgInNl bmQgZmFpbGVkXG4iKTsKIAogCQkJLyoKLQkJCSAqIFJlbGVhc2UgdGhlIHJlc291cmNlcyBzaW5j ZSB3ZSB3aWxsIG5vdCBnZXQgYW55Ci0JCQkgKiBzZW5kIGNvbXBsZXRpb24KKwkJCSAqIFRoaXMg bWJ1ZiB3aWxsIGJlIHByZXBlbmRlZCwgZG9uJ3QgZnJlZSBpdAorCQkJICogaW4gaG5fdHhkZXNj X3B1dCgpOyBvbmx5IHVubG9hZCBpdCBmcm9tIHRoZQorCQkJICogRE1BIG1hcCBpbiBobl90eGRl c2NfcHV0KCksIGlmIGl0IHdhcyBsb2FkZWQuCiAJCQkgKi8KLQkJCW5ldHZzY194bWl0X2NvbXBs ZXRpb24ocGFja2V0KTsKLQkJCWlmX2luY19jb3VudGVyKGlmcCwgSUZDT1VOVEVSX09FUlJPUlMs IDEpOwotCQl9CisJCQl0eGQtPm0gPSBOVUxMOworCQkJZnJlZWQgPSBobl90eGRlc2NfcHV0KHNj LCB0eGQpOworCQkJS0FTU0VSVChmcmVlZCAhPSAwLAorCQkJICAgICgiZmFpbCB0byBmcmVlIHR4 ZCB1cG9uIHNlbmQgZXJyb3IiKSk7CiAKLQkJLyogaWYgYnBmICYmIG1jX2hlYWQsIGZyZWUgdGhl IG1idWYgY2hhaW4gY29weSAqLwotCQlpZiAobWNfaGVhZCkgewotCQkJbV9mcmVlbShtY19oZWFk KTsKKwkJCXNjLT5obl9zZW5kX2ZhaWxlZCsrOworCQkJSUZfUFJFUEVORCgmaWZwLT5pZl9zbmQs IG1faGVhZCk7CisJCQlpZnAtPmlmX2Rydl9mbGFncyB8PSBJRkZfRFJWX09BQ1RJVkU7CisJCQli cmVhazsKIAkJfQogCX0KLQotCXJldHVybiAocmV0KTsKIH0KIAogLyoKQEAgLTEyMjAsNiArMTQx OSw5IEBACiAJCQlicmVhazsKIAkJfQogCisJCXNjLT5obl90eF9jaGltbmV5X21heCA9IHNjLT5u ZXRfZGV2LT5zZW5kX3NlY3Rpb25fc2l6ZTsKKwkJaWYgKHNjLT5obl90eF9jaGltbmV5X3NpemUg PiBzYy0+aG5fdHhfY2hpbW5leV9tYXgpCisJCQlzYy0+aG5fdHhfY2hpbW5leV9zaXplID0gc2Mt PmhuX3R4X2NoaW1uZXlfbWF4OwogCQlobl9pZmluaXRfbG9ja2VkKHNjKTsKIAogCQlOVl9MT0NL KHNjKTsKQEAgLTE0NzcsNiArMTY3OSwyNSBAQAogI2VuZGlmCS8qIEhOX0xST19ISVdBVCAqLwog CiBzdGF0aWMgaW50Citobl90eF9jaGltbmV5X3NpemVfc3lzY3RsKFNZU0NUTF9IQU5ETEVSX0FS R1MpCit7CisJc3RydWN0IGhuX3NvZnRjICpzYyA9IGFyZzE7CisJaW50IGNoaW1uZXlfc2l6ZSwg ZXJyb3I7CisKKwljaGltbmV5X3NpemUgPSBzYy0+aG5fdHhfY2hpbW5leV9zaXplOworCWVycm9y ID0gc3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJmNoaW1uZXlfc2l6ZSwgMCwgcmVxKTsKKwlpZiAo ZXJyb3IgfHwgcmVxLT5uZXdwdHIgPT0gTlVMTCkKKwkJcmV0dXJuIGVycm9yOworCisJaWYgKGNo aW1uZXlfc2l6ZSA+IHNjLT5obl90eF9jaGltbmV5X21heCB8fCBjaGltbmV5X3NpemUgPD0gMCkK KwkJcmV0dXJuIEVJTlZBTDsKKworCWlmIChzYy0+aG5fdHhfY2hpbW5leV9zaXplICE9IGNoaW1u ZXlfc2l6ZSkKKwkJc2MtPmhuX3R4X2NoaW1uZXlfc2l6ZSA9IGNoaW1uZXlfc2l6ZTsKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludAogaG5fY2hlY2tfaXBsZW4oY29uc3Qgc3RydWN0IG1idWYg Km0sIGludCBob2ZmKQogewogCWNvbnN0IHN0cnVjdCBpcCAqaXA7CkBAIC0xNTUxLDYgKzE3NzIs MTUwIEBACiAJcmV0dXJuIGlwLT5pcF9wOwogfQogCitzdGF0aWMgdm9pZAoraG5fZG1hX21hcF9w YWRkcih2b2lkICphcmcsIGJ1c19kbWFfc2VnbWVudF90ICpzZWdzLCBpbnQgbnNlZywgaW50IGVy cm9yKQoreworCWJ1c19hZGRyX3QgKnBhZGRyID0gYXJnOworCisJaWYgKGVycm9yKQorCQlyZXR1 cm47CisKKwlLQVNTRVJUKG5zZWcgPT0gMSwgKCJ0b28gbWFueSBzZWdtZW50cyAlZCEiLCBuc2Vn KSk7CisJKnBhZGRyID0gc2Vncy0+ZHNfYWRkcjsKK30KKworc3RhdGljIGludAoraG5fY3JlYXRl X3R4X3Jpbmcoc3RydWN0IGhuX3NvZnRjICpzYykKK3sKKwlidXNfZG1hX3RhZ190IHBhcmVudF9k dGFnOworCWludCBlcnJvciwgaTsKKworCXNjLT5obl90eGRlc2NfY250ID0gSE5fVFhfREVTQ19D TlQ7CisJc2MtPmhuX3R4ZGVzYyA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGhuX3R4ZGVzYykgKiBz Yy0+aG5fdHhkZXNjX2NudCwKKwkgICAgTV9ORVRWU0MsIE1fV0FJVE9LIHwgTV9aRVJPKTsKKwlT TElTVF9JTklUKCZzYy0+aG5fdHhsaXN0KTsKKwltdHhfaW5pdCgmc2MtPmhuX3R4bGlzdF9zcGlu LCAiaG4gdHhsaXN0IiwgTlVMTCwgTVRYX1NQSU4pOworCisJcGFyZW50X2R0YWcgPSBidXNfZ2V0 X2RtYV90YWcoc2MtPmhuX2Rldik7CisKKwkvKiBETUEgdGFnIGZvciBSTkRJUyBtZXNzYWdlcy4g Ki8KKwllcnJvciA9IGJ1c19kbWFfdGFnX2NyZWF0ZShwYXJlbnRfZHRhZywgLyogcGFyZW50ICov CisJICAgIEhOX1JORElTX01TR19BTElHTiwJCS8qIGFsaWdubWVudCAqLworCSAgICBITl9STkRJ U19NU0dfQk9VTkRBUlksCS8qIGJvdW5kYXJ5ICovCisJICAgIEJVU19TUEFDRV9NQVhBRERSLAkJ LyogbG93YWRkciAqLworCSAgICBCVVNfU1BBQ0VfTUFYQUREUiwJCS8qIGhpZ2hhZGRyICovCisJ ICAgIE5VTEwsIE5VTEwsCQkJLyogZmlsdGVyLCBmaWx0ZXJhcmcgKi8KKwkgICAgSE5fUk5ESVNf TVNHX0xFTiwJCS8qIG1heHNpemUgKi8KKwkgICAgMSwJCQkJLyogbnNlZ21lbnRzICovCisJICAg IEhOX1JORElTX01TR19MRU4sCQkvKiBtYXhzZWdzaXplICovCisJICAgIDAsCQkJCS8qIGZsYWdz ICovCisJICAgIE5VTEwsCQkJLyogbG9ja2Z1bmMgKi8KKwkgICAgTlVMTCwJCQkvKiBsb2NrZnVu Y2FyZyAqLworCSAgICAmc2MtPmhuX3R4X3JuZGlzX2R0YWcpOworCWlmIChlcnJvcikgeworCQlk ZXZpY2VfcHJpbnRmKHNjLT5obl9kZXYsICJmYWlsZWQgdG8gY3JlYXRlIHJuZGlzIGRtYXRhZ1xu Iik7CisJCXJldHVybiBlcnJvcjsKKwl9CisKKwkvKiBETUEgdGFnIGZvciBkYXRhLiAqLworCWVy cm9yID0gYnVzX2RtYV90YWdfY3JlYXRlKHBhcmVudF9kdGFnLCAvKiBwYXJlbnQgKi8KKwkgICAg MSwJCQkJLyogYWxpZ25tZW50ICovCisJICAgIEhOX1RYX0RBVEFfQk9VTkRBUlksCS8qIGJvdW5k YXJ5ICovCisJICAgIEJVU19TUEFDRV9NQVhBRERSLAkJLyogbG93YWRkciAqLworCSAgICBCVVNf U1BBQ0VfTUFYQUREUiwJCS8qIGhpZ2hhZGRyICovCisJICAgIE5VTEwsIE5VTEwsCQkJLyogZmls dGVyLCBmaWx0ZXJhcmcgKi8KKwkgICAgSE5fVFhfREFUQV9NQVhTSVpFLAkJLyogbWF4c2l6ZSAq LworCSAgICBITl9UWF9EQVRBX1NFR0NOVF9NQVgsCS8qIG5zZWdtZW50cyAqLworCSAgICBITl9U WF9EQVRBX1NFR1NJWkUsCQkvKiBtYXhzZWdzaXplICovCisJICAgIDAsCQkJCS8qIGZsYWdzICov CisJICAgIE5VTEwsCQkJLyogbG9ja2Z1bmMgKi8KKwkgICAgTlVMTCwJCQkvKiBsb2NrZnVuY2Fy ZyAqLworCSAgICAmc2MtPmhuX3R4X2RhdGFfZHRhZyk7CisJaWYgKGVycm9yKSB7CisJCWRldmlj ZV9wcmludGYoc2MtPmhuX2RldiwgImZhaWxlZCB0byBjcmVhdGUgZGF0YSBkbWF0YWdcbiIpOwor CQlyZXR1cm4gZXJyb3I7CisJfQorCisJZm9yIChpID0gMDsgaSA8IHNjLT5obl90eGRlc2NfY250 OyArK2kpIHsKKwkJc3RydWN0IGhuX3R4ZGVzYyAqdHhkID0gJnNjLT5obl90eGRlc2NbaV07CisK KwkJdHhkLT5zYyA9IHNjOworCisJCS8qCisJCSAqIEFsbG9jYXRlIGFuZCBsb2FkIFJORElTIG1l c3NhZ2VzLgorCQkgKi8KKyAgICAgICAgCWVycm9yID0gYnVzX2RtYW1lbV9hbGxvYyhzYy0+aG5f dHhfcm5kaXNfZHRhZywKKwkJICAgICh2b2lkICoqKSZ0eGQtPnJuZGlzX21zZywKKwkJICAgIEJV U19ETUFfV0FJVE9LIHwgQlVTX0RNQV9DT0hFUkVOVCwKKwkJICAgICZ0eGQtPnJuZGlzX21zZ19k bWFwKTsKKwkJaWYgKGVycm9yKSB7CisJCQlkZXZpY2VfcHJpbnRmKHNjLT5obl9kZXYsCisJCQkg ICAgImZhaWxlZCB0byBhbGxvY2F0ZSBybmRpc19tc2csICVkXG4iLCBpKTsKKwkJCXJldHVybiBl cnJvcjsKKwkJfQorCisJCWVycm9yID0gYnVzX2RtYW1hcF9sb2FkKHNjLT5obl90eF9ybmRpc19k dGFnLAorCQkgICAgdHhkLT5ybmRpc19tc2dfZG1hcCwKKwkJICAgIHR4ZC0+cm5kaXNfbXNnLCBI Tl9STkRJU19NU0dfTEVOLAorCQkgICAgaG5fZG1hX21hcF9wYWRkciwgJnR4ZC0+cm5kaXNfbXNn X3BhZGRyLAorCQkgICAgQlVTX0RNQV9OT1dBSVQpOworCQlpZiAoZXJyb3IpIHsKKwkJCWRldmlj ZV9wcmludGYoc2MtPmhuX2RldiwKKwkJCSAgICAiZmFpbGVkIHRvIGxvYWQgcm5kaXNfbXNnLCAl ZFxuIiwgaSk7CisJCQlidXNfZG1hbWVtX2ZyZWUoc2MtPmhuX3R4X3JuZGlzX2R0YWcsCisJCQkg ICAgdHhkLT5ybmRpc19tc2csIHR4ZC0+cm5kaXNfbXNnX2RtYXApOworCQkJcmV0dXJuIGVycm9y OworCQl9CisKKwkJLyogRE1BIG1hcCBmb3IgVFggZGF0YS4gKi8KKwkJZXJyb3IgPSBidXNfZG1h bWFwX2NyZWF0ZShzYy0+aG5fdHhfZGF0YV9kdGFnLCAwLAorCQkgICAgJnR4ZC0+ZGF0YV9kbWFw KTsKKwkJaWYgKGVycm9yKSB7CisJCQlkZXZpY2VfcHJpbnRmKHNjLT5obl9kZXYsCisJCQkgICAg ImZhaWxlZCB0byBhbGxvY2F0ZSB0eCBkYXRhIGRtYW1hcFxuIik7CisJCQlidXNfZG1hbWFwX3Vu bG9hZChzYy0+aG5fdHhfcm5kaXNfZHRhZywKKwkJCSAgICB0eGQtPnJuZGlzX21zZ19kbWFwKTsK KwkJCWJ1c19kbWFtZW1fZnJlZShzYy0+aG5fdHhfcm5kaXNfZHRhZywKKwkJCSAgICB0eGQtPnJu ZGlzX21zZywgdHhkLT5ybmRpc19tc2dfZG1hcCk7CisJCQlyZXR1cm4gZXJyb3I7CisJCX0KKwor CQkvKiBBbGwgc2V0LCBwdXQgaXQgdG8gbGlzdCAqLworCQl0eGQtPmZsYWdzIHw9IEhOX1RYRF9G TEFHX09OTElTVDsKKwkJU0xJU1RfSU5TRVJUX0hFQUQoJnNjLT5obl90eGxpc3QsIHR4ZCwgbGlu ayk7CisJfQorCXNjLT5obl90eGRlc2NfYXZhaWwgPSBzYy0+aG5fdHhkZXNjX2NudDsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraG5fZGVzdHJveV90eF9yaW5nKHN0cnVjdCBobl9z b2Z0YyAqc2MpCit7CisJc3RydWN0IGhuX3R4ZGVzYyAqdHhkOworCisJd2hpbGUgKCh0eGQgPSBT TElTVF9GSVJTVCgmc2MtPmhuX3R4bGlzdCkpICE9IE5VTEwpIHsKKwkJS0FTU0VSVCh0eGQtPm0g PT0gTlVMTCwgKCJzdGlsbCBoYXMgbWJ1ZiBpbnN0YWxsZWQiKSk7CisJCUtBU1NFUlQoKHR4ZC0+ ZmxhZ3MgJiBITl9UWERfRkxBR19ETUFNQVApID09IDAsCisJCSAgICAoInN0aWxsIGRtYSBtYXBw ZWQiKSk7CisJCVNMSVNUX1JFTU9WRV9IRUFEKCZzYy0+aG5fdHhsaXN0LCBsaW5rKTsKKworCQli dXNfZG1hbWFwX3VubG9hZChzYy0+aG5fdHhfcm5kaXNfZHRhZywKKwkJICAgIHR4ZC0+cm5kaXNf bXNnX2RtYXApOworCQlidXNfZG1hbWVtX2ZyZWUoc2MtPmhuX3R4X3JuZGlzX2R0YWcsCisJCSAg ICB0eGQtPnJuZGlzX21zZywgdHhkLT5ybmRpc19tc2dfZG1hcCk7CisKKwkJYnVzX2RtYW1hcF9k ZXN0cm95KHNjLT5obl90eF9kYXRhX2R0YWcsIHR4ZC0+ZGF0YV9kbWFwKTsKKwl9CisKKwlpZiAo c2MtPmhuX3R4X2RhdGFfZHRhZyAhPSBOVUxMKQorCQlidXNfZG1hX3RhZ19kZXN0cm95KHNjLT5o bl90eF9kYXRhX2R0YWcpOworCWlmIChzYy0+aG5fdHhfcm5kaXNfZHRhZyAhPSBOVUxMKQorCQli dXNfZG1hX3RhZ19kZXN0cm95KHNjLT5obl90eF9ybmRpc19kdGFnKTsKKwlmcmVlKHNjLT5obl90 eGRlc2MsIE1fTkVUVlNDKTsKKwltdHhfZGVzdHJveSgmc2MtPmhuX3R4bGlzdF9zcGluKTsKK30K Kwogc3RhdGljIGRldmljZV9tZXRob2RfdCBuZXR2c2NfbWV0aG9kc1tdID0gewogICAgICAgICAv KiBEZXZpY2UgaW50ZXJmYWNlICovCiAgICAgICAgIERFVk1FVEhPRChkZXZpY2VfcHJvYmUsICAg ICAgICAgbmV0dnNjX3Byb2JlKSwKZGlmZiAtLWdpdCBhL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0 dnNjL2h2X25ldF92c2MuaCBiL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldF92c2Mu aAotLS0gYS9oZWFkL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXRfdnNjLmgKKysrIGIvaGVh ZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0X3ZzYy5oCkBAIC0zOCwxMiArMzgsMTYgQEAK ICNpZm5kZWYgX19IVl9ORVRfVlNDX0hfXwogI2RlZmluZSBfX0hWX05FVF9WU0NfSF9fCiAKLSNp bmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICNpbmNsdWRlIDxz eXMvbG9jay5oPgogI2luY2x1ZGUgPHN5cy9tYWxsb2MuaD4KKyNpbmNsdWRlIDxzeXMvcXVldWUu aD4KICNpbmNsdWRlIDxzeXMvc3guaD4KIAorI2luY2x1ZGUgPG1hY2hpbmUvYnVzLmg+CisjaW5j bHVkZSA8c3lzL2J1cy5oPgorI2luY2x1ZGUgPHN5cy9idXNfZG1hLmg+CisKICNpbmNsdWRlIDxu ZXRpbmV0L2luLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC90Y3BfbHJvLmg+CiAKQEAgLTk4NCw2ICs5 ODgsOSBAQAogCWh2X2Jvb2xfdWludDhfdAlsaW5rX3N0YXRlOwogfSBuZXR2c2NfZGV2aWNlX2lu Zm87CiAKK3N0cnVjdCBobl90eGRlc2M7CitTTElTVF9IRUFEKGhuX3R4ZGVzY19saXN0LCBobl90 eGRlc2MpOworCiAvKgogICogRGV2aWNlLXNwZWNpZmljIHNvZnRjIHN0cnVjdHVyZQogICovCkBA IC0xMDAxLDYgKzEwMDgsMTggQEAKIAlzdHJ1Y3QgaHZfZGV2aWNlICAqaG5fZGV2X29iajsKIAlu ZXR2c2NfZGV2ICAJKm5ldF9kZXY7CiAKKwlpbnQJCWhuX3R4ZGVzY19jbnQ7CisJc3RydWN0IGhu X3R4ZGVzYyAqaG5fdHhkZXNjOworCWJ1c19kbWFfdGFnX3QJaG5fdHhfZGF0YV9kdGFnOworCWJ1 c19kbWFfdGFnX3QJaG5fdHhfcm5kaXNfZHRhZzsKKwlpbnQJCWhuX3R4X2NoaW1uZXlfc2l6ZTsK KwlpbnQJCWhuX3R4X2NoaW1uZXlfbWF4OworCisJc3RydWN0IG10eAlobl90eGxpc3Rfc3BpbjsK KwlzdHJ1Y3QgaG5fdHhkZXNjX2xpc3QgaG5fdHhsaXN0OworCWludAkJaG5fdHhkZXNjX2F2YWls OworCWludAkJaG5fdHhlb2Y7CisKIAlzdHJ1Y3QgbHJvX2N0cmwJaG5fbHJvOwogCWludAkJaG5f bHJvX2hpd2F0OwogCkBAIC0xMDEyLDYgKzEwMzEsMTEgQEAKIAl1X2xvbmcJCWhuX2NzdW1fdHJ1 c3RlZDsKIAl1X2xvbmcJCWhuX2xyb190cmllZDsKIAl1X2xvbmcJCWhuX3NtYWxsX3BrdHM7CisJ dV9sb25nCQlobl9ub190eGRlc2NzOworCXVfbG9uZwkJaG5fc2VuZF9mYWlsZWQ7CisJdV9sb25n CQlobl90eGRtYV9mYWlsZWQ7CisJdV9sb25nCQlobl90eF9jb2xsYXBzZWQ7CisJdV9sb25nCQlo bl90eF9jaGltbmV5OwogfSBobl9zb2Z0Y190OwogCiAKZGlmZiAtLWdpdCBhL2hlYWQvc3lzL2Rl di9oeXBlcnYvbmV0dnNjL2h2X25ldF92c2MuYyBiL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNj L2h2X25ldF92c2MuYwotLS0gYS9oZWFkL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXRfdnNj LmMKKysrIGIvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0X3ZzYy5jCkBAIC0xMDI4 LDQgKzEwMjgsNiBAQAogCiAJaWYgKGJ1ZmZlcmxlbiA+IE5FVFZTQ19QQUNLRVRfU0laRSkKIAkJ ZnJlZShidWZmZXIsIE1fTkVUVlNDKTsKKworCWh2X3JmX2NoYW5uZWxfcm9sbHVwKG5ldF9kZXYp OwogfQoK --b1_d2ebb1e510a55e19fba0ba13c5d96832--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d2ebb1e510a55e19fba0ba13c5d96832>