From owner-freebsd-virtualization@freebsd.org Sun Aug 27 13:51: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 63A1DDF07D6 for ; Sun, 27 Aug 2017 13:51:35 +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 C89E672862 for ; Sun, 27 Aug 2017 13:51:34 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by reviews.nyi.freebsd.org (Postfix, from userid 1346) id EB27B38658; Sun, 27 Aug 2017 13:51:33 +0000 (UTC) Date: Sun, 27 Aug 2017 13:51:33 +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: <20774e3b9cd644f6a8fda9289c7404d7@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: ZmQ1YjBmNDNhNWVhZDYwNjJmNTU3Y2FmMjRkIFmizmU= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_20774e3b9cd644f6a8fda9289c7404d7" 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: Sun, 27 Aug 2017 13:51:35 -0000 --b1_20774e3b9cd644f6a8fda9289c7404d7 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: base64 aWF0ZWFjYSB1cGRhdGVkIHRoaXMgcmV2aXNpb24gdG8gRGlmZiAzMjQyMi4KaWF0ZWFjYSBhZGRl ZCBhIGNvbW1lbnQuCgoKICByZW1vdmUgc2VjdG9yc19wZXJfYmxvY2sgZmllbGQgZnJvbSB0aGUg YXRhIGNoYW5uZWwKICBhbGxvdyBzZWNjb3VudCB0byBiZSBzZXQgc21hbGxlciB0aGFuIEFUQV9T RUNUT1JTX1BFUl9CTE9DSwoKQ0hBTkdFUyBTSU5DRSBMQVNUIFVQREFURQogIGh0dHBzOi8vcmV2 aWV3cy5mcmVlYnNkLm9yZy9ENTQ3Mz92cz0zMjA4MSZpZD0zMjQyMgoKUkVWSVNJT04gREVUQUlM CiAgaHR0cHM6Ly9yZXZpZXdzLmZyZWVic2Qub3JnL0Q1NDczCgpBRkZFQ1RFRCBGSUxFUwogIE1h a2VmaWxlCiAgYXRhLmMKICBwY2lfbHBjLmMKCkVNQUlMIFBSRUZFUkVOQ0VTCiAgaHR0cHM6Ly9y ZXZpZXdzLmZyZWVic2Qub3JnL3NldHRpbmdzL3BhbmVsL2VtYWlscHJlZmVyZW5jZXMvCgpUbzog aWF0ZWFjYSwgZ3JlaGFuLCB0eWNob24sIG5lZWwsIG1hdgpDYzogZWRpdG9yX2NhbGxmb3J0ZXN0 aW5nLm9yZywgZnJlZWJzZC12aXJ0dWFsaXphdGlvbi1saXN0Cg== --b1_20774e3b9cd644f6a8fda9289c7404d7 Content-Type: text/x-patch; charset=utf-8; name="D5473.32422.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D5473.32422.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 QCAtMCwwICsxLDI2MDMgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDE2IEFsZXggVGVhY2Eg 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 IHVzZV8xNmJpdDsKKworCXN0cnVjdCBibG9ja2lmX3JlcSBmbHVzaF9icmVxOworCisJc3RydWN0 IGF0YV9kcml2ZSBkcml2ZXNbQVRBX0RSSVZFU107CisKKwlzdHJ1Y3Qgdm1jdHggKnZtX2N0eDsK Kwl2b2lkICpwcl9zYzsKKworCS8qIEludGVycnVwdHMgY2FsbGJhY2tzIChQQ0kgb3IgTFBDKSAq LworCWF0YV9pbnRyX2Z1bmNfdCBpbnRyX2Fzc2VydDsKKwlhdGFfaW50cl9mdW5jX3QgaW50cl9k ZWFzc2VydDsKKwl1aW50OF90IGxpbnRyOworfTsKKworc3RydWN0IHBjaV9hdGFfc29mdGMgewor CS8qIEFUQSBCdXMgTWFzdGVyIFJlZ2lzdGVyICovCisJdWludDhfdCAgY21kW0FUQV9DSEFOTkVM U107CisJdWludDhfdCAgc3RhdFtBVEFfQ0hBTk5FTFNdOworCXVpbnQzMl90IHByZHRbQVRBX0NI QU5ORUxTXTsKKworCXN0cnVjdCBwY2lfYXRhX2RtYV90cmFuc2FjdGlvbiBkbWFfdHJhbnNhY3Rp b25zW0FUQV9DSEFOTkVMU107CisKKwlzdHJ1Y3QgcGNpX2Rldmluc3QgKmFzY19waTsKKwlzdHJ1 Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWxzW0FUQV9DSEFOTkVMU107Cit9OworCitzdHJ1Y3QgbHBj X2F0YV9zb2Z0YyB7CisJc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsOworCWludCBpcnE7CisJ aW50IGJhc2VfYWRkcl9pbzsKKwlpbnQgYmFzZV9hZGRyX2lvY3RsOworCWNvbnN0IGNoYXIgKm5h bWVfaW87CisJY29uc3QgY2hhciAqbmFtZV9pb2N0bDsKK307CisKKworLyoKKyAqIEFUQSBtb2R1 bGUgZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgKi8KK3N0YXRpYyB2b2lkCithdGFfaXJxX3JhaXNl KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7CitzdGF0aWMgdm9pZAorYXRhX2lycV9sb3dl cihzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpOworCitzdGF0aWMgYXRhX2RyaXZlX3R5cGUK K2F0YV9kcml2ZV90eXBlX2J5X25hbWUoY2hhciAqZHJpdmVfbmFtZSk7CitzdGF0aWMgaW50Cith dGFfcGFyc2VfcGFyYW1zKGNvbnN0IGNoYXIgKm9wdHMsIGludCAqY2hhbm5lbCwgY2hhciAqZGlz a19tYXN0ZXIsCisJCSBjaGFyICpkaXNrX3NsYXZlLCB1aW50OF90ICpoYXNfc2xhdmUpOworc3Rh dGljIHN0cnVjdCBhdGFfY2hhbm5lbCAqCithdGFfaW5pdChzdHJ1Y3Qgdm1jdHggKmN0eCwgYXRh X2ludHJfZnVuY190IGludHJfYXNzZXJ0LCBhdGFfaW50cl9mdW5jX3QgaW50cl9kZWFzc2VydCwg dm9pZCAqcHJfc2MsCisJIGNvbnN0IGNoYXIgKm9wdHMsIHVpbnQ4X3QgaXNhX2F0KTsKKworc3Rh dGljIHZvaWQKK2F0YV9zcnN0KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7CitzdGF0aWMg dm9pZAorYXRhX2luaXRpYWxpemVfaWRlbnQoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKTsK K3N0YXRpYyB2b2lkCithdGFfYXRhcGlfaW5pdGlhbGl6ZV9pZGVudChzdHJ1Y3QgYXRhX2NoYW5u ZWwgKmNoYW5uZWwpOworCitzdGF0aWMgaW50CithdGFfY2hhbm5lbF9pc19vayhzdHJ1Y3QgYXRh X2NoYW5uZWwgKmNoYW5uZWwsIHVpbnQ4X3QgY2gpOworc3RhdGljIGludAorYXRhX3NlbGVjdF9k cml2ZV9pc19vayhzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpOworc3RhdGljIHZvaWQKK2F0 YV9zZXRfc3RhdHVzX29rKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7CitzdGF0aWMgdm9p ZAorYXRhX3NldF9kYXRhX2Jsb2NrX3JlYWR5KHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7 CitzdGF0aWMgdm9pZAorYXRhX2NvbW1hbmRfYWJvcnRlZChzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNo YW5uZWwpOworc3RhdGljIHZvaWQKK2F0YV9zZXRfc2lnbmF0dXJlKHN0cnVjdCBhdGFfZHJpdmUg KmRyaXZlKTsKKworc3RhdGljIHZvaWQKK2F0YV9hZGRyZXNzaW5nX3NlY19jb3VudChzdHJ1Y3Qg YXRhX2NoYW5uZWwgKmNoYW5uZWwsIHVpbnQxNl90ICpwX3NlY3Rvcl9jb3VudCk7CitzdGF0aWMg dm9pZAorYXRhX2FkZHJlc3NpbmdfMjhfbGJhKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCwg dWludDMyX3QgKnBfbGJhX2FkZHJlc3MpOworCitzdGF0aWMgdm9pZAorYXRhX2luaXRfYmxvY2tf cmVxdWVzdChzdHJ1Y3QgYmxvY2tpZl9yZXEgKmJyZXEsIHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hh bm5lbCwKKwkJICAgICAgIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QgbmJ5dGVzLCB2b2lkICpi dWZmZXIpOworc3RhdGljIHZvaWQKK2F0YV9oYW5kbGVfYmxvY2tfcmVxdWVzdChzdHJ1Y3QgYmxv Y2tpZl9yZXEgKnJlcSwgaW50IGVycik7CisKK3N0YXRpYyB2b2lkCithdGFfcGlvX2RvX3RyYW5z ZmVyKHN0cnVjdCBhdGFfcGlvX3NldHVwICpwaW9fc2V0dXAsIHVpbnQ2NF90IHNpemVfdHJhbnNm ZXIsCisJCSAgICAgYXRhX3Bpb19lbmRfdHJhbnNmZXJfZnVuY190IGVuZF90cmFuc2ZlciwgdWlu dDhfdCB1c2Vfd29yZCk7CitzdGF0aWMgaW50CithdGFfcGlvX2luX3Byb2dyZXNzKHN0cnVjdCBh dGFfcGlvX3NldHVwICpwaW9fc2V0dXApOworc3RhdGljIHVpbnQ4X3QgKgorYXRhX3Bpb19nZXRf YnVmZmVyX2RhdGEoc3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCk7CitzdGF0aWMgdm9p ZAorYXRhX3Bpb19jaGVja19lbmRfdHJhbnNmZXIoc3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19z ZXR1cCk7CitzdGF0aWMgdWludDMyX3QKK2F0YV9waW9fZ2V0X3VpbnQoc3RydWN0IGF0YV9waW9f c2V0dXAgKnBpb19zZXR1cCk7CitzdGF0aWMgdm9pZAorYXRhX3Bpb19wdXRfdWludChzdHJ1Y3Qg YXRhX3Bpb19zZXR1cCAqcGlvX3NldHVwLCB1aW50MzJfdCB3cml0ZV92YWx1ZSk7CitzdGF0aWMg dm9pZAorYXRhX3Bpb19nZW5lcmljX2VuZF90cmFuc2ZlcihzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNo YW5uZWwpOworCitzdGF0aWMgdm9pZAorYXRhX3JlYWRfbXVsdGlwbGVfYmxvY2tfZG9uZShzdHJ1 Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpOworc3RhdGljIHZvaWQKK2F0YV93cml0ZV9tdWx0aXBs ZV9ibG9ja19kb25lKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7CisKK3N0YXRpYyB2b2lk CithdGFfYXRhcGlfaGFuZGxlX3JlYWRfZG9uZShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwp OworCitzdGF0aWMgdm9pZAorYXRhX2hhbmRsZV9pZGVudGlmeShzdHJ1Y3QgYXRhX2NoYW5uZWwg KmNoYW5uZWwpOworc3RhdGljIHZvaWQKK2F0YV9oYW5kbGVfc2V0ZmVhdHVyZXMoc3RydWN0IGF0 YV9jaGFubmVsICpjaGFubmVsKTsKK3N0YXRpYyB2b2lkCithdGFfaGFuZGxlX3NldF9tdWx0aShz dHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpOworc3RhdGljIHZvaWQKK2F0YV9oYW5kbGVfcmVh ZF9tdWx0aXBsZShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpOworc3RhdGljIHZvaWQKK2F0 YV9oYW5kbGVfcmVhZF92ZXJpZnkoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKTsKK3N0YXRp YyB2b2lkCithdGFfaGFuZGxlX3dyaXRlX211bHRpcGxlKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hh bm5lbCk7CitzdGF0aWMgdm9pZAorYXRhX2hhbmRsZV9kbWEoc3RydWN0IGF0YV9jaGFubmVsICpj aGFubmVsLCB1aW50OF90IG9wX2Rpcik7CitzdGF0aWMgdm9pZAorYXRhX2hhbmRsZV9mbHVzaGNh Y2hlKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7CitzdGF0aWMgdm9pZAorYXRhX2hhbmRs ZV9zZWVrKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCk7CitzdGF0aWMgdm9pZAorYXRhX2hh bmRsZV9hdGFwaV9pZGVudGlmeShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpOworc3RhdGlj IHZvaWQKK2F0YV9oYW5kbGVfcGFja2V0X2NtZChzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwp Oworc3RhdGljIHZvaWQKK2F0YV9oYW5kbGVfY21kKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5l bCwgdWludDhfdCBjbWQpOworCitzdGF0aWMgdm9pZAorYXRhX2F0YXBpX2RhdGFfcmVxdWVzdChz dHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpOworc3RhdGljIHZvaWQKK2F0YV9hdGFwaV9jbWRf ZG9uZShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpOworc3RhdGljIHZvaWQKK2F0YV9hdGFw aV9oYW5kbGVfaW5xdWlyeShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwsIHVpbnQ4X3QgKnBh Y2tldCk7CitzdGF0aWMgdm9pZAorYXRhX2F0YXBpX2hhbmRsZV9yZWFkX2NhcGFjaXR5KHN0cnVj dCBhdGFfY2hhbm5lbCAqY2hhbm5lbCwgdWludDhfdCAqcGFja2V0KTsKK3N0YXRpYyB2b2lkCith dGFfYXRhcGlfaGFuZGxlX3JlYWRfdG9jKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCwgdWlu dDhfdCAqcGFja2V0KTsKK3N0YXRpYyB2b2lkCithdGFfYXRhcGlfaGFuZGxlX3JlYWQoc3RydWN0 IGF0YV9jaGFubmVsICpjaGFubmVsLCB1aW50OF90ICpwYWNrZXQpOworc3RhdGljIHZvaWQKK2F0 YV9hdGFwaV9jbWQoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKTsKKworc3RhdGljIHVpbnQ2 NF90CithdGFfY29tbWFuZF9ibG9ja19yZWFkKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCwg dWludDY0X3Qgb2Zmc2V0KTsKK3N0YXRpYyB2b2lkCithdGFfY29tbWFuZF9ibG9ja193cml0ZShz dHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwsCisJCXVpbnQ2NF90IG9mZnNldCwgaW50IHNpemUs IHVpbnQ2NF90IHZhbHVlKTsKKworc3RhdGljIHVpbnQ2NF90CithdGFfYWx0c3RhdHVzX3JlYWQo c3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKTsKK3N0YXRpYyB2b2lkCithdGFfY29udHJvbF93 cml0ZShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwsCisJCWludCBzaXplLCB1aW50NjRfdCB2 YWx1ZSk7CisKKy8qCisgKiBQQ0kgQVRBIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucworICovCitzdGF0 aWMgdm9pZAorcGNpX2F0YV9pbnRyX2Fzc2VydCh2b2lkICphcmcpOworc3RhdGljIHZvaWQKK3Bj aV9hdGFfaW50cl9kZWFzc2VydCh2b2lkICphcmcpOworCitzdGF0aWMgaW50CitwY2lfYXRhX3Bh cnNlX3BhcmFtcyhjb25zdCBjaGFyICpvcHRzLCBjaGFyICpvcHQwLCBjaGFyICpvcHQxLCB1aW50 OF90ICpucl9jaGFubmVscyk7CitzdGF0aWMgaW50CitwY2lfYXRhX2luaXQoc3RydWN0IHZtY3R4 ICpjdHgsIHN0cnVjdCBwY2lfZGV2aW5zdCAqcGksIGNoYXIgKm9wdHMsIGludCBhdGFwaSk7Citz dGF0aWMgaW50CitwY2lfYXRhX2hkX2luaXQoc3RydWN0IHZtY3R4ICpjdHgsIHN0cnVjdCBwY2lf ZGV2aW5zdCAqcGksIGNoYXIgKm9wdHMpOworCitzdGF0aWMgdm9pZAorcGNpX2F0YV9kbWFfc3Rh cnQoc3RydWN0IHBjaV9hdGFfc29mdGMgKnNjLCB1aW50OF90IGNoKTsKK3N0YXRpYyB2b2lkCitw Y2lfYXRhX2RtYV9zdG9wKHN0cnVjdCBwY2lfYXRhX3NvZnRjICpzYywgdWludDhfdCBjaCk7Citz dGF0aWMgdWludDY0X3QKK3BjaV9hdGFfYnVzX21hc3Rlcl9yZWFkKHN0cnVjdCBwY2lfYXRhX3Nv ZnRjICpzYywgdWludDY0X3Qgb2Zmc2V0KTsKK3N0YXRpYyB2b2lkCitwY2lfYXRhX2J1c19tYXN0 ZXJfd3JpdGUoc3RydWN0IHBjaV9hdGFfc29mdGMgKnNjLAorCQl1aW50NjRfdCBvZmZzZXQsIGlu dCBzaXplLCB1aW50NjRfdCB2YWx1ZSk7CisKK3N0YXRpYyB1aW50NjRfdAorcGNpX2F0YV9yZWFk KHN0cnVjdCB2bWN0eCAqY3R4LCBpbnQgdmNwdSwgc3RydWN0IHBjaV9kZXZpbnN0ICpwaSwgaW50 IGJhcmlkeCwKKwkJdWludDY0X3Qgb2Zmc2V0LCBpbnQgc2l6ZSk7CitzdGF0aWMgdm9pZAorcGNp X2F0YV93cml0ZShzdHJ1Y3Qgdm1jdHggKmN0eCwgaW50IHZjcHUsIHN0cnVjdCBwY2lfZGV2aW5z dCAqcGksCisJCWludCBiYXJpZHgsIHVpbnQ2NF90IG9mZnNldCwgaW50IHNpemUsIHVpbnQ2NF90 IHZhbHVlKTsKKworLyoKKyAqIExQQyBBVEEgZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgKi8KK3N0 YXRpYyB2b2lkCitscGNfYXRhX2ludHJfYXNzZXJ0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZAor bHBjX2F0YV9pbnRyX2RlYXNzZXJ0KHZvaWQgKmFyZyk7CisKK2ludAorbHBjX2F0YV9pbml0KHN0 cnVjdCB2bWN0eCAqY3R4LCBjb25zdCBjaGFyICpvcHRzKTsKKworc3RhdGljIGludAorbHBjX2F0 YV9pb19oYW5kbGVyKHN0cnVjdCB2bWN0eCAqY3R4LCBpbnQgdmNwdSwKKwkJICAgaW50IGluLCBp bnQgcG9ydCwgaW50IGJ5dGVzLCB1aW50MzJfdCAqZWF4LCB2b2lkICphcmcpOworc3RhdGljIGlu dAorbHBjX2F0YV9pb2N0bF9oYW5kbGVyKHN0cnVjdCB2bWN0eCAqY3R4LCBpbnQgdmNwdSwKKwkJ ICAgaW50IGluLCBpbnQgcG9ydCwgaW50IGJ5dGVzLCB1aW50MzJfdCAqZWF4LCB2b2lkICphcmcp OworCisKKy8qCisgKiBBVEEgZ2xvYmFsIGRhdGEKKyAqLworc3RydWN0IHBjaV9kZXZlbXUgcGNp X2RlX2F0YV9oZCA9IHsKKwkucGVfZW11ID0JImF0YS1oZCIsCisJLnBlX2luaXQgPQlwY2lfYXRh X2hkX2luaXQsCisJLnBlX2JhcndyaXRlID0JcGNpX2F0YV93cml0ZSwKKwkucGVfYmFycmVhZCA9 CXBjaV9hdGFfcmVhZAorfTsKK1BDSV9FTVVMX1NFVChwY2lfZGVfYXRhX2hkKTsKKworc3RhdGlj IHN0cnVjdCBscGNfYXRhX3NvZnRjIGxwY19hdGFfc2NbQVRBX0NIQU5ORUxTXSA9IHsKKwl7TlVM TCwgMTQsIDB4MWYwLCAweDNmNiwgImF0YTBfaW9wb3J0IiwgImF0YTBfaW9jdGxwb3J0In0sCisJ e05VTEwsIDE1LCAweDE3MCwgMHgzNzYsICJhdGExX2lvcG9ydCIsICJhdGExX2lvY3RscG9ydCJ9 Cit9OworCisKKy8qCisgKiBBVEEgbW9kdWxlIGZ1bmN0aW9uIGRlZmluaXRpb25zCisgKi8KK3N0 YXRpYyB2b2lkCithdGFfaXJxX3JhaXNlKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCkKK3sK Kwl1aW50OF90IGlycV9kaXNhYmxlZDsKKworCWlycV9kaXNhYmxlZCA9IGNoYW5uZWwtPmRyaXZl c1tjaGFubmVsLT5kcml2ZV0uaXJxX2Rpc2FibGVkOworCisJaWYgKCFpcnFfZGlzYWJsZWQgJiYg IWNoYW5uZWwtPmxpbnRyKSB7CisJCWNoYW5uZWwtPmxpbnRyID0gMTsKKwkJY2hhbm5lbC0+aW50 cl9hc3NlcnQoY2hhbm5lbC0+cHJfc2MpOworCX0KKworCXJldHVybjsKK30KKworc3RhdGljIHZv aWQKK2F0YV9pcnFfbG93ZXIoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQoreworCWlmIChj aGFubmVsLT5saW50cikgeworCQljaGFubmVsLT5saW50ciA9IDA7CisJCWNoYW5uZWwtPmludHJf ZGVhc3NlcnQoY2hhbm5lbC0+cHJfc2MpOworCX0KKworCXJldHVybjsKK30KKworc3RhdGljIGF0 YV9kcml2ZV90eXBlCithdGFfZHJpdmVfdHlwZV9ieV9uYW1lKGNoYXIgKmRyaXZlX25hbWUpCit7 CisJaW50IGksIGxlbjsKKwljaGFyICpleHQgPSBOVUxMOworCisJaWYgKCFkcml2ZV9uYW1lKQor CQlyZXR1cm4gQVRBX0RSSVZFX0VNUFRZOworCisJbGVuID0gc3RybGVuKGRyaXZlX25hbWUpOwor CisJZm9yIChpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIHsKKwkJaWYgKGRyaXZlX25hbWVbaV0g PT0gJy4nKSB7CisJCQlleHQgPSBkcml2ZV9uYW1lICsgaSArIDE7CisJCQlpZiAoc3RyY21wKGV4 dCwgImlzbyIpID09IDApCisJCQkJcmV0dXJuIEFUQVBJX0NEOworCQkJYnJlYWs7CisJCX0KKwl9 CisKKwlyZXR1cm4gQVRBX0hEOworfQorCitzdGF0aWMgaW50CithdGFfcGFyc2VfcGFyYW1zKGNv bnN0IGNoYXIgKm9wdHMsIGludCAqY2hhbm5lbCwgY2hhciAqZGlza19tYXN0ZXIsCisJCSBjaGFy ICpkaXNrX3NsYXZlLCB1aW50OF90ICpoYXNfc2xhdmUpCit7CisJdWludDhfdCBsZW47CisJY2hh ciBwYXJhbVs2NF07CisJY2hhciAqcGFyYW1zWzNdOworCXVpbnQ4X3QgaSwgajsKKwlpbnQgY2g7 CisKKwlwYXJhbXNbMF0gPSBOVUxMOworCXBhcmFtc1sxXSA9IE5VTEw7CisJcGFyYW1zWzJdID0g TlVMTDsKKworCWlmICghb3B0cykgeworCQlkcHJpbnQoTE9HX0VSUiwgImF0YV9wYXJzZV9wYXJh bXM6IG9wdHMgc2hvdWxkIGJlIGxpa2U6IFgsTUFTVEVSWyxTTEFWRV1cbiIpOworCQlyZXR1cm4g LTE7CisJfQorCisJbGVuID0gc3RybGVuKG9wdHMpOworCWlmIChsZW4gPj0gNjQpIHsKKwkJZHBy aW50KExPR19FUlIsICJhdGFfcGFyc2VfcGFyYW1zOiBBVEEgc3RyaW5nIHBhcmFtIHRvbyBiaWdc biIpOworCQlyZXR1cm4gLTE7CisJfQorCisJc3RyY3B5KHBhcmFtLCBvcHRzKTsKKworCWogPSAw OworCXBhcmFtc1tqXSA9IHBhcmFtOworCWZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworCQlp ZiAocGFyYW1baV0gPT0gJywnKSB7CisJCQlqKys7CisJCQlpZiAoaiA+IDIpIHsKKwkJCQlkcHJp bnQoTE9HX0VSUiwgImF0YV9wYXJzZV9wYXJhbXM6IHRvIG1hbnkgcGFyYW1zXG4iKTsKKwkJCQly ZXR1cm4gLTE7CisJCQl9CisJCQlwYXJhbVtpXSA9ICdcMCc7CisJCQlwYXJhbXNbal0gPSBwYXJh bSArIGkgKyAxOworCQl9CisJfQorCisJY2ggPSBhdG9pKHBhcmFtc1swXSk7CisJaWYgKGNoICE9 IEFUQV9YICYmIGNoICE9IEFUQV9ZKSB7CisJCWRwcmludChMT0dfRVJSLCAiYXRhX3BhcnNlX3Bh cmFtczogdGhlIGNoYW5uZWwgc2hvdWxkIGJlIDAgb3IgMVxuIik7CisJCXJldHVybiAtMTsKKwl9 CisJKmNoYW5uZWwgPSBjaDsKKworCWlmIChwYXJhbXNbMV0gPT0gTlVMTCB8fCBzdHJsZW4ocGFy YW1zWzFdKSA+PSAzMikgeworCQlkcHJpbnQoTE9HX0VSUiwgImF0YV9wYXJzZV9wYXJhbXM6IHRo ZSBuYW1lIG9mIE1BU1RFUiBzaG91bGQgYmUgZ2l2ZW5cbiIpOworCQlyZXR1cm4gLTE7CisJfQor CXN0cmNweShkaXNrX21hc3RlciwgcGFyYW1zWzFdKTsKKworCWlmIChwYXJhbXNbMl0gIT0gTlVM TCAmJiBzdHJsZW4ocGFyYW1zWzJdKSA8IDMyKSB7CisJCXN0cmNweShkaXNrX3NsYXZlLCAgcGFy YW1zWzJdKTsKKwkJKmhhc19zbGF2ZSA9IDE7CisJfQorCisJcmV0dXJuIDA7CisKK30KKworc3Rh dGljIHN0cnVjdCBhdGFfY2hhbm5lbCAqCithdGFfaW5pdChzdHJ1Y3Qgdm1jdHggKmN0eCwgYXRh X2ludHJfZnVuY190IGludHJfYXNzZXJ0LCBhdGFfaW50cl9mdW5jX3QgaW50cl9kZWFzc2VydCwg dm9pZCAqcHJfc2MsCisJIGNvbnN0IGNoYXIgKm9wdHMsIHVpbnQ4X3QgaXNhX2F0KQoreworCWNo YXIgYmlkZW50W3NpemVvZigiWFg6WDpYOlgiKV07CisJc3RydWN0IGJsb2NraWZfY3R4dCAqYmN0 eHQgPSBOVUxMLCAqYmN0eHRfcyA9IE5VTEw7CisJc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVs ID0gTlVMTDsKKwlpbnQgcmV0OworCWludCBjaF9hdGEgPSAtMTsKKwljaGFyIGRpc2tfbWFzdGVy WzMyXTsKKwljaGFyIGRpc2tfc2xhdmVbMzJdOworCXVpbnQ4X3QgaGFzX3NsYXZlID0gMDsKKwlh dGFfZHJpdmVfdHlwZSBtYXN0ZXJfdHlwZSA9IEFUQV9EUklWRV9FTVBUWTsKKwlhdGFfZHJpdmVf dHlwZSBzbGF2ZV90eXBlID0gQVRBX0RSSVZFX0VNUFRZOworCisJcmV0ID0gYXRhX3BhcnNlX3Bh cmFtcyhvcHRzLCAmY2hfYXRhLCBkaXNrX21hc3RlciwgZGlza19zbGF2ZSwgJmhhc19zbGF2ZSk7 CisJaWYgKHJldCAhPSAwKSB7CisJCWRwcmludChMT0dfRVJSLCAiYXRhX2luaXQ6IHNvbWUgZXJy b3JzIHdpdGggdGhlIGlucHV0IGNoZWNraW5nXG4iKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJ ZHByaW50KExPR19ERUJVRywgImF0YV9pbml0OiBjaF9hdGE6ICVkXG4iLCBjaF9hdGEpOworCisJ LyoKKwkgKiBBdHRlbXB0IHRvIG9wZW4gdGhlIGJhY2tpbmcgaW1hZ2VzLiBVc2UgdGhlCisJICog IlBDSS9JU0E6Y2g6ZHJpdmUiIGZvciB0aGUgaWRlbnRpZmllciBzdHJpbmcuCisJICovCisJc25w cmludGYoYmlkZW50LCBzaXplb2YoYmlkZW50KSwgIiVkOiVkOiVkIiwgaXNhX2F0LCBjaF9hdGEs IEFUQV9NQVNURVIpOworCWJjdHh0ID0gYmxvY2tpZl9vcGVuKGRpc2tfbWFzdGVyLCBiaWRlbnQp OworCWlmIChiY3R4dCA9PSBOVUxMKSB7CisJCWdvdG8gb3Blbl9mYWlsOworCX0KKworCW1hc3Rl cl90eXBlID0gYXRhX2RyaXZlX3R5cGVfYnlfbmFtZShkaXNrX21hc3Rlcik7CisJZHByaW50KExP R19ERUJVRywgImF0YV9pbml0OiBkaXNrX21hc3RlcjogJXMgdHlwZTogJXNcbiIsCisJICAgICAg IGRpc2tfbWFzdGVyLCBtYXN0ZXJfdHlwZSA9PSBBVEFfSEQgPyAiYXRhX2hkIiA6ICJhdGFwaV9j ZCIpOworCisJaWYgKGhhc19zbGF2ZSkgeworCQlzbnByaW50ZihiaWRlbnQsIHNpemVvZihiaWRl bnQpLCAiJWQ6JWQ6JWQiLCBpc2FfYXQsIGNoX2F0YSwgQVRBX1NMQVZFKTsKKwkJYmN0eHRfcyA9 IGJsb2NraWZfb3BlbihkaXNrX3NsYXZlLCBiaWRlbnQpOworCQlpZiAoYmN0eHRfcyA9PSBOVUxM KSB7CisJCQlyZXQgPSAxOworCQkJZ290byBvcGVuX2ZhaWw7CisJCX0KKworCQlzbGF2ZV90eXBl ID0gYXRhX2RyaXZlX3R5cGVfYnlfbmFtZShkaXNrX3NsYXZlKTsKKwkJZHByaW50KExPR19ERUJV RywgImF0YV9pbml0OiBkaXNrX3NsYXZlOiAlcyB0eXBlOiAlc1xuIiwKKwkJICAgICAgIGRpc2tf c2xhdmUsIHNsYXZlX3R5cGUgPT0gQVRBX0hEID8gImF0YV9oZCIgOiAiYXRhcGlfY2QiKTsKKwl9 CisKKwlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2luaXQ6IG9wdHM6ICVzLCBhdGFwaTogJWRcbiIs IG9wdHMsIDApOworCisJY2hhbm5lbCA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGF0YV9jaGFu bmVsKSk7CisKKwljaGFubmVsLT52bV9jdHggPSBjdHg7CisJY2hhbm5lbC0+aW50ZXJmYWNlID0g Y2hfYXRhOworCWNoYW5uZWwtPmhhc19zbGF2ZSA9IGhhc19zbGF2ZTsKKworCWNoYW5uZWwtPmRy aXZlc1tBVEFfTUFTVEVSXS50eXBlID0gbWFzdGVyX3R5cGU7CisJY2hhbm5lbC0+ZHJpdmVzW0FU QV9TTEFWRV0udHlwZSA9IHNsYXZlX3R5cGU7CisKKwljaGFubmVsLT5kcml2ZXNbQVRBX01BU1RF Ul0uYmN0eHQgPSBiY3R4dDsKKwljaGFubmVsLT5kcml2ZXNbQVRBX1NMQVZFXS5iY3R4dCAgPSBi Y3R4dF9zOworCisJY2hhbm5lbC0+ZHJpdmVzW0FUQV9NQVNURVJdLnBpb19zZXR1cC5jaGFubmVs ID0gY2hhbm5lbDsKKwljaGFubmVsLT5kcml2ZXNbQVRBX1NMQVZFXS5waW9fc2V0dXAuY2hhbm5l bCAgPSBjaGFubmVsOworCisJY2hhbm5lbC0+aW50cl9hc3NlcnQgPSBpbnRyX2Fzc2VydDsKKwlj aGFubmVsLT5pbnRyX2RlYXNzZXJ0ID0gaW50cl9kZWFzc2VydDsKKwljaGFubmVsLT5wcl9zYyA9 IHByX3NjOworCisJcmV0dXJuIGNoYW5uZWw7CisKK29wZW5fZmFpbDoKKwlpZiAocmV0KSB7CisJ CWJsb2NraWZfY2xvc2UoYmN0eHQpOworCQlpZiAoYmN0eHRfcyAhPSBOVUxMKSB7CisJCQlibG9j a2lmX2Nsb3NlKGJjdHh0X3MpOworCQl9CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRp YyB2b2lkCithdGFfc3JzdChzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpCit7CisJc3RydWN0 IGF0YV9kcml2ZSAqZHJpdmUgPSBOVUxMOworCWludCBkZXY7CisKKwlkcHJpbnQoTE9HX0RFQlVH LCAiYXRhX3Nyc3Q6IFNvZnR3YXJlIFJlc2V0XG4iKTsKKworCWZvciAoZGV2ID0gMDsgZGV2IDwg QVRBX0RSSVZFUzsgZGV2KyspIHsKKwkJZHJpdmUgPSAmY2hhbm5lbC0+ZHJpdmVzW2Rldl07CisK KwkJaWYgKGRyaXZlLT50eXBlICE9IEFUQV9EUklWRV9FTVBUWSkgeworCisJCQlkcml2ZS0+ZXJy b3IgID0gQVRBX0VfSUxJOworCQkJZHJpdmUtPnN0YXR1cyA9IEFUQV9TX1JFQURZOworCisJCQlh dGFfc2V0X3NpZ25hdHVyZShkcml2ZSk7CisJCX0KKwl9CisKKwlyZXR1cm47Cit9CisKK3N0YXRp YyB2b2lkCithdGFfaW5pdGlhbGl6ZV9pZGVudChzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwp Cit7CisJc3RydWN0IGF0YV9kcml2ZSAqZHJpdmUgPSAmY2hhbm5lbC0+ZHJpdmVzW2NoYW5uZWwt PmRyaXZlXTsKKwlzdHJ1Y3QgYmxvY2tpZl9jdHh0ICpiY3R4dCA9IE5VTEw7CisJc3RydWN0IGF0 YV9wYXJhbXMgKmlkZW50X2RhdGEgPSBOVUxMOworCXN0cnVjdCBhdGFfcGlvX3NldHVwICpwaW9f c2V0dXAgPSBOVUxMOworCisJdWludDE2X3QgY3lsaW5kZXJzOworCXVpbnQ4X3QgIGhlYWRzOwor CXVpbnQ4X3QgIHNlY3RvcnM7CisJdWludDMyX3QgdG90YWxfc2VjdG9yczsKKworCWJjdHh0ID0g ZHJpdmUtPmJjdHh0OworCXBpb19zZXR1cCA9ICZkcml2ZS0+cGlvX3NldHVwOworCWlkZW50X2Rh dGEgPSAoc3RydWN0IGF0YV9wYXJhbXMgKilhdGFfcGlvX2dldF9idWZmZXJfZGF0YShwaW9fc2V0 dXApOworCisJdG90YWxfc2VjdG9ycyA9IGJsb2NraWZfc2l6ZShiY3R4dCkgLyBBVEFfU0VDVE9S X1NJWkU7CisKKwltZW1zZXQoaWRlbnRfZGF0YSwgMCwgc2l6ZW9mKHN0cnVjdCBhdGFfcGFyYW1z KSk7CisKKwkvKiBOdW1iZXIgb2Ygc2VjdG9ycyBwZXIgYmxvY2sgdXNlZCBpbiByZWFkIC8gd3Jp dGUgbXVsdGkgY29tbWFuZHMgKi8KKwlpZGVudF9kYXRhLT5zZWN0b3JzX2ludHIgfD0gMHg4MCA8 PCA4OworCWlkZW50X2RhdGEtPnNlY3RvcnNfaW50ciB8PSBBVEFfU0VDVE9SU19QRVJfQkxPQ0s7 CisKKwkvKiBVc2UgRE1BMiBtb2RlICovCisJaWRlbnRfZGF0YS0+Y2FwYWJpbGl0aWVzMSB8PSBB VEFfU1VQUE9SVF9ETUE7CisJaWRlbnRfZGF0YS0+bXdkbWFtb2RlcyB8PSBBVEFfV19ETUEyOwor CisJLyogVXNlIFBJTzQgbW9kZSAqLworCWlkZW50X2RhdGEtPmF0YXZhbGlkICB8PSBBVEFfRkxB R182NF83MDsKKwlpZGVudF9kYXRhLT5hcGlvbW9kZXMgfD0gQVRBX01PREVfUElPNDsKKworCS8q IFdlIHVzZSAyOC1iaXQgTEJBIGFkZHJlc3NpbmcgYmVjYXVzZSBDSFMgYWRkcmVzc2luZyBpcyBv YnNvbGV0ZSBpbiBBVEEvQVRBUEkgNiAqLworCWlkZW50X2RhdGEtPmNhcGFiaWxpdGllczEgfD0g QVRBX1NVUFBPUlRfTEJBOworCWlkZW50X2RhdGEtPmxiYV9zaXplXzEgPSB0b3RhbF9zZWN0b3Jz OworCWlkZW50X2RhdGEtPmxiYV9zaXplXzIgPSB0b3RhbF9zZWN0b3JzID4+IDE2OworCisJLyog U3VwcG9ydCB3cml0ZS1yZWFkLXZlcmlmeSAqLworCWlkZW50X2RhdGEtPnN1cHBvcnQyIHw9IEFU QV9TVVBQT1JUX1dSSVRFUkVBRFZFUklGWTsKKwlpZGVudF9kYXRhLT5lbmFibGVkMiB8PSBBVEFf U1VQUE9SVF9XUklURVJFQURWRVJJRlk7CisKKwkvKiBTdXBwb3J0IEFUQSBGTFVTSENBQ0hFICov CisJaWRlbnRfZGF0YS0+c3VwcG9ydC5jb21tYW5kMiB8PSBBVEFfU1VQUE9SVF9GTFVTSENBQ0hF OworCWlkZW50X2RhdGEtPmVuYWJsZWQuY29tbWFuZDIgfD0gQVRBX1NVUFBPUlRfRkxVU0hDQUNI RTsKKworCS8qIE1ham9yIHZlcnNpb24gbnVtYmVyID0gQVRBL0FUQVBJLTYgKi8KKwlpZGVudF9k YXRhLT52ZXJzaW9uX21ham9yIHw9IEFUQV9BVEFQSV82OworCisJLyogVGhpcyBpbmZvcm1hdGlv biBhcmUgdXNlZCBvbmx5IGZvciBwcmludGluZyBwdXJwb3NlcyAqLworCWJsb2NraWZfY2hzKGJj dHh0LCAmY3lsaW5kZXJzLCAmaGVhZHMsICZzZWN0b3JzKTsKKworCWlkZW50X2RhdGEtPmN5bGlu ZGVycyA9IGN5bGluZGVyczsKKwlpZGVudF9kYXRhLT5oZWFkcyAgICAgPSBoZWFkczsKKwlpZGVu dF9kYXRhLT5zZWN0b3JzICAgPSBzZWN0b3JzOworCisJLyogTW9kZWw6IEJIWVZFIEFUQSBJREUg RElTSyAqLworCW1lbWNweShpZGVudF9kYXRhLT5tb2RlbCwgICAgIkhCVlkgRVRBIEFESSBFSURL UyAgICAgICAgICAgICAgICAgICAgICAiLCA0MCk7CisJLyogU2VyaWFsIG51bWJlcjogMTIzNDU2 ICovCisJbWVtY3B5KGlkZW50X2RhdGEtPnNlcmlhbCwgICAiMjE0MzY1ICAgICAgICAgICAgICAi LCAyMCk7CisJLyogRmlybXdhcmUgdmVyc2lvbjogMS4wICovCisJbWVtY3B5KGlkZW50X2RhdGEt PnJldmlzaW9uLCAiLjEgMCAgICAiLCA4KTsKKworCWRwcmludChMT0dfREVCVUcsICJhdGFfaW5p dGlhbGl6ZV9pZGVudDogY2hhbm5lbDogJWQsIGRyaXZlOiAlZCBDOiAlZCwgSDogJWQsIFM6ICVk LCB0b3RhbF9zZWN0b3JzOiAlZFxuIiwKKwkJCWNoYW5uZWwtPmludGVyZmFjZSwgY2hhbm5lbC0+ ZHJpdmUsIGN5bGluZGVycywgaGVhZHMsIHNlY3RvcnMsIHRvdGFsX3NlY3RvcnMpOworCisJYXRh X3Bpb19kb190cmFuc2ZlcihwaW9fc2V0dXAsIHNpemVvZihzdHJ1Y3QgYXRhX3BhcmFtcyksIGF0 YV9waW9fZ2VuZXJpY19lbmRfdHJhbnNmZXIsIGNoYW5uZWwtPnVzZV8xNmJpdCk7CisKKwlyZXR1 cm47Cit9CisKK3N0YXRpYyB2b2lkCithdGFfYXRhcGlfaW5pdGlhbGl6ZV9pZGVudChzdHJ1Y3Qg YXRhX2NoYW5uZWwgKmNoYW5uZWwpCit7CisJc3RydWN0IGF0YV9kcml2ZSAqZHJpdmUgPSAmY2hh bm5lbC0+ZHJpdmVzW2NoYW5uZWwtPmRyaXZlXTsKKwlzdHJ1Y3QgYXRhX3BhcmFtcyAqaWRlbnRf ZGF0YSA9IE5VTEw7CisJc3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCA9IE5VTEw7CisK KwlwaW9fc2V0dXAgPSAmZHJpdmUtPnBpb19zZXR1cDsKKwlpZGVudF9kYXRhID0gKHN0cnVjdCBh dGFfcGFyYW1zICopYXRhX3Bpb19nZXRfYnVmZmVyX2RhdGEocGlvX3NldHVwKTsKKworCW1lbXNl dChpZGVudF9kYXRhLCAwLCBzaXplb2Yoc3RydWN0IGF0YV9wYXJhbXMpKTsKKworCS8qIENEUk9N IGRldmljZSAqLworCWlkZW50X2RhdGEtPmNvbmZpZyB8PSAoQVRBX1BST1RPX0FUQVBJXzEyIHwg QVRBX0FUQVBJX1RZUEVfQ0RST00gfCBBVEFfRFJRX0ZBU1QpOworCisJLyogVXNlIERNQTIgbW9k ZSAqLworCWlkZW50X2RhdGEtPmNhcGFiaWxpdGllczEgfD0gQVRBX1NVUFBPUlRfRE1BOworCWlk ZW50X2RhdGEtPm13ZG1hbW9kZXMgfD0gQVRBX1dfRE1BMjsKKworCS8qIFVzZSBQSU80IG1vZGUg Ki8KKwlpZGVudF9kYXRhLT5hdGF2YWxpZCAgfD0gQVRBX0ZMQUdfNjRfNzA7CisJaWRlbnRfZGF0 YS0+YXBpb21vZGVzIHw9IEFUQV9NT0RFX1BJTzQ7CisKKwkvKiBXZSB1c2UgMjgtYml0IExCQSBh ZGRyZXNzaW5nIGJlY2F1c2UgQ0hTIGFkZHJlc3NpbmcgaXMgb2Jzb2xldGUgaW4gQVRBL0FUQVBJ IDYgKi8KKwlpZGVudF9kYXRhLT5jYXBhYmlsaXRpZXMxIHw9IEFUQV9TVVBQT1JUX0xCQTsKKwor CS8qIE1ham9yIHZlcnNpb24gbnVtYmVyID0gQVRBL0FUQVBJLTYgKi8KKwlpZGVudF9kYXRhLT52 ZXJzaW9uX21ham9yIHw9IEFUQV9BVEFQSV82OworCisJLyogTW9kZWw6IEJIWVZFIEFUQVBJIElE RSBDRFJPTSAqLworCW1lbWNweShpZGVudF9kYXRhLT5tb2RlbCwgICAgIkhCVlkgRVRBUEEgSURJ IEVEQ09SIE0gICAgICAgICAgICAgICAgICAiLCA0MCk7CisJLyogU2VyaWFsIG51bWJlcjogMTIz NDU2ICovCisJbWVtY3B5KGlkZW50X2RhdGEtPnNlcmlhbCwgICAiMjE0MzY1ICAgICAgICAgICAg ICAiLCAyMCk7CisJLyogRmlybXdhcmUgdmVyc2lvbjogMS4wICovCisJbWVtY3B5KGlkZW50X2Rh dGEtPnJldmlzaW9uLCAiLjEgMCAgICAiLCA4KTsKKworCWRwcmludChMT0dfREVCVUcsICJhdGFf YXRhcGlfaW5pdGlhbGl6ZV9pZGVudDogY2hhbm5lbDogJWQsIGRyaXZlOiAlZFxuIiwKKwkgICAg ICAgY2hhbm5lbC0+aW50ZXJmYWNlLCBjaGFubmVsLT5kcml2ZSk7CisKKwlhdGFfcGlvX2RvX3Ry YW5zZmVyKHBpb19zZXR1cCwgc2l6ZW9mKHN0cnVjdCBhdGFfcGFyYW1zKSwgYXRhX3Bpb19nZW5l cmljX2VuZF90cmFuc2ZlciwgY2hhbm5lbC0+dXNlXzE2Yml0KTsKKworCXJldHVybjsKK30KKwor c3RhdGljIGludAorYXRhX2NoYW5uZWxfaXNfb2soc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVs LCB1aW50OF90IGNoKQoreworCWlmIChjaGFubmVsLT5pbnRlcmZhY2UgPT0gY2gpCisJCXJldHVy biAxOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2F0YV9zZWxlY3RfZHJpdmVfaXNf b2soc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQoreworCWlmIChjaGFubmVsLT5kcml2ZSA9 PSBBVEFfU0xBVkUgJiYgIWNoYW5uZWwtPmhhc19zbGF2ZSkgeworCQlyZXR1cm4gMDsKKwl9CisK KwlyZXR1cm4gMTsKK30KKworc3RhdGljIHZvaWQKK2F0YV9zZXRfc3RhdHVzX29rKHN0cnVjdCBh dGFfY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2ZSA9ICZjaGFu bmVsLT5kcml2ZXNbY2hhbm5lbC0+ZHJpdmVdOworCisJZHJpdmUtPnN0YXR1cyAmPSB+QVRBX1Nf QlVTWTsKKwlkcml2ZS0+c3RhdHVzIHw9IEFUQV9TX1JFQURZOworCWRyaXZlLT5zdGF0dXMgJj0g fkFUQV9TX0RXRjsKKwlkcml2ZS0+c3RhdHVzICY9IH5BVEFfU19EUlE7CisJZHJpdmUtPnN0YXR1 cyAmPSB+QVRBX1NfRVJST1I7CisKKwlkcml2ZS0+ZXJyb3IgPSAwOworCisJcmV0dXJuOworfQor CitzdGF0aWMgdm9pZAorYXRhX3NldF9kYXRhX2Jsb2NrX3JlYWR5KHN0cnVjdCBhdGFfY2hhbm5l bCAqY2hhbm5lbCkKK3sKKwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2ZSA9ICZjaGFubmVsLT5kcml2 ZXNbY2hhbm5lbC0+ZHJpdmVdOworCisJZHJpdmUtPmFsdHN0YXR1cyAmPSB+QVRBX1NfQlVTWTsK Kwlkcml2ZS0+YWx0c3RhdHVzIHw9IEFUQV9TX0RSUTsKKwlkcml2ZS0+YWx0c3RhdHVzIHw9IEFU QV9TX1JFQURZOworCisJZHJpdmUtPnN0YXR1cyB8PSBBVEFfU19EUlE7CisKKwlyZXR1cm47Cit9 CisKK3N0YXRpYyB2b2lkCithdGFfY29tbWFuZF9hYm9ydGVkKHN0cnVjdCBhdGFfY2hhbm5lbCAq Y2hhbm5lbCkKK3sKKwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2ZSA9ICZjaGFubmVsLT5kcml2ZXNb Y2hhbm5lbC0+ZHJpdmVdOworCisJZHJpdmUtPnN0YXR1cyAmPSB+QVRBX1NfQlVTWTsKKwlkcml2 ZS0+c3RhdHVzICY9IH5BVEFfU19EUlE7CisJZHJpdmUtPnN0YXR1cyB8PSBBVEFfU19FUlJPUjsK KworCWRyaXZlLT5lcnJvciB8PSBBVEFfRV9BQk9SVDsKKworCXJldHVybjsKK30KKworc3RhdGlj IHZvaWQKK2F0YV9zZXRfc2lnbmF0dXJlKHN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlKQoreworCWRy aXZlLT5zZWNjb3VudCA9IDB4MDE7CisJZHJpdmUtPmxiYV9sb3cgID0gMHgwMTsKKworCWlmIChk cml2ZS0+dHlwZSA9PSBBVEFfSEQpIHsKKwkJZHJpdmUtPmxiYV9taWQgID0gMHgwMDsKKwkJZHJp dmUtPmxiYV9oaWdoID0gMHgwMDsKKwkJZHJpdmUtPmhkZGV2c2VsID0gMHgwMDsKKwl9CisJZWxz ZSBpZiAoZHJpdmUtPnR5cGUgPT0gQVRBUElfQ0QpIHsKKwkJZHJpdmUtPmxiYV9taWQgID0gQVRB UElfTUFHSUNfTFNCOworCQlkcml2ZS0+bGJhX2hpZ2ggPSBBVEFQSV9NQUdJQ19NU0I7CisJCWRy aXZlLT5oZGRldnNlbCAmPSAweDEwOworCX0KKwllbHNlCisJCWFzc2VydCgwKTsKKworCXJldHVy bjsKK30KKworc3RhdGljIHZvaWQKK2F0YV9hZGRyZXNzaW5nX3NlY19jb3VudChzdHJ1Y3QgYXRh X2NoYW5uZWwgKmNoYW5uZWwsIHVpbnQxNl90ICpwX3NlY3Rvcl9jb3VudCkKK3sKKwlzdHJ1Y3Qg YXRhX2RyaXZlICpkcml2ZSA9ICZjaGFubmVsLT5kcml2ZXNbY2hhbm5lbC0+ZHJpdmVdOworCXVp bnQxNl90IHNlY3Rvcl9jb3VudDsKKworCXNlY3Rvcl9jb3VudCA9IGRyaXZlLT5zZWNjb3VudCA/ IGRyaXZlLT5zZWNjb3VudCA6IEFUQV9NQVhfU0VDX0NPVU5UOworCSpwX3NlY3Rvcl9jb3VudCA9 IHNlY3Rvcl9jb3VudDsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2F0YV9hZGRyZXNz aW5nXzI4X2xiYShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwsIHVpbnQzMl90ICpwX2xiYV9h ZGRyZXNzKQoreworCXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tj aGFubmVsLT5kcml2ZV07CisJdWludDMyX3QgbGJhX2FkZHJlc3MgPSAwOworCisJbGJhX2FkZHJl c3MgfD0gZHJpdmUtPmxiYV9sb3c7CisJbGJhX2FkZHJlc3MgfD0gZHJpdmUtPmxiYV9taWQgPDwg ODsKKwlsYmFfYWRkcmVzcyB8PSBkcml2ZS0+bGJhX2hpZ2ggPDwgMTY7CisJbGJhX2FkZHJlc3Mg fD0gKGRyaXZlLT5oZGRldnNlbCAmIEFUQV9MQkFfMjdfMjRfTUFTSykgPDwgMjQ7CisKKwkqcF9s YmFfYWRkcmVzcyA9IGxiYV9hZGRyZXNzOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAor YXRhX2luaXRfYmxvY2tfcmVxdWVzdChzdHJ1Y3QgYmxvY2tpZl9yZXEgKmJyZXEsIHN0cnVjdCBh dGFfY2hhbm5lbCAqY2hhbm5lbCwKKwkJICAgICAgIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qg bmJ5dGVzLCB2b2lkICpidWZmZXIpCit7CisJYnJlcS0+YnJfcGFyYW0gPSBjaGFubmVsOworCWJy ZXEtPmJyX2NhbGxiYWNrID0gYXRhX2hhbmRsZV9ibG9ja19yZXF1ZXN0OworCWJyZXEtPmJyX29m ZnNldCA9IG9mZnNldDsKKwlicmVxLT5icl9pb3ZjbnQgPSAxOworCWJyZXEtPmJyX2lvdlswXS5p b3ZfbGVuID0gbmJ5dGVzOworCWJyZXEtPmJyX2lvdlswXS5pb3ZfYmFzZSA9IGJ1ZmZlcjsKKwor CXJldHVybjsKK30KKworc3RhdGljIHZvaWQKK2F0YV9oYW5kbGVfYmxvY2tfcmVxdWVzdChzdHJ1 Y3QgYmxvY2tpZl9yZXEgKnJlcSwgaW50IGVycikKK3sKKwlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNo YW5uZWwgPSAoc3RydWN0IGF0YV9jaGFubmVsICopcmVxLT5icl9wYXJhbTsKKworCWF0YV9zZXRf c3RhdHVzX29rKGNoYW5uZWwpOworCWF0YV9zZXRfZGF0YV9ibG9ja19yZWFkeShjaGFubmVsKTsK KwlhdGFfaXJxX3JhaXNlKGNoYW5uZWwpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAor YXRhX3Bpb19kb190cmFuc2ZlcihzdHJ1Y3QgYXRhX3Bpb19zZXR1cCAqcGlvX3NldHVwLCB1aW50 NjRfdCBzaXplX3RyYW5zZmVyLAorCQkgICAgIGF0YV9waW9fZW5kX3RyYW5zZmVyX2Z1bmNfdCBl bmRfdHJhbnNmZXIsIHVpbnQ4X3QgdXNlX3dvcmQpCit7CisJYXNzZXJ0KHNpemVfdHJhbnNmZXIg PD0gQVRBX0lOQlVGX1NJWkUpOworCWFzc2VydCghYXRhX3Bpb19pbl9wcm9ncmVzcyhwaW9fc2V0 dXApKTsKKworCXBpb19zZXR1cC0+dXNlX3dvcmQgPSB1c2Vfd29yZDsKKwlwaW9fc2V0dXAtPnBp b19idWZmZXIuY3VycmVudF9wb3MgPSAwOworCXBpb19zZXR1cC0+c2l6ZV90cmFuc2ZlciA9IHNp emVfdHJhbnNmZXI7CisJcGlvX3NldHVwLT5lbmRfdHJhbnNmZXIgPSBlbmRfdHJhbnNmZXI7CisK KwlyZXR1cm47Cit9CisKK3N0YXRpYyBpbnQKK2F0YV9waW9faW5fcHJvZ3Jlc3Moc3RydWN0IGF0 YV9waW9fc2V0dXAgKnBpb19zZXR1cCkKK3sKKwlyZXR1cm4gKGludClwaW9fc2V0dXAtPmVuZF90 cmFuc2ZlcjsKK30KKworc3RhdGljIHVpbnQ4X3QgKgorYXRhX3Bpb19nZXRfYnVmZmVyX2RhdGEo c3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCkKK3sKKwlyZXR1cm4gcGlvX3NldHVwLT5w aW9fYnVmZmVyLmRhdGE7Cit9CisKK3N0YXRpYyB2b2lkCithdGFfcGlvX2NoZWNrX2VuZF90cmFu c2ZlcihzdHJ1Y3QgYXRhX3Bpb19zZXR1cCAqcGlvX3NldHVwKQoreworCXN0cnVjdCBhdGFfY2hh bm5lbCAqY2hhbm5lbCA9IHBpb19zZXR1cC0+Y2hhbm5lbDsKKwlzdHJ1Y3QgYXRhX3Bpb19idWZm ZXIgKnBpb19idWZmZXIgPSAmcGlvX3NldHVwLT5waW9fYnVmZmVyOworCWF0YV9waW9fZW5kX3Ry YW5zZmVyX2Z1bmNfdCBlbmRfdHJhbnNmZXIgPSBwaW9fc2V0dXAtPmVuZF90cmFuc2ZlcjsKKwor CWlmIChwaW9fYnVmZmVyLT5jdXJyZW50X3BvcyA9PSBwaW9fc2V0dXAtPnNpemVfdHJhbnNmZXIp IHsKKwkJcGlvX3NldHVwLT5lbmRfdHJhbnNmZXIgPSBOVUxMOworCQllbmRfdHJhbnNmZXIoY2hh bm5lbCk7CisJfQorCisJcmV0dXJuOworfQorCitzdGF0aWMgdWludDMyX3QKK2F0YV9waW9fZ2V0 X3VpbnQoc3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCkKK3sKKwlzdHJ1Y3QgYXRhX3Bp b19idWZmZXIgKnBpb19idWZmZXIgPSAmcGlvX3NldHVwLT5waW9fYnVmZmVyOworCXVpbnQzMl90 IHZhbHVlOworCisJYXNzZXJ0KHBpb19idWZmZXItPmN1cnJlbnRfcG9zIDwgcGlvX3NldHVwLT5z aXplX3RyYW5zZmVyKTsKKworCWlmIChwaW9fc2V0dXAtPnVzZV93b3JkKSB7CisJCXZhbHVlID0g Kih1aW50MTZfdCAqKShwaW9fYnVmZmVyLT5kYXRhICsgcGlvX2J1ZmZlci0+Y3VycmVudF9wb3Mp OworCQlwaW9fYnVmZmVyLT5jdXJyZW50X3BvcyArPSBzaXplb2YodWludDE2X3QpOworCX0KKwll bHNlIHsKKwkJdmFsdWUgPSAqKHVpbnQzMl90ICopKHBpb19idWZmZXItPmRhdGEgKyBwaW9fYnVm ZmVyLT5jdXJyZW50X3Bvcyk7CisJCXBpb19idWZmZXItPmN1cnJlbnRfcG9zICs9IHNpemVvZih1 aW50MzJfdCk7CisJfQorCisJYXRhX3Bpb19jaGVja19lbmRfdHJhbnNmZXIocGlvX3NldHVwKTsK KworCXJldHVybiB2YWx1ZTsKK30KKworc3RhdGljIHZvaWQKK2F0YV9waW9fcHV0X3VpbnQoc3Ry dWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCwgdWludDMyX3Qgd3JpdGVfdmFsdWUpCit7CisJ c3RydWN0IGF0YV9waW9fYnVmZmVyICpwaW9fYnVmZmVyID0gJnBpb19zZXR1cC0+cGlvX2J1ZmZl cjsKKworCWFzc2VydChwaW9fYnVmZmVyLT5jdXJyZW50X3BvcyA8IHBpb19zZXR1cC0+c2l6ZV90 cmFuc2Zlcik7CisKKwlpZiAocGlvX3NldHVwLT51c2Vfd29yZCkgeworCQkqKHVpbnQxNl90ICop KHBpb19idWZmZXItPmRhdGEgKyBwaW9fYnVmZmVyLT5jdXJyZW50X3BvcykgPSAodWludDE2X3Qp d3JpdGVfdmFsdWU7CisJCXBpb19idWZmZXItPmN1cnJlbnRfcG9zICs9IHNpemVvZih1aW50MTZf dCk7CisJfQorCWVsc2UgeworCQkqKHVpbnQzMl90ICopKHBpb19idWZmZXItPmRhdGEgKyBwaW9f YnVmZmVyLT5jdXJyZW50X3BvcykgPSB3cml0ZV92YWx1ZTsKKwkJcGlvX2J1ZmZlci0+Y3VycmVu dF9wb3MgKz0gc2l6ZW9mKHVpbnQzMl90KTsKKwl9CisKKwlhdGFfcGlvX2NoZWNrX2VuZF90cmFu c2ZlcihwaW9fc2V0dXApOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX3Bpb19n ZW5lcmljX2VuZF90cmFuc2ZlcihzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpCit7CisJZHBy aW50KExPR19ERUJVRywgImF0YV9waW9fZ2VuZXJpY19lbmRfdHJhbnNmZXI6IGNoOiAlZCBkcml2 ZTogJWRcbiIsCisJICAgICAgIGNoYW5uZWwtPmludGVyZmFjZSwgY2hhbm5lbC0+ZHJpdmUpOwor CisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX3JlYWRfbXVsdGlwbGVfYmxvY2tfZG9u ZShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpCit7CisJc3RydWN0IGF0YV9kcml2ZSAqZHJp dmUgPSAmY2hhbm5lbC0+ZHJpdmVzW2NoYW5uZWwtPmRyaXZlXTsKKwlzdHJ1Y3QgYmxvY2tpZl9j dHh0ICpiY3R4dCA9IE5VTEw7CisJc3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCA9IE5V TEw7CisJc3RydWN0IGJsb2NraWZfcmVxICpicmVxID0gTlVMTDsKKwl1aW50NjRfdCBjb3VudDsK Kwl1aW50NjRfdCBzaXplX3RyYW5zZmVyOworCWludCBlcnI7CisKKwliY3R4dCA9IGRyaXZlLT5i Y3R4dDsKKwlwaW9fc2V0dXAgPSAmZHJpdmUtPnBpb19zZXR1cDsKKwlicmVxID0gJnBpb19zZXR1 cC0+YnJlcTsKKworCWRyaXZlLT5vZmZzZXQgKz0gcGlvX3NldHVwLT5zaXplX3RyYW5zZmVyOwor CWRyaXZlLT5jb3VudCAtPSBwaW9fc2V0dXAtPnNpemVfdHJhbnNmZXI7CisKKwljb3VudCA9IGRy aXZlLT5jb3VudDsKKworCWlmIChjb3VudCkgeworCQlzaXplX3RyYW5zZmVyID0gY291bnQgPj0g QVRBX0JMT0NLX1NJWkUgPyBBVEFfQkxPQ0tfU0laRSA6IGNvdW50OworCQlhdGFfcGlvX2RvX3Ry YW5zZmVyKHBpb19zZXR1cCwgc2l6ZV90cmFuc2ZlciwgYXRhX3JlYWRfbXVsdGlwbGVfYmxvY2tf ZG9uZSwgY2hhbm5lbC0+dXNlXzE2Yml0KTsKKworCQlhdGFfaW5pdF9ibG9ja19yZXF1ZXN0KGJy ZXEsIGNoYW5uZWwsIGRyaXZlLT5vZmZzZXQsCisJCQkJICAgICAgIHNpemVfdHJhbnNmZXIsIGF0 YV9waW9fZ2V0X2J1ZmZlcl9kYXRhKHBpb19zZXR1cCkpOworCisJCWVyciA9IGJsb2NraWZfcmVh ZChiY3R4dCwgYnJlcSk7CisJCWFzc2VydCghZXJyKTsKKwl9CisJZWxzZSB7CisJCWRwcmludChM T0dfREVCVUcsICJhdGFfcmVhZF9tdWx0aXBsZV9ibG9ja19kb25lOiBBVEFfUkVBRF9NVUwgY29t cGxldGVkXG4iKTsKKwl9CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCithdGFfd3JpdGVf bXVsdGlwbGVfYmxvY2tfZG9uZShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpCit7CisJc3Ry dWN0IGF0YV9kcml2ZSAqZHJpdmUgPSAmY2hhbm5lbC0+ZHJpdmVzW2NoYW5uZWwtPmRyaXZlXTsK KwlzdHJ1Y3QgYmxvY2tpZl9jdHh0ICpiY3R4dCA9IE5VTEw7CisJc3RydWN0IGF0YV9waW9fc2V0 dXAgKnBpb19zZXR1cCA9IE5VTEw7CisJc3RydWN0IGJsb2NraWZfcmVxICpicmVxID0gTlVMTDsK Kwl1aW50NjRfdCBjb3VudDsKKwl1aW50NjRfdCBzaXplX3RyYW5zZmVyOworCWludCBlcnI7CisK KwliY3R4dCA9IGRyaXZlLT5iY3R4dDsKKwlwaW9fc2V0dXAgPSAmZHJpdmUtPnBpb19zZXR1cDsK KwlicmVxID0gJnBpb19zZXR1cC0+YnJlcTsKKworCWF0YV9pbml0X2Jsb2NrX3JlcXVlc3QoYnJl cSwgY2hhbm5lbCwgZHJpdmUtPm9mZnNldCwKKwkJCSAgICAgICBwaW9fc2V0dXAtPnNpemVfdHJh bnNmZXIsIGF0YV9waW9fZ2V0X2J1ZmZlcl9kYXRhKHBpb19zZXR1cCkpOworCisJZHJpdmUtPm9m ZnNldCArPSBwaW9fc2V0dXAtPnNpemVfdHJhbnNmZXI7CisJZHJpdmUtPmNvdW50IC09IHBpb19z ZXR1cC0+c2l6ZV90cmFuc2ZlcjsKKworCWNvdW50ID0gZHJpdmUtPmNvdW50OworCisJaWYgKGNv dW50KSB7CisJCXNpemVfdHJhbnNmZXIgPSBjb3VudCA+PSBBVEFfQkxPQ0tfU0laRSA/IEFUQV9C TE9DS19TSVpFIDogY291bnQ7CisJCWF0YV9waW9fZG9fdHJhbnNmZXIocGlvX3NldHVwLCBzaXpl X3RyYW5zZmVyLCBhdGFfd3JpdGVfbXVsdGlwbGVfYmxvY2tfZG9uZSwgY2hhbm5lbC0+dXNlXzE2 Yml0KTsKKwl9CisJZWxzZSB7CisJCWRwcmludChMT0dfREVCVUcsICJhdGFfd3JpdGVfbXVsdGlw bGVfYmxvY2tfZG9uZTogQVRBX1dSSVRFX01VTCBjb21wbGV0ZWRcbiIpOworCX0KKworCWVyciA9 IGJsb2NraWZfd3JpdGUoYmN0eHQsIGJyZXEpOworCWFzc2VydCghZXJyKTsKKworCXJldHVybjsK K30KKworc3RhdGljIHZvaWQKK2F0YV9hdGFwaV9oYW5kbGVfcmVhZF9kb25lKHN0cnVjdCBhdGFf Y2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2ZSA9ICZjaGFubmVs LT5kcml2ZXNbY2hhbm5lbC0+ZHJpdmVdOworCXN0cnVjdCBibG9ja2lmX2N0eHQgKmJjdHh0ID0g TlVMTDsKKwlzdHJ1Y3QgYXRhX3Bpb19zZXR1cCAqcGlvX3NldHVwID0gTlVMTDsKKwlzdHJ1Y3Qg YmxvY2tpZl9yZXEgKmJyZXEgPSBOVUxMOworCXVpbnQ2NF90IGNvdW50OworCWludCBlcnI7CisK KwliY3R4dCA9IGRyaXZlLT5iY3R4dDsKKwlwaW9fc2V0dXAgPSAmZHJpdmUtPnBpb19zZXR1cDsK KwlicmVxID0gJnBpb19zZXR1cC0+YnJlcTsKKworCWRyaXZlLT5vZmZzZXQgKz0gQVRBUElfQkxP Q0tfU0laRTsKKwlkcml2ZS0+Y291bnQgLT0gQVRBUElfQkxPQ0tfU0laRTsKKworCWNvdW50ID0g ZHJpdmUtPmNvdW50OworCisJaWYgKGNvdW50KSB7CisJCWFzc2VydChjb3VudCA+PSBBVEFQSV9C TE9DS19TSVpFKTsKKworCQlkcml2ZS0+c2VjY291bnQgPSBBVEFfSV9JTjsKKworCQlhdGFfcGlv X2RvX3RyYW5zZmVyKHBpb19zZXR1cCwgQVRBUElfQkxPQ0tfU0laRSwgYXRhX2F0YXBpX2hhbmRs ZV9yZWFkX2RvbmUsIGNoYW5uZWwtPnVzZV8xNmJpdCk7CisKKwkJYXRhX2luaXRfYmxvY2tfcmVx dWVzdChicmVxLCBjaGFubmVsLCBkcml2ZS0+b2Zmc2V0LAorCQkJCSAgICAgICBBVEFQSV9CTE9D S19TSVpFLCBhdGFfcGlvX2dldF9idWZmZXJfZGF0YShwaW9fc2V0dXApKTsKKworCQllcnIgPSBi bG9ja2lmX3JlYWQoYmN0eHQsIGJyZXEpOworCQlhc3NlcnQoIWVycik7CisJfQorCWVsc2Ugewor CQlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2F0YXBpX2hhbmRsZV9yZWFkX2RvbmU6IFJFQUQgY29t cGxldGVkXG4iKTsKKwkJYXRhX2F0YXBpX2NtZF9kb25lKGNoYW5uZWwpOworCX0KKworCXJldHVy bjsKK30KKworc3RhdGljIHZvaWQKK2F0YV9oYW5kbGVfaWRlbnRpZnkoc3RydWN0IGF0YV9jaGFu bmVsICpjaGFubmVsKQoreworCXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwtPmRy aXZlc1tjaGFubmVsLT5kcml2ZV07CisKKwlpZiAoZHJpdmUtPnR5cGUgPT0gQVRBX0hEKSB7CisJ CWF0YV9pbml0aWFsaXplX2lkZW50KGNoYW5uZWwpOworCisJCWF0YV9zZXRfZGF0YV9ibG9ja19y ZWFkeShjaGFubmVsKTsKKwkJYXRhX3NldF9zdGF0dXNfb2soY2hhbm5lbCk7CisJCWF0YV9pcnFf cmFpc2UoY2hhbm5lbCk7CisJfQorCWVsc2UgaWYgKGRyaXZlLT50eXBlID09IEFUQVBJX0NEKSB7 CisJCWF0YV9jb21tYW5kX2Fib3J0ZWQoY2hhbm5lbCk7CisJCWF0YV9zZXRfc2lnbmF0dXJlKGRy aXZlKTsKKwl9CisJZWxzZQorCQlhc3NlcnQoMCk7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2 b2lkCithdGFfaGFuZGxlX3NldGZlYXR1cmVzKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCkK K3sKKwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2ZSA9ICZjaGFubmVsLT5kcml2ZXNbY2hhbm5lbC0+ ZHJpdmVdOworCisJc3dpdGNoIChkcml2ZS0+ZmVhdHVyZXMpIHsKKwljYXNlIEFUQV9TRl9TRVRY RkVSOgorCQljaGFubmVsLT5tb2RlID0gZHJpdmUtPnNlY2NvdW50OworCQlkcHJpbnQoTE9HX0RF QlVHLCAiYXRhX2hhbmRsZV9zZXRmZWF0dXJlcyBBVEFfU0ZfU0VUWEZFUjogbW9kZTogJWRcbiIs CisJCSAgICAgICBjaGFubmVsLT5tb2RlKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfU0ZfRU5BQl9X Q0FDSEU6CisJCWJyZWFrOworCWNhc2UgQVRBX1NGX0RJU19XQ0FDSEU6CisJCWJyZWFrOworCWNh c2UgQVRBX1NGX0VOQUJfUFVJUzoKKwkJYnJlYWs7CisJY2FzZSBBVEFfU0ZfRElTX1BVSVM6CisJ CWJyZWFrOworCWNhc2UgQVRBX1NGX1BVSVNfU1BJTlVQOgorCQlicmVhazsKKwljYXNlIEFUQV9T Rl9FTkFCX1JDQUNIRToKKwkJYnJlYWs7CisJY2FzZSBBVEFfU0ZfRElTX1JDQUNIRToKKwkJYnJl YWs7CisJY2FzZSBBVEFfU0ZfRU5BQl9SRUxJUlE6CisJCWJyZWFrOworCWNhc2UgQVRBX1NGX0RJ U19SRUxJUlE6CisJCWJyZWFrOworCWNhc2UgQVRBX1NGX0VOQUJfU1JWSVJROgorCQlicmVhazsK KwljYXNlIEFUQV9TRl9ESVNfU1JWSVJROgorCQlicmVhazsKKwlkZWZhdWx0OgorCQlicmVhazsK Kwl9CisKKwlhdGFfc2V0X3N0YXR1c19vayhjaGFubmVsKTsKKwlhdGFfaXJxX3JhaXNlKGNoYW5u ZWwpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX2hhbmRsZV9zZXRfbXVsdGko c3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQoreworCXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZl ID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2ZV07CisKKwlkcHJpbnQoTE9HX0RFQlVH LCAiYXRhX2hhbmRsZV9zZXRfbXVsdGk6IGRyaXZlLT5zZWNjb3VudDogJWRcbiIsCisJICAgICAg IGRyaXZlLT5zZWNjb3VudCk7CisKKwlhc3NlcnQoZHJpdmUtPnNlY2NvdW50IDw9IEFUQV9TRUNU T1JTX1BFUl9CTE9DSyk7CisKKwlhdGFfc2V0X3N0YXR1c19vayhjaGFubmVsKTsKKwlhdGFfaXJx X3JhaXNlKGNoYW5uZWwpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorYXRhX2hhbmRs ZV9yZWFkX211bHRpcGxlKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlzdHJ1Y3Qg YXRhX2RyaXZlICpkcml2ZSA9ICZjaGFubmVsLT5kcml2ZXNbY2hhbm5lbC0+ZHJpdmVdOworCXN0 cnVjdCBibG9ja2lmX2N0eHQgKmJjdHh0ID0gTlVMTDsKKwlzdHJ1Y3QgYXRhX3Bpb19zZXR1cCAq cGlvX3NldHVwID0gTlVMTDsKKwlzdHJ1Y3QgYmxvY2tpZl9yZXEgKmJyZXEgPSBOVUxMOworCisJ dWludDE2X3Qgc2VjdG9yX2NvdW50OworCXVpbnQzMl90IGxiYV9hZGRyZXNzID0gMDsKKwl1aW50 NjRfdCBvZmZzZXQ7CisJdWludDY0X3QgY291bnQ7CisJdWludDY0X3Qgc2l6ZV90cmFuc2ZlcjsK KwlpbnQgZXJyOworCisJYmN0eHQgPSBkcml2ZS0+YmN0eHQ7CisJcGlvX3NldHVwID0gJmRyaXZl LT5waW9fc2V0dXA7CisJYnJlcSA9ICZwaW9fc2V0dXAtPmJyZXE7CisKKwlhdGFfYWRkcmVzc2lu Z19zZWNfY291bnQoY2hhbm5lbCwgJnNlY3Rvcl9jb3VudCk7CisJYXRhX2FkZHJlc3NpbmdfMjhf bGJhKGNoYW5uZWwsICZsYmFfYWRkcmVzcyk7CisKKwlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2hh bmRsZV9yZWFkX211bHRpcGxlOiBzZWN0b3JfY291bnQ6ICVkLCBsYmFfYWRkcmVzczogMHgleFxu IiwKKwkgICAgICAgc2VjdG9yX2NvdW50LCBsYmFfYWRkcmVzcyk7CisKKwlvZmZzZXQgPSAodWlu dDY0X3QpbGJhX2FkZHJlc3MgKiBBVEFfU0VDVE9SX1NJWkU7CisJY291bnQgPSAodWludDY0X3Qp c2VjdG9yX2NvdW50ICogQVRBX1NFQ1RPUl9TSVpFOworCisJZHJpdmUtPmNvdW50ID0gY291bnQ7 CisJZHJpdmUtPm9mZnNldCA9IG9mZnNldDsKKworCXNpemVfdHJhbnNmZXIgPSBjb3VudCA+PSBB VEFfQkxPQ0tfU0laRSA/IEFUQV9CTE9DS19TSVpFIDogY291bnQ7CisJYXRhX3Bpb19kb190cmFu c2ZlcihwaW9fc2V0dXAsIHNpemVfdHJhbnNmZXIsIGF0YV9yZWFkX211bHRpcGxlX2Jsb2NrX2Rv bmUsIGNoYW5uZWwtPnVzZV8xNmJpdCk7CisKKwlhdGFfaW5pdF9ibG9ja19yZXF1ZXN0KGJyZXEs IGNoYW5uZWwsIGRyaXZlLT5vZmZzZXQsCisJCQkgICAgICAgc2l6ZV90cmFuc2ZlciwgYXRhX3Bp b19nZXRfYnVmZmVyX2RhdGEocGlvX3NldHVwKSk7CisKKwllcnIgPSBibG9ja2lmX3JlYWQoYmN0 eHQsIGJyZXEpOworCWFzc2VydCghZXJyKTsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQK K2F0YV9oYW5kbGVfcmVhZF92ZXJpZnkoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQorewor CXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2 ZV07CisJZHByaW50KExPR19ERUJVRywgImF0YV9oYW5kbGVfcmVhZF92ZXJpZnlcbiIpOworCisJ YXRhX3NldF9zdGF0dXNfb2soY2hhbm5lbCk7CisJZHJpdmUtPmFsdHN0YXR1cyAmPSB+QVRBX1Nf RFJROworCWF0YV9pcnFfcmFpc2UoY2hhbm5lbCk7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2 b2lkCithdGFfaGFuZGxlX3dyaXRlX211bHRpcGxlKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5l bCkKK3sKKwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2ZSA9ICZjaGFubmVsLT5kcml2ZXNbY2hhbm5l bC0+ZHJpdmVdOworCXN0cnVjdCBibG9ja2lmX2N0eHQgKmJjdHh0ID0gTlVMTDsKKwlzdHJ1Y3Qg YXRhX3Bpb19zZXR1cCAqcGlvX3NldHVwID0gTlVMTDsKKworCXVpbnQxNl90IHNlY3Rvcl9jb3Vu dDsKKwl1aW50MzJfdCBsYmFfYWRkcmVzcyA9IDA7CisJdWludDY0X3Qgb2Zmc2V0OworCXVpbnQ2 NF90IGNvdW50OworCXVpbnQ2NF90IHNpemVfdHJhbnNmZXI7CisKKwliY3R4dCA9IGRyaXZlLT5i Y3R4dDsKKwlwaW9fc2V0dXAgPSAmZHJpdmUtPnBpb19zZXR1cDsKKworCWF0YV9hZGRyZXNzaW5n X3NlY19jb3VudChjaGFubmVsLCAmc2VjdG9yX2NvdW50KTsKKwlhdGFfYWRkcmVzc2luZ18yOF9s YmEoY2hhbm5lbCwgJmxiYV9hZGRyZXNzKTsKKworCWRwcmludChMT0dfREVCVUcsICJhdGFfaGFu ZGxlX3dyaXRlX211bHRpcGxlOiBzZWN0b3JfY291bnQ6ICVkLCBsYmFfYWRkcmVzczogMHgleFxu IiwKKwkgICAgICAgc2VjdG9yX2NvdW50LCBsYmFfYWRkcmVzcyk7CisKKwlvZmZzZXQgPSAodWlu dDY0X3QpbGJhX2FkZHJlc3MgKiBBVEFfU0VDVE9SX1NJWkU7CisJY291bnQgPSAodWludDY0X3Qp c2VjdG9yX2NvdW50ICogQVRBX1NFQ1RPUl9TSVpFOworCisJZHJpdmUtPm9mZnNldCA9IG9mZnNl dDsKKwlkcml2ZS0+Y291bnQgPSBjb3VudDsKKworCXNpemVfdHJhbnNmZXIgPSBjb3VudCA+PSBB VEFfQkxPQ0tfU0laRSA/IEFUQV9CTE9DS19TSVpFIDogY291bnQ7CisJYXRhX3Bpb19kb190cmFu c2ZlcihwaW9fc2V0dXAsIHNpemVfdHJhbnNmZXIsIGF0YV93cml0ZV9tdWx0aXBsZV9ibG9ja19k b25lLCBjaGFubmVsLT51c2VfMTZiaXQpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAor YXRhX2hhbmRsZV9kbWEoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsLCB1aW50OF90IG9wX2Rp cikKK3sKKwlzdHJ1Y3QgcGNpX2F0YV9zb2Z0YyAqc2MgPSBOVUxMOworCXN0cnVjdCBwY2lfYXRh X2RtYV90cmFuc2FjdGlvbiAqZG1hX3RyYW5zYWN0aW9uID0gTlVMTDsKKworCXVpbnQxNl90IHNl Y3Rvcl9jb3VudDsKKwl1aW50MzJfdCBsYmFfYWRkcmVzcyA9IDA7CisKKwlzYyA9IGNoYW5uZWwt PnByX3NjOworCWRtYV90cmFuc2FjdGlvbiA9ICZzYy0+ZG1hX3RyYW5zYWN0aW9uc1tjaGFubmVs LT5pbnRlcmZhY2VdOworCisJYXNzZXJ0KCFkbWFfdHJhbnNhY3Rpb24tPnN0YXJ0ZWQpOworCisJ YXRhX2FkZHJlc3Npbmdfc2VjX2NvdW50KGNoYW5uZWwsICZzZWN0b3JfY291bnQpOworCWF0YV9h ZGRyZXNzaW5nXzI4X2xiYShjaGFubmVsLCAmbGJhX2FkZHJlc3MpOworCisJZHByaW50KExPR19E RUJVRywgImF0YV9oYW5kbGVfZG1hOiBzZWN0b3JfY291bnQ6ICVkLCBsYmFfYWRkcmVzczogMHgl eCBESVI6ICVkXG4iLAorCQkJc2VjdG9yX2NvdW50LCBsYmFfYWRkcmVzcywgb3BfZGlyKTsKKwor CWRtYV90cmFuc2FjdGlvbi0+c3RhcnRlZCA9IDE7CisJZG1hX3RyYW5zYWN0aW9uLT5vZmZzZXQg PSAodWludDY0X3QpbGJhX2FkZHJlc3MgKiBBVEFfU0VDVE9SX1NJWkU7CisJZG1hX3RyYW5zYWN0 aW9uLT5uYnl0ZXMgPSAodWludDY0X3Qpc2VjdG9yX2NvdW50ICogQVRBX1NFQ1RPUl9TSVpFOwor CWRtYV90cmFuc2FjdGlvbi0+b3BfZGlyID0gb3BfZGlyOworCisJcmV0dXJuOworfQorCitzdGF0 aWMgdm9pZAorYXRhX2hhbmRsZV9mbHVzaGNhY2hlKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5l bCkKK3sKKwlzdHJ1Y3QgYmxvY2tpZl9jdHh0ICpiY3R4dCA9IE5VTEw7CisJc3RydWN0IGJsb2Nr aWZfcmVxICpicmVxID0gTlVMTDsKKwlpbnQgZXJyOworCisJYmN0eHQgPSBjaGFubmVsLT5kcml2 ZXNbY2hhbm5lbC0+ZHJpdmVdLmJjdHh0OworCWJyZXEgPSAmY2hhbm5lbC0+Zmx1c2hfYnJlcTsK KworCWRwcmludChMT0dfREVCVUcsICJhdGFfaGFuZGxlX2ZsdXNoY2FjaGVcbiIpOworCisJYXRh X2luaXRfYmxvY2tfcmVxdWVzdChicmVxLCBjaGFubmVsLCAwLCAwLCBOVUxMKTsKKworCWVyciA9 IGJsb2NraWZfZmx1c2goYmN0eHQsIGJyZXEpOworCWFzc2VydCghZXJyKTsKKworCXJldHVybjsK K30KKworc3RhdGljIHZvaWQKK2F0YV9oYW5kbGVfc2VlayhzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNo YW5uZWwpCit7CisJc3RydWN0IGF0YV9kcml2ZSAqZHJpdmUgPSAmY2hhbm5lbC0+ZHJpdmVzW2No YW5uZWwtPmRyaXZlXTsKKworCWRwcmludChMT0dfREVCVUcsICJhdGFfaGFuZGxlX3NlZWtcbiIp OworCisJYXRhX3NldF9zdGF0dXNfb2soY2hhbm5lbCk7CisJZHJpdmUtPnN0YXR1cyB8PSBBVEFf U19EU0M7CisJYXRhX2lycV9yYWlzZShjaGFubmVsKTsKKworCXJldHVybjsKK30KKworc3RhdGlj IHZvaWQKK2F0YV9oYW5kbGVfYXRhcGlfaWRlbnRpZnkoc3RydWN0IGF0YV9jaGFubmVsICpjaGFu bmVsKQoreworCWF0YV9hdGFwaV9pbml0aWFsaXplX2lkZW50KGNoYW5uZWwpOworCisJYXRhX3Nl dF9kYXRhX2Jsb2NrX3JlYWR5KGNoYW5uZWwpOworCWF0YV9zZXRfc3RhdHVzX29rKGNoYW5uZWwp OworCWF0YV9pcnFfcmFpc2UoY2hhbm5lbCk7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lk CithdGFfaGFuZGxlX3BhY2tldF9jbWQoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQorewor CXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2 ZV07CisJc3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCA9IE5VTEw7CisKKwlwaW9fc2V0 dXAgPSAmZHJpdmUtPnBpb19zZXR1cDsKKworCWRyaXZlLT5ieXRlX2NvdW50ID0gZHJpdmUtPmxi YV9taWQgfCAoZHJpdmUtPmxiYV9oaWdoIDw8IDgpOworCisJZHByaW50KExPR19ERUJVRywgImF0 YV9oYW5kbGVfcGFja2V0X2NtZDogYnl0ZV9jb3VudDogJWRcbiIsIGRyaXZlLT5ieXRlX2NvdW50 KTsKKworCWF0YV9zZXRfc3RhdHVzX29rKGNoYW5uZWwpOworCWRyaXZlLT5zZWNjb3VudCA9IEFU QV9JX0NNRDsKKwlkcml2ZS0+c3RhdHVzIHw9IEFUQV9TX0RSUTsKKworCS8qIFRoZSBQYWNrZXQg Y21kIGlzIHJlY2VpdmVkIGFzIDYgd29yZHMgb24gYm90aCBMUEMgYW5kIFBDSSAqLworCWF0YV9w aW9fZG9fdHJhbnNmZXIocGlvX3NldHVwLCBBVEFQSV9QQUNLRVRfU0laRSwgYXRhX2F0YXBpX2Nt ZCwgMSk7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCithdGFfaGFuZGxlX2NtZChzdHJ1 Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwsIHVpbnQ4X3QgY21kKQoreworCXN3aXRjaCAoY21kKSB7 CisJY2FzZSBBVEFfQVRBX0lERU5USUZZOgorCQlhdGFfaGFuZGxlX2lkZW50aWZ5KGNoYW5uZWwp OworCQlicmVhazsKKwljYXNlIEFUQV9TRVRGRUFUVVJFUzoKKwkJYXRhX2hhbmRsZV9zZXRmZWF0 dXJlcyhjaGFubmVsKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfU0VUX01VTFRJOgorCQlhdGFfaGFu ZGxlX3NldF9tdWx0aShjaGFubmVsKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfUkVBRDoKKwljYXNl IEFUQV9SRUFEX01VTDoKKwkJYXRhX2hhbmRsZV9yZWFkX211bHRpcGxlKGNoYW5uZWwpOworCQli cmVhazsKKwljYXNlIEFUQV9SRUFEX1ZFUklGWToKKwkJYXRhX2hhbmRsZV9yZWFkX3ZlcmlmeShj aGFubmVsKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfV1JJVEU6CisJY2FzZSBBVEFfV1JJVEVfTVVM OgorCQlhdGFfaGFuZGxlX3dyaXRlX211bHRpcGxlKGNoYW5uZWwpOworCQlicmVhazsKKwljYXNl IEFUQV9SRUFEX0RNQToKKwkJYXRhX2hhbmRsZV9kbWEoY2hhbm5lbCwgQVRBX0RNQV9SRUFEKTsK KwkJYnJlYWs7CisJY2FzZSBBVEFfV1JJVEVfRE1BOgorCQlhdGFfaGFuZGxlX2RtYShjaGFubmVs LCBBVEFfRE1BX1dSSVRFKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfRkxVU0hDQUNIRToKKwkJYXRh X2hhbmRsZV9mbHVzaGNhY2hlKGNoYW5uZWwpOworCQlicmVhazsKKwljYXNlIEFUQV9TRUVLOgor CQlhdGFfaGFuZGxlX3NlZWsoY2hhbm5lbCk7CisJCWJyZWFrOworCWNhc2UgQVRBX0FUQVBJX0lE RU5USUZZOgorCQlhdGFfaGFuZGxlX2F0YXBpX2lkZW50aWZ5KGNoYW5uZWwpOworCQlicmVhazsK KwljYXNlIEFUQV9QQUNLRVRfQ01EOgorCQlhdGFfaGFuZGxlX3BhY2tldF9jbWQoY2hhbm5lbCk7 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWRwcmludChMT0dfRVJSLCAiYXRhX2hhbmRsZV9jbWQ6 IHVuc3VwcG9ydGVkIGNtZDogJTAyeFxuIiwgY21kKTsKKwkJYXNzZXJ0KDApOworCQlicmVhazsK Kwl9CisKKwlyZXR1cm47Cit9CisKKy8qCisgKiBhdGFfY3B1X3RvX2JlMzIgdHJhbnNsYXRlcyBm cm9tIGxpdHRsZSBlbmRpYW4gdG8gYmlnIGVuZGlhbgorICogdGhlIGxpdHRsZSBlbmRpYW4gZm9y bWF0IGlzIHVzZWQgYnkgdGhlIGNwdQorICogQHZhbCAtIHRoZSBpbnRlZ2VyIHZhbHVlIGJlaW5n IHRyYW5zbGF0ZWQKKyAqIEBidWYgLSB0aGUgYWRkcmVzcyB3aGVyZSB0aGUgcmVzdWx0IGlzIHN0 b3JlZAorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2F0YV9jcHVfdG9fYmUzMih1aW50OF90ICpi dWYsIHVpbnQzMl90IHZhbCkKK3sKKwlidWZbMF0gPSB2YWwgPj4gMjQ7CisJYnVmWzFdID0gdmFs ID4+IDE2OworCWJ1ZlsyXSA9IHZhbCA+PiA4OworCWJ1ZlszXSA9IHZhbDsKKworCXJldHVybjsK K30KKworLyoKKyAqIGF0YV9jcHVfdG9fYmUxNiB0cmFuc2xhdGVzIGZyb20gbGl0dGxlIGVuZGlh biB0byBiaWcgZW5kaWFuCisgKiB0aGUgbGl0dGxlIGVuZGlhbiBmb3JtYXQgaXMgdXNlZCBieSB0 aGUgY3B1CisgKiBAdmFsIC0gdGhlIHdvcmQgYmVpbmcgdHJhbnNsYXRlZAorICogQGJ1ZiAtIHRo ZSBhZGRyZXNzIHdoZXJlIHRoZSByZXN1bHQgaXMgc3RvcmVkCisgKi8KK3N0YXRpYyBpbmxpbmUg dm9pZAorYXRhX2NwdV90b19iZTE2KHVpbnQ4X3QgKmJ1ZiwgdWludDE2X3QgdmFsKQoreworCWJ1 ZlswXSA9IHZhbCA+PiA4OworCWJ1ZlsxXSA9IHZhbDsKKworCXJldHVybjsKK30KKworLyoKKyAq IGF0YV9iZTMyX3RvX2NwdSB0cmFuc2xhdGVzIGZyb20gYmlnIGVuZGlhbiB0byBsaXR0bGUgZW5k aWFuCisgKiB0aGUgbGl0dGxlIGVuZGlhbiBmb3JtYXQgaXMgdXNlZCBieSB0aGUgY3B1CisgKiBA dmFsIC0gdGhlIHJldHVybiBpbnRlZ2VyIHZhbHVlCisgKiBAYnVmIC0gdGhlIGFkZHJlc3Mgb2Yg dGhlIHZhbHVlIGJlaW5nIHRyYW5zbGF0ZWQKKyAqLworc3RhdGljIGlubGluZSB1aW50MzJfdAor YXRhX2JlMzJfdG9fY3B1KHVpbnQ4X3QgKmJ1ZikKK3sKKwl1aW50MzJfdCB2YWwgPSAwOworCisJ dmFsIHw9IGJ1ZlswXSA8PCAyNDsKKwl2YWwgfD0gYnVmWzFdIDw8IDE2OworCXZhbCB8PSBidWZb Ml0gPDwgODsKKwl2YWwgfD0gYnVmWzNdOworCisJcmV0dXJuIHZhbDsKK30KKworLyoKKyAqIGF0 YV9iZTE2X3RvX2NwdSB0cmFuc2xhdGVzIGZyb20gYmlnIGVuZGlhbiB0byBsaXR0bGUgZW5kaWFu CisgKiB0aGUgbGl0dGxlIGVuZGlhbiBmb3JtYXQgaXMgdXNlZCBieSB0aGUgY3B1CisgKiBAdmFs IC0gdGhlIHJldHVybiB3b3JkIHZhbHVlCisgKiBAYnVmIC0gdGhlIGFkZHJlc3Mgb2YgdGhlIHZh bHVlIGJlaW5nIHRyYW5zbGF0ZWQKKyAqLworc3RhdGljIGlubGluZSB1aW50MTZfdAorYXRhX2Jl MTZfdG9fY3B1KHVpbnQ4X3QgKmJ1ZikKK3sKKwl1aW50MTZfdCB2YWwgPSAwOworCisJdmFsIHw9 IGJ1ZlswXSA8PCA4OworCXZhbCB8PSBidWZbMV07CisKKwlyZXR1cm4gdmFsOworfQorCitzdGF0 aWMgdm9pZAorYXRhX2F0YXBpX3ByaW50X3BhY2tldCh1aW50OF90ICpwYWNrZXQpCit7CisJaW50 IGk7CisKKwlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2F0YXBpX3ByaW50X3BhY2tldCBjbWQ6IDB4 JXggcGFja2V0OiAiLCBwYWNrZXRbMF0pOworCWZvciAoaSA9IDA7IGkgPCBBVEFQSV9QQUNLRVRf U0laRTsgaSsrKSB7CisJCWRwcmludChMT0dfREVCVUcsICIleCAiLCBwYWNrZXRbaV0pOworCX0K KwlkcHJpbnQoTE9HX0RFQlVHLCAiXG4iKTsKKworCXJldHVybjsKK30KKworc3RhdGljIHZvaWQK K2F0YV9hdGFwaV9kYXRhX3JlcXVlc3Qoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQorewor CXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2 ZV07CisKKwlhdGFfc2V0X3N0YXR1c19vayhjaGFubmVsKTsKKwlkcml2ZS0+c2VjY291bnQgPSBB VEFfSV9JTjsKKwlkcml2ZS0+c3RhdHVzIHw9IEFUQV9TX0RSUTsKKworCWF0YV9pcnFfcmFpc2Uo Y2hhbm5lbCk7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCithdGFfYXRhcGlfY21kX2Rv bmUoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsKQoreworCXN0cnVjdCBhdGFfZHJpdmUgKmRy aXZlID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2ZV07CisKKwlhdGFfc2V0X3N0YXR1 c19vayhjaGFubmVsKTsKKwlkcml2ZS0+c2VjY291bnQgPSBBVEFfSV9JTiB8IEFUQV9JX0NNRDsK KworCWF0YV9pcnFfcmFpc2UoY2hhbm5lbCk7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lk CithdGFfYXRhcGlfaGFuZGxlX2lucXVpcnkoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsLCB1 aW50OF90ICpwYWNrZXQpCit7CisJc3RydWN0IGF0YV9kcml2ZSAqZHJpdmUgPSAmY2hhbm5lbC0+ ZHJpdmVzW2NoYW5uZWwtPmRyaXZlXTsKKwlzdHJ1Y3QgYXRhX3Bpb19zZXR1cCAqcGlvX3NldHVw ID0gTlVMTDsKKwlzdHJ1Y3Qgc2NzaV9pbnF1aXJ5X2RhdGEgKmlucXVpcnlfZGF0YSA9IChzdHJ1 Y3Qgc2NzaV9pbnF1aXJ5X2RhdGEgKilwYWNrZXQ7CisJdWludDhfdCBtYXhfbGVuID0gMDsKKwor CXBpb19zZXR1cCA9ICZkcml2ZS0+cGlvX3NldHVwOworCisJbWF4X2xlbiA9IHBhY2tldFs0XTsK Kwlhc3NlcnQobWF4X2xlbiA+PSBTSE9SVF9JTlFVSVJZX0xFTkdUSCk7CisKKwkvKiBmb3Igbm93 IHdlIGltcGxlbWVudCBvbmx5IHRoZSBzaG9ydCBpbnF1aXJ5IGNtZCAqLworCWlmIChwYWNrZXRb MV0gJiAweDAxKSB7CisJCWFzc2VydCgwKTsKKwl9IGVsc2UgeworCQltZW1zZXQoaW5xdWlyeV9k YXRhLCAwLCBTSE9SVF9JTlFVSVJZX0xFTkdUSCk7CisKKwkJaW5xdWlyeV9kYXRhLT5kZXZpY2Ug PSBUX0NEUk9NOworCQlpbnF1aXJ5X2RhdGEtPmRldl9xdWFsMiA9IFNJRF9STUI7CisJCWlucXVp cnlfZGF0YS0+dmVyc2lvbiA9IFNDU0lfUkVWXzA7CisJCWlucXVpcnlfZGF0YS0+cmVzcG9uc2Vf Zm9ybWF0ID0gMjsKKwkJaW5xdWlyeV9kYXRhLT5hZGRpdGlvbmFsX2xlbmd0aCA9IFNIT1JUX0lO UVVJUllfTEVOR1RIIC0gNTsKKworCQltZW1jcHkoaW5xdWlyeV9kYXRhLT52ZW5kb3IsICJCSFlW RSAgICIsIFNJRF9WRU5ET1JfU0laRSk7CisJCW1lbWNweShpbnF1aXJ5X2RhdGEtPnByb2R1Y3Qs ICJBVEFQSSBJREUgQ0RST00gIiwgU0lEX1BST0RVQ1RfU0laRSk7CisJCW1lbWNweShpbnF1aXJ5 X2RhdGEtPnJldmlzaW9uLCAiMS4xICIsIFNJRF9SRVZJU0lPTl9TSVpFKTsKKworCQlhdGFfcGlv X2RvX3RyYW5zZmVyKHBpb19zZXR1cCwgU0hPUlRfSU5RVUlSWV9MRU5HVEgsIGF0YV9hdGFwaV9j bWRfZG9uZSwgY2hhbm5lbC0+dXNlXzE2Yml0KTsKKwkJYXRhX2F0YXBpX2RhdGFfcmVxdWVzdChj aGFubmVsKTsKKwl9CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCithdGFfYXRhcGlfaGFu ZGxlX3JlYWRfY2FwYWNpdHkoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsLCB1aW50OF90ICpw YWNrZXQpCit7CisJc3RydWN0IGF0YV9kcml2ZSAqZHJpdmUgPSAmY2hhbm5lbC0+ZHJpdmVzW2No YW5uZWwtPmRyaXZlXTsKKwlzdHJ1Y3QgYXRhX3Bpb19zZXR1cCAqcGlvX3NldHVwID0gTlVMTDsK KwlpbnQgbnNlY3RvcnMgPSBibG9ja2lmX3NpemUoZHJpdmUtPmJjdHh0KSAvIEFUQVBJX0JMT0NL X1NJWkU7CisKKwlwaW9fc2V0dXAgPSAmZHJpdmUtPnBpb19zZXR1cDsKKworCWF0YV9jcHVfdG9f YmUzMihwYWNrZXQsIG5zZWN0b3JzIC0gMSk7CisJYXRhX2NwdV90b19iZTMyKHBhY2tldCArIDQs IEFUQVBJX0JMT0NLX1NJWkUpOworCisJYXRhX3Bpb19kb190cmFuc2ZlcihwaW9fc2V0dXAsIDgs IGF0YV9hdGFwaV9jbWRfZG9uZSwgY2hhbm5lbC0+dXNlXzE2Yml0KTsKKwlhdGFfYXRhcGlfZGF0 YV9yZXF1ZXN0KGNoYW5uZWwpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBsYmFfdG9f bXNmKHVpbnQ4X3QgKmJ1ZiwgaW50IGxiYSkKK3sKKwlsYmEgKz0gMTUwOworCWJ1ZlswXSA9IChs YmEgLyA3NSkgLyA2MDsKKwlidWZbMV0gPSAobGJhIC8gNzUpICUgNjA7CisJYnVmWzJdID0gbGJh ICUgNzU7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkCithdGFfYXRhcGlfaGFuZGxlX3Jl YWRfdG9jKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCwgdWludDhfdCAqcGFja2V0KQorewor CXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tjaGFubmVsLT5kcml2 ZV07CisJc3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCA9IE5VTEw7CisJaW50IG5zZWN0 b3JzID0gYmxvY2tpZl9zaXplKGRyaXZlLT5iY3R4dCkgLyBBVEFQSV9CTE9DS19TSVpFOworCisJ dWludDhfdCBtc2YgPSBwYWNrZXRbMV0gJiAyOworCXVpbnQ4X3QgZm9ybWF0ID0gcGFja2V0WzJd ICYgMHgwZjsKKwl1aW50OF90IHRyYWNrX251bWJlciA9IHBhY2tldFs2XTsKKwl1aW50MTZfdCBh bGxvY2F0aW9uX2xlbmd0aCA9IChwYWNrZXRbN10gPDwgOCkgfCBwYWNrZXRbOF07CisKKwl1aW50 MTZfdCBkYXRhX2xlbiA9IDA7CisJdWludDhfdCAqZGF0YV96b25lID0gTlVMTDsKKwl1aW50OF90 ICpsZWFkX291dCA9IE5VTEw7CisKKwlwaW9fc2V0dXAgPSAmZHJpdmUtPnBpb19zZXR1cDsKKwor CWFzc2VydCh0cmFja19udW1iZXIgPD0gMSB8fCB0cmFja19udW1iZXIgPT0gMHhhYSk7CisJYXNz ZXJ0KCFmb3JtYXQpOworCisJcGFja2V0WzJdID0gMTsJCS8qIEZpcnN0IFRyYWNrICovCisJcGFj a2V0WzNdID0gMTsJCS8qIExhc3QgVHJhY2sgKi8KKworCWxlYWRfb3V0ID0gcGFja2V0ICsgNDsK KworCWlmICh0cmFja19udW1iZXIgPD0gMSkgeworCQlkYXRhX3pvbmUgPSBwYWNrZXQgKyA0Owor CQlsZWFkX291dCA9IHBhY2tldCArIDEyOworCisJCWRhdGFfem9uZVswXSA9IDA7CQkvKiBSZXNl cnZlZCAqLworCQlkYXRhX3pvbmVbMV0gPSAweDE0OwkJLyogQURSLCBjb250cm9sICovCisJCWRh dGFfem9uZVsyXSA9IDE7CQkvKiB0cmFjayBudW1iZXIgKi8KKwkJZGF0YV96b25lWzNdID0gMDsJ CS8qIFJlc2VydmVkICovCisJCWlmIChtc2YpIHsKKwkJCWRhdGFfem9uZVs0XSA9IDA7CisJCQls YmFfdG9fbXNmKGRhdGFfem9uZSArIDUsIDApOworCQl9CisJCWVsc2UgeworCQkJYXRhX2NwdV90 b19iZTMyKGRhdGFfem9uZSArIDQsIDApOworCQl9CisJfQorCisJbGVhZF9vdXRbMF0gPSAwOwkJ LyogUmVzZXJ2ZWQgKi8KKwlsZWFkX291dFsxXSA9IDB4MTY7CQkvKiBBRFIsIGNvbnRyb2wgKi8K KwlsZWFkX291dFsyXSA9IDB4YWE7CQkvKiB0cmFjayBudW1iZXIgKi8KKwlsZWFkX291dFszXSA9 IDA7CQkvKiBSZXNlcnZlZCAqLworCWlmIChtc2YpIHsKKwkJbGVhZF9vdXRbNF0gPSAwOworCQls YmFfdG9fbXNmKGxlYWRfb3V0ICsgNSwgbnNlY3RvcnMpOworCX0KKwllbHNlIHsKKwkJYXRhX2Nw dV90b19iZTMyKGxlYWRfb3V0ICsgNCwgbnNlY3RvcnMpOworCX0KKworCWRhdGFfbGVuID0gKGxl YWRfb3V0IC0gcGFja2V0KSArIDg7CisJYXRhX2NwdV90b19iZTE2KHBhY2tldCwgZGF0YV9sZW4g LSAyKTsKKworCWRhdGFfbGVuID0gKGRhdGFfbGVuIDwgYWxsb2NhdGlvbl9sZW5ndGgpID8gZGF0 YV9sZW4gOiBhbGxvY2F0aW9uX2xlbmd0aDsKKworCWF0YV9waW9fZG9fdHJhbnNmZXIocGlvX3Nl dHVwLCBkYXRhX2xlbiwgYXRhX2F0YXBpX2NtZF9kb25lLCBjaGFubmVsLT51c2VfMTZiaXQpOwor CWF0YV9hdGFwaV9kYXRhX3JlcXVlc3QoY2hhbm5lbCk7CisKKwlyZXR1cm47Cit9CisKK3N0YXRp YyB2b2lkCithdGFfYXRhcGlfaGFuZGxlX3JlYWQoc3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVs LCB1aW50OF90ICpwYWNrZXQpCit7CisJc3RydWN0IGF0YV9kcml2ZSAqZHJpdmUgPSAmY2hhbm5l bC0+ZHJpdmVzW2NoYW5uZWwtPmRyaXZlXTsKKwlzdHJ1Y3QgYmxvY2tpZl9jdHh0ICpiY3R4dCA9 IE5VTEw7CisJc3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCA9IE5VTEw7CisJc3RydWN0 IGJsb2NraWZfcmVxICpicmVxID0gTlVMTDsKKworCXVpbnQxNl90IHNlY3Rvcl9jb3VudCA9IDA7 CisJdWludDMyX3QgbGJhX2FkZHJlc3MgPSAwOworCXVpbnQ2NF90IG9mZnNldDsKKwl1aW50NjRf dCBjb3VudDsKKwlpbnQgZXJyOworCisJYXNzZXJ0KGRyaXZlLT5ieXRlX2NvdW50ID49IEFUQVBJ X0JMT0NLX1NJWkUpOworCisJYmN0eHQgPSBkcml2ZS0+YmN0eHQ7CisJcGlvX3NldHVwID0gJmRy aXZlLT5waW9fc2V0dXA7CisJYnJlcSA9ICZwaW9fc2V0dXAtPmJyZXE7CisKKwlsYmFfYWRkcmVz cyA9IGF0YV9iZTMyX3RvX2NwdShwYWNrZXQgKyAyKTsKKwlzZWN0b3JfY291bnQgPSBhdGFfYmUx Nl90b19jcHUocGFja2V0ICsgNyk7CisKKwlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2F0YXBpX2hh bmRsZV9yZWFkOiBzZWN0b3JfY291bnQ6ICVkLCBsYmFfYWRkcmVzczogMHgleFxuIiwKKwkgICAg ICAgc2VjdG9yX2NvdW50LCBsYmFfYWRkcmVzcyk7CisKKwlvZmZzZXQgPSAodWludDY0X3QpbGJh X2FkZHJlc3MgKiBBVEFQSV9CTE9DS19TSVpFOworCWNvdW50ID0gKHVpbnQ2NF90KXNlY3Rvcl9j b3VudCAqIEFUQVBJX0JMT0NLX1NJWkU7CisKKwlkcml2ZS0+Y291bnQgPSBjb3VudDsKKwlkcml2 ZS0+b2Zmc2V0ID0gb2Zmc2V0OworCisJZHJpdmUtPmxiYV9taWQgPSBBVEFQSV9CTE9DS19TSVpF ICYgMHhmZjsKKwlkcml2ZS0+bGJhX2hpZ2ggPSAoQVRBUElfQkxPQ0tfU0laRSA+PiA4KSAmIDB4 ZmY7CisKKwlkcml2ZS0+c2VjY291bnQgPSBBVEFfSV9JTjsKKworCWF0YV9waW9fZG9fdHJhbnNm ZXIocGlvX3NldHVwLCBBVEFQSV9CTE9DS19TSVpFLCBhdGFfYXRhcGlfaGFuZGxlX3JlYWRfZG9u ZSwgY2hhbm5lbC0+dXNlXzE2Yml0KTsKKworCWF0YV9pbml0X2Jsb2NrX3JlcXVlc3QoYnJlcSwg Y2hhbm5lbCwgZHJpdmUtPm9mZnNldCwKKwkJCSAgICAgICBBVEFQSV9CTE9DS19TSVpFLCBhdGFf cGlvX2dldF9idWZmZXJfZGF0YShwaW9fc2V0dXApKTsKKworCWVyciA9IGJsb2NraWZfcmVhZChi Y3R4dCwgYnJlcSk7CisJYXNzZXJ0KCFlcnIpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9p ZAorYXRhX2F0YXBpX2NtZChzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpCit7CisJc3RydWN0 IGF0YV9kcml2ZSAqZHJpdmUgPSAmY2hhbm5lbC0+ZHJpdmVzW2NoYW5uZWwtPmRyaXZlXTsKKwlz dHJ1Y3QgYXRhX3Bpb19zZXR1cCAqcGlvX3NldHVwID0gTlVMTDsKKwl1aW50OF90ICpwYWNrZXQg PSBOVUxMOworCXVpbnQ4X3Qgb3BfY29kZSA9IDA7CisKKwlwaW9fc2V0dXAgPSAmZHJpdmUtPnBp b19zZXR1cDsKKwlwYWNrZXQgPSBhdGFfcGlvX2dldF9idWZmZXJfZGF0YShwaW9fc2V0dXApOwor CisJYXRhX2F0YXBpX3ByaW50X3BhY2tldChwYWNrZXQpOworCisJb3BfY29kZSA9IHBhY2tldFsw XTsKKworCXN3aXRjaCAob3BfY29kZSkgeworCWNhc2UgSU5RVUlSWToKKwkJYXRhX2F0YXBpX2hh bmRsZV9pbnF1aXJ5KGNoYW5uZWwsIHBhY2tldCk7CisJCWJyZWFrOworCWNhc2UgUkVBRF9DQVBB Q0lUWToKKwkJYXRhX2F0YXBpX2hhbmRsZV9yZWFkX2NhcGFjaXR5KGNoYW5uZWwsIHBhY2tldCk7 CisJCWJyZWFrOworCWNhc2UgUFJFVkVOVF9BTExPVzoKKwkJYXRhX2F0YXBpX2NtZF9kb25lKGNo YW5uZWwpOworCQlicmVhazsKKwljYXNlIFJFQURfVE9DOgorCQlhdGFfYXRhcGlfaGFuZGxlX3Jl YWRfdG9jKGNoYW5uZWwsIHBhY2tldCk7CisJCWJyZWFrOworCWNhc2UgUkVBRF8xMDoKKwkJYXRh X2F0YXBpX2hhbmRsZV9yZWFkKGNoYW5uZWwsIHBhY2tldCk7CisJCWJyZWFrOworCWNhc2UgVEVT VF9VTklUX1JFQURZOgorCQlhdGFfYXRhcGlfY21kX2RvbmUoY2hhbm5lbCk7CisJCWJyZWFrOwor CWRlZmF1bHQ6CisJCWRwcmludChMT0dfRVJSLCAiYXRhX2F0YXBpX2NtZDogdW5zdXBwb3J0ZWQg Y21kOiAlMDJ4XG4iLCBvcF9jb2RlKTsKKwkJYXNzZXJ0KDApOworCQlicmVhazsKKwl9OworCisJ cmV0dXJuOworfQorCitzdGF0aWMgdWludDY0X3QKK2F0YV9jb21tYW5kX2Jsb2NrX3JlYWQoc3Ry dWN0IGF0YV9jaGFubmVsICpjaGFubmVsLCB1aW50NjRfdCBvZmZzZXQpCit7CisJdWludDY0X3Qg dmFsdWUgPSAwOworCXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlID0gJmNoYW5uZWwtPmRyaXZlc1tj aGFubmVsLT5kcml2ZV07CisJc3RydWN0IGF0YV9waW9fc2V0dXAgKnBpb19zZXR1cCA9IE5VTEw7 CisKKwlwaW9fc2V0dXAgPSAmZHJpdmUtPnBpb19zZXR1cDsKKworCXN3aXRjaCAob2Zmc2V0KSB7 CisJY2FzZSBBVEFfREFUQV9SRUc6CisJCXZhbHVlID0gYXRhX3Bpb19nZXRfdWludChwaW9fc2V0 dXApOworCQlicmVhazsKKwljYXNlIEFUQV9FUlJPUl9SRUc6CisJCXZhbHVlID0gZHJpdmUtPmVy cm9yOworCQlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2NvbW1hbmRfYmxvY2tfcmVhZDogQVRBX0VS Uk9SX1JFRzogJWx4aFxuIiwgdmFsdWUpOworCQlicmVhazsKKwljYXNlIEFUQV9TRUNDT1VOVF9S RUc6CisJCXZhbHVlID0gZHJpdmUtPnNlY2NvdW50OworCQlkcHJpbnQoTE9HX0RFQlVHLCAiYXRh X2NvbW1hbmRfYmxvY2tfcmVhZDogQVRBX1NFQ0NPVU5UX1JFRzogJWx4aFxuIiwgdmFsdWUpOwor CQlicmVhazsKKwljYXNlIEFUQV9MQkFfTE9XX1JFRzoKKwkJdmFsdWUgPSBkcml2ZS0+bGJhX2xv dzsKKwkJZHByaW50KExPR19ERUJVRywgImF0YV9jb21tYW5kX2Jsb2NrX3JlYWQ6IEFUQV9MQkFf TE9XX1JFRzogJWx4aFxuIiwgdmFsdWUpOworCQlicmVhazsKKwljYXNlIEFUQV9MQkFfTUlEX1JF RzoKKwkJdmFsdWUgPSBkcml2ZS0+bGJhX21pZDsKKwkJZHByaW50KExPR19ERUJVRywgImF0YV9j b21tYW5kX2Jsb2NrX3JlYWQ6IEFUQV9MQkFfTUlEX1JFRzogJWx4aFxuIiwgdmFsdWUpOworCQli cmVhazsKKwljYXNlIEFUQV9MQkFfSElHSF9SRUc6CisJCXZhbHVlID0gZHJpdmUtPmxiYV9oaWdo OworCQlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2NvbW1hbmRfYmxvY2tfcmVhZDogQVRBX0xCQV9I SUdIX1JFRzogJWx4aFxuIiwgdmFsdWUpOworCQlicmVhazsKKwljYXNlIEFUQV9IRERFVlNFTF9S RUc6CisJCXZhbHVlID0gZHJpdmUtPmhkZGV2c2VsOworCQlkcHJpbnQoTE9HX0RFQlVHLCAiYXRh X2NvbW1hbmRfYmxvY2tfcmVhZDogQVRBX0hEREVWU0VMX1JFRzogJWx4aFxuIiwgdmFsdWUpOwor CQlicmVhazsKKwljYXNlIEFUQV9TVEFUVVNfUkVHOgorCQlhdGFfaXJxX2xvd2VyKGNoYW5uZWwp OworCisJCXZhbHVlID0gZHJpdmUtPnN0YXR1czsKKwkJZHByaW50KExPR19ERUJVRywgImF0YV9j b21tYW5kX2Jsb2NrX3JlYWQ6IEFUQV9TVEFUVVNfUkVHOiAlbHhoXG4iLCB2YWx1ZSk7CisJCWJy ZWFrOworCWRlZmF1bHQ6CisJCXZhbHVlID0gMDsKKwkJYnJlYWs7CisJfQorCisJcmV0dXJuIHZh bHVlOworfQorCitzdGF0aWMgdm9pZAorYXRhX2NvbW1hbmRfYmxvY2tfd3JpdGUoc3RydWN0IGF0 YV9jaGFubmVsICpjaGFubmVsLAorCQl1aW50NjRfdCBvZmZzZXQsIGludCBzaXplLCB1aW50NjRf dCB2YWx1ZSkKK3sKKwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2ZSA9ICZjaGFubmVsLT5kcml2ZXNb Y2hhbm5lbC0+ZHJpdmVdOworCXN0cnVjdCBhdGFfZHJpdmUgKmRyaXZlMCA9ICZjaGFubmVsLT5k cml2ZXNbQVRBX01BU1RFUl07CisJc3RydWN0IGF0YV9kcml2ZSAqZHJpdmUxID0gJmNoYW5uZWwt PmRyaXZlc1tBVEFfU0xBVkVdOworCXN0cnVjdCBhdGFfcGlvX3NldHVwICpwaW9fc2V0dXAgPSBO VUxMOworCisJdWludDhfdCByZWdfdmFsdWU7CisKKwlwaW9fc2V0dXAgPSAmZHJpdmUtPnBpb19z ZXR1cDsKKworCXN3aXRjaCAob2Zmc2V0KSB7CisJY2FzZSBBVEFfREFUQV9SRUc6CisJCWF0YV9w aW9fcHV0X3VpbnQocGlvX3NldHVwLCB2YWx1ZSk7CisJCWJyZWFrOworCWNhc2UgQVRBX0ZFQVRV UkVTX1JFRzoKKwkJZHJpdmUwLT5mZWF0dXJlcyA9IHZhbHVlOworCQlkcml2ZTEtPmZlYXR1cmVz ID0gdmFsdWU7CisJCWRwcmludChMT0dfREVCVUcsICJhdGFfY29tbWFuZF9ibG9ja193cml0ZTog QVRBX0ZFQVRVUkVTX1JFRzogJXhoXG4iLCAodWludDhfdCl2YWx1ZSk7CisJCWJyZWFrOworCWNh c2UgQVRBX1NFQ0NPVU5UX1JFRzoKKwkJZHJpdmUwLT5zZWNjb3VudCA9IHZhbHVlOworCQlkcml2 ZTEtPnNlY2NvdW50ID0gdmFsdWU7CisJCWRwcmludChMT0dfREVCVUcsICJhdGFfY29tbWFuZF9i bG9ja193cml0ZTogQVRBX1NFQ0NPVU5UX1JFRzogJXhoXG4iLCAodWludDhfdCl2YWx1ZSk7CisJ CWJyZWFrOworCWNhc2UgQVRBX0xCQV9MT1dfUkVHOgorCQlkcml2ZTAtPmxiYV9sb3cgPSB2YWx1 ZTsKKwkJZHJpdmUxLT5sYmFfbG93ID0gdmFsdWU7CisJCWRwcmludChMT0dfREVCVUcsICJhdGFf Y29tbWFuZF9ibG9ja193cml0ZTogQVRBX0xCQV9MT1dfUkVHOiAleGhcbiIsICh1aW50OF90KXZh bHVlKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfTEJBX01JRF9SRUc6CisJCWRyaXZlMC0+bGJhX21p ZCA9IHZhbHVlOworCQlkcml2ZTEtPmxiYV9taWQgPSB2YWx1ZTsKKwkJZHByaW50KExPR19ERUJV RywgImF0YV9jb21tYW5kX2Jsb2NrX3dyaXRlOiBBVEFfTEJBX01JRF9SRUc6ICV4aFxuIiwgKHVp bnQ4X3QpdmFsdWUpOworCQlicmVhazsKKwljYXNlIEFUQV9MQkFfSElHSF9SRUc6CisJCWRyaXZl MC0+bGJhX2hpZ2ggPSB2YWx1ZTsKKwkJZHJpdmUxLT5sYmFfaGlnaCA9IHZhbHVlOworCQlkcHJp bnQoTE9HX0RFQlVHLCAiYXRhX2NvbW1hbmRfYmxvY2tfd3JpdGU6IEFUQV9MQkFfSElHSF9SRUc6 ICV4aFxuIiwgKHVpbnQ4X3QpdmFsdWUpOworCQlicmVhazsKKwljYXNlIEFUQV9IRERFVlNFTF9S RUc6CisJCXJlZ192YWx1ZSA9IHZhbHVlOworCisJCWRyaXZlMC0+aGRkZXZzZWwgPSB2YWx1ZTsK KwkJZHJpdmUxLT5oZGRldnNlbCA9IHZhbHVlOworCQlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2Nv bW1hbmRfYmxvY2tfd3JpdGU6IEFUQV9IRERFVlNFTF9SRUc6ICV4aFxuIiwgcmVnX3ZhbHVlKTsK KworCQlpZiAocmVnX3ZhbHVlICYgQVRBX0RfSUJNKQorCQkJY2hhbm5lbC0+c2l6ZSA9IEFUQV9T RUNUT1JfU0laRTsKKwkJaWYgKHJlZ192YWx1ZSAmIEFUQV9ERVYoQVRBX1NMQVZFKSkgeworCQkJ ZHByaW50KExPR19ERUJVRywgImF0YV9jb21tYW5kX2Jsb2NrX3dyaXRlOiBzZWxlY3QgQVRBX1NM QVZFXG4iKTsKKwkJCWNoYW5uZWwtPmRyaXZlID0gQVRBX1NMQVZFOworCQl9CisJCWVsc2Ugewor CQkJZHByaW50KExPR19ERUJVRywgImF0YV9jb21tYW5kX2Jsb2NrX3dyaXRlOiBzZWxlY3QgQVRB X01BU1RFUlxuIik7CisJCQljaGFubmVsLT5kcml2ZSA9IEFUQV9NQVNURVI7CisJCX0KKwkJaWYg KCFhdGFfc2VsZWN0X2RyaXZlX2lzX29rKGNoYW5uZWwpKSB7CisJCQlkcml2ZTEtPnN0YXR1cyA9 IEFUQV9EUklWRV9BQlNFTlQ7CisJCX0KKwkJYnJlYWs7CisJY2FzZSBBVEFfQ09NTUFORF9SRUc6 CisJCWRyaXZlMC0+Y29tbWFuZCA9IHZhbHVlOworCQlkcml2ZTEtPmNvbW1hbmQgPSB2YWx1ZTsK KwkJZHByaW50KExPR19ERUJVRywgImF0YV9jb21tYW5kX2Jsb2NrX3dyaXRlOiBBVEFfQ09NTUFO RF9SRUc6ICV4aFxuIiwgKHVpbnQ4X3QpdmFsdWUpOworCQlhdGFfaGFuZGxlX2NtZChjaGFubmVs LCB2YWx1ZSk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWRwcmludChMT0dfRVJSLCAiYXRhX2Nv bW1hbmRfYmxvY2tfd3JpdGU6IHVuc3VwcG9ydGVkIHJlZzolbHhcbiIsIG9mZnNldCk7CisJCWFz c2VydCgwKTsKKwkJYnJlYWs7CisJfQorCisJcmV0dXJuOworfQorCitzdGF0aWMgdWludDY0X3QK K2F0YV9hbHRzdGF0dXNfcmVhZChzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwpCit7CisJc3Ry dWN0IGF0YV9kcml2ZSAqZHJpdmUgPSAmY2hhbm5lbC0+ZHJpdmVzW2NoYW5uZWwtPmRyaXZlXTsK Kwl1aW50NjRfdCB2YWx1ZSA9IDA7CisKKwl2YWx1ZSA9IGRyaXZlLT5hbHRzdGF0dXM7CisKKwlk cHJpbnQoTE9HX0RFQlVHLCAiYXRhX2FsdHN0YXR1c19yZWFkOiB2YWx1ZTogJWx1XG4iLCB2YWx1 ZSk7CisKKwlyZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyB2b2lkCithdGFfY29udHJvbF93cml0 ZShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwsCisJCWludCBzaXplLCB1aW50NjRfdCB2YWx1 ZSkKK3sKKwl1aW50OF90IHJlZ192YWx1ZTsKKwlzdHJ1Y3QgYXRhX2RyaXZlICpkcml2ZSA9ICZj aGFubmVsLT5kcml2ZXNbY2hhbm5lbC0+ZHJpdmVdOworCisJcmVnX3ZhbHVlID0gKHVpbnQ4X3Qp dmFsdWU7CisKKwlkcHJpbnQoTE9HX0RFQlVHLCAiYXRhX2NvbnRyb2xfd3JpdGU6IGlycV9kaXNh YmxlZDogJWRcbiIsIHJlZ192YWx1ZSAmIEFUQV9BX0lEUyk7CisKKwlpZiAocmVnX3ZhbHVlICYg QVRBX0FfSURTKQorCQlkcml2ZS0+aXJxX2Rpc2FibGVkID0gMTsKKwllbHNlCisJCWRyaXZlLT5p cnFfZGlzYWJsZWQgPSAwOworCisJaWYgKHJlZ192YWx1ZSAmIEFUQV9BX1JFU0VUKQorCQlhdGFf c3JzdChjaGFubmVsKTsKKworCXJldHVybjsKK30KKworLyoKKyAqIFBDSSBBVEEgZnVuY3Rpb24g ZGVmaW5pdGlvbnMKKyAqLworc3RhdGljIHZvaWQKK3BjaV9hdGFfaW50cl9hc3NlcnQodm9pZCAq YXJnKQoreworCXN0cnVjdCBwY2lfYXRhX3NvZnRjICpzYyA9IChzdHJ1Y3QgcGNpX2F0YV9zb2Z0 YyAqKWFyZzsKKwlzdHJ1Y3QgcGNpX2Rldmluc3QgKnBpID0gc2MtPmFzY19waTsKKworCXBjaV9s aW50cl9hc3NlcnQocGkpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorcGNpX2F0YV9p bnRyX2RlYXNzZXJ0KHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgcGNpX2F0YV9zb2Z0YyAqc2MgPSAo c3RydWN0IHBjaV9hdGFfc29mdGMgKilhcmc7CisJc3RydWN0IHBjaV9kZXZpbnN0ICpwaSA9IHNj LT5hc2NfcGk7CisKKwlwY2lfbGludHJfZGVhc3NlcnQocGkpOworCisJcmV0dXJuOworfQorCitz dGF0aWMgaW50CitwY2lfYXRhX3BhcnNlX3BhcmFtcyhjb25zdCBjaGFyICpvcHRzLCBjaGFyICpv cHQwLCBjaGFyICpvcHQxLCB1aW50OF90ICpucl9jaGFubmVscykKK3sKKwl1aW50OF90IGxlbjsK KwljaGFyIHRtcF9vcHRzWzEyOF07CisJY2hhciAqY2gwID0gTlVMTCwgKmNoMSA9IE5VTEw7CisJ dWludDhfdCBpOworCisJaWYgKCFvcHRzKSB7CisJCWRwcmludChMT0dfRVJSLCAicGNpX2F0YV9w YXJzZV9wYXJhbXM6IG9wdHMgc2hvdWxkIGJlIGxpa2U6ICVzXG4iLAorCQkgICAgICAgIlgsTUFT VEVSX1hbLFNMQVZFX1hdWztZLE1BU1RFUl9ZWyxTTEFWRV9ZXV0iKTsKKwkJcmV0dXJuIC0xOwor CX0KKworCWxlbiA9IHN0cmxlbihvcHRzKTsKKwlpZiAobGVuID49IDEyOCkgeworCQlkcHJpbnQo TE9HX0VSUiwgInBjaV9hdGFfcGFyc2VfcGFyYW1zOiBQQ0kgQVRBIHN0cmluZyBwYXJhbXMgdG9v IGJpZ1xuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlzdHJjcHkodG1wX29wdHMsIG9wdHMpOwor CisJY2gwID0gdG1wX29wdHM7CisKKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKwkJaWYg KHRtcF9vcHRzW2ldID09IFBDSV9BVEFfQ0hfU0VQKSB7CisJCQlpZiAoY2gxKSB7CisJCQkJZHBy aW50KExPR19FUlIsICJwY2lfYXRhX3BhcnNlX3BhcmFtczogdG8gbWFueSBjaGFubmVsc1xuIik7 CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQkJdG1wX29wdHNbaV0gPSAnXDAnOworCQkJY2gxID0g dG1wX29wdHMgKyBpICsgMTsKKwkJfQorCX0KKworCWlmIChzdHJsZW4oY2gwKSA+PSA2NCkgewor CQlkcHJpbnQoTE9HX0VSUiwgInBjaV9hdGFfcGFyc2VfcGFyYW1zOiB0aGUgbmFtZSBvZiBBVEFf WCBjaGFubmVsIHRvbyBiaWdcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCXN0cmNweShvcHQwLCBj aDApOworCSpucl9jaGFubmVscyA9IDE7CisKKwlpZiAoY2gxICE9IE5VTEwgJiYgc3RybGVuKGNo MSkgPCA2NCkgeworCQlzdHJjcHkob3B0MSwgIGNoMSk7CisJCSpucl9jaGFubmVscyA9IDI7CisJ fQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3BjaV9hdGFfaW5pdChzdHJ1Y3Qgdm1j dHggKmN0eCwgc3RydWN0IHBjaV9kZXZpbnN0ICpwaSwgY2hhciAqb3B0cywgaW50IGF0YXBpKQor eworCXN0cnVjdCBhdGFfY2hhbm5lbCAqY2hhbm5lbCA9IE5VTEw7CisJc3RydWN0IHBjaV9hdGFf c29mdGMgKnBjaV9hdGFfc2MgPSBOVUxMOworCWNoYXIgY2hfb3B0c1syXVs2NF07CisJdWludDhf dCBucl9jaGFubmVscyA9IDA7CisJaW50IHJldCwgaTsKKworCWF0YV9vcGVuX2RiZ19maWxlKCk7 CisKKwlyZXQgPSBwY2lfYXRhX3BhcnNlX3BhcmFtcyhvcHRzLCBjaF9vcHRzWzBdLCBjaF9vcHRz WzFdLCAmbnJfY2hhbm5lbHMpOworCWlmIChyZXQpIHsKKwkJZHByaW50KExPR19FUlIsICJwY2lf YXRhX2luaXQ6IHNvbWUgZXJyb3JzIHdpdGggdGhlIGlucHV0IGNoZWNraW5nXG4iKTsKKwkJcmV0 dXJuIC0xOworCX0KKworCXBjaV9hdGFfc2MgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBwY2lf YXRhX3NvZnRjKSk7CisJaWYgKCFwY2lfYXRhX3NjKQorCQlyZXR1cm4gLTE7CisKKwlwY2lfYXRh X3NjLT5jaGFubmVsc1tBVEFfWF0gPSBOVUxMOworCXBjaV9hdGFfc2MtPmNoYW5uZWxzW0FUQV9Z XSA9IE5VTEw7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnJfY2hhbm5lbHM7IGkrKykgeworCQljaGFu bmVsID0gYXRhX2luaXQoY3R4LCBwY2lfYXRhX2ludHJfYXNzZXJ0LCBwY2lfYXRhX2ludHJfZGVh c3NlcnQsCisJCQkJICAgcGNpX2F0YV9zYywgY2hfb3B0c1tpXSwgMCk7CisJCWlmICghY2hhbm5l bCkKKwkJCWNvbnRpbnVlOworCQljaGFubmVsLT51c2VfMTZiaXQgPSAwOworCQlhc3NlcnQoIXBj aV9hdGFfc2MtPmNoYW5uZWxzW2NoYW5uZWwtPmludGVyZmFjZV0pOworCQlwY2lfYXRhX3NjLT5j aGFubmVsc1tjaGFubmVsLT5pbnRlcmZhY2VdID0gY2hhbm5lbDsKKwl9CisKKwkvKiBleGl0IGlm IG5vbmUgb2YgdGhlIGNoYW5uZWxzIGFyZSBpbml0aWFsaXplZCAqLworCWlmICghcGNpX2F0YV9z Yy0+Y2hhbm5lbHNbQVRBX1hdICYmICFwY2lfYXRhX3NjLT5jaGFubmVsc1tBVEFfWV0pIHsKKwkJ ZnJlZShwY2lfYXRhX3NjKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXBpLT5waV9hcmcgPSBwY2lf YXRhX3NjOworCXBjaV9hdGFfc2MtPmFzY19waSA9IHBpOworCisJLyogZ2VuZXJpYyBQQ0kgQVRB L0FUQVBJIGRldmljZSBBVEFfSVQ4MjExRiAqLworCXBjaV9zZXRfY2ZnZGF0YTE2KHBpLCBQQ0lS X0RFVklDRSwgMHg4MjExKTsJLyogQVRBL0FUQVBJIENvbnRyb2xsZXIgKi8KKwlwY2lfc2V0X2Nm Z2RhdGExNihwaSwgUENJUl9WRU5ET1IsIDB4MTI4Myk7CS8qIFdhbGRvICovCisKKwkvKiB0aGlz IGlzIGEgc3RvcmFnZSBjbGFzcyBkZXZpY2UgKi8KKwlwY2lfc2V0X2NmZ2RhdGE4KHBpLCBQQ0lS X0NMQVNTLCBQQ0lDX1NUT1JBR0UpOworCS8qIHRoaXMgaXMgYW4gSURFL0FUQSB0eXBlIGRldmlj ZSAqLworCXBjaV9zZXRfY2ZnZGF0YTgocGksIFBDSVJfU1VCQ0xBU1MsIFBDSVNfU1RPUkFHRV9J REUpOworCisJcGNpX3NldF9jZmdkYXRhOChwaSwgUENJUl9QUk9HSUYsIFBDSVBfU1RPUkFHRV9J REVfTUFTVEVSREVWIHwKKwkJCSBQQ0lQX1NUT1JBR0VfSURFX01PREVQUklNIHwgUENJUF9TVE9S QUdFX0lERV9NT0RFU0VDKTsKKworCXBjaV9lbXVsX2FsbG9jX2JhcihwaSwgUENJX0JBUjAsIFBD SUJBUl9JTywgQVRBX0lPU0laRSk7CisJcGNpX2VtdWxfYWxsb2NfYmFyKHBpLCBQQ0lfQkFSMSwg UENJQkFSX0lPLCBBVEFfQ1RMSU9TSVpFKTsKKwlwY2lfZW11bF9hbGxvY19iYXIocGksIFBDSV9C QVIyLCBQQ0lCQVJfSU8sIEFUQV9JT1NJWkUpOworCXBjaV9lbXVsX2FsbG9jX2JhcihwaSwgUENJ X0JBUjMsIFBDSUJBUl9JTywgQVRBX0NUTElPU0laRSk7CisJcGNpX2VtdWxfYWxsb2NfYmFyKHBp LCBQQ0lfQkFSNCwgUENJQkFSX0lPLCBBVEFfQ0hBTk5FTFMgKiBBVEFfQk1JT1NJWkUpOworCisJ cGNpX2xpbnRyX3JlcXVlc3QocGkpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3Bj aV9hdGFfaGRfaW5pdChzdHJ1Y3Qgdm1jdHggKmN0eCwgc3RydWN0IHBjaV9kZXZpbnN0ICpwaSwg Y2hhciAqb3B0cykKK3sKKwlyZXR1cm4gKHBjaV9hdGFfaW5pdChjdHgsIHBpLCBvcHRzLCAwKSk7 Cit9CisKK3N0YXRpYyB2b2lkCitwY2lfYXRhX2RtYV9zdGFydChzdHJ1Y3QgcGNpX2F0YV9zb2Z0 YyAqc2MsIHVpbnQ4X3QgY2gpCit7CisJc3RydWN0IHZtY3R4ICpjdHggPSBOVUxMOworCXN0cnVj dCBhdGFfY2hhbm5lbCAqY2hhbm5lbCA9IE5VTEw7CisJc3RydWN0IGJsb2NraWZfY3R4dCAqYmN0 eHQgPSBOVUxMOworCXN0cnVjdCBwY2lfYXRhX2RtYV90cmFuc2FjdGlvbiAqZG1hX3RyYW5zYWN0 aW9uID0gTlVMTDsKKwlzdHJ1Y3QgYmxvY2tpZl9yZXEgKmJyZXEgPSBOVUxMOworCisJc3RydWN0 IHByZF9lbnRyeSAqcHJkdCA9IE5VTEw7CisJc3RydWN0IHByZF9lbnRyeSAqZW50cnkgPSBOVUxM OworCXVpbnQzMl90IHByZHRfYWRkcmVzczsKKwl1aW50MzJfdCBpbmRleDsKKwl1aW50MzJfdCBi eXRlX2NvdW50OworCXZvaWQgKmVudHJ5X2J1ZmYgPSBOVUxMOworCWludCBlcnI7CisKKwljaGFu bmVsID0gc2MtPmNoYW5uZWxzW2NoXTsKKworCWN0eCA9IGNoYW5uZWwtPnZtX2N0eDsKKwlhc3Nl cnQoY3R4ICE9IE5VTEwpOworCisJYmN0eHQgPSBjaGFubmVsLT5kcml2ZXNbY2hhbm5lbC0+ZHJp dmVdLmJjdHh0OworCWRtYV90cmFuc2FjdGlvbiA9ICZzYy0+ZG1hX3RyYW5zYWN0aW9uc1tjaF07 CisKKwlhc3NlcnQoZG1hX3RyYW5zYWN0aW9uLT5zdGFydGVkKTsKKworCWFzc2VydCgoKHNjLT5j bWRbY2hdICYgQVRBX0JNQ01EX1dSSVRFX1JFQUQpICYmIGRtYV90cmFuc2FjdGlvbi0+b3BfZGly ID09IEFUQV9ETUFfUkVBRCkgfHwKKwkJKCEoc2MtPmNtZFtjaF0gJiBBVEFfQk1DTURfV1JJVEVf UkVBRCkgJiYgZG1hX3RyYW5zYWN0aW9uLT5vcF9kaXIgPT0gQVRBX0RNQV9XUklURSkpOworCisJ c2MtPnN0YXRbY2hdIHw9IEFUQV9CTVNUQVRfQUNUSVZFOworCisJLyogcHJkdF9hZGRyZXNzIGlz IHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBwcmR0IGluIHRoZSBndWVzdCBtZW1vcnkgKi8K KwlwcmR0X2FkZHJlc3MgPSBzYy0+cHJkdFtjaF07CisKKwkvKiBtYXAgdGhlIGd1ZXN0IHBoeXNp Y2FsIGFkZHJlc3MgaW50byB0aGUgaG9zdCB2aXJ0dWFsIGFkZHJlc3MgKi8KKwlwcmR0ID0gcGFk ZHJfZ3Vlc3QyaG9zdChjdHgsIHByZHRfYWRkcmVzcywgQVRBX0RNQV9QUkRUX1NJWkUpOworCWFz c2VydChwcmR0ICE9IE5VTEwpOworCisJYnJlcSA9ICZkbWFfdHJhbnNhY3Rpb24tPmJyZXE7CisJ YnJlcS0+YnJfcGFyYW0gPSBjaGFubmVsOworCWJyZXEtPmJyX2NhbGxiYWNrID0gYXRhX2hhbmRs ZV9ibG9ja19yZXF1ZXN0OworCWJyZXEtPmJyX29mZnNldCA9IGRtYV90cmFuc2FjdGlvbi0+b2Zm c2V0OworCisJZG1hX3RyYW5zYWN0aW9uLT5pc19lb3QgPSAwOworCWluZGV4ID0gMDsKKwl3aGls ZSAoIWRtYV90cmFuc2FjdGlvbi0+aXNfZW90ICYmIGRtYV90cmFuc2FjdGlvbi0+bmJ5dGVzID4g MCkgeworCQllbnRyeSA9IHByZHQgKyBpbmRleDsKKworCQllbnRyeV9idWZmID0gcGFkZHJfZ3Vl c3QyaG9zdChjdHgsIGVudHJ5LT5wcmRfYWRkcmVzcywgZW50cnktPmJ5dGVfY291bnQpOworCQli eXRlX2NvdW50ID0gZW50cnktPmJ5dGVfY291bnQgPyBlbnRyeS0+Ynl0ZV9jb3VudCA6IEFUQV9E TUFfTUFYX1BSRF9DT1VOVDsKKworCQlpZiAoYnl0ZV9jb3VudCA+IGRtYV90cmFuc2FjdGlvbi0+ bmJ5dGVzKSB7CisJCQlkcHJpbnQoTE9HX0VSUiwgInBjaV9hdGFfZG1hX3N0YXJ0OiB0aGUgUFJE IGVudHJ5IGNvbnRhaW5zICVzIiwKKwkJCSAgICAgICAibW9yZSBieXRlcyB0aGFuIHRoZSBBVEEg dHJhbnNmZXIgc2l6ZVxuIik7CisJCQlieXRlX2NvdW50ID0gZG1hX3RyYW5zYWN0aW9uLT5uYnl0 ZXM7CisJCX0KKworCQlpZiAoaW5kZXggPT0gQkxPQ0tJRl9JT1ZfTUFYKSB7CisJCQlkcHJpbnQo TE9HX0VSUiwgInBjaV9hdGFfZG1hX3N0YXJ0OiB0aGUgUFJEIFRhYmxlIGNvbnRhaW5zICVzIiwK KwkJCSAgICAgICAibW9yZSB0aGFuIEJMT0NLSUZfSU9WX01BWCBlbnRyaWVzXG4iKTsKKwkJCWJy ZWFrOworCQl9CisKKwkJYnJlcS0+YnJfaW92W2luZGV4XS5pb3ZfbGVuID0gYnl0ZV9jb3VudDsK KwkJYnJlcS0+YnJfaW92W2luZGV4XS5pb3ZfYmFzZSA9IGVudHJ5X2J1ZmY7CisKKwkJZG1hX3Ry YW5zYWN0aW9uLT5uYnl0ZXMgLT0gYnl0ZV9jb3VudDsKKworCQlpZiAoZW50cnktPnZlbmRvcl9z cGVjaWZpYyAmIEFUQV9ETUFfUFJEVF9FT1QpCisJCQlkbWFfdHJhbnNhY3Rpb24tPmlzX2VvdCA9 IDE7CisKKwkJaW5kZXgrKzsKKwl9CisKKwlicmVxLT5icl9pb3ZjbnQgPSBpbmRleDsKKworCXNj LT5zdGF0W2NoXSB8PSBBVEFfQk1TVEFUX0lOVEVSUlVQVDsKKworCS8qCisJICogVXNlIGFzeW5j aHJvbm91cyBvcGVyYXRpb25zIGZvciByZWFkIC8gd3JpdGUgb24gdGhlIGJsb2NrOworCSAqIHVw ZGF0ZSB0aGUgc3RhdHVzIHJlZ2lzdGVycyBhbmQgbm90aWZ5IHRoZSBndWVzdCBvcGVyYXRpbmcK KwkgKiBzeXN0ZW0gdXNpbmcgYW4gaW50ZXJydXB0IGluIHRoZSBhdGFfaGFuZGxlX2Jsb2NrX3Jl cXVlc3QgY2FsbGJhY2sKKwkgKi8KKwlpZiAoZG1hX3RyYW5zYWN0aW9uLT5vcF9kaXIgPT0gQVRB X0RNQV9SRUFEKSB7CisJCWVyciA9IGJsb2NraWZfcmVhZChiY3R4dCwgYnJlcSk7CisJfQorCWVs c2UgaWYgKGRtYV90cmFuc2FjdGlvbi0+b3BfZGlyID09IEFUQV9ETUFfV1JJVEUpIHsKKwkJZXJy ID0gYmxvY2tpZl93cml0ZShiY3R4dCwgYnJlcSk7CisJfQorCWVsc2UgeworCQlhc3NlcnQoMCk7 CisJfQorCisJYXNzZXJ0KCFlcnIpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorcGNp X2F0YV9kbWFfc3RvcChzdHJ1Y3QgcGNpX2F0YV9zb2Z0YyAqc2MsIHVpbnQ4X3QgY2gpCit7CisJ c3RydWN0IGF0YV9jaGFubmVsICpjaGFubmVsID0gTlVMTDsKKwlzdHJ1Y3QgcGNpX2F0YV9kbWFf dHJhbnNhY3Rpb24gKmRtYV90cmFuc2FjdGlvbiA9IE5VTEw7CisKKwljaGFubmVsID0gc2MtPmNo YW5uZWxzW2NoXTsKKwlkbWFfdHJhbnNhY3Rpb24gPSAmc2MtPmRtYV90cmFuc2FjdGlvbnNbY2hd OworCisJaWYoIWRtYV90cmFuc2FjdGlvbi0+c3RhcnRlZCkgeworCQlyZXR1cm47CisJfQorCisJ aWYgKGRtYV90cmFuc2FjdGlvbi0+aXNfZW90ICYmIGRtYV90cmFuc2FjdGlvbi0+bmJ5dGVzID09 IDApIHsKKwkJc2MtPnN0YXRbY2hdIHw9IEFUQV9CTVNUQVRfSU5URVJSVVBUOworCQlzYy0+c3Rh dFtjaF0gJj0gfkFUQV9CTVNUQVRfRVJST1I7CisJCXNjLT5zdGF0W2NoXSAmPSB+QVRBX0JNU1RB VF9BQ1RJVkU7CisJfQorCWVsc2UgaWYgKCFkbWFfdHJhbnNhY3Rpb24tPmlzX2VvdCAmJiBkbWFf dHJhbnNhY3Rpb24tPm5ieXRlcyA9PSAwKSB7CisJCXNjLT5zdGF0W2NoXSB8PSBBVEFfQk1TVEFU X0lOVEVSUlVQVDsKKwkJc2MtPnN0YXRbY2hdICY9IH5BVEFfQk1TVEFUX0VSUk9SOworCQlzYy0+ c3RhdFtjaF0gfD0gQVRBX0JNU1RBVF9BQ1RJVkU7CisJCWRwcmludChMT0dfRVJSLCAicGNpX2F0 YV9kbWFfc3RvcDogRE1BIFBSRFQgdHJhbnNmZXIgd2FzICVzIiwKKwkJICAgICAgICJsYXJnZXIg dGhhbiB0aGUgQVRBIHRyYW5zZmVyIHNpemVcbiIpOworCX0KKwllbHNlIGlmIChkbWFfdHJhbnNh Y3Rpb24tPmlzX2VvdCAmJiBkbWFfdHJhbnNhY3Rpb24tPm5ieXRlcyA+IDApIHsKKwkJc2MtPnN0 YXRbY2hdICY9IH5BVEFfQk1TVEFUX0lOVEVSUlVQVDsKKwkJc2MtPnN0YXRbY2hdICY9IH5BVEFf Qk1TVEFUX0VSUk9SOworCQlzYy0+c3RhdFtjaF0gJj0gfkFUQV9CTVNUQVRfQUNUSVZFOworCQlk cHJpbnQoTE9HX0VSUiwgInBjaV9hdGFfZG1hX3N0b3A6IERNQSBQUkRUIHRyYW5zZmVyIHdhcyAl cyIsCisJCSAgICAgICAic21hbGxlciB0aGFuIHRoZSBBVEEgdHJhbnNmZXIgc2l6ZVxuIik7CisJ fQorCWVsc2UgaWYgKCFkbWFfdHJhbnNhY3Rpb24tPmlzX2VvdCAmJiBkbWFfdHJhbnNhY3Rpb24t Pm5ieXRlcyA+IDApIHsKKwkJc2MtPnN0YXRbY2hdIHw9IEFUQV9CTVNUQVRfRVJST1I7CisJCWRw cmludChMT0dfRVJSLCAicGNpX2F0YV9kbWFfc3RvcDogdGhlIFBSRCBUYWJsZSBjb250YWlucyAl cyIsCisJCSAgICAgICAibW9yZSB0aGFuIEJMT0NLSUZfSU9WX01BWCBlbnRyaWVzXG4iKTsKKwl9 CisKKwlkbWFfdHJhbnNhY3Rpb24tPnN0YXJ0ZWQgPSAwOworCisJcmV0dXJuOworfQorCitzdGF0 aWMgdWludDY0X3QKK3BjaV9hdGFfYnVzX21hc3Rlcl9yZWFkKHN0cnVjdCBwY2lfYXRhX3NvZnRj ICpzYywgdWludDY0X3Qgb2Zmc2V0KQoreworCXVpbnQ2NF90IHZhbHVlID0gMDsKKworCXN3aXRj aCAob2Zmc2V0KSB7CisJY2FzZSBBVEFfQk1DTURfWF9SRUc6CisJCXZhbHVlID0gc2MtPmNtZFtB VEFfWF07CisJCWRwcmludChMT0dfREVCVUcsICJwY2lfYXRhX2J1c19tYXN0ZXJfcmVhZDogQVRB X0JNQ01EX1hfUkVHOiAlbHVcbiIsIHZhbHVlKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfQk1TVEFU X1hfUkVHOgorCQl2YWx1ZSA9IHNjLT5zdGF0W0FUQV9YXTsKKwkJZHByaW50KExPR19ERUJVRywg InBjaV9hdGFfYnVzX21hc3Rlcl9yZWFkOiBBVEFfQk1TVEFUX1hfUkVHOiAlbHVcbiIsIHZhbHVl KTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfQk1QUkRUX1hfUkVHOgorCQl2YWx1ZSA9IHNjLT5wcmR0 W0FUQV9YXTsKKwkJZHByaW50KExPR19ERUJVRywgInBjaV9hdGFfYnVzX21hc3Rlcl9yZWFkOiBB VEFfQk1QUkRUX1hfUkVHOiAlbHVcbiIsIHZhbHVlKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfQk1D TURfWV9SRUc6CisJCXZhbHVlID0gc2MtPmNtZFtBVEFfWV07CisJCWRwcmludChMT0dfREVCVUcs ICJwY2lfYXRhX2J1c19tYXN0ZXJfcmVhZDogQVRBX0JNQ01EX1lfUkVHOiAlbHVcbiIsIHZhbHVl KTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfQk1TVEFUX1lfUkVHOgorCQl2YWx1ZSA9IHNjLT5zdGF0 W0FUQV9ZXTsKKwkJZHByaW50KExPR19ERUJVRywgInBjaV9hdGFfYnVzX21hc3Rlcl9yZWFkOiBB VEFfQk1TVEFUX1lfUkVHOiAlbHVcbiIsIHZhbHVlKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfQk1Q UkRUX1lfUkVHOgorCQl2YWx1ZSA9IHNjLT5wcmR0W0FUQV9ZXTsKKwkJZHByaW50KExPR19ERUJV RywgInBjaV9hdGFfYnVzX21hc3Rlcl9yZWFkOiBBVEFfQk1QUkRUX1lfUkVHOiAlbHVcbiIsIHZh bHVlKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJdmFsdWUgPSAwOworCQlicmVhazsKKwl9CisK KwlyZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyB2b2lkCitwY2lfYXRhX2J1c19tYXN0ZXJfd3Jp dGUoc3RydWN0IHBjaV9hdGFfc29mdGMgKnNjLAorCQl1aW50NjRfdCBvZmZzZXQsIGludCBzaXpl LCB1aW50NjRfdCB2YWx1ZSkKK3sKKworCXVpbnQ4X3QgcmVnX3ZhbHVlOworCisJaWYgKG9mZnNl dCAhPSBBVEFfQk1QUkRUX1hfUkVHICYmIG9mZnNldCAhPSBBVEFfQk1QUkRUX1lfUkVHICYmIHNp emUgIT0gMSkKKwkJcmV0dXJuOworCWlmICgob2Zmc2V0ID09IEFUQV9CTVBSRFRfWF9SRUcgfHwg b2Zmc2V0ID09IEFUQV9CTVBSRFRfWV9SRUcpICYmIHNpemUgIT0gNCkKKwkJcmV0dXJuOworCisJ c3dpdGNoIChvZmZzZXQpIHsKKwljYXNlIEFUQV9CTUNNRF9YX1JFRzoKKwkJcmVnX3ZhbHVlID0g c2MtPmNtZFtBVEFfWF0gPSAodWludDhfdCl2YWx1ZTsKKworCQlkcHJpbnQoTE9HX0RFQlVHLCAi cGNpX2F0YV9idXNfbWFzdGVyX3dyaXRlW1hdOiBBVEFfQk1DTURfU1RBUlRfU1RPUDogJWRcbiIs CisJCSAgICAgICByZWdfdmFsdWUgJiBBVEFfQk1DTURfU1RBUlRfU1RPUCk7CisJCWlmIChyZWdf dmFsdWUgJiBBVEFfQk1DTURfU1RBUlRfU1RPUCkgeworCQkJcGNpX2F0YV9kbWFfc3RhcnQoc2Ms IEFUQV9YKTsKKwkJfQorCQllbHNlIHsKKwkJCXBjaV9hdGFfZG1hX3N0b3Aoc2MsIEFUQV9YKTsK KwkJfQorCisJCWRwcmludChMT0dfREVCVUcsICJwY2lfYXRhX2J1c19tYXN0ZXJfd3JpdGVbWF06 IEFUQV9CTUNNRF9XUklURV9SRUFEOiAlZFxuIiwKKwkJICAgICAgIHJlZ192YWx1ZSAmIEFUQV9C TUNNRF9XUklURV9SRUFEKTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfQk1TVEFUX1hfUkVHOgorCQly ZWdfdmFsdWUgPSBzYy0+c3RhdFtBVEFfWF0gPSAodWludDhfdCl2YWx1ZTsKKwkJZHByaW50KExP R19ERUJVRywgInBjaV9hdGFfYnVzX21hc3Rlcl93cml0ZVtYXTogQVRBX0JNU1RBVF9JTlRFUlJV UFQ6ICVkLCBBVEFfQk1TVEFUX0VSUk9SOiAlZFxuIiwKKwkJCQlyZWdfdmFsdWUgICYgQVRBX0JN U1RBVF9JTlRFUlJVUFQsIHJlZ192YWx1ZSAmIEFUQV9CTVNUQVRfRVJST1IpOworCQlpZiAocmVn X3ZhbHVlICYgQVRBX0JNU1RBVF9JTlRFUlJVUFQpCisJCQlzYy0+c3RhdFtBVEFfWF0gJj0gfkFU QV9CTVNUQVRfSU5URVJSVVBUOworCQlpZiAocmVnX3ZhbHVlICYgQVRBX0JNU1RBVF9FUlJPUikK KwkJCXNjLT5zdGF0W0FUQV9YXSAmPSB+QVRBX0JNU1RBVF9FUlJPUjsKKwkJYnJlYWs7CisJY2Fz ZSBBVEFfQk1QUkRUX1hfUkVHOgorCQlkcHJpbnQoTE9HX0RFQlVHLCAicGNpX2F0YV9idXNfbWFz dGVyX3dyaXRlW1hdOiBBVEFfQk1QUkRUX1hfUkVHOiAweCV4XG4iLCAodWludDMyX3QpdmFsdWUp OworCQlzYy0+cHJkdFtBVEFfWF0gPSB2YWx1ZTsKKwkJYnJlYWs7CisJY2FzZSBBVEFfQk1DTURf WV9SRUc6CisJCXJlZ192YWx1ZSA9IHNjLT5jbWRbQVRBX1ldID0gKHVpbnQ4X3QpdmFsdWU7CisK KwkJZHByaW50KExPR19ERUJVRywgInBjaV9hdGFfYnVzX21hc3Rlcl93cml0ZVtZXTogQVRBX0JN Q01EX1NUQVJUX1NUT1A6ICVkXG4iLAorCQkgICAgICAgcmVnX3ZhbHVlICYgQVRBX0JNQ01EX1NU QVJUX1NUT1ApOworCQlpZiAocmVnX3ZhbHVlICYgQVRBX0JNQ01EX1NUQVJUX1NUT1ApIHsKKwkJ CXBjaV9hdGFfZG1hX3N0YXJ0KHNjLCBBVEFfWSk7CisJCX0KKwkJZWxzZSB7CisJCQlwY2lfYXRh X2RtYV9zdG9wKHNjLCBBVEFfWSk7CisJCX0KKworCQlkcHJpbnQoTE9HX0RFQlVHLCAicGNpX2F0 YV9idXNfbWFzdGVyX3dyaXRlW1ldOiBBVEFfQk1DTURfV1JJVEVfUkVBRDogJWRcbiIsCisJCSAg ICAgICByZWdfdmFsdWUgJiBBVEFfQk1DTURfV1JJVEVfUkVBRCk7CisJCWJyZWFrOworCWNhc2Ug QVRBX0JNU1RBVF9ZX1JFRzoKKwkJcmVnX3ZhbHVlID0gc2MtPnN0YXRbQVRBX1ldID0gKHVpbnQ4 X3QpdmFsdWU7CisJCWRwcmludChMT0dfREVCVUcsICJwY2lfYXRhX2J1c19tYXN0ZXJfd3JpdGVb WV06IEFUQV9CTVNUQVRfSU5URVJSVVBUOiAlZCwgQVRBX0JNU1RBVF9FUlJPUjogJWRcbiIsCisJ CQkJcmVnX3ZhbHVlICAmIEFUQV9CTVNUQVRfSU5URVJSVVBULCByZWdfdmFsdWUgJiBBVEFfQk1T VEFUX0VSUk9SKTsKKwkJaWYgKHJlZ192YWx1ZSAmIEFUQV9CTVNUQVRfSU5URVJSVVBUKQorCQkJ c2MtPnN0YXRbQVRBX1ldICY9IH5BVEFfQk1TVEFUX0lOVEVSUlVQVDsKKwkJaWYgKHJlZ192YWx1 ZSAmIEFUQV9CTVNUQVRfRVJST1IpCisJCQlzYy0+c3RhdFtBVEFfWV0gJj0gfkFUQV9CTVNUQVRf RVJST1I7CisJCWJyZWFrOworCWNhc2UgQVRBX0JNUFJEVF9ZX1JFRzoKKwkJZHByaW50KExPR19E RUJVRywgInBjaV9hdGFfYnVzX21hc3Rlcl93cml0ZVtZXTogQVRBX0JNUFJEVF9YX1JFRzogMHgl eFxuIiwgKHVpbnQzMl90KXZhbHVlKTsKKwkJc2MtPnByZHRbQVRBX1ldID0gKHVpbnQzMl90KXZh bHVlOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisKKwlyZXR1cm47Cit9CisK K3N0YXRpYyB1aW50NjRfdAorcGNpX2F0YV9yZWFkKHN0cnVjdCB2bWN0eCAqY3R4LCBpbnQgdmNw dSwgc3RydWN0IHBjaV9kZXZpbnN0ICpwaSwgaW50IGJhcmlkeCwKKwkJdWludDY0X3Qgb2Zmc2V0 LCBpbnQgc2l6ZSkKK3sKKwlzdHJ1Y3QgcGNpX2F0YV9zb2Z0YyAqc2MgPSBwaS0+cGlfYXJnOwor CXVpbnQ2NF90IHZhbHVlID0gMDsKKworCXN3aXRjaCAoYmFyaWR4KSB7CisJY2FzZSBQQ0lfQkFS MDoKKwkJaWYgKCFzYy0+Y2hhbm5lbHNbQVRBX1hdKQorCQkJYnJlYWs7CisJCWFzc2VydChhdGFf Y2hhbm5lbF9pc19vayhzYy0+Y2hhbm5lbHNbQVRBX1hdLCBBVEFfWCkpOworCQl2YWx1ZSA9IGF0 YV9jb21tYW5kX2Jsb2NrX3JlYWQoc2MtPmNoYW5uZWxzW0FUQV9YXSwgb2Zmc2V0KTsKKwkJYnJl YWs7CisJY2FzZSBQQ0lfQkFSMToKKwkJaWYgKCFzYy0+Y2hhbm5lbHNbQVRBX1hdKQorCQkJYnJl YWs7CisJCWFzc2VydChhdGFfY2hhbm5lbF9pc19vayhzYy0+Y2hhbm5lbHNbQVRBX1hdLCBBVEFf WCkpOworCQl2YWx1ZSA9IGF0YV9hbHRzdGF0dXNfcmVhZChzYy0+Y2hhbm5lbHNbQVRBX1hdKTsK KwkJYnJlYWs7CisJY2FzZSBQQ0lfQkFSMjoKKwkJaWYgKCFzYy0+Y2hhbm5lbHNbQVRBX1ldKQor CQkJYnJlYWs7CisJCWFzc2VydChhdGFfY2hhbm5lbF9pc19vayhzYy0+Y2hhbm5lbHNbQVRBX1ld LCBBVEFfWSkpOworCQl2YWx1ZSA9IGF0YV9jb21tYW5kX2Jsb2NrX3JlYWQoc2MtPmNoYW5uZWxz W0FUQV9ZXSwgb2Zmc2V0KTsKKwkJYnJlYWs7CisJY2FzZSBQQ0lfQkFSMzoKKwkJaWYgKCFzYy0+ Y2hhbm5lbHNbQVRBX1ldKQorCQkJYnJlYWs7CisJCWFzc2VydChhdGFfY2hhbm5lbF9pc19vayhz Yy0+Y2hhbm5lbHNbQVRBX1ldLCBBVEFfWSkpOworCQl2YWx1ZSA9IGF0YV9hbHRzdGF0dXNfcmVh ZChzYy0+Y2hhbm5lbHNbQVRBX1ldKTsKKwkJYnJlYWs7CisJY2FzZSBQQ0lfQkFSNDoKKwkJdmFs dWUgPSBwY2lfYXRhX2J1c19tYXN0ZXJfcmVhZChzYywgb2Zmc2V0KTsKKwkJYnJlYWs7CisJZGVm YXVsdDoKKwkJYXNzZXJ0KDApOworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gdmFsdWU7Cit9CisK K3N0YXRpYyB2b2lkCitwY2lfYXRhX3dyaXRlKHN0cnVjdCB2bWN0eCAqY3R4LCBpbnQgdmNwdSwg c3RydWN0IHBjaV9kZXZpbnN0ICpwaSwKKwkJaW50IGJhcmlkeCwgdWludDY0X3Qgb2Zmc2V0LCBp bnQgc2l6ZSwgdWludDY0X3QgdmFsdWUpCit7CisJc3RydWN0IHBjaV9hdGFfc29mdGMgKnNjID0g cGktPnBpX2FyZzsKKworCXN3aXRjaCAoYmFyaWR4KSB7CisJY2FzZSBQQ0lfQkFSMDoKKwkJaWYg KCFzYy0+Y2hhbm5lbHNbQVRBX1hdKQorCQkJYnJlYWs7CisJCWFzc2VydChhdGFfY2hhbm5lbF9p c19vayhzYy0+Y2hhbm5lbHNbQVRBX1hdLCBBVEFfWCkpOworCQlhdGFfY29tbWFuZF9ibG9ja193 cml0ZShzYy0+Y2hhbm5lbHNbQVRBX1hdLCBvZmZzZXQsIHNpemUsIHZhbHVlKTsKKwkJYnJlYWs7 CisJY2FzZSBQQ0lfQkFSMToKKwkJaWYgKCFzYy0+Y2hhbm5lbHNbQVRBX1hdKQorCQkJYnJlYWs7 CisJCWFzc2VydChhdGFfY2hhbm5lbF9pc19vayhzYy0+Y2hhbm5lbHNbQVRBX1hdLCBBVEFfWCkp OworCQlhdGFfY29udHJvbF93cml0ZShzYy0+Y2hhbm5lbHNbQVRBX1hdLCBzaXplLCB2YWx1ZSk7 CisJCWJyZWFrOworCWNhc2UgUENJX0JBUjI6CisJCWlmICghc2MtPmNoYW5uZWxzW0FUQV9ZXSkK KwkJCWJyZWFrOworCQlhc3NlcnQoYXRhX2NoYW5uZWxfaXNfb2soc2MtPmNoYW5uZWxzW0FUQV9Z XSwgQVRBX1kpKTsKKwkJYXRhX2NvbW1hbmRfYmxvY2tfd3JpdGUoc2MtPmNoYW5uZWxzW0FUQV9Z XSwgb2Zmc2V0LCBzaXplLCB2YWx1ZSk7CisJCWJyZWFrOworCWNhc2UgUENJX0JBUjM6CisJCWlm ICghc2MtPmNoYW5uZWxzW0FUQV9ZXSkKKwkJCWJyZWFrOworCQlhc3NlcnQoYXRhX2NoYW5uZWxf aXNfb2soc2MtPmNoYW5uZWxzW0FUQV9ZXSwgQVRBX1kpKTsKKwkJYXRhX2NvbnRyb2xfd3JpdGUo c2MtPmNoYW5uZWxzW0FUQV9ZXSwgc2l6ZSwgdmFsdWUpOworCQlicmVhazsKKwljYXNlIFBDSV9C QVI0OgorCQlwY2lfYXRhX2J1c19tYXN0ZXJfd3JpdGUoc2MsIG9mZnNldCwgc2l6ZSwgdmFsdWUp OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlhc3NlcnQoMCk7CisJCWJyZWFrOworCX0KKworCXJl dHVybjsKK30KKworLyoKKyAqIExQQyBBVEEgZnVuY3Rpb24gZGVmaW5pdGlvbnMKKyAqLworc3Rh dGljIHZvaWQKK2xwY19hdGFfaW50cl9hc3NlcnQodm9pZCAqYXJnKQoreworCXN0cnVjdCBscGNf YXRhX3NvZnRjICpzY19scGNfYXRhID0gKHN0cnVjdCBscGNfYXRhX3NvZnRjICopYXJnOworCXN0 cnVjdCB2bWN0eCAqbHBjX2N0eCA9IHNjX2xwY19hdGEtPmNoYW5uZWwtPnZtX2N0eDsKKworCXZt X2lzYV9wdWxzZV9pcnEobHBjX2N0eCwgc2NfbHBjX2F0YS0+aXJxLCBzY19scGNfYXRhLT5pcnEp OworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZAorbHBjX2F0YV9pbnRyX2RlYXNzZXJ0KHZv aWQgKmFyZykKK3sKKwkvKgorCSAqIFRoZSBBVEEgZGV2aWNlcyBvbiB0aGUgTFBDIGJ1cyBnZW5l cmF0ZSBlZGdlIHRyaWdnZXJlZCBpbnRlcnJ1cHRzCisJICogc28gbm90aGluZyBtb3JlIHRvIGRv IGhlcmUKKwkgKi8KKworCXJldHVybjsKK30KKworaW50CitscGNfYXRhX2luaXQoc3RydWN0IHZt Y3R4ICpjdHgsIGNvbnN0IGNoYXIgKm9wdHMpCit7CisJc3RydWN0IGF0YV9jaGFubmVsICpjaGFu bmVsID0gTlVMTDsKKwlzdHJ1Y3QgaW5vdXRfcG9ydCBpb3AsIGlvY3RscDsKKwlpbnQgY2hfYXRh ID0gLTE7CisJaW50IGVycjsKKworCWF0YV9vcGVuX2RiZ19maWxlKCk7CisKKwlhc3NlcnQob3B0 c1swXSA9PSAnMCcgfHwgb3B0c1swXSA9PSAnMScpOworCWNoX2F0YSA9IG9wdHNbMF0gLSAnMCc7 CisKKwlpZiAobHBjX2F0YV9zY1tjaF9hdGFdLmNoYW5uZWwpIHsKKwkJZHByaW50KExPR19FUlIs ICJscGNfYXRhX2luaXQ6IHRoZSBMUEMgYXRhJWQgaXMgaW5pdGlhbGl6ZWRcbiIsIGNoX2F0YSk7 CisJCXJldHVybiAtMTsKKwl9CisKKwljaGFubmVsID0gYXRhX2luaXQoY3R4LCBscGNfYXRhX2lu dHJfYXNzZXJ0LCBscGNfYXRhX2ludHJfZGVhc3NlcnQsICZscGNfYXRhX3NjW2NoX2F0YV0sIG9w dHMsIDEpOworCWlmICghY2hhbm5lbCkKKwkJcmV0dXJuIC0xOworCisJYXNzZXJ0KGNoX2F0YSA9 PSBjaGFubmVsLT5pbnRlcmZhY2UpOworCWNoYW5uZWwtPnVzZV8xNmJpdCA9IDE7CisKKwlscGNf YXRhX3NjW2NoX2F0YV0uY2hhbm5lbCA9IGNoYW5uZWw7CisKKwliemVybygmaW9wLCBzaXplb2Yo c3RydWN0IGlub3V0X3BvcnQpKTsKKwlpb3AubmFtZSA9IGxwY19hdGFfc2NbY2hfYXRhXS5uYW1l X2lvOworCWlvcC5wb3J0ID0gbHBjX2F0YV9zY1tjaF9hdGFdLmJhc2VfYWRkcl9pbzsKKwlpb3Au c2l6ZSA9IEFUQV9JT1NJWkU7CisJaW9wLmZsYWdzID0gSU9QT1JUX0ZfSU5PVVQ7CisJaW9wLmhh bmRsZXIgPSBscGNfYXRhX2lvX2hhbmRsZXI7CisJaW9wLmFyZyA9ICZscGNfYXRhX3NjW2NoX2F0 YV07CisKKwllcnIgPSByZWdpc3Rlcl9pbm91dCgmaW9wKTsKKwlhc3NlcnQoZXJyID09IDApOwor CisJYnplcm8oJmlvY3RscCwgc2l6ZW9mKHN0cnVjdCBpbm91dF9wb3J0KSk7CisJaW9jdGxwLm5h bWUgPSBscGNfYXRhX3NjW2NoX2F0YV0ubmFtZV9pb2N0bDsKKwlpb2N0bHAucG9ydCA9IGxwY19h dGFfc2NbY2hfYXRhXS5iYXNlX2FkZHJfaW9jdGw7CisJaW9jdGxwLnNpemUgPSBBVEFfQ1RMSU9T SVpFOworCWlvY3RscC5mbGFncyA9IElPUE9SVF9GX0lOT1VUOworCWlvY3RscC5oYW5kbGVyID0g bHBjX2F0YV9pb2N0bF9oYW5kbGVyOworCWlvY3RscC5hcmcgPSAmbHBjX2F0YV9zY1tjaF9hdGFd OworCisJZXJyID0gcmVnaXN0ZXJfaW5vdXQoJmlvY3RscCk7CisJYXNzZXJ0KGVyciA9PSAwKTsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50CitscGNfYXRhX2lvX2hhbmRsZXIoc3RydWN0 IHZtY3R4ICpjdHgsIGludCB2Y3B1LAorCQkgICBpbnQgaW4sIGludCBwb3J0LCBpbnQgYnl0ZXMs IHVpbnQzMl90ICplYXgsIHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgbHBjX2F0YV9zb2Z0YyAqbHBj X3NjID0gKHN0cnVjdCBscGNfYXRhX3NvZnRjICopYXJnOworCXN0cnVjdCBhdGFfY2hhbm5lbCAq Y2hhbm5lbCA9IE5VTEw7CisJdWludDhfdCBvZmZzZXQgPSAwOworCisJYXNzZXJ0KGxwY19zYyk7 CisJY2hhbm5lbCA9IGxwY19zYy0+Y2hhbm5lbDsKKwlhc3NlcnQoY2hhbm5lbCk7CisKKwlvZmZz ZXQgPSBwb3J0IC0gbHBjX3NjLT5iYXNlX2FkZHJfaW87CisJYXNzZXJ0KG9mZnNldCA8IEFUQV9J T1NJWkUpOworCisJaWYgKGluKQorCQkqZWF4ID0gYXRhX2NvbW1hbmRfYmxvY2tfcmVhZChjaGFu bmVsLCBvZmZzZXQpOworCWVsc2UKKwkJYXRhX2NvbW1hbmRfYmxvY2tfd3JpdGUoY2hhbm5lbCwg b2Zmc2V0LCBieXRlcywgKmVheCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAorbHBj X2F0YV9pb2N0bF9oYW5kbGVyKHN0cnVjdCB2bWN0eCAqY3R4LCBpbnQgdmNwdSwKKwkJICAgaW50 IGluLCBpbnQgcG9ydCwgaW50IGJ5dGVzLCB1aW50MzJfdCAqZWF4LCB2b2lkICphcmcpCit7CisJ c3RydWN0IGxwY19hdGFfc29mdGMgKmxwY19zYyA9IChzdHJ1Y3QgbHBjX2F0YV9zb2Z0YyAqKWFy ZzsKKwlzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoYW5uZWwgPSBOVUxMOworCXVpbnQ4X3Qgb2Zmc2V0 ID0gMDsKKworCWFzc2VydChscGNfc2MpOworCWNoYW5uZWwgPSBscGNfc2MtPmNoYW5uZWw7CisJ YXNzZXJ0KGNoYW5uZWwpOworCisJb2Zmc2V0ID0gcG9ydCAtIGxwY19zYy0+YmFzZV9hZGRyX2lv Y3RsOworCWFzc2VydChvZmZzZXQgPCBBVEFfQ1RMSU9TSVpFKTsKKworCWlmIChpbikKKwkJKmVh eCA9IGF0YV9hbHRzdGF0dXNfcmVhZChjaGFubmVsKTsKKwllbHNlCisJCWF0YV9jb250cm9sX3dy aXRlKGNoYW5uZWwsIGJ5dGVzLCAqZWF4KTsKKworCXJldHVybiAwOworfQorCgo= --b1_20774e3b9cd644f6a8fda9289c7404d7-- From owner-freebsd-virtualization@freebsd.org Mon Aug 28 07:53:07 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 54DC6E082FA for ; Mon, 28 Aug 2017 07:53:07 +0000 (UTC) (envelope-from aijazbaig1@gmail.com) Received: from mail-it0-x235.google.com (mail-it0-x235.google.com [IPv6:2607:f8b0:4001:c0b::235]) (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 2849B6D1FB for ; Mon, 28 Aug 2017 07:53:07 +0000 (UTC) (envelope-from aijazbaig1@gmail.com) Received: by mail-it0-x235.google.com with SMTP id o132so13643167itc.1 for ; Mon, 28 Aug 2017 00:53:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=jDHcml7+6M3eChrAWyyCE2PjM8JF+J2kEa2g9fvamfA=; b=opicGTBQqMImaBbRAPG1Qa+ABXyqoJt3z/um0OigB/l9V3n8/CDfdFry75NbvKuP5i UPD3p8/ZnOlXIrqDWdZDlhV1FziJNIWON/moPlfQ2ArlDWaf78qpmRJnBzTJXO8oPQfE dDp6ymFunpLxiOBKWFKJfGB6kXBy1u5I65B4lIOkD1J2qM9JaBIytXBiNMSJYCvOPg9r EgA+OJD7WUZKfqq+KgcIDH/JQRwTHQHzLCfEkrKTh+3I8ZWX4DsBq8ymWrid1ExXEqjW jyAQo0UsEoMzvrNK6GkouXd8kb6uhIPjsLiHJUzeJP1vwW4WfzyZ3utwo9fMXDZSwOwh XgNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=jDHcml7+6M3eChrAWyyCE2PjM8JF+J2kEa2g9fvamfA=; b=gcjyN8W2GDsNfMTlo4sRF5jNpIh7/ccCN4JFSabKDLmzurzNtzk32CINmeivZVjU7b b/T+jzqaY7fbFDBWXxCRfiKsFQTkCGKB/tB4KOEvdfW32l6JksJPE5sJKV5WPLJN/Fkj KBDJf0TcQvvP4Bja9Vt8z88WTJPcHtAn2P0OQEotQQ5PiVNZGZ0da0G+c8I44bs88V1L ebyzeOLNv8HchknW2q56IqrzLH5vyqmpHU4vMx8SWn7lBakX6tdVDnM1uz4+Kflf16QP TRmYqBNhYv0wbNu5nISpJNjno/4Xt5bkoZWdjTfv1QjVb6eWJzbRGUvnW26Y8Imli9yI Ipag== X-Gm-Message-State: AHYfb5j6eIyR560YO9sdGukag/zlXDo6zsqnehc578oSuVCnppv6w2CY zPZPKoRFk/e6B7GzFWl9wf7dM2ZmiIJA X-Received: by 10.36.79.9 with SMTP id c9mr5072657itb.104.1503906786061; Mon, 28 Aug 2017 00:53:06 -0700 (PDT) MIME-Version: 1.0 Received: by 10.2.22.66 with HTTP; Mon, 28 Aug 2017 00:53:05 -0700 (PDT) From: Aijaz Baig Date: Mon, 28 Aug 2017 13:23:05 +0530 Message-ID: Subject: Xeon E5 (PowerEdge 320) bailing out To: freebsd-virtualization@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.23 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: Mon, 28 Aug 2017 07:53:07 -0000 Trying to run Bhyve on a PowerEdge 320 system which DOES have a POPCNT instruction which shows support for VT-x support via EPT but I still get the this error there sh /usr/share/examples/bhyve/vmrun.sh -c 1 -m 2048M -t tap0 -d guest.img -i -I FreeBSD-10.3-RELEASE-amd64-bootonly.iso fbsd10 Launching virtual machine "fbsd10" ... vm_create: Device not configured dmesg: vmx_init: processor does not support VMX operation cat /var/run/dmesg.boot | grep -i popcnt Features2=0xffba2203 Features2=0xffba2203 Isn't this processor supposed to support Bhyve (Xeon E5)?? -- Best Regards, Aijaz Baig From owner-freebsd-virtualization@freebsd.org Mon Aug 28 16:51:54 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 A1A1EE10339 for ; Mon, 28 Aug 2017 16:51:54 +0000 (UTC) (envelope-from pete@nomadlogic.org) Received: from vps-mail.nomadlogic.org (unknown [IPv6:2607:f2f8:a098::2]) (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 80DCE80D07 for ; Mon, 28 Aug 2017 16:51:54 +0000 (UTC) (envelope-from pete@nomadlogic.org) Received: from [172.24.166.245] (nat-192-187-90-114.nat.tribpub.com [192.187.90.114]) by vps-mail.nomadlogic.org (OpenSMTPD) with ESMTPSA id d6f11964 TLS version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO for ; Mon, 28 Aug 2017 09:51:52 -0700 (PDT) Subject: Re: Xeon E5 (PowerEdge 320) bailing out To: freebsd-virtualization@freebsd.org References: From: Pete Wright Message-ID: <94b9b2e9-676e-e089-2f4c-fd10024ea0e8@nomadlogic.org> Date: Mon, 28 Aug 2017 09:51:51 -0700 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Content-Filtered-By: Mailman/MimeDel 2.1.23 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: Mon, 28 Aug 2017 16:51:54 -0000 On 08/28/2017 00:53, Aijaz Baig wrote: > Trying to run Bhyve on a PowerEdge 320 system which DOES have a POPCNT > instruction which shows support for VT-x support via EPT but I still get > the this error there > > sh /usr/share/examples/bhyve/vmrun.sh -c 1 -m 2048M -t tap0 -d guest.img -i > -I FreeBSD-10.3-RELEASE-amd64-bootonly.iso fbsd10 > Launching virtual machine "fbsd10" ... > vm_create: Device not configured > > dmesg: > vmx_init: processor does not support VMX operation > > cat /var/run/dmesg.boot | grep -i popcnt > Features2=0xffba2203 SSE4.1,SSE4.2,x2APIC,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND,HV> > Features2=0xffba2203 SSE4.1,SSE4.2,x2APIC,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND,HV> > > Isn't this processor supposed to support Bhyve (Xeon E5)?? > what product number is your E5?  According to the manual you need the following for Intel CPUs to run bhyve: " The easiest way to tell if a processor supports bhyveis to run |dmesg|or look in |/var/run/dmesg.boot|for...|EPT|and |UG|on the |VT-x|line for Intel® processors."  (I snipped the reference to POPCNT which seems to be an AMD only requirement." its possible that your E5 is old enough that it lacks the VT-x support that bhyve needs. -pete -- Pete Wright pete@nomadlogic.org @nomadlogicLA From owner-freebsd-virtualization@freebsd.org Mon Aug 28 17:44:36 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 56372E1103B for ; Mon, 28 Aug 2017 17:44:36 +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 111BD82602 for ; Mon, 28 Aug 2017 17:44:35 +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 A0C3E210EE4B for ; Tue, 29 Aug 2017 03:44:28 +1000 (AEST) Received: from localhost (iredmail.onthenet.com.au [127.0.0.1]) by iredmail.onthenet.com.au (Postfix) with ESMTP id 949CA281F20 for ; Tue, 29 Aug 2017 03:44:28 +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 2imEjXbtaSpb for ; Tue, 29 Aug 2017 03:44:28 +1000 (AEST) Received: from Peters-MacBook-Pro-2.local (96-82-80-65-static.hfc.comcastbusiness.net [96.82.80.65]) by iredmail.onthenet.com.au (Postfix) with ESMTPSA id AD8AE28095C; Tue, 29 Aug 2017 03:44:26 +1000 (AEST) Subject: Re: Xeon E5 (PowerEdge 320) bailing out To: Aijaz Baig References: From: Peter Grehan Cc: freebsd-virtualization@freebsd.org Message-ID: Date: Mon, 28 Aug 2017 10:44:22 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 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=mwgbnDbW7alINpy3vhoKyg==:17 a=IkcTkHD0fZMA:10 a=KeKAF7QvOSUA:10 a=djrnGS7jRAPqoPVUVuAA: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: Mon, 28 Aug 2017 17:44:36 -0000 Hi, > Trying to run Bhyve on a PowerEdge 320 system which DOES have a POPCNT > instruction which shows support for VT-x support via EPT but I still get > the this error there > > sh /usr/share/examples/bhyve/vmrun.sh -c 1 -m 2048M -t tap0 -d guest.img -i > -I FreeBSD-10.3-RELEASE-amd64-bootonly.iso fbsd10 > Launching virtual machine "fbsd10" ... > vm_create: Device not configured You may want to check your BIOS to make sure that VT-x is enabled (/var/log/messages may also have a message from the bhyve kernel module about this) > dmesg: > vmx_init: processor does not support VMX operation > > cat /var/run/dmesg.boot | grep -i popcnt > Features2=0xffba2203 SSE4.1,SSE4.2,x2APIC,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND,HV> > Features2=0xffba2203 SSE4.1,SSE4.2,x2APIC,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND,HV> > > Isn't this processor supposed to support Bhyve (Xeon E5)?? A quick bit of searching shows the R320 shipped with a Xeon E5-2400 (aka Ivy Bridge) which will run bhyve fine. later, Peter. From owner-freebsd-virtualization@freebsd.org Mon Aug 28 18:20:30 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 B94A4E1186D for ; Mon, 28 Aug 2017 18:20:30 +0000 (UTC) (envelope-from freebsd-rwg@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 9D25F8361C for ; Mon, 28 Aug 2017 18:20:30 +0000 (UTC) (envelope-from freebsd-rwg@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (localhost [127.0.0.1]) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3) with ESMTP id v7SIKR6k082860; Mon, 28 Aug 2017 11:20:27 -0700 (PDT) (envelope-from freebsd-rwg@pdx.rh.CN85.dnsmgr.net) Received: (from freebsd-rwg@localhost) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3/Submit) id v7SIKRW4082859; Mon, 28 Aug 2017 11:20:27 -0700 (PDT) (envelope-from freebsd-rwg) From: "Rodney W. Grimes" Message-Id: <201708281820.v7SIKRW4082859@pdx.rh.CN85.dnsmgr.net> Subject: Re: Xeon E5 (PowerEdge 320) bailing out In-Reply-To: <94b9b2e9-676e-e089-2f4c-fd10024ea0e8@nomadlogic.org> To: Pete Wright Date: Mon, 28 Aug 2017 11:20:27 -0700 (PDT) CC: freebsd-virtualization@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII 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: Mon, 28 Aug 2017 18:20:30 -0000 [ Charset UTF-8 unsupported, converting... ] > > > On 08/28/2017 00:53, Aijaz Baig wrote: > > Trying to run Bhyve on a PowerEdge 320 system which DOES have a POPCNT > > instruction which shows support for VT-x support via EPT but I still get > > the this error there > > > > sh /usr/share/examples/bhyve/vmrun.sh -c 1 -m 2048M -t tap0 -d guest.img -i > > -I FreeBSD-10.3-RELEASE-amd64-bootonly.iso fbsd10 > > Launching virtual machine "fbsd10" ... > > vm_create: Device not configured > > > > dmesg: > > vmx_init: processor does not support VMX operation > > > > cat /var/run/dmesg.boot | grep -i popcnt > > Features2=0xffba2203 > SSE4.1,SSE4.2,x2APIC,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND,HV> > > Features2=0xffba2203 > SSE4.1,SSE4.2,x2APIC,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND,HV> > > > > Isn't this processor supposed to support Bhyve (Xeon E5)?? > > > > what product number is your E5?? According to the manual you need the > following for Intel CPUs to run bhyve: > > " The easiest way to tell if a processor supports bhyveis to run > |dmesg|or look in |/var/run/dmesg.boot|for...|EPT|and |UG|on the > |VT-x|line for Intel? processors."? (I snipped the reference to POPCNT > which seems to be an AMD only requirement." And POPCNT is not all you need on AMD, there are AMD processors with POPCNT that do not have RIP, and RIP is needed for bhyve, the wiki should be updated to reflect that. > > its possible that your E5 is old enough that it lacks the VT-x support > that bhyve needs. I do not believe there are any XEON e5 class CPUs that lack VT-x, as the E5 family's first versions are Sandy Bridge-EN/EP core based chips. -- Rod Grimes rgrimes@freebsd.org From owner-freebsd-virtualization@freebsd.org Tue Aug 29 04:42: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 046FDE1EE9F for ; Tue, 29 Aug 2017 04:42:35 +0000 (UTC) (envelope-from aijazbaig1@gmail.com) Received: from mail-io0-x22b.google.com (mail-io0-x22b.google.com [IPv6:2607:f8b0:4001:c06::22b]) (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 CF39573010; Tue, 29 Aug 2017 04:42:34 +0000 (UTC) (envelope-from aijazbaig1@gmail.com) Received: by mail-io0-x22b.google.com with SMTP id g33so8325309ioj.3; Mon, 28 Aug 2017 21:42:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=uYN6/C+U+AaHuvpyhwrhbE+m3i0ZaP+txxeEYQttDvM=; b=te6fQJ+u6ToretWJlhMP2DPSsIDcbHauXNc1TqyWx1rMj3QMRUw5X7UBdBSqfCBFVl 6FnLNY6MHHBHw7YfD2D/guNniltunUJIHVN/p/C4BtIcqvUtCyv1FmTS6HQdCaPRyv7x aPDRmqm8luo/7ONs4wVxJy3jKPG6VOF+cRjyLDk6W8FPjybdpFSPODcs38s/S5CRS8P0 KcEM/7bm2tJZLBpyH9qAIvmj0ekSmXGU40snmrkSL10d+A5apWZy2MuTsP+DxuCjKsG7 gVdR+Y2OBL3NNFe/JQOCWRGsJYljn3bMoFs3TS9ucYaKMD45bf0wAS1JTx/YKkT18eES PKbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=uYN6/C+U+AaHuvpyhwrhbE+m3i0ZaP+txxeEYQttDvM=; b=AM8e6ZxFUPlq24aHgsqTfAZYRwlYC08szG6Vb/GT0U8bNp8KehQB1Xqcv5ZRJ9eVdF 80faM5Am2cZviK3m9vS1A9sCSAlk/ZcQzwVqAkBUgjIGSvDX7Wpsyo1BBLC9/ug+oStc +EcTPrny1q7b/p6ySK5aEut5cNsGlbxY+5lnUfKr63f5bfeNwyty+B1SP7FjcmH92jRm E/4bKIkSJ3b4AgVoSyLxn0G+dSa2NrnIBRbjE0FYnU47bnznuOcyWXniTi+UMM8nedwp FMO7fRNLT1Ln8SAo/V8QHHWh1SlAbi/EXpK2T7Zzh6NNXIB5oKdPjtn5s0vlUGy3voaI EdPA== X-Gm-Message-State: AHYfb5iQZZYczYJCoM6qXZjYXJiKhsORK7OjaJO2RifGWU8SZQpZhW2m 17sIEB3IMkW2uTy1418jdp6x+3m4EWJT X-Received: by 10.107.59.77 with SMTP id i74mr2712517ioa.75.1503981753948; Mon, 28 Aug 2017 21:42:33 -0700 (PDT) MIME-Version: 1.0 Received: by 10.2.22.66 with HTTP; Mon, 28 Aug 2017 21:42:33 -0700 (PDT) In-Reply-To: References: From: Aijaz Baig Date: Tue, 29 Aug 2017 10:12:33 +0530 Message-ID: Subject: Re: Xeon E5 (PowerEdge 320) bailing out To: Peter Grehan Cc: freebsd-virtualization@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.23 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, 29 Aug 2017 04:42:35 -0000 Yes that was it. Thanks for the tip Peter On Mon, Aug 28, 2017 at 11:14 PM, Peter Grehan wrote: > Hi, > > Trying to run Bhyve on a PowerEdge 320 system which DOES have a POPCNT >> instruction which shows support for VT-x support via EPT but I still get >> the this error there >> >> sh /usr/share/examples/bhyve/vmrun.sh -c 1 -m 2048M -t tap0 -d guest.img >> -i >> -I FreeBSD-10.3-RELEASE-amd64-bootonly.iso fbsd10 >> Launching virtual machine "fbsd10" ... >> vm_create: Device not configured >> > > You may want to check your BIOS to make sure that VT-x is enabled > (/var/log/messages may also have a message from the bhyve kernel module > about this) > > dmesg: >> vmx_init: processor does not support VMX operation >> >> cat /var/run/dmesg.boot | grep -i popcnt >> Features2=0xffba2203> SSE4.1,SSE4.2,x2APIC,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX, >> F16C,RDRAND,HV> >> Features2=0xffba2203> SSE4.1,SSE4.2,x2APIC,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX, >> F16C,RDRAND,HV> >> >> Isn't this processor supposed to support Bhyve (Xeon E5)?? >> > > A quick bit of searching shows the R320 shipped with a Xeon E5-2400 (aka > Ivy Bridge) which will run bhyve fine. > > later, > > Peter. > > -- Best Regards, Aijaz Baig From owner-freebsd-virtualization@freebsd.org Tue Aug 29 10:43:15 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 3306ADD6535 for ; Tue, 29 Aug 2017 10:43:15 +0000 (UTC) (envelope-from aijazbaig1@gmail.com) Received: from mail-io0-x229.google.com (mail-io0-x229.google.com [IPv6:2607:f8b0:4001:c06::229]) (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 F16D280A3F for ; Tue, 29 Aug 2017 10:43:14 +0000 (UTC) (envelope-from aijazbaig1@gmail.com) Received: by mail-io0-x229.google.com with SMTP id g33so12846124ioj.3 for ; Tue, 29 Aug 2017 03:43:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=bo/m62VDw+H65EqhjKKuhc2+L/FBj5iYvbgCmiUPK+I=; b=hL9uxsQ97+XBdQpi5fcO18lJOV4Zjbv8hY5pOAMZ87Fk81dEYrU0SzkrWJixJvYj8q 5FTz+RO3VKgxY4DFQBCWtPyiOYqiijMaK9qmZ6E+govlzEUgIQmFjCzWGskstTN1aI6S GJV17IYdXeT4lZjxVWRP64IrJ8CzbbIdGZaIL1Dov6lM+r4AP9DuC1ygeziKFXyNRtLu wj9zjc2ywzXRsGsgjGjT31Fp8mpiecG0eUzsT3GxHtkxwhZtZiX+LmHp0YHfxbGn5p4t uB9GyuE8DN8HOySNzjt1PCpOVe638XlTGeCCMokmKeyUgjrS14+ZE+RLLs/NB/Wx2OnP l2jA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=bo/m62VDw+H65EqhjKKuhc2+L/FBj5iYvbgCmiUPK+I=; b=ZpNmVnGJ1FngRWgccZnQ5W+RPNAlvxpvBAPZEQMc8M9Idd6MJ6soUwQPuuMb8oMMBJ rXXJtmSisUo4OOL5xti0W/eZBr09W3guPGEfumf/3QIlPIkmoNtafYCuaD8tWIcwkRIq Ot9kTtHRkQZ3QXlZ3oR5kuXZPgc39/TsXHO9E1K5In52mOTuZ51p2aYZIwQ3HMshtb70 DXHxBFYoSstzwRm42UX2Zmvcb66q8rzcywR7ZFvA559wFHYq8RJkJfov8dZZZeE/7tmJ 6RbhkDK3PduYGKml8k+8ILzklnB0FybmOOdOfSjHgBpI533blsduBwFXQ+3p+6TdvGkD rdNw== X-Gm-Message-State: AHYfb5gx3RzzzWUO5mzjY1rR5LvsgAvhOy4mMZ3wTP9n0GFnX4N7Kkh7 BCkRdXndAPtBj1uotQwCkUhJftjOCGfxI9w= X-Received: by 10.107.20.195 with SMTP id 186mr3846575iou.122.1504003394020; Tue, 29 Aug 2017 03:43:14 -0700 (PDT) MIME-Version: 1.0 Received: by 10.2.22.66 with HTTP; Tue, 29 Aug 2017 03:43:13 -0700 (PDT) From: Aijaz Baig Date: Tue, 29 Aug 2017 16:13:13 +0530 Message-ID: Subject: bhyve core dumping while compiling kernel in FreeBSD10.3 VM To: freebsd-virtualization@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.23 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, 29 Aug 2017 10:43:15 -0000 I have booted up a full FreeBSD 10.3 VM on bhyve and I am trying to compile the kernel with these options in order to engage in (k)gdb based debugging on this VM. My kern.conf is: include GENERIC ident AIJAZ-DEBUG options KDB options DDB options GDB options BREAK_TO_DEBUGGER device bvmdebug I am getting an error while building the kernel and bhyve is leaving a core dump. It has happened twice and the SHA sum for the core files is different (which or may not mean they are due to the very same reason). Nonetheless, where can I get more logs on what went wrong and what to do with this core file? Do you guys need it to probe more infrmation? How can one debug this core file? -- Best Regards, Aijaz Baig From owner-freebsd-virtualization@freebsd.org Wed Aug 30 02:59:19 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 C8035DECE18 for ; Wed, 30 Aug 2017 02:59:19 +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 B60E27FEFA for ; Wed, 30 Aug 2017 02:59:19 +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 v7U2xIDm015065 for ; Wed, 30 Aug 2017 02:59:19 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-virtualization@FreeBSD.org Subject: [Bug 213689] Allow bhyve to run from non-root user Date: Wed, 30 Aug 2017 02:59:18 +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: patch X-Bugzilla-Severity: Affects Some People X-Bugzilla-Who: emaste@freebsd.org X-Bugzilla-Status: Open X-Bugzilla-Resolution: X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-virtualization@FreeBSD.org X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_status 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: Wed, 30 Aug 2017 02:59:19 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D213689 Ed Maste changed: What |Removed |Added ---------------------------------------------------------------------------- Status|New |Open --=20 You are receiving this mail because: You are the assignee for the bug.= From owner-freebsd-virtualization@freebsd.org Wed Aug 30 06:10:41 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 813BDDF02CD for ; Wed, 30 Aug 2017 06:10:41 +0000 (UTC) (envelope-from aijazbaig1@gmail.com) Received: from mail-it0-x241.google.com (mail-it0-x241.google.com [IPv6:2607:f8b0:4001:c0b::241]) (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 4AEB484CB4 for ; Wed, 30 Aug 2017 06:10:41 +0000 (UTC) (envelope-from aijazbaig1@gmail.com) Received: by mail-it0-x241.google.com with SMTP id b76so435768itb.2 for ; Tue, 29 Aug 2017 23:10:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:content-transfer-encoding:message-id:date:subject:from :in-reply-to:references:to; bh=A/VRfQPeYo1o9UAEiJRlQJY8mgluMw8KZ/C07QXAz7o=; b=PW7ftIKXigLfxgeReTjh+W8GaH0v8t0hCe0L5IOUvkGU9PmZa9xWHXkZva6mP2vGFa k1gwi7oL8GWUQtd5WJJCrf5dbdASFwhPgJP59Flo4AalHh8NGBiD00nQ81rzknT7RJKC Hbuo5JSwoT5MqJXjsIRtMs8xebpiGNscQ0d7KubOCDpiGWK+yEvFQbgfHR5tGL2Bl2zy IVT6/ByN54x27J2FJ9Nyr2vLl3pQ/UDBT3+BDahcyAAO7vjxBv1RhlBHzrhxQB84FY9h hMCyRaOrTTTklsWJRgfVvoMkl8NuUqL8a98DVWoEtZkQOJasDTBmOCbnMjPbxh8sHKuY un4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:content-transfer-encoding :message-id:date:subject:from:in-reply-to:references:to; bh=A/VRfQPeYo1o9UAEiJRlQJY8mgluMw8KZ/C07QXAz7o=; b=LwsQGCNN+DMFWsmiV99iPIIUqQrt7YoCljRGQxQZhoZKZCoxccxjhLzqWt6wkl1H8U tVjscZruOPFU+OYfBRj4YVU/z2DRpEzwE3Io471q0qIyMbfyNzvOUSRl124SLQBDOfkG hg2ttY/N0VHAUZRWarvgOmEpaONwyQ3DRCZU/Zf9ePYht8FfGAuTjbmXfFqLWOvOUs2h tQgLd4mrYlPIkxnasYIvttAETehRJ41jghHVFZdKqprJv59nMjXNWTsKTZm01nJZLLkj WMZYcwaTscqvF4APDiF6lo6bXt3GqHQRRbUVEtSwkO1zIAlYPuJYhe7QvXZNVw+smlVd G/QA== X-Gm-Message-State: AHYfb5g1JcGSBXTwFCkms6r1A+Gt7yRvI9DAZeX1sNqXVs2a5LNbgjnB 5NAThr8ZbdzEc2j0vlo= X-Received: by 10.36.42.68 with SMTP id w65mr402250itw.17.1504073440414; Tue, 29 Aug 2017 23:10:40 -0700 (PDT) Received: from [127.0.0.1] ([42.109.203.222]) by smtp.gmail.com with ESMTPSA id d140sm384043itd.19.2017.08.29.23.10.37 for (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 29 Aug 2017 23:10:39 -0700 (PDT) X-Mailer: BlackBerry Email (10.3.3.2163) Message-ID: <20170830061037.5115961.82099.10853@gmail.com> Date: Wed, 30 Aug 2017 11:40:37 +0530 Subject: Re: bhyve core dumping while compiling kernel in FreeBSD10.3 VM From: Aijaz Baig In-Reply-To: References: To: freebsd-virtualization@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.23 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: Wed, 30 Aug 2017 06:10:41 -0000 From owner-freebsd-virtualization@freebsd.org Sat Sep 2 04:46:38 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 054EEE21064 for ; Sat, 2 Sep 2017 04:46:38 +0000 (UTC) (envelope-from freebsd@host852.com) Received: from mail.host852.com (mail.host852.com [103.251.112.57]) (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 7BF7B74130 for ; Sat, 2 Sep 2017 04:46:37 +0000 (UTC) (envelope-from freebsd@host852.com) Received: by mail.host852.com (Postfix, from userid 1005) id BD127927F6; Sat, 2 Sep 2017 12:46:32 +0800 (HKT) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on plugmusic.com X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00, HTML_MESSAGE autolearn=ham autolearn_force=no version=3.4.0 X-Spam-Report: * -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP * 0.0 HTML_MESSAGE BODY: HTML included in message * -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] Received: from dwmbp.localdomain (42-200-178-57.static.imsbiz.com [42.200.178.57]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: freebsd@host852.com) by mail.host852.com (Postfix) with ESMTPSA id 9BDC18E94E for ; Sat, 2 Sep 2017 12:46:23 +0800 (HKT) From: Dylan Williams Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Subject: bhyve VM drive size limit? Message-Id: Date: Sat, 2 Sep 2017 12:46:24 +0800 To: freebsd-virtualization@freebsd.org Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.23 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: Sat, 02 Sep 2017 04:46:38 -0000 Dear all, Is there a limit with respect to the size of the virtual drive I can = create for a VM using bhyve? Presumably not but I=E2=80=99m running into = problems with a larger drive. I am trying to create a 4T Ubuntu machine on a FreeBSD11.1 server using = iohyve. There=E2=80=99s plenty of drive space available so it=E2=80=99s = not a drive space issue. I am able to create a 40G machine without any = problems but exactly the same commands to create a 4000G machine results = in a server that won=E2=80=99t boot past Grub. Is this an iohyve issue = perhaps? Commands used that results in a working Ubuntu server: iohyve create ubu 40G iohyve set ubu loader=3Dgrub-bhyve os=3Ddebian ram=3D40G cpu=3D10 iohyve install ubu ubuntu-16.04.3-server-amd64.iso = Commands used that results in a broken Ubuntu server: iohyve create ubu 4000G iohyve set ubu loader=3Dgrub-bhyve os=3Ddebian ram=3D40G cpu=3D10 iohyve install ubu ubuntu-16.04.3-server-amd64.iso = The screen I get in the console when I boot (iohyve start ubu) the 4T = machine is: GNU GRUB version 2.00 Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists possible device or file completions. grub> Does anyone have any ideas? I=E2=80=99ve been at this for hours trying = different configurations. LVM is not selected when installing either of = the above machines as that seems to cause more problems. Many thanks, Dylan.= From owner-freebsd-virtualization@freebsd.org Sat Sep 2 05:39:16 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 5A98DE0199D for ; Sat, 2 Sep 2017 05:39:16 +0000 (UTC) (envelope-from jtubnor@gmail.com) Received: from mail-yw0-x22d.google.com (mail-yw0-x22d.google.com [IPv6:2607:f8b0:4002: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 14A8D75684 for ; Sat, 2 Sep 2017 05:39:16 +0000 (UTC) (envelope-from jtubnor@gmail.com) Received: by mail-yw0-x22d.google.com with SMTP id c85so2955934ywa.0 for ; Fri, 01 Sep 2017 22:39:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=/tUhXJhIRCxImJq0N6nVhEu/dH3iHPZvc+2OiR5heCI=; b=nfAUau/+tVUnTfN5cUiLoiACv9jP62EOVKPvxeCFufsR7sSf1C7mMyYhhskwyPbrKd RGLntiGW7+Om4z0q0NjnCYbpWTTywAyDB0ToCSaker37pz6HLSEQq2DXfrqm+tebAtw/ LSguRohvhPPPMeAruLymkTfmtobGGAMlOk5obuIsl5+f0kaEGHI2LSeNGWll0i3IAve/ e+J65FJXl2TuSF6v8No+T+vx1vCwnH5NgI6BOIBeYVFnHPqXL7JBCGOaQaKivxjgukmt NJH5kmvP+/6fjE3nKuwmSfQRRYXVzpzAOKD2yGZA07v5KS0mmG3DHChGVw+gZlZlj+P1 JYbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=/tUhXJhIRCxImJq0N6nVhEu/dH3iHPZvc+2OiR5heCI=; b=cmA5dVqzx8KamTRBdau2uZ3FIXTW0Q+tC4vbfawVf7KzqpMegw79S0zRhSBfIqcpxd GgJRte97qQOJqaVH9uTOPINzOFVQHq0V97Ama8S4JgI1nfTj7gnvRAAQ0NAiWybISe34 HE+i7ibOv1qbHeXEX5i7tzaSqoFJ19hSzxwPSlQuXqIFXmEZ65nk/0WzJcDf0a5CXa9n Pq8CX1q5pfWpqlwjX7Bq4Gu8CcljFcfc48RCvxWeMbsdbU1NRoM6Y3ogBjwW4KFK+u2E E3f9IrX4m8YSpr6jcBhm4iuex4MOvjHc0tfr+MY2qoaVXzBbVA2XmabiAjlhlLsx9ULG BPBg== X-Gm-Message-State: AHPjjUhxfZhIdR9uXLWcmJ569Nc3MBShrQUOM9MIA2h38q2k3HyLJIFb jqq40b1iaxI+6eXPL9HYBD+3HaE7XPRL X-Google-Smtp-Source: ADKCNb6eprdabT94MMwZCgTPFGtKH425gfIZxPt5yf9MvCuVyDlreocGGyh2+jSBS0e/3obTlebt0/evFD+dNjSgkwo= X-Received: by 10.129.175.87 with SMTP id x23mr3608197ywj.224.1504330755270; Fri, 01 Sep 2017 22:39:15 -0700 (PDT) MIME-Version: 1.0 Received: by 10.37.198.10 with HTTP; Fri, 1 Sep 2017 22:39:14 -0700 (PDT) Received: by 10.37.198.10 with HTTP; Fri, 1 Sep 2017 22:39:14 -0700 (PDT) In-Reply-To: References: From: Jason Tubnor Date: Sat, 2 Sep 2017 15:39:14 +1000 Message-ID: Subject: Re: bhyve VM drive size limit? To: Dylan Williams Cc: freebsd-virtualization@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.23 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: Sat, 02 Sep 2017 05:39:16 -0000 Try chyves and use UEFI booting. I think you might have hit a grub limit. For chyves, it is a fork of iohyve so it will be familiar for you. Follow the documentation for a Windows UEFI install. You need the UEFI blobs as well and import them into chyves, see bhyve-firmware in packages. Make sure you adjust the zvol block size in the default config before creating your guest or you will wonder where your storage starts to disappear to. Cheers, Jason On 2 Sep 2017 2:46 p.m., "Dylan Williams" wrote: Dear all, Is there a limit with respect to the size of the virtual drive I can create for a VM using bhyve? Presumably not but I=E2=80=99m running into problems = with a larger drive. I am trying to create a 4T Ubuntu machine on a FreeBSD11.1 server using iohyve. There=E2=80=99s plenty of drive space available so it=E2=80=99s not= a drive space issue. I am able to create a 40G machine without any problems but exactly the same commands to create a 4000G machine results in a server that won=E2= =80=99t boot past Grub. Is this an iohyve issue perhaps? Commands used that results in a working Ubuntu server: iohyve create ubu 40G iohyve set ubu loader=3Dgrub-bhyve os=3Ddebian ram=3D40G cpu=3D10 iohyve install ubu ubuntu-16.04.3-server-amd64.iso < ftp://ftp.cuhk.edu.hk/pub/Linux/ubuntu-releases/16.04.3/ ubuntu-16.04.3-server-amd64.iso> Commands used that results in a broken Ubuntu server: iohyve create ubu 4000G iohyve set ubu loader=3Dgrub-bhyve os=3Ddebian ram=3D40G cpu=3D10 iohyve install ubu ubuntu-16.04.3-server-amd64.iso < ftp://ftp.cuhk.edu.hk/pub/Linux/ubuntu-releases/16.04.3/ ubuntu-16.04.3-server-amd64.iso> The screen I get in the console when I boot (iohyve start ubu) the 4T machine is: GNU GRUB version 2.00 Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists possible device or file completions. grub> Does anyone have any ideas? I=E2=80=99ve been at this for hours trying diff= erent configurations. LVM is not selected when installing either of the above machines as that seems to cause more problems. Many thanks, Dylan. _______________________________________________ freebsd-virtualization@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-virtualization To unsubscribe, send any mail to "freebsd-virtualization- unsubscribe@freebsd.org" From owner-freebsd-virtualization@freebsd.org Sat Sep 2 15:02:04 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 82AB1E17771 for ; Sat, 2 Sep 2017 15:02:04 +0000 (UTC) (envelope-from mail@osfux.nl) Received: from vm1982.vellance.net (vm1982.vellance.net [79.99.187.212]) (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 19611659A0 for ; Sat, 2 Sep 2017 15:02:03 +0000 (UTC) (envelope-from mail@osfux.nl) Received: from vm1982.vellance.net (localhost [127.0.0.1]) by vm1982.vellance.net (Postfix) with ESMTP id 2B81D201A1 for ; Sat, 2 Sep 2017 16:53:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=osfux.nl; s=default; t=1504363989; bh=qJmvAp7XNNJEM2ISrdrOG+JCT+TEBllX53lZW717sig=; h=Subject:To:References:From:Date:In-Reply-To; b=Qn8/5qlszSNJ3d2WIEwZB8Ybbnu5t26XwcKwUJ+akKBIb2VKZ8rqqEAT795Bx0m3r 6Pu+5z8mNI81rquYUu5Qja7yJSQlFydS5/L3TssdbpyxfNTi9/E8cU09+CfmZQk4c8 A5SxIpnOCsL0a6/knTPPZCbHpZaus09GvLNp5oHWyf6zeNt8De8aaXwPBpyfdv8He0 p2LtypL7y1gx2EtGYSjlyPDCcQfA2nDmzqM/K66tmgmDB55UEz58HHa9dKRuz5LfFl hCMgiieS93jNims9S8c6jYLT8jE/jbzl/xiN/C7nfOS5mTWw6XHpHk7d9D0DAqfF3y ADUQ3hTs4atYeBMlE36ogSxylRD5iK7KSXnYkijFEWIOxF7qttXyjbE56xQQ1n6jXQ vnJLg3WxEUeqX0YJ7Y0HSp5R6o1W0yGKGvY44toqDUHC4/W15ZU+HowFewS9z00Li1 E71p7H3R0fz23Cq3OuplxGpLhZdYqJNdG8l2OBZ/0TAaOowHkFIvBpcFI33KcxeV9i Dzpk7IWpZiUJjEyFRivuNm8SbbLIxboP04tWlKWV1HyWVWAWWHGD1I6ZNbtTg1WsQ5 1Q/fURB394oBRYVuL5iNgUhsMxCOeXwJX9ViFLxeRR3dlsbYMdXQnywWz9n8IWY02e RGFmbVc2pWyjp7DhdFQlB3/I= Received: from vm1982.vellance.net (localhost [127.0.0.1]) by vm1982.vellance.net (Postfix) with ESMTP id E139920126 for ; Sat, 2 Sep 2017 16:52:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=osfux.nl; s=default; t=1504363986; bh=qJmvAp7XNNJEM2ISrdrOG+JCT+TEBllX53lZW717sig=; h=Subject:To:References:From:Date:In-Reply-To; b=cIF5mKO+hVDjE4FLXbNv8mQes8WtmIgx6BY1jd60Arr9ZvURvyHN/UGMb0SvDAy1m /VkvkVLtdTiZRrFCbdo2MRzqMUGvt046vTGFpNQgwV8bLskHM3EZ8iWpYLoEtmlWtf r0mmtr1d4gRW4gWEIGI5J675nKvYXajMRXTiWTAdTAAmcpBvt/R66KM/MJn3lDLxAT djCTu3kZUr08rFpJDpxwCCeEy59D+KD7TB5+VtkDr+8a7whTlId92gRGGgzJQEWiJ6 b98jDFstmoTBbgwlQ/7vhKLaVcatBC2o/9gSEgfn7H+3Fw+IuZs1oPzThhquN0I4qJ Ff7IxtwkzvQv5JQgJkp1qdf+63bYS4WrO/kpA5Wrn2If6sXlS5ZBU2DVBM4ScvV7wF 3BZBD4hWwFemrh7/Pwq5MQugMh58wnewy0xP0u+9WBl8cEe2UrQYgzrsaVFJCYz0he jtXkqTF6/bNktBdTaK0UNUY+YD7ML3DVps52kG91SLcFOHrI8LJ4ScCkg5eMbs54DS aUxtUhD5SLurUz7usNJtnR6o9HoGNCelMj6wL+Sy9cBeukoMazjsIVOBf32Qdo+gho N0DGyx5DKEdBxKOiJ1rc//R+/OOi+Rv7PARiylmSZP885vFYf+eTX4ReWiAtxHwJUp wYZOfsHhvAoQMxW0ta3hu+yM= X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on vm1982.vellance.net X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.1 Received: from rubens-MacBook-Air.local (ip4da7bddc.direct-adsl.nl [77.167.189.220]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by vm1982.vellance.net (Postfix) with ESMTPSA for ; Sat, 2 Sep 2017 16:52:50 +0200 (CEST) Subject: Re: bhyve VM drive size limit? To: freebsd-virtualization@freebsd.org References: From: Ruben Message-ID: <147e2841-bb29-1fe6-11cc-917f22bf8e87@osfux.nl> Date: Sat, 2 Sep 2017 16:52:50 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Language: en-US X-Virus-Scanned: ClamAV using ClamSMTP 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: Sat, 02 Sep 2017 15:02:04 -0000 Hi Jason, > Make sure > you adjust the zvol block size in the default config before creating your > guest or you will wonder where your storage starts to disappear to. > > Cheers, > > Jason Perhaps slightly off-topic, but might you have any recommendations regarding those blocksizes? I'm not really that well versed in blocksizes / filesystems and am often wondering where my 5TB zvol (bhyves into an ext4 volume for an ubuntu guest) exactly disappears into :P Regards, Ruben > On 2 Sep 2017 2:46 p.m., "Dylan Williams" wrote: > > Dear all, > > Is there a limit with respect to the size of the virtual drive I can create > for a VM using bhyve? Presumably not but I’m running into problems with a > larger drive. > > I am trying to create a 4T Ubuntu machine on a FreeBSD11.1 server using > iohyve. There’s plenty of drive space available so it’s not a drive space > issue. I am able to create a 40G machine without any problems but exactly > the same commands to create a 4000G machine results in a server that won’t > boot past Grub. Is this an iohyve issue perhaps? > > Commands used that results in a working Ubuntu server: > > iohyve create ubu 40G > iohyve set ubu loader=grub-bhyve os=debian ram=40G cpu=10 > iohyve install ubu ubuntu-16.04.3-server-amd64.iso < > ftp://ftp.cuhk.edu.hk/pub/Linux/ubuntu-releases/16.04.3/ > ubuntu-16.04.3-server-amd64.iso> > > Commands used that results in a broken Ubuntu server: > > iohyve create ubu 4000G > iohyve set ubu loader=grub-bhyve os=debian ram=40G cpu=10 > iohyve install ubu ubuntu-16.04.3-server-amd64.iso < > ftp://ftp.cuhk.edu.hk/pub/Linux/ubuntu-releases/16.04.3/ > ubuntu-16.04.3-server-amd64.iso> > > The screen I get in the console when I boot (iohyve start ubu) the 4T > machine is: > > GNU GRUB version 2.00 > > Minimal BASH-like line editing is supported. For the first word, TAB > lists possible command completions. Anywhere else TAB lists possible > device or file completions. > > > grub> > > Does anyone have any ideas? I’ve been at this for hours trying different > configurations. LVM is not selected when installing either of the above > machines as that seems to cause more problems. > > Many thanks, > Dylan. > _______________________________________________ > freebsd-virtualization@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-virtualization > To unsubscribe, send any mail to "freebsd-virtualization- > unsubscribe@freebsd.org" > _______________________________________________ > freebsd-virtualization@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-virtualization > To unsubscribe, send any mail to "freebsd-virtualization-unsubscribe@freebsd.org"