From owner-freebsd-virtualization@freebsd.org Mon Aug 14 16:41:55 2017 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EC393DD6106 for ; Mon, 14 Aug 2017 16:41:55 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from reviews.nyi.freebsd.org (reviews.nyi.freebsd.org [IPv6:2610:1c1:1:607c::16:b]) by mx1.freebsd.org (Postfix) with ESMTP id CA23564C76 for ; Mon, 14 Aug 2017 16:41:55 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by reviews.nyi.freebsd.org (Postfix, from userid 1346) id 425D81C24B; Mon, 14 Aug 2017 16:41:55 +0000 (UTC) Date: Mon, 14 Aug 2017 16:41:55 +0000 To: freebsd-virtualization@freebsd.org From: "editor_callfortesting.org (Michael Dexter)" Reply-to: D5473+333+79492675d52ac1ab@reviews.freebsd.org Subject: [Differential] D5473: ATA/ATAPI6 device emulation in bhyve Message-ID: <4f2740192b0db29c0400eb44b7982d03@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: D5473: ATA/ATAPI6 device emulation in bhyve X-Herald-Rules: none X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: Precedence: bulk In-Reply-To: References: Thread-Index: ZmQ1YjBmNDNhNWVhZDYwNjJmNTU3Y2FmMjRkIFmR0tM= MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8" X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.23 List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Aug 2017 16:41:56 -0000 ZWRpdG9yX2NhbGxmb3J0ZXN0aW5nLm9yZyBhZGRlZCBhIGNvbW1lbnQuCgoKICBpYXRlYWNhLAog IAogIFNldmVyYWwgcGVvcGxlIHdvdWxkIGxpa2UgdG8gc2VlIHRoaXMgdGhyb3VnaC4gUGxlYXNl IGFkZCBhIGNvcHlyaWdodCBhbmQgbGljZW5zZSB0byB0aGUgd29yay4KICAKICBUaGFua3MhCiAg CiAgZGV4dGVyCgpSRVZJU0lPTiBERVRBSUwKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcv RDU0NzMKCkVNQUlMIFBSRUZFUkVOQ0VTCiAgaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL3Nl dHRpbmdzL3BhbmVsL2VtYWlscHJlZmVyZW5jZXMvCgpUbzogaWF0ZWFjYSwgZ3JlaGFuLCB0eWNo b24sIG5lZWwsIG1hdgpDYzogZWRpdG9yX2NhbGxmb3J0ZXN0aW5nLm9yZywgZnJlZWJzZC12aXJ0 dWFsaXphdGlvbi1saXN0Cg== From owner-freebsd-virtualization@freebsd.org Tue Aug 15 09:48:57 2017 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9373ADC865F for ; Tue, 15 Aug 2017 09:48:57 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from reviews.nyi.freebsd.org (reviews.nyi.freebsd.org [IPv6:2610:1c1:1:607c::16:b]) by mx1.freebsd.org (Postfix) with ESMTP id 1AB5367DAD for ; Tue, 15 Aug 2017 09:48:57 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by reviews.nyi.freebsd.org (Postfix, from userid 1346) id 33FEA5465A; Tue, 15 Aug 2017 09:48:56 +0000 (UTC) Date: Tue, 15 Aug 2017 09:48:56 +0000 To: freebsd-virtualization@freebsd.org From: "iateaca (Teaca)" Reply-to: D5473+333+79492675d52ac1ab@reviews.freebsd.org Subject: [Differential] D5473: ATA/ATAPI6 device emulation in bhyve Message-ID: <3f564b781b1c7f1f6a251004cff0fd1c@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: D5473: ATA/ATAPI6 device emulation in bhyve X-Herald-Rules: none X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: Precedence: bulk In-Reply-To: References: Thread-Index: ZmQ1YjBmNDNhNWVhZDYwNjJmNTU3Y2FmMjRkIFmSw4g= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_3f564b781b1c7f1f6a251004cff0fd1c" X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.23 List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Aug 2017 09:48:57 -0000 --b1_3f564b781b1c7f1f6a251004cff0fd1c Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: base64 aWF0ZWFjYSB1cGRhdGVkIHRoaXMgcmV2aXNpb24gdG8gRGlmZiAzMjA4MS4KaWF0ZWFjYSBhZGRl ZCBhIGNvbW1lbnQuCgoKICBhZGQgQ29weXJpZ2h0IGFuZCBsaWNlbnNlCgpDSEFOR0VTIFNJTkNF IExBU1QgVVBEQVRFCiAgaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL0Q1NDczP3ZzPTEzODI5 JmlkPTMyMDgxCgpSRVZJU0lPTiBERVRBSUwKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcv RDU0NzMKCkFGRkVDVEVEIEZJTEVTCiAgTWFrZWZpbGUKICBhdGEuYwogIHBjaV9scGMuYwoKRU1B SUwgUFJFRkVSRU5DRVMKICBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvc2V0dGluZ3MvcGFu ZWwvZW1haWxwcmVmZXJlbmNlcy8KClRvOiBpYXRlYWNhLCBncmVoYW4sIHR5Y2hvbiwgbmVlbCwg bWF2CkNjOiBlZGl0b3JfY2FsbGZvcnRlc3Rpbmcub3JnLCBmcmVlYnNkLXZpcnR1YWxpemF0aW9u LWxpc3QK --b1_3f564b781b1c7f1f6a251004cff0fd1c Content-Type: text/x-patch; charset=utf-8; name="D5473.32081.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D5473.32081.patch" ZGlmZiAtLWdpdCBhL3BjaV9scGMuYyBiL3BjaV9scGMuYwotLS0gYS9wY2lfbHBjLmMKKysrIGIv cGNpX2xwYy5jCkBAIC03Myw2ICs3MywxMSBAQAogCiBzdGF0aWMgY29uc3QgY2hhciAqbHBjX3Vh cnRfbmFtZXNbTFBDX1VBUlRfTlVNXSA9IHsgIkNPTTEiLCAiQ09NMiIgfTsKIAorZXh0ZXJuIGlu dAorbHBjX2F0YV9pbml0KHN0cnVjdCB2bWN0eCAqY3R4LCBjb25zdCBjaGFyICpvcHRzKTsKK3N0 YXRpYyBjb25zdCBjaGFyICpscGNfYXRhMF9vcHRzID0gTlVMTDsKK3N0YXRpYyBjb25zdCBjaGFy ICpscGNfYXRhMV9vcHRzID0gTlVMTDsKKwogLyoKICAqIExQQyBkZXZpY2UgY29uZmlndXJhdGlv biBpcyBpbiB0aGUgZm9sbG93aW5nIGZvcm06CiAgKiA8bHBjX2RldmljZV9uYW1lPlssPG9wdGlv bnM+XQpAQCAtOTUsNiArMTAwLDE2IEBACiAJCQkJZ290byBkb25lOwogCQkJfQogCQl9CisKKwkJ aWYgKHN0cmNhc2VjbXAobHBjZGV2LCAiYXRhLWhkIikgPT0gMCkgeworCQkJaWYgKHN0clswXSA9 PSAnMCcpCisJCQkJbHBjX2F0YTBfb3B0cyA9IHN0cjsKKwkJCWVsc2UgaWYgKHN0clswXSA9PSAn MScpCisJCQkJbHBjX2F0YTFfb3B0cyA9IHN0cjsKKworCQkJZXJyb3IgPSAwOworCQkJZ290byBk b25lOworCQl9CiAJfQogCiBkb25lOgpAQCAtMTk3LDYgKzIxMiwxMSBAQAogCQlzYy0+ZW5hYmxl ZCA9IDE7CiAJfQogCisJaWYgKGxwY19hdGEwX29wdHMpCisJCWxwY19hdGFfaW5pdChscGNfYnJp ZGdlLT5waV92bWN0eCwgbHBjX2F0YTBfb3B0cyk7CisJaWYgKGxwY19hdGExX29wdHMpCisJCWxw Y19hdGFfaW5pdChscGNfYnJpZGdlLT5waV92bWN0eCwgbHBjX2F0YTFfb3B0cyk7CisKIAlyZXR1 cm4gKDApOwogfQogCkBAIC0zNzksNiArMzk5LDggQEAKIAkJcmV0dXJuICgtMSk7CiAJfQogCisJ bHBjX2JyaWRnZSA9IHBpOworCiAJaWYgKGxwY19pbml0KCkgIT0gMCkKIAkJcmV0dXJuICgtMSk7 CiAKQEAgLTM4OCw4ICs0MTAsNiBAQAogCXBjaV9zZXRfY2ZnZGF0YTgocGksIFBDSVJfQ0xBU1Ms IFBDSUNfQlJJREdFKTsKIAlwY2lfc2V0X2NmZ2RhdGE4KHBpLCBQQ0lSX1NVQkNMQVNTLCBQQ0lT X0JSSURHRV9JU0EpOwogCi0JbHBjX2JyaWRnZSA9IHBpOwotCiAJcmV0dXJuICgwKTsKIH0KIApk aWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotLS0gYS9NYWtlZmlsZQorKysgYi9NYWtl ZmlsZQpAQCAtMTEsNiArMTEsNyBAQAogU1JDUz0JXAogCWF0a2JkYy5jCQlcCiAJYWNwaS5jCQkJ XAorCWF0YS5jCQkJXAogCWJoeXZlcnVuLmMJCVwKIAlibG9ja19pZi5jCQlcCiAJY29uc3BvcnQu YwkJXApkaWZmIC0tZ2l0IGEvYXRhLmMgYi9hdGEuYwotLS0gYS9hdGEuYworKysgYi9hdGEuYwpA QCAtMCwwICsxLDI2MDYgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDE2IEFsZXggVGVhY2Eg PGlhdGVhY2FAZnJlZWJzZC5vcmc+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0 aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycg QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xB SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJ QUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJW SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ VElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQg T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ QklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2luY2x1ZGUgPHN5cy9zdGF0 Lmg+CisjaW5jbHVkZSA8c3lzL2F0YS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1 ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4K KyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaW5jbHVkZSA8Y2Ft L3Njc2kvc2NzaV9hbGwuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3ZtbS5oPgorI2luY2x1ZGUgPHZt bWFwaS5oPgorCisjaW5jbHVkZSAiYmxvY2tfaWYuaCIKKyNpbmNsdWRlICJiaHl2ZXJ1bi5oIgor I2luY2x1ZGUgInBjaV9lbXVsLmgiCisjaW5jbHVkZSAicGNpX2lycS5oIgorI2luY2x1ZGUgImlu b3V0LmgiCisKKworLyoKKyAqIEFUQSBEZWJ1ZyBMb2cKKyAqLworI2RlZmluZQlERUJVR19BVEEJ CQkxCisjaWYgREVCVUdfQVRBID09IDEKKwordHlwZWRlZiBlbnVtIHsKKwlMT0dfREVCVUcgPSAw LAorCUxPR19FUlIgPSAxLAorfSBMT0dfTEVWRUw7CisKK3N0YXRpYyBGSUxFICpkYmc7CisKK3N0 YXRpYyB2b2lkIGF0YV9vcGVuX2RiZ19maWxlKHZvaWQpCit7CisJZGJnID0gZm9wZW4oIi90bXAv Ymh5dmVfYXRhLmxvZyIsICJ3KyIpOworCXJldHVybjsKK30KKworI2RlZmluZSBkcHJpbnQobGV2 ZWwsIGZvcm1hdCwgYXJnLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisJZG97ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorCQlpZiAobGV2ZWwgPT0gTE9HX0RFQlVHKSB7ZnByaW50Zihk YmcsIGZvcm1hdCwgIyNhcmcpO30gICAgICAgXAorCQllbHNlIHtmcHJpbnRmKGRiZywgIkxPR19F UlI6ICJmb3JtYXQsICMjYXJnKTt9ICAgICAgICAgICAgICAgXAorCQlmZmx1c2goZGJnKTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCX13aGlsZSgw KQorI2Vsc2UKKyNkZWZpbmUgYXRhX29wZW5fZGJnX2ZpbGUoKQk7CisjZGVmaW5lIGRwcmludChs ZXZlbCwgZm10LCAuLi4pIGRvIHt9IHdoaWxlICgwKQorI2VuZGlmCisKKworLyoKKyAqIEFUQSBk ZWZpbmVzCisgKi8KKworI2RlZmluZSBQQ0lfQVRBX0NIX1NFUAkJCSc7JworCisvKiBBVEEgQ2hh bm5lbHMgKi8KKyNkZWZpbmUgQVRBX0NIQU5ORUxTCQkJMHgwMgorI2RlZmluZQlBVEFfWAkJCQkw eDAwCisjZGVmaW5lCUFUQV9ZCQkJCTB4MDEKKworI2RlZmluZQlBVEFfRFJJVkVTCQkJMHgwMgor I2RlZmluZQlBVEFfTUFTVEVSCQkJMHgwMAorI2RlZmluZQlBVEFfU0xBVkUJCQkweDAxCisKKyNk ZWZpbmUJQVRBX0RSSVZFX0FCU0VOVAkJMHhmOAorCisjZGVmaW5lCUFUQV9ERVYodW5pdCkJCQko KHVuaXQgPiAwKSA/IDB4MTAgOiAwKQorCisjZGVmaW5lIEFUQV9JT1NJWkUJCQkweDA4CisjZGVm aW5lIEFUQV9DVExJT1NJWkUJCQkweDAxCisjZGVmaW5lIEFUQV9CTUlPU0laRQkJCTB4MDgKKwor I2RlZmluZQlBVEFfU0VDVE9SX1NJWkUJCQk1MTIKKyNkZWZpbmUJQVRBX1NFQ1RPUlNfUEVSX0JM T0NLCQkxMjgKKyNkZWZpbmUJQVRBX01BWF9TRUNfQ09VTlQJCTI1NgorI2RlZmluZQlBVEFfQkxP Q0tfU0laRQkJCShBVEFfU0VDVE9SU19QRVJfQkxPQ0sgKiBBVEFfU0VDVE9SX1NJWkUpCisjZGVm aW5lCUFUQV9JTkJVRl9TSVpFCQkJKEFUQV9NQVhfU0VDX0NPVU5UICogQVRBX1NFQ1RPUl9TSVpF KQorI2RlZmluZQlBVEFfTEJBXzI3XzI0X01BU0sJCTB4MGYKKworI2RlZmluZSBBVEFQSV9QQUNL RVRfU0laRQkJMTIKKyNkZWZpbmUgQVRBUElfQkxPQ0tfU0laRQkJMjA0OAorCisjZGVmaW5lCUFU QV9XUklURV9NVUxfQ09NUExFVEUJCTAKKyNkZWZpbmUJQVRBX1JFQURfTVVMX0NPTVBMRVRFCQkw CisKKyNkZWZpbmUJQVRBX0RNQV9NQVhfUFJEX0NPVU5UCQk2NTUzNgorI2RlZmluZQlBVEFfRE1B X1BSRFRfU0laRQkJNjU1MzYKKyNkZWZpbmUJQVRBX0RNQV9QUkRUX0VPVAkJMHg4MDAwCisKKyNk ZWZpbmUJQVRBX0RNQV9SRUFECQkJKDApCisjZGVmaW5lCUFUQV9ETUFfV1JJVEUJCQkoMSkKKwor I2RlZmluZQlBVEFfV19ETUEyCQkJMHgwNAorI2RlZmluZQlBVEFfTU9ERV9QSU80CQkJMHgwMgor CisjZGVmaW5lCUFUQV9BVEFQSV82CQkJMHg0MAorCisjZGVmaW5lIEFUQVBJX01BR0lDX0xTQgkJ CTB4MTQKKyNkZWZpbmUgQVRBUElfTUFHSUNfTVNCCQkJMHhlYgorCisvKiBQQ0kgQkFSUyBpZHgg Ki8KKyNkZWZpbmUJUENJX0JBUjAJCQkwCisjZGVmaW5lCVBDSV9CQVIxCQkJMQorI2RlZmluZQlQ Q0lfQkFSMgkJCTIKKyNkZWZpbmUJUENJX0JBUjMJCQkzCisjZGVmaW5lCVBDSV9CQVI0CQkJNAor CisvKiBBVEEgQnVzIE1hc3RlciBSZWdpc3RlciBPZmZzZXRzIGFuZCBWYWx1ZXMqLworI2RlZmlu ZQlBVEFfQk1DTURfWF9SRUcJCQkweDAwCisjZGVmaW5lCUFUQV9CTUNNRF9ZX1JFRwkJCTB4MDgK KyNkZWZpbmUJCUFUQV9CTUNNRF9TVEFSVF9TVE9QCTB4MDEKKyNkZWZpbmUJCUFUQV9CTUNNRF9X UklURV9SRUFECTB4MDgKKworI2RlZmluZQlBVEFfQk1TVEFUX1hfUkVHCQkweDAyCisjZGVmaW5l CUFUQV9CTVNUQVRfWV9SRUcJCTB4MEEKKyNkZWZpbmUJCUFUQV9CTVNUQVRfQUNUSVZFCTB4MDEK KyNkZWZpbmUJCUFUQV9CTVNUQVRfRVJST1IJMHgwMgorI2RlZmluZQkJQVRBX0JNU1RBVF9JTlRF UlJVUFQJMHgwNAorI2RlZmluZQkJQVRBX0JNU1RBVF9NQVNLCQkweDA3CisjZGVmaW5lCQlBVEFf Qk1TVEFUX0RNQV9NQVNURVIJMHgyMAorI2RlZmluZQkJQVRBX0JNU1RBVF9ETUFfU0xBVkUJMHg0 MAorI2RlZmluZQkJQVRBX0JNU1RBVF9ETUFfU0lNUExFWAkweDgwCisKKyNkZWZpbmUJQVRBX0JN UFJEVF9YX1JFRwkJMHgwNAorI2RlZmluZQlBVEFfQk1QUkRUX1lfUkVHCQkweDBDCisKKy8qIFRo ZSBDb21tYW5kIEJsb2NrIHJlZ2lzdGVycyAqLworI2RlZmluZQlBVEFfREFUQV9SRUcJCQkweDAw CisjZGVmaW5lCUFUQV9FUlJPUl9SRUcJCQkweDAxCisjZGVmaW5lCQlBVEFfRV9JTEkJCTB4MDEg ICAgLyogaWxsZWdhbCBsZW5ndGggKi8KKyNkZWZpbmUgICAgICAgICBBVEFfRV9BQk9SVCAgICAg ICAgICAgICAweDA0ICAgIC8qIGNvbW1hbmQgYWJvcnRlZCAqLworI2RlZmluZQlBVEFfRkVBVFVS RVNfUkVHCQkweDAxCisjZGVmaW5lCUFUQV9TRUNDT1VOVF9SRUcJCTB4MDIKKyNkZWZpbmUJCUFU QV9JX0NNRAkJMHgwMSAgICAvKiBjbWQgKDEpIHwgZGF0YSAoMCkgKi8KKyNkZWZpbmUJCUFUQV9J X0lOCQkweDAyICAgIC8qIHJlYWQgKDEpIHwgd3JpdGUgKDApICovCisjZGVmaW5lCQlBVEFfSV9S RUxFQVNFCQkweDA0ICAgIC8qIHJlbGVhc2VkIGJ1cyAoMSkgKi8KKyNkZWZpbmUJQVRBX0xCQV9M T1dfUkVHCQkJMHgwMworI2RlZmluZQlBVEFfTEJBX01JRF9SRUcJCQkweDA0CisjZGVmaW5lCUFU QV9MQkFfSElHSF9SRUcJCTB4MDUKKyNkZWZpbmUJQVRBX0hEREVWU0VMX1JFRwkJMHgwNgorI2Rl ZmluZQkJQVRBX0RfTEJBCQkweDQwICAgIC8qIHVzZSBMQkEgYWRkcmVzc2luZyAqLworI2RlZmlu ZQkJQVRBX0RfSUJNCQkweGEwICAgIC8qIDUxMiBieXRlIHNlY3RvcnMsIEVDQyAqLworI2RlZmlu ZQlBVEFfQ09NTUFORF9SRUcJCQkweDA3CisjZGVmaW5lCUFUQV9TVEFUVVNfUkVHCQkJMHgwNwor I2RlZmluZQkJQVRBX1NfQlVTWQkJMHg4MCAgICAvKiBidXN5ICovCisjZGVmaW5lCQlBVEFfU19S RUFEWQkJMHg0MCAgICAvKiBkcml2ZSByZWFkeSAqLworI2RlZmluZQkJQVRBX1NfRFdGCQkweDIw ICAgIC8qIGRyaXZlIHdyaXRlIGZhdWx0ICovCisjZGVmaW5lCQlBVEFfU19EUlEJCTB4MDggICAg LyogZGF0YSByZXF1ZXN0ICovCisjZGVmaW5lCQlBVEFfU19EU0MJCTB4MTAgICAgLyogZHJpdmUg c2VlayBjb21wbGV0ZWQgKi8KKyNkZWZpbmUJCUFUQV9TX0VSUk9SCQkweDAxICAgIC8qIGVycm9y ICovCisKKy8qIFRoZSBDb250cm9sIEJsb2NrIHJlZ2lzdGVycyAqLworI2RlZmluZQlBVEFfQ09O VFJPTF9SRUcJCQkweDBDCisjZGVmaW5lCQlBVEFfQV9JRFMJCTB4MDIgICAgLyogZGlzYWJsZSBp bnRlcnJ1cHRzICovCisjZGVmaW5lCQlBVEFfQV9SRVNFVAkJMHgwNCAgICAvKiBSRVNFVCBjb250 cm9sbGVyICovCisjZGVmaW5lCUFUQV9BTFRTVEFUVVNfUkVHCQkweDBDCisKKyNkZWZpbmUgUkVB RF9UT0MJCQkweDQzCisKK3N0cnVjdCBhdGFfY2hhbm5lbDsKKwordHlwZWRlZiB2b2lkICgqYXRh X2ludHJfZnVuY190KSh2b2lkICphcmcpOwordHlwZWRlZiB2b2lkICgqYXRhX3Bpb19lbmRfdHJh bnNmZXJfZnVuY190KShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpOworCit0eXBlZGVmIGVu dW0geworCUFUQV9IRCwKKwlBVEFQSV9DRCwKKwlBVEFfRFJJVkVfRU1QVFkKK30gYXRhX2RyaXZl X3R5cGU7CisKKy8qCisgKiBBVEEgZGF0YSBzdHJ1Y3R1cmVzCisgKi8KK3N0cnVjdCBhdGFfcGlv X2J1ZmZlciB7CisJdWludDhfdCAgZGF0YVtBVEFfSU5CVUZfU0laRV07CisJdWludDY0X3QgY3Vy cmVudF9wb3M7Cit9OworCitzdHJ1Y3QgYXRhX3Bpb19zZXR1cCB7CisJdWludDhfdCB1c2Vfd29y ZDsKKwlzdHJ1Y3QgYmxvY2tpZl9yZXEgYnJlcTsKKwlzdHJ1Y3QgYXRhX3Bpb19idWZmZXIgcGlv X2J1ZmZlcjsKKworCXVpbnQ2NF90IHNpemVfdHJhbnNmZXI7CisJYXRhX3Bpb19lbmRfdHJhbnNm ZXJfZnVuY190IGVuZF90cmFuc2ZlcjsKKwlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWw7Cit9 OworCitzdHJ1Y3QgcHJkX2VudHJ5IHsKKwl1aW50MzJfdCBwcmRfYWRkcmVzczsKKwl1aW50MTZf dCBieXRlX2NvdW50OworCXVpbnQxNl90IHZlbmRvcl9zcGVjaWZpYzsKK30gX19hdHRyaWJ1dGVf XygoX19wYWNrZWRfXykpOworCitzdHJ1Y3QgcGNpX2F0YV9kbWFfdHJhbnNhY3Rpb24geworCXN0 cnVjdCBibG9ja2lmX3JlcSBicmVxOworCXVpbnQ4X3QgaXNfZW90OworCXVpbnQ4X3Qgc3RhcnRl ZDsKKwl1aW50NjRfdCBvZmZzZXQ7CisJdWludDY0X3QgbmJ5dGVzOworCXVpbnQ4X3QgIG9wX2Rp cjsKK307CisKK3N0cnVjdCBhdGFfZHJpdmUgeworCS8qIEFUQSBEcml2ZSBSZWdpc3RlcnMgKi8K KworCS8qIHRoZSBpbyBwb3J0IHJhbmdlIHNpemUgPSAweDA4ICovCisJdWludDhfdCBkYXRhOwor CXVpbnQ4X3QgZXJyb3I7CisJdWludDhfdCBmZWF0dXJlczsKKwl1aW50OF90IHNlY2NvdW50Owor CXVpbnQ4X3QgbGJhX2xvdzsKKwl1aW50OF90IGxiYV9taWQ7CisJdWludDhfdCBsYmFfaGlnaDsK Kwl1aW50OF90IGhkZGV2c2VsOworCXVpbnQ4X3QgY29tbWFuZDsKKwl1aW50OF90IHN0YXR1czsK KworCS8qIHRoZSBhbHRwb3J0IHJhbmdlIHNpemUgPSAweDAxICovCisJdWludDhfdCBhbHRzdGF0 dXM7CisKKwlhdGFfZHJpdmVfdHlwZSB0eXBlOworCXVpbnQxNl90IGJ5dGVfY291bnQ7CisJdWlu dDY0X3Qgb2Zmc2V0OworCXVpbnQ2NF90IGNvdW50OworCXVpbnQ4X3QgaXJxX2Rpc2FibGVkOwor CXN0cnVjdCBibG9ja2lmX2N0eHQgKmJjdHh0OworCXN0cnVjdCBhdGFfcGlvX3NldHVwIHBpb19z ZXR1cDsKK307CisKK3N0cnVjdCBhdGFfY2hhbm5lbCB7CisJLyogQVRBIENoYW5uZWwgU3RhdGUg VmFyaWFibGVzICovCisJdWludDMyX3Qgc2l6ZTsKKwl1aW50OF90IGludGVyZmFjZTsKKwl1aW50 OF90IGRyaXZlOworCXVpbnQ4X3QgaGFzX3NsYXZlOworCXVpbnQ4X3QgbW9kZTsKKwl1aW50OF90 IHNlY3RvcnNfcGVyX2Jsb2NrOworCXVpbnQ4X3QgdXNlXzE2Yml0OworCisJc3RydWN0IGJsb2Nr aWZfcmVxIGZsdXNoX2JyZXE7CisKKwlzdHJ1Y3QgYXRhX2RyaXZlIGRyaXZlc1tBVEFfRFJJVkVT XTsKKworCXN0cnVjdCB2bWN0eCAqdm1fY3R4OworCXZvaWQgKnByX3NjOworCisJLyogSW50ZXJy dXB0cyBjYWxsYmFja3MgKFBDSSBvciBMUEMpICovCisJYXRhX2ludHJfZnVuY190IGludHJfYXNz ZXJ0OworCWF0YV9pbnRyX2Z1bmNfdCBpbnRyX2RlYXNzZXJ0OworCXVpbnQ4X3QgbGludHI7Cit9 OworCitzdHJ1Y3QgcGNpX2F0YV9zb2Z0YyB7CisJLyogQVRBIEJ1cyBNYXN0ZXIgUmVnaXN0ZXIg Ki8KKwl1aW50OF90ICBjbWRbQVRBX0NIQU5ORUxTXTsKKwl1aW50OF90ICBzdGF0W0FUQV9DSEFO TkVMU107CisJdWludDMyX3QgcHJkdFtBVEFfQ0hBTk5FTFNdOworCisJc3RydWN0IHBjaV9hdGFf ZG1hX3RyYW5zYWN0aW9uIGRtYV90cmFuc2FjdGlvbnNbQVRBX0NIQU5ORUxTXTsKKworCXN0cnVj dCBwY2lfZGV2aW5zdCAqYXNjX3BpOworCXN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbHNbQVRB X0NIQU5ORUxTXTsKK307CisKK3N0cnVjdCBscGNfYXRhX3NvZnRjIHsKKwlzdHJ1Y3QgYXRhX2No YW5uZWwgKmNoYW5uZWw7CisJaW50IGlycTsKKwlpbnQgYmFzZV9hZGRyX2lvOworCWludCBiYXNl X2FkZHJfaW9jdGw7CisJY29uc3QgY2hhciAqbmFtZV9pbzsKKwljb25zdCBjaGFyICpuYW1lX2lv Y3RsOworfTsKKworCisvKgorICogQVRBIG1vZHVsZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAq Lworc3RhdGljIHZvaWQKK2F0YV9pcnFfcmFpc2Uoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVs KTsKK3N0YXRpYyB2b2lkCithdGFfaXJxX2xvd2VyKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5l bCk7CisKK3N0YXRpYyBhdGFfZHJpdmVfdHlwZQorYXRhX2RyaXZlX3R5cGVfYnlfbmFtZShjaGFy ICpkcml2ZV9uYW1lKTsKK3N0YXRpYyBpbnQKK2F0YV9wYXJzZV9wYXJhbXMoY29uc3QgY2hhciAq b3B0cywgaW50ICpjaGFubmVsLCBjaGFyICpkaXNrX21hc3RlciwKKwkJIGNoYXIgKmRpc2tfc2xh dmUsIHVpbnQ4X3QgKmhhc19zbGF2ZSk7CitzdGF0aWMgc3RydWN0IGF0YV9jaGFubmVsICoKK2F0 YV9pbml0KHN0cnVjdCB2bWN0eCAqY3R4LCBhdGFfaW50cl9mdW5jX3QgaW50cl9hc3NlcnQsIGF0 YV9pbnRyX2Z1bmNfdCBpbnRyX2RlYXNzZXJ0LCB2b2lkICpwcl9zYywKKwkgY29uc3QgY2hhciAq b3B0cywgdWludDhfdCBpc2FfYXQpOworCitzdGF0aWMgdm9pZAorYXRhX3Nyc3Qoc3RydWN0IGF0 YV9jaGFubmVsICpjaGFubmVsKTsKK3N0YXRpYyB2b2lkCithdGFfaW5pdGlhbGl6ZV9pZGVudChz dHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpOworc3RhdGljIHZvaWQKK2F0YV9hdGFwaV9pbml0 aWFsaXplX2lkZW50KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7CisKK3N0YXRpYyBpbnQK K2F0YV9jaGFubmVsX2lzX29rKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCwgdWludDhfdCBj aCk7CitzdGF0aWMgaW50CithdGFfc2VsZWN0X2RyaXZlX2lzX29rKHN0cnVjdCBhdGFfY2hhbm5l bCAqY2hhbm5lbCk7CitzdGF0aWMgdm9pZAorYXRhX3NldF9zdGF0dXNfb2soc3RydWN0IGF0YV9j aGFubmVsICpjaGFubmVsKTsKK3N0YXRpYyB2b2lkCithdGFfc2V0X2RhdGFfYmxvY2tfcmVhZHko c3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKTsKK3N0YXRpYyB2b2lkCithdGFfY29tbWFuZF9h Ym9ydGVkKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7CitzdGF0aWMgdm9pZAorYXRhX3Nl dF9zaWduYXR1cmUoc3RydWN0IGF0YV9kcml2ZSAqZHJpdmUpOworCitzdGF0aWMgdm9pZAorYXRh X2FkZHJlc3Npbmdfc2VjX2NvdW50KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCwgdWludDE2 X3QgKnBfc2VjdG9yX2NvdW50KTsKK3N0YXRpYyB2b2lkCithdGFfYWRkcmVzc2luZ18yOF9sYmEo c3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsLCB1aW50MzJfdCAqcF9sYmFfYWRkcmVzcyk7CisK K3N0YXRpYyB2b2lkCithdGFfaW5pdF9ibG9ja19yZXF1ZXN0KHN0cnVjdCBibG9ja2lmX3JlcSAq YnJlcSwgc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsLAorCQkgICAgICAgdWludDY0X3Qgb2Zm c2V0LCB1aW50NjRfdCBuYnl0ZXMsIHZvaWQgKmJ1ZmZlcik7CitzdGF0aWMgdm9pZAorYXRhX2hh bmRsZV9ibG9ja19yZXF1ZXN0KHN0cnVjdCBibG9ja2lmX3JlcSAqcmVxLCBpbnQgZXJyKTsKKwor c3RhdGljIHZvaWQKK2F0YV9waW9fZG9fdHJhbnNmZXIoc3RydWN0IGF0YV9waW9fc2V0dXAgKnBp b19zZXR1cCwgdWludDY0X3Qgc2l6ZV90cmFuc2ZlciwKKwkJICAgICBhdGFfcGlvX2VuZF90cmFu c2Zlcl9mdW5jX3QgZW5kX3RyYW5zZmVyLCB1aW50OF90IHVzZV93b3JkKTsKK3N0YXRpYyBpbnQK K2F0YV9waW9faW5fcHJvZ3Jlc3Moc3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCk7Citz dGF0aWMgdWludDhfdCAqCithdGFfcGlvX2dldF9idWZmZXJfZGF0YShzdHJ1Y3QgYXRhX3Bpb19z ZXR1cCAqcGlvX3NldHVwKTsKK3N0YXRpYyB2b2lkCithdGFfcGlvX2NoZWNrX2VuZF90cmFuc2Zl cihzdHJ1Y3QgYXRhX3Bpb19zZXR1cCAqcGlvX3NldHVwKTsKK3N0YXRpYyB1aW50MzJfdAorYXRh X3Bpb19nZXRfdWludChzdHJ1Y3QgYXRhX3Bpb19zZXR1cCAqcGlvX3NldHVwKTsKK3N0YXRpYyB2 b2lkCithdGFfcGlvX3B1dF91aW50KHN0cnVjdCBhdGFfcGlvX3NldHVwICpwaW9fc2V0dXAsIHVp bnQzMl90IHdyaXRlX3ZhbHVlKTsKK3N0YXRpYyB2b2lkCithdGFfcGlvX2dlbmVyaWNfZW5kX3Ry YW5zZmVyKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7CisKK3N0YXRpYyB2b2lkCithdGFf cmVhZF9tdWx0aXBsZV9ibG9ja19kb25lKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7Citz dGF0aWMgdm9pZAorYXRhX3dyaXRlX211bHRpcGxlX2Jsb2NrX2RvbmUoc3RydWN0IGF0YV9jaGFu bmVsICpjaGFubmVsKTsKKworc3RhdGljIHZvaWQKK2F0YV9hdGFwaV9oYW5kbGVfcmVhZF9kb25l KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7CisKK3N0YXRpYyB2b2lkCithdGFfaGFuZGxl X2lkZW50aWZ5KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7CitzdGF0aWMgdm9pZAorYXRh X2hhbmRsZV9zZXRmZWF0dXJlcyhzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpOworc3RhdGlj IHZvaWQKK2F0YV9oYW5kbGVfc2V0X211bHRpKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7 CitzdGF0aWMgdm9pZAorYXRhX2hhbmRsZV9yZWFkX211bHRpcGxlKHN0cnVjdCBhdGFfY2hhbm5l bCAqY2hhbm5lbCk7CitzdGF0aWMgdm9pZAorYXRhX2hhbmRsZV9yZWFkX3ZlcmlmeShzdHJ1Y3Qg YXRhX2NoYW5uZWwgKmNoYW5uZWwpOworc3RhdGljIHZvaWQKK2F0YV9oYW5kbGVfd3JpdGVfbXVs dGlwbGUoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKTsKK3N0YXRpYyB2b2lkCithdGFfaGFu ZGxlX2RtYShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwsIHVpbnQ4X3Qgb3BfZGlyKTsKK3N0 YXRpYyB2b2lkCithdGFfaGFuZGxlX2ZsdXNoY2FjaGUoc3RydWN0IGF0YV9jaGFubmVsICpjaGFu bmVsKTsKK3N0YXRpYyB2b2lkCithdGFfaGFuZGxlX3NlZWsoc3RydWN0IGF0YV9jaGFubmVsICpj aGFubmVsKTsKK3N0YXRpYyB2b2lkCithdGFfaGFuZGxlX2F0YXBpX2lkZW50aWZ5KHN0cnVjdCBh dGFfY2hhbm5lbCAqY2hhbm5lbCk7CitzdGF0aWMgdm9pZAorYXRhX2hhbmRsZV9wYWNrZXRfY21k KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7CitzdGF0aWMgdm9pZAorYXRhX2hhbmRsZV9j bWQoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsLCB1aW50OF90IGNtZCk7CisKK3N0YXRpYyB2 b2lkCithdGFfYXRhcGlfZGF0YV9yZXF1ZXN0KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7 CitzdGF0aWMgdm9pZAorYXRhX2F0YXBpX2NtZF9kb25lKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hh bm5lbCk7CitzdGF0aWMgdm9pZAorYXRhX2F0YXBpX2hhbmRsZV9pbnF1aXJ5KHN0cnVjdCBhdGFf Y2hhbm5lbCAqY2hhbm5lbCwgdWludDhfdCAqcGFja2V0KTsKK3N0YXRpYyB2b2lkCithdGFfYXRh cGlfaGFuZGxlX3JlYWRfY2FwYWNpdHkoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsLCB1aW50 OF90ICpwYWNrZXQpOworc3RhdGljIHZvaWQKK2F0YV9hdGFwaV9oYW5kbGVfcmVhZF90b2Moc3Ry dWN0IGF0YV9jaGFubmVsICpjaGFubmVsLCB1aW50OF90ICpwYWNrZXQpOworc3RhdGljIHZvaWQK K2F0YV9hdGFwaV9oYW5kbGVfcmVhZChzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwsIHVpbnQ4 X3QgKnBhY2tldCk7CitzdGF0aWMgdm9pZAorYXRhX2F0YXBpX2NtZChzdHJ1Y3QgYXRhX2NoYW5u ZWwgKmNoYW5uZWwpOworCitzdGF0aWMgdWludDY0X3QKK2F0YV9jb21tYW5kX2Jsb2NrX3JlYWQo c3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsLCB1aW50NjRfdCBvZmZzZXQpOworc3RhdGljIHZv aWQKK2F0YV9jb21tYW5kX2Jsb2NrX3dyaXRlKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCwK KwkJdWludDY0X3Qgb2Zmc2V0LCBpbnQgc2l6ZSwgdWludDY0X3QgdmFsdWUpOworCitzdGF0aWMg dWludDY0X3QKK2F0YV9hbHRzdGF0dXNfcmVhZChzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwp Oworc3RhdGljIHZvaWQKK2F0YV9jb250cm9sX3dyaXRlKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hh bm5lbCwKKwkJaW50IHNpemUsIHVpbnQ2NF90IHZhbHVlKTsKKworLyoKKyAqIFBDSSBBVEEgZnVu Y3Rpb24gZGVjbGFyYXRpb25zCisgKi8KK3N0YXRpYyB2b2lkCitwY2lfYXRhX2ludHJfYXNzZXJ0 KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZAorcGNpX2F0YV9pbnRyX2RlYXNzZXJ0KHZvaWQgKmFy Zyk7CisKK3N0YXRpYyBpbnQKK3BjaV9hdGFfcGFyc2VfcGFyYW1zKGNvbnN0IGNoYXIgKm9wdHMs IGNoYXIgKm9wdDAsIGNoYXIgKm9wdDEsIHVpbnQ4X3QgKm5yX2NoYW5uZWxzKTsKK3N0YXRpYyBp bnQKK3BjaV9hdGFfaW5pdChzdHJ1Y3Qgdm1jdHggKmN0eCwgc3RydWN0IHBjaV9kZXZpbnN0ICpw aSwgY2hhciAqb3B0cywgaW50IGF0YXBpKTsKK3N0YXRpYyBpbnQKK3BjaV9hdGFfaGRfaW5pdChz dHJ1Y3Qgdm1jdHggKmN0eCwgc3RydWN0IHBjaV9kZXZpbnN0ICpwaSwgY2hhciAqb3B0cyk7CisK K3N0YXRpYyB2b2lkCitwY2lfYXRhX2RtYV9zdGFydChzdHJ1Y3QgcGNpX2F0YV9zb2Z0YyAqc2Ms IHVpbnQ4X3QgY2gpOworc3RhdGljIHZvaWQKK3BjaV9hdGFfZG1hX3N0b3Aoc3RydWN0IHBjaV9h dGFfc29mdGMgKnNjLCB1aW50OF90IGNoKTsKK3N0YXRpYyB1aW50NjRfdAorcGNpX2F0YV9idXNf bWFzdGVyX3JlYWQoc3RydWN0IHBjaV9hdGFfc29mdGMgKnNjLCB1aW50NjRfdCBvZmZzZXQpOwor c3RhdGljIHZvaWQKK3BjaV9hdGFfYnVzX21hc3Rlcl93cml0ZShzdHJ1Y3QgcGNpX2F0YV9zb2Z0 YyAqc2MsCisJCXVpbnQ2NF90IG9mZnNldCwgaW50IHNpemUsIHVpbnQ2NF90IHZhbHVlKTsKKwor c3RhdGljIHVpbnQ2NF90CitwY2lfYXRhX3JlYWQoc3RydWN0IHZtY3R4ICpjdHgsIGludCB2Y3B1 LCBzdHJ1Y3QgcGNpX2Rldmluc3QgKnBpLCBpbnQgYmFyaWR4LAorCQl1aW50NjRfdCBvZmZzZXQs IGludCBzaXplKTsKK3N0YXRpYyB2b2lkCitwY2lfYXRhX3dyaXRlKHN0cnVjdCB2bWN0eCAqY3R4 LCBpbnQgdmNwdSwgc3RydWN0IHBjaV9kZXZpbnN0ICpwaSwKKwkJaW50IGJhcmlkeCwgdWludDY0 X3Qgb2Zmc2V0LCBpbnQgc2l6ZSwgdWludDY0X3QgdmFsdWUpOworCisvKgorICogTFBDIEFUQSBm dW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAqLworc3RhdGljIHZvaWQKK2xwY19hdGFfaW50cl9hc3Nl cnQodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkCitscGNfYXRhX2ludHJfZGVhc3NlcnQodm9pZCAq YXJnKTsKKworaW50CitscGNfYXRhX2luaXQoc3RydWN0IHZtY3R4ICpjdHgsIGNvbnN0IGNoYXIg Km9wdHMpOworCitzdGF0aWMgaW50CitscGNfYXRhX2lvX2hhbmRsZXIoc3RydWN0IHZtY3R4ICpj dHgsIGludCB2Y3B1LAorCQkgICBpbnQgaW4sIGludCBwb3J0LCBpbnQgYnl0ZXMsIHVpbnQzMl90 ICplYXgsIHZvaWQgKmFyZyk7CitzdGF0aWMgaW50CitscGNfYXRhX2lvY3RsX2hhbmRsZXIoc3Ry dWN0IHZtY3R4ICpjdHgsIGludCB2Y3B1LAorCQkgICBpbnQgaW4sIGludCBwb3J0LCBpbnQgYnl0 ZXMsIHVpbnQzMl90ICplYXgsIHZvaWQgKmFyZyk7CisKKworLyoKKyAqIEFUQSBnbG9iYWwgZGF0 YQorICovCitzdHJ1Y3QgcGNpX2RldmVtdSBwY2lfZGVfYXRhX2hkID0geworCS5wZV9lbXUgPQki YXRhLWhkIiwKKwkucGVfaW5pdCA9CXBjaV9hdGFfaGRfaW5pdCwKKwkucGVfYmFyd3JpdGUgPQlw Y2lfYXRhX3dyaXRlLAorCS5wZV9iYXJyZWFkID0JcGNpX2F0YV9yZWFkCit9OworUENJX0VNVUxf U0VUKHBjaV9kZV9hdGFfaGQpOworCitzdGF0aWMgc3RydWN0IGxwY19hdGFfc29mdGMgbHBjX2F0 YV9zY1tBVEFfQ0hBTk5FTFNdID0geworCXtOVUxMLCAxNCwgMHgxZjAsIDB4M2Y2LCAiYXRhMF9p b3BvcnQiLCAiYXRhMF9pb2N0bHBvcnQifSwKKwl7TlVMTCwgMTUsIDB4MTcwLCAweDM3NiwgImF0 YTFfaW9wb3J0IiwgImF0YTFfaW9jdGxwb3J0In0KK307CisKKworLyoKKyAqIEFUQSBtb2R1bGUg ZnVuY3Rpb24gZGVmaW5pdGlvbnMKKyAqLworc3RhdGljIHZvaWQKK2F0YV9pcnFfcmFpc2Uoc3Ry dWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQoreworCXVpbnQ4X3QgaXJxX2Rpc2FibGVkOworCisJ aXJxX2Rpc2FibGVkID0gY2hhbm5lbC0+ZHJpdmVzW2NoYW5uZWwtPmRyaXZlXS5pcnFfZGlzYWJs ZWQ7CisKKwlpZiAoIWlycV9kaXNhYmxlZCAmJiAhY2hhbm5lbC0+bGludHIpIHsKKwkJY2hhbm5l bC0+bGludHIgPSAxOworCQljaGFubmVsLT5pbnRyX2Fzc2VydChjaGFubmVsLT5wcl9zYyk7CisJ fQorCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX2lycV9sb3dlcihzdHJ1Y3QgYXRh X2NoYW5uZWwgKmNoYW5uZWwpCit7CisJaWYgKGNoYW5uZWwtPmxpbnRyKSB7CisJCWNoYW5uZWwt PmxpbnRyID0gMDsKKwkJY2hhbm5lbC0+aW50cl9kZWFzc2VydChjaGFubmVsLT5wcl9zYyk7CisJ fQorCisJcmV0dXJuOworfQorCitzdGF0aWMgYXRhX2RyaXZlX3R5cGUKK2F0YV9kcml2ZV90eXBl X2J5X25hbWUoY2hhciAqZHJpdmVfbmFtZSkKK3sKKwlpbnQgaSwgbGVuOworCWNoYXIgKmV4dCA9 IE5VTEw7CisKKwlpZiAoIWRyaXZlX25hbWUpCisJCXJldHVybiBBVEFfRFJJVkVfRU1QVFk7CisK KwlsZW4gPSBzdHJsZW4oZHJpdmVfbmFtZSk7CisKKwlmb3IgKGkgPSBsZW4gLSAxOyBpID49IDA7 IGktLSkgeworCQlpZiAoZHJpdmVfbmFtZVtpXSA9PSAnLicpIHsKKwkJCWV4dCA9IGRyaXZlX25h bWUgKyBpICsgMTsKKwkJCWlmIChzdHJjbXAoZXh0LCAiaXNvIikgPT0gMCkKKwkJCQlyZXR1cm4g QVRBUElfQ0Q7CisJCQlicmVhazsKKwkJfQorCX0KKworCXJldHVybiBBVEFfSEQ7Cit9CisKK3N0 YXRpYyBpbnQKK2F0YV9wYXJzZV9wYXJhbXMoY29uc3QgY2hhciAqb3B0cywgaW50ICpjaGFubmVs LCBjaGFyICpkaXNrX21hc3RlciwKKwkJIGNoYXIgKmRpc2tfc2xhdmUsIHVpbnQ4X3QgKmhhc19z bGF2ZSkKK3sKKwl1aW50OF90IGxlbjsKKwljaGFyIHBhcmFtWzY0XTsKKwljaGFyICpwYXJhbXNb M107CisJdWludDhfdCBpLCBqOworCWludCBjaDsKKworCXBhcmFtc1swXSA9IE5VTEw7CisJcGFy YW1zWzFdID0gTlVMTDsKKwlwYXJhbXNbMl0gPSBOVUxMOworCisJaWYgKCFvcHRzKSB7CisJCWRw cmludChMT0dfRVJSLCAiYXRhX3BhcnNlX3BhcmFtczogb3B0cyBzaG91bGQgYmUgbGlrZTogWCxN QVNURVJbLFNMQVZFXVxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlsZW4gPSBzdHJsZW4ob3B0 cyk7CisJaWYgKGxlbiA+PSA2NCkgeworCQlkcHJpbnQoTE9HX0VSUiwgImF0YV9wYXJzZV9wYXJh bXM6IEFUQSBzdHJpbmcgcGFyYW0gdG9vIGJpZ1xuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlz dHJjcHkocGFyYW0sIG9wdHMpOworCisJaiA9IDA7CisJcGFyYW1zW2pdID0gcGFyYW07CisJZm9y IChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisJCWlmIChwYXJhbVtpXSA9PSAnLCcpIHsKKwkJCWor KzsKKwkJCWlmIChqID4gMikgeworCQkJCWRwcmludChMT0dfRVJSLCAiYXRhX3BhcnNlX3BhcmFt czogdG8gbWFueSBwYXJhbXNcbiIpOworCQkJCXJldHVybiAtMTsKKwkJCX0KKwkJCXBhcmFtW2ld ID0gJ1wwJzsKKwkJCXBhcmFtc1tqXSA9IHBhcmFtICsgaSArIDE7CisJCX0KKwl9CisKKwljaCA9 IGF0b2kocGFyYW1zWzBdKTsKKwlpZiAoY2ggIT0gQVRBX1ggJiYgY2ggIT0gQVRBX1kpIHsKKwkJ ZHByaW50KExPR19FUlIsICJhdGFfcGFyc2VfcGFyYW1zOiB0aGUgY2hhbm5lbCBzaG91bGQgYmUg MCBvciAxXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwkqY2hhbm5lbCA9IGNoOworCisJaWYgKHBh cmFtc1sxXSA9PSBOVUxMIHx8IHN0cmxlbihwYXJhbXNbMV0pID49IDMyKSB7CisJCWRwcmludChM T0dfRVJSLCAiYXRhX3BhcnNlX3BhcmFtczogdGhlIG5hbWUgb2YgTUFTVEVSIHNob3VsZCBiZSBn aXZlblxuIik7CisJCXJldHVybiAtMTsKKwl9CisJc3RyY3B5KGRpc2tfbWFzdGVyLCBwYXJhbXNb MV0pOworCisJaWYgKHBhcmFtc1syXSAhPSBOVUxMICYmIHN0cmxlbihwYXJhbXNbMl0pIDwgMzIp IHsKKwkJc3RyY3B5KGRpc2tfc2xhdmUsICBwYXJhbXNbMl0pOworCQkqaGFzX3NsYXZlID0gMTsK Kwl9CisKKwlyZXR1cm4gMDsKKworfQorCitzdGF0aWMgc3RydWN0IGF0YV9jaGFubmVsICoKK2F0 YV9pbml0KHN0cnVjdCB2bWN0eCAqY3R4LCBhdGFfaW50cl9mdW5jX3QgaW50cl9hc3NlcnQsIGF0 YV9pbnRyX2Z1bmNfdCBpbnRyX2RlYXNzZXJ0LCB2b2lkICpwcl9zYywKKwkgY29uc3QgY2hhciAq b3B0cywgdWludDhfdCBpc2FfYXQpCit7CisJY2hhciBiaWRlbnRbc2l6ZW9mKCJYWDpYOlg6WCIp XTsKKwlzdHJ1Y3QgYmxvY2tpZl9jdHh0ICpiY3R4dCA9IE5VTEwsICpiY3R4dF9zID0gTlVMTDsK KwlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwgPSBOVUxMOworCWludCByZXQ7CisJaW50IGNo X2F0YSA9IC0xOworCWNoYXIgZGlza19tYXN0ZXJbMzJdOworCWNoYXIgZGlza19zbGF2ZVszMl07 CisJdWludDhfdCBoYXNfc2xhdmUgPSAwOworCWF0YV9kcml2ZV90eXBlIG1hc3Rlcl90eXBlID0g QVRBX0RSSVZFX0VNUFRZOworCWF0YV9kcml2ZV90eXBlIHNsYXZlX3R5cGUgPSBBVEFfRFJJVkVf RU1QVFk7CisKKwlyZXQgPSBhdGFfcGFyc2VfcGFyYW1zKG9wdHMsICZjaF9hdGEsIGRpc2tfbWFz dGVyLCBkaXNrX3NsYXZlLCAmaGFzX3NsYXZlKTsKKwlpZiAocmV0ICE9IDApIHsKKwkJZHByaW50 KExPR19FUlIsICJhdGFfaW5pdDogc29tZSBlcnJvcnMgd2l0aCB0aGUgaW5wdXQgY2hlY2tpbmdc biIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2luaXQ6 IGNoX2F0YTogJWRcbiIsIGNoX2F0YSk7CisKKwkvKgorCSAqIEF0dGVtcHQgdG8gb3BlbiB0aGUg YmFja2luZyBpbWFnZXMuIFVzZSB0aGUKKwkgKiAiUENJL0lTQTpjaDpkcml2ZSIgZm9yIHRoZSBp ZGVudGlmaWVyIHN0cmluZy4KKwkgKi8KKwlzbnByaW50ZihiaWRlbnQsIHNpemVvZihiaWRlbnQp LCAiJWQ6JWQ6JWQiLCBpc2FfYXQsIGNoX2F0YSwgQVRBX01BU1RFUik7CisJYmN0eHQgPSBibG9j a2lmX29wZW4oZGlza19tYXN0ZXIsIGJpZGVudCk7CisJaWYgKGJjdHh0ID09IE5VTEwpIHsKKwkJ Z290byBvcGVuX2ZhaWw7CisJfQorCisJbWFzdGVyX3R5cGUgPSBhdGFfZHJpdmVfdHlwZV9ieV9u YW1lKGRpc2tfbWFzdGVyKTsKKwlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2luaXQ6IGRpc2tfbWFz dGVyOiAlcyB0eXBlOiAlc1xuIiwKKwkgICAgICAgZGlza19tYXN0ZXIsIG1hc3Rlcl90eXBlID09 IEFUQV9IRCA/ICJhdGFfaGQiIDogImF0YXBpX2NkIik7CisKKwlpZiAoaGFzX3NsYXZlKSB7CisJ CXNucHJpbnRmKGJpZGVudCwgc2l6ZW9mKGJpZGVudCksICIlZDolZDolZCIsIGlzYV9hdCwgY2hf YXRhLCBBVEFfU0xBVkUpOworCQliY3R4dF9zID0gYmxvY2tpZl9vcGVuKGRpc2tfc2xhdmUsIGJp ZGVudCk7CisJCWlmIChiY3R4dF9zID09IE5VTEwpIHsKKwkJCXJldCA9IDE7CisJCQlnb3RvIG9w ZW5fZmFpbDsKKwkJfQorCisJCXNsYXZlX3R5cGUgPSBhdGFfZHJpdmVfdHlwZV9ieV9uYW1lKGRp c2tfc2xhdmUpOworCQlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2luaXQ6IGRpc2tfc2xhdmU6ICVz IHR5cGU6ICVzXG4iLAorCQkgICAgICAgZGlza19zbGF2ZSwgc2xhdmVfdHlwZSA9PSBBVEFfSEQg PyAiYXRhX2hkIiA6ICJhdGFwaV9jZCIpOworCX0KKworCWRwcmludChMT0dfREVCVUcsICJhdGFf aW5pdDogb3B0czogJXMsIGF0YXBpOiAlZFxuIiwgb3B0cywgMCk7CisKKwljaGFubmVsID0gY2Fs bG9jKDEsIHNpemVvZihzdHJ1Y3QgYXRhX2NoYW5uZWwpKTsKKworCWNoYW5uZWwtPnZtX2N0eCA9 IGN0eDsKKwljaGFubmVsLT5pbnRlcmZhY2UgPSBjaF9hdGE7CisJY2hhbm5lbC0+aGFzX3NsYXZl ID0gaGFzX3NsYXZlOworCisJY2hhbm5lbC0+ZHJpdmVzW0FUQV9NQVNURVJdLnR5cGUgPSBtYXN0 ZXJfdHlwZTsKKwljaGFubmVsLT5kcml2ZXNbQVRBX1NMQVZFXS50eXBlID0gc2xhdmVfdHlwZTsK KworCWNoYW5uZWwtPmRyaXZlc1tBVEFfTUFTVEVSXS5iY3R4dCA9IGJjdHh0OworCWNoYW5uZWwt PmRyaXZlc1tBVEFfU0xBVkVdLmJjdHh0ICA9IGJjdHh0X3M7CisKKwljaGFubmVsLT5kcml2ZXNb QVRBX01BU1RFUl0ucGlvX3NldHVwLmNoYW5uZWwgPSBjaGFubmVsOworCWNoYW5uZWwtPmRyaXZl c1tBVEFfU0xBVkVdLnBpb19zZXR1cC5jaGFubmVsICA9IGNoYW5uZWw7CisKKwljaGFubmVsLT5p bnRyX2Fzc2VydCA9IGludHJfYXNzZXJ0OworCWNoYW5uZWwtPmludHJfZGVhc3NlcnQgPSBpbnRy X2RlYXNzZXJ0OworCWNoYW5uZWwtPnByX3NjID0gcHJfc2M7CisKKwlyZXR1cm4gY2hhbm5lbDsK Kworb3Blbl9mYWlsOgorCWlmIChyZXQpIHsKKwkJYmxvY2tpZl9jbG9zZShiY3R4dCk7CisJCWlm IChiY3R4dF9zICE9IE5VTEwpIHsKKwkJCWJsb2NraWZfY2xvc2UoYmN0eHRfcyk7CisJCX0KKwl9 CisKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK2F0YV9zcnN0KHN0cnVjdCBhdGFf Y2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2ZSA9IE5VTEw7CisJ aW50IGRldjsKKworCWRwcmludChMT0dfREVCVUcsICJhdGFfc3JzdDogU29mdHdhcmUgUmVzZXRc biIpOworCisJZm9yIChkZXYgPSAwOyBkZXYgPCBBVEFfRFJJVkVTOyBkZXYrKykgeworCQlkcml2 ZSA9ICZjaGFubmVsLT5kcml2ZXNbZGV2XTsKKworCQlpZiAoZHJpdmUtPnR5cGUgIT0gQVRBX0RS SVZFX0VNUFRZKSB7CisKKwkJCWRyaXZlLT5lcnJvciAgPSBBVEFfRV9JTEk7CisJCQlkcml2ZS0+ c3RhdHVzID0gQVRBX1NfUkVBRFk7CisKKwkJCWF0YV9zZXRfc2lnbmF0dXJlKGRyaXZlKTsKKwkJ fQorCX0KKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2F0YV9pbml0aWFsaXplX2lkZW50 KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2 ZSA9ICZjaGFubmVsLT5kcml2ZXNbY2hhbm5lbC0+ZHJpdmVdOworCXN0cnVjdCBibG9ja2lmX2N0 eHQgKmJjdHh0ID0gTlVMTDsKKwlzdHJ1Y3QgYXRhX3BhcmFtcyAqaWRlbnRfZGF0YSA9IE5VTEw7 CisJc3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCA9IE5VTEw7CisKKwl1aW50MTZfdCBj eWxpbmRlcnM7CisJdWludDhfdCAgaGVhZHM7CisJdWludDhfdCAgc2VjdG9yczsKKwl1aW50MzJf dCB0b3RhbF9zZWN0b3JzOworCisJYmN0eHQgPSBkcml2ZS0+YmN0eHQ7CisJcGlvX3NldHVwID0g JmRyaXZlLT5waW9fc2V0dXA7CisJaWRlbnRfZGF0YSA9IChzdHJ1Y3QgYXRhX3BhcmFtcyAqKWF0 YV9waW9fZ2V0X2J1ZmZlcl9kYXRhKHBpb19zZXR1cCk7CisKKwl0b3RhbF9zZWN0b3JzID0gYmxv Y2tpZl9zaXplKGJjdHh0KSAvIEFUQV9TRUNUT1JfU0laRTsKKworCW1lbXNldChpZGVudF9kYXRh LCAwLCBzaXplb2Yoc3RydWN0IGF0YV9wYXJhbXMpKTsKKworCS8qIE51bWJlciBvZiBzZWN0b3Jz IHBlciBibG9jayB1c2VkIGluIHJlYWQgLyB3cml0ZSBtdWx0aSBjb21tYW5kcyAqLworCWlkZW50 X2RhdGEtPnNlY3RvcnNfaW50ciB8PSAweDgwIDw8IDg7CisJaWRlbnRfZGF0YS0+c2VjdG9yc19p bnRyIHw9IEFUQV9TRUNUT1JTX1BFUl9CTE9DSzsKKworCS8qIFVzZSBETUEyIG1vZGUgKi8KKwlp ZGVudF9kYXRhLT5jYXBhYmlsaXRpZXMxIHw9IEFUQV9TVVBQT1JUX0RNQTsKKwlpZGVudF9kYXRh LT5td2RtYW1vZGVzIHw9IEFUQV9XX0RNQTI7CisKKwkvKiBVc2UgUElPNCBtb2RlICovCisJaWRl bnRfZGF0YS0+YXRhdmFsaWQgIHw9IEFUQV9GTEFHXzY0XzcwOworCWlkZW50X2RhdGEtPmFwaW9t b2RlcyB8PSBBVEFfTU9ERV9QSU80OworCisJLyogV2UgdXNlIDI4LWJpdCBMQkEgYWRkcmVzc2lu ZyBiZWNhdXNlIENIUyBhZGRyZXNzaW5nIGlzIG9ic29sZXRlIGluIEFUQS9BVEFQSSA2ICovCisJ aWRlbnRfZGF0YS0+Y2FwYWJpbGl0aWVzMSB8PSBBVEFfU1VQUE9SVF9MQkE7CisJaWRlbnRfZGF0 YS0+bGJhX3NpemVfMSA9IHRvdGFsX3NlY3RvcnM7CisJaWRlbnRfZGF0YS0+bGJhX3NpemVfMiA9 IHRvdGFsX3NlY3RvcnMgPj4gMTY7CisKKwkvKiBTdXBwb3J0IHdyaXRlLXJlYWQtdmVyaWZ5ICov CisJaWRlbnRfZGF0YS0+c3VwcG9ydDIgfD0gQVRBX1NVUFBPUlRfV1JJVEVSRUFEVkVSSUZZOwor CWlkZW50X2RhdGEtPmVuYWJsZWQyIHw9IEFUQV9TVVBQT1JUX1dSSVRFUkVBRFZFUklGWTsKKwor CS8qIFN1cHBvcnQgQVRBIEZMVVNIQ0FDSEUgKi8KKwlpZGVudF9kYXRhLT5zdXBwb3J0LmNvbW1h bmQyIHw9IEFUQV9TVVBQT1JUX0ZMVVNIQ0FDSEU7CisJaWRlbnRfZGF0YS0+ZW5hYmxlZC5jb21t YW5kMiB8PSBBVEFfU1VQUE9SVF9GTFVTSENBQ0hFOworCisJLyogTWFqb3IgdmVyc2lvbiBudW1i ZXIgPSBBVEEvQVRBUEktNiAqLworCWlkZW50X2RhdGEtPnZlcnNpb25fbWFqb3IgfD0gQVRBX0FU QVBJXzY7CisKKwkvKiBUaGlzIGluZm9ybWF0aW9uIGFyZSB1c2VkIG9ubHkgZm9yIHByaW50aW5n IHB1cnBvc2VzICovCisJYmxvY2tpZl9jaHMoYmN0eHQsICZjeWxpbmRlcnMsICZoZWFkcywgJnNl Y3RvcnMpOworCisJaWRlbnRfZGF0YS0+Y3lsaW5kZXJzID0gY3lsaW5kZXJzOworCWlkZW50X2Rh dGEtPmhlYWRzICAgICA9IGhlYWRzOworCWlkZW50X2RhdGEtPnNlY3RvcnMgICA9IHNlY3RvcnM7 CisKKwkvKiBNb2RlbDogQkhZVkUgQVRBIElERSBESVNLICovCisJbWVtY3B5KGlkZW50X2RhdGEt Pm1vZGVsLCAgICAiSEJWWSBFVEEgQURJIEVJREtTICAgICAgICAgICAgICAgICAgICAgICIsIDQw KTsKKwkvKiBTZXJpYWwgbnVtYmVyOiAxMjM0NTYgKi8KKwltZW1jcHkoaWRlbnRfZGF0YS0+c2Vy aWFsLCAgICIyMTQzNjUgICAgICAgICAgICAgICIsIDIwKTsKKwkvKiBGaXJtd2FyZSB2ZXJzaW9u OiAxLjAgKi8KKwltZW1jcHkoaWRlbnRfZGF0YS0+cmV2aXNpb24sICIuMSAwICAgICIsIDgpOwor CisJZHByaW50KExPR19ERUJVRywgImF0YV9pbml0aWFsaXplX2lkZW50OiBjaGFubmVsOiAlZCwg ZHJpdmU6ICVkIEM6ICVkLCBIOiAlZCwgUzogJWQsIHRvdGFsX3NlY3RvcnM6ICVkXG4iLAorCQkJ Y2hhbm5lbC0+aW50ZXJmYWNlLCBjaGFubmVsLT5kcml2ZSwgY3lsaW5kZXJzLCBoZWFkcywgc2Vj dG9ycywgdG90YWxfc2VjdG9ycyk7CisKKwlhdGFfcGlvX2RvX3RyYW5zZmVyKHBpb19zZXR1cCwg c2l6ZW9mKHN0cnVjdCBhdGFfcGFyYW1zKSwgYXRhX3Bpb19nZW5lcmljX2VuZF90cmFuc2Zlciwg Y2hhbm5lbC0+dXNlXzE2Yml0KTsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2F0YV9h dGFwaV9pbml0aWFsaXplX2lkZW50KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlz dHJ1Y3QgYXRhX2RyaXZlICpkcml2ZSA9ICZjaGFubmVsLT5kcml2ZXNbY2hhbm5lbC0+ZHJpdmVd OworCXN0cnVjdCBhdGFfcGFyYW1zICppZGVudF9kYXRhID0gTlVMTDsKKwlzdHJ1Y3QgYXRhX3Bp b19zZXR1cCAqcGlvX3NldHVwID0gTlVMTDsKKworCXBpb19zZXR1cCA9ICZkcml2ZS0+cGlvX3Nl dHVwOworCWlkZW50X2RhdGEgPSAoc3RydWN0IGF0YV9wYXJhbXMgKilhdGFfcGlvX2dldF9idWZm ZXJfZGF0YShwaW9fc2V0dXApOworCisJbWVtc2V0KGlkZW50X2RhdGEsIDAsIHNpemVvZihzdHJ1 Y3QgYXRhX3BhcmFtcykpOworCisJLyogQ0RST00gZGV2aWNlICovCisJaWRlbnRfZGF0YS0+Y29u ZmlnIHw9IChBVEFfUFJPVE9fQVRBUElfMTIgfCBBVEFfQVRBUElfVFlQRV9DRFJPTSB8IEFUQV9E UlFfRkFTVCk7CisKKwkvKiBVc2UgRE1BMiBtb2RlICovCisJaWRlbnRfZGF0YS0+Y2FwYWJpbGl0 aWVzMSB8PSBBVEFfU1VQUE9SVF9ETUE7CisJaWRlbnRfZGF0YS0+bXdkbWFtb2RlcyB8PSBBVEFf V19ETUEyOworCisJLyogVXNlIFBJTzQgbW9kZSAqLworCWlkZW50X2RhdGEtPmF0YXZhbGlkICB8 PSBBVEFfRkxBR182NF83MDsKKwlpZGVudF9kYXRhLT5hcGlvbW9kZXMgfD0gQVRBX01PREVfUElP NDsKKworCS8qIFdlIHVzZSAyOC1iaXQgTEJBIGFkZHJlc3NpbmcgYmVjYXVzZSBDSFMgYWRkcmVz c2luZyBpcyBvYnNvbGV0ZSBpbiBBVEEvQVRBUEkgNiAqLworCWlkZW50X2RhdGEtPmNhcGFiaWxp dGllczEgfD0gQVRBX1NVUFBPUlRfTEJBOworCisJLyogTWFqb3IgdmVyc2lvbiBudW1iZXIgPSBB VEEvQVRBUEktNiAqLworCWlkZW50X2RhdGEtPnZlcnNpb25fbWFqb3IgfD0gQVRBX0FUQVBJXzY7 CisKKwkvKiBNb2RlbDogQkhZVkUgQVRBUEkgSURFIENEUk9NICovCisJbWVtY3B5KGlkZW50X2Rh dGEtPm1vZGVsLCAgICAiSEJWWSBFVEFQQSBJREkgRURDT1IgTSAgICAgICAgICAgICAgICAgICIs IDQwKTsKKwkvKiBTZXJpYWwgbnVtYmVyOiAxMjM0NTYgKi8KKwltZW1jcHkoaWRlbnRfZGF0YS0+ c2VyaWFsLCAgICIyMTQzNjUgICAgICAgICAgICAgICIsIDIwKTsKKwkvKiBGaXJtd2FyZSB2ZXJz aW9uOiAxLjAgKi8KKwltZW1jcHkoaWRlbnRfZGF0YS0+cmV2aXNpb24sICIuMSAwICAgICIsIDgp OworCisJZHByaW50KExPR19ERUJVRywgImF0YV9hdGFwaV9pbml0aWFsaXplX2lkZW50OiBjaGFu bmVsOiAlZCwgZHJpdmU6ICVkXG4iLAorCSAgICAgICBjaGFubmVsLT5pbnRlcmZhY2UsIGNoYW5u ZWwtPmRyaXZlKTsKKworCWF0YV9waW9fZG9fdHJhbnNmZXIocGlvX3NldHVwLCBzaXplb2Yoc3Ry dWN0IGF0YV9wYXJhbXMpLCBhdGFfcGlvX2dlbmVyaWNfZW5kX3RyYW5zZmVyLCBjaGFubmVsLT51 c2VfMTZiaXQpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgaW50CithdGFfY2hhbm5lbF9pc19v ayhzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwsIHVpbnQ4X3QgY2gpCit7CisJaWYgKGNoYW5u ZWwtPmludGVyZmFjZSA9PSBjaCkKKwkJcmV0dXJuIDE7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludAorYXRhX3NlbGVjdF9kcml2ZV9pc19vayhzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5u ZWwpCit7CisJaWYgKGNoYW5uZWwtPmRyaXZlID09IEFUQV9TTEFWRSAmJiAhY2hhbm5lbC0+aGFz X3NsYXZlKSB7CisJCXJldHVybiAwOworCX0KKworCXJldHVybiAxOworfQorCitzdGF0aWMgdm9p ZAorYXRhX3NldF9zdGF0dXNfb2soc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQoreworCXN0 cnVjdCBhdGFfZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2ZV07 CisKKwlkcml2ZS0+c3RhdHVzICY9IH5BVEFfU19CVVNZOworCWRyaXZlLT5zdGF0dXMgfD0gQVRB X1NfUkVBRFk7CisJZHJpdmUtPnN0YXR1cyAmPSB+QVRBX1NfRFdGOworCWRyaXZlLT5zdGF0dXMg Jj0gfkFUQV9TX0RSUTsKKwlkcml2ZS0+c3RhdHVzICY9IH5BVEFfU19FUlJPUjsKKworCWRyaXZl LT5lcnJvciA9IDA7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCithdGFfc2V0X2RhdGFf YmxvY2tfcmVhZHkoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQoreworCXN0cnVjdCBhdGFf ZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2ZV07CisKKwlkcml2 ZS0+YWx0c3RhdHVzICY9IH5BVEFfU19CVVNZOworCWRyaXZlLT5hbHRzdGF0dXMgfD0gQVRBX1Nf RFJROworCWRyaXZlLT5hbHRzdGF0dXMgfD0gQVRBX1NfUkVBRFk7CisKKwlkcml2ZS0+c3RhdHVz IHw9IEFUQV9TX0RSUTsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2F0YV9jb21tYW5k X2Fib3J0ZWQoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQoreworCXN0cnVjdCBhdGFfZHJp dmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2ZV07CisKKwlkcml2ZS0+ c3RhdHVzICY9IH5BVEFfU19CVVNZOworCWRyaXZlLT5zdGF0dXMgJj0gfkFUQV9TX0RSUTsKKwlk cml2ZS0+c3RhdHVzIHw9IEFUQV9TX0VSUk9SOworCisJZHJpdmUtPmVycm9yIHw9IEFUQV9FX0FC T1JUOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX3NldF9zaWduYXR1cmUoc3Ry dWN0IGF0YV9kcml2ZSAqZHJpdmUpCit7CisJZHJpdmUtPnNlY2NvdW50ID0gMHgwMTsKKwlkcml2 ZS0+bGJhX2xvdyAgPSAweDAxOworCisJaWYgKGRyaXZlLT50eXBlID09IEFUQV9IRCkgeworCQlk cml2ZS0+bGJhX21pZCAgPSAweDAwOworCQlkcml2ZS0+bGJhX2hpZ2ggPSAweDAwOworCQlkcml2 ZS0+aGRkZXZzZWwgPSAweDAwOworCX0KKwllbHNlIGlmIChkcml2ZS0+dHlwZSA9PSBBVEFQSV9D RCkgeworCQlkcml2ZS0+bGJhX21pZCAgPSBBVEFQSV9NQUdJQ19MU0I7CisJCWRyaXZlLT5sYmFf aGlnaCA9IEFUQVBJX01BR0lDX01TQjsKKwkJZHJpdmUtPmhkZGV2c2VsICY9IDB4MTA7CisJfQor CWVsc2UKKwkJYXNzZXJ0KDApOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX2Fk ZHJlc3Npbmdfc2VjX2NvdW50KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCwgdWludDE2X3Qg KnBfc2VjdG9yX2NvdW50KQoreworCXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwt PmRyaXZlc1tjaGFubmVsLT5kcml2ZV07CisJdWludDE2X3Qgc2VjdG9yX2NvdW50OworCisJc2Vj dG9yX2NvdW50ID0gZHJpdmUtPnNlY2NvdW50ID8gZHJpdmUtPnNlY2NvdW50IDogQVRBX01BWF9T RUNfQ09VTlQ7CisJKnBfc2VjdG9yX2NvdW50ID0gc2VjdG9yX2NvdW50OworCisJcmV0dXJuOwor fQorCitzdGF0aWMgdm9pZAorYXRhX2FkZHJlc3NpbmdfMjhfbGJhKHN0cnVjdCBhdGFfY2hhbm5l bCAqY2hhbm5lbCwgdWludDMyX3QgKnBfbGJhX2FkZHJlc3MpCit7CisJc3RydWN0IGF0YV9kcml2 ZSAqZHJpdmUgPSAmY2hhbm5lbC0+ZHJpdmVzW2NoYW5uZWwtPmRyaXZlXTsKKwl1aW50MzJfdCBs YmFfYWRkcmVzcyA9IDA7CisKKwlsYmFfYWRkcmVzcyB8PSBkcml2ZS0+bGJhX2xvdzsKKwlsYmFf YWRkcmVzcyB8PSBkcml2ZS0+bGJhX21pZCA8PCA4OworCWxiYV9hZGRyZXNzIHw9IGRyaXZlLT5s YmFfaGlnaCA8PCAxNjsKKwlsYmFfYWRkcmVzcyB8PSAoZHJpdmUtPmhkZGV2c2VsICYgQVRBX0xC QV8yN18yNF9NQVNLKSA8PCAyNDsKKworCSpwX2xiYV9hZGRyZXNzID0gbGJhX2FkZHJlc3M7CisK KwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCithdGFfaW5pdF9ibG9ja19yZXF1ZXN0KHN0cnVj dCBibG9ja2lmX3JlcSAqYnJlcSwgc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsLAorCQkgICAg ICAgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBuYnl0ZXMsIHZvaWQgKmJ1ZmZlcikKK3sKKwli cmVxLT5icl9wYXJhbSA9IGNoYW5uZWw7CisJYnJlcS0+YnJfY2FsbGJhY2sgPSBhdGFfaGFuZGxl X2Jsb2NrX3JlcXVlc3Q7CisJYnJlcS0+YnJfb2Zmc2V0ID0gb2Zmc2V0OworCWJyZXEtPmJyX2lv dmNudCA9IDE7CisJYnJlcS0+YnJfaW92WzBdLmlvdl9sZW4gPSBuYnl0ZXM7CisJYnJlcS0+YnJf aW92WzBdLmlvdl9iYXNlID0gYnVmZmVyOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAor YXRhX2hhbmRsZV9ibG9ja19yZXF1ZXN0KHN0cnVjdCBibG9ja2lmX3JlcSAqcmVxLCBpbnQgZXJy KQoreworCXN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCA9IChzdHJ1Y3QgYXRhX2NoYW5uZWwg KilyZXEtPmJyX3BhcmFtOworCisJYXRhX3NldF9zdGF0dXNfb2soY2hhbm5lbCk7CisJYXRhX3Nl dF9kYXRhX2Jsb2NrX3JlYWR5KGNoYW5uZWwpOworCWF0YV9pcnFfcmFpc2UoY2hhbm5lbCk7CisK KwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCithdGFfcGlvX2RvX3RyYW5zZmVyKHN0cnVjdCBh dGFfcGlvX3NldHVwICpwaW9fc2V0dXAsIHVpbnQ2NF90IHNpemVfdHJhbnNmZXIsCisJCSAgICAg YXRhX3Bpb19lbmRfdHJhbnNmZXJfZnVuY190IGVuZF90cmFuc2ZlciwgdWludDhfdCB1c2Vfd29y ZCkKK3sKKwlhc3NlcnQoc2l6ZV90cmFuc2ZlciA8PSBBVEFfSU5CVUZfU0laRSk7CisJYXNzZXJ0 KCFhdGFfcGlvX2luX3Byb2dyZXNzKHBpb19zZXR1cCkpOworCisJcGlvX3NldHVwLT51c2Vfd29y ZCA9IHVzZV93b3JkOworCXBpb19zZXR1cC0+cGlvX2J1ZmZlci5jdXJyZW50X3BvcyA9IDA7CisJ cGlvX3NldHVwLT5zaXplX3RyYW5zZmVyID0gc2l6ZV90cmFuc2ZlcjsKKwlwaW9fc2V0dXAtPmVu ZF90cmFuc2ZlciA9IGVuZF90cmFuc2ZlcjsKKworCXJldHVybjsKK30KKworc3RhdGljIGludAor YXRhX3Bpb19pbl9wcm9ncmVzcyhzdHJ1Y3QgYXRhX3Bpb19zZXR1cCAqcGlvX3NldHVwKQorewor CXJldHVybiAoaW50KXBpb19zZXR1cC0+ZW5kX3RyYW5zZmVyOworfQorCitzdGF0aWMgdWludDhf dCAqCithdGFfcGlvX2dldF9idWZmZXJfZGF0YShzdHJ1Y3QgYXRhX3Bpb19zZXR1cCAqcGlvX3Nl dHVwKQoreworCXJldHVybiBwaW9fc2V0dXAtPnBpb19idWZmZXIuZGF0YTsKK30KKworc3RhdGlj IHZvaWQKK2F0YV9waW9fY2hlY2tfZW5kX3RyYW5zZmVyKHN0cnVjdCBhdGFfcGlvX3NldHVwICpw aW9fc2V0dXApCit7CisJc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsID0gcGlvX3NldHVwLT5j aGFubmVsOworCXN0cnVjdCBhdGFfcGlvX2J1ZmZlciAqcGlvX2J1ZmZlciA9ICZwaW9fc2V0dXAt PnBpb19idWZmZXI7CisJYXRhX3Bpb19lbmRfdHJhbnNmZXJfZnVuY190IGVuZF90cmFuc2ZlciA9 IHBpb19zZXR1cC0+ZW5kX3RyYW5zZmVyOworCisJaWYgKHBpb19idWZmZXItPmN1cnJlbnRfcG9z ID09IHBpb19zZXR1cC0+c2l6ZV90cmFuc2ZlcikgeworCQlwaW9fc2V0dXAtPmVuZF90cmFuc2Zl ciA9IE5VTEw7CisJCWVuZF90cmFuc2ZlcihjaGFubmVsKTsKKwl9CisKKwlyZXR1cm47Cit9CisK K3N0YXRpYyB1aW50MzJfdAorYXRhX3Bpb19nZXRfdWludChzdHJ1Y3QgYXRhX3Bpb19zZXR1cCAq cGlvX3NldHVwKQoreworCXN0cnVjdCBhdGFfcGlvX2J1ZmZlciAqcGlvX2J1ZmZlciA9ICZwaW9f c2V0dXAtPnBpb19idWZmZXI7CisJdWludDMyX3QgdmFsdWU7CisKKwlhc3NlcnQocGlvX2J1ZmZl ci0+Y3VycmVudF9wb3MgPCBwaW9fc2V0dXAtPnNpemVfdHJhbnNmZXIpOworCisJaWYgKHBpb19z ZXR1cC0+dXNlX3dvcmQpIHsKKwkJdmFsdWUgPSAqKHVpbnQxNl90ICopKHBpb19idWZmZXItPmRh dGEgKyBwaW9fYnVmZmVyLT5jdXJyZW50X3Bvcyk7CisJCXBpb19idWZmZXItPmN1cnJlbnRfcG9z ICs9IHNpemVvZih1aW50MTZfdCk7CisJfQorCWVsc2UgeworCQl2YWx1ZSA9ICoodWludDMyX3Qg KikocGlvX2J1ZmZlci0+ZGF0YSArIHBpb19idWZmZXItPmN1cnJlbnRfcG9zKTsKKwkJcGlvX2J1 ZmZlci0+Y3VycmVudF9wb3MgKz0gc2l6ZW9mKHVpbnQzMl90KTsKKwl9CisKKwlhdGFfcGlvX2No ZWNrX2VuZF90cmFuc2ZlcihwaW9fc2V0dXApOworCisJcmV0dXJuIHZhbHVlOworfQorCitzdGF0 aWMgdm9pZAorYXRhX3Bpb19wdXRfdWludChzdHJ1Y3QgYXRhX3Bpb19zZXR1cCAqcGlvX3NldHVw LCB1aW50MzJfdCB3cml0ZV92YWx1ZSkKK3sKKwlzdHJ1Y3QgYXRhX3Bpb19idWZmZXIgKnBpb19i dWZmZXIgPSAmcGlvX3NldHVwLT5waW9fYnVmZmVyOworCisJYXNzZXJ0KHBpb19idWZmZXItPmN1 cnJlbnRfcG9zIDwgcGlvX3NldHVwLT5zaXplX3RyYW5zZmVyKTsKKworCWlmIChwaW9fc2V0dXAt PnVzZV93b3JkKSB7CisJCSoodWludDE2X3QgKikocGlvX2J1ZmZlci0+ZGF0YSArIHBpb19idWZm ZXItPmN1cnJlbnRfcG9zKSA9ICh1aW50MTZfdCl3cml0ZV92YWx1ZTsKKwkJcGlvX2J1ZmZlci0+ Y3VycmVudF9wb3MgKz0gc2l6ZW9mKHVpbnQxNl90KTsKKwl9CisJZWxzZSB7CisJCSoodWludDMy X3QgKikocGlvX2J1ZmZlci0+ZGF0YSArIHBpb19idWZmZXItPmN1cnJlbnRfcG9zKSA9IHdyaXRl X3ZhbHVlOworCQlwaW9fYnVmZmVyLT5jdXJyZW50X3BvcyArPSBzaXplb2YodWludDMyX3QpOwor CX0KKworCWF0YV9waW9fY2hlY2tfZW5kX3RyYW5zZmVyKHBpb19zZXR1cCk7CisKKwlyZXR1cm47 Cit9CisKK3N0YXRpYyB2b2lkCithdGFfcGlvX2dlbmVyaWNfZW5kX3RyYW5zZmVyKHN0cnVjdCBh dGFfY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX3Bpb19nZW5l cmljX2VuZF90cmFuc2ZlcjogY2g6ICVkIGRyaXZlOiAlZFxuIiwKKwkgICAgICAgY2hhbm5lbC0+ aW50ZXJmYWNlLCBjaGFubmVsLT5kcml2ZSk7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lk CithdGFfcmVhZF9tdWx0aXBsZV9ibG9ja19kb25lKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5l bCkKK3sKKwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2ZSA9ICZjaGFubmVsLT5kcml2ZXNbY2hhbm5l bC0+ZHJpdmVdOworCXN0cnVjdCBibG9ja2lmX2N0eHQgKmJjdHh0ID0gTlVMTDsKKwlzdHJ1Y3Qg YXRhX3Bpb19zZXR1cCAqcGlvX3NldHVwID0gTlVMTDsKKwlzdHJ1Y3QgYmxvY2tpZl9yZXEgKmJy ZXEgPSBOVUxMOworCXVpbnQ2NF90IGNvdW50OworCXVpbnQ2NF90IHNpemVfdHJhbnNmZXI7CisJ aW50IGVycjsKKworCWJjdHh0ID0gZHJpdmUtPmJjdHh0OworCXBpb19zZXR1cCA9ICZkcml2ZS0+ cGlvX3NldHVwOworCWJyZXEgPSAmcGlvX3NldHVwLT5icmVxOworCisJZHJpdmUtPm9mZnNldCAr PSBwaW9fc2V0dXAtPnNpemVfdHJhbnNmZXI7CisJZHJpdmUtPmNvdW50IC09IHBpb19zZXR1cC0+ c2l6ZV90cmFuc2ZlcjsKKworCWNvdW50ID0gZHJpdmUtPmNvdW50OworCisJaWYgKGNvdW50KSB7 CisJCXNpemVfdHJhbnNmZXIgPSBjb3VudCA+PSBBVEFfQkxPQ0tfU0laRSA/IEFUQV9CTE9DS19T SVpFIDogY291bnQ7CisJCWF0YV9waW9fZG9fdHJhbnNmZXIocGlvX3NldHVwLCBzaXplX3RyYW5z ZmVyLCBhdGFfcmVhZF9tdWx0aXBsZV9ibG9ja19kb25lLCBjaGFubmVsLT51c2VfMTZiaXQpOwor CisJCWF0YV9pbml0X2Jsb2NrX3JlcXVlc3QoYnJlcSwgY2hhbm5lbCwgZHJpdmUtPm9mZnNldCwK KwkJCQkgICAgICAgc2l6ZV90cmFuc2ZlciwgYXRhX3Bpb19nZXRfYnVmZmVyX2RhdGEocGlvX3Nl dHVwKSk7CisKKwkJZXJyID0gYmxvY2tpZl9yZWFkKGJjdHh0LCBicmVxKTsKKwkJYXNzZXJ0KCFl cnIpOworCX0KKwllbHNlIHsKKwkJZHByaW50KExPR19ERUJVRywgImF0YV9yZWFkX211bHRpcGxl X2Jsb2NrX2RvbmU6IEFUQV9SRUFEX01VTCBjb21wbGV0ZWRcbiIpOworCX0KKworCXJldHVybjsK K30KKworc3RhdGljIHZvaWQKK2F0YV93cml0ZV9tdWx0aXBsZV9ibG9ja19kb25lKHN0cnVjdCBh dGFfY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2ZSA9ICZjaGFu bmVsLT5kcml2ZXNbY2hhbm5lbC0+ZHJpdmVdOworCXN0cnVjdCBibG9ja2lmX2N0eHQgKmJjdHh0 ID0gTlVMTDsKKwlzdHJ1Y3QgYXRhX3Bpb19zZXR1cCAqcGlvX3NldHVwID0gTlVMTDsKKwlzdHJ1 Y3QgYmxvY2tpZl9yZXEgKmJyZXEgPSBOVUxMOworCXVpbnQ2NF90IGNvdW50OworCXVpbnQ2NF90 IHNpemVfdHJhbnNmZXI7CisJaW50IGVycjsKKworCWJjdHh0ID0gZHJpdmUtPmJjdHh0OworCXBp b19zZXR1cCA9ICZkcml2ZS0+cGlvX3NldHVwOworCWJyZXEgPSAmcGlvX3NldHVwLT5icmVxOwor CisJYXRhX2luaXRfYmxvY2tfcmVxdWVzdChicmVxLCBjaGFubmVsLCBkcml2ZS0+b2Zmc2V0LAor CQkJICAgICAgIHBpb19zZXR1cC0+c2l6ZV90cmFuc2ZlciwgYXRhX3Bpb19nZXRfYnVmZmVyX2Rh dGEocGlvX3NldHVwKSk7CisKKwlkcml2ZS0+b2Zmc2V0ICs9IHBpb19zZXR1cC0+c2l6ZV90cmFu c2ZlcjsKKwlkcml2ZS0+Y291bnQgLT0gcGlvX3NldHVwLT5zaXplX3RyYW5zZmVyOworCisJY291 bnQgPSBkcml2ZS0+Y291bnQ7CisKKwlpZiAoY291bnQpIHsKKwkJc2l6ZV90cmFuc2ZlciA9IGNv dW50ID49IEFUQV9CTE9DS19TSVpFID8gQVRBX0JMT0NLX1NJWkUgOiBjb3VudDsKKwkJYXRhX3Bp b19kb190cmFuc2ZlcihwaW9fc2V0dXAsIHNpemVfdHJhbnNmZXIsIGF0YV93cml0ZV9tdWx0aXBs ZV9ibG9ja19kb25lLCBjaGFubmVsLT51c2VfMTZiaXQpOworCX0KKwllbHNlIHsKKwkJZHByaW50 KExPR19ERUJVRywgImF0YV93cml0ZV9tdWx0aXBsZV9ibG9ja19kb25lOiBBVEFfV1JJVEVfTVVM IGNvbXBsZXRlZFxuIik7CisJfQorCisJZXJyID0gYmxvY2tpZl93cml0ZShiY3R4dCwgYnJlcSk7 CisJYXNzZXJ0KCFlcnIpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX2F0YXBp X2hhbmRsZV9yZWFkX2RvbmUoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQoreworCXN0cnVj dCBhdGFfZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2ZV07CisJ c3RydWN0IGJsb2NraWZfY3R4dCAqYmN0eHQgPSBOVUxMOworCXN0cnVjdCBhdGFfcGlvX3NldHVw ICpwaW9fc2V0dXAgPSBOVUxMOworCXN0cnVjdCBibG9ja2lmX3JlcSAqYnJlcSA9IE5VTEw7CisJ dWludDY0X3QgY291bnQ7CisJaW50IGVycjsKKworCWJjdHh0ID0gZHJpdmUtPmJjdHh0OworCXBp b19zZXR1cCA9ICZkcml2ZS0+cGlvX3NldHVwOworCWJyZXEgPSAmcGlvX3NldHVwLT5icmVxOwor CisJZHJpdmUtPm9mZnNldCArPSBBVEFQSV9CTE9DS19TSVpFOworCWRyaXZlLT5jb3VudCAtPSBB VEFQSV9CTE9DS19TSVpFOworCisJY291bnQgPSBkcml2ZS0+Y291bnQ7CisKKwlpZiAoY291bnQp IHsKKwkJYXNzZXJ0KGNvdW50ID49IEFUQVBJX0JMT0NLX1NJWkUpOworCisJCWRyaXZlLT5zZWNj b3VudCA9IEFUQV9JX0lOOworCisJCWF0YV9waW9fZG9fdHJhbnNmZXIocGlvX3NldHVwLCBBVEFQ SV9CTE9DS19TSVpFLCBhdGFfYXRhcGlfaGFuZGxlX3JlYWRfZG9uZSwgY2hhbm5lbC0+dXNlXzE2 Yml0KTsKKworCQlhdGFfaW5pdF9ibG9ja19yZXF1ZXN0KGJyZXEsIGNoYW5uZWwsIGRyaXZlLT5v ZmZzZXQsCisJCQkJICAgICAgIEFUQVBJX0JMT0NLX1NJWkUsIGF0YV9waW9fZ2V0X2J1ZmZlcl9k YXRhKHBpb19zZXR1cCkpOworCisJCWVyciA9IGJsb2NraWZfcmVhZChiY3R4dCwgYnJlcSk7CisJ CWFzc2VydCghZXJyKTsKKwl9CisJZWxzZSB7CisJCWRwcmludChMT0dfREVCVUcsICJhdGFfYXRh cGlfaGFuZGxlX3JlYWRfZG9uZTogUkVBRCBjb21wbGV0ZWRcbiIpOworCQlhdGFfYXRhcGlfY21k X2RvbmUoY2hhbm5lbCk7CisJfQorCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX2hh bmRsZV9pZGVudGlmeShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpCit7CisJc3RydWN0IGF0 YV9kcml2ZSAqZHJpdmUgPSAmY2hhbm5lbC0+ZHJpdmVzW2NoYW5uZWwtPmRyaXZlXTsKKworCWlm IChkcml2ZS0+dHlwZSA9PSBBVEFfSEQpIHsKKwkJYXRhX2luaXRpYWxpemVfaWRlbnQoY2hhbm5l bCk7CisKKwkJYXRhX3NldF9kYXRhX2Jsb2NrX3JlYWR5KGNoYW5uZWwpOworCQlhdGFfc2V0X3N0 YXR1c19vayhjaGFubmVsKTsKKwkJYXRhX2lycV9yYWlzZShjaGFubmVsKTsKKwl9CisJZWxzZSBp ZiAoZHJpdmUtPnR5cGUgPT0gQVRBUElfQ0QpIHsKKwkJYXRhX2NvbW1hbmRfYWJvcnRlZChjaGFu bmVsKTsKKwkJYXRhX3NldF9zaWduYXR1cmUoZHJpdmUpOworCX0KKwllbHNlCisJCWFzc2VydCgw KTsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2F0YV9oYW5kbGVfc2V0ZmVhdHVyZXMo c3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQoreworCXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZl ID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2ZV07CisKKwlzd2l0Y2ggKGRyaXZlLT5m ZWF0dXJlcykgeworCWNhc2UgQVRBX1NGX1NFVFhGRVI6CisJCWNoYW5uZWwtPm1vZGUgPSBkcml2 ZS0+c2VjY291bnQ7CisJCWRwcmludChMT0dfREVCVUcsICJhdGFfaGFuZGxlX3NldGZlYXR1cmVz IEFUQV9TRl9TRVRYRkVSOiBtb2RlOiAlZFxuIiwKKwkJICAgICAgIGNoYW5uZWwtPm1vZGUpOwor CQlicmVhazsKKwljYXNlIEFUQV9TRl9FTkFCX1dDQUNIRToKKwkJYnJlYWs7CisJY2FzZSBBVEFf U0ZfRElTX1dDQUNIRToKKwkJYnJlYWs7CisJY2FzZSBBVEFfU0ZfRU5BQl9QVUlTOgorCQlicmVh azsKKwljYXNlIEFUQV9TRl9ESVNfUFVJUzoKKwkJYnJlYWs7CisJY2FzZSBBVEFfU0ZfUFVJU19T UElOVVA6CisJCWJyZWFrOworCWNhc2UgQVRBX1NGX0VOQUJfUkNBQ0hFOgorCQlicmVhazsKKwlj YXNlIEFUQV9TRl9ESVNfUkNBQ0hFOgorCQlicmVhazsKKwljYXNlIEFUQV9TRl9FTkFCX1JFTElS UToKKwkJYnJlYWs7CisJY2FzZSBBVEFfU0ZfRElTX1JFTElSUToKKwkJYnJlYWs7CisJY2FzZSBB VEFfU0ZfRU5BQl9TUlZJUlE6CisJCWJyZWFrOworCWNhc2UgQVRBX1NGX0RJU19TUlZJUlE6CisJ CWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKworCWF0YV9zZXRfc3RhdHVzX29rKGNo YW5uZWwpOworCWF0YV9pcnFfcmFpc2UoY2hhbm5lbCk7CisKKwlyZXR1cm47Cit9CisKK3N0YXRp YyB2b2lkCithdGFfaGFuZGxlX3NldF9tdWx0aShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwp Cit7CisJc3RydWN0IGF0YV9kcml2ZSAqZHJpdmUgPSAmY2hhbm5lbC0+ZHJpdmVzW2NoYW5uZWwt PmRyaXZlXTsKKworCWNoYW5uZWwtPnNlY3RvcnNfcGVyX2Jsb2NrID0gZHJpdmUtPnNlY2NvdW50 OworCisJYXNzZXJ0KGNoYW5uZWwtPnNlY3RvcnNfcGVyX2Jsb2NrID09IEFUQV9TRUNUT1JTX1BF Ul9CTE9DSyk7CisKKwlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2hhbmRsZV9zZXRfbXVsdGk6IHNl Y3RvcnNfcGVyX2Jsb2NrOiAlZFxuIiwKKwkgICAgICAgY2hhbm5lbC0+c2VjdG9yc19wZXJfYmxv Y2spOworCisJYXRhX3NldF9zdGF0dXNfb2soY2hhbm5lbCk7CisJYXRhX2lycV9yYWlzZShjaGFu bmVsKTsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2F0YV9oYW5kbGVfcmVhZF9tdWx0 aXBsZShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpCit7CisJc3RydWN0IGF0YV9kcml2ZSAq ZHJpdmUgPSAmY2hhbm5lbC0+ZHJpdmVzW2NoYW5uZWwtPmRyaXZlXTsKKwlzdHJ1Y3QgYmxvY2tp Zl9jdHh0ICpiY3R4dCA9IE5VTEw7CisJc3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCA9 IE5VTEw7CisJc3RydWN0IGJsb2NraWZfcmVxICpicmVxID0gTlVMTDsKKworCXVpbnQxNl90IHNl Y3Rvcl9jb3VudDsKKwl1aW50MzJfdCBsYmFfYWRkcmVzcyA9IDA7CisJdWludDY0X3Qgb2Zmc2V0 OworCXVpbnQ2NF90IGNvdW50OworCXVpbnQ2NF90IHNpemVfdHJhbnNmZXI7CisJaW50IGVycjsK KworCWJjdHh0ID0gZHJpdmUtPmJjdHh0OworCXBpb19zZXR1cCA9ICZkcml2ZS0+cGlvX3NldHVw OworCWJyZXEgPSAmcGlvX3NldHVwLT5icmVxOworCisJYXRhX2FkZHJlc3Npbmdfc2VjX2NvdW50 KGNoYW5uZWwsICZzZWN0b3JfY291bnQpOworCWF0YV9hZGRyZXNzaW5nXzI4X2xiYShjaGFubmVs LCAmbGJhX2FkZHJlc3MpOworCisJZHByaW50KExPR19ERUJVRywgImF0YV9oYW5kbGVfcmVhZF9t dWx0aXBsZTogc2VjdG9yX2NvdW50OiAlZCwgbGJhX2FkZHJlc3M6IDB4JXhcbiIsCisJICAgICAg IHNlY3Rvcl9jb3VudCwgbGJhX2FkZHJlc3MpOworCisJb2Zmc2V0ID0gKHVpbnQ2NF90KWxiYV9h ZGRyZXNzICogQVRBX1NFQ1RPUl9TSVpFOworCWNvdW50ID0gKHVpbnQ2NF90KXNlY3Rvcl9jb3Vu dCAqIEFUQV9TRUNUT1JfU0laRTsKKworCWRyaXZlLT5jb3VudCA9IGNvdW50OworCWRyaXZlLT5v ZmZzZXQgPSBvZmZzZXQ7CisKKwlzaXplX3RyYW5zZmVyID0gY291bnQgPj0gQVRBX0JMT0NLX1NJ WkUgPyBBVEFfQkxPQ0tfU0laRSA6IGNvdW50OworCWF0YV9waW9fZG9fdHJhbnNmZXIocGlvX3Nl dHVwLCBzaXplX3RyYW5zZmVyLCBhdGFfcmVhZF9tdWx0aXBsZV9ibG9ja19kb25lLCBjaGFubmVs LT51c2VfMTZiaXQpOworCisJYXRhX2luaXRfYmxvY2tfcmVxdWVzdChicmVxLCBjaGFubmVsLCBk cml2ZS0+b2Zmc2V0LAorCQkJICAgICAgIHNpemVfdHJhbnNmZXIsIGF0YV9waW9fZ2V0X2J1ZmZl cl9kYXRhKHBpb19zZXR1cCkpOworCisJZXJyID0gYmxvY2tpZl9yZWFkKGJjdHh0LCBicmVxKTsK Kwlhc3NlcnQoIWVycik7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCithdGFfaGFuZGxl X3JlYWRfdmVyaWZ5KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlzdHJ1Y3QgYXRh X2RyaXZlICpkcml2ZSA9ICZjaGFubmVsLT5kcml2ZXNbY2hhbm5lbC0+ZHJpdmVdOworCWRwcmlu dChMT0dfREVCVUcsICJhdGFfaGFuZGxlX3JlYWRfdmVyaWZ5XG4iKTsKKworCWF0YV9zZXRfc3Rh dHVzX29rKGNoYW5uZWwpOworCWRyaXZlLT5hbHRzdGF0dXMgJj0gfkFUQV9TX0RSUTsKKwlhdGFf aXJxX3JhaXNlKGNoYW5uZWwpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX2hh bmRsZV93cml0ZV9tdWx0aXBsZShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpCit7CisJc3Ry dWN0IGF0YV9kcml2ZSAqZHJpdmUgPSAmY2hhbm5lbC0+ZHJpdmVzW2NoYW5uZWwtPmRyaXZlXTsK KwlzdHJ1Y3QgYmxvY2tpZl9jdHh0ICpiY3R4dCA9IE5VTEw7CisJc3RydWN0IGF0YV9waW9fc2V0 dXAgKnBpb19zZXR1cCA9IE5VTEw7CisKKwl1aW50MTZfdCBzZWN0b3JfY291bnQ7CisJdWludDMy X3QgbGJhX2FkZHJlc3MgPSAwOworCXVpbnQ2NF90IG9mZnNldDsKKwl1aW50NjRfdCBjb3VudDsK Kwl1aW50NjRfdCBzaXplX3RyYW5zZmVyOworCisJYmN0eHQgPSBkcml2ZS0+YmN0eHQ7CisJcGlv X3NldHVwID0gJmRyaXZlLT5waW9fc2V0dXA7CisKKwlhdGFfYWRkcmVzc2luZ19zZWNfY291bnQo Y2hhbm5lbCwgJnNlY3Rvcl9jb3VudCk7CisJYXRhX2FkZHJlc3NpbmdfMjhfbGJhKGNoYW5uZWws ICZsYmFfYWRkcmVzcyk7CisKKwlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2hhbmRsZV93cml0ZV9t dWx0aXBsZTogc2VjdG9yX2NvdW50OiAlZCwgbGJhX2FkZHJlc3M6IDB4JXhcbiIsCisJICAgICAg IHNlY3Rvcl9jb3VudCwgbGJhX2FkZHJlc3MpOworCisJb2Zmc2V0ID0gKHVpbnQ2NF90KWxiYV9h ZGRyZXNzICogQVRBX1NFQ1RPUl9TSVpFOworCWNvdW50ID0gKHVpbnQ2NF90KXNlY3Rvcl9jb3Vu dCAqIEFUQV9TRUNUT1JfU0laRTsKKworCWRyaXZlLT5vZmZzZXQgPSBvZmZzZXQ7CisJZHJpdmUt PmNvdW50ID0gY291bnQ7CisKKwlzaXplX3RyYW5zZmVyID0gY291bnQgPj0gQVRBX0JMT0NLX1NJ WkUgPyBBVEFfQkxPQ0tfU0laRSA6IGNvdW50OworCWF0YV9waW9fZG9fdHJhbnNmZXIocGlvX3Nl dHVwLCBzaXplX3RyYW5zZmVyLCBhdGFfd3JpdGVfbXVsdGlwbGVfYmxvY2tfZG9uZSwgY2hhbm5l bC0+dXNlXzE2Yml0KTsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2F0YV9oYW5kbGVf ZG1hKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCwgdWludDhfdCBvcF9kaXIpCit7CisJc3Ry dWN0IHBjaV9hdGFfc29mdGMgKnNjID0gTlVMTDsKKwlzdHJ1Y3QgcGNpX2F0YV9kbWFfdHJhbnNh Y3Rpb24gKmRtYV90cmFuc2FjdGlvbiA9IE5VTEw7CisKKwl1aW50MTZfdCBzZWN0b3JfY291bnQ7 CisJdWludDMyX3QgbGJhX2FkZHJlc3MgPSAwOworCisJc2MgPSBjaGFubmVsLT5wcl9zYzsKKwlk bWFfdHJhbnNhY3Rpb24gPSAmc2MtPmRtYV90cmFuc2FjdGlvbnNbY2hhbm5lbC0+aW50ZXJmYWNl XTsKKworCWFzc2VydCghZG1hX3RyYW5zYWN0aW9uLT5zdGFydGVkKTsKKworCWF0YV9hZGRyZXNz aW5nX3NlY19jb3VudChjaGFubmVsLCAmc2VjdG9yX2NvdW50KTsKKwlhdGFfYWRkcmVzc2luZ18y OF9sYmEoY2hhbm5lbCwgJmxiYV9hZGRyZXNzKTsKKworCWRwcmludChMT0dfREVCVUcsICJhdGFf aGFuZGxlX2RtYTogc2VjdG9yX2NvdW50OiAlZCwgbGJhX2FkZHJlc3M6IDB4JXggRElSOiAlZFxu IiwKKwkJCXNlY3Rvcl9jb3VudCwgbGJhX2FkZHJlc3MsIG9wX2Rpcik7CisKKwlkbWFfdHJhbnNh Y3Rpb24tPnN0YXJ0ZWQgPSAxOworCWRtYV90cmFuc2FjdGlvbi0+b2Zmc2V0ID0gKHVpbnQ2NF90 KWxiYV9hZGRyZXNzICogQVRBX1NFQ1RPUl9TSVpFOworCWRtYV90cmFuc2FjdGlvbi0+bmJ5dGVz ID0gKHVpbnQ2NF90KXNlY3Rvcl9jb3VudCAqIEFUQV9TRUNUT1JfU0laRTsKKwlkbWFfdHJhbnNh Y3Rpb24tPm9wX2RpciA9IG9wX2RpcjsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2F0 YV9oYW5kbGVfZmx1c2hjYWNoZShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpCit7CisJc3Ry dWN0IGJsb2NraWZfY3R4dCAqYmN0eHQgPSBOVUxMOworCXN0cnVjdCBibG9ja2lmX3JlcSAqYnJl cSA9IE5VTEw7CisJaW50IGVycjsKKworCWJjdHh0ID0gY2hhbm5lbC0+ZHJpdmVzW2NoYW5uZWwt PmRyaXZlXS5iY3R4dDsKKwlicmVxID0gJmNoYW5uZWwtPmZsdXNoX2JyZXE7CisKKwlkcHJpbnQo TE9HX0RFQlVHLCAiYXRhX2hhbmRsZV9mbHVzaGNhY2hlXG4iKTsKKworCWF0YV9pbml0X2Jsb2Nr X3JlcXVlc3QoYnJlcSwgY2hhbm5lbCwgMCwgMCwgTlVMTCk7CisKKwllcnIgPSBibG9ja2lmX2Zs dXNoKGJjdHh0LCBicmVxKTsKKwlhc3NlcnQoIWVycik7CisKKwlyZXR1cm47Cit9CisKK3N0YXRp YyB2b2lkCithdGFfaGFuZGxlX3NlZWsoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQorewor CXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2 ZV07CisKKwlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2hhbmRsZV9zZWVrXG4iKTsKKworCWF0YV9z ZXRfc3RhdHVzX29rKGNoYW5uZWwpOworCWRyaXZlLT5zdGF0dXMgfD0gQVRBX1NfRFNDOworCWF0 YV9pcnFfcmFpc2UoY2hhbm5lbCk7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCithdGFf aGFuZGxlX2F0YXBpX2lkZW50aWZ5KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlh dGFfYXRhcGlfaW5pdGlhbGl6ZV9pZGVudChjaGFubmVsKTsKKworCWF0YV9zZXRfZGF0YV9ibG9j a19yZWFkeShjaGFubmVsKTsKKwlhdGFfc2V0X3N0YXR1c19vayhjaGFubmVsKTsKKwlhdGFfaXJx X3JhaXNlKGNoYW5uZWwpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX2hhbmRs ZV9wYWNrZXRfY21kKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlzdHJ1Y3QgYXRh X2RyaXZlICpkcml2ZSA9ICZjaGFubmVsLT5kcml2ZXNbY2hhbm5lbC0+ZHJpdmVdOworCXN0cnVj dCBhdGFfcGlvX3NldHVwICpwaW9fc2V0dXAgPSBOVUxMOworCisJcGlvX3NldHVwID0gJmRyaXZl LT5waW9fc2V0dXA7CisKKwlkcml2ZS0+Ynl0ZV9jb3VudCA9IGRyaXZlLT5sYmFfbWlkIHwgKGRy aXZlLT5sYmFfaGlnaCA8PCA4KTsKKworCWRwcmludChMT0dfREVCVUcsICJhdGFfaGFuZGxlX3Bh Y2tldF9jbWQ6IGJ5dGVfY291bnQ6ICVkXG4iLCBkcml2ZS0+Ynl0ZV9jb3VudCk7CisKKwlhdGFf c2V0X3N0YXR1c19vayhjaGFubmVsKTsKKwlkcml2ZS0+c2VjY291bnQgPSBBVEFfSV9DTUQ7CisJ ZHJpdmUtPnN0YXR1cyB8PSBBVEFfU19EUlE7CisKKwkvKiBUaGUgUGFja2V0IGNtZCBpcyByZWNl aXZlZCBhcyA2IHdvcmRzIG9uIGJvdGggTFBDIGFuZCBQQ0kgKi8KKwlhdGFfcGlvX2RvX3RyYW5z ZmVyKHBpb19zZXR1cCwgQVRBUElfUEFDS0VUX1NJWkUsIGF0YV9hdGFwaV9jbWQsIDEpOworCisJ cmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX2hhbmRsZV9jbWQoc3RydWN0IGF0YV9jaGFu bmVsICpjaGFubmVsLCB1aW50OF90IGNtZCkKK3sKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgQVRB X0FUQV9JREVOVElGWToKKwkJYXRhX2hhbmRsZV9pZGVudGlmeShjaGFubmVsKTsKKwkJYnJlYWs7 CisJY2FzZSBBVEFfU0VURkVBVFVSRVM6CisJCWF0YV9oYW5kbGVfc2V0ZmVhdHVyZXMoY2hhbm5l bCk7CisJCWJyZWFrOworCWNhc2UgQVRBX1NFVF9NVUxUSToKKwkJYXRhX2hhbmRsZV9zZXRfbXVs dGkoY2hhbm5lbCk7CisJCWJyZWFrOworCWNhc2UgQVRBX1JFQUQ6CisJY2FzZSBBVEFfUkVBRF9N VUw6CisJCWF0YV9oYW5kbGVfcmVhZF9tdWx0aXBsZShjaGFubmVsKTsKKwkJYnJlYWs7CisJY2Fz ZSBBVEFfUkVBRF9WRVJJRlk6CisJCWF0YV9oYW5kbGVfcmVhZF92ZXJpZnkoY2hhbm5lbCk7CisJ CWJyZWFrOworCWNhc2UgQVRBX1dSSVRFOgorCWNhc2UgQVRBX1dSSVRFX01VTDoKKwkJYXRhX2hh bmRsZV93cml0ZV9tdWx0aXBsZShjaGFubmVsKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfUkVBRF9E TUE6CisJCWF0YV9oYW5kbGVfZG1hKGNoYW5uZWwsIEFUQV9ETUFfUkVBRCk7CisJCWJyZWFrOwor CWNhc2UgQVRBX1dSSVRFX0RNQToKKwkJYXRhX2hhbmRsZV9kbWEoY2hhbm5lbCwgQVRBX0RNQV9X UklURSk7CisJCWJyZWFrOworCWNhc2UgQVRBX0ZMVVNIQ0FDSEU6CisJCWF0YV9oYW5kbGVfZmx1 c2hjYWNoZShjaGFubmVsKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfU0VFSzoKKwkJYXRhX2hhbmRs ZV9zZWVrKGNoYW5uZWwpOworCQlicmVhazsKKwljYXNlIEFUQV9BVEFQSV9JREVOVElGWToKKwkJ YXRhX2hhbmRsZV9hdGFwaV9pZGVudGlmeShjaGFubmVsKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFf UEFDS0VUX0NNRDoKKwkJYXRhX2hhbmRsZV9wYWNrZXRfY21kKGNoYW5uZWwpOworCQlicmVhazsK KwlkZWZhdWx0OgorCQlkcHJpbnQoTE9HX0VSUiwgImF0YV9oYW5kbGVfY21kOiB1bnN1cHBvcnRl ZCBjbWQ6ICUwMnhcbiIsIGNtZCk7CisJCWFzc2VydCgwKTsKKwkJYnJlYWs7CisJfQorCisJcmV0 dXJuOworfQorCisvKgorICogYXRhX2NwdV90b19iZTMyIHRyYW5zbGF0ZXMgZnJvbSBsaXR0bGUg ZW5kaWFuIHRvIGJpZyBlbmRpYW4KKyAqIHRoZSBsaXR0bGUgZW5kaWFuIGZvcm1hdCBpcyB1c2Vk IGJ5IHRoZSBjcHUKKyAqIEB2YWwgLSB0aGUgaW50ZWdlciB2YWx1ZSBiZWluZyB0cmFuc2xhdGVk CisgKiBAYnVmIC0gdGhlIGFkZHJlc3Mgd2hlcmUgdGhlIHJlc3VsdCBpcyBzdG9yZWQKKyAqLwor c3RhdGljIGlubGluZSB2b2lkCithdGFfY3B1X3RvX2JlMzIodWludDhfdCAqYnVmLCB1aW50MzJf dCB2YWwpCit7CisJYnVmWzBdID0gdmFsID4+IDI0OworCWJ1ZlsxXSA9IHZhbCA+PiAxNjsKKwli dWZbMl0gPSB2YWwgPj4gODsKKwlidWZbM10gPSB2YWw7CisKKwlyZXR1cm47Cit9CisKKy8qCisg KiBhdGFfY3B1X3RvX2JlMTYgdHJhbnNsYXRlcyBmcm9tIGxpdHRsZSBlbmRpYW4gdG8gYmlnIGVu ZGlhbgorICogdGhlIGxpdHRsZSBlbmRpYW4gZm9ybWF0IGlzIHVzZWQgYnkgdGhlIGNwdQorICog QHZhbCAtIHRoZSB3b3JkIGJlaW5nIHRyYW5zbGF0ZWQKKyAqIEBidWYgLSB0aGUgYWRkcmVzcyB3 aGVyZSB0aGUgcmVzdWx0IGlzIHN0b3JlZAorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2F0YV9j cHVfdG9fYmUxNih1aW50OF90ICpidWYsIHVpbnQxNl90IHZhbCkKK3sKKwlidWZbMF0gPSB2YWwg Pj4gODsKKwlidWZbMV0gPSB2YWw7CisKKwlyZXR1cm47Cit9CisKKy8qCisgKiBhdGFfYmUzMl90 b19jcHUgdHJhbnNsYXRlcyBmcm9tIGJpZyBlbmRpYW4gdG8gbGl0dGxlIGVuZGlhbgorICogdGhl IGxpdHRsZSBlbmRpYW4gZm9ybWF0IGlzIHVzZWQgYnkgdGhlIGNwdQorICogQHZhbCAtIHRoZSBy ZXR1cm4gaW50ZWdlciB2YWx1ZQorICogQGJ1ZiAtIHRoZSBhZGRyZXNzIG9mIHRoZSB2YWx1ZSBi ZWluZyB0cmFuc2xhdGVkCisgKi8KK3N0YXRpYyBpbmxpbmUgdWludDMyX3QKK2F0YV9iZTMyX3Rv X2NwdSh1aW50OF90ICpidWYpCit7CisJdWludDMyX3QgdmFsID0gMDsKKworCXZhbCB8PSBidWZb MF0gPDwgMjQ7CisJdmFsIHw9IGJ1ZlsxXSA8PCAxNjsKKwl2YWwgfD0gYnVmWzJdIDw8IDg7CisJ dmFsIHw9IGJ1ZlszXTsKKworCXJldHVybiB2YWw7Cit9CisKKy8qCisgKiBhdGFfYmUxNl90b19j cHUgdHJhbnNsYXRlcyBmcm9tIGJpZyBlbmRpYW4gdG8gbGl0dGxlIGVuZGlhbgorICogdGhlIGxp dHRsZSBlbmRpYW4gZm9ybWF0IGlzIHVzZWQgYnkgdGhlIGNwdQorICogQHZhbCAtIHRoZSByZXR1 cm4gd29yZCB2YWx1ZQorICogQGJ1ZiAtIHRoZSBhZGRyZXNzIG9mIHRoZSB2YWx1ZSBiZWluZyB0 cmFuc2xhdGVkCisgKi8KK3N0YXRpYyBpbmxpbmUgdWludDE2X3QKK2F0YV9iZTE2X3RvX2NwdSh1 aW50OF90ICpidWYpCit7CisJdWludDE2X3QgdmFsID0gMDsKKworCXZhbCB8PSBidWZbMF0gPDwg ODsKKwl2YWwgfD0gYnVmWzFdOworCisJcmV0dXJuIHZhbDsKK30KKworc3RhdGljIHZvaWQKK2F0 YV9hdGFwaV9wcmludF9wYWNrZXQodWludDhfdCAqcGFja2V0KQoreworCWludCBpOworCisJZHBy aW50KExPR19ERUJVRywgImF0YV9hdGFwaV9wcmludF9wYWNrZXQgY21kOiAweCV4IHBhY2tldDog IiwgcGFja2V0WzBdKTsKKwlmb3IgKGkgPSAwOyBpIDwgQVRBUElfUEFDS0VUX1NJWkU7IGkrKykg eworCQlkcHJpbnQoTE9HX0RFQlVHLCAiJXggIiwgcGFja2V0W2ldKTsKKwl9CisJZHByaW50KExP R19ERUJVRywgIlxuIik7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCithdGFfYXRhcGlf ZGF0YV9yZXF1ZXN0KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlzdHJ1Y3QgYXRh X2RyaXZlICpkcml2ZSA9ICZjaGFubmVsLT5kcml2ZXNbY2hhbm5lbC0+ZHJpdmVdOworCisJYXRh X3NldF9zdGF0dXNfb2soY2hhbm5lbCk7CisJZHJpdmUtPnNlY2NvdW50ID0gQVRBX0lfSU47CisJ ZHJpdmUtPnN0YXR1cyB8PSBBVEFfU19EUlE7CisKKwlhdGFfaXJxX3JhaXNlKGNoYW5uZWwpOwor CisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX2F0YXBpX2NtZF9kb25lKHN0cnVjdCBh dGFfY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2ZSA9ICZjaGFu bmVsLT5kcml2ZXNbY2hhbm5lbC0+ZHJpdmVdOworCisJYXRhX3NldF9zdGF0dXNfb2soY2hhbm5l bCk7CisJZHJpdmUtPnNlY2NvdW50ID0gQVRBX0lfSU4gfCBBVEFfSV9DTUQ7CisKKwlhdGFfaXJx X3JhaXNlKGNoYW5uZWwpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX2F0YXBp X2hhbmRsZV9pbnF1aXJ5KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCwgdWludDhfdCAqcGFj a2V0KQoreworCXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFu bmVsLT5kcml2ZV07CisJc3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCA9IE5VTEw7CisJ c3RydWN0IHNjc2lfaW5xdWlyeV9kYXRhICppbnF1aXJ5X2RhdGEgPSAoc3RydWN0IHNjc2lfaW5x dWlyeV9kYXRhICopcGFja2V0OworCXVpbnQ4X3QgbWF4X2xlbiA9IDA7CisKKwlwaW9fc2V0dXAg PSAmZHJpdmUtPnBpb19zZXR1cDsKKworCW1heF9sZW4gPSBwYWNrZXRbNF07CisJYXNzZXJ0KG1h eF9sZW4gPj0gU0hPUlRfSU5RVUlSWV9MRU5HVEgpOworCisJLyogZm9yIG5vdyB3ZSBpbXBsZW1l bnQgb25seSB0aGUgc2hvcnQgaW5xdWlyeSBjbWQgKi8KKwlpZiAocGFja2V0WzFdICYgMHgwMSkg eworCQlhc3NlcnQoMCk7CisJfSBlbHNlIHsKKwkJbWVtc2V0KGlucXVpcnlfZGF0YSwgMCwgU0hP UlRfSU5RVUlSWV9MRU5HVEgpOworCisJCWlucXVpcnlfZGF0YS0+ZGV2aWNlID0gVF9DRFJPTTsK KwkJaW5xdWlyeV9kYXRhLT5kZXZfcXVhbDIgPSBTSURfUk1COworCQlpbnF1aXJ5X2RhdGEtPnZl cnNpb24gPSBTQ1NJX1JFVl8wOworCQlpbnF1aXJ5X2RhdGEtPnJlc3BvbnNlX2Zvcm1hdCA9IDI7 CisJCWlucXVpcnlfZGF0YS0+YWRkaXRpb25hbF9sZW5ndGggPSBTSE9SVF9JTlFVSVJZX0xFTkdU SCAtIDU7CisKKwkJbWVtY3B5KGlucXVpcnlfZGF0YS0+dmVuZG9yLCAiQkhZVkUgICAiLCBTSURf VkVORE9SX1NJWkUpOworCQltZW1jcHkoaW5xdWlyeV9kYXRhLT5wcm9kdWN0LCAiQVRBUEkgSURF IENEUk9NICIsIFNJRF9QUk9EVUNUX1NJWkUpOworCQltZW1jcHkoaW5xdWlyeV9kYXRhLT5yZXZp c2lvbiwgIjEuMSAiLCBTSURfUkVWSVNJT05fU0laRSk7CisKKwkJYXRhX3Bpb19kb190cmFuc2Zl cihwaW9fc2V0dXAsIFNIT1JUX0lOUVVJUllfTEVOR1RILCBhdGFfYXRhcGlfY21kX2RvbmUsIGNo YW5uZWwtPnVzZV8xNmJpdCk7CisJCWF0YV9hdGFwaV9kYXRhX3JlcXVlc3QoY2hhbm5lbCk7CisJ fQorCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX2F0YXBpX2hhbmRsZV9yZWFkX2Nh cGFjaXR5KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCwgdWludDhfdCAqcGFja2V0KQorewor CXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2 ZV07CisJc3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCA9IE5VTEw7CisJaW50IG5zZWN0 b3JzID0gYmxvY2tpZl9zaXplKGRyaXZlLT5iY3R4dCkgLyBBVEFQSV9CTE9DS19TSVpFOworCisJ cGlvX3NldHVwID0gJmRyaXZlLT5waW9fc2V0dXA7CisKKwlhdGFfY3B1X3RvX2JlMzIocGFja2V0 LCBuc2VjdG9ycyAtIDEpOworCWF0YV9jcHVfdG9fYmUzMihwYWNrZXQgKyA0LCBBVEFQSV9CTE9D S19TSVpFKTsKKworCWF0YV9waW9fZG9fdHJhbnNmZXIocGlvX3NldHVwLCA4LCBhdGFfYXRhcGlf Y21kX2RvbmUsIGNoYW5uZWwtPnVzZV8xNmJpdCk7CisJYXRhX2F0YXBpX2RhdGFfcmVxdWVzdChj aGFubmVsKTsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQgbGJhX3RvX21zZih1aW50OF90 ICpidWYsIGludCBsYmEpCit7CisJbGJhICs9IDE1MDsKKwlidWZbMF0gPSAobGJhIC8gNzUpIC8g NjA7CisJYnVmWzFdID0gKGxiYSAvIDc1KSAlIDYwOworCWJ1ZlsyXSA9IGxiYSAlIDc1OworCisJ cmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX2F0YXBpX2hhbmRsZV9yZWFkX3RvYyhzdHJ1 Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwsIHVpbnQ4X3QgKnBhY2tldCkKK3sKKwlzdHJ1Y3QgYXRh X2RyaXZlICpkcml2ZSA9ICZjaGFubmVsLT5kcml2ZXNbY2hhbm5lbC0+ZHJpdmVdOworCXN0cnVj dCBhdGFfcGlvX3NldHVwICpwaW9fc2V0dXAgPSBOVUxMOworCWludCBuc2VjdG9ycyA9IGJsb2Nr aWZfc2l6ZShkcml2ZS0+YmN0eHQpIC8gQVRBUElfQkxPQ0tfU0laRTsKKworCXVpbnQ4X3QgbXNm ID0gcGFja2V0WzFdICYgMjsKKwl1aW50OF90IGZvcm1hdCA9IHBhY2tldFsyXSAmIDB4MGY7CisJ dWludDhfdCB0cmFja19udW1iZXIgPSBwYWNrZXRbNl07CisJdWludDE2X3QgYWxsb2NhdGlvbl9s ZW5ndGggPSAocGFja2V0WzddIDw8IDgpIHwgcGFja2V0WzhdOworCisJdWludDE2X3QgZGF0YV9s ZW4gPSAwOworCXVpbnQ4X3QgKmRhdGFfem9uZSA9IE5VTEw7CisJdWludDhfdCAqbGVhZF9vdXQg PSBOVUxMOworCisJcGlvX3NldHVwID0gJmRyaXZlLT5waW9fc2V0dXA7CisKKwlhc3NlcnQodHJh Y2tfbnVtYmVyIDw9IDEgfHwgdHJhY2tfbnVtYmVyID09IDB4YWEpOworCWFzc2VydCghZm9ybWF0 KTsKKworCXBhY2tldFsyXSA9IDE7CQkvKiBGaXJzdCBUcmFjayAqLworCXBhY2tldFszXSA9IDE7 CQkvKiBMYXN0IFRyYWNrICovCisKKwlsZWFkX291dCA9IHBhY2tldCArIDQ7CisKKwlpZiAodHJh Y2tfbnVtYmVyIDw9IDEpIHsKKwkJZGF0YV96b25lID0gcGFja2V0ICsgNDsKKwkJbGVhZF9vdXQg PSBwYWNrZXQgKyAxMjsKKworCQlkYXRhX3pvbmVbMF0gPSAwOwkJLyogUmVzZXJ2ZWQgKi8KKwkJ ZGF0YV96b25lWzFdID0gMHgxNDsJCS8qIEFEUiwgY29udHJvbCAqLworCQlkYXRhX3pvbmVbMl0g PSAxOwkJLyogdHJhY2sgbnVtYmVyICovCisJCWRhdGFfem9uZVszXSA9IDA7CQkvKiBSZXNlcnZl ZCAqLworCQlpZiAobXNmKSB7CisJCQlkYXRhX3pvbmVbNF0gPSAwOworCQkJbGJhX3RvX21zZihk YXRhX3pvbmUgKyA1LCAwKTsKKwkJfQorCQllbHNlIHsKKwkJCWF0YV9jcHVfdG9fYmUzMihkYXRh X3pvbmUgKyA0LCAwKTsKKwkJfQorCX0KKworCWxlYWRfb3V0WzBdID0gMDsJCS8qIFJlc2VydmVk ICovCisJbGVhZF9vdXRbMV0gPSAweDE2OwkJLyogQURSLCBjb250cm9sICovCisJbGVhZF9vdXRb Ml0gPSAweGFhOwkJLyogdHJhY2sgbnVtYmVyICovCisJbGVhZF9vdXRbM10gPSAwOwkJLyogUmVz ZXJ2ZWQgKi8KKwlpZiAobXNmKSB7CisJCWxlYWRfb3V0WzRdID0gMDsKKwkJbGJhX3RvX21zZihs ZWFkX291dCArIDUsIG5zZWN0b3JzKTsKKwl9CisJZWxzZSB7CisJCWF0YV9jcHVfdG9fYmUzMihs ZWFkX291dCArIDQsIG5zZWN0b3JzKTsKKwl9CisKKwlkYXRhX2xlbiA9IChsZWFkX291dCAtIHBh Y2tldCkgKyA4OworCWF0YV9jcHVfdG9fYmUxNihwYWNrZXQsIGRhdGFfbGVuIC0gMik7CisKKwlk YXRhX2xlbiA9IChkYXRhX2xlbiA8IGFsbG9jYXRpb25fbGVuZ3RoKSA/IGRhdGFfbGVuIDogYWxs b2NhdGlvbl9sZW5ndGg7CisKKwlhdGFfcGlvX2RvX3RyYW5zZmVyKHBpb19zZXR1cCwgZGF0YV9s ZW4sIGF0YV9hdGFwaV9jbWRfZG9uZSwgY2hhbm5lbC0+dXNlXzE2Yml0KTsKKwlhdGFfYXRhcGlf ZGF0YV9yZXF1ZXN0KGNoYW5uZWwpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRh X2F0YXBpX2hhbmRsZV9yZWFkKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCwgdWludDhfdCAq cGFja2V0KQoreworCXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tj aGFubmVsLT5kcml2ZV07CisJc3RydWN0IGJsb2NraWZfY3R4dCAqYmN0eHQgPSBOVUxMOworCXN0 cnVjdCBhdGFfcGlvX3NldHVwICpwaW9fc2V0dXAgPSBOVUxMOworCXN0cnVjdCBibG9ja2lmX3Jl cSAqYnJlcSA9IE5VTEw7CisKKwl1aW50MTZfdCBzZWN0b3JfY291bnQgPSAwOworCXVpbnQzMl90 IGxiYV9hZGRyZXNzID0gMDsKKwl1aW50NjRfdCBvZmZzZXQ7CisJdWludDY0X3QgY291bnQ7CisJ aW50IGVycjsKKworCWFzc2VydChkcml2ZS0+Ynl0ZV9jb3VudCA+PSBBVEFQSV9CTE9DS19TSVpF KTsKKworCWJjdHh0ID0gZHJpdmUtPmJjdHh0OworCXBpb19zZXR1cCA9ICZkcml2ZS0+cGlvX3Nl dHVwOworCWJyZXEgPSAmcGlvX3NldHVwLT5icmVxOworCisJbGJhX2FkZHJlc3MgPSBhdGFfYmUz Ml90b19jcHUocGFja2V0ICsgMik7CisJc2VjdG9yX2NvdW50ID0gYXRhX2JlMTZfdG9fY3B1KHBh Y2tldCArIDcpOworCisJZHByaW50KExPR19ERUJVRywgImF0YV9hdGFwaV9oYW5kbGVfcmVhZDog c2VjdG9yX2NvdW50OiAlZCwgbGJhX2FkZHJlc3M6IDB4JXhcbiIsCisJICAgICAgIHNlY3Rvcl9j b3VudCwgbGJhX2FkZHJlc3MpOworCisJb2Zmc2V0ID0gKHVpbnQ2NF90KWxiYV9hZGRyZXNzICog QVRBUElfQkxPQ0tfU0laRTsKKwljb3VudCA9ICh1aW50NjRfdClzZWN0b3JfY291bnQgKiBBVEFQ SV9CTE9DS19TSVpFOworCisJZHJpdmUtPmNvdW50ID0gY291bnQ7CisJZHJpdmUtPm9mZnNldCA9 IG9mZnNldDsKKworCWRyaXZlLT5sYmFfbWlkID0gQVRBUElfQkxPQ0tfU0laRSAmIDB4ZmY7CisJ ZHJpdmUtPmxiYV9oaWdoID0gKEFUQVBJX0JMT0NLX1NJWkUgPj4gOCkgJiAweGZmOworCisJZHJp dmUtPnNlY2NvdW50ID0gQVRBX0lfSU47CisKKwlhdGFfcGlvX2RvX3RyYW5zZmVyKHBpb19zZXR1 cCwgQVRBUElfQkxPQ0tfU0laRSwgYXRhX2F0YXBpX2hhbmRsZV9yZWFkX2RvbmUsIGNoYW5uZWwt PnVzZV8xNmJpdCk7CisKKwlhdGFfaW5pdF9ibG9ja19yZXF1ZXN0KGJyZXEsIGNoYW5uZWwsIGRy aXZlLT5vZmZzZXQsCisJCQkgICAgICAgQVRBUElfQkxPQ0tfU0laRSwgYXRhX3Bpb19nZXRfYnVm ZmVyX2RhdGEocGlvX3NldHVwKSk7CisKKwllcnIgPSBibG9ja2lmX3JlYWQoYmN0eHQsIGJyZXEp OworCWFzc2VydCghZXJyKTsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2F0YV9hdGFw aV9jbWQoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQoreworCXN0cnVjdCBhdGFfZHJpdmUg KmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2ZV07CisJc3RydWN0IGF0YV9w aW9fc2V0dXAgKnBpb19zZXR1cCA9IE5VTEw7CisJdWludDhfdCAqcGFja2V0ID0gTlVMTDsKKwl1 aW50OF90IG9wX2NvZGUgPSAwOworCisJcGlvX3NldHVwID0gJmRyaXZlLT5waW9fc2V0dXA7CisJ cGFja2V0ID0gYXRhX3Bpb19nZXRfYnVmZmVyX2RhdGEocGlvX3NldHVwKTsKKworCWF0YV9hdGFw aV9wcmludF9wYWNrZXQocGFja2V0KTsKKworCW9wX2NvZGUgPSBwYWNrZXRbMF07CisKKwlzd2l0 Y2ggKG9wX2NvZGUpIHsKKwljYXNlIElOUVVJUlk6CisJCWF0YV9hdGFwaV9oYW5kbGVfaW5xdWly eShjaGFubmVsLCBwYWNrZXQpOworCQlicmVhazsKKwljYXNlIFJFQURfQ0FQQUNJVFk6CisJCWF0 YV9hdGFwaV9oYW5kbGVfcmVhZF9jYXBhY2l0eShjaGFubmVsLCBwYWNrZXQpOworCQlicmVhazsK KwljYXNlIFBSRVZFTlRfQUxMT1c6CisJCWF0YV9hdGFwaV9jbWRfZG9uZShjaGFubmVsKTsKKwkJ YnJlYWs7CisJY2FzZSBSRUFEX1RPQzoKKwkJYXRhX2F0YXBpX2hhbmRsZV9yZWFkX3RvYyhjaGFu bmVsLCBwYWNrZXQpOworCQlicmVhazsKKwljYXNlIFJFQURfMTA6CisJCWF0YV9hdGFwaV9oYW5k bGVfcmVhZChjaGFubmVsLCBwYWNrZXQpOworCQlicmVhazsKKwljYXNlIFRFU1RfVU5JVF9SRUFE WToKKwkJYXRhX2F0YXBpX2NtZF9kb25lKGNoYW5uZWwpOworCQlicmVhazsKKwlkZWZhdWx0Ogor CQlkcHJpbnQoTE9HX0VSUiwgImF0YV9hdGFwaV9jbWQ6IHVuc3VwcG9ydGVkIGNtZDogJTAyeFxu Iiwgb3BfY29kZSk7CisJCWFzc2VydCgwKTsKKwkJYnJlYWs7CisJfTsKKworCXJldHVybjsKK30K Kworc3RhdGljIHVpbnQ2NF90CithdGFfY29tbWFuZF9ibG9ja19yZWFkKHN0cnVjdCBhdGFfY2hh bm5lbCAqY2hhbm5lbCwgdWludDY0X3Qgb2Zmc2V0KQoreworCXVpbnQ2NF90IHZhbHVlID0gMDsK KwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2ZSA9ICZjaGFubmVsLT5kcml2ZXNbY2hhbm5lbC0+ZHJp dmVdOworCXN0cnVjdCBhdGFfcGlvX3NldHVwICpwaW9fc2V0dXAgPSBOVUxMOworCisJcGlvX3Nl dHVwID0gJmRyaXZlLT5waW9fc2V0dXA7CisKKwlzd2l0Y2ggKG9mZnNldCkgeworCWNhc2UgQVRB X0RBVEFfUkVHOgorCQl2YWx1ZSA9IGF0YV9waW9fZ2V0X3VpbnQocGlvX3NldHVwKTsKKwkJYnJl YWs7CisJY2FzZSBBVEFfRVJST1JfUkVHOgorCQl2YWx1ZSA9IGRyaXZlLT5lcnJvcjsKKwkJZHBy aW50KExPR19ERUJVRywgImF0YV9jb21tYW5kX2Jsb2NrX3JlYWQ6IEFUQV9FUlJPUl9SRUc6ICVs eGhcbiIsIHZhbHVlKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfU0VDQ09VTlRfUkVHOgorCQl2YWx1 ZSA9IGRyaXZlLT5zZWNjb3VudDsKKwkJZHByaW50KExPR19ERUJVRywgImF0YV9jb21tYW5kX2Js b2NrX3JlYWQ6IEFUQV9TRUNDT1VOVF9SRUc6ICVseGhcbiIsIHZhbHVlKTsKKwkJYnJlYWs7CisJ Y2FzZSBBVEFfTEJBX0xPV19SRUc6CisJCXZhbHVlID0gZHJpdmUtPmxiYV9sb3c7CisJCWRwcmlu dChMT0dfREVCVUcsICJhdGFfY29tbWFuZF9ibG9ja19yZWFkOiBBVEFfTEJBX0xPV19SRUc6ICVs eGhcbiIsIHZhbHVlKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfTEJBX01JRF9SRUc6CisJCXZhbHVl ID0gZHJpdmUtPmxiYV9taWQ7CisJCWRwcmludChMT0dfREVCVUcsICJhdGFfY29tbWFuZF9ibG9j a19yZWFkOiBBVEFfTEJBX01JRF9SRUc6ICVseGhcbiIsIHZhbHVlKTsKKwkJYnJlYWs7CisJY2Fz ZSBBVEFfTEJBX0hJR0hfUkVHOgorCQl2YWx1ZSA9IGRyaXZlLT5sYmFfaGlnaDsKKwkJZHByaW50 KExPR19ERUJVRywgImF0YV9jb21tYW5kX2Jsb2NrX3JlYWQ6IEFUQV9MQkFfSElHSF9SRUc6ICVs eGhcbiIsIHZhbHVlKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfSERERVZTRUxfUkVHOgorCQl2YWx1 ZSA9IGRyaXZlLT5oZGRldnNlbDsKKwkJZHByaW50KExPR19ERUJVRywgImF0YV9jb21tYW5kX2Js b2NrX3JlYWQ6IEFUQV9IRERFVlNFTF9SRUc6ICVseGhcbiIsIHZhbHVlKTsKKwkJYnJlYWs7CisJ Y2FzZSBBVEFfU1RBVFVTX1JFRzoKKwkJYXRhX2lycV9sb3dlcihjaGFubmVsKTsKKworCQl2YWx1 ZSA9IGRyaXZlLT5zdGF0dXM7CisJCWRwcmludChMT0dfREVCVUcsICJhdGFfY29tbWFuZF9ibG9j a19yZWFkOiBBVEFfU1RBVFVTX1JFRzogJWx4aFxuIiwgdmFsdWUpOworCQlicmVhazsKKwlkZWZh dWx0OgorCQl2YWx1ZSA9IDA7CisJCWJyZWFrOworCX0KKworCXJldHVybiB2YWx1ZTsKK30KKwor c3RhdGljIHZvaWQKK2F0YV9jb21tYW5kX2Jsb2NrX3dyaXRlKHN0cnVjdCBhdGFfY2hhbm5lbCAq Y2hhbm5lbCwKKwkJdWludDY0X3Qgb2Zmc2V0LCBpbnQgc2l6ZSwgdWludDY0X3QgdmFsdWUpCit7 CisJc3RydWN0IGF0YV9kcml2ZSAqZHJpdmUgPSAmY2hhbm5lbC0+ZHJpdmVzW2NoYW5uZWwtPmRy aXZlXTsKKwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2ZTAgPSAmY2hhbm5lbC0+ZHJpdmVzW0FUQV9N QVNURVJdOworCXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlMSA9ICZjaGFubmVsLT5kcml2ZXNbQVRB X1NMQVZFXTsKKwlzdHJ1Y3QgYXRhX3Bpb19zZXR1cCAqcGlvX3NldHVwID0gTlVMTDsKKworCXVp bnQ4X3QgcmVnX3ZhbHVlOworCisJcGlvX3NldHVwID0gJmRyaXZlLT5waW9fc2V0dXA7CisKKwlz d2l0Y2ggKG9mZnNldCkgeworCWNhc2UgQVRBX0RBVEFfUkVHOgorCQlhdGFfcGlvX3B1dF91aW50 KHBpb19zZXR1cCwgdmFsdWUpOworCQlicmVhazsKKwljYXNlIEFUQV9GRUFUVVJFU19SRUc6CisJ CWRyaXZlMC0+ZmVhdHVyZXMgPSB2YWx1ZTsKKwkJZHJpdmUxLT5mZWF0dXJlcyA9IHZhbHVlOwor CQlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2NvbW1hbmRfYmxvY2tfd3JpdGU6IEFUQV9GRUFUVVJF U19SRUc6ICV4aFxuIiwgKHVpbnQ4X3QpdmFsdWUpOworCQlicmVhazsKKwljYXNlIEFUQV9TRUND T1VOVF9SRUc6CisJCWRyaXZlMC0+c2VjY291bnQgPSB2YWx1ZTsKKwkJZHJpdmUxLT5zZWNjb3Vu dCA9IHZhbHVlOworCQlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2NvbW1hbmRfYmxvY2tfd3JpdGU6 IEFUQV9TRUNDT1VOVF9SRUc6ICV4aFxuIiwgKHVpbnQ4X3QpdmFsdWUpOworCQlicmVhazsKKwlj YXNlIEFUQV9MQkFfTE9XX1JFRzoKKwkJZHJpdmUwLT5sYmFfbG93ID0gdmFsdWU7CisJCWRyaXZl MS0+bGJhX2xvdyA9IHZhbHVlOworCQlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2NvbW1hbmRfYmxv Y2tfd3JpdGU6IEFUQV9MQkFfTE9XX1JFRzogJXhoXG4iLCAodWludDhfdCl2YWx1ZSk7CisJCWJy ZWFrOworCWNhc2UgQVRBX0xCQV9NSURfUkVHOgorCQlkcml2ZTAtPmxiYV9taWQgPSB2YWx1ZTsK KwkJZHJpdmUxLT5sYmFfbWlkID0gdmFsdWU7CisJCWRwcmludChMT0dfREVCVUcsICJhdGFfY29t bWFuZF9ibG9ja193cml0ZTogQVRBX0xCQV9NSURfUkVHOiAleGhcbiIsICh1aW50OF90KXZhbHVl KTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfTEJBX0hJR0hfUkVHOgorCQlkcml2ZTAtPmxiYV9oaWdo ID0gdmFsdWU7CisJCWRyaXZlMS0+bGJhX2hpZ2ggPSB2YWx1ZTsKKwkJZHByaW50KExPR19ERUJV RywgImF0YV9jb21tYW5kX2Jsb2NrX3dyaXRlOiBBVEFfTEJBX0hJR0hfUkVHOiAleGhcbiIsICh1 aW50OF90KXZhbHVlKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfSERERVZTRUxfUkVHOgorCQlyZWdf dmFsdWUgPSB2YWx1ZTsKKworCQlkcml2ZTAtPmhkZGV2c2VsID0gdmFsdWU7CisJCWRyaXZlMS0+ aGRkZXZzZWwgPSB2YWx1ZTsKKwkJZHByaW50KExPR19ERUJVRywgImF0YV9jb21tYW5kX2Jsb2Nr X3dyaXRlOiBBVEFfSERERVZTRUxfUkVHOiAleGhcbiIsIHJlZ192YWx1ZSk7CisKKwkJaWYgKHJl Z192YWx1ZSAmIEFUQV9EX0lCTSkKKwkJCWNoYW5uZWwtPnNpemUgPSBBVEFfU0VDVE9SX1NJWkU7 CisJCWlmIChyZWdfdmFsdWUgJiBBVEFfREVWKEFUQV9TTEFWRSkpIHsKKwkJCWRwcmludChMT0df REVCVUcsICJhdGFfY29tbWFuZF9ibG9ja193cml0ZTogc2VsZWN0IEFUQV9TTEFWRVxuIik7CisJ CQljaGFubmVsLT5kcml2ZSA9IEFUQV9TTEFWRTsKKwkJfQorCQllbHNlIHsKKwkJCWRwcmludChM T0dfREVCVUcsICJhdGFfY29tbWFuZF9ibG9ja193cml0ZTogc2VsZWN0IEFUQV9NQVNURVJcbiIp OworCQkJY2hhbm5lbC0+ZHJpdmUgPSBBVEFfTUFTVEVSOworCQl9CisJCWlmICghYXRhX3NlbGVj dF9kcml2ZV9pc19vayhjaGFubmVsKSkgeworCQkJZHJpdmUxLT5zdGF0dXMgPSBBVEFfRFJJVkVf QUJTRU5UOworCQl9CisJCWJyZWFrOworCWNhc2UgQVRBX0NPTU1BTkRfUkVHOgorCQlkcml2ZTAt PmNvbW1hbmQgPSB2YWx1ZTsKKwkJZHJpdmUxLT5jb21tYW5kID0gdmFsdWU7CisJCWRwcmludChM T0dfREVCVUcsICJhdGFfY29tbWFuZF9ibG9ja193cml0ZTogQVRBX0NPTU1BTkRfUkVHOiAleGhc biIsICh1aW50OF90KXZhbHVlKTsKKwkJYXRhX2hhbmRsZV9jbWQoY2hhbm5lbCwgdmFsdWUpOwor CQlicmVhazsKKwlkZWZhdWx0OgorCQlkcHJpbnQoTE9HX0VSUiwgImF0YV9jb21tYW5kX2Jsb2Nr X3dyaXRlOiB1bnN1cHBvcnRlZCByZWc6JWx4XG4iLCBvZmZzZXQpOworCQlhc3NlcnQoMCk7CisJ CWJyZWFrOworCX0KKworCXJldHVybjsKK30KKworc3RhdGljIHVpbnQ2NF90CithdGFfYWx0c3Rh dHVzX3JlYWQoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQoreworCXN0cnVjdCBhdGFfZHJp dmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2ZV07CisJdWludDY0X3Qg dmFsdWUgPSAwOworCisJdmFsdWUgPSBkcml2ZS0+YWx0c3RhdHVzOworCisJZHByaW50KExPR19E RUJVRywgImF0YV9hbHRzdGF0dXNfcmVhZDogdmFsdWU6ICVsdVxuIiwgdmFsdWUpOworCisJcmV0 dXJuIHZhbHVlOworfQorCitzdGF0aWMgdm9pZAorYXRhX2NvbnRyb2xfd3JpdGUoc3RydWN0IGF0 YV9jaGFubmVsICpjaGFubmVsLAorCQlpbnQgc2l6ZSwgdWludDY0X3QgdmFsdWUpCit7CisJdWlu dDhfdCByZWdfdmFsdWU7CisJc3RydWN0IGF0YV9kcml2ZSAqZHJpdmUgPSAmY2hhbm5lbC0+ZHJp dmVzW2NoYW5uZWwtPmRyaXZlXTsKKworCXJlZ192YWx1ZSA9ICh1aW50OF90KXZhbHVlOworCisJ ZHByaW50KExPR19ERUJVRywgImF0YV9jb250cm9sX3dyaXRlOiBpcnFfZGlzYWJsZWQ6ICVkXG4i LCByZWdfdmFsdWUgJiBBVEFfQV9JRFMpOworCisJaWYgKHJlZ192YWx1ZSAmIEFUQV9BX0lEUykK KwkJZHJpdmUtPmlycV9kaXNhYmxlZCA9IDE7CisJZWxzZQorCQlkcml2ZS0+aXJxX2Rpc2FibGVk ID0gMDsKKworCWlmIChyZWdfdmFsdWUgJiBBVEFfQV9SRVNFVCkKKwkJYXRhX3Nyc3QoY2hhbm5l bCk7CisKKwlyZXR1cm47Cit9CisKKy8qCisgKiBQQ0kgQVRBIGZ1bmN0aW9uIGRlZmluaXRpb25z CisgKi8KK3N0YXRpYyB2b2lkCitwY2lfYXRhX2ludHJfYXNzZXJ0KHZvaWQgKmFyZykKK3sKKwlz dHJ1Y3QgcGNpX2F0YV9zb2Z0YyAqc2MgPSAoc3RydWN0IHBjaV9hdGFfc29mdGMgKilhcmc7CisJ c3RydWN0IHBjaV9kZXZpbnN0ICpwaSA9IHNjLT5hc2NfcGk7CisKKwlwY2lfbGludHJfYXNzZXJ0 KHBpKTsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK3BjaV9hdGFfaW50cl9kZWFzc2Vy dCh2b2lkICphcmcpCit7CisJc3RydWN0IHBjaV9hdGFfc29mdGMgKnNjID0gKHN0cnVjdCBwY2lf YXRhX3NvZnRjICopYXJnOworCXN0cnVjdCBwY2lfZGV2aW5zdCAqcGkgPSBzYy0+YXNjX3BpOwor CisJcGNpX2xpbnRyX2RlYXNzZXJ0KHBpKTsKKworCXJldHVybjsKK30KKworc3RhdGljIGludAor cGNpX2F0YV9wYXJzZV9wYXJhbXMoY29uc3QgY2hhciAqb3B0cywgY2hhciAqb3B0MCwgY2hhciAq b3B0MSwgdWludDhfdCAqbnJfY2hhbm5lbHMpCit7CisJdWludDhfdCBsZW47CisJY2hhciB0bXBf b3B0c1sxMjhdOworCWNoYXIgKmNoMCA9IE5VTEwsICpjaDEgPSBOVUxMOworCXVpbnQ4X3QgaTsK KworCWlmICghb3B0cykgeworCQlkcHJpbnQoTE9HX0VSUiwgInBjaV9hdGFfcGFyc2VfcGFyYW1z OiBvcHRzIHNob3VsZCBiZSBsaWtlOiAlc1xuIiwKKwkJICAgICAgICJYLE1BU1RFUl9YWyxTTEFW RV9YXVs7WSxNQVNURVJfWVssU0xBVkVfWV1dIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlsZW4g PSBzdHJsZW4ob3B0cyk7CisJaWYgKGxlbiA+PSAxMjgpIHsKKwkJZHByaW50KExPR19FUlIsICJw Y2lfYXRhX3BhcnNlX3BhcmFtczogUENJIEFUQSBzdHJpbmcgcGFyYW1zIHRvbyBiaWdcbiIpOwor CQlyZXR1cm4gLTE7CisJfQorCisJc3RyY3B5KHRtcF9vcHRzLCBvcHRzKTsKKworCWNoMCA9IHRt cF9vcHRzOworCisJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisJCWlmICh0bXBfb3B0c1tp XSA9PSBQQ0lfQVRBX0NIX1NFUCkgeworCQkJaWYgKGNoMSkgeworCQkJCWRwcmludChMT0dfRVJS LCAicGNpX2F0YV9wYXJzZV9wYXJhbXM6IHRvIG1hbnkgY2hhbm5lbHNcbiIpOworCQkJCXJldHVy biAtMTsKKwkJCX0KKwkJCXRtcF9vcHRzW2ldID0gJ1wwJzsKKwkJCWNoMSA9IHRtcF9vcHRzICsg aSArIDE7CisJCX0KKwl9CisKKwlpZiAoc3RybGVuKGNoMCkgPj0gNjQpIHsKKwkJZHByaW50KExP R19FUlIsICJwY2lfYXRhX3BhcnNlX3BhcmFtczogdGhlIG5hbWUgb2YgQVRBX1ggY2hhbm5lbCB0 b28gYmlnXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwlzdHJjcHkob3B0MCwgY2gwKTsKKwkqbnJf Y2hhbm5lbHMgPSAxOworCisJaWYgKGNoMSAhPSBOVUxMICYmIHN0cmxlbihjaDEpIDwgNjQpIHsK KwkJc3RyY3B5KG9wdDEsICBjaDEpOworCQkqbnJfY2hhbm5lbHMgPSAyOworCX0KKworCXJldHVy biAwOworfQorCitzdGF0aWMgaW50CitwY2lfYXRhX2luaXQoc3RydWN0IHZtY3R4ICpjdHgsIHN0 cnVjdCBwY2lfZGV2aW5zdCAqcGksIGNoYXIgKm9wdHMsIGludCBhdGFwaSkKK3sKKwlzdHJ1Y3Qg YXRhX2NoYW5uZWwgKmNoYW5uZWwgPSBOVUxMOworCXN0cnVjdCBwY2lfYXRhX3NvZnRjICpwY2lf YXRhX3NjID0gTlVMTDsKKwljaGFyIGNoX29wdHNbMl1bNjRdOworCXVpbnQ4X3QgbnJfY2hhbm5l bHMgPSAwOworCWludCByZXQsIGk7CisKKwlhdGFfb3Blbl9kYmdfZmlsZSgpOworCisJcmV0ID0g cGNpX2F0YV9wYXJzZV9wYXJhbXMob3B0cywgY2hfb3B0c1swXSwgY2hfb3B0c1sxXSwgJm5yX2No YW5uZWxzKTsKKwlpZiAocmV0KSB7CisJCWRwcmludChMT0dfRVJSLCAicGNpX2F0YV9pbml0OiBz b21lIGVycm9ycyB3aXRoIHRoZSBpbnB1dCBjaGVja2luZ1xuIik7CisJCXJldHVybiAtMTsKKwl9 CisKKwlwY2lfYXRhX3NjID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgcGNpX2F0YV9zb2Z0Yykp OworCWlmICghcGNpX2F0YV9zYykKKwkJcmV0dXJuIC0xOworCisJcGNpX2F0YV9zYy0+Y2hhbm5l bHNbQVRBX1hdID0gTlVMTDsKKwlwY2lfYXRhX3NjLT5jaGFubmVsc1tBVEFfWV0gPSBOVUxMOwor CisJZm9yIChpID0gMDsgaSA8IG5yX2NoYW5uZWxzOyBpKyspIHsKKwkJY2hhbm5lbCA9IGF0YV9p bml0KGN0eCwgcGNpX2F0YV9pbnRyX2Fzc2VydCwgcGNpX2F0YV9pbnRyX2RlYXNzZXJ0LAorCQkJ CSAgIHBjaV9hdGFfc2MsIGNoX29wdHNbaV0sIDApOworCQlpZiAoIWNoYW5uZWwpCisJCQljb250 aW51ZTsKKwkJY2hhbm5lbC0+dXNlXzE2Yml0ID0gMDsKKwkJYXNzZXJ0KCFwY2lfYXRhX3NjLT5j aGFubmVsc1tjaGFubmVsLT5pbnRlcmZhY2VdKTsKKwkJcGNpX2F0YV9zYy0+Y2hhbm5lbHNbY2hh bm5lbC0+aW50ZXJmYWNlXSA9IGNoYW5uZWw7CisJfQorCisJLyogZXhpdCBpZiBub25lIG9mIHRo ZSBjaGFubmVscyBhcmUgaW5pdGlhbGl6ZWQgKi8KKwlpZiAoIXBjaV9hdGFfc2MtPmNoYW5uZWxz W0FUQV9YXSAmJiAhcGNpX2F0YV9zYy0+Y2hhbm5lbHNbQVRBX1ldKSB7CisJCWZyZWUocGNpX2F0 YV9zYyk7CisJCXJldHVybiAtMTsKKwl9CisKKwlwaS0+cGlfYXJnID0gcGNpX2F0YV9zYzsKKwlw Y2lfYXRhX3NjLT5hc2NfcGkgPSBwaTsKKworCS8qIGdlbmVyaWMgUENJIEFUQS9BVEFQSSBkZXZp Y2UgQVRBX0lUODIxMUYgKi8KKwlwY2lfc2V0X2NmZ2RhdGExNihwaSwgUENJUl9ERVZJQ0UsIDB4 ODIxMSk7CS8qIEFUQS9BVEFQSSBDb250cm9sbGVyICovCisJcGNpX3NldF9jZmdkYXRhMTYocGks IFBDSVJfVkVORE9SLCAweDEyODMpOwkvKiBXYWxkbyAqLworCisJLyogdGhpcyBpcyBhIHN0b3Jh Z2UgY2xhc3MgZGV2aWNlICovCisJcGNpX3NldF9jZmdkYXRhOChwaSwgUENJUl9DTEFTUywgUENJ Q19TVE9SQUdFKTsKKwkvKiB0aGlzIGlzIGFuIElERS9BVEEgdHlwZSBkZXZpY2UgKi8KKwlwY2lf c2V0X2NmZ2RhdGE4KHBpLCBQQ0lSX1NVQkNMQVNTLCBQQ0lTX1NUT1JBR0VfSURFKTsKKworCXBj aV9zZXRfY2ZnZGF0YTgocGksIFBDSVJfUFJPR0lGLCBQQ0lQX1NUT1JBR0VfSURFX01BU1RFUkRF ViB8CisJCQkgUENJUF9TVE9SQUdFX0lERV9NT0RFUFJJTSB8IFBDSVBfU1RPUkFHRV9JREVfTU9E RVNFQyk7CisKKwlwY2lfZW11bF9hbGxvY19iYXIocGksIFBDSV9CQVIwLCBQQ0lCQVJfSU8sIEFU QV9JT1NJWkUpOworCXBjaV9lbXVsX2FsbG9jX2JhcihwaSwgUENJX0JBUjEsIFBDSUJBUl9JTywg QVRBX0NUTElPU0laRSk7CisJcGNpX2VtdWxfYWxsb2NfYmFyKHBpLCBQQ0lfQkFSMiwgUENJQkFS X0lPLCBBVEFfSU9TSVpFKTsKKwlwY2lfZW11bF9hbGxvY19iYXIocGksIFBDSV9CQVIzLCBQQ0lC QVJfSU8sIEFUQV9DVExJT1NJWkUpOworCXBjaV9lbXVsX2FsbG9jX2JhcihwaSwgUENJX0JBUjQs IFBDSUJBUl9JTywgQVRBX0NIQU5ORUxTICogQVRBX0JNSU9TSVpFKTsKKworCXBjaV9saW50cl9y ZXF1ZXN0KHBpKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50CitwY2lfYXRhX2hkX2lu aXQoc3RydWN0IHZtY3R4ICpjdHgsIHN0cnVjdCBwY2lfZGV2aW5zdCAqcGksIGNoYXIgKm9wdHMp Cit7CisJcmV0dXJuIChwY2lfYXRhX2luaXQoY3R4LCBwaSwgb3B0cywgMCkpOworfQorCitzdGF0 aWMgdm9pZAorcGNpX2F0YV9kbWFfc3RhcnQoc3RydWN0IHBjaV9hdGFfc29mdGMgKnNjLCB1aW50 OF90IGNoKQoreworCXN0cnVjdCB2bWN0eCAqY3R4ID0gTlVMTDsKKwlzdHJ1Y3QgYXRhX2NoYW5u ZWwgKmNoYW5uZWwgPSBOVUxMOworCXN0cnVjdCBibG9ja2lmX2N0eHQgKmJjdHh0ID0gTlVMTDsK KwlzdHJ1Y3QgcGNpX2F0YV9kbWFfdHJhbnNhY3Rpb24gKmRtYV90cmFuc2FjdGlvbiA9IE5VTEw7 CisJc3RydWN0IGJsb2NraWZfcmVxICpicmVxID0gTlVMTDsKKworCXN0cnVjdCBwcmRfZW50cnkg KnByZHQgPSBOVUxMOworCXN0cnVjdCBwcmRfZW50cnkgKmVudHJ5ID0gTlVMTDsKKwl1aW50MzJf dCBwcmR0X2FkZHJlc3M7CisJdWludDMyX3QgaW5kZXg7CisJdWludDMyX3QgYnl0ZV9jb3VudDsK Kwl2b2lkICplbnRyeV9idWZmID0gTlVMTDsKKwlpbnQgZXJyOworCisJY2hhbm5lbCA9IHNjLT5j aGFubmVsc1tjaF07CisKKwljdHggPSBjaGFubmVsLT52bV9jdHg7CisJYXNzZXJ0KGN0eCAhPSBO VUxMKTsKKworCWJjdHh0ID0gY2hhbm5lbC0+ZHJpdmVzW2NoYW5uZWwtPmRyaXZlXS5iY3R4dDsK KwlkbWFfdHJhbnNhY3Rpb24gPSAmc2MtPmRtYV90cmFuc2FjdGlvbnNbY2hdOworCisJYXNzZXJ0 KGRtYV90cmFuc2FjdGlvbi0+c3RhcnRlZCk7CisKKwlhc3NlcnQoKChzYy0+Y21kW2NoXSAmIEFU QV9CTUNNRF9XUklURV9SRUFEKSAmJiBkbWFfdHJhbnNhY3Rpb24tPm9wX2RpciA9PSBBVEFfRE1B X1JFQUQpIHx8CisJCSghKHNjLT5jbWRbY2hdICYgQVRBX0JNQ01EX1dSSVRFX1JFQUQpICYmIGRt YV90cmFuc2FjdGlvbi0+b3BfZGlyID09IEFUQV9ETUFfV1JJVEUpKTsKKworCXNjLT5zdGF0W2No XSB8PSBBVEFfQk1TVEFUX0FDVElWRTsKKworCS8qIHByZHRfYWRkcmVzcyBpcyB0aGUgcGh5c2lj YWwgYWRkcmVzcyBvZiB0aGUgcHJkdCBpbiB0aGUgZ3Vlc3QgbWVtb3J5ICovCisJcHJkdF9hZGRy ZXNzID0gc2MtPnByZHRbY2hdOworCisJLyogbWFwIHRoZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNz IGludG8gdGhlIGhvc3QgdmlydHVhbCBhZGRyZXNzICovCisJcHJkdCA9IHBhZGRyX2d1ZXN0Mmhv c3QoY3R4LCBwcmR0X2FkZHJlc3MsIEFUQV9ETUFfUFJEVF9TSVpFKTsKKwlhc3NlcnQocHJkdCAh PSBOVUxMKTsKKworCWJyZXEgPSAmZG1hX3RyYW5zYWN0aW9uLT5icmVxOworCWJyZXEtPmJyX3Bh cmFtID0gY2hhbm5lbDsKKwlicmVxLT5icl9jYWxsYmFjayA9IGF0YV9oYW5kbGVfYmxvY2tfcmVx dWVzdDsKKwlicmVxLT5icl9vZmZzZXQgPSBkbWFfdHJhbnNhY3Rpb24tPm9mZnNldDsKKworCWRt YV90cmFuc2FjdGlvbi0+aXNfZW90ID0gMDsKKwlpbmRleCA9IDA7CisJd2hpbGUgKCFkbWFfdHJh bnNhY3Rpb24tPmlzX2VvdCAmJiBkbWFfdHJhbnNhY3Rpb24tPm5ieXRlcyA+IDApIHsKKwkJZW50 cnkgPSBwcmR0ICsgaW5kZXg7CisKKwkJZW50cnlfYnVmZiA9IHBhZGRyX2d1ZXN0Mmhvc3QoY3R4 LCBlbnRyeS0+cHJkX2FkZHJlc3MsIGVudHJ5LT5ieXRlX2NvdW50KTsKKwkJYnl0ZV9jb3VudCA9 IGVudHJ5LT5ieXRlX2NvdW50ID8gZW50cnktPmJ5dGVfY291bnQgOiBBVEFfRE1BX01BWF9QUkRf Q09VTlQ7CisKKwkJaWYgKGJ5dGVfY291bnQgPiBkbWFfdHJhbnNhY3Rpb24tPm5ieXRlcykgewor CQkJZHByaW50KExPR19FUlIsICJwY2lfYXRhX2RtYV9zdGFydDogdGhlIFBSRCBlbnRyeSBjb250 YWlucyAlcyIsCisJCQkgICAgICAgIm1vcmUgYnl0ZXMgdGhhbiB0aGUgQVRBIHRyYW5zZmVyIHNp emVcbiIpOworCQkJYnl0ZV9jb3VudCA9IGRtYV90cmFuc2FjdGlvbi0+bmJ5dGVzOworCQl9CisK KwkJaWYgKGluZGV4ID09IEJMT0NLSUZfSU9WX01BWCkgeworCQkJZHByaW50KExPR19FUlIsICJw Y2lfYXRhX2RtYV9zdGFydDogdGhlIFBSRCBUYWJsZSBjb250YWlucyAlcyIsCisJCQkgICAgICAg Im1vcmUgdGhhbiBCTE9DS0lGX0lPVl9NQVggZW50cmllc1xuIik7CisJCQlicmVhazsKKwkJfQor CisJCWJyZXEtPmJyX2lvdltpbmRleF0uaW92X2xlbiA9IGJ5dGVfY291bnQ7CisJCWJyZXEtPmJy X2lvdltpbmRleF0uaW92X2Jhc2UgPSBlbnRyeV9idWZmOworCisJCWRtYV90cmFuc2FjdGlvbi0+ bmJ5dGVzIC09IGJ5dGVfY291bnQ7CisKKwkJaWYgKGVudHJ5LT52ZW5kb3Jfc3BlY2lmaWMgJiBB VEFfRE1BX1BSRFRfRU9UKQorCQkJZG1hX3RyYW5zYWN0aW9uLT5pc19lb3QgPSAxOworCisJCWlu ZGV4Kys7CisJfQorCisJYnJlcS0+YnJfaW92Y250ID0gaW5kZXg7CisKKwlzYy0+c3RhdFtjaF0g fD0gQVRBX0JNU1RBVF9JTlRFUlJVUFQ7CisKKwkvKgorCSAqIFVzZSBhc3luY2hyb25vdXMgb3Bl cmF0aW9ucyBmb3IgcmVhZCAvIHdyaXRlIG9uIHRoZSBibG9jazsKKwkgKiB1cGRhdGUgdGhlIHN0 YXR1cyByZWdpc3RlcnMgYW5kIG5vdGlmeSB0aGUgZ3Vlc3Qgb3BlcmF0aW5nCisJICogc3lzdGVt IHVzaW5nIGFuIGludGVycnVwdCBpbiB0aGUgYXRhX2hhbmRsZV9ibG9ja19yZXF1ZXN0IGNhbGxi YWNrCisJICovCisJaWYgKGRtYV90cmFuc2FjdGlvbi0+b3BfZGlyID09IEFUQV9ETUFfUkVBRCkg eworCQllcnIgPSBibG9ja2lmX3JlYWQoYmN0eHQsIGJyZXEpOworCX0KKwllbHNlIGlmIChkbWFf dHJhbnNhY3Rpb24tPm9wX2RpciA9PSBBVEFfRE1BX1dSSVRFKSB7CisJCWVyciA9IGJsb2NraWZf d3JpdGUoYmN0eHQsIGJyZXEpOworCX0KKwllbHNlIHsKKwkJYXNzZXJ0KDApOworCX0KKworCWFz c2VydCghZXJyKTsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK3BjaV9hdGFfZG1hX3N0 b3Aoc3RydWN0IHBjaV9hdGFfc29mdGMgKnNjLCB1aW50OF90IGNoKQoreworCXN0cnVjdCBhdGFf Y2hhbm5lbCAqY2hhbm5lbCA9IE5VTEw7CisJc3RydWN0IHBjaV9hdGFfZG1hX3RyYW5zYWN0aW9u ICpkbWFfdHJhbnNhY3Rpb24gPSBOVUxMOworCisJY2hhbm5lbCA9IHNjLT5jaGFubmVsc1tjaF07 CisJZG1hX3RyYW5zYWN0aW9uID0gJnNjLT5kbWFfdHJhbnNhY3Rpb25zW2NoXTsKKworCWlmKCFk bWFfdHJhbnNhY3Rpb24tPnN0YXJ0ZWQpIHsKKwkJcmV0dXJuOworCX0KKworCWlmIChkbWFfdHJh bnNhY3Rpb24tPmlzX2VvdCAmJiBkbWFfdHJhbnNhY3Rpb24tPm5ieXRlcyA9PSAwKSB7CisJCXNj LT5zdGF0W2NoXSB8PSBBVEFfQk1TVEFUX0lOVEVSUlVQVDsKKwkJc2MtPnN0YXRbY2hdICY9IH5B VEFfQk1TVEFUX0VSUk9SOworCQlzYy0+c3RhdFtjaF0gJj0gfkFUQV9CTVNUQVRfQUNUSVZFOwor CX0KKwllbHNlIGlmICghZG1hX3RyYW5zYWN0aW9uLT5pc19lb3QgJiYgZG1hX3RyYW5zYWN0aW9u LT5uYnl0ZXMgPT0gMCkgeworCQlzYy0+c3RhdFtjaF0gfD0gQVRBX0JNU1RBVF9JTlRFUlJVUFQ7 CisJCXNjLT5zdGF0W2NoXSAmPSB+QVRBX0JNU1RBVF9FUlJPUjsKKwkJc2MtPnN0YXRbY2hdIHw9 IEFUQV9CTVNUQVRfQUNUSVZFOworCQlkcHJpbnQoTE9HX0VSUiwgInBjaV9hdGFfZG1hX3N0b3A6 IERNQSBQUkRUIHRyYW5zZmVyIHdhcyAlcyIsCisJCSAgICAgICAibGFyZ2VyIHRoYW4gdGhlIEFU QSB0cmFuc2ZlciBzaXplXG4iKTsKKwl9CisJZWxzZSBpZiAoZG1hX3RyYW5zYWN0aW9uLT5pc19l b3QgJiYgZG1hX3RyYW5zYWN0aW9uLT5uYnl0ZXMgPiAwKSB7CisJCXNjLT5zdGF0W2NoXSAmPSB+ QVRBX0JNU1RBVF9JTlRFUlJVUFQ7CisJCXNjLT5zdGF0W2NoXSAmPSB+QVRBX0JNU1RBVF9FUlJP UjsKKwkJc2MtPnN0YXRbY2hdICY9IH5BVEFfQk1TVEFUX0FDVElWRTsKKwkJZHByaW50KExPR19F UlIsICJwY2lfYXRhX2RtYV9zdG9wOiBETUEgUFJEVCB0cmFuc2ZlciB3YXMgJXMiLAorCQkgICAg ICAgInNtYWxsZXIgdGhhbiB0aGUgQVRBIHRyYW5zZmVyIHNpemVcbiIpOworCX0KKwllbHNlIGlm ICghZG1hX3RyYW5zYWN0aW9uLT5pc19lb3QgJiYgZG1hX3RyYW5zYWN0aW9uLT5uYnl0ZXMgPiAw KSB7CisJCXNjLT5zdGF0W2NoXSB8PSBBVEFfQk1TVEFUX0VSUk9SOworCQlkcHJpbnQoTE9HX0VS UiwgInBjaV9hdGFfZG1hX3N0b3A6IHRoZSBQUkQgVGFibGUgY29udGFpbnMgJXMiLAorCQkgICAg ICAgIm1vcmUgdGhhbiBCTE9DS0lGX0lPVl9NQVggZW50cmllc1xuIik7CisJfQorCisJZG1hX3Ry YW5zYWN0aW9uLT5zdGFydGVkID0gMDsKKworCXJldHVybjsKK30KKworc3RhdGljIHVpbnQ2NF90 CitwY2lfYXRhX2J1c19tYXN0ZXJfcmVhZChzdHJ1Y3QgcGNpX2F0YV9zb2Z0YyAqc2MsIHVpbnQ2 NF90IG9mZnNldCkKK3sKKwl1aW50NjRfdCB2YWx1ZSA9IDA7CisKKwlzd2l0Y2ggKG9mZnNldCkg eworCWNhc2UgQVRBX0JNQ01EX1hfUkVHOgorCQl2YWx1ZSA9IHNjLT5jbWRbQVRBX1hdOworCQlk cHJpbnQoTE9HX0RFQlVHLCAicGNpX2F0YV9idXNfbWFzdGVyX3JlYWQ6IEFUQV9CTUNNRF9YX1JF RzogJWx1XG4iLCB2YWx1ZSk7CisJCWJyZWFrOworCWNhc2UgQVRBX0JNU1RBVF9YX1JFRzoKKwkJ dmFsdWUgPSBzYy0+c3RhdFtBVEFfWF07CisJCWRwcmludChMT0dfREVCVUcsICJwY2lfYXRhX2J1 c19tYXN0ZXJfcmVhZDogQVRBX0JNU1RBVF9YX1JFRzogJWx1XG4iLCB2YWx1ZSk7CisJCWJyZWFr OworCWNhc2UgQVRBX0JNUFJEVF9YX1JFRzoKKwkJdmFsdWUgPSBzYy0+cHJkdFtBVEFfWF07CisJ CWRwcmludChMT0dfREVCVUcsICJwY2lfYXRhX2J1c19tYXN0ZXJfcmVhZDogQVRBX0JNUFJEVF9Y X1JFRzogJWx1XG4iLCB2YWx1ZSk7CisJCWJyZWFrOworCWNhc2UgQVRBX0JNQ01EX1lfUkVHOgor CQl2YWx1ZSA9IHNjLT5jbWRbQVRBX1ldOworCQlkcHJpbnQoTE9HX0RFQlVHLCAicGNpX2F0YV9i dXNfbWFzdGVyX3JlYWQ6IEFUQV9CTUNNRF9ZX1JFRzogJWx1XG4iLCB2YWx1ZSk7CisJCWJyZWFr OworCWNhc2UgQVRBX0JNU1RBVF9ZX1JFRzoKKwkJdmFsdWUgPSBzYy0+c3RhdFtBVEFfWV07CisJ CWRwcmludChMT0dfREVCVUcsICJwY2lfYXRhX2J1c19tYXN0ZXJfcmVhZDogQVRBX0JNU1RBVF9Z X1JFRzogJWx1XG4iLCB2YWx1ZSk7CisJCWJyZWFrOworCWNhc2UgQVRBX0JNUFJEVF9ZX1JFRzoK KwkJdmFsdWUgPSBzYy0+cHJkdFtBVEFfWV07CisJCWRwcmludChMT0dfREVCVUcsICJwY2lfYXRh X2J1c19tYXN0ZXJfcmVhZDogQVRBX0JNUFJEVF9ZX1JFRzogJWx1XG4iLCB2YWx1ZSk7CisJCWJy ZWFrOworCWRlZmF1bHQ6CisJCXZhbHVlID0gMDsKKwkJYnJlYWs7CisJfQorCisJcmV0dXJuIHZh bHVlOworfQorCitzdGF0aWMgdm9pZAorcGNpX2F0YV9idXNfbWFzdGVyX3dyaXRlKHN0cnVjdCBw Y2lfYXRhX3NvZnRjICpzYywKKwkJdWludDY0X3Qgb2Zmc2V0LCBpbnQgc2l6ZSwgdWludDY0X3Qg dmFsdWUpCit7CisKKwl1aW50OF90IHJlZ192YWx1ZTsKKworCWlmIChvZmZzZXQgIT0gQVRBX0JN UFJEVF9YX1JFRyAmJiBvZmZzZXQgIT0gQVRBX0JNUFJEVF9ZX1JFRyAmJiBzaXplICE9IDEpCisJ CXJldHVybjsKKwlpZiAoKG9mZnNldCA9PSBBVEFfQk1QUkRUX1hfUkVHIHx8IG9mZnNldCA9PSBB VEFfQk1QUkRUX1lfUkVHKSAmJiBzaXplICE9IDQpCisJCXJldHVybjsKKworCXN3aXRjaCAob2Zm c2V0KSB7CisJY2FzZSBBVEFfQk1DTURfWF9SRUc6CisJCXJlZ192YWx1ZSA9IHNjLT5jbWRbQVRB X1hdID0gKHVpbnQ4X3QpdmFsdWU7CisKKwkJZHByaW50KExPR19ERUJVRywgInBjaV9hdGFfYnVz X21hc3Rlcl93cml0ZVtYXTogQVRBX0JNQ01EX1NUQVJUX1NUT1A6ICVkXG4iLAorCQkgICAgICAg cmVnX3ZhbHVlICYgQVRBX0JNQ01EX1NUQVJUX1NUT1ApOworCQlpZiAocmVnX3ZhbHVlICYgQVRB X0JNQ01EX1NUQVJUX1NUT1ApIHsKKwkJCXBjaV9hdGFfZG1hX3N0YXJ0KHNjLCBBVEFfWCk7CisJ CX0KKwkJZWxzZSB7CisJCQlwY2lfYXRhX2RtYV9zdG9wKHNjLCBBVEFfWCk7CisJCX0KKworCQlk cHJpbnQoTE9HX0RFQlVHLCAicGNpX2F0YV9idXNfbWFzdGVyX3dyaXRlW1hdOiBBVEFfQk1DTURf V1JJVEVfUkVBRDogJWRcbiIsCisJCSAgICAgICByZWdfdmFsdWUgJiBBVEFfQk1DTURfV1JJVEVf UkVBRCk7CisJCWJyZWFrOworCWNhc2UgQVRBX0JNU1RBVF9YX1JFRzoKKwkJcmVnX3ZhbHVlID0g c2MtPnN0YXRbQVRBX1hdID0gKHVpbnQ4X3QpdmFsdWU7CisJCWRwcmludChMT0dfREVCVUcsICJw Y2lfYXRhX2J1c19tYXN0ZXJfd3JpdGVbWF06IEFUQV9CTVNUQVRfSU5URVJSVVBUOiAlZCwgQVRB X0JNU1RBVF9FUlJPUjogJWRcbiIsCisJCQkJcmVnX3ZhbHVlICAmIEFUQV9CTVNUQVRfSU5URVJS VVBULCByZWdfdmFsdWUgJiBBVEFfQk1TVEFUX0VSUk9SKTsKKwkJaWYgKHJlZ192YWx1ZSAmIEFU QV9CTVNUQVRfSU5URVJSVVBUKQorCQkJc2MtPnN0YXRbQVRBX1hdICY9IH5BVEFfQk1TVEFUX0lO VEVSUlVQVDsKKwkJaWYgKHJlZ192YWx1ZSAmIEFUQV9CTVNUQVRfRVJST1IpCisJCQlzYy0+c3Rh dFtBVEFfWF0gJj0gfkFUQV9CTVNUQVRfRVJST1I7CisJCWJyZWFrOworCWNhc2UgQVRBX0JNUFJE VF9YX1JFRzoKKwkJZHByaW50KExPR19ERUJVRywgInBjaV9hdGFfYnVzX21hc3Rlcl93cml0ZVtY XTogQVRBX0JNUFJEVF9YX1JFRzogMHgleFxuIiwgKHVpbnQzMl90KXZhbHVlKTsKKwkJc2MtPnBy ZHRbQVRBX1hdID0gdmFsdWU7CisJCWJyZWFrOworCWNhc2UgQVRBX0JNQ01EX1lfUkVHOgorCQly ZWdfdmFsdWUgPSBzYy0+Y21kW0FUQV9ZXSA9ICh1aW50OF90KXZhbHVlOworCisJCWRwcmludChM T0dfREVCVUcsICJwY2lfYXRhX2J1c19tYXN0ZXJfd3JpdGVbWV06IEFUQV9CTUNNRF9TVEFSVF9T VE9QOiAlZFxuIiwKKwkJICAgICAgIHJlZ192YWx1ZSAmIEFUQV9CTUNNRF9TVEFSVF9TVE9QKTsK KwkJaWYgKHJlZ192YWx1ZSAmIEFUQV9CTUNNRF9TVEFSVF9TVE9QKSB7CisJCQlwY2lfYXRhX2Rt YV9zdGFydChzYywgQVRBX1kpOworCQl9CisJCWVsc2UgeworCQkJcGNpX2F0YV9kbWFfc3RvcChz YywgQVRBX1kpOworCQl9CisKKwkJZHByaW50KExPR19ERUJVRywgInBjaV9hdGFfYnVzX21hc3Rl cl93cml0ZVtZXTogQVRBX0JNQ01EX1dSSVRFX1JFQUQ6ICVkXG4iLAorCQkgICAgICAgcmVnX3Zh bHVlICYgQVRBX0JNQ01EX1dSSVRFX1JFQUQpOworCQlicmVhazsKKwljYXNlIEFUQV9CTVNUQVRf WV9SRUc6CisJCXJlZ192YWx1ZSA9IHNjLT5zdGF0W0FUQV9ZXSA9ICh1aW50OF90KXZhbHVlOwor CQlkcHJpbnQoTE9HX0RFQlVHLCAicGNpX2F0YV9idXNfbWFzdGVyX3dyaXRlW1ldOiBBVEFfQk1T VEFUX0lOVEVSUlVQVDogJWQsIEFUQV9CTVNUQVRfRVJST1I6ICVkXG4iLAorCQkJCXJlZ192YWx1 ZSAgJiBBVEFfQk1TVEFUX0lOVEVSUlVQVCwgcmVnX3ZhbHVlICYgQVRBX0JNU1RBVF9FUlJPUik7 CisJCWlmIChyZWdfdmFsdWUgJiBBVEFfQk1TVEFUX0lOVEVSUlVQVCkKKwkJCXNjLT5zdGF0W0FU QV9ZXSAmPSB+QVRBX0JNU1RBVF9JTlRFUlJVUFQ7CisJCWlmIChyZWdfdmFsdWUgJiBBVEFfQk1T VEFUX0VSUk9SKQorCQkJc2MtPnN0YXRbQVRBX1ldICY9IH5BVEFfQk1TVEFUX0VSUk9SOworCQli cmVhazsKKwljYXNlIEFUQV9CTVBSRFRfWV9SRUc6CisJCWRwcmludChMT0dfREVCVUcsICJwY2lf YXRhX2J1c19tYXN0ZXJfd3JpdGVbWV06IEFUQV9CTVBSRFRfWF9SRUc6IDB4JXhcbiIsICh1aW50 MzJfdCl2YWx1ZSk7CisJCXNjLT5wcmR0W0FUQV9ZXSA9ICh1aW50MzJfdCl2YWx1ZTsKKwkJYnJl YWs7CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCisJcmV0dXJuOworfQorCitzdGF0aWMgdWlu dDY0X3QKK3BjaV9hdGFfcmVhZChzdHJ1Y3Qgdm1jdHggKmN0eCwgaW50IHZjcHUsIHN0cnVjdCBw Y2lfZGV2aW5zdCAqcGksIGludCBiYXJpZHgsCisJCXVpbnQ2NF90IG9mZnNldCwgaW50IHNpemUp Cit7CisJc3RydWN0IHBjaV9hdGFfc29mdGMgKnNjID0gcGktPnBpX2FyZzsKKwl1aW50NjRfdCB2 YWx1ZSA9IDA7CisKKwlzd2l0Y2ggKGJhcmlkeCkgeworCWNhc2UgUENJX0JBUjA6CisJCWlmICgh c2MtPmNoYW5uZWxzW0FUQV9YXSkKKwkJCWJyZWFrOworCQlhc3NlcnQoYXRhX2NoYW5uZWxfaXNf b2soc2MtPmNoYW5uZWxzW0FUQV9YXSwgQVRBX1gpKTsKKwkJdmFsdWUgPSBhdGFfY29tbWFuZF9i bG9ja19yZWFkKHNjLT5jaGFubmVsc1tBVEFfWF0sIG9mZnNldCk7CisJCWJyZWFrOworCWNhc2Ug UENJX0JBUjE6CisJCWlmICghc2MtPmNoYW5uZWxzW0FUQV9YXSkKKwkJCWJyZWFrOworCQlhc3Nl cnQoYXRhX2NoYW5uZWxfaXNfb2soc2MtPmNoYW5uZWxzW0FUQV9YXSwgQVRBX1gpKTsKKwkJdmFs dWUgPSBhdGFfYWx0c3RhdHVzX3JlYWQoc2MtPmNoYW5uZWxzW0FUQV9YXSk7CisJCWJyZWFrOwor CWNhc2UgUENJX0JBUjI6CisJCWlmICghc2MtPmNoYW5uZWxzW0FUQV9ZXSkKKwkJCWJyZWFrOwor CQlhc3NlcnQoYXRhX2NoYW5uZWxfaXNfb2soc2MtPmNoYW5uZWxzW0FUQV9ZXSwgQVRBX1kpKTsK KwkJdmFsdWUgPSBhdGFfY29tbWFuZF9ibG9ja19yZWFkKHNjLT5jaGFubmVsc1tBVEFfWV0sIG9m ZnNldCk7CisJCWJyZWFrOworCWNhc2UgUENJX0JBUjM6CisJCWlmICghc2MtPmNoYW5uZWxzW0FU QV9ZXSkKKwkJCWJyZWFrOworCQlhc3NlcnQoYXRhX2NoYW5uZWxfaXNfb2soc2MtPmNoYW5uZWxz W0FUQV9ZXSwgQVRBX1kpKTsKKwkJdmFsdWUgPSBhdGFfYWx0c3RhdHVzX3JlYWQoc2MtPmNoYW5u ZWxzW0FUQV9ZXSk7CisJCWJyZWFrOworCWNhc2UgUENJX0JBUjQ6CisJCXZhbHVlID0gcGNpX2F0 YV9idXNfbWFzdGVyX3JlYWQoc2MsIG9mZnNldCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWFz c2VydCgwKTsKKwkJYnJlYWs7CisJfQorCisJcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgdm9p ZAorcGNpX2F0YV93cml0ZShzdHJ1Y3Qgdm1jdHggKmN0eCwgaW50IHZjcHUsIHN0cnVjdCBwY2lf ZGV2aW5zdCAqcGksCisJCWludCBiYXJpZHgsIHVpbnQ2NF90IG9mZnNldCwgaW50IHNpemUsIHVp bnQ2NF90IHZhbHVlKQoreworCXN0cnVjdCBwY2lfYXRhX3NvZnRjICpzYyA9IHBpLT5waV9hcmc7 CisKKwlzd2l0Y2ggKGJhcmlkeCkgeworCWNhc2UgUENJX0JBUjA6CisJCWlmICghc2MtPmNoYW5u ZWxzW0FUQV9YXSkKKwkJCWJyZWFrOworCQlhc3NlcnQoYXRhX2NoYW5uZWxfaXNfb2soc2MtPmNo YW5uZWxzW0FUQV9YXSwgQVRBX1gpKTsKKwkJYXRhX2NvbW1hbmRfYmxvY2tfd3JpdGUoc2MtPmNo YW5uZWxzW0FUQV9YXSwgb2Zmc2V0LCBzaXplLCB2YWx1ZSk7CisJCWJyZWFrOworCWNhc2UgUENJ X0JBUjE6CisJCWlmICghc2MtPmNoYW5uZWxzW0FUQV9YXSkKKwkJCWJyZWFrOworCQlhc3NlcnQo YXRhX2NoYW5uZWxfaXNfb2soc2MtPmNoYW5uZWxzW0FUQV9YXSwgQVRBX1gpKTsKKwkJYXRhX2Nv bnRyb2xfd3JpdGUoc2MtPmNoYW5uZWxzW0FUQV9YXSwgc2l6ZSwgdmFsdWUpOworCQlicmVhazsK KwljYXNlIFBDSV9CQVIyOgorCQlpZiAoIXNjLT5jaGFubmVsc1tBVEFfWV0pCisJCQlicmVhazsK KwkJYXNzZXJ0KGF0YV9jaGFubmVsX2lzX29rKHNjLT5jaGFubmVsc1tBVEFfWV0sIEFUQV9ZKSk7 CisJCWF0YV9jb21tYW5kX2Jsb2NrX3dyaXRlKHNjLT5jaGFubmVsc1tBVEFfWV0sIG9mZnNldCwg c2l6ZSwgdmFsdWUpOworCQlicmVhazsKKwljYXNlIFBDSV9CQVIzOgorCQlpZiAoIXNjLT5jaGFu bmVsc1tBVEFfWV0pCisJCQlicmVhazsKKwkJYXNzZXJ0KGF0YV9jaGFubmVsX2lzX29rKHNjLT5j aGFubmVsc1tBVEFfWV0sIEFUQV9ZKSk7CisJCWF0YV9jb250cm9sX3dyaXRlKHNjLT5jaGFubmVs c1tBVEFfWV0sIHNpemUsIHZhbHVlKTsKKwkJYnJlYWs7CisJY2FzZSBQQ0lfQkFSNDoKKwkJcGNp X2F0YV9idXNfbWFzdGVyX3dyaXRlKHNjLCBvZmZzZXQsIHNpemUsIHZhbHVlKTsKKwkJYnJlYWs7 CisJZGVmYXVsdDoKKwkJYXNzZXJ0KDApOworCQlicmVhazsKKwl9CisKKwlyZXR1cm47Cit9CisK Ky8qCisgKiBMUEMgQVRBIGZ1bmN0aW9uIGRlZmluaXRpb25zCisgKi8KK3N0YXRpYyB2b2lkCits cGNfYXRhX2ludHJfYXNzZXJ0KHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgbHBjX2F0YV9zb2Z0YyAq c2NfbHBjX2F0YSA9IChzdHJ1Y3QgbHBjX2F0YV9zb2Z0YyAqKWFyZzsKKwlzdHJ1Y3Qgdm1jdHgg KmxwY19jdHggPSBzY19scGNfYXRhLT5jaGFubmVsLT52bV9jdHg7CisKKwl2bV9pc2FfcHVsc2Vf aXJxKGxwY19jdHgsIHNjX2xwY19hdGEtPmlycSwgc2NfbHBjX2F0YS0+aXJxKTsKKworCXJldHVy bjsKK30KKworc3RhdGljIHZvaWQKK2xwY19hdGFfaW50cl9kZWFzc2VydCh2b2lkICphcmcpCit7 CisJLyoKKwkgKiBUaGUgQVRBIGRldmljZXMgb24gdGhlIExQQyBidXMgZ2VuZXJhdGUgZWRnZSB0 cmlnZ2VyZWQgaW50ZXJydXB0cworCSAqIHNvIG5vdGhpbmcgbW9yZSB0byBkbyBoZXJlCisJICov CisKKwlyZXR1cm47Cit9CisKK2ludAorbHBjX2F0YV9pbml0KHN0cnVjdCB2bWN0eCAqY3R4LCBj b25zdCBjaGFyICpvcHRzKQoreworCXN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCA9IE5VTEw7 CisJc3RydWN0IGlub3V0X3BvcnQgaW9wLCBpb2N0bHA7CisJaW50IGNoX2F0YSA9IC0xOworCWlu dCBlcnI7CisKKwlhdGFfb3Blbl9kYmdfZmlsZSgpOworCisJYXNzZXJ0KG9wdHNbMF0gPT0gJzAn IHx8IG9wdHNbMF0gPT0gJzEnKTsKKwljaF9hdGEgPSBvcHRzWzBdIC0gJzAnOworCisJaWYgKGxw Y19hdGFfc2NbY2hfYXRhXS5jaGFubmVsKSB7CisJCWRwcmludChMT0dfRVJSLCAibHBjX2F0YV9p bml0OiB0aGUgTFBDIGF0YSVkIGlzIGluaXRpYWxpemVkXG4iLCBjaF9hdGEpOworCQlyZXR1cm4g LTE7CisJfQorCisJY2hhbm5lbCA9IGF0YV9pbml0KGN0eCwgbHBjX2F0YV9pbnRyX2Fzc2VydCwg bHBjX2F0YV9pbnRyX2RlYXNzZXJ0LCAmbHBjX2F0YV9zY1tjaF9hdGFdLCBvcHRzLCAxKTsKKwlp ZiAoIWNoYW5uZWwpCisJCXJldHVybiAtMTsKKworCWFzc2VydChjaF9hdGEgPT0gY2hhbm5lbC0+ aW50ZXJmYWNlKTsKKwljaGFubmVsLT51c2VfMTZiaXQgPSAxOworCisJbHBjX2F0YV9zY1tjaF9h dGFdLmNoYW5uZWwgPSBjaGFubmVsOworCisJYnplcm8oJmlvcCwgc2l6ZW9mKHN0cnVjdCBpbm91 dF9wb3J0KSk7CisJaW9wLm5hbWUgPSBscGNfYXRhX3NjW2NoX2F0YV0ubmFtZV9pbzsKKwlpb3Au cG9ydCA9IGxwY19hdGFfc2NbY2hfYXRhXS5iYXNlX2FkZHJfaW87CisJaW9wLnNpemUgPSBBVEFf SU9TSVpFOworCWlvcC5mbGFncyA9IElPUE9SVF9GX0lOT1VUOworCWlvcC5oYW5kbGVyID0gbHBj X2F0YV9pb19oYW5kbGVyOworCWlvcC5hcmcgPSAmbHBjX2F0YV9zY1tjaF9hdGFdOworCisJZXJy ID0gcmVnaXN0ZXJfaW5vdXQoJmlvcCk7CisJYXNzZXJ0KGVyciA9PSAwKTsKKworCWJ6ZXJvKCZp b2N0bHAsIHNpemVvZihzdHJ1Y3QgaW5vdXRfcG9ydCkpOworCWlvY3RscC5uYW1lID0gbHBjX2F0 YV9zY1tjaF9hdGFdLm5hbWVfaW9jdGw7CisJaW9jdGxwLnBvcnQgPSBscGNfYXRhX3NjW2NoX2F0 YV0uYmFzZV9hZGRyX2lvY3RsOworCWlvY3RscC5zaXplID0gQVRBX0NUTElPU0laRTsKKwlpb2N0 bHAuZmxhZ3MgPSBJT1BPUlRfRl9JTk9VVDsKKwlpb2N0bHAuaGFuZGxlciA9IGxwY19hdGFfaW9j dGxfaGFuZGxlcjsKKwlpb2N0bHAuYXJnID0gJmxwY19hdGFfc2NbY2hfYXRhXTsKKworCWVyciA9 IHJlZ2lzdGVyX2lub3V0KCZpb2N0bHApOworCWFzc2VydChlcnIgPT0gMCk7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludAorbHBjX2F0YV9pb19oYW5kbGVyKHN0cnVjdCB2bWN0eCAqY3R4 LCBpbnQgdmNwdSwKKwkJICAgaW50IGluLCBpbnQgcG9ydCwgaW50IGJ5dGVzLCB1aW50MzJfdCAq ZWF4LCB2b2lkICphcmcpCit7CisJc3RydWN0IGxwY19hdGFfc29mdGMgKmxwY19zYyA9IChzdHJ1 Y3QgbHBjX2F0YV9zb2Z0YyAqKWFyZzsKKwlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwgPSBO VUxMOworCXVpbnQ4X3Qgb2Zmc2V0ID0gMDsKKworCWFzc2VydChscGNfc2MpOworCWNoYW5uZWwg PSBscGNfc2MtPmNoYW5uZWw7CisJYXNzZXJ0KGNoYW5uZWwpOworCisJb2Zmc2V0ID0gcG9ydCAt IGxwY19zYy0+YmFzZV9hZGRyX2lvOworCWFzc2VydChvZmZzZXQgPCBBVEFfSU9TSVpFKTsKKwor CWlmIChpbikKKwkJKmVheCA9IGF0YV9jb21tYW5kX2Jsb2NrX3JlYWQoY2hhbm5lbCwgb2Zmc2V0 KTsKKwllbHNlCisJCWF0YV9jb21tYW5kX2Jsb2NrX3dyaXRlKGNoYW5uZWwsIG9mZnNldCwgYnl0 ZXMsICplYXgpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2xwY19hdGFfaW9jdGxf aGFuZGxlcihzdHJ1Y3Qgdm1jdHggKmN0eCwgaW50IHZjcHUsCisJCSAgIGludCBpbiwgaW50IHBv cnQsIGludCBieXRlcywgdWludDMyX3QgKmVheCwgdm9pZCAqYXJnKQoreworCXN0cnVjdCBscGNf YXRhX3NvZnRjICpscGNfc2MgPSAoc3RydWN0IGxwY19hdGFfc29mdGMgKilhcmc7CisJc3RydWN0 IGF0YV9jaGFubmVsICpjaGFubmVsID0gTlVMTDsKKwl1aW50OF90IG9mZnNldCA9IDA7CisKKwlh c3NlcnQobHBjX3NjKTsKKwljaGFubmVsID0gbHBjX3NjLT5jaGFubmVsOworCWFzc2VydChjaGFu bmVsKTsKKworCW9mZnNldCA9IHBvcnQgLSBscGNfc2MtPmJhc2VfYWRkcl9pb2N0bDsKKwlhc3Nl cnQob2Zmc2V0IDwgQVRBX0NUTElPU0laRSk7CisKKwlpZiAoaW4pCisJCSplYXggPSBhdGFfYWx0 c3RhdHVzX3JlYWQoY2hhbm5lbCk7CisJZWxzZQorCQlhdGFfY29udHJvbF93cml0ZShjaGFubmVs LCBieXRlcywgKmVheCk7CisKKwlyZXR1cm4gMDsKK30KKwoK --b1_3f564b781b1c7f1f6a251004cff0fd1c-- From owner-freebsd-virtualization@freebsd.org Tue Aug 15 19:29:34 2017 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AED6ADC3F22 for ; Tue, 15 Aug 2017 19:29:34 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 945C680E6B for ; Tue, 15 Aug 2017 19:29:34 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.15.2/8.15.2) with ESMTP id v7FJTXhE080351 for ; Tue, 15 Aug 2017 19:29:34 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-virtualization@FreeBSD.org Subject: [Bug 221462] vtnet gets stuck when assigning IP on aarch64 Date: Tue, 15 Aug 2017 19:29:33 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: kern X-Bugzilla-Version: CURRENT X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Many People X-Bugzilla-Who: linimon@FreeBSD.org X-Bugzilla-Status: New X-Bugzilla-Resolution: X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-virtualization@FreeBSD.org X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: assigned_to cc Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Aug 2017 19:29:34 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D221462 Mark Linimon changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|freebsd-bugs@FreeBSD.org |freebsd-virtualization@Free | |BSD.org CC| |freebsd-arm@FreeBSD.org --=20 You are receiving this mail because: You are the assignee for the bug.= From owner-freebsd-virtualization@freebsd.org Thu Aug 17 02:03:35 2017 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 21D7FDE40CB for ; Thu, 17 Aug 2017 02:03:35 +0000 (UTC) (envelope-from rajil.s@gmail.com) Received: from mail-pg0-x234.google.com (mail-pg0-x234.google.com [IPv6:2607:f8b0:400e:c05::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EEDEF7EA25 for ; Thu, 17 Aug 2017 02:03:34 +0000 (UTC) (envelope-from rajil.s@gmail.com) Received: by mail-pg0-x234.google.com with SMTP id y129so32535194pgy.4 for ; Wed, 16 Aug 2017 19:03:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-transfer-encoding:content-language; bh=gOZCp0+WbGEoMr7k/GyQYrhyzt2Gf5kYWbGzG8EfVT4=; b=Z2QIBXm1CNyNGWo50ngCpjPowkd5aV1xmoqv1sJv74zMWPhtxJPLgN7PKAg4zadOJ+ gV8q2wnoskVJ4IeC209L/yBrqVyHTvZDa0RjwlH3ZPBfaRorBdLeFrVHJ8vEDF5axKUu RjugWR47SjhddYMwdeuBsZ3CxZ5wLZGT1PzX69DlbPxQ9KD/+cbYWLw3/BBXQddo7LPo 2RZ4P7oz+1SOOjnktMSYxsLj9fMO6AuJFTqM3HIgbjIKIT1MyBkHBNCk36mqjTCtG7ya b3a+1ph8Vhw8O3v2j6MVoKTKYscyL90q1ihAdlN7SaUK+sls1ztIt08SC1zURM3UX9Ut hJew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-transfer-encoding:content-language; bh=gOZCp0+WbGEoMr7k/GyQYrhyzt2Gf5kYWbGzG8EfVT4=; b=XdK8jAL76CuAmDHCkbV47+Geb9NsVPcu7IitXH7lAOtgnYaRcBA3TTkn2QtKefHG9m N0nGR4elntTMY6et7y+f5mK9k2TOeFZb8IDHsGK3sjB99U6nZ0J54G72Vl8r/oQYrdwU xgb2jAsCNQAK4meheVvHfIZCup3uriPSyqthsB7+aZOSIzhhds3XLKTf1VpOftXKjsG0 h4ZL0jMhHwH9PUgjVhO/Lh9GPRhoSasDDtc5dIJeT4sDae62zTlwrEA5EntFb6yrqzeR hpdjrUqDUm+jSuMV6rl0NuixYhEbsYGDN8u3XDRsA8HNoJX0IrqC04Rb8XEjqujFhmwq Jjsw== X-Gm-Message-State: AHYfb5gVyq6YwxcVDgy57G3+AC5mWmWe6iYCKel3Uy2MgFUEYfWrVref QeYw6c2IPdtMZsv/RdQ= X-Received: by 10.84.167.2 with SMTP id c2mr4005440plb.369.1502935413832; Wed, 16 Aug 2017 19:03:33 -0700 (PDT) Received: from [172.16.1.28] (c-73-232-201-213.hsd1.tx.comcast.net. [73.232.201.213]) by smtp.gmail.com with ESMTPSA id c19sm4079956pfk.3.2017.08.16.19.03.32 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Aug 2017 19:03:33 -0700 (PDT) To: freebsd-virtualization From: Rajil Saraswat Subject: My USB card is a bhyve killer Message-ID: Date: Wed, 16 Aug 2017 21:03:29 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Language: en-US X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Aug 2017 02:03:35 -0000 Hi, I have a PCIe USB card which is exported to the bhyve vm using passthrough. I have tried to use the card in Ubuntu, Debian 8 and Centos 7. Each time the OS has given a segmentation fault on bootup and killed the bhyve session. This is what i get in the bhyve-log: Aug 17 01:49:39: initialising Aug 17 01:49:39: [loader: grub] Aug 17 01:49:39: [uefi: no] Aug 17 01:49:39: [cpu: 1] Aug 17 01:49:39: [memory: 512M] Aug 17 01:49:39: [hostbridge: standard] Aug 17 01:49:39: [com ports: com1] Aug 17 01:49:39: [uuid: 09a84879-8156-11e7-b407-0cc47adeccc0] Aug 17 01:49:39: [utctime: no] Aug 17 01:49:39: [debug mode: no] Aug 17 01:49:39: [primary disk: /dev/zvol/vmpool/os9] Aug 17 01:49:39: [primary disk dev: custom] Aug 17 01:49:39: initialising network device tap2 Aug 17 01:49:39: adding tap2 -> bridge1 (lannetwork) Aug 17 01:49:39: booting Aug 17 01:49:39: create file /tank/vm/openhab1/device.map Aug 17 01:49:39: -> (hd0) /dev/zvol/vmpool/os9 Aug 17 01:49:39: /usr/local/sbin/grub-bhyve -S -m /tank/vm/openhab1/device.map -M 512M -r hd0,msdos1 openhab1 Aug 17 01:49:42: [bhyve options: -c 1 -m 512M -AHP -U 09a84879-8156-11e7-b407-0cc47adeccc0 -S] Aug 17 01:49:42: [bhyve devices: -s 0,hostbridge -s 31,lpc -s 4:0,virtio-blk,/dev/zvol/vmpool/os9 -s 5:0,virtio-net,tap2,mac=58:9c:fc:07:cc:2d -s 6:0,passthru,129/0/0] Aug 17 01:49:42: [bhyve console: -l com1,stdio] Aug 17 01:49:42: starting bhyve (run 1) Aug 17 01:49:44: bhyve exited with status 139 Aug 17 01:49:44: destroying network device tap2 Aug 17 01:49:44: stopped The USB card works fine on the host and is detected by the xhci driver. The card is "Inateck Superspeed 4 Ports PCI-E to USB 3.0 Expansion Card - Interface USB 3.0 4-Port" (https://www.amazon.com/gp/product/B00B6ZCNGM) ppt3@pci0:129:0:0: class=0x0c0330 card=0x11001b73 chip=0x11001b73 rev=0x10 hdr=0x00 vendor = 'Fresco Logic' device = 'FL1100 USB 3.0 Host Controller' class = serial bus subclass = USB Any idea how can i use this card in a linux vm? Thanks From owner-freebsd-virtualization@freebsd.org Thu Aug 17 02:38:50 2017 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B2B70DE6F1A for ; Thu, 17 Aug 2017 02:38:50 +0000 (UTC) (envelope-from grehan@freebsd.org) Received: from alto.onthenet.com.au (alto.OntheNet.com.au [203.13.68.12]) by mx1.freebsd.org (Postfix) with ESMTP id 74499803E5 for ; Thu, 17 Aug 2017 02:38:46 +0000 (UTC) (envelope-from grehan@freebsd.org) Received: from iredmail.onthenet.com.au (iredmail.onthenet.com.au [203.13.68.150]) by alto.onthenet.com.au (Postfix) with ESMTPS id 3E41C201DE70 for ; Thu, 17 Aug 2017 12:38:45 +1000 (AEST) Received: from localhost (iredmail.onthenet.com.au [127.0.0.1]) by iredmail.onthenet.com.au (Postfix) with ESMTP id 371F3281F26 for ; Thu, 17 Aug 2017 12:38:45 +1000 (AEST) X-Amavis-Modified: Mail body modified (using disclaimer) - iredmail.onthenet.com.au Received: from iredmail.onthenet.com.au ([127.0.0.1]) by localhost (iredmail.onthenet.com.au [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id xYQ6Q-BFk5c3 for ; Thu, 17 Aug 2017 12:38:45 +1000 (AEST) Received: from Peters-MacBook-Pro-2.local (c-67-180-92-13.hsd1.ca.comcast.net [67.180.92.13]) by iredmail.onthenet.com.au (Postfix) with ESMTPSA id 84ED928098C; Thu, 17 Aug 2017 12:38:43 +1000 (AEST) Subject: Re: My USB card is a bhyve killer To: Rajil Saraswat References: Cc: freebsd-virtualization From: Peter Grehan Message-ID: <131a715e-67bd-e9fc-b5ce-755259c00b79@freebsd.org> Date: Wed, 16 Aug 2017 19:38:38 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-CMAE-Score: 0 X-CMAE-Analysis: v=2.2 cv=XKlAcUpE c=1 sm=1 tr=0 a=A6CF0fG5TOl4vs6YHvqXgw==:117 a=5eVCmCvhg37cu/pjidAGzw==:17 a=IkcTkHD0fZMA:10 a=KeKAF7QvOSUA:10 a=vggBfdFIAAAA:8 a=j8byBHkdNZciFddVWiQA:9 a=QEXdDO2ut3YA:10 wl=host:3 X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Aug 2017 02:38:50 -0000 Hi, > I have a PCIe USB card which is exported to the bhyve vm using > passthrough. I have tried to use the card in Ubuntu, Debian 8 and Centos > 7. Each time the OS has given a segmentation fault on bootup and killed > the bhyve session. This is what i get in the bhyve-log: Is stderr logged anywhere ? That may have additional error output from the bhyve passthru code. > The USB card works fine on the host and is detected by the xhci driver. > The card is "Inateck Superspeed 4 Ports PCI-E to USB 3.0 Expansion Card > - Interface USB 3.0 4-Port" (https://www.amazon.com/gp/product/B00B6ZCNGM) > > ppt3@pci0:129:0:0: class=0x0c0330 card=0x11001b73 chip=0x11001b73 > rev=0x10 hdr=0x00 > vendor = 'Fresco Logic' > device = 'FL1100 USB 3.0 Host Controller' > class = serial bus > subclass = USB Would you be able to post the output of pciconf -l -BbcV pci0:129:0:0 later, Peter. From owner-freebsd-virtualization@freebsd.org Thu Aug 17 03:05:51 2017 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E4603DB62AB for ; Thu, 17 Aug 2017 03:05:51 +0000 (UTC) (envelope-from rajil.s@gmail.com) Received: from mail-pg0-x232.google.com (mail-pg0-x232.google.com [IPv6:2607:f8b0:400e:c05::232]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AE27D81C65 for ; Thu, 17 Aug 2017 03:05:51 +0000 (UTC) (envelope-from rajil.s@gmail.com) Received: by mail-pg0-x232.google.com with SMTP id t80so5815306pgb.5 for ; Wed, 16 Aug 2017 20:05:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=eJ6cibfxPhPvs2cJA+r6+UFhHiuwG2yXkAryYpjkil0=; b=VkyypuqCdG5EoHegIw+QOZSJTT6WF3sIs66VhqGGhmgxk/Gx6S14sWnIwGDqrS8UmB RmE3JHBIWWqtX35oqtPnHWGvoJp1fGI0ciEhe8bnJFemuKqiBuSR6dsfS8ykeMHMxc06 xHoxrwTTcb1KOCGSFKHROX4DbPq08yTkoKiRKb8LXIdKK59G/2KqbPsLswmWkfot/L2u IQhDpyOfCfjp+L8GioMoz+DmuV8kOGVcLy4rNhgrbM5NzUl8/jCKdIvUV46Wrur03Dtf B16+CiaaaVlJVlzsqnXvAcqlZkKwCnSSJuO1ZA75jJF1tRfmb17jmGbybXJwEH9iKJVY EYRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=eJ6cibfxPhPvs2cJA+r6+UFhHiuwG2yXkAryYpjkil0=; b=P3aTxouTYDyPetjTqeu3QBHPs8EwI8Ir4l7cgngTsrIEMEZ4+91zBqRCZJHWRQF3pk 1CYfaJPLa1r/hvd1KQfraNb1x5cV28woF4Q6b8iFi+X/AYadJiDkbEylhe+XWqd7oNC9 ldwvn53lqWu2sUHO2rR4sRxRl1NBoAsigLy/CPiTTVtGvkndTCxpvKxDUcJiYEOLSSYA W9KyMrDG8FkQg//4aqjWXa4rnN3np7or5hyqXECo2z31B40+lIf6iubd1xMFtc2SVhsx v/MY8bBSb6ZDL3y+CMxMQQeSsSYi0pnkJ29g3puNDeLfsFkFmmmlr5Pkmd4wxmKBLO/p taqA== X-Gm-Message-State: AHYfb5gAYDgdDQuy/QexReDRtjMxWCTrShhsYMKX2BsRzZsywpGj2HZ2 j1NWbFrfqmIgY3XqokA= X-Received: by 10.84.128.66 with SMTP id 60mr4071075pla.201.1502939150791; Wed, 16 Aug 2017 20:05:50 -0700 (PDT) Received: from [172.16.1.28] (c-73-232-201-213.hsd1.tx.comcast.net. [73.232.201.213]) by smtp.gmail.com with ESMTPSA id 67sm3470821pgg.42.2017.08.16.20.05.48 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Aug 2017 20:05:49 -0700 (PDT) Subject: Re: My USB card is a bhyve killer To: freebsd-virtualization References: <131a715e-67bd-e9fc-b5ce-755259c00b79@freebsd.org> From: Rajil Saraswat Message-ID: Date: Wed, 16 Aug 2017 22:05:45 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <131a715e-67bd-e9fc-b5ce-755259c00b79@freebsd.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Language: en-US X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Aug 2017 03:05:52 -0000 Unfortunately, i dont see a stderr log. I am using vm-bhyve for managing the vm's. # pciconf -l -BbcV pci0:129:0:0 ppt3@pci0:129:0:0: class=0x0c0330 card=0x11001b73 chip=0x11001b73 rev=0x10 hdr=0x00 bar [10] = type Memory, range 64, base 0xfb200000, size 65536, enabled bar [18] = type Memory, range 64, base 0xfb211000, size 4096, enabled bar [20] = type Memory, range 64, base 0xfb210000, size 4096, enabled cap 01[40] = powerspec 3 supports D0 D1 D3 current D0 cap 05[50] = MSI supports 8 messages, 64 bit cap 10[70] = PCI-Express 2 endpoint max data 256(512) NS link x1(x1) speed 5.0(5.0) ASPM disabled(L0s/L1) cap 11[b0] = MSI-X supports 8 messages Table in map 0x18[0x0], PBA in map 0x20[0x0] ecap 0001[100] = AER 1 0 fatal 0 non-fatal 0 corrected I havent yet managed to get a USB card to work stably with FreeBSD 11.1 [1]. This is my third card. They work fine if i boot into Ubuntu linux. [1] https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=221491 On 08/16/2017 09:38 PM, Peter Grehan wrote: > Hi, > >> I have a PCIe USB card which is exported to the bhyve vm using >> passthrough. I have tried to use the card in Ubuntu, Debian 8 and Centos >> 7. Each time the OS has given a segmentation fault on bootup and killed >> the bhyve session. This is what i get in the bhyve-log: > > Is stderr logged anywhere ? That may have additional error output > from the bhyve passthru code. > >> The USB card works fine on the host and is detected by the xhci driver. >> The card is "Inateck Superspeed 4 Ports PCI-E to USB 3.0 Expansion Card >> - Interface USB 3.0 4-Port" >> (https://www.amazon.com/gp/product/B00B6ZCNGM) >> >> ppt3@pci0:129:0:0: class=0x0c0330 card=0x11001b73 chip=0x11001b73 >> rev=0x10 hdr=0x00 >> vendor = 'Fresco Logic' >> device = 'FL1100 USB 3.0 Host Controller' >> class = serial bus >> subclass = USB > > Would you be able to post the output of > > pciconf -l -BbcV pci0:129:0:0 > > later, > > Peter. From owner-freebsd-virtualization@freebsd.org Thu Aug 17 03:20:24 2017 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0C436DC303B for ; Thu, 17 Aug 2017 03:20:24 +0000 (UTC) (envelope-from rajil.s@gmail.com) Received: from mail-pg0-x232.google.com (mail-pg0-x232.google.com [IPv6:2607:f8b0:400e:c05::232]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id CB3398250F for ; Thu, 17 Aug 2017 03:20:23 +0000 (UTC) (envelope-from rajil.s@gmail.com) Received: by mail-pg0-x232.google.com with SMTP id t80so6008569pgb.5 for ; Wed, 16 Aug 2017 20:20:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=cgiSRteyT6M0f99bxWVFsvqita7ly0n6Vi0KAYptaKE=; b=IjDf8We30nizSlAwzgHblfVNaN3wrRYe04Pr3le/mRx6JEudvr1D59btvhKsUjjt5P YeoXmzc8iWH54IiEOKRHpcEpRlsx4ZVWmYq0tkbPmQTzYqjTNu0UfUpys29nlCrMh/zv 3Kn39PcCgqbOQAYv3dTb+pVBs1vWwLIP0UGJYY3FkkFPPK3p2m3koq7k6Qcmtpl0xbAn 2q8Y4U0jqfNcQmdw9HaxT5sRdatGzx629xYj7EAubYoxRGwkJhSaiDq9v5SfOTAv+aDX uTVxODkMQa99yziltYt8C9QRLFkNYCjg2jmOJ9eCIp6MJpgT2mBIxpKux5JAYzUbi+H2 juTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=cgiSRteyT6M0f99bxWVFsvqita7ly0n6Vi0KAYptaKE=; b=i8VfA2Fdb1Ob9fvwPqlythX/KBRClh8le39faSQrYDdljGp80LXicQf7IX4aSRbBYd rlrSwZt9H5F4T/dLKizaBg533Pom4MYdE1d+QW5+4nD/hzxyChjEfnnDBwWuDSyLLigj ZGgUooBb+t5bn6PKD6yRBIjVeZPpCiWYNbOv1hFl3wkQ2kJ3JGA2p56xvLu/OCg1MuVl 0rjD3lbjsBWX40NpQsPEifeLo2lSIe05xtAasCTC1kV841uyRxjrcxNQgzODarBkDK8R bTwDoWftA1LNQC4pvaYT83s5uZNc3qz/G69IsGuln2ABByNF4JRIqdxv80o8EtT48TGj XgWg== X-Gm-Message-State: AHYfb5iPHlbWIyOU9/4QTDcXrAH28qCsdmP+0cD5sNPHIFo/FDq3REFH /n8k6JWHT/0Dq4r7sd0= X-Received: by 10.99.190.69 with SMTP id g5mr3673344pgo.152.1502940023180; Wed, 16 Aug 2017 20:20:23 -0700 (PDT) Received: from [172.16.1.28] (c-73-232-201-213.hsd1.tx.comcast.net. [73.232.201.213]) by smtp.gmail.com with ESMTPSA id c19sm4246805pfk.3.2017.08.16.20.20.21 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Aug 2017 20:20:22 -0700 (PDT) Subject: Re: My USB card is a bhyve killer To: freebsd-virtualization References: <131a715e-67bd-e9fc-b5ce-755259c00b79@freebsd.org> From: Rajil Saraswat Message-ID: <7fdbeedb-b83a-6775-2bb8-3fdf3e8e2d24@gmail.com> Date: Wed, 16 Aug 2017 22:20:18 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <131a715e-67bd-e9fc-b5ce-755259c00b79@freebsd.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Language: en-US X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Aug 2017 03:20:24 -0000 After setting debug="YES" in the vm's conf file, i get the following: # cat bhyve.log rdmsr to register 0x34 on vcpu 0 On 08/16/2017 09:38 PM, Peter Grehan wrote: > Hi, > >> I have a PCIe USB card which is exported to the bhyve vm using >> passthrough. I have tried to use the card in Ubuntu, Debian 8 and Centos >> 7. Each time the OS has given a segmentation fault on bootup and killed >> the bhyve session. This is what i get in the bhyve-log: > > Is stderr logged anywhere ? That may have additional error output > from the bhyve passthru code. > >> The USB card works fine on the host and is detected by the xhci driver. >> The card is "Inateck Superspeed 4 Ports PCI-E to USB 3.0 Expansion Card >> - Interface USB 3.0 4-Port" >> (https://www.amazon.com/gp/product/B00B6ZCNGM) >> >> ppt3@pci0:129:0:0: class=0x0c0330 card=0x11001b73 chip=0x11001b73 >> rev=0x10 hdr=0x00 >> vendor = 'Fresco Logic' >> device = 'FL1100 USB 3.0 Host Controller' >> class = serial bus >> subclass = USB > > Would you be able to post the output of > > pciconf -l -BbcV pci0:129:0:0 > > later, > > Peter. From owner-freebsd-virtualization@freebsd.org Thu Aug 17 03:28:23 2017 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C6978DC3A82 for ; Thu, 17 Aug 2017 03:28:23 +0000 (UTC) (envelope-from rajil.s@gmail.com) Received: from mail-pg0-x22d.google.com (mail-pg0-x22d.google.com [IPv6:2607:f8b0:400e:c05::22d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9250382AA7 for ; Thu, 17 Aug 2017 03:28:23 +0000 (UTC) (envelope-from rajil.s@gmail.com) Received: by mail-pg0-x22d.google.com with SMTP id u185so33641113pgb.1 for ; Wed, 16 Aug 2017 20:28:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=dsj/MytgcxulVv8jzKv2Yy3AoF72JRCXsOYDUmSNz8Y=; b=dwCphQRfPXQ0KI5kzRpcDpUmxxg0GatMUvaxSc/lU1KvT5vcPNvDIqIEN4tZ3QKo/E lIwHN1LySbJTT8qMpHrLxKR5OzH8B0kcMUfUfBcLrPSltinVFcS+LRS0lcjrklmthnXh OnBGsAoTAuT0RWo5oCns0R/4wNwE6O7u5MI3kGw+ZmzfK/CZuGTnQFLyUFaEa9z5p8xg WYfSRK7PaS4b6N8RcWvVXlfp7cgtjBp1EGpJajrKzBhmOMP8scAxa5bRx98uuYs1KZM0 bZ67B2Pnz6Eak+ZaUuqf74pwokkd0JdmPLYKWIYhXjQFXvui3JSgZKccTQkPTPVp1Ake pp7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=dsj/MytgcxulVv8jzKv2Yy3AoF72JRCXsOYDUmSNz8Y=; b=thqfmIbM/YhLcC1o/NaWpgeGJJuNJ4glrfCDls27aKM49m2y+Zj2LA2gY0+WFGayW/ a7uzL3arDo017q9rJ6jgemR7YyVuaWfDvkyBNkY7pene2zAA8I9k2Ny//7B7hXl6FnY3 2Ou4p7z3YjT1THwhxgUhQEP+Em5hUXZ/gGygxgOpRuBJ+Ju+wjDt9Uu3fKlCTPKiiRl1 hp1fVHRkOKIVgmP4wj+QmHnTXoDdxDVQCXNRWmfsYaORq13F2SSzVk1jr7iU4LgPsU5x aYdscTNQSJ/SJzqOLpr+2sGr2xhRkomJoWB2/lE1UB80HL3M+ssIRTDIvkJe1xVpb0fA K8fw== X-Gm-Message-State: AHYfb5i0FpJvBSfx0s/Q6HQIu/t2dVZhhMZAuJNu1zUHB0QmcRNpaZ3Q tAhPf3j8T5XKMXo6OD8= X-Received: by 10.84.167.2 with SMTP id c2mr4056725plb.367.1502940502908; Wed, 16 Aug 2017 20:28:22 -0700 (PDT) Received: from [172.16.1.28] (c-73-232-201-213.hsd1.tx.comcast.net. [73.232.201.213]) by smtp.gmail.com with ESMTPSA id c80sm3761497pfb.141.2017.08.16.20.28.21 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Aug 2017 20:28:22 -0700 (PDT) Subject: Re: My USB card is a bhyve killer To: freebsd-virtualization References: <131a715e-67bd-e9fc-b5ce-755259c00b79@freebsd.org> From: Rajil Saraswat Message-ID: Date: Wed, 16 Aug 2017 22:28:18 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <131a715e-67bd-e9fc-b5ce-755259c00b79@freebsd.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Language: en-US X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Aug 2017 03:28:23 -0000 Setting -w flag (https://forums.freebsd.org/threads/47951/) using "ignore_bad_msr=1" also doesnt help, Aug 17 03:25:39: /usr/local/sbin/grub-bhyve -S -m /tank/vm/openhab1/device.map -M 512M -r hd0,msdos1 openhab1 Aug 17 03:25:42: [bhyve options: -c 1 -m 512M -AHPw -U 09a84879-8156-11e7-b407-0cc47adeccc0 -S] Aug 17 03:25:42: [bhyve devices: -s 0,hostbridge -s 31,lpc -s 4:0,virtio-blk,/dev/zvol/vmpool/os9 -s 5:0,virtio-net,tap2,mac=58:9c:fc:07:cc:2d -s 6:0,passthru,129/0/0] Aug 17 03:25:42: [bhyve console: -l com1,stdio] Aug 17 03:25:42: starting bhyve (run 1) Aug 17 03:25:45: bhyve exited with status 139 Aug 17 03:25:45: destroying network device tap2 Aug 17 03:25:45: stopped On 08/16/2017 09:38 PM, Peter Grehan wrote: > Hi, > >> I have a PCIe USB card which is exported to the bhyve vm using >> passthrough. I have tried to use the card in Ubuntu, Debian 8 and Centos >> 7. Each time the OS has given a segmentation fault on bootup and killed >> the bhyve session. This is what i get in the bhyve-log: > > Is stderr logged anywhere ? That may have additional error output > from the bhyve passthru code. > >> The USB card works fine on the host and is detected by the xhci driver. >> The card is "Inateck Superspeed 4 Ports PCI-E to USB 3.0 Expansion Card >> - Interface USB 3.0 4-Port" >> (https://www.amazon.com/gp/product/B00B6ZCNGM) >> >> ppt3@pci0:129:0:0: class=0x0c0330 card=0x11001b73 chip=0x11001b73 >> rev=0x10 hdr=0x00 >> vendor = 'Fresco Logic' >> device = 'FL1100 USB 3.0 Host Controller' >> class = serial bus >> subclass = USB > > Would you be able to post the output of > > pciconf -l -BbcV pci0:129:0:0 > > later, > > Peter. From owner-freebsd-virtualization@freebsd.org Fri Aug 18 03:09:51 2017 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EC5AFDE99E4 for ; Fri, 18 Aug 2017 03:09:51 +0000 (UTC) (envelope-from rajil.s@gmail.com) Received: from mail-pg0-x234.google.com (mail-pg0-x234.google.com [IPv6:2607:f8b0:400e:c05::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B9B876FCC3 for ; Fri, 18 Aug 2017 03:09:51 +0000 (UTC) (envelope-from rajil.s@gmail.com) Received: by mail-pg0-x234.google.com with SMTP id i12so55185666pgr.3 for ; Thu, 17 Aug 2017 20:09:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=k1D/3PioqI2PX0n+Klz1KcY4AKCbvmQksh9iWuHMLrI=; b=OcOiNA/XpLU+095WeqDlaoMo37IeGyeTMMtVHhjXAT93DFJDWqtn1e9Ne42I4knZ+p nE/FR0U4DxknvfTkbQfrvXWJBlSXYtFVAJNaptZRcbRDT/+Bc0mzzG0dqau0oS8Izkg4 iKSFG/3g/4E3tb1zq7ljPPd/ASo8kHKDfC0p/fb/sBugPoRwnREKpthMZd2rWMTCkaJG BJ9yYquhtMYpH/AnNVPP8qwJ8U37zx3NpCifCpjCmQtbcEfk7R8Nm5Ux1YyiWaRf7x83 aH/A0V+Grmt32Qen9TiqP4h7NiGNP87lNgah8W5mHXU3zBr9kswLQ4ytaKGDTtlWkjWT j6Eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=k1D/3PioqI2PX0n+Klz1KcY4AKCbvmQksh9iWuHMLrI=; b=POBPraCPx/1Q/auwCHerG8jNseedVo2+D9quaauA+gt705qTpMKrZk5b3HEzthLHZK ecYvGgrD4nrUHP/x8Hf8Crl2aHBwBkx+/WQzwpDVAx7dhff/a4XyAs+WVski+TQ36W3j ZuzgokHrbmZKjO67RFojp4GcRTtafJtabIOl/o7HhxDRO1DmoNVTAcrOgQrBbkH0EI1o A5aI6oaztJqryAfH1Ay4w1Z6ZDdcsVCMzrq9nBVQb2rNNcx3QG4OrWLdBMQ7dNdhxF/v x+yudH8ov/KSMWg82PeDh2LBQTE6+FlGpe3hixBvUhCVok7C9OlzmX+il/xnxWYiL+11 d2Pg== X-Gm-Message-State: AHYfb5gmUpdw5PKhb2z7Fj9cFLzX71xFu1AclR7zzKT4dlkLZTEWPwC4 05JwTbtG5SC4cvyrPfE= X-Received: by 10.98.113.9 with SMTP id m9mr7232972pfc.263.1503025791077; Thu, 17 Aug 2017 20:09:51 -0700 (PDT) Received: from [172.16.1.28] (c-73-232-201-213.hsd1.tx.comcast.net. [73.232.201.213]) by smtp.gmail.com with ESMTPSA id s89sm9072391pfe.155.2017.08.17.20.09.49 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Aug 2017 20:09:50 -0700 (PDT) Subject: Re: My USB card is a bhyve killer To: freebsd-virtualization References: <131a715e-67bd-e9fc-b5ce-755259c00b79@freebsd.org> From: Rajil Saraswat Message-ID: <449e6799-035f-6f30-9458-e5957b55860b@gmail.com> Date: Thu, 17 Aug 2017 22:09:47 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <131a715e-67bd-e9fc-b5ce-755259c00b79@freebsd.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Language: en-US X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Aug 2017 03:09:52 -0000 Any further thoughts on this? I would like to return this card back to Amazon in the next few days. So if anybody needs any more debug info please let me know. I do plan to retain the other NEC uPD720201 chipset based card since it works within bhyve. It seems something is broken in FreeBSD with respect to PCIe USB cards with all the boot freezes i have had. Is there any old version of FreeBSD which i can try to figure out if this is a regression? Thanks On 08/16/2017 09:38 PM, Peter Grehan wrote: > Hi, > >> I have a PCIe USB card which is exported to the bhyve vm using >> passthrough. I have tried to use the card in Ubuntu, Debian 8 and Centos >> 7. Each time the OS has given a segmentation fault on bootup and killed >> the bhyve session. This is what i get in the bhyve-log: > > Is stderr logged anywhere ? That may have additional error output > from the bhyve passthru code. > >> The USB card works fine on the host and is detected by the xhci driver. >> The card is "Inateck Superspeed 4 Ports PCI-E to USB 3.0 Expansion Card >> - Interface USB 3.0 4-Port" >> (https://www.amazon.com/gp/product/B00B6ZCNGM) >> >> ppt3@pci0:129:0:0: class=0x0c0330 card=0x11001b73 chip=0x11001b73 >> rev=0x10 hdr=0x00 >> vendor = 'Fresco Logic' >> device = 'FL1100 USB 3.0 Host Controller' >> class = serial bus >> subclass = USB > > Would you be able to post the output of > > pciconf -l -BbcV pci0:129:0:0 > > later, > > Peter. From owner-freebsd-virtualization@freebsd.org Fri Aug 18 04:34:50 2017 Return-Path: Delivered-To: freebsd-virtualization@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A966EDC938A for ; Fri, 18 Aug 2017 04:34:50 +0000 (UTC) (envelope-from grehan@freebsd.org) Received: from alto.onthenet.com.au (alto.OntheNet.com.au [203.13.68.12]) by mx1.freebsd.org (Postfix) with ESMTP id 6B8EF72F1B for ; Fri, 18 Aug 2017 04:34:50 +0000 (UTC) (envelope-from grehan@freebsd.org) Received: from iredmail.onthenet.com.au (iredmail.onthenet.com.au [203.13.68.150]) by alto.onthenet.com.au (Postfix) with ESMTPS id 1AB0B20ADBEA for ; Fri, 18 Aug 2017 14:34:43 +1000 (AEST) Received: from localhost (iredmail.onthenet.com.au [127.0.0.1]) by iredmail.onthenet.com.au (Postfix) with ESMTP id 1184F281F21 for ; Fri, 18 Aug 2017 14:34:43 +1000 (AEST) X-Amavis-Modified: Mail body modified (using disclaimer) - iredmail.onthenet.com.au Received: from iredmail.onthenet.com.au ([127.0.0.1]) by localhost (iredmail.onthenet.com.au [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id c01ZPDUBGQcL for ; Fri, 18 Aug 2017 14:34:42 +1000 (AEST) Received: from Peters-MacBook-Pro-2.local (c-67-180-92-13.hsd1.ca.comcast.net [67.180.92.13]) by iredmail.onthenet.com.au (Postfix) with ESMTPSA id 53AF2280505; Fri, 18 Aug 2017 14:34:41 +1000 (AEST) Subject: Re: My USB card is a bhyve killer To: Rajil Saraswat References: <131a715e-67bd-e9fc-b5ce-755259c00b79@freebsd.org> <449e6799-035f-6f30-9458-e5957b55860b@gmail.com> From: Peter Grehan Cc: freebsd-virtualization Message-ID: Date: Thu, 17 Aug 2017 21:34:39 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <449e6799-035f-6f30-9458-e5957b55860b@gmail.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-CMAE-Score: 0 X-CMAE-Analysis: v=2.2 cv=XKlAcUpE c=1 sm=1 tr=0 a=A6CF0fG5TOl4vs6YHvqXgw==:117 a=5eVCmCvhg37cu/pjidAGzw==:17 a=IkcTkHD0fZMA:10 a=KeKAF7QvOSUA:10 a=lS7WhpqWRB_HhggOUoAA:9 a=QEXdDO2ut3YA:10 wl=host:3 X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Aug 2017 04:34:50 -0000 Hi, > Any further thoughts on this? Seems a bit of a mystery. The PCI dump looked fine. > I would like to return this card back to Amazon in the next few days. So > if anybody needs any more debug info please let me know. I'll contact you off-list. > I do plan to > retain the other NEC uPD720201 chipset based card since it works within > bhyve. It seems something is broken in FreeBSD with respect to PCIe USB > cards with all the boot freezes i have had. > > Is there any old version of FreeBSD which i can try to figure out if > this is a regression? It might be worth trying 11.0 since that was pre-capsicum. later, Peter.