From owner-freebsd-net@freebsd.org Fri Feb 5 05:25:33 2016 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DF019A9B934 for ; Fri, 5 Feb 2016 05:25:33 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from phabric-backend.rbsd.freebsd.org (unknown [IPv6:2607:fc50:2000:101::1bb:73]) by mx1.freebsd.org (Postfix) with ESMTP id C9F91B53 for ; Fri, 5 Feb 2016 05:25:33 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by phabric-backend.rbsd.freebsd.org (Postfix, from userid 1346) id C92D11074AD; Fri, 5 Feb 2016 05:25:33 +0000 (UTC) Date: Fri, 5 Feb 2016 05:25:33 +0000 To: freebsd-net@freebsd.org From: Phabricator Reply-to: D5158+325+84c30785c1b48e01@reviews.freebsd.org Subject: [Differential] [Closed] D5158: hyperv/hn: Factor out hn_encap from hn_start_locked() Message-ID: <7d83666eeeadbf8cd33a405b6c1d7cae@localhost.localdomain> X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , Thread-Topic: D5158: hyperv/hn: Factor out hn_encap from hn_start_locked() X-Herald-Rules: none X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: Precedence: bulk In-Reply-To: References: Thread-Index: MjFmOWM1NjYwZmMxOTMyMjJlM2E1YTQ1MjllIFa0Mk0= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_7d83666eeeadbf8cd33a405b6c1d7cae" X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.20 List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Feb 2016 05:25:34 -0000 --b1_7d83666eeeadbf8cd33a405b6c1d7cae Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: 8bit This revision was automatically updated to reflect the committed changes. Closed by commit rS295302: hyperv/hn: Factor out hn_encap() from hn_start_locked() (authored by sephe). CHANGED PRIOR TO COMMIT https://reviews.freebsd.org/D5158?vs=12925&id=13036#toc REPOSITORY rS FreeBSD src repository CHANGES SINCE LAST UPDATE https://reviews.freebsd.org/D5158?vs=12925&id=13036 REVISION DETAIL https://reviews.freebsd.org/D5158 AFFECTED FILES head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c EMAIL PREFERENCES https://reviews.freebsd.org/settings/panel/emailpreferences/ To: sepherosa_gmail.com, delphij, royger, decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com, adrian, network Cc: freebsd-net-list --b1_7d83666eeeadbf8cd33a405b6c1d7cae Content-Type: text/x-patch; charset=utf-8; name="D5158.13036.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D5158.13036.patch" ZGlmZiAtLWdpdCBhL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJl ZWJzZC5jIGIvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNk LmMKLS0tIGEvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNk LmMKKysrIGIvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNk LmMKQEAgLTI1NCw2ICsyNTQsNyBAQAogc3RhdGljIHZvaWQgaG5fZGVzdHJveV90eF9yaW5nKHN0 cnVjdCBobl9zb2Z0YyAqc2MpOwogc3RhdGljIHZvaWQgaG5fc3RhcnRfdGFza2Z1bmModm9pZCAq eHNjLCBpbnQgcGVuZGluZyk7CiBzdGF0aWMgdm9pZCBobl90eGVvZl90YXNrZnVuYyh2b2lkICp4 c2MsIGludCBwZW5kaW5nKTsKK3N0YXRpYyBpbnQgaG5fZW5jYXAoc3RydWN0IGhuX3NvZnRjICos IHN0cnVjdCBobl90eGRlc2MgKiwgc3RydWN0IG1idWYgKiopOwogCiBzdGF0aWMgX19pbmxpbmUg dm9pZAogaG5fc2V0X2xyb19oaXdhdChzdHJ1Y3QgaG5fc29mdGMgKnNjLCBpbnQgaGl3YXQpCkBA IC03NDQsMzEgKzc0NSwyMzUgQEAKIH0KIAogLyoKLSAqIFN0YXJ0IGEgdHJhbnNtaXQgb2Ygb25l IG9yIG1vcmUgcGFja2V0cworICogTk9URToKKyAqIFRoaXMgdGhpcyBmdW5jdGlvbiBmYWlscywg dGhlbiBib3RoIHR4ZCBhbmQgbV9oZWFkMCB3aWxsIGJlIGZyZWVkCiAgKi8KIHN0YXRpYyBpbnQK LWhuX3N0YXJ0X2xvY2tlZChzdHJ1Y3QgaWZuZXQgKmlmcCwgaW50IGxlbikKK2huX2VuY2FwKHN0 cnVjdCBobl9zb2Z0YyAqc2MsIHN0cnVjdCBobl90eGRlc2MgKnR4ZCwgc3RydWN0IG1idWYgKipt X2hlYWQwKQogewotCWhuX3NvZnRjX3QgKnNjID0gaWZwLT5pZl9zb2Z0YzsKLQlzdHJ1Y3QgaHZf ZGV2aWNlICpkZXZpY2VfY3R4ID0gdm1idXNfZ2V0X2RldmN0eChzYy0+aG5fZGV2KTsKLQluZXR2 c2NfZGV2ICpuZXRfZGV2ID0gc2MtPm5ldF9kZXY7CisJYnVzX2RtYV9zZWdtZW50X3Qgc2Vnc1tI Tl9UWF9EQVRBX1NFR0NOVF9NQVhdOworCWludCBlcnJvciwgbnNlZ3MsIGk7CisJc3RydWN0IG1i dWYgKm1faGVhZCA9ICptX2hlYWQwOworCW5ldHZzY19wYWNrZXQgKnBhY2tldDsKIAlybmRpc19t c2cgKnJuZGlzX21lc2c7CiAJcm5kaXNfcGFja2V0ICpybmRpc19wa3Q7CiAJcm5kaXNfcGVyX3Bh Y2tldF9pbmZvICpycHBpOwotCW5kaXNfODAyMXFfaW5mbyAqcnBwaV92bGFuX2luZm87Ci0Jcm5k aXNfdGNwX2lwX2NzdW1faW5mbyAqY3N1bV9pbmZvOwotCXJuZGlzX3RjcF90c29faW5mbyAqdHNv X2luZm87CQotCXVpbnQzMl90IHJuZGlzX21zZ19zaXplID0gMDsKKwl1aW50MzJfdCBybmRpc19t c2dfc2l6ZTsKKworCXBhY2tldCA9ICZ0eGQtPm5ldHZzY19wa3Q7CisJcGFja2V0LT5pc19kYXRh X3BrdCA9IFRSVUU7CisJcGFja2V0LT50b3RfZGF0YV9idWZfbGVuID0gbV9oZWFkLT5tX3BrdGhk ci5sZW47CisKKwkvKgorCSAqIGV4dGVuc2lvbiBwb2ludHMgdG8gdGhlIGFyZWEgcmVzZXJ2ZWQg Zm9yIHRoZQorCSAqIHJuZGlzX2ZpbHRlcl9wYWNrZXQsIHdoaWNoIGlzIHBsYWNlZCBqdXN0IGFm dGVyCisJICogdGhlIG5ldHZzY19wYWNrZXQgKGFuZCBycHBpIHN0cnVjdCwgaWYgcHJlc2VudDsK KwkgKiBsZW5ndGggaXMgdXBkYXRlZCBsYXRlcikuCisJICovCisJcm5kaXNfbWVzZyA9IHR4ZC0+ cm5kaXNfbXNnOworCS8qIFhYWCBub3QgbmVjZXNzYXJ5ICovCisJbWVtc2V0KHJuZGlzX21lc2cs IDAsIEhOX1JORElTX01TR19MRU4pOworCXJuZGlzX21lc2ctPm5kaXNfbXNnX3R5cGUgPSBSRU1P VEVfTkRJU19QQUNLRVRfTVNHOworCisJcm5kaXNfcGt0ID0gJnJuZGlzX21lc2ctPm1zZy5wYWNr ZXQ7CisJcm5kaXNfcGt0LT5kYXRhX29mZnNldCA9IHNpemVvZihybmRpc19wYWNrZXQpOworCXJu ZGlzX3BrdC0+ZGF0YV9sZW5ndGggPSBwYWNrZXQtPnRvdF9kYXRhX2J1Zl9sZW47CisJcm5kaXNf cGt0LT5wZXJfcGt0X2luZm9fb2Zmc2V0ID0gc2l6ZW9mKHJuZGlzX3BhY2tldCk7CisKKwlybmRp c19tc2dfc2l6ZSA9IFJORElTX01FU1NBR0VfU0laRShybmRpc19wYWNrZXQpOworCisJaWYgKG1f aGVhZC0+bV9mbGFncyAmIE1fVkxBTlRBRykgeworCQluZGlzXzgwMjFxX2luZm8gKnJwcGlfdmxh bl9pbmZvOworCisJCXJuZGlzX21zZ19zaXplICs9IFJORElTX1ZMQU5fUFBJX1NJWkU7CisJCXJw cGkgPSBodl9zZXRfcnBwaV9kYXRhKHJuZGlzX21lc2csIFJORElTX1ZMQU5fUFBJX1NJWkUsCisJ CSAgICBpZWVlXzgwMjFxX2luZm8pOworCisJCXJwcGlfdmxhbl9pbmZvID0gKG5kaXNfODAyMXFf aW5mbyAqKSgodWludDhfdCAqKXJwcGkgKworCQkgICAgcnBwaS0+cGVyX3BhY2tldF9pbmZvX29m ZnNldCk7CisJCXJwcGlfdmxhbl9pbmZvLT51MS5zMS52bGFuX2lkID0KKwkJICAgIG1faGVhZC0+ bV9wa3RoZHIuZXRoZXJfdnRhZyAmIDB4ZmZmOworCX0KKworCWlmIChtX2hlYWQtPm1fcGt0aGRy LmNzdW1fZmxhZ3MgJiBDU1VNX1RTTykgeworCQlybmRpc190Y3BfdHNvX2luZm8gKnRzb19pbmZv OwkKKwkJc3RydWN0IGV0aGVyX3ZsYW5faGVhZGVyICplaDsKKwkJaW50IGV0aGVyX2xlbjsKKwor CQkvKgorCQkgKiBYWFggbmVlZCBtX3B1bGx1cCBhbmQgdXNlIG10b2RvCisJCSAqLworCQllaCA9 IG10b2QobV9oZWFkLCBzdHJ1Y3QgZXRoZXJfdmxhbl9oZWFkZXIqKTsKKwkJaWYgKGVoLT5ldmxf ZW5jYXBfcHJvdG8gPT0gaHRvbnMoRVRIRVJUWVBFX1ZMQU4pKQorCQkJZXRoZXJfbGVuID0gRVRI RVJfSERSX0xFTiArIEVUSEVSX1ZMQU5fRU5DQVBfTEVOOworCQllbHNlCisJCQlldGhlcl9sZW4g PSBFVEhFUl9IRFJfTEVOOworCisJCXJuZGlzX21zZ19zaXplICs9IFJORElTX1RTT19QUElfU0la RTsKKwkJcnBwaSA9IGh2X3NldF9ycHBpX2RhdGEocm5kaXNfbWVzZywgUk5ESVNfVFNPX1BQSV9T SVpFLAorCQkgICAgdGNwX2xhcmdlX3NlbmRfaW5mbyk7CisKKwkJdHNvX2luZm8gPSAocm5kaXNf dGNwX3Rzb19pbmZvICopKCh1aW50OF90ICopcnBwaSArCisJCSAgICBycHBpLT5wZXJfcGFja2V0 X2luZm9fb2Zmc2V0KTsKKwkJdHNvX2luZm8tPmxzb192Ml94bWl0LnR5cGUgPQorCQkgICAgUk5E SVNfVENQX0xBUkdFX1NFTkRfT0ZGTE9BRF9WMl9UWVBFOworCisjaWZkZWYgSU5FVAorCQlpZiAo bV9oZWFkLT5tX3BrdGhkci5jc3VtX2ZsYWdzICYgQ1NVTV9JUF9UU08pIHsKKwkJCXN0cnVjdCBp cCAqaXAgPQorCQkJICAgIChzdHJ1Y3QgaXAgKikobV9oZWFkLT5tX2RhdGEgKyBldGhlcl9sZW4p OworCQkJdW5zaWduZWQgbG9uZyBpcGhfbGVuID0gaXAtPmlwX2hsIDw8IDI7CisJCQlzdHJ1Y3Qg dGNwaGRyICp0aCA9CisJCQkgICAgKHN0cnVjdCB0Y3BoZHIgKikoKGNhZGRyX3QpaXAgKyBpcGhf bGVuKTsKKworCQkJdHNvX2luZm8tPmxzb192Ml94bWl0LmlwX3ZlcnNpb24gPQorCQkJICAgIFJO RElTX1RDUF9MQVJHRV9TRU5EX09GRkxPQURfSVBWNDsKKwkJCWlwLT5pcF9sZW4gPSAwOworCQkJ aXAtPmlwX3N1bSA9IDA7CisKKwkJCXRoLT50aF9zdW0gPSBpbl9wc2V1ZG8oaXAtPmlwX3NyYy5z X2FkZHIsCisJCQkgICAgaXAtPmlwX2RzdC5zX2FkZHIsIGh0b25zKElQUFJPVE9fVENQKSk7CisJ CX0KKyNlbmRpZgorI2lmIGRlZmluZWQoSU5FVDYpICYmIGRlZmluZWQoSU5FVCkKKwkJZWxzZQor I2VuZGlmCisjaWZkZWYgSU5FVDYKKwkJeworCQkJc3RydWN0IGlwNl9oZHIgKmlwNiA9IChzdHJ1 Y3QgaXA2X2hkciAqKQorCQkJICAgIChtX2hlYWQtPm1fZGF0YSArIGV0aGVyX2xlbik7CisJCQlz dHJ1Y3QgdGNwaGRyICp0aCA9IChzdHJ1Y3QgdGNwaGRyICopKGlwNiArIDEpOworCisJCQl0c29f aW5mby0+bHNvX3YyX3htaXQuaXBfdmVyc2lvbiA9CisJCQkgICAgUk5ESVNfVENQX0xBUkdFX1NF TkRfT0ZGTE9BRF9JUFY2OworCQkJaXA2LT5pcDZfcGxlbiA9IDA7CisJCQl0aC0+dGhfc3VtID0g aW42X2Nrc3VtX3BzZXVkbyhpcDYsIDAsIElQUFJPVE9fVENQLCAwKTsKKwkJfQorI2VuZGlmCisJ CXRzb19pbmZvLT5sc29fdjJfeG1pdC50Y3BfaGVhZGVyX29mZnNldCA9IDA7CisJCXRzb19pbmZv LT5sc29fdjJfeG1pdC5tc3MgPSBtX2hlYWQtPm1fcGt0aGRyLnRzb19zZWdzejsKKwl9IGVsc2Ug aWYgKG1faGVhZC0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIHNjLT5obl9jc3VtX2Fzc2lzdCkgewor CQlybmRpc190Y3BfaXBfY3N1bV9pbmZvICpjc3VtX2luZm87CisKKwkJcm5kaXNfbXNnX3NpemUg Kz0gUk5ESVNfQ1NVTV9QUElfU0laRTsKKwkJcnBwaSA9IGh2X3NldF9ycHBpX2RhdGEocm5kaXNf bWVzZywgUk5ESVNfQ1NVTV9QUElfU0laRSwKKwkJICAgIHRjcGlwX2Noa3N1bV9pbmZvKTsKKwkJ Y3N1bV9pbmZvID0gKHJuZGlzX3RjcF9pcF9jc3VtX2luZm8gKikoKHVpbnQ4X3QgKilycHBpICsK KwkJICAgIHJwcGktPnBlcl9wYWNrZXRfaW5mb19vZmZzZXQpOworCisJCWNzdW1faW5mby0+eG1p dC5pc19pcHY0ID0gMTsKKwkJaWYgKG1faGVhZC0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIENTVU1f SVApCisJCQljc3VtX2luZm8tPnhtaXQuaXBfaGVhZGVyX2NzdW0gPSAxOworCisJCWlmIChtX2hl YWQtPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX1RDUCkgeworCQkJY3N1bV9pbmZvLT54bWl0 LnRjcF9jc3VtID0gMTsKKwkJCWNzdW1faW5mby0+eG1pdC50Y3BfaGVhZGVyX29mZnNldCA9IDA7 CisJCX0gZWxzZSBpZiAobV9oZWFkLT5tX3BrdGhkci5jc3VtX2ZsYWdzICYgQ1NVTV9VRFApIHsK KwkJCWNzdW1faW5mby0+eG1pdC51ZHBfY3N1bSA9IDE7CisJCX0KKwl9CisKKwlybmRpc19tZXNn LT5tc2dfbGVuID0gcGFja2V0LT50b3RfZGF0YV9idWZfbGVuICsgcm5kaXNfbXNnX3NpemU7CisJ cGFja2V0LT50b3RfZGF0YV9idWZfbGVuID0gcm5kaXNfbWVzZy0+bXNnX2xlbjsKKworCS8qCisJ ICogQ2hpbW5leSBzZW5kLCBpZiB0aGUgcGFja2V0IGNvdWxkIGZpdCBpbnRvIG9uZSBjaGltbmV5 IGJ1ZmZlci4KKwkgKi8KKwlpZiAocGFja2V0LT50b3RfZGF0YV9idWZfbGVuIDwgc2MtPmhuX3R4 X2NoaW1uZXlfc2l6ZSkgeworCQluZXR2c2NfZGV2ICpuZXRfZGV2ID0gc2MtPm5ldF9kZXY7CisJ CXVpbnQzMl90IHNlbmRfYnVmX3NlY3Rpb25faWR4OworCisJCXNlbmRfYnVmX3NlY3Rpb25faWR4 ID0KKwkJICAgIGh2X252X2dldF9uZXh0X3NlbmRfc2VjdGlvbihuZXRfZGV2KTsKKwkJaWYgKHNl bmRfYnVmX3NlY3Rpb25faWR4ICE9CisJCSAgICBOVlNQXzFfQ0hJTU5FWV9TRU5EX0lOVkFMSURf U0VDVElPTl9JTkRFWCkgeworCQkJdWludDhfdCAqZGVzdCA9ICgodWludDhfdCAqKW5ldF9kZXYt PnNlbmRfYnVmICsKKwkJCSAgICAoc2VuZF9idWZfc2VjdGlvbl9pZHggKgorCQkJICAgICBuZXRf ZGV2LT5zZW5kX3NlY3Rpb25fc2l6ZSkpOworCisJCQltZW1jcHkoZGVzdCwgcm5kaXNfbWVzZywg cm5kaXNfbXNnX3NpemUpOworCQkJZGVzdCArPSBybmRpc19tc2dfc2l6ZTsKKwkJCW1fY29weWRh dGEobV9oZWFkLCAwLCBtX2hlYWQtPm1fcGt0aGRyLmxlbiwgZGVzdCk7CisKKwkJCXBhY2tldC0+ c2VuZF9idWZfc2VjdGlvbl9pZHggPSBzZW5kX2J1Zl9zZWN0aW9uX2lkeDsKKwkJCXBhY2tldC0+ c2VuZF9idWZfc2VjdGlvbl9zaXplID0KKwkJCSAgICBwYWNrZXQtPnRvdF9kYXRhX2J1Zl9sZW47 CisJCQlwYWNrZXQtPnBhZ2VfYnVmX2NvdW50ID0gMDsKKwkJCXNjLT5obl90eF9jaGltbmV5Kys7 CisJCQlnb3RvIGRvbmU7CisJCX0KKwl9CisKKwllcnJvciA9IGhuX3R4ZGVzY19kbWFtYXBfbG9h ZChzYywgdHhkLCAmbV9oZWFkLCBzZWdzLCAmbnNlZ3MpOworCWlmIChlcnJvcikgeworCQlpbnQg ZnJlZWQ7CisKKwkJLyoKKwkJICogVGhpcyBtYnVmIGlzIG5vdCBsaW5rZWQgdy8gdGhlIHR4ZCB5 ZXQsIHNvIGZyZWUgaXQgbm93LgorCQkgKi8KKwkJbV9mcmVlbShtX2hlYWQpOworCQkqbV9oZWFk MCA9IE5VTEw7CisKKwkJZnJlZWQgPSBobl90eGRlc2NfcHV0KHNjLCB0eGQpOworCQlLQVNTRVJU KGZyZWVkICE9IDAsCisJCSAgICAoImZhaWwgdG8gZnJlZSB0eGQgdXBvbiB0eGRtYSBlcnJvciIp KTsKKworCQlzYy0+aG5fdHhkbWFfZmFpbGVkKys7CisJCWlmX2luY19jb3VudGVyKHNjLT5obl9p ZnAsIElGQ09VTlRFUl9PRVJST1JTLCAxKTsKKwkJcmV0dXJuIGVycm9yOworCX0KKwkqbV9oZWFk MCA9IG1faGVhZDsKKworCXBhY2tldC0+cGFnZV9idWZfY291bnQgPSBuc2VncyArIEhWX1JGX05V TV9UWF9SRVNFUlZFRF9QQUdFX0JVRlM7CisKKwkvKiBzZW5kIHBhY2tldCB3aXRoIHBhZ2UgYnVm ZmVyICovCisJcGFja2V0LT5wYWdlX2J1ZmZlcnNbMF0ucGZuID0gYXRvcCh0eGQtPnJuZGlzX21z Z19wYWRkcik7CisJcGFja2V0LT5wYWdlX2J1ZmZlcnNbMF0ub2Zmc2V0ID0gdHhkLT5ybmRpc19t c2dfcGFkZHIgJiBQQUdFX01BU0s7CisJcGFja2V0LT5wYWdlX2J1ZmZlcnNbMF0ubGVuZ3RoID0g cm5kaXNfbXNnX3NpemU7CisKKwkvKgorCSAqIEZpbGwgdGhlIHBhZ2UgYnVmZmVycyB3aXRoIG1i dWYgaW5mbyBzdGFydGluZyBhdCBpbmRleAorCSAqIEhWX1JGX05VTV9UWF9SRVNFUlZFRF9QQUdF X0JVRlMuCisJICovCisJZm9yIChpID0gMDsgaSA8IG5zZWdzOyArK2kpIHsKKwkJaHZfdm1idXNf cGFnZV9idWZmZXIgKnBiID0gJnBhY2tldC0+cGFnZV9idWZmZXJzWworCQkgICAgaSArIEhWX1JG X05VTV9UWF9SRVNFUlZFRF9QQUdFX0JVRlNdOworCisJCXBiLT5wZm4gPSBhdG9wKHNlZ3NbaV0u ZHNfYWRkcik7CisJCXBiLT5vZmZzZXQgPSBzZWdzW2ldLmRzX2FkZHIgJiBQQUdFX01BU0s7CisJ CXBiLT5sZW5ndGggPSBzZWdzW2ldLmRzX2xlbjsKKwl9CisKKwlwYWNrZXQtPnNlbmRfYnVmX3Nl Y3Rpb25faWR4ID0KKwkgICAgTlZTUF8xX0NISU1ORVlfU0VORF9JTlZBTElEX1NFQ1RJT05fSU5E RVg7CisJcGFja2V0LT5zZW5kX2J1Zl9zZWN0aW9uX3NpemUgPSAwOworZG9uZToKKwl0eGQtPm0g PSBtX2hlYWQ7CisKKwkvKiBTZXQgdGhlIGNvbXBsZXRpb24gcm91dGluZSAqLworCXBhY2tldC0+ Y29tcGwuc2VuZC5vbl9zZW5kX2NvbXBsZXRpb24gPSBuZXR2c2NfeG1pdF9jb21wbGV0aW9uOwor CXBhY2tldC0+Y29tcGwuc2VuZC5zZW5kX2NvbXBsZXRpb25fY29udGV4dCA9IHBhY2tldDsKKwlw YWNrZXQtPmNvbXBsLnNlbmQuc2VuZF9jb21wbGV0aW9uX3RpZCA9ICh1aW50NjRfdCkodWludHB0 cl90KXR4ZDsKKworCXJldHVybiAwOworfQorCisvKgorICogU3RhcnQgYSB0cmFuc21pdCBvZiBv bmUgb3IgbW9yZSBwYWNrZXRzCisgKi8KK3N0YXRpYyBpbnQKK2huX3N0YXJ0X2xvY2tlZChzdHJ1 Y3QgaWZuZXQgKmlmcCwgaW50IGxlbikKK3sKKwlzdHJ1Y3QgaG5fc29mdGMgKnNjID0gaWZwLT5p Zl9zb2Z0YzsKKwlzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2VfY3R4ID0gdm1idXNfZ2V0X2RldmN0 eChzYy0+aG5fZGV2KTsKIAogCWlmICgoaWZwLT5pZl9kcnZfZmxhZ3MgJiAoSUZGX0RSVl9SVU5O SU5HIHwgSUZGX0RSVl9PQUNUSVZFKSkgIT0KIAkgICAgSUZGX0RSVl9SVU5OSU5HKQogCQlyZXR1 cm4gMDsKIAogCXdoaWxlICghSUZRX0RSVl9JU19FTVBUWSgmaWZwLT5pZl9zbmQpKSB7Ci0JCWJ1 c19kbWFfc2VnbWVudF90IHNlZ3NbSE5fVFhfREFUQV9TRUdDTlRfTUFYXTsKLQkJaW50IGVycm9y LCBuc2VncywgaSwgc2VuZF9mYWlsZWQgPSAwOworCQlpbnQgZXJyb3IsIHNlbmRfZmFpbGVkID0g MDsKIAkJc3RydWN0IGhuX3R4ZGVzYyAqdHhkOwotCQluZXR2c2NfcGFja2V0ICpwYWNrZXQ7CiAJ CXN0cnVjdCBtYnVmICptX2hlYWQ7CiAKIAkJSUZRX0RSVl9ERVFVRVVFKCZpZnAtPmlmX3NuZCwg bV9oZWFkKTsKQEAgLTc5MywyMTYgKzk5OCwxNyBAQAogCQkJYnJlYWs7CiAJCX0KIAotCQlwYWNr ZXQgPSAmdHhkLT5uZXR2c2NfcGt0OwotCQlwYWNrZXQtPmlzX2RhdGFfcGt0ID0gVFJVRTsKLQkJ LyogSW5pdGlhbGl6ZSBpdCBmcm9tIHRoZSBtYnVmICovCi0JCXBhY2tldC0+dG90X2RhdGFfYnVm X2xlbiA9IG1faGVhZC0+bV9wa3RoZHIubGVuOwotCi0JCS8qCi0JCSAqIGV4dGVuc2lvbiBwb2lu dHMgdG8gdGhlIGFyZWEgcmVzZXJ2ZWQgZm9yIHRoZQotCQkgKiBybmRpc19maWx0ZXJfcGFja2V0 LCB3aGljaCBpcyBwbGFjZWQganVzdCBhZnRlcgotCQkgKiB0aGUgbmV0dnNjX3BhY2tldCAoYW5k IHJwcGkgc3RydWN0LCBpZiBwcmVzZW50OwotCQkgKiBsZW5ndGggaXMgdXBkYXRlZCBsYXRlciku Ci0JCSAqLwotCQlybmRpc19tZXNnID0gdHhkLT5ybmRpc19tc2c7Ci0JCS8qIFhYWCBub3QgbmVj ZXNzYXJ5ICovCi0JCW1lbXNldChybmRpc19tZXNnLCAwLCBITl9STkRJU19NU0dfTEVOKTsKLQkJ cm5kaXNfbWVzZy0+bmRpc19tc2dfdHlwZSA9IFJFTU9URV9ORElTX1BBQ0tFVF9NU0c7Ci0KLQkJ cm5kaXNfcGt0ID0gJnJuZGlzX21lc2ctPm1zZy5wYWNrZXQ7Ci0JCXJuZGlzX3BrdC0+ZGF0YV9v ZmZzZXQgPSBzaXplb2Yocm5kaXNfcGFja2V0KTsKLQkJcm5kaXNfcGt0LT5kYXRhX2xlbmd0aCA9 IHBhY2tldC0+dG90X2RhdGFfYnVmX2xlbjsKLQkJcm5kaXNfcGt0LT5wZXJfcGt0X2luZm9fb2Zm c2V0ID0gc2l6ZW9mKHJuZGlzX3BhY2tldCk7Ci0KLQkJcm5kaXNfbXNnX3NpemUgPSBSTkRJU19N RVNTQUdFX1NJWkUocm5kaXNfcGFja2V0KTsKLQotCQkvKgotCQkgKiBJZiB0aGUgSHlwZXItViBp bmZyYXN0cnVjdHVyZSBuZWVkcyB0byBlbWJlZCBhIFZMQU4gdGFnLAotCQkgKiBpbml0aWFsaXpl IG5ldHZzY19wYWNrZXQgYW5kIHJwcGkgc3RydWN0IHZhbHVlcyBhcyBuZWVkZWQuCi0JCSAqLwot CQlpZiAobV9oZWFkLT5tX2ZsYWdzICYgTV9WTEFOVEFHKSB7Ci0JCQkvKgotCQkJICogc2V0IHVw IHNvbWUgYWRkaXRpb25hbCBmaWVsZHMgc28gdGhlIEh5cGVyLVYgaW5mcmFzdHJ1Y3R1cmUgd2ls bCBzdHVmZiB0aGUgVkxBTiB0YWcKLQkJCSAqIGludG8gdGhlIGZyYW1lLgotCQkJICovCi0JCQly bmRpc19tc2dfc2l6ZSArPSBSTkRJU19WTEFOX1BQSV9TSVpFOwotCi0JCQlycHBpID0gaHZfc2V0 X3JwcGlfZGF0YShybmRpc19tZXNnLCBSTkRJU19WTEFOX1BQSV9TSVpFLAotCQkJICAgIGllZWVf ODAyMXFfaW5mbyk7Ci0JCQotCQkJLyogVkxBTiBpbmZvIGltbWVkaWF0ZWx5IGZvbGxvd3MgcnBw aSBzdHJ1Y3QgKi8KLQkJCXJwcGlfdmxhbl9pbmZvID0gKG5kaXNfODAyMXFfaW5mbyAqKSgoY2hh ciopcnBwaSArIAotCQkJICAgIHJwcGktPnBlcl9wYWNrZXRfaW5mb19vZmZzZXQpOwotCQkJLyog RnJlZUJTRCBkb2VzIG5vdCBzdXBwb3J0IENGSSBvciBwcmlvcml0eSAqLwotCQkJcnBwaV92bGFu X2luZm8tPnUxLnMxLnZsYW5faWQgPQotCQkJICAgIG1faGVhZC0+bV9wa3RoZHIuZXRoZXJfdnRh ZyAmIDB4ZmZmOwotCQl9Ci0KLQkJaWYgKG1faGVhZC0+bV9wa3RoZHIuY3N1bV9mbGFncyAmIENT VU1fVFNPKSB7Ci0JCQlzdHJ1Y3QgZXRoZXJfdmxhbl9oZWFkZXIgKmVoOwotCQkJaW50IGV0aGVy X2xlbjsKLQotCQkJZWggPSBtdG9kKG1faGVhZCwgc3RydWN0IGV0aGVyX3ZsYW5faGVhZGVyKik7 Ci0JCQlpZiAoZWgtPmV2bF9lbmNhcF9wcm90byA9PSBodG9ucyhFVEhFUlRZUEVfVkxBTikpIHsK LQkJCQlldGhlcl9sZW4gPSBFVEhFUl9IRFJfTEVOICsKLQkJCQkgICAgRVRIRVJfVkxBTl9FTkNB UF9MRU47Ci0JCQl9IGVsc2UgewotCQkJCWV0aGVyX2xlbiA9IEVUSEVSX0hEUl9MRU47Ci0JCQl9 Ci0KLQkJCXJuZGlzX21zZ19zaXplICs9IFJORElTX1RTT19QUElfU0laRTsKLQkJCXJwcGkgPSBo dl9zZXRfcnBwaV9kYXRhKHJuZGlzX21lc2csIFJORElTX1RTT19QUElfU0laRSwKLQkJCSAgICB0 Y3BfbGFyZ2Vfc2VuZF9pbmZvKTsKLQotCQkJdHNvX2luZm8gPSAocm5kaXNfdGNwX3Rzb19pbmZv ICopKChjaGFyICopcnBwaSArCi0JCQkgICAgcnBwaS0+cGVyX3BhY2tldF9pbmZvX29mZnNldCk7 Ci0JCQl0c29faW5mby0+bHNvX3YyX3htaXQudHlwZSA9Ci0JCQkgICAgUk5ESVNfVENQX0xBUkdF X1NFTkRfT0ZGTE9BRF9WMl9UWVBFOwotCi0jaWZkZWYgSU5FVAotCQkJaWYgKG1faGVhZC0+bV9w a3RoZHIuY3N1bV9mbGFncyAmIENTVU1fSVBfVFNPKSB7Ci0JCQkJc3RydWN0IGlwICppcCA9Ci0J CQkJICAgIChzdHJ1Y3QgaXAgKikobV9oZWFkLT5tX2RhdGEgKyBldGhlcl9sZW4pOwotCQkJCXVu c2lnbmVkIGxvbmcgaXBoX2xlbiA9IGlwLT5pcF9obCA8PCAyOwotCQkJCXN0cnVjdCB0Y3BoZHIg KnRoID0KLQkJCQkgICAgKHN0cnVjdCB0Y3BoZHIgKikoKGNhZGRyX3QpaXAgKyBpcGhfbGVuKTsK LQkJCQotCQkJCXRzb19pbmZvLT5sc29fdjJfeG1pdC5pcF92ZXJzaW9uID0KLQkJCQkgICAgUk5E SVNfVENQX0xBUkdFX1NFTkRfT0ZGTE9BRF9JUFY0OwotCQkJCWlwLT5pcF9sZW4gPSAwOwotCQkJ CWlwLT5pcF9zdW0gPSAwOwotCQkJCi0JCQkJdGgtPnRoX3N1bSA9IGluX3BzZXVkbyhpcC0+aXBf c3JjLnNfYWRkciwKLQkJCQkgICAgaXAtPmlwX2RzdC5zX2FkZHIsIGh0b25zKElQUFJPVE9fVENQ KSk7Ci0JCQl9Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKElORVQ2KSAmJiBkZWZpbmVkKElORVQpCi0J CQllbHNlCi0jZW5kaWYKLSNpZmRlZiBJTkVUNgotCQkJewotCQkJCXN0cnVjdCBpcDZfaGRyICpp cDYgPSAoc3RydWN0IGlwNl9oZHIgKikKLQkJCQkgICAgKG1faGVhZC0+bV9kYXRhICsgZXRoZXJf bGVuKTsKLQkJCQlzdHJ1Y3QgdGNwaGRyICp0aCA9IChzdHJ1Y3QgdGNwaGRyICopKGlwNiArIDEp OwotCi0JCQkJdHNvX2luZm8tPmxzb192Ml94bWl0LmlwX3ZlcnNpb24gPQotCQkJCSAgICBSTkRJ U19UQ1BfTEFSR0VfU0VORF9PRkZMT0FEX0lQVjY7Ci0JCQkJaXA2LT5pcDZfcGxlbiA9IDA7Ci0J CQkJdGgtPnRoX3N1bSA9Ci0JCQkJICAgIGluNl9ja3N1bV9wc2V1ZG8oaXA2LCAwLCBJUFBST1RP X1RDUCwgMCk7Ci0JCQl9Ci0jZW5kaWYKLQkJCXRzb19pbmZvLT5sc29fdjJfeG1pdC50Y3BfaGVh ZGVyX29mZnNldCA9IDA7Ci0JCQl0c29faW5mby0+bHNvX3YyX3htaXQubXNzID0gbV9oZWFkLT5t X3BrdGhkci50c29fc2Vnc3o7Ci0JCX0gZWxzZSBpZiAobV9oZWFkLT5tX3BrdGhkci5jc3VtX2Zs YWdzICYgc2MtPmhuX2NzdW1fYXNzaXN0KSB7Ci0JCQlybmRpc19tc2dfc2l6ZSArPSBSTkRJU19D U1VNX1BQSV9TSVpFOwotCQkJcnBwaSA9IGh2X3NldF9ycHBpX2RhdGEocm5kaXNfbWVzZywgUk5E SVNfQ1NVTV9QUElfU0laRSwKLQkJCSAgICB0Y3BpcF9jaGtzdW1faW5mbyk7Ci0JCQljc3VtX2lu Zm8gPSAocm5kaXNfdGNwX2lwX2NzdW1faW5mbyAqKSgoY2hhciopcnBwaSArCi0JCQkgICAgcnBw aS0+cGVyX3BhY2tldF9pbmZvX29mZnNldCk7Ci0KLQkJCWNzdW1faW5mby0+eG1pdC5pc19pcHY0 ID0gMTsKLQkJCWlmIChtX2hlYWQtPm1fcGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX0lQKQotCQkJ CWNzdW1faW5mby0+eG1pdC5pcF9oZWFkZXJfY3N1bSA9IDE7Ci0KLQkJCWlmIChtX2hlYWQtPm1f cGt0aGRyLmNzdW1fZmxhZ3MgJiBDU1VNX1RDUCkgewotCQkJCWNzdW1faW5mby0+eG1pdC50Y3Bf Y3N1bSA9IDE7Ci0JCQkJY3N1bV9pbmZvLT54bWl0LnRjcF9oZWFkZXJfb2Zmc2V0ID0gMDsKLQkJ CX0gZWxzZSBpZiAobV9oZWFkLT5tX3BrdGhkci5jc3VtX2ZsYWdzICYgQ1NVTV9VRFApIHsKLQkJ CQljc3VtX2luZm8tPnhtaXQudWRwX2NzdW0gPSAxOwotCQkJfQotCQl9Ci0KLQkJcm5kaXNfbWVz Zy0+bXNnX2xlbiA9IHBhY2tldC0+dG90X2RhdGFfYnVmX2xlbiArIHJuZGlzX21zZ19zaXplOwot CQlwYWNrZXQtPnRvdF9kYXRhX2J1Zl9sZW4gPSBybmRpc19tZXNnLT5tc2dfbGVuOwotCi0JCS8q IHNlbmQgcGFja2V0IHdpdGggc2VuZCBidWZmZXIgKi8KLQkJaWYgKHBhY2tldC0+dG90X2RhdGFf YnVmX2xlbiA8IHNjLT5obl90eF9jaGltbmV5X3NpemUpIHsKLQkJCXVpbnQzMl90IHNlbmRfYnVm X3NlY3Rpb25faWR4OwotCi0JCQlzZW5kX2J1Zl9zZWN0aW9uX2lkeCA9Ci0JCQkgICAgaHZfbnZf Z2V0X25leHRfc2VuZF9zZWN0aW9uKG5ldF9kZXYpOwotCQkJaWYgKHNlbmRfYnVmX3NlY3Rpb25f aWR4ICE9Ci0JCQkgICAgTlZTUF8xX0NISU1ORVlfU0VORF9JTlZBTElEX1NFQ1RJT05fSU5ERVgp IHsKLQkJCQl1aW50OF90ICpkZXN0ID0gKCh1aW50OF90ICopbmV0X2Rldi0+c2VuZF9idWYgKwot CQkJCSAgICAoc2VuZF9idWZfc2VjdGlvbl9pZHggKgotCQkJCSAgICAgbmV0X2Rldi0+c2VuZF9z ZWN0aW9uX3NpemUpKTsKLQotCQkJCW1lbWNweShkZXN0LCBybmRpc19tZXNnLCBybmRpc19tc2df c2l6ZSk7Ci0JCQkJZGVzdCArPSBybmRpc19tc2dfc2l6ZTsKLQotCQkJCW1fY29weWRhdGEobV9o ZWFkLCAwLCBtX2hlYWQtPm1fcGt0aGRyLmxlbiwKLQkJCQkgICAgZGVzdCk7Ci0KLQkJCQlwYWNr ZXQtPnNlbmRfYnVmX3NlY3Rpb25faWR4ID0KLQkJCQkgICAgc2VuZF9idWZfc2VjdGlvbl9pZHg7 Ci0JCQkJcGFja2V0LT5zZW5kX2J1Zl9zZWN0aW9uX3NpemUgPQotCQkJCSAgICBwYWNrZXQtPnRv dF9kYXRhX2J1Zl9sZW47Ci0JCQkJcGFja2V0LT5wYWdlX2J1Zl9jb3VudCA9IDA7Ci0JCQkJc2Mt PmhuX3R4X2NoaW1uZXkrKzsKLQkJCQlnb3RvIGRvX3NlbmQ7Ci0JCQl9Ci0JCX0KLQotCQllcnJv ciA9IGhuX3R4ZGVzY19kbWFtYXBfbG9hZChzYywgdHhkLCAmbV9oZWFkLCBzZWdzLCAmbnNlZ3Mp OworCQllcnJvciA9IGhuX2VuY2FwKHNjLCB0eGQsICZtX2hlYWQpOwogCQlpZiAoZXJyb3IpIHsK LQkJCWludCBmcmVlZDsKLQotCQkJLyoKLQkJCSAqIFRoaXMgbWJ1ZiBpcyBub3QgbGlua2VkIHcv IHRoZSB0eGQgeWV0LCBzbyBmcmVlCi0JCQkgKiBpdCBub3cuCi0JCQkgKi8KLQkJCW1fZnJlZW0o bV9oZWFkKTsKLQkJCWZyZWVkID0gaG5fdHhkZXNjX3B1dChzYywgdHhkKTsKLQkJCUtBU1NFUlQo ZnJlZWQgIT0gMCwKLQkJCSAgICAoImZhaWwgdG8gZnJlZSB0eGQgdXBvbiB0eGRtYSBlcnJvciIp KTsKLQotCQkJc2MtPmhuX3R4ZG1hX2ZhaWxlZCsrOwotCQkJaWZfaW5jX2NvdW50ZXIoaWZwLCBJ RkNPVU5URVJfT0VSUk9SUywgMSk7CisJCQkvKiBCb3RoIHR4ZCBhbmQgbV9oZWFkIGFyZSBmcmVl ZCAqLwogCQkJY29udGludWU7CiAJCX0KLQotCQlwYWNrZXQtPnBhZ2VfYnVmX2NvdW50ID0gbnNl Z3MgKwotCQkgICAgSFZfUkZfTlVNX1RYX1JFU0VSVkVEX1BBR0VfQlVGUzsKLQotCQkvKiBzZW5k IHBhY2tldCB3aXRoIHBhZ2UgYnVmZmVyICovCi0JCXBhY2tldC0+cGFnZV9idWZmZXJzWzBdLnBm biA9IGF0b3AodHhkLT5ybmRpc19tc2dfcGFkZHIpOwotCQlwYWNrZXQtPnBhZ2VfYnVmZmVyc1sw XS5vZmZzZXQgPQotCQkgICAgdHhkLT5ybmRpc19tc2dfcGFkZHIgJiBQQUdFX01BU0s7Ci0JCXBh Y2tldC0+cGFnZV9idWZmZXJzWzBdLmxlbmd0aCA9IHJuZGlzX21zZ19zaXplOwotCi0JCS8qCi0J CSAqIEZpbGwgdGhlIHBhZ2UgYnVmZmVycyB3aXRoIG1idWYgaW5mbyBzdGFydGluZyBhdCBpbmRl eAotCQkgKiBIVl9SRl9OVU1fVFhfUkVTRVJWRURfUEFHRV9CVUZTLgotCQkgKi8KLQkJZm9yIChp ID0gMDsgaSA8IG5zZWdzOyArK2kpIHsKLQkJCWh2X3ZtYnVzX3BhZ2VfYnVmZmVyICpwYiA9ICZw YWNrZXQtPnBhZ2VfYnVmZmVyc1sKLQkJCSAgICBpICsgSFZfUkZfTlVNX1RYX1JFU0VSVkVEX1BB R0VfQlVGU107Ci0KLQkJCXBiLT5wZm4gPSBhdG9wKHNlZ3NbaV0uZHNfYWRkcik7Ci0JCQlwYi0+ b2Zmc2V0ID0gc2Vnc1tpXS5kc19hZGRyICYgUEFHRV9NQVNLOwotCQkJcGItPmxlbmd0aCA9IHNl Z3NbaV0uZHNfbGVuOwotCQl9Ci0KLQkJcGFja2V0LT5zZW5kX2J1Zl9zZWN0aW9uX2lkeCA9IAot CQkgICAgTlZTUF8xX0NISU1ORVlfU0VORF9JTlZBTElEX1NFQ1RJT05fSU5ERVg7Ci0JCXBhY2tl dC0+c2VuZF9idWZfc2VjdGlvbl9zaXplID0gMDsKLQotZG9fc2VuZDoKLQkJdHhkLT5tID0gbV9o ZWFkOwotCi0JCS8qIFNldCB0aGUgY29tcGxldGlvbiByb3V0aW5lICovCi0JCXBhY2tldC0+Y29t cGwuc2VuZC5vbl9zZW5kX2NvbXBsZXRpb24gPSBuZXR2c2NfeG1pdF9jb21wbGV0aW9uOwotCQlw YWNrZXQtPmNvbXBsLnNlbmQuc2VuZF9jb21wbGV0aW9uX2NvbnRleHQgPSBwYWNrZXQ7Ci0JCXBh Y2tldC0+Y29tcGwuc2VuZC5zZW5kX2NvbXBsZXRpb25fdGlkID0KLQkJICAgICh1aW50NjRfdCko dWludHB0cl90KXR4ZDsKLQogYWdhaW46CiAJCS8qCiAJCSAqIE1ha2Ugc3VyZSB0aGF0IHR4ZCBp cyBub3QgZnJlZWQgYmVmb3JlIEVUSEVSX0JQRl9NVEFQLgogCQkgKi8KIAkJaG5fdHhkZXNjX2hv bGQodHhkKTsKLQkJZXJyb3IgPSBodl9udl9vbl9zZW5kKGRldmljZV9jdHgsIHBhY2tldCk7CisJ CWVycm9yID0gaHZfbnZfb25fc2VuZChkZXZpY2VfY3R4LCAmdHhkLT5uZXR2c2NfcGt0KTsKIAkJ aWYgKCFlcnJvcikgewogCQkJRVRIRVJfQlBGX01UQVAoaWZwLCBtX2hlYWQpOwogCQkJaWZfaW5j X2NvdW50ZXIoaWZwLCBJRkNPVU5URVJfT1BBQ0tFVFMsIDEpOwoK --b1_7d83666eeeadbf8cd33a405b6c1d7cae--