From owner-freebsd-virtualization@freebsd.org Thu May 16 11:23:42 2019 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6C5E01591E43 for ; Thu, 16 May 2019 11:23:42 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 14EEC70EAC; Thu, 16 May 2019 11:23:42 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from reviews.nyi.freebsd.org (reviews.nyi.freebsd.org [IPv6:2610:1c1:1:607c::16:b]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 345C820273; Thu, 16 May 2019 11:23:41 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by reviews.nyi.freebsd.org (Postfix, from userid 1346) id 33CD21247C5; Thu, 16 May 2019 11:23:41 +0000 (UTC) Date: Thu, 16 May 2019 11:23:41 +0000 To: Phabricator From: "aleksandr.fedorov_itglobal.com (Aleksandr Fedorov)" Cc: freebsd-virtualization@freebsd.org Reply-to: "aleksandr.fedorov_itglobal.com (Aleksandr Fedorov)" Subject: [Differential] D20276: [bhyve][virtio-net] Allow guest VM's to set JUMBO MTU in case of using the VALE switch. Message-ID: X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , , , X-Herald-Rules: <97>, <119>, <117> X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: Precedence: bulk Thread-Topic: PHID-DREV-pueoqfdkfh54jyuh6emz X-Phabricator-Mail-ID: 1469849 X-Phabricator-Send-Attempt: 373rwqnmy6auck72 Thread-Index: MjY5MTMzYzBiZTdkNDVlNTE1MGI2YWFmNjQ0 X-Phabricator-Stamps: actor(@aleksandr.fedorov_itglobal.com) application(Differential) author(@aleksandr.fedorov_itglobal.com) herald(H97) herald(H117) herald(H119) monogram(D20276) new() object-type(DREV) phid(PHID-DREV-pueoqfdkfh54jyuh6emz) reviewer(#bhyve) reviewer(@jhb) reviewer(@krion) reviewer(@rgrimes) reviewer(@v.maffione_gmail.com) revision-status(needs-review) subscriber(@bcran) subscriber(@evgueni.gavrilov_itglobal.com) subscriber(@freebsd-virtualization-list) via(web) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_de8aae4aa4571650bb57800da37870f1" X-Rspamd-Queue-Id: 14EEC70EAC X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.98 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.98)[-0.983,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 May 2019 11:23:42 -0000 --b1_de8aae4aa4571650bb57800da37870f1 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: base64 YWxla3NhbmRyLmZlZG9yb3ZfaXRnbG9iYWwuY29tIGNyZWF0ZWQgdGhpcyByZXZpc2lvbi4KYWxl a3NhbmRyLmZlZG9yb3ZfaXRnbG9iYWwuY29tIGFkZGVkIHJldmlld2VyczogYmh5dmUsIGpoYiwg cmdyaW1lcywga3Jpb24sIHYubWFmZmlvbmVfZ21haWwuY29tLgpIZXJhbGQgYWRkZWQgYSBzdWJz Y3JpYmVyOiBiY3Jhbi4KClJFVklTSU9OIFNVTU1BUlkKICDQoXVycmVudCBpbXBsZW1lbnRhdGlv biBvZiB0aGUgdmlydGlvLW5ldCBiYWNrZW5kIGRvZXNuJ3QgYWxsb3cgdG8gdHJhbnNmZXIgb2Yg cGFja2V0cyBsYXJnZXIgdGhhbiB0aGUgbmV0bWFwKDQpIGJ1ZmZlciBzaXplICgyMDQ4KSBvciBt YXhpbXVtIGd1ZXN0IGRlc2NyaXB0b3Igc2l6ZSBmb3IgdGFwKDQpIGNhc2UuIFRoZSByZWFzb24g aXMgdGhhdCB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBtZXJnZS1hYmxlIGJ1ZmZlcnMgKFZJUlRJ T19ORVRfRl9NUkdfUlhCVUYgaW4gdmlydGlvIHNwZWNpZmljYXRpb25zKS4gU2VlIFBSOiAyMTU3 MzcgVGhpcyBzaWduaWZpY2FudGx5IGxpbWl0cyB0aGUgVENQIHRocm91Z2hwdXQuCiAgCiAgVGhp cyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG1lcmdhYmxlIGJ1ZmZlcnMgdXNpbmcgbmV0bWFwJ3Mg YWJpbGl0eSB0byBjaGFpbiBpdCdzIG93biBidWZmZXJzIChzZWUgTlMgX01PUkVGUkFHLCBuZXRt YXAoNCkpLiBUaGUgc2FtZSBhcHByb2FjaCBpcyB1c2VkIGJ5IFFFTVUgKHZpcnRpby1uZXQgKyBu ZXRtYXAgYmFja2VuZCkuCiAgCiAgV2UgYXJlIHNlZWluZyBhIHNpZ25pZmljYW50IGluY3JlYXNl IGluIHRocm91Z2hwdXQgYm90aCBmb3IgdHJhbnNmZXJyaW5nIGRhdGEgYmV0d2VlbiBWTSdzIG9u IHRoZSBzYW1lIGhvc3QsIGFuZCBiZXR3ZWVuIFZNJ3Mgb24gZGlmZmVyZW50IGhvc3RzLiBTZWUg dGVzdHMgYmVsb3cuCgpURVNUIFBMQU4KICAqKjEuICdpcGVyZjMgLWMgWC5YLlguWCAtdCA2MCAt UicgYmV0d2VlbiAyIFVidW50dSAxNi4wNCBWTSdzIHRocm91Z2ggVkFMRSBzd2l0Y2guKioKICAK ICBNVFUgMTUwMC4gVk0gLSB2aXJ0aW8tbmV0IC0gVkFMRSAtIHZpcnRpby1uZXQgLSBWTToKICAK ICBbIElEXSBJbnRlcnZhbCAgICAgICAgICAgVHJhbnNmZXIgICAgIEJhbmR3aWR0aCAgICAgICBS ZXRyCiAgWyAgNV0gICAwLjAwLTYwLjA0ICBzZWMgIDI4LjYgR0J5dGVzICA0LjA5IEdiaXRzL3Nl YyAgICAzICAgICAgICAgICAgIHNlbmRlcgogIFsgIDVdICAgMC4wMC02MC4wNCAgc2VjICAyOC42 IEdCeXRlcyAgNC4wOSBHYml0cy9zZWMgICAgICAgICAgICAgICAgICByZWNlaXZlcgogIAogIE1U VSAzMDAwLiBWTSAtIHZpcnRpby1uZXQgLSBWQUxFIC0gdmlydGlvLW5ldCAtIFZNIChNVFUgMzAw MCk6CiAgCiAgWyBJRF0gSW50ZXJ2YWwgICAgICAgICAgIFRyYW5zZmVyICAgICBCYW5kd2lkdGgg ICAgICAgUmV0cgogIFsgIDVdICAgMC4wMC02MC4wNCAgc2VjICA1MS44IEdCeXRlcyAgNy40MiBH Yml0cy9zZWMgIDY1MSAgICAgICAgICAgICBzZW5kZXIKICBbICA1XSAgIDAuMDAtNjAuMDQgIHNl YyAgNTEuOCBHQnl0ZXMgIDcuNDIgR2JpdHMvc2VjICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIK ICAKICBNVFUgOTAwMC4gVk0gLSB2aXJ0aW8tbmV0IC0gVkFMRSAtIHZpcnRpby1uZXQgLSBWTToK ICAKICBbIElEXSBJbnRlcnZhbCAgICAgICAgICAgVHJhbnNmZXIgICAgIEJhbmR3aWR0aCAgICAg ICBSZXRyCiAgWyAgNV0gICAwLjAwLTYwLjA0ICBzZWMgIDk5LjcgR0J5dGVzICAxNC4zIEdiaXRz L3NlYyAgMTAwICAgICAgICAgICAgIHNlbmRlcgogIFsgIDVdICAgMC4wMC02MC4wNCAgc2VjICA5 OS43IEdCeXRlcyAgMTQuMyBHYml0cy9zZWMgICAgICAgICAgICAgICAgICByZWNlaXZlcgogIAog IE1UVSAxNjAwMC4gVk0gLSB2aXJ0aW8tbmV0IC0gVkFMRSAtIHZpcnRpby1uZXQgLSBWTToKICAK ICBbIElEXSBJbnRlcnZhbCAgICAgICAgICAgVHJhbnNmZXIgICAgIEJhbmR3aWR0aCAgICAgICBS ZXRyCiAgWyAgNV0gICAwLjAwLTYwLjA0ICBzZWMgICAxMjIgR0J5dGVzICAxNy41IEdiaXRzL3Nl YyAgICAwICAgICAgICAgICAgIHNlbmRlcgogIFsgIDVdICAgMC4wMC02MC4wNCAgc2VjICAgMTIy IEdCeXRlcyAgMTcuNSBHYml0cy9zZWMgICAgICAgICAgICAgICAgICByZWNlaXZlcgogIAogIE1U VSAzMjAwMC4gVk0gLSB2aXJ0aW8tbmV0IC0gVkFMRSAtIHZpcnRpby1uZXQgLSBWTToKICAKICBb IElEXSBJbnRlcnZhbCAgICAgICAgICAgVHJhbnNmZXIgICAgIEJhbmR3aWR0aCAgICAgICBSZXRy CiAgWyAgNV0gICAwLjAwLTYwLjA0ICBzZWMgICAxNTIgR0J5dGVzICAyMS43IEdiaXRzL3NlYyAg IDY0ICAgICAgICAgICAgIHNlbmRlcgogIFsgIDVdICAgMC4wMC02MC4wNCAgc2VjICAgMTUyIEdC eXRlcyAgMjEuNyBHYml0cy9zZWMgICAgICAgICAgICAgICAgICByZWNlaXZlcgogIAogIE1UVSA2 NDAwMC4gVk0gLSB2aXJ0aW8tbmV0IC0gVkFMRSAtIHZpcnRpby1uZXQgLSBWTToKICAKICBbIElE XSBJbnRlcnZhbCAgICAgICAgICAgVHJhbnNmZXIgICAgIEJhbmR3aWR0aCAgICAgICBSZXRyCiAg WyAgNV0gICAwLjAwLTYwLjA0ICBzZWMgICAyMjAgR0J5dGVzICAzMS40IEdiaXRzL3NlYyAgIDYw ICAgICAgICAgICAgIHNlbmRlcgogIFsgIDVdICAgMC4wMC02MC4wNCAgc2VjICAgMjIwIEdCeXRl cyAgMzEuNCBHYml0cy9zZWMgICAgICAgICAgICAgICAgICByZWNlaXZlcgogIAogICoqMi4gJ2lw ZXJmMyAtYyBYLlguWC5YIC10IDYwIC1SJyBiZXR3ZWVuIDIgRnJlZUJTRCAxMiBSRUxFQVNFIFZN J3MgdGhyb3VnaCBWQUxFIHN3aXRjaC4qKgogIAogIE1UVSAxNTAwLiBWTSAtIHZpcnRpby1uZXQg LSBWQUxFIC0gdmlydGlvLW5ldCAtIFZNOiAxLjMwIEdiaXRzL3NlYwogIE1UVSAzMDAwLiBWTSAt IHZpcnRpby1uZXQgLSBWQUxFIC0gdmlydGlvLW5ldCAtIFZNOiAyLjE0IEdiaXRzL3NlYwogIE1U VSA5MDAwLiBWTSAtIHZpcnRpby1uZXQgLSBWQUxFIC0gdmlydGlvLW5ldCAtIFZNOiA0LjgwIEdi aXRzL3NlYwogIE1UVSAxNjAwMC4gVk0gLSB2aXJ0aW8tbmV0IC0gVkFMRSAtIHZpcnRpby1uZXQg LSBWTTogNy4yNSBHYml0cy9zZWMKICBNVFUgMzIwMDAuIFZNIC0gdmlydGlvLW5ldCAtIFZBTEUg LSB2aXJ0aW8tbmV0IC0gVk06IDEyLjggR2JpdHMvc2VjCiAgTVRVIDY0MDAwLiBWTSAtIHZpcnRp by1uZXQgLSBWQUxFIC0gdmlydGlvLW5ldCAtIFZNOiAxMy4zIEdiaXRzL3NlYwoKUkVWSVNJT04g REVUQUlMCiAgaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL0QyMDI3NgoKQUZGRUNURUQgRklM RVMKICB1c3Iuc2Jpbi9iaHl2ZS9wY2lfdmlydGlvX25ldC5jCgpFTUFJTCBQUkVGRVJFTkNFUwog IGh0dHBzOi8vcmV2aWV3cy5mcmVlYnNkLm9yZy9zZXR0aW5ncy9wYW5lbC9lbWFpbHByZWZlcmVu Y2VzLwoKVG86IGFsZWtzYW5kci5mZWRvcm92X2l0Z2xvYmFsLmNvbSwgI2JoeXZlLCBqaGIsIHJn cmltZXMsIGtyaW9uLCB2Lm1hZmZpb25lX2dtYWlsLmNvbQpDYzogZnJlZWJzZC12aXJ0dWFsaXph dGlvbi1saXN0LCBldmd1ZW5pLmdhdnJpbG92X2l0Z2xvYmFsLmNvbSwgYmNyYW4K --b1_de8aae4aa4571650bb57800da37870f1 Content-Type: text/x-patch; charset=utf-8; name="D20276.57439.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D20276.57439.patch" ZGlmZiAtLWdpdCBhL3Vzci5zYmluL2JoeXZlL3BjaV92aXJ0aW9fbmV0LmMgYi91c3Iuc2Jpbi9i aHl2ZS9wY2lfdmlydGlvX25ldC5jCi0tLSBhL3Vzci5zYmluL2JoeXZlL3BjaV92aXJ0aW9fbmV0 LmMKKysrIGIvdXNyLnNiaW4vYmh5dmUvcGNpX3ZpcnRpb19uZXQuYwpAQCAtNzMsNiArNzMsOCBA QAogCiAjZGVmaW5lIFZUTkVUX01BWFNFR1MJMjU2CiAKKyNkZWZpbmUgVlRORVRfTUlOX0FWQUlM X0RFU0MJNjQKKwogLyoKICAqIEhvc3QgY2FwYWJpbGl0aWVzLiAgTm90ZSB0aGF0IHdlIG9ubHkg b2ZmZXIgYSBmZXcgb2YgdGhlc2UuCiAgKi8KQEAgLTM5Miw4NSArMzk0LDEwNyBAQAogfQogCiBz dGF0aWMgX19pbmxpbmUgaW50Ci1wY2lfdnRuZXRfbmV0bWFwX3dyaXRldihzdHJ1Y3Qgbm1fZGVz YyAqbm1kLCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCkKK3BjaV92dG5ldF9uZXRtYXBf d3JpdGV2KHN0cnVjdCBubV9kZXNjICpubWQsIHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250 LCBpbnQgaW92c2l6ZSkKIHsKLQlpbnQgciwgaTsKLQlpbnQgbGVuID0gMDsKKwljaGFyICpidWY7 CisJaW50IGk7CisJaW50IGZyYWdfc2l6ZTsKKwlpbnQgaW92X29mZjsKKwlpbnQgbGVuOworCWlu dCBubV9vZmY7CisJaW50IG5tX2J1Zl9zaXplOwogCi0JZm9yIChyID0gbm1kLT5jdXJfdHhfcmlu ZzsgOyApIHsKLQkJc3RydWN0IG5ldG1hcF9yaW5nICpyaW5nID0gTkVUTUFQX1RYUklORyhubWQt Pm5pZnAsIHIpOwotCQl1aW50MzJfdCBjdXIsIGlkeDsKLQkJY2hhciAqYnVmOworCXN0cnVjdCBu ZXRtYXBfcmluZyAqcmluZyA9IE5FVE1BUF9UWFJJTkcobm1kLT5uaWZwLCBubWQtPmN1cl9yeF9y aW5nKTsKIAotCQlpZiAobm1fcmluZ19lbXB0eShyaW5nKSkgewotCQkJcisrOwotCQkJaWYgKHIg PiBubWQtPmxhc3RfdHhfcmluZykKLQkJCQlyID0gbm1kLT5maXJzdF90eF9yaW5nOwotCQkJaWYg KHIgPT0gbm1kLT5jdXJfdHhfcmluZykKLQkJCQlicmVhazsKLQkJCWNvbnRpbnVlOworCWlmICgo bm1fcmluZ19zcGFjZShyaW5nKSAqIHJpbmctPm5yX2J1Zl9zaXplKSA8IGlvdnNpemUpIHsKKwkJ LyoKKwkJICogTm8gbW9yZSBhdmFpbCBzcGFjZSBpbiBUWCByaW5nLCB0cnkgdG8gZmx1c2ggaXQu CisJCSAqLworCQlpb2N0bChubWQtPmZkLCBOSU9DVFhTWU5DLCBOVUxMKTsKKwkJcmV0dXJuICgw KTsKKwl9CisKKwlpID0gcmluZy0+Y3VyOworCWJ1ZiA9IE5FVE1BUF9CVUYocmluZywgcmluZy0+ c2xvdFtpXS5idWZfaWR4KTsKKwlpb3Zfb2ZmID0gMDsKKwlsZW4gPSBpb3ZzaXplOworCW5tX2J1 Zl9zaXplID0gcmluZy0+bnJfYnVmX3NpemU7CisJbm1fb2ZmID0gMDsKKworCXdoaWxlIChpb3Zz aXplKSB7CisKKwkJaWYgKHVubGlrZWx5KGlvdl9vZmYgPT0gaW92LT5pb3ZfbGVuKSkgeworCQkJ aW92Kys7CisJCQlpb3Zfb2ZmID0gMDsKIAkJfQotCQljdXIgPSByaW5nLT5jdXI7Ci0JCWlkeCA9 IHJpbmctPnNsb3RbY3VyXS5idWZfaWR4OwotCQlidWYgPSBORVRNQVBfQlVGKHJpbmcsIGlkeCk7 CiAKLQkJZm9yIChpID0gMDsgaSA8IGlvdmNudDsgaSsrKSB7Ci0JCQlpZiAobGVuICsgaW92W2ld Lmlvdl9sZW4gPiAyMDQ4KQotCQkJCWJyZWFrOwotCQkJbWVtY3B5KCZidWZbbGVuXSwgaW92W2ld Lmlvdl9iYXNlLCBpb3ZbaV0uaW92X2xlbik7Ci0JCQlsZW4gKz0gaW92W2ldLmlvdl9sZW47CisJ CWlmICh1bmxpa2VseShubV9vZmYgPT0gbm1fYnVmX3NpemUpKSB7CisJCQlyaW5nLT5zbG90W2ld LmZsYWdzID0gTlNfTU9SRUZSQUc7CisJCQlpID0gbm1fcmluZ19uZXh0KHJpbmcsIGkpOworCQkJ YnVmID0gTkVUTUFQX0JVRihyaW5nLCByaW5nLT5zbG90W2ldLmJ1Zl9pZHgpOworCQkJbm1fb2Zm ID0gMDsKIAkJfQotCQlyaW5nLT5zbG90W2N1cl0ubGVuID0gbGVuOwotCQlyaW5nLT5oZWFkID0g cmluZy0+Y3VyID0gbm1fcmluZ19uZXh0KHJpbmcsIGN1cik7Ci0JCW5tZC0+Y3VyX3R4X3Jpbmcg PSByOwotCQlpb2N0bChubWQtPmZkLCBOSU9DVFhTWU5DLCBOVUxMKTsKLQkJYnJlYWs7CisKKwkJ ZnJhZ19zaXplID0gTUlOKG5tX2J1Zl9zaXplIC0gbm1fb2ZmLCBpb3YtPmlvdl9sZW4gLSBpb3Zf b2ZmKTsKKwkJbWVtY3B5KGJ1ZiArIG5tX29mZiwgaW92LT5pb3ZfYmFzZSArIGlvdl9vZmYsIGZy YWdfc2l6ZSk7CisKKwkJaW92c2l6ZSAtPSBmcmFnX3NpemU7CisJCWlvdl9vZmYgKz0gZnJhZ19z aXplOworCQlubV9vZmYgKz0gZnJhZ19zaXplOworCisJCXJpbmctPnNsb3RbaV0ubGVuID0gbm1f b2ZmOwogCX0KIAorCS8qIFRoZSBsYXN0IHNsb3QgbXVzdCBub3QgaGF2ZSBOU19NT1JFRlJBRyBz ZXQuICovCisJcmluZy0+c2xvdFtpXS5mbGFncyAmPSB+TlNfTU9SRUZSQUc7CisJcmluZy0+aGVh ZCA9IHJpbmctPmN1ciA9IG5tX3JpbmdfbmV4dChyaW5nLCBpKTsKKwlpb2N0bChubWQtPmZkLCBO SU9DVFhTWU5DLCBOVUxMKTsKKwogCXJldHVybiAobGVuKTsKIH0KIAogc3RhdGljIF9faW5saW5l IGludAotcGNpX3Z0bmV0X25ldG1hcF9yZWFkdihzdHJ1Y3Qgbm1fZGVzYyAqbm1kLCBzdHJ1Y3Qg aW92ZWMgKmlvdiwgaW50IGlvdmNudCkKK3BjaV92dG5ldF9uZXRtYXBfcmVhZHYoc3RydWN0IG5t X2Rlc2MgKm5tZCwgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZjbnQsIGludCBpb3ZzaXplKQog ewotCWludCBsZW4gPSAwOwotCWludCBpID0gMDsKLQlpbnQgcjsKKwljaGFyICpidWY7CisJaW50 IGk7CisJaW50IGlvdl9vZmY7CisJaW50IGZyYWdfc2l6ZTsKKwlpbnQgbGVuOworCWludCBubV9v ZmY7CiAKLQlmb3IgKHIgPSBubWQtPmN1cl9yeF9yaW5nOyA7ICkgewotCQlzdHJ1Y3QgbmV0bWFw X3JpbmcgKnJpbmcgPSBORVRNQVBfUlhSSU5HKG5tZC0+bmlmcCwgcik7Ci0JCXVpbnQzMl90IGN1 ciwgaWR4OwotCQljaGFyICpidWY7Ci0JCXNpemVfdCBsZWZ0OworCXN0cnVjdCBuZXRtYXBfcmlu ZyAqciA9IE5FVE1BUF9SWFJJTkcobm1kLT5uaWZwLCBubWQtPmN1cl9yeF9yaW5nKTsKIAotCQlp ZiAobm1fcmluZ19lbXB0eShyaW5nKSkgewotCQkJcisrOwotCQkJaWYgKHIgPiBubWQtPmxhc3Rf cnhfcmluZykKLQkJCQlyID0gbm1kLT5maXJzdF9yeF9yaW5nOwotCQkJaWYgKHIgPT0gbm1kLT5j dXJfcnhfcmluZykKLQkJCQlicmVhazsKLQkJCWNvbnRpbnVlOworCWkgPSByLT5jdXI7CisJYnVm ID0gTkVUTUFQX0JVRihyLCByLT5zbG90W2ldLmJ1Zl9pZHgpOworCWlvdl9vZmYgPSAwOworCW5t X29mZiA9IDA7CisJbGVuID0gaW92c2l6ZTsKKworCXdoaWxlIChpb3ZzaXplKSB7CisKKwkJaWYg KHVubGlrZWx5KGlvdl9vZmYgPT0gaW92LT5pb3ZfbGVuKSkgeworCQkJaW92Kys7CisJCQlpb3Zf b2ZmID0gMDsKIAkJfQotCQljdXIgPSByaW5nLT5jdXI7Ci0JCWlkeCA9IHJpbmctPnNsb3RbY3Vy XS5idWZfaWR4OwotCQlidWYgPSBORVRNQVBfQlVGKHJpbmcsIGlkeCk7Ci0JCWxlZnQgPSByaW5n LT5zbG90W2N1cl0ubGVuOwogCi0JCWZvciAoaSA9IDA7IGkgPCBpb3ZjbnQgJiYgbGVmdCA+IDA7 IGkrKykgewotCQkJaWYgKGlvdltpXS5pb3ZfbGVuID4gbGVmdCkKLQkJCQlpb3ZbaV0uaW92X2xl biA9IGxlZnQ7Ci0JCQltZW1jcHkoaW92W2ldLmlvdl9iYXNlLCAmYnVmW2xlbl0sIGlvdltpXS5p b3ZfbGVuKTsKLQkJCWxlbiArPSBpb3ZbaV0uaW92X2xlbjsKLQkJCWxlZnQgLT0gaW92W2ldLmlv dl9sZW47CisJCWlmICh1bmxpa2VseShubV9vZmYgPT0gci0+c2xvdFtpXS5sZW4pKSB7CisJCQlp ID0gbm1fcmluZ19uZXh0KHIsIGkpOworCQkJYnVmID0gTkVUTUFQX0JVRihyLCByLT5zbG90W2ld LmJ1Zl9pZHgpOworCQkJbm1fb2ZmID0gMDsKIAkJfQotCQlyaW5nLT5oZWFkID0gcmluZy0+Y3Vy ID0gbm1fcmluZ19uZXh0KHJpbmcsIGN1cik7Ci0JCW5tZC0+Y3VyX3J4X3JpbmcgPSByOwotCQlp b2N0bChubWQtPmZkLCBOSU9DUlhTWU5DLCBOVUxMKTsKLQkJYnJlYWs7CisKKwkJZnJhZ19zaXpl ID0gTUlOKHItPnNsb3RbaV0ubGVuIC0gbm1fb2ZmLCBpb3YtPmlvdl9sZW4gLSBpb3Zfb2ZmKTsK KwkJbWVtY3B5KGlvdi0+aW92X2Jhc2UgKyBpb3Zfb2ZmLCBidWYgKyBubV9vZmYsIGZyYWdfc2l6 ZSk7CisKKwkJaW92c2l6ZSAtPSBmcmFnX3NpemU7CisJCWlvdl9vZmYgKz0gZnJhZ19zaXplOwor CQlubV9vZmYgKz0gZnJhZ19zaXplOwogCX0KLQlmb3IgKDsgaSA8IGlvdmNudDsgaSsrKQotCQlp b3ZbaV0uaW92X2xlbiA9IDA7CiAKKwlyLT5oZWFkID0gci0+Y3VyID0gbm1fcmluZ19uZXh0KHIs IGkpOworCWlvY3RsKG5tZC0+ZmQsIE5JT0NSWFNZTkMsIE5VTEwpOworCiAJcmV0dXJuIChsZW4p OwogfQogCkBAIC00ODEsMzIgKzUwNSwxMDIgQEAKIHBjaV92dG5ldF9uZXRtYXBfdHgoc3RydWN0 IHBjaV92dG5ldF9zb2Z0YyAqc2MsIHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92Y250LAogCQkg ICAgaW50IGxlbikKIHsKLQlzdGF0aWMgY2hhciBwYWRbNjBdOyAvKiBhbGwgemVybyBieXRlcyAq LwotCiAJaWYgKHNjLT52c2Nfbm1kID09IE5VTEwpCiAJCXJldHVybjsKIAotCS8qCi0JICogSWYg dGhlIGxlbmd0aCBpcyA8IDYwLCBwYWQgb3V0IHRvIHRoYXQgYW5kIGFkZCB0aGUKLQkgKiBleHRy YSB6ZXJvJ2Qgc2VnbWVudCB0byB0aGUgaW92LiBJdCBpcyBndWFyYW50ZWVkIHRoYXQKLQkgKiB0 aGVyZSBpcyBhbHdheXMgYW4gZXh0cmEgaW92IGF2YWlsYWJsZSBieSB0aGUgY2FsbGVyLgotCSAq LwotCWlmIChsZW4gPCA2MCkgewotCQlpb3ZbaW92Y250XS5pb3ZfYmFzZSA9IHBhZDsKLQkJaW92 W2lvdmNudF0uaW92X2xlbiA9IDYwIC0gbGVuOwotCQlpb3ZjbnQrKzsKKwkodm9pZCkgcGNpX3Z0 bmV0X25ldG1hcF93cml0ZXYoc2MtPnZzY19ubWQsIGlvdiwgaW92Y250LCBsZW4pOworfQorCitz dGF0aWMgX19pbmxpbmUgaW50Cit2cV9hdmFpbF90b19pb3ZlYyhzdHJ1Y3QgdnF1ZXVlX2luZm8g KnZxLCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGxlbiwgaW50IHN0YXJ0LAorCQlpbnQgbWluYXZh aWwpCit7CisJaW50IGlkeDsKKwl1aW50MTZfdCBtYXNrID0gdnEtPnZxX3FzaXplIC0gMTsKKwl2 b2xhdGlsZSBzdHJ1Y3QgdmlydGlvX2Rlc2MgKnZkaXI7CisJc3RydWN0IHZtY3R4ICpjdHggPSB2 cS0+dnFfdnMtPnZzX3BpLT5waV92bWN0eDsKKworCXVpbnQxNl90IG5kZXNjID0gKHVpbnQxNl90 KSh2cS0+dnFfYXZhaWwtPnZhX2lkeCAtIHZxLT52cV9sYXN0X2F2YWlsIC0gc3RhcnQpOworCisJ aWYgKG5kZXNjIDwgbWluYXZhaWwpCisJCXJldHVybiAoMCk7CisKKwlpbnQgb2ZmID0gMDsKKwlp bnQgdWlkeCA9IHZxLT52cV91c2VkLT52dV9pZHggKyBzdGFydDsKKworCWZvciAoaW50IGkgPSAw OyBpIDwgbmRlc2M7IGkrKykgeworCQlpZHggPSB2cS0+dnFfYXZhaWwtPnZhX3JpbmdbKHZxLT52 cV9sYXN0X2F2YWlsICsgaSArICBzdGFydCkgJiBtYXNrXTsKKwkJdmRpciA9ICZ2cS0+dnFfZGVz Y1tpZHhdOworCisJCWlvdltpXS5pb3ZfYmFzZSA9IHBhZGRyX2d1ZXN0Mmhvc3QoY3R4LCAKKwkJ CQl2ZGlyLT52ZF9hZGRyLCB2ZGlyLT52ZF9sZW4pOworCQlpb3ZbaV0uaW92X2xlbiA9IHZkaXIt PnZkX2xlbjsKKworCQlvZmYgKz0gdmRpci0+dmRfbGVuOworCisJCXZxLT52cV91c2VkLT52dV9y aW5nW3VpZHggJiBtYXNrXS52dV9pZHggPSBpZHg7CisJCXZxLT52cV91c2VkLT52dV9yaW5nW3Vp ZHggJiBtYXNrXS52dV90bGVuID0gCisJCQkob2ZmID49IGxlbikgPyB2ZGlyLT52ZF9sZW4gLSAo b2ZmIC0gbGVuKSA6IHZkaXItPnZkX2xlbjsKKworCQl1aWR4Kys7CisKKwkJaWYgKG9mZiA+PSBs ZW4pIHsKKwkJCXJldHVybiAoaSArIDEpOworCQl9CiAJfQotCSh2b2lkKSBwY2lfdnRuZXRfbmV0 bWFwX3dyaXRldihzYy0+dnNjX25tZCwgaW92LCBpb3ZjbnQpOworCisJcmV0dXJuICgwKTsKIH0K IAorc3RhdGljIF9faW5saW5lIHZvaWQKK3ZxX2luY191c2VkX2lkeF9hbmRfbGFzdF9hdmFpbChz dHJ1Y3QgdnF1ZXVlX2luZm8gKnZxLCBpbnQgbikKK3sKKwlpZiAobiA+IDApIHsKKwkJdnEtPnZx X2xhc3RfYXZhaWwgKz0gbjsKKwkJdnEtPnZxX3VzZWQtPnZ1X2lkeCArPSBuOworCX0KK30KKwor c3RhdGljIF9faW5saW5lIGludAorbmV0bWFwX25leHRfcGt0X2xlbihzdHJ1Y3Qgbm1fZGVzYyAq bm1kKQoreworCWludCBpOworCWludCBsZW47CisJc3RydWN0IG5ldG1hcF9yaW5nICpyID0gTkVU TUFQX1JYUklORyhubWQtPm5pZnAsIG5tZC0+Y3VyX3J4X3JpbmcpOworCisJbGVuID0gMDsKKwor CWZvciAoaSA9IHItPmN1cjsgaSAhPSByLT50YWlsOyBpID0gbm1fcmluZ19uZXh0KHIsIGkpKSB7 CisJCWxlbiArPSByLT5zbG90W2ldLmxlbjsKKwkJaWYgKCEoci0+c2xvdFtpXS5mbGFncyAmIE5T X01PUkVGUkFHKSkKKwkJCWJyZWFrOworCX0KKworCXJldHVybiAobGVuKTsKK30KKworc3RhdGlj IF9faW5saW5lIHZvaWQKK25ldG1hcF9kcm9wX3BrdChzdHJ1Y3Qgbm1fZGVzYyAqbm1kKQorewor CWludCBpOworCXN0cnVjdCBuZXRtYXBfcmluZyAqciA9IE5FVE1BUF9SWFJJTkcobm1kLT5uaWZw LCBubWQtPmN1cl9yeF9yaW5nKTsKKworCWZvciAoaSA9IHItPmN1cjsgaSAhPSByLT50YWlsOyBp ID0gbm1fcmluZ19uZXh0KHIsIGkpKSB7CisJCWlmICghKHItPnNsb3RbaV0uZmxhZ3MgJiBOU19N T1JFRlJBRykpIHsKKwkJCXItPmhlYWQgPSByLT5jdXIgPSBubV9yaW5nX25leHQociwgaSk7CisJ CQlyZXR1cm47CisJCX0KKwl9Cit9CisKIHN0YXRpYyB2b2lkCiBwY2lfdnRuZXRfbmV0bWFwX3J4 KHN0cnVjdCBwY2lfdnRuZXRfc29mdGMgKnNjKQogewotCXN0cnVjdCBpb3ZlYyBpb3ZbVlRORVRf TUFYU0VHU10sICpyaW92OworCXN0cnVjdCBpb3ZlYyBpb3ZbVlRORVRfUklOR1NaXSwgKnJpb3Y7 CiAJc3RydWN0IHZxdWV1ZV9pbmZvICp2cTsKLQl2b2lkICp2cng7Ci0JaW50IGxlbiwgbjsKLQl1 aW50MTZfdCBpZHg7CisJaW50IGxlbjsKKwlpbnQgbjsKKwlpbnQgdXNlZDsKIAogCS8qCiAJICog U2hvdWxkIG5ldmVyIGJlIGNhbGxlZCB3aXRob3V0IGEgdmFsaWQgbmV0bWFwIGRlc2NyaXB0b3IK QEAgLTUxNywxMSArNjExLDExIEBACiAJICogQnV0LCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBy eCByaW5nIGhhc24ndCB5ZXQKIAkgKiBiZWVuIHNldCB1cCBvciB0aGUgZ3Vlc3QgaXMgcmVzZXR0 aW5nIHRoZSBkZXZpY2UuCiAJICovCi0JaWYgKCFzYy0+dnNjX3J4X3JlYWR5IHx8IHNjLT5yZXNl dHRpbmcpIHsKKwlpZiAodW5saWtlbHkoKCFzYy0+dnNjX3J4X3JlYWR5IHx8IHNjLT5yZXNldHRp bmcpKSkgewogCQkvKgogCQkgKiBEcm9wIHRoZSBwYWNrZXQgYW5kIHRyeSBsYXRlci4KIAkJICov Ci0JCSh2b2lkKSBubV9uZXh0cGt0KHNjLT52c2Nfbm1kLCAodm9pZCAqKWR1bW15YnVmKTsKKwkJ bmV0bWFwX2Ryb3BfcGt0KHNjLT52c2Nfbm1kKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtNTI5LDYz ICs2MjMsNTQgQEAKIAkgKiBDaGVjayBmb3IgYXZhaWxhYmxlIHJ4IGJ1ZmZlcnMKIAkgKi8KIAl2 cSA9ICZzYy0+dnNjX3F1ZXVlc1tWVE5FVF9SWFFdOwotCWlmICghdnFfaGFzX2Rlc2NzKHZxKSkg eworCWlmICh1bmxpa2VseSghdnFfaGFzX2Rlc2NzKHZxKSkpIHsKIAkJLyoKIAkJICogRHJvcCB0 aGUgcGFja2V0IGFuZCB0cnkgbGF0ZXIuICBJbnRlcnJ1cHQgb24KIAkJICogZW1wdHksIGlmIHRo YXQncyBuZWdvdGlhdGVkLgogCQkgKi8KLQkJKHZvaWQpIG5tX25leHRwa3Qoc2MtPnZzY19ubWQs ICh2b2lkICopZHVtbXlidWYpOworCQluZXRtYXBfZHJvcF9wa3Qoc2MtPnZzY19ubWQpOwogCQl2 cV9lbmRjaGFpbnModnEsIDEpOwogCQlyZXR1cm47CiAJfQogCisJdXNlZCA9IDA7CisKIAlkbyB7 Ci0JCS8qCi0JCSAqIEdldCBkZXNjcmlwdG9yIGNoYWluLgotCQkgKi8KLQkJbiA9IHZxX2dldGNo YWluKHZxLCAmaWR4LCBpb3YsIFZUTkVUX01BWFNFR1MsIE5VTEwpOwotCQlhc3NlcnQobiA+PSAx ICYmIG4gPD0gVlRORVRfTUFYU0VHUyk7CisJCWxlbiA9IG5ldG1hcF9uZXh0X3BrdF9sZW4oc2Mt PnZzY19ubWQpOwogCi0JCS8qCi0JCSAqIEdldCBhIHBvaW50ZXIgdG8gdGhlIHJ4IGhlYWRlciwg YW5kIHVzZSB0aGUKLQkJICogZGF0YSBpbW1lZGlhdGVseSBmb2xsb3dpbmcgaXQgZm9yIHRoZSBw YWNrZXQgYnVmZmVyLgotCQkgKi8KLQkJdnJ4ID0gaW92WzBdLmlvdl9iYXNlOwotCQlyaW92ID0g cnhfaW92X3RyaW0oaW92LCAmbiwgc2MtPnJ4X3ZoZHJsZW4pOworCQlpZiAodW5saWtlbHkobGVu ID09IDApKSB7CisJCQl2cV9pbmNfdXNlZF9pZHhfYW5kX2xhc3RfYXZhaWwodnEsIHVzZWQpOwor CQkJdnFfZW5kY2hhaW5zKHZxLCAwKTsKKwkJCXJldHVybjsKKwkJfQogCi0JCWxlbiA9IHBjaV92 dG5ldF9uZXRtYXBfcmVhZHYoc2MtPnZzY19ubWQsIHJpb3YsIG4pOworCQluID0gdnFfYXZhaWxf dG9faW92ZWModnEsIGlvdiwgbGVuICsgc2MtPnJ4X3ZoZHJsZW4sIHVzZWQsCisJCQkJVlRORVRf TUlOX0FWQUlMX0RFU0MpOwogCi0JCWlmIChsZW4gPT0gMCkgewotCQkJLyoKLQkJCSAqIE5vIG1v cmUgcGFja2V0cywgYnV0IHN0aWxsIHNvbWUgYXZhaWwgcmluZwotCQkJICogZW50cmllcy4gIElu dGVycnVwdCBpZiBuZWVkZWQvYXBwcm9wcmlhdGUuCi0JCQkgKi8KLQkJCXZxX3JldGNoYWluKHZx KTsKKwkJaWYgKHVubGlrZWx5KG4gPT0gMCkpIHsKKwkJCXZxX2luY191c2VkX2lkeF9hbmRfbGFz dF9hdmFpbCh2cSwgdXNlZCk7CiAJCQl2cV9lbmRjaGFpbnModnEsIDApOwogCQkJcmV0dXJuOwog CQl9CiAKLQkJLyoKLQkJICogVGhlIG9ubHkgdmFsaWQgZmllbGQgaW4gdGhlIHJ4IHBhY2tldCBo ZWFkZXIgaXMgdGhlCi0JCSAqIG51bWJlciBvZiBidWZmZXJzIGlmIG1lcmdlZCByeCBidWZzIHdl cmUgbmVnb3RpYXRlZC4KLQkJICovCi0JCW1lbXNldCh2cngsIDAsIHNjLT5yeF92aGRybGVuKTsK LQogCQlpZiAoc2MtPnJ4X21lcmdlKSB7Ci0JCQlzdHJ1Y3QgdmlydGlvX25ldF9yeGhkciAqdnJ4 aDsKLQotCQkJdnJ4aCA9IHZyeDsKLQkJCXZyeGgtPnZyaF9idWZzID0gMTsKKwkJCXN0cnVjdCB2 aXJ0aW9fbmV0X3J4aGRyICp2cnhoID0gaW92WzBdLmlvdl9iYXNlOworCQkJbWVtc2V0KHZyeGgs IDAsIHNjLT5yeF92aGRybGVuKTsKKwkJCXZyeGgtPnZyaF9idWZzID0gbjsKIAkJfQogCi0JCS8q Ci0JCSAqIFJlbGVhc2UgdGhpcyBjaGFpbiBhbmQgaGFuZGxlIG1vcmUgY2hhaW5zLgotCQkgKi8K LQkJdnFfcmVsY2hhaW4odnEsIGlkeCwgbGVuICsgc2MtPnJ4X3ZoZHJsZW4pOworCQlyaW92ID0g cnhfaW92X3RyaW0oaW92LCAmbiwgc2MtPnJ4X3ZoZHJsZW4pOworCisJCSh2b2lkKXBjaV92dG5l dF9uZXRtYXBfcmVhZHYoc2MtPnZzY19ubWQsIHJpb3YsIG4sIGxlbik7CisKKwkJdXNlZCArPSBu OworCiAJfSB3aGlsZSAodnFfaGFzX2Rlc2NzKHZxKSk7CiAKLQkvKiBJbnRlcnJ1cHQgaWYgbmVl ZGVkLCBpbmNsdWRpbmcgZm9yIE5PVElGWV9PTl9FTVBUWS4gKi8KKwl2cV9pbmNfdXNlZF9pZHhf YW5kX2xhc3RfYXZhaWwodnEsIHVzZWQpOwogCXZxX2VuZGNoYWlucyh2cSwgMSk7CisKKwlyZXR1 cm47CiB9CiAKIHN0YXRpYyB2b2lkCgo= --b1_de8aae4aa4571650bb57800da37870f1--