From owner-freebsd-virtualization@FreeBSD.ORG Thu May 15 15:56:10 2014 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3E300870; Thu, 15 May 2014 15:56:10 +0000 (UTC) Received: from mail-we0-x230.google.com (mail-we0-x230.google.com [IPv6:2a00:1450:400c:c03::230]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 41EA5263A; Thu, 15 May 2014 15:56:09 +0000 (UTC) Received: by mail-we0-f176.google.com with SMTP id q59so1268613wes.21 for ; Thu, 15 May 2014 08:56:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=6XQJDrQwJiodaRswZKFrcEvzOcOmxGczj5O/XgHd2i8=; b=f2bAtr7b6ip+qpaUcIPZfJRRjQaqB7smy8wMjEtuypUuyHQev+Z5USkrR9uy9Ct4mN 1vALIjVHO6CkNetr0SBsmgJqfVpOArDpWsu6PnHfQVNJdU/8EHn+OdudizE460dX9GAc 0wnpW+4T30RfS8FaVv5edmLMO2uUuQzL7zl07SAh6rRZ8SxVcFxHv0VyaCyIcj2f1lVy +F1UrnWe9txGFrqJo7hiDiR4W07leuhiqwYYihyCBHXy3VAiqXqZQRl+Aj4Gwf3TGP6h h1cQESv3rtNehnXvhyg7aJ6fFnhkwrAyhHf/W5kuYSDJ1gRMiaR6JV4E25PF5gzsE4kg rTBQ== MIME-Version: 1.0 X-Received: by 10.194.61.193 with SMTP id s1mr9416631wjr.36.1400169367290; Thu, 15 May 2014 08:56:07 -0700 (PDT) Received: by 10.194.135.49 with HTTP; Thu, 15 May 2014 08:56:07 -0700 (PDT) In-Reply-To: <53748481.8010108@FreeBSD.org> References: <53748481.8010108@FreeBSD.org> Date: Thu, 15 May 2014 08:56:07 -0700 Message-ID: Subject: Re: bhyve: svm (amd-v) update From: Anish To: Andriy Gapon Content-Type: multipart/mixed; boundary=047d7b86cdc2c5d01904f97255e5 X-Content-Filtered-By: Mailman/MimeDel 2.1.18 Cc: FreeBSD virtualization , Neel Natu X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 May 2014 15:56:10 -0000 --047d7b86cdc2c5d01904f97255e5 Content-Type: text/plain; charset=UTF-8 Hi Andriy, Thanks for your interest in SVM port of bhyve. I do have patch to sync it to http://svnweb.freebsd.org/base?view=revision&revision=263780(3/26). If patches looks good to you, we can submit it. I have been testing it on Phenom box which lacks some of newer SVM features. Thanks and regards, Anish On Thu, May 15, 2014 at 2:10 AM, Andriy Gapon wrote: > > It seems that the bhyve_svm branch is a bit behind the latest interface > changes > in head. Is anyone working on sync-ing up the branch with the head? > > Some examples: > - change of init method in vmm_ops > - addition of resume, vlapic_init and vlapic_cleanup methods to vmm_ops > - replacement of lapic_pending_intr and lapic_intr_accepted with > vlapic_pending_intr and vlapic_intr_accepted > - changes in struct vm_exit > - VMEXIT_EPT_FAULT ==> VMEXIT_NESTED_FAULT > > Thanks! > -- > Andriy Gapon > > _______________________________________________ > freebsd-virtualization@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-virtualization > To unsubscribe, send any mail to " > freebsd-virtualization-unsubscribe@freebsd.org" > --047d7b86cdc2c5d01904f97255e5 Content-Type: application/octet-stream; name="bhyve_svm_HEAD_r263780.patch" Content-Disposition: attachment; filename="bhyve_svm_HEAD_r263780.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hv880xux0 ZGlmZiAtYXVyUCAteCAnKi5vcmlnJyAteCAuc3ZuIC9tbnQvc3luY19uZXh0Mi9iaHl2ZV9zdm1f SEVBRF9yMjYzNzgwX2Jhc2UvL3N5cy9hbWQ2NC92bW0vYW1kL25wdC5jIC9tbnQvc3luY19uZXh0 Mi9iaHl2ZV9zdm1fSEVBRF9yMjYzNzgwX1dJUC9zeXMvYW1kNjQvdm1tL2FtZC9ucHQuYwotLS0g L21udC9zeW5jX25leHQyL2JoeXZlX3N2bV9IRUFEX3IyNjM3ODBfYmFzZS8vc3lzL2FtZDY0L3Zt bS9hbWQvbnB0LmMJMjAxNC0wNC0xMSAxMzo1MTo0NS4wMDAwMDAwMDAgKzAwMDAKKysrIC9tbnQv c3luY19uZXh0Mi9iaHl2ZV9zdm1fSEVBRF9yMjYzNzgwX1dJUC9zeXMvYW1kNjQvdm1tL2FtZC9u cHQuYwkyMDE0LTA0LTA2IDA0OjM0OjE3LjAwMDAwMDAwMCArMDAwMApAQCAtNTIsMTQgKzUyLDE3 IEBACiBzdGF0aWMgaW50IG5wdF9mbGFnczsKIFNZU0NUTF9JTlQoX2h3X3ZtbV9ucHQsIE9JRF9B VVRPLCBwbWFwX2ZsYWdzLCBDVExGTEFHX1JELAogCSZucHRfZmxhZ3MsIDAsIE5VTEwpOworCisj ZGVmaW5lIE5QVF9JUElNQVNLCTB4RkYKIC8qCiAgKiBBTUQgbmVzdGVkIHBhZ2UgdGFibGUgaW5p dC4KICAqLwogaW50Ci1zdm1fbnB0X2luaXQodm9pZCkKK3N2bV9ucHRfaW5pdChpbnQgaXBpbnVt KQogewogCWludCBlbmFibGVfc3VwZXJwYWdlID0gMTsKIAorCW5wdF9mbGFncyA9IGlwaW51bSAm IE5QVF9JUElNQVNLOwogCVRVTkFCTEVfSU5UX0ZFVENIKCJody52bW0ubnB0LmVuYWJsZV9zdXBl cnBhZ2UiLCAmZW5hYmxlX3N1cGVycGFnZSk7CiAJaWYgKGVuYWJsZV9zdXBlcnBhZ2UpCiAJCW5w dF9mbGFncyB8PSBQTUFQX1BERV9TVVBFUlBBR0U7IApkaWZmIC1hdXJQIC14ICcqLm9yaWcnIC14 IC5zdm4gL21udC9zeW5jX25leHQyL2JoeXZlX3N2bV9IRUFEX3IyNjM3ODBfYmFzZS8vc3lzL2Ft ZDY0L3ZtbS9hbWQvbnB0LmggL21udC9zeW5jX25leHQyL2JoeXZlX3N2bV9IRUFEX3IyNjM3ODBf V0lQL3N5cy9hbWQ2NC92bW0vYW1kL25wdC5oCi0tLSAvbW50L3N5bmNfbmV4dDIvYmh5dmVfc3Zt X0hFQURfcjI2Mzc4MF9iYXNlLy9zeXMvYW1kNjQvdm1tL2FtZC9ucHQuaAkyMDE0LTA0LTExIDEz OjUxOjQ1LjAwMDAwMDAwMCArMDAwMAorKysgL21udC9zeW5jX25leHQyL2JoeXZlX3N2bV9IRUFE X3IyNjM3ODBfV0lQL3N5cy9hbWQ2NC92bW0vYW1kL25wdC5oCTIwMTQtMDQtMDYgMDQ6MzQ6MTcu MDAwMDAwMDAwICswMDAwCkBAIC0zMSw3ICszMSw3IEBACiAKIHN0cnVjdCBzdm1fc29mdGM7CiAK LWludCAJc3ZtX25wdF9pbml0KHZvaWQpOworaW50IAlzdm1fbnB0X2luaXQoaW50IGlwaW51bSk7 CiBzdHJ1Y3QJdm1zcGFjZSAqc3ZtX25wdF9hbGxvYyh2bV9vZmZzZXRfdCBtaW4sIHZtX29mZnNl dF90IG1heCk7CiB2b2lkCXN2bV9ucHRfZnJlZShzdHJ1Y3Qgdm1zcGFjZSAqdm1zcGFjZSk7CiAj ZW5kaWYgLyogX1NWTV9OUFRfSF8gKi8KZGlmZiAtYXVyUCAteCAnKi5vcmlnJyAteCAuc3ZuIC9t bnQvc3luY19uZXh0Mi9iaHl2ZV9zdm1fSEVBRF9yMjYzNzgwX2Jhc2UvL3N5cy9hbWQ2NC92bW0v YW1kL3N2bS5jIC9tbnQvc3luY19uZXh0Mi9iaHl2ZV9zdm1fSEVBRF9yMjYzNzgwX1dJUC9zeXMv YW1kNjQvdm1tL2FtZC9zdm0uYwotLS0gL21udC9zeW5jX25leHQyL2JoeXZlX3N2bV9IRUFEX3Iy NjM3ODBfYmFzZS8vc3lzL2FtZDY0L3ZtbS9hbWQvc3ZtLmMJMjAxNC0wNC0xMSAxMzo1MTo0NS4w MDAwMDAwMDAgKzAwMDAKKysrIC9tbnQvc3luY19uZXh0Mi9iaHl2ZV9zdm1fSEVBRF9yMjYzNzgw X1dJUC9zeXMvYW1kNjQvdm1tL2FtZC9zdm0uYwkyMDE0LTA0LTEyIDExOjUxOjUzLjAwMDAwMDAw MCArMDAwMApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgPG1hY2hpbmUvc3BlY2lhbHJlZy5o PgogI2luY2x1ZGUgPG1hY2hpbmUvc2VnbWVudHMuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3ZtbS5o PgorI2luY2x1ZGUgPG1hY2hpbmUvdm1tX2Rldi5oPgogCiAjaW5jbHVkZSA8eDg2L2FwaWNyZWcu aD4KIApAQCAtNTMsNiArNTQsOCBAQAogI2luY2x1ZGUgInZtbV9tc3IuaCIKICNpbmNsdWRlICJ2 bW1fc3RhdC5oIgogI2luY2x1ZGUgInZtbV9rdHIuaCIKKyNpbmNsdWRlICJ2bGFwaWMuaCIKKyNp bmNsdWRlICJ2bGFwaWNfcHJpdi5oIgogCiAjaW5jbHVkZSAieDg2LmgiCiAjaW5jbHVkZSAidm1j Yi5oIgpAQCAtNzUsNiArNzgsNyBAQAogI2RlZmluZSBBTURfQ1BVSURfU1ZNX1BBVVNFX0ZUSAkJ QklUKDEyKSAvKiBQYXVzZSBmaWx0ZXIgdGhyZXNob2xkICovCiAKIE1BTExPQ19ERUZJTkUoTV9T Vk0sICJzdm0iLCAic3ZtIik7CitNQUxMT0NfREVGSU5FKE1fU1ZNX1ZMQVBJQywgInN2bS12bGFw aWMiLCAic3ZtLXZsYXBpYyIpOwogCiAvKiBQZXItQ1BVIGNvbnRleHQgYXJlYS4gKi8KIGV4dGVy biBzdHJ1Y3QgcGNwdSBfX3BjcHVbXTsKQEAgLTI0OSw3ICsyNTMsNyBAQAogICogRW5hYmxlIFNW TSBvbiBDUFUgYW5kIGluaXRpYWxpemUgbmVzdGVkIHBhZ2UgdGFibGUgaC93LgogICovCiBzdGF0 aWMgaW50Ci1zdm1faW5pdCh2b2lkKQorc3ZtX2luaXQoaW50IGlwaW51bSkKIHsKIAlpbnQgZXJy OwogCkBAIC0yNTgsNyArMjYyLDcgQEAKIAkJcmV0dXJuIChlcnIpOwogCQogCi0Jc3ZtX25wdF9p bml0KCk7CisJc3ZtX25wdF9pbml0KGlwaW51bSk7CiAJCiAJLyogU3RhcnQgU1ZNIG9uIGFsbCBD UFVzICovCiAJc21wX3JlbmRlenZvdXMoTlVMTCwgc3ZtX2VuYWJsZSwgTlVMTCwgTlVMTCk7CkBA IC0yNjYsNiArMjcwLDExIEBACiAJcmV0dXJuICgwKTsKIH0KIAorc3RhdGljIHZvaWQKK3N2bV9y ZXN0b3JlKHZvaWQpCit7CisJc3ZtX2VuYWJsZShOVUxMKTsKK30JCQogLyoKICAqIEdldCBpbmRl eCBhbmQgYml0IHBvc2l0aW9uIGZvciBhIE1TUiBpbiBNU1IgcGVybWlzc2lvbgogICogYml0bWFw LiBUd28gYml0cyBhcmUgdXNlZCBmb3IgZWFjaCBNU1IsIGxvd2VyIGJpdCBpcwpAQCAtMzY1LDcg KzM3NCw2IEBACiAJCiAJcmV0dXJuICgwKTsKIH0KLQkJCiAvKgogICogSW5pdGlhbGlzZSBhIHZp cnR1YWwgbWFjaGluZS4KICAqLwpAQCAtNTE5LDYgKzUyNywyOSBAQAogCX0KIH0KIAorc3RhdGlj IGVudW0gdmllX2NwdV9tb2RlCitzdm1fdmNwdV9tb2RlKHVpbnQ2NF90IGVmZXIpCit7CisKKwlp ZiAoZWZlciAmIEVGRVJfTE1BKQorCQlyZXR1cm4gKENQVV9NT0RFXzY0QklUKTsKKwllbHNlCisJ CXJldHVybiAoQ1BVX01PREVfQ09NUEFUSUJJTElUWSk7Cit9CisKK3N0YXRpYyBlbnVtIHZpZV9w YWdpbmdfbW9kZQorc3ZtX3BhZ2luZ19tb2RlKHVpbnQ2NF90IGNyMCwgdWludDY0X3QgY3I0LCB1 aW50NjRfdCBlZmVyKQoreworCisJaWYgKChjcjAgJiBDUjBfUEcpID09IDApCisJCXJldHVybiAo UEFHSU5HX01PREVfRkxBVCk7CisJaWYgKChjcjQgJiBDUjRfUEFFKSA9PSAwKQorCQlyZXR1cm4g KFBBR0lOR19NT0RFXzMyKTsKKwlpZiAoZWZlciAmIEVGRVJfTE1FKQorCQlyZXR1cm4gKFBBR0lO R19NT0RFXzY0KTsKKwllbHNlCisJCXJldHVybiAoUEFHSU5HX01PREVfUEFFKTsKK30KIC8qCiAg KiBEZXRlcm1pbmUgdGhlIGNhdXNlIG9mIHZpcnR1YWwgY3B1IGV4aXQgYW5kIGhhbmRsZSBWTUVY SVQuCiAgKiBSZXR1cm46IGZhbHNlIC0gQnJlYWsgdmNwdSBleGVjdXRpb24gbG9vcCBhbmQgaGFu ZGxlIHZtZXhpdApAQCAtNTQ3LDcgKzU3OCw3IEBACiAJdXBkYXRlX3JpcCA9IHRydWU7CiAJbG9v cCA9IHRydWU7CiAJdm1leGl0LT5leGl0Y29kZSA9IFZNX0VYSVRDT0RFX1ZNWDsKLQl2bWV4aXQt PnUudm14LmVycm9yID0gMDsKKwl2bWV4aXQtPnUudm14LnN0YXR1cyA9IDA7CiAKIAlzd2l0Y2gg KGNvZGUpIHsKIAkJY2FzZQlWTUNCX0VYSVRfTUM6IC8qIE1hY2hpbmUgQ2hlY2suICovCkBAIC02 NjcsNyArNjk4LDYgQEAKIAkJY2FzZSBWTUNCX0VYSVRfTlBGOgogCQkJbG9vcCA9IGZhbHNlOwog CQkJdXBkYXRlX3JpcCA9IGZhbHNlOwotCQkJdm1tX3N0YXRfaW5jcihzdm1fc2MtPnZtLCB2Y3B1 LCBWTUVYSVRfRVBUX0ZBVUxULCAxKTsKIAogICAgICAgICAJCWlmIChpbmZvMSAmIFZNQ0JfTlBG X0lORk8xX1JTVikgewogIAkJCQlWQ1BVX0NUUjIoc3ZtX3NjLT52bSwgdmNwdSwgIlNWTV9FUlI6 TlBUIgpAQCAtNjg2LDE1ICs3MTYsMjQgQEAKIAkJCQl2bWV4aXQtPnUucGFnaW5nLmdwYSA9IGlu Zm8yOwogCQkJCXZtZXhpdC0+dS5wYWdpbmcuZmF1bHRfdHlwZSA9IAogCQkJCQlzdm1fbnBmX3Bh Z2luZyhpbmZvMSk7CisJCQkJdm1tX3N0YXRfaW5jcihzdm1fc2MtPnZtLCB2Y3B1LCAKKwkJCQkJ Vk1FWElUX05FU1RFRF9GQVVMVCwgMSk7CiAJCQl9IGVsc2UgaWYgKHN2bV9ucGZfZW11bF9mYXVs dChpbmZvMSkpIHsKLSAJCQkJVkNQVV9DVFIzKHN2bV9zYy0+dm0sIHZjcHUsICJTVk06TlBGLWlu c3RfZW11bCwiCisgCQkJCVZDUFVfQ1RSMyhzdm1fc2MtPnZtLCB2Y3B1LCAiU1ZNOk5QRiBpbnN0 X2VtdWwsIgogCQkJCQkiUklQOjB4JWx4IElORk8xOjB4JWx4IElORk8yOjB4JWx4IC5cbiIsCiAJ CQkJCXN0YXRlLT5yaXAsIGluZm8xLCBpbmZvMik7CiAJCQkJdm1leGl0LT5leGl0Y29kZSA9IFZN X0VYSVRDT0RFX0lOU1RfRU1VTDsKIAkJCQl2bWV4aXQtPnUuaW5zdF9lbXVsLmdwYSA9IGluZm8y OwogCQkJCXZtZXhpdC0+dS5pbnN0X2VtdWwuZ2xhID0gVklFX0lOVkFMSURfR0xBOwogCQkJCXZt ZXhpdC0+dS5pbnN0X2VtdWwuY3IzID0gc3RhdGUtPmNyMzsKKwkJCQl2bWV4aXQtPnUuaW5zdF9l bXVsLmNwdV9tb2RlID0gCisJCQkJCXN2bV92Y3B1X21vZGUoc3RhdGUtPmVmZXIpOworCQkJCXZt ZXhpdC0+dS5pbnN0X2VtdWwucGFnaW5nX21vZGUgPQorCQkJCQlzdm1fcGFnaW5nX21vZGUoc3Rh dGUtPmNyMCwgc3RhdGUtPmNyNCwKKwkJCQkJCSBzdGF0ZS0+ZWZlcik7CiAJCQkJdm1leGl0LT5p bnN0X2xlbmd0aCA9IFZJRV9JTlNUX1NJWkU7CisJCQkJdm1tX3N0YXRfaW5jcihzdm1fc2MtPnZt LCB2Y3B1LCAKKwkJCQkJVk1FWElUX0lOU1RfRU1VTCwgMSk7CiAJCQl9CiAJCQkKIAkJCWJyZWFr OwpAQCAtNzYyLDcgKzgwMSw3IEBACiAJCXJldHVybiAoMCk7CiAKIAkgLyogSW5qZWN0IE5NSSwg dmVjdG9yIG51bWJlciBpcyBub3QgdXNlZC4qLwotCWlmICh2bWNiX2V2ZW50aW5qZWN0KGN0cmws IFZNX05NSSwgSURUX05NSSwgMCwgZmFsc2UpKSB7CisJaWYgKHZtY2JfZXZlbnRpbmplY3QoY3Ry bCwgVk1DQl9FVkVOVElOSl9UWVBFX05NSSwgSURUX05NSSwgMCwgZmFsc2UpKSB7CiAJCVZDUFVf Q1RSMChzdm1fc2MtPnZtLCB2Y3B1LCAiU1ZNOk5NSSBpbmplY3Rpb24gZmFpbGVkLlxuIik7CiAJ CXJldHVybiAoRUlPKTsKIAl9CkBAIC03NzksMTAgKzgxOCwxMSBAQAogICogSW5qZWN0IGV2ZW50 IHRvIHZpcnR1YWwgY3B1LgogICovCiBzdGF0aWMgdm9pZAotc3ZtX2lual9pbnRlcnJ1cHRzKHN0 cnVjdCBzdm1fc29mdGMgKnN2bV9zYywgaW50IHZjcHUpCitzdm1faW5qX2ludGVycnVwdHMoc3Ry dWN0IHN2bV9zb2Z0YyAqc3ZtX3NjLCBpbnQgdmNwdSwgc3RydWN0IHZsYXBpYyAqdmxhcGljKQog ewogCXN0cnVjdCB2bWNiX2N0cmwgKmN0cmw7CiAJc3RydWN0IHZtY2Jfc3RhdGUgKnN0YXRlOwor CXN0cnVjdCB2bV9leGNlcHRpb24gZXhjOwogCWludCB2ZWN0b3I7CiAJCiAJS0FTU0VSVCh2Y3B1 IDwgc3ZtX3NjLT52Y3B1X2NudCwgKCJHdWVzdCBkb2Vzbid0IGhhdmUgVkNQVSVkIiwgdmNwdSkp OwpAQCAtODAyLDE3ICs4NDIsMjYgQEAKIAkJVkNQVV9DVFIwKHN2bV9zYy0+dm0sIHZjcHUsICJT Vk06R3Vlc3QgaW4gaW50ZXJydXB0IHNoYWRvdy5cbiIpOwogCQlyZXR1cm47CiAJfQotCisJCisJ aWYgKHZtX2V4Y2VwdGlvbl9wZW5kaW5nKHN2bV9zYy0+dm0sIHZjcHUsICZleGMpKSB7CisJCUtB U1NFUlQoZXhjLnZlY3RvciA+PSAwICYmIGV4Yy52ZWN0b3IgPCAzMiwKKwkJCSgiRXhjZXB0aW9u IHZlY3RvciUgaW52YWxpZCIsIGV4Yy52ZWN0b3IpKTsKKwkJaWYgKHZtY2JfZXZlbnRpbmplY3Qo Y3RybCwgVk1DQl9FVkVOVElOSl9UWVBFX0VYQ0VQVElPTiwgCisJCQlleGMudmVjdG9yLCBleGMu ZXJyb3JfY29kZSwgCisJCQlleGMuZXJyb3JfY29kZV92YWxpZCkpIHsKKwkJCVZDUFVfQ1RSMShz dm1fc2MtPnZtLCB2Y3B1LCAiU1ZNOkV4Y2VwdGlvbiVkIGluamVjdGlvbiIKKwkJCQkiIGZhaWxl ZC5cbiIsIGV4Yy52ZWN0b3IpOworCQkJcmV0dXJuOworCQl9CisJfQogCS8qIE5NSSBldmVudCBo YXMgcHJpb3JpdHkgb3ZlciBpbnRlcnJ1cHRzLiovCiAJaWYgKHN2bV9pbmplY3Rfbm1pKHN2bV9z YywgdmNwdSkpIHsKIAkJcmV0dXJuOwogCX0KIAotCXZlY3RvciA9IGxhcGljX3BlbmRpbmdfaW50 cihzdm1fc2MtPnZtLCB2Y3B1KTsKLQotCS8qIE5vIGludGVycnVwdCBpcyBwZW5kaW5nLiAqLwkK LQlpZiAodmVjdG9yIDwgMCkKLQkJcmV0dXJuOworICAgICAgICAvKiBBc2sgdGhlIGxvY2FsIGFw aWMgZm9yIGEgdmVjdG9yIHRvIGluamVjdCAqLworICAgICAgICBpZiAoIXZsYXBpY19wZW5kaW5n X2ludHIodmxhcGljLCAmdmVjdG9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAJCiAJaWYg KHZlY3RvciA8IDMyIHx8IHZlY3RvciA+IDI1NSkgewogCQlWQ1BVX0NUUjEoc3ZtX3NjLT52bSwg dmNwdSwgIlNWTV9FUlI6RXZlbnQgaW5qZWN0aW9uIgpAQCAtODI2LDE0ICs4NzUsMTQgQEAKIAkJ cmV0dXJuOwogCX0KIAotCWlmICh2bWNiX2V2ZW50aW5qZWN0KGN0cmwsIFZNX0hXX0lOVFIsIHZl Y3RvciwgMCwgZmFsc2UpKSB7CisJaWYgKHZtY2JfZXZlbnRpbmplY3QoY3RybCwgVk1DQl9FVkVO VElOSl9UWVBFX0lOVFIsIHZlY3RvciwgMCwgZmFsc2UpKSB7CiAJCVZDUFVfQ1RSMShzdm1fc2Mt PnZtLCB2Y3B1LCAiU1ZNOkV2ZW50IGluamVjdGlvbiBmYWlsZWQgdG8iCiAJCQkiIHZlY3Rvcj0l ZC5cbiIsIHZlY3Rvcik7CiAJCXJldHVybjsKIAl9CQogCiAJLyogQWNrbm93bGVkZ2UgdGhhdCBl dmVudCBpcyBhY2NlcHRlZC4qLwotCWxhcGljX2ludHJfYWNjZXB0ZWQoc3ZtX3NjLT52bSwgdmNw dSwgdmVjdG9yKTsKKwl2bGFwaWNfaW50cl9hY2NlcHRlZCh2bGFwaWMsIHZlY3Rvcik7CiAJVkNQ VV9DVFIxKHN2bV9zYy0+dm0sIHZjcHUsICJTVk06ZXZlbnQgaW5qZWN0ZWQsdmVjdG9yPSVkLlxu IiwgdmVjdG9yKTsKIH0KIApAQCAtODg3LDcgKzkzNiw4IEBACiAgKiBTdGFydCB2Y3B1IHdpdGgg c3BlY2lmaWVkIFJJUC4KICAqLwogc3RhdGljIGludAotc3ZtX3ZtcnVuKHZvaWQgKmFyZywgaW50 IHZjcHUsIHJlZ2lzdGVyX3QgcmlwLCBwbWFwX3QgcG1hcCkKK3N2bV92bXJ1bih2b2lkICphcmcs IGludCB2Y3B1LCByZWdpc3Rlcl90IHJpcCwgcG1hcF90IHBtYXAsIAorCXZvaWQgKnJlbmRfY29v a2llLCB2b2lkICpzdXNwZW5kZWRfY29va2llKQogewogCXN0cnVjdCBzdm1fcmVnY3R4ICpoY3R4 LCAqZ2N0eDsKIAlzdHJ1Y3Qgc3ZtX3NvZnRjICpzdm1fc2M7CkBAIC04OTUsMTcgKzk0NSwyMSBA QAogCXN0cnVjdCB2bWNiX3N0YXRlICpzdGF0ZTsKIAlzdHJ1Y3Qgdm1jYl9jdHJsICpjdHJsOwog CXN0cnVjdCB2bV9leGl0ICp2bWV4aXQ7CisJc3RydWN0IHZsYXBpYyAqdmxhcGljOworCXN0cnVj dCB2bSAqdm07CiAJdWludDY0X3Qgdm1jYl9wYTsKIAlzdGF0aWMgdWludDY0X3QgaG9zdF9jcjI7 CiAJYm9vbCBsb29wOwkvKiBDb250aW51ZSB2Y3B1IGV4ZWN1dGlvbiBsb29wLiAqLwogCiAJbG9v cCA9IHRydWU7CiAJc3ZtX3NjID0gYXJnOwotCQorCXZtID0gc3ZtX3NjLT52bTsKKwogCXZjcHVz dGF0ZSA9IHN2bV9nZXRfdmNwdShzdm1fc2MsIHZjcHUpOwogCXN0YXRlID0gc3ZtX2dldF92bWNi X3N0YXRlKHN2bV9zYywgdmNwdSk7CiAJY3RybCA9IHN2bV9nZXRfdm1jYl9jdHJsKHN2bV9zYywg dmNwdSk7Ci0Jdm1leGl0ID0gdm1fZXhpdGluZm8oc3ZtX3NjLT52bSwgdmNwdSk7CisJdm1leGl0 ID0gdm1fZXhpdGluZm8odm0sIHZjcHUpOworCXZsYXBpYyA9IHZtX2xhcGljKHZtLCB2Y3B1KTsK IAogCWdjdHggPSBzdm1fZ2V0X2d1ZXN0X3JlZ2N0eChzdm1fc2MsIHZjcHUpOwogCWhjdHggPSAm aG9zdF9jdHhbY3VyY3B1XTsgCkBAIC05MTMsNyArOTY3LDcgQEAKIAogCWlmICh2Y3B1c3RhdGUt Pmxhc3RjcHUgIT0gY3VyY3B1KSB7CiAJCS8qIFZpcnR1YWwgQ1BVIGlzIHJ1bm5pbmcgb24gYSBk aWlmZXJlbnQgQ1BVIG5vdy4qLwotCQl2bW1fc3RhdF9pbmNyKHN2bV9zYy0+dm0sIHZjcHUsIFZD UFVfTUlHUkFUSU9OUywgMSk7CisJCXZtbV9zdGF0X2luY3Iodm0sIHZjcHUsIFZDUFVfTUlHUkFU SU9OUywgMSk7CiAKIAkJLyoKIAkJICogRmx1c2ggYWxsIFRMQiBtYXBwaW5nIGZvciB0aGlzIGd1 ZXN0IG9uIHRoaXMgQ1BVLApAQCAtOTQ2LDcgKzEwMDAsNyBAQAogCX0KIAogCXZjcHVzdGF0ZS0+ bGFzdGNwdSA9IGN1cmNwdTsKLQlWQ1BVX0NUUjMoc3ZtX3NjLT52bSwgdmNwdSwgIlNWTTpFbnRl ciB2bXJ1biBvbGQgUklQOjB4JWx4IgorCVZDUFVfQ1RSMyh2bSwgdmNwdSwgIlNWTTpFbnRlciB2 bXJ1biBvbGQgUklQOjB4JWx4IgogCQkiIG5ldyBSSVA6MHglbHggaW5zdCBsZW49JWRcbiIsCiAJ CXN0YXRlLT5yaXAsIHJpcCwgdm1leGl0LT5pbnN0X2xlbmd0aCk7CiAJLyogVXBkYXRlIEd1ZXN0 IFJJUCAqLwpAQCAtOTU3LDkgKzEwMTEsMjUgQEAKIAkJIC8qIFdlIGFyZSBhc2tlZCB0byBnaXZl IHRoZSBjcHUgYnkgc2NoZWR1bGVyLiAqLwogCQlpZiAoY3VydGhyZWFkLT50ZF9mbGFncyAmIChU REZfQVNUUEVORElORyB8IFRERl9ORUVEUkVTQ0hFRCkpIHsKIAkJCXZtZXhpdC0+ZXhpdGNvZGUg PSBWTV9FWElUQ09ERV9CT0dVUzsKLQkJCXZtbV9zdGF0X2luY3Ioc3ZtX3NjLT52bSwgdmNwdSwg Vk1FWElUX0FTVFBFTkRJTkcsIDEpOwotCQkJVkNQVV9DVFIxKHN2bV9zYy0+dm0sIHZjcHUsIAot CQkJCSJTVk06IGdhdmUgdXAgQ1BVLCBSSVA6MHglbHhcbiIsIHN0YXRlLT5yaXApOworCQkJdm1t X3N0YXRfaW5jcih2bSwgdmNwdSwgVk1FWElUX0FTVFBFTkRJTkcsIDEpOworCQkJVkNQVV9DVFIx KHZtLCB2Y3B1LCAKKwkJCQkiU1ZNOiBBU1RQRU5ESU5HLCBSSVA6MHglbHhcbiIsIHN0YXRlLT5y aXApOworCQkJdm1leGl0LT5yaXAgPSBzdGF0ZS0+cmlwOworCQkJYnJlYWs7CisJCX0KKworCQlp ZiAodmNwdV9zdXNwZW5kZWQoc3VzcGVuZGVkX2Nvb2tpZSkpIHsKKwkJCXZtZXhpdC0+ZXhpdGNv ZGUgPSBWTV9FWElUQ09ERV9TVVNQRU5ERUQ7CisJCQl2bWV4aXQtPnJpcCA9IHN0YXRlLT5yaXA7 CisJCQlicmVhazsKKwkJfQorCisJCWlmICh2Y3B1X3JlbmRlenZvdXNfcGVuZGluZyhyZW5kX2Nv b2tpZSkpIHsKKwkJCXZtZXhpdC0+ZXhpdGNvZGUgPSBWTV9FWElUQ09ERV9SRU5ERVpWT1VTOwor CQkJdm1tX3N0YXRfaW5jcih2bSwgdmNwdSwgVk1FWElUX1JFTkRFWlZPVVMsIDEpOworCQkJVkNQ VV9DVFIxKHZtLCB2Y3B1LCAKKwkJCQkiU1ZNOiBWQ1BVIHJlbmRlenZvdXMsIFJJUDoweCVseFxu IiwgCisJCQkJc3RhdGUtPnJpcCk7CiAJCQl2bWV4aXQtPnJpcCA9IHN0YXRlLT5yaXA7CiAJCQli cmVhazsKIAkJfQpAQCAtOTY4LDcgKzEwMzgsNyBAQAogCQkKIAkJc3ZtX2hhbmRsZV9leGl0aW50 aW5mbyhzdm1fc2MsIHZjcHUpOwogCQkKLQkJKHZvaWQpc3ZtX2lual9pbnRlcnJ1cHRzKHN2bV9z YywgdmNwdSk7CisJCSh2b2lkKXN2bV9pbmpfaW50ZXJydXB0cyhzdm1fc2MsIHZjcHUsIHZsYXBp Yyk7CiAJCiAJCS8qIENoYW5nZSBUU1MgdHlwZSB0byBhdmFpbGFibGUuKi8KIAkJc2V0dXBfdHNz X3R5cGUoKTsKQEAgLTEwMTcsNyArMTA4Nyw3IEBACiAJCS8qIEhhbmRsZSAjVk1FWElUIGFuZCBp ZiByZXF1aXJlZCByZXR1cm4gdG8gdXNlciBzcGFjZS4gKi8KIAkJbG9vcCA9IHN2bV92bWV4aXQo c3ZtX3NjLCB2Y3B1LCB2bWV4aXQpOwogCQl2Y3B1c3RhdGUtPmxvb3ArKzsKLQkJdm1tX3N0YXRf aW5jcihzdm1fc2MtPnZtLCB2Y3B1LCBWTUVYSVRfQ09VTlQsIDEpOworCQl2bW1fc3RhdF9pbmNy KHZtLCB2Y3B1LCBWTUVYSVRfQ09VTlQsIDEpOwogCiAJfSB3aGlsZSAobG9vcCk7CiAJCQpAQCAt MTIwOSwyNCArMTI3OSw2IEBACiB9CiAKIHN0YXRpYyBpbnQKLXN2bV9pbmplY3RfZXZlbnQodm9p ZCAqYXJnLCBpbnQgdmNwdSwgaW50IHR5cGUsIGludCB2ZWN0b3IsCi0JCSAgdWludDMyX3QgZXJy b3IsIGludCBlY192YWxpZCkKLXsKLQlzdHJ1Y3Qgc3ZtX3NvZnRjICpzdm1fc2M7Ci0Jc3RydWN0 IHZtY2JfY3RybCAqY3RybDsKLQotCXN2bV9zYyA9IGFyZzsKLQlLQVNTRVJUKHZjcHUgPCBzdm1f c2MtPnZjcHVfY250LCAoIkd1ZXN0IGRvZXNuJ3QgaGF2ZSBWQ1BVJWQiLCB2Y3B1KSk7Ci0KLQlj dHJsID0gc3ZtX2dldF92bWNiX2N0cmwoc3ZtX3NjLCB2Y3B1KTsKLQlWQ1BVX0NUUjMoc3ZtX3Nj LT52bSwgdmNwdSwgIkluamVjdGluZyBldmVudCB0eXBlOjB4JXggdmVjdG9yOjB4JXgiCi0JCSJl cnJvcjoweCV4XG4iLCB0eXBlLCB2ZWN0b3IsIGVycm9yKTsKLQotCXJldHVybiAodm1jYl9ldmVu dGluamVjdChjdHJsLCB0eXBlLCB2ZWN0b3IsIGVycm9yLAotCQllY192YWxpZCA/IFRSVUUgOiBG QUxTRSkpOwotfQotCi1zdGF0aWMgaW50CiBzdm1fc2V0Y2FwKHZvaWQgKmFyZywgaW50IHZjcHUs IGludCB0eXBlLCBpbnQgdmFsKQogewogCXN0cnVjdCBzdm1fc29mdGMgKnN2bV9zYzsKQEAgLTEz MjQsOSArMTM3NiwzNSBAQAogCXJldHVybiAoMCk7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgdmxhcGlj ICoKK3N2bV92bGFwaWNfaW5pdCh2b2lkICphcmcsIGludCB2Y3B1aWQpCit7CisJc3RydWN0IHN2 bV9zb2Z0YyAqc3ZtX3NjOworCXN0cnVjdCB2bGFwaWMgKnZsYXBpYzsKKworCXN2bV9zYyA9IGFy ZzsKKwl2bGFwaWMgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB2bGFwaWMpLCBNX1NWTV9WTEFQSUMs IE1fV0FJVE9LIHwgTV9aRVJPKTsKKwl2bGFwaWMtPnZtID0gc3ZtX3NjLT52bTsKKwl2bGFwaWMt PnZjcHVpZCA9IHZjcHVpZDsKKwl2bGFwaWMtPmFwaWNfcGFnZSA9IChzdHJ1Y3QgTEFQSUMgKikm c3ZtX3NjLT5hcGljX3BhZ2VbdmNwdWlkXTsKKworCXZsYXBpY19pbml0KHZsYXBpYyk7CisJCisJ cmV0dXJuICh2bGFwaWMpOworfQorCitzdGF0aWMgdm9pZAorc3ZtX3ZsYXBpY19jbGVhbnVwKHZv aWQgKmFyZywgc3RydWN0IHZsYXBpYyAqdmxhcGljKQoreworCisgICAgICAgIHZsYXBpY19jbGVh bnVwKHZsYXBpYyk7CisgICAgICAgIGZyZWUodmxhcGljLCBNX1NWTV9WTEFQSUMpOworfQorCiBz dHJ1Y3Qgdm1tX29wcyB2bW1fb3BzX2FtZCA9IHsKIAlzdm1faW5pdCwKIAlzdm1fY2xlYW51cCwK Kwlzdm1fcmVzdG9yZSwKIAlzdm1fdm1pbml0LAogCXN2bV92bXJ1biwKIAlzdm1fdm1jbGVhbnVw LApAQCAtMTMzNCw5ICsxNDEyLDEwIEBACiAJc3ZtX3NldHJlZywKIAlzdm1fZ2V0ZGVzYywKIAlz dm1fc2V0ZGVzYywKLQlzdm1faW5qZWN0X2V2ZW50LAogCXN2bV9nZXRjYXAsCiAJc3ZtX3NldGNh cCwKIAlzdm1fbnB0X2FsbG9jLAotCXN2bV9ucHRfZnJlZQorCXN2bV9ucHRfZnJlZSwKKwlzdm1f dmxhcGljX2luaXQsCisJc3ZtX3ZsYXBpY19jbGVhbnVwCQogfTsKZGlmZiAtYXVyUCAteCAnKi5v cmlnJyAteCAuc3ZuIC9tbnQvc3luY19uZXh0Mi9iaHl2ZV9zdm1fSEVBRF9yMjYzNzgwX2Jhc2Uv L3N5cy9hbWQ2NC92bW0vYW1kL3N2bV9zb2Z0Yy5oIC9tbnQvc3luY19uZXh0Mi9iaHl2ZV9zdm1f SEVBRF9yMjYzNzgwX1dJUC9zeXMvYW1kNjQvdm1tL2FtZC9zdm1fc29mdGMuaAotLS0gL21udC9z eW5jX25leHQyL2JoeXZlX3N2bV9IRUFEX3IyNjM3ODBfYmFzZS8vc3lzL2FtZDY0L3ZtbS9hbWQv c3ZtX3NvZnRjLmgJMjAxNC0wNC0xMSAxMzo1MTo0NS4wMDAwMDAwMDAgKzAwMDAKKysrIC9tbnQv c3luY19uZXh0Mi9iaHl2ZV9zdm1fSEVBRF9yMjYzNzgwX1dJUC9zeXMvYW1kNjQvdm1tL2FtZC9z dm1fc29mdGMuaAkyMDE0LTA0LTA2IDA0OjM0OjE3LjAwMDAwMDAwMCArMDAwMApAQCAtNjEsNiAr NjEsNyBAQAogCSAqLwogCXVpbnQ4X3QJbXNyX2JpdG1hcFtTVk1fTVNSX0JJVE1BUF9TSVpFXTsK IAorCXVpbnQ4X3QgYXBpY19wYWdlW1ZNX01BWENQVV1bUEFHRV9TSVpFXTsKIAkvKiBOZXN0ZWQg UGFnaW5nICovCiAJdm1fb2Zmc2V0X3QgCW5wdHA7CQogCmRpZmYgLWF1clAgLXggJyoub3JpZycg LXggLnN2biAvbW50L3N5bmNfbmV4dDIvYmh5dmVfc3ZtX0hFQURfcjI2Mzc4MF9iYXNlLy9zeXMv YW1kNjQvdm1tL2FtZC92bWNiLmMgL21udC9zeW5jX25leHQyL2JoeXZlX3N2bV9IRUFEX3IyNjM3 ODBfV0lQL3N5cy9hbWQ2NC92bW0vYW1kL3ZtY2IuYwotLS0gL21udC9zeW5jX25leHQyL2JoeXZl X3N2bV9IRUFEX3IyNjM3ODBfYmFzZS8vc3lzL2FtZDY0L3ZtbS9hbWQvdm1jYi5jCTIwMTQtMDQt MTEgMTM6NTE6NDUuMDAwMDAwMDAwICswMDAwCisrKyAvbW50L3N5bmNfbmV4dDIvYmh5dmVfc3Zt X0hFQURfcjI2Mzc4MF9XSVAvc3lzL2FtZDY0L3ZtbS9hbWQvdm1jYi5jCTIwMTQtMDQtMDYgMDQ6 MzQ6MTcuMDAwMDAwMDAwICswMDAwCkBAIC0zNTQsMjUgKzM1NCwxMiBAQAogICogSW5qZWN0IGFu IGV2ZW50IHRvIHZjcHUgYXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMTUuMjAsICJFdmVudCBpbmpl Y3Rpb24iLgogICovCiBpbnQKLXZtY2JfZXZlbnRpbmplY3Qoc3RydWN0IHZtY2JfY3RybCAqY3Ry bCwgaW50IHR5cGUsIGludCB2ZWN0b3IsCit2bWNiX2V2ZW50aW5qZWN0KHN0cnVjdCB2bWNiX2N0 cmwgKmN0cmwsIGludCBpbnRyX3R5cGUsIGludCB2ZWN0b3IsCiAJCSB1aW50MzJfdCBlcnJvciwg Ym9vbCBlY192YWxpZCkKIHsKLQlpbnQgaW50cl90eXBlOwotCi0Jc3RhdGljIHVpbnQ4X3QgIHN2 bV9pbnRyX3R5cGVfbWFwW1ZNX0VWRU5UX01BWF0gPSB7Ci0JCS0xLAkJCQkvKiBWTV9FVkVOVF9O T05FICovCi0JCVZNQ0JfRVZFTlRJTkpfVFlQRV9JTlRSLAkvKiBWTV9IV19JTlRSICovCi0JCVZN Q0JfRVZFTlRJTkpfVFlQRV9OTUksCSAJLyogVk1fTk1JICovCi0JCVZNQ0JfRVZFTlRJTkpfVFlQ RV9FWENFUFRJT04sCS8qIFZNX0hXX0VYQ0VQVElPTiAqLwotCQlWTUNCX0VWRU5USU5KX1RZUEVf SU5UbiwgCS8qIFZNX1NXX0lOVFIsIElOVCAqLwotCQlWTUNCX0VWRU5USU5KX1RZUEVfSU5Ubiwg CS8qIFZNX1BSSVZfU1dfRVhDRVBUSU9OICovCi0JCVZNQ0JfRVZFTlRJTkpfVFlQRV9JTlRuLCAJ LyogVk1fU1dfRVhDRVBUSU9OICovCi0JfTsKLQotCWludHJfdHlwZSA9IHN2bV9pbnRyX3R5cGVf bWFwW3R5cGVdOwogCWlmIChpbnRyX3R5cGUgPCBWTUNCX0VWRU5USU5KX1RZUEVfSU5UUiB8fAog CSAgICBpbnRyX3R5cGUgPiBWTUNCX0VWRU5USU5KX1RZUEVfSU5UbikgewotCQlFUlIoIkV2ZW50 OiVkIGlzIG5vdCBzdXBwb3J0ZWQgYnkgU1ZNLlxuIiwgdHlwZSk7CisJCUVSUigiRXZlbnQ6JWQg aXMgbm90IHN1cHBvcnRlZCBieSBTVk0uXG4iLCBpbnRyX3R5cGUpOwogCQlyZXR1cm4gKEVJTlZB TCk7CiAJfQogCg== --047d7b86cdc2c5d01904f97255e5--