From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v4.1 3/4] x86/pt: enable binding of GSIs to a PVH Dom0 Date: Fri, 2 Jun 2017 14:58:44 +0100 Message-ID: <20170602135844.25286-1-roger.pau@citrix.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dGn6V-0002vO-QH for xen-devel@lists.xenproject.org; Fri, 02 Jun 2017 13:59:04 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , boris.ostrovsky@oracle.com, Jan Beulich , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org QWNoaWV2ZSB0aGlzIGJ5IGV4cGFuZGluZyBwdF9pcnFfY3JlYXRlX2JpbmQgaW4gb3JkZXIgdG8g c3VwcG9ydCBtYXBwaW5nCmludGVycnVwdHMgb2YgdHlwZSBQVF9JUlFfVFlQRV9QQ0kgdG8gYSBQ VkggRG9tMC4gR1NJcyBib3VuZCB0byBEb20wIGFyZSBhbHdheXMKaWRlbnRpdHkgYm91bmQsIHdo aWNoIG1lYW5zIHRoZSBhbGwgdGhlIGZpZWxkcyBpbnNpZGUgb2YgdGhlIHUucGNpIHN1Yi1zdHJ1 Y3QKYXJlIGlnbm9yZWQsIGFuZCBvbmx5IHRoZSBtYWNoaW5lX2lycSBpcyBhY3R1YWxseSB1c2Vk IGluIG9yZGVyIHRvIGRldGVybWluZQp3aGljaCBHU0kgdGhlIGNhbGxlciB3YW50cyB0byBiaW5k LgoKQWxzbywgdGhlIGh2bV9pcnFfZHBjaSBzdHJ1Y3QgaXMgbm90IHVzZWQgYnkgYSBQVkggRG9t MCwgc2luY2UgdGhhdCdzIHVzZWQgdG8Kcm91dGUgaW50ZXJydXB0cyBhbmQgYWxsb3cgZGlmZmVy ZW50IGhvc3QgdG8gZ3Vlc3QgR1NJIG1hcHBpbmdzLCB3aGljaCBpcyBub3QKdXNlZCBieSBhIFBW SCBEb20wLgoKVGhpcyByZXF1aXJlcyBhZGRpbmcgc29tZSBzcGVjaWZpYyBoYW5kbGVycyBmb3Ig c3VjaCBkaXJlY3RseSBtYXBwZWQgR1NJcywKd2hpY2ggYnlwYXNzIHRoZSBQQ0kgaW50ZXJydXB0 IHJvdXRpbmcgZG9uZSBieSBYZW4gZm9yIEhWTSBndWVzdHMuCgpTaWduZWQtb2ZmLWJ5OiBSb2dl ciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KLS0tCkNjOiBKYW4gQmV1bGljaCA8 amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRy aXguY29tPgotLS0KQ2hhbmdlcyBzaW5jZSB2NDoKIC0gQWRkIGEgY2hlY2sgdG8gbWFrZSBzdXJl IG9ubHkgSFZNIGNhbiB1c2UgaHZtX2RvX0lSUV9kcGNpLgoKQ2hhbmdlcyBzaW5jZSB2MzoKIC0g UmV3cml0ZSB0aGUgY29tbWVudCBpbiBodm1fZ3NpX2Fzc2VydC4KIC0gVW5jb25kaXRpb25hbGx5 IHNldCBnc2lfYXNzZXJ0X2NvdW50IHRvIDAgaW4gaHZtX2dzaV9kZWFzc2VydC4KIC0gSW4gdGhl IHBpcnEgdGltZW91dCBmdW5jdGlvbiBkbyBub3QgZGVmZXIgdGhlIEVPSSBmb3IgdGhlIGlkZW50 aXR5CiAgIG1hcHBlZCBjYXNlLgogLSBBc3NlcnQgdGhhdCB0aGUgdklPIEFQSUMgZW50cnkgaXMg bm90IG1hc2tlZCBiZWZvcmUgY2hlY2tpbmcgdGhlCiAgIHRyaWdnZXIgbW9kZS4KIC0gSW4gdGhl IGZhaWx1cmUgcGF0aCBvZiBwdF9pcnFfY3JlYXRlX2JpbmQgY2hlY2sgdGhhdCBnaXJxIGFuZCBk aWdsCiAgIGFyZSBub3QgTlVMTCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gd2hldGhlciB0aGUgZG9t YWluIGlzIERvbTAuCiAtIEluIHB0X2lycV9kZXN0cm95X2JpbmQgbW92ZSBhIGNvbmRpdGlvbiB0 byB0aGUgb3V0ZXIgaWYgaW4gb3JkZXIgdG8KICAgYXZvaWQgY29kZSBpbmRlbnRhdGlvbi4KCkNo YW5nZXMgc2luY2UgdjI6CiAtIFR1cm4gdGhlIGFzc2VydCBpbiBodm1fZ3NpX3tkZX1hc3NlcnQg aW50byBhbiBhc3NlcnRfdW5yZWFjaGFibGUgKGxpa2UgaXQncwogICBkb25lIGluIF9faHZtX3Bj aV9pbnR4X3tkZX1hc3NlcnQuCiAtIERvIG5vdCBpbmNyZWFzZS9kZWNyZWFzZSBnc2lfYXNzZXJ0 X2NvdW50LCBpbnN0ZWFkIHNldCBpdCB0byAxLzAuCiAtIEZpeCBhIGNvbW1lbnQgZ3JhbW1hciBl cnJvci4KIC0gQ29udmVydCB0aGUgcHRfaXJxX2NyZWF0ZV9iaW5kIGFzc2VydHMgZm9yIGJpbmQg dHlwZSBhbmQgcGlycSByYW5nZSBpbnRvIGFuCiAgIGVycm9yIHBhdGguCiAtIFJlZHVjZSB0aGUg c2l6ZSBvZiB0aGUgbWVzc2FnZSBidWZmZXJzLCAyNCBzaG91bGQgYmUgZW5vdWdoLgogLSBBbGxv dyBwdF9pcnFfY3JlYXRlX2JpbmQgdG8gdW5iaW5kIGhhcmR3YXJlIGRvbWFpbiBHU0lzLgogLSBz L19faHZtX3BpcnFfZW9pL2h2bV9waXJxX2VvaS8uCiAtIFJlbW92ZSBBU1NFUlQocGlycV9kcGNp KSBmcm9tIGh2bV9waXJxX2VvaS4KIC0gUmVtb3ZlIHBpcnFfZHBjaSBsb2NhbCB2YXJpYWJsZSBm cm9tIGh2bV9nc2lfZW9pIChpdCdzIHVzZWQgb25seSBvbmNlKS4KIC0gcy9fX2h2bV9nc2lfZW9p L2h2bV9nc2lfZW9pLy4KIC0gQWRkIGEgY29tbWVudCB0byBkb2N1bWVudCBodm1fZ3NpX2Fzc2Vy dCB1c2FnZSBvZiBnc2lfYXNzZXJ0X2NvdW50LgoKQ2hhbmdlcyBzaW5jZSB2MToKIC0gUmVtb3Zl IHRoZSBQVF9JUlFfVFlQRV9HU0kgYW5kIGluc3RlYWQganVzdCB1c2UgUFRfSVJRX1RZUEVfUENJ IHdpdGggYQogICBoYXJkd2FyZSBkb21haW4gc3BlY2lhbCBjYXNpbmcuCiAtIENoZWNrIHRoZSB0 cmlnZ2VyIG1vZGUgb2YgdGhlIERvbTAgdklPIEFQSUMgaW4gb3JkZXIgdG8gc2V0IHRoZSBzaGFy ZWFibGUKICAgZmxhZ3MgaW4gcHRfaXJxX2NyZWF0ZV9iaW5kLgotLS0KIHhlbi9hcmNoL3g4Ni9o dm0vaXJxLmMgICAgICAgfCAgNDIgKysrKysrKysrCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9p by5jIHwgMjE2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHhl bi9pbmNsdWRlL3hlbi9odm0vaXJxLmggICAgfCAgIDYgKysKIDMgZmlsZXMgY2hhbmdlZCwgMjEz IGluc2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9odm0vaXJxLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lycS5jCmluZGV4IDg2MjU1ODQ3YTYuLmU0 MjVkZjkxM2MgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaXJxLmMKKysrIGIveGVuL2Fy Y2gveDg2L2h2bS9pcnEuYwpAQCAtMTI2LDYgKzEyNiw0OCBAQCB2b2lkIGh2bV9wY2lfaW50eF9k ZWFzc2VydCgKICAgICBzcGluX3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmlycV9sb2NrKTsK IH0KIAordm9pZCBodm1fZ3NpX2Fzc2VydChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQg Z3NpKQoreworICAgIHN0cnVjdCBodm1faXJxICpodm1faXJxID0gaHZtX2RvbWFpbl9pcnEoZCk7 CisKKyAgICBpZiAoIGdzaSA+PSBodm1faXJxLT5ucl9nc2lzICkKKyAgICB7CisgICAgICAgIEFT U0VSVF9VTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAg ICAgKiBfX2h2bV9wY2lfaW50eF97ZGV9YXNzZXJ0IHVzZXMgYSBiaXRmaWVsZCBpbiBwY2lfaW50 eC5pIHRvIHRyYWNrIHRoZQorICAgICAqIHN0YXR1cyBvZiBlYWNoIGludGVycnVwdCBsaW5lLCBh bmQgWGVuIGRvZXMgdGhlIHJvdXRpbmcgYW5kIEdTSQorICAgICAqIGFzc2VydGlvbiBiYXNlZCBv biB0aGF0LiBUaGUgdmFsdWUgb2YgdGhlIHBjaV9pbnR4LmkgYml0bWFwIHByZXZlbnRzIHRoZQor ICAgICAqIHNhbWUgbGluZSBmcm9tIHRyaWdnZXJpbmcgbXVsdGlwbGUgdGltZXMuIEFzIHdlIGRv bid0IHVzZSB0aGF0IGJpdG1hcAorICAgICAqIGZvciB0aGUgaGFyZHdhcmUgZG9tYWluLCBYZW4g bmVlZHMgdG8gcmVseSBvbiBnc2lfYXNzZXJ0X2NvdW50IGluIG9yZGVyCisgICAgICogdG8ga25v dyBpZiB0aGUgR1NJIGlzIHBlbmRpbmcgb3Igbm90LgorICAgICAqLworICAgIHNwaW5fbG9jaygm ZC0+YXJjaC5odm1fZG9tYWluLmlycV9sb2NrKTsKKyAgICBpZiAoICFodm1faXJxLT5nc2lfYXNz ZXJ0X2NvdW50W2dzaV0gKQorICAgIHsKKyAgICAgICAgaHZtX2lycS0+Z3NpX2Fzc2VydF9jb3Vu dFtnc2ldID0gMTsKKyAgICAgICAgYXNzZXJ0X2dzaShkLCBnc2kpOworICAgIH0KKyAgICBzcGlu X3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmlycV9sb2NrKTsKK30KKwordm9pZCBodm1fZ3Np X2RlYXNzZXJ0KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBnc2kpCit7CisgICAgc3Ry dWN0IGh2bV9pcnEgKmh2bV9pcnEgPSBodm1fZG9tYWluX2lycShkKTsKKworICAgIGlmICggZ3Np ID49IGh2bV9pcnEtPm5yX2dzaXMgKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxF KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzcGluX2xvY2soJmQtPmFyY2guaHZt X2RvbWFpbi5pcnFfbG9jayk7CisgICAgaHZtX2lycS0+Z3NpX2Fzc2VydF9jb3VudFtnc2ldID0g MDsKKyAgICBzcGluX3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmlycV9sb2NrKTsKK30KKwog dm9pZCBodm1faXNhX2lycV9hc3NlcnQoCiAgICAgc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg aW50IGlzYV9pcnEpCiB7CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pby5j IGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW8uYwppbmRleCBlNWE0M2U1MDhmLi44MWU2NTZm MzI0IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pby5jCisrKyBiL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL2lvLmMKQEAgLTE2NCw2ICsxNjQsMjUgQEAgc3RhdGljIHZvaWQg cHRfaXJxX3RpbWVfb3V0KHZvaWQgKmRhdGEpCiAKICAgICBzcGluX2xvY2soJmlycV9tYXAtPmRv bS0+ZXZlbnRfbG9jayk7CiAKKyAgICBpZiAoIGlycV9tYXAtPmZsYWdzICYgSFZNX0lSUV9EUENJ X0lERU5USVRZX0dTSSApCisgICAgeworICAgICAgICBzdHJ1Y3QgcGlycSAqcGlycSA9IGRwY2lf cGlycShpcnFfbWFwKTsKKworICAgICAgICBBU1NFUlQoaXNfaGFyZHdhcmVfZG9tYWluKGlycV9t YXAtPmRvbSkpOworICAgICAgICAvKgorICAgICAgICAgKiBJZGVudGl0eSBtYXBwZWQsIG5vIG5l ZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBndWVzdCBHU0kgbGlzdCB0byBmaW5kCisgICAgICAgICAq IG90aGVyIHBpcnFzIHNoYXJpbmcgdGhlIHNhbWUgZ3Vlc3QgR1NJLgorICAgICAgICAgKgorICAg ICAgICAgKiBJbiB0aGUgaWRlbnRpdHkgbWFwcGVkIGNhc2UgdGhlIEVPSSBjYW4gYWxzbyBiZSBk b25lIG5vdywgdGhpcyB3YXkKKyAgICAgICAgICogdGhlIGl0ZXJhdGlvbiBvdmVyIHRoZSBsaXN0 IG9mIGRvbWFpbiBwaXJxcyBpcyBhdm9pZGVkLgorICAgICAgICAgKi8KKyAgICAgICAgaHZtX2dz aV9kZWFzc2VydChpcnFfbWFwLT5kb20sIHBpcnEtPnBpcnEpOworICAgICAgICBpcnFfbWFwLT5m bGFncyB8PSBIVk1fSVJRX0RQQ0lfRU9JX0xBVENIOworICAgICAgICBwdF9pcnFfZ3Vlc3RfZW9p KGlycV9tYXAtPmRvbSwgaXJxX21hcCwgTlVMTCk7CisgICAgICAgIHNwaW5fdW5sb2NrKCZpcnFf bWFwLT5kb20tPmV2ZW50X2xvY2spOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgZHBj aSA9IGRvbWFpbl9nZXRfaXJxX2RwY2koaXJxX21hcC0+ZG9tKTsKICAgICBpZiAoIHVubGlrZWx5 KCFkcGNpKSApCiAgICAgewpAQCAtMjc0LDEwICsyOTMsMTYgQEAgaW50IHB0X2lycV9jcmVhdGVf YmluZCgKICAgICBzcGluX2xvY2soJmQtPmV2ZW50X2xvY2spOwogCiAgICAgaHZtX2lycV9kcGNp ID0gZG9tYWluX2dldF9pcnFfZHBjaShkKTsKLSAgICBpZiAoIGh2bV9pcnFfZHBjaSA9PSBOVUxM ICkKKyAgICBpZiAoIGh2bV9pcnFfZHBjaSA9PSBOVUxMICYmICFpc19oYXJkd2FyZV9kb21haW4o ZCkgKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgaW50IGk7CiAKKyAgICAgICAgLyoKKyAgICAg ICAgICogTkI6IHRoZSBoYXJkd2FyZSBkb21haW4gZG9lc24ndCB1c2UgYSBodm1faXJxX2RwY2kg c3RydWN0IGJlY2F1c2UKKyAgICAgICAgICogaXQncyBvbmx5IGFsbG93ZWQgdG8gaWRlbnRpdHkg bWFwIEdTSXMsIGFuZCBzbyB0aGUgZGF0YSBjb250YWluZWQgaW4KKyAgICAgICAgICogdGhhdCBz dHJ1Y3QgKHVzZWQgdG8gbWFwIGd1ZXN0IEdTSXMgaW50byBtYWNoaW5lIEdTSXMgYW5kIHBlcmZv cm0KKyAgICAgICAgICogaW50ZXJydXB0IHJvdXRpbmcpIGl0J3MgY29tcGxldGVseSB1c2VsZXNz IHRvIGl0LgorICAgICAgICAgKi8KICAgICAgICAgaHZtX2lycV9kcGNpID0geHphbGxvYyhzdHJ1 Y3QgaHZtX2lycV9kcGNpKTsKICAgICAgICAgaWYgKCBodm1faXJxX2RwY2kgPT0gTlVMTCApCiAg ICAgICAgIHsKQEAgLTQyMiwzNSArNDQ3LDUyIEBAIGludCBwdF9pcnFfY3JlYXRlX2JpbmQoCiAg ICAgY2FzZSBQVF9JUlFfVFlQRV9QQ0k6CiAgICAgY2FzZSBQVF9JUlFfVFlQRV9NU0lfVFJBTlNM QVRFOgogICAgIHsKLSAgICAgICAgdW5zaWduZWQgaW50IGJ1cyA9IHB0X2lycV9iaW5kLT51LnBj aS5idXM7Ci0gICAgICAgIHVuc2lnbmVkIGludCBkZXZpY2UgPSBwdF9pcnFfYmluZC0+dS5wY2ku ZGV2aWNlOwotICAgICAgICB1bnNpZ25lZCBpbnQgaW50eCA9IHB0X2lycV9iaW5kLT51LnBjaS5p bnR4OwotICAgICAgICB1bnNpZ25lZCBpbnQgZ3Vlc3RfZ3NpID0gaHZtX3BjaV9pbnR4X2dzaShk ZXZpY2UsIGludHgpOwotICAgICAgICB1bnNpZ25lZCBpbnQgbGluayA9IGh2bV9wY2lfaW50eF9s aW5rKGRldmljZSwgaW50eCk7Ci0gICAgICAgIHN0cnVjdCBkZXZfaW50eF9nc2lfbGluayAqZGln bCA9IHhtYWxsb2Moc3RydWN0IGRldl9pbnR4X2dzaV9saW5rKTsKLSAgICAgICAgc3RydWN0IGh2 bV9naXJxX2RwY2lfbWFwcGluZyAqZ2lycSA9Ci0gICAgICAgICAgICB4bWFsbG9jKHN0cnVjdCBo dm1fZ2lycV9kcGNpX21hcHBpbmcpOworICAgICAgICBzdHJ1Y3QgZGV2X2ludHhfZ3NpX2xpbmsg KmRpZ2wgPSBOVUxMOworICAgICAgICBzdHJ1Y3QgaHZtX2dpcnFfZHBjaV9tYXBwaW5nICpnaXJx ID0gTlVMTDsKKyAgICAgICAgdW5zaWduZWQgaW50IGd1ZXN0X2dzaTsKIAotICAgICAgICBpZiAo ICFkaWdsIHx8ICFnaXJxICkKKyAgICAgICAgLyoKKyAgICAgICAgICogTWFwcGluZyBHU0lzIGZv ciB0aGUgaGFyZHdhcmUgZG9tYWluIGlzIGRpZmZlcmVudCB0aGFuIGRvaW5nIGl0IGZvcgorICAg ICAgICAgKiBhbiB1bnByaXZpbGVkZ2VkIGd1ZXN0LCB0aGUgaGFyZHdhcmUgZG9tYWluIGlzIG9u bHkgYWxsb3dlZCB0bworICAgICAgICAgKiBpZGVudGl0eSBtYXAgR1NJcywgYW5kIGFzIHN1Y2gg YWxsIHRoZSBkYXRhIGluIHRoZSB1LnBjaSB1bmlvbiBpcworICAgICAgICAgKiBkaXNjYXJkZWQu CisgICAgICAgICAqLworICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4oZCkgKQogICAg ICAgICB7Ci0gICAgICAgICAgICBzcGluX3VubG9jaygmZC0+ZXZlbnRfbG9jayk7Ci0gICAgICAg ICAgICB4ZnJlZShnaXJxKTsKLSAgICAgICAgICAgIHhmcmVlKGRpZ2wpOwotICAgICAgICAgICAg cmV0dXJuIC1FTk9NRU07Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBsaW5r OworCisgICAgICAgICAgICBkaWdsID0geG1hbGxvYyhzdHJ1Y3QgZGV2X2ludHhfZ3NpX2xpbmsp OworICAgICAgICAgICAgZ2lycSA9IHhtYWxsb2Moc3RydWN0IGh2bV9naXJxX2RwY2lfbWFwcGlu Zyk7CiAKLSAgICAgICAgaHZtX2lycV9kcGNpLT5saW5rX2NudFtsaW5rXSsrOworICAgICAgICAg ICAgaWYgKCAhZGlnbCB8fCAhZ2lycSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg c3Bpbl91bmxvY2soJmQtPmV2ZW50X2xvY2spOworICAgICAgICAgICAgICAgIHhmcmVlKGdpcnEp OworICAgICAgICAgICAgICAgIHhmcmVlKGRpZ2wpOworICAgICAgICAgICAgICAgIHJldHVybiAt RU5PTUVNOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnaXJxLT5idXMgPSBkaWdsLT5i dXMgPSBwdF9pcnFfYmluZC0+dS5wY2kuYnVzOworICAgICAgICAgICAgZ2lycS0+ZGV2aWNlID0g ZGlnbC0+ZGV2aWNlID0gcHRfaXJxX2JpbmQtPnUucGNpLmRldmljZTsKKyAgICAgICAgICAgIGdp cnEtPmludHggPSBkaWdsLT5pbnR4ID0gcHRfaXJxX2JpbmQtPnUucGNpLmludHg7CisgICAgICAg ICAgICBsaXN0X2FkZF90YWlsKCZkaWdsLT5saXN0LCAmcGlycV9kcGNpLT5kaWdsX2xpc3QpOwog Ci0gICAgICAgIGRpZ2wtPmJ1cyA9IGJ1czsKLSAgICAgICAgZGlnbC0+ZGV2aWNlID0gZGV2aWNl OwotICAgICAgICBkaWdsLT5pbnR4ID0gaW50eDsKLSAgICAgICAgbGlzdF9hZGRfdGFpbCgmZGln bC0+bGlzdCwgJnBpcnFfZHBjaS0+ZGlnbF9saXN0KTsKKyAgICAgICAgICAgIGd1ZXN0X2dzaSA9 IGh2bV9wY2lfaW50eF9nc2koZGlnbC0+ZGV2aWNlLCBkaWdsLT5pbnR4KTsKKyAgICAgICAgICAg IGxpbmsgPSBodm1fcGNpX2ludHhfbGluayhkaWdsLT5kZXZpY2UsIGRpZ2wtPmludHgpOwogCi0g ICAgICAgIGdpcnEtPmJ1cyA9IGJ1czsKLSAgICAgICAgZ2lycS0+ZGV2aWNlID0gZGV2aWNlOwot ICAgICAgICBnaXJxLT5pbnR4ID0gaW50eDsKLSAgICAgICAgZ2lycS0+bWFjaGluZV9nc2kgPSBw aXJxOwotICAgICAgICBsaXN0X2FkZF90YWlsKCZnaXJxLT5saXN0LCAmaHZtX2lycV9kcGNpLT5n aXJxW2d1ZXN0X2dzaV0pOworICAgICAgICAgICAgaHZtX2lycV9kcGNpLT5saW5rX2NudFtsaW5r XSsrOworCisgICAgICAgICAgICBnaXJxLT5tYWNoaW5lX2dzaSA9IHBpcnE7CisgICAgICAgICAg ICBsaXN0X2FkZF90YWlsKCZnaXJxLT5saXN0LCAmaHZtX2lycV9kcGNpLT5naXJxW2d1ZXN0X2dz aV0pOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgLyog TVNJX1RSQU5TTEFURSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZSBkb21haW4uICov CisgICAgICAgICAgICBpZiAoIHB0X2lycV9iaW5kLT5pcnFfdHlwZSAhPSBQVF9JUlFfVFlQRV9Q Q0kgfHwKKyAgICAgICAgICAgICAgICAgcGlycSA+PSBodm1fZG9tYWluX2lycShkKS0+bnJfZ3Np cyApCisgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgICAgICBndWVzdF9n c2kgPSBwaXJxOworICAgICAgICB9CiAKICAgICAgICAgLyogQmluZCB0aGUgc2FtZSBtaXJxIG9u Y2UgaW4gdGhlIHNhbWUgZG9tYWluICovCiAgICAgICAgIGlmICggIShwaXJxX2RwY2ktPmZsYWdz ICYgSFZNX0lSUV9EUENJX01BUFBFRCkgKQpAQCAtNDcyLDcgKzUxNCwyOCBAQCBpbnQgcHRfaXJx X2NyZWF0ZV9iaW5kKAogICAgICAgICAgICAgICAgIHBpcnFfZHBjaS0+ZmxhZ3MgPSBIVk1fSVJR X0RQQ0lfTUFQUEVEIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFZNX0lS UV9EUENJX01BQ0hfUENJIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFZN X0lSUV9EUENJX0dVRVNUX1BDSTsKLSAgICAgICAgICAgICAgICBzaGFyZSA9IEJJTkRfUElSUV9f V0lMTF9TSEFSRTsKKyAgICAgICAgICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4oZCkg KQorICAgICAgICAgICAgICAgICAgICBzaGFyZSA9IEJJTkRfUElSUV9fV0lMTF9TSEFSRTsKKyAg ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgcGluOworICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX3Zpb2Fw aWMgKnZpb2FwaWMgPSBnc2lfdmlvYXBpYyhkLCBndWVzdF9nc2ksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwaW4pOworCisg ICAgICAgICAgICAgICAgICAgIGlmICggIXZpb2FwaWMgKQorICAgICAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgICAgIHBpcnFfZHBjaS0+ZmxhZ3MgfD0gSFZNX0lSUV9EUENJX0lERU5U SVRZX0dTSTsKKyAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICog Q2hlY2sgaWYgdGhlIGNvcnJlc3BvbmRpbmcgdklPIEFQSUMgcGluIGlzIGNvbmZpZ3VyZWQKKyAg ICAgICAgICAgICAgICAgICAgICogbGV2ZWwgb3IgZWRnZSB0cmlnZ2VyLCBsZXZlbCB0cmlnZ2Vy ZWQgaW50ZXJydXB0cyB3aWxsCisgICAgICAgICAgICAgICAgICAgICAqIGJlIG1hcmtlZCBhcyBz aGFyZWFibGUuCisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBB U1NFUlQoIXZpb2FwaWMtPnJlZGlydGJsW3Bpbl0uZmllbGRzLm1hc2spOworICAgICAgICAgICAg ICAgICAgICBzaGFyZSA9IHZpb2FwaWMtPnJlZGlydGJsW3Bpbl0uZmllbGRzLnRyaWdfbW9kZTsK KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8qIEluaXQg dGltZXIgYmVmb3JlIGJpbmRpbmcgKi8KQEAgLTQ4OSw5ICs1NTIsMTYgQEAgaW50IHB0X2lycV9j cmVhdGVfYmluZCgKICAgICAgICAgICAgICAgICAgKiBJUlFfR1VFU1QgaXMgbm90IHNldC4gQXMg c3VjaCB3ZSBjYW4gcmVzZXQgJ2RvbScgZGlyZWN0bHkuCiAgICAgICAgICAgICAgICAgICovCiAg ICAgICAgICAgICAgICAgcGlycV9kcGNpLT5kb20gPSBOVUxMOwotICAgICAgICAgICAgICAgIGxp c3RfZGVsKCZnaXJxLT5saXN0KTsKLSAgICAgICAgICAgICAgICBsaXN0X2RlbCgmZGlnbC0+bGlz dCk7Ci0gICAgICAgICAgICAgICAgaHZtX2lycV9kcGNpLT5saW5rX2NudFtsaW5rXS0tOworICAg ICAgICAgICAgICAgIGlmICggZ2lycSB8fCBkaWdsICkKKyAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsaW5rOworCisgICAgICAgICAgICAgICAgICAg IEFTU0VSVChnaXJxICYmIGRpZ2wpOworICAgICAgICAgICAgICAgICAgICBsaXN0X2RlbCgmZ2ly cS0+bGlzdCk7CisgICAgICAgICAgICAgICAgICAgIGxpc3RfZGVsKCZkaWdsLT5saXN0KTsKKyAg ICAgICAgICAgICAgICAgICAgbGluayA9IGh2bV9wY2lfaW50eF9saW5rKGRpZ2wtPmRldmljZSwg ZGlnbC0+aW50eCk7CisgICAgICAgICAgICAgICAgICAgIGh2bV9pcnFfZHBjaS0+bGlua19jbnRb bGlua10tLTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcGlycV9kcGNpLT5m bGFncyA9IDA7CiAgICAgICAgICAgICAgICAgcGlycV9jbGVhbnVwX2NoZWNrKGluZm8sIGQpOwog ICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZkLT5ldmVudF9sb2NrKTsKQEAgLTUwNCwxMCAr NTc0LDE3IEBAIGludCBwdF9pcnFfY3JlYXRlX2JpbmQoCiAgICAgICAgIHNwaW5fdW5sb2NrKCZk LT5ldmVudF9sb2NrKTsKIAogICAgICAgICBpZiAoIGlvbW11X3ZlcmJvc2UgKQotICAgICAgICAg ICAgcHJpbnRrKFhFTkxPR19HX0lORk8KLSAgICAgICAgICAgICAgICAgICAiZCVkOiBiaW5kOiBt X2dzaT0ldSBnX2dzaT0ldSBkZXY9JTAyeC4lMDJ4LiV1IGludHg9JXVcbiIsCi0gICAgICAgICAg ICAgICAgICAgZC0+ZG9tYWluX2lkLCBwaXJxLCBndWVzdF9nc2ksIGJ1cywKLSAgICAgICAgICAg ICAgICAgICBQQ0lfU0xPVChkZXZpY2UpLCBQQ0lfRlVOQyhkZXZpY2UpLCBpbnR4KTsKKyAgICAg ICAgeworICAgICAgICAgICAgY2hhciBidWZbMjRdID0gIiI7CisKKyAgICAgICAgICAgIGlmICgg IWlzX2hhcmR3YXJlX2RvbWFpbihkKSApCisgICAgICAgICAgICAgICAgc25wcmludGYoYnVmLCBB UlJBWV9TSVpFKGJ1ZiksICIgZGV2PSUwMnguJTAyeC4ldSBpbnR4PSV1IiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICBkaWdsLT5idXMsIFBDSV9TTE9UKGRpZ2wtPmRldmljZSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgUENJX0ZVTkMoZGlnbC0+ZGV2aWNlKSwgZGlnbC0+aW50eCk7CisK KyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfR19JTkZPICJkJWQ6IGJpbmQ6IG1fZ3NpPSV1IGdf Z3NpPSV1JXNcbiIsCisgICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBwaXJxLCBndWVz dF9nc2ksIGJ1Zik7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC01NTQs NyArNjMxLDcgQEAgaW50IHB0X2lycV9kZXN0cm95X2JpbmQoCiAKICAgICBodm1faXJxX2RwY2kg PSBkb21haW5fZ2V0X2lycV9kcGNpKGQpOwogCi0gICAgaWYgKCBodm1faXJxX2RwY2kgPT0gTlVM TCApCisgICAgaWYgKCBodm1faXJxX2RwY2kgPT0gTlVMTCAmJiAhaXNfaGFyZHdhcmVfZG9tYWlu KGQpICkKICAgICB7CiAgICAgICAgIHNwaW5fdW5sb2NrKCZkLT5ldmVudF9sb2NrKTsKICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7CkBAIC01NjMsNyArNjQwLDcgQEAgaW50IHB0X2lycV9kZXN0cm95 X2JpbmQoCiAgICAgcGlycSA9IHBpcnFfaW5mbyhkLCBtYWNoaW5lX2dzaSk7CiAgICAgcGlycV9k cGNpID0gcGlycV9kcGNpKHBpcnEpOwogCi0gICAgaWYgKCBwdF9pcnFfYmluZC0+aXJxX3R5cGUg IT0gUFRfSVJRX1RZUEVfTVNJICkKKyAgICBpZiAoIGh2bV9pcnFfZHBjaSAmJiBwdF9pcnFfYmlu ZC0+aXJxX3R5cGUgIT0gUFRfSVJRX1RZUEVfTVNJICkKICAgICB7CiAgICAgICAgIHVuc2lnbmVk IGludCBidXMgPSBwdF9pcnFfYmluZC0+dS5wY2kuYnVzOwogICAgICAgICB1bnNpZ25lZCBpbnQg ZGV2aWNlID0gcHRfaXJxX2JpbmQtPnUucGNpLmRldmljZTsKQEAgLTYzOCwxMSArNzE1LDE1IEBA IGludCBwdF9pcnFfZGVzdHJveV9iaW5kKAogICAgIGlmICggd2hhdCAmJiBpb21tdV92ZXJib3Nl ICkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGludCBkZXZpY2UgPSBwdF9pcnFfYmluZC0+dS5w Y2kuZGV2aWNlOworICAgICAgICBjaGFyIGJ1ZlsyNF0gPSAiIjsKKworICAgICAgICBpZiAoICFp c19oYXJkd2FyZV9kb21haW4oZCkgKQorICAgICAgICAgICAgc25wcmludGYoYnVmLCBBUlJBWV9T SVpFKGJ1ZiksICIgZGV2PSUwMnguJTAyeC4ldSBpbnR4PSV1IiwKKyAgICAgICAgICAgICAgICAg ICAgIHB0X2lycV9iaW5kLT51LnBjaS5idXMsIFBDSV9TTE9UKGRldmljZSksCisgICAgICAgICAg ICAgICAgICAgICBQQ0lfRlVOQyhkZXZpY2UpLCBwdF9pcnFfYmluZC0+dS5wY2kuaW50eCk7CiAK LSAgICAgICAgcHJpbnRrKFhFTkxPR19HX0lORk8KLSAgICAgICAgICAgICAgICJkJWQgJXMgdW5t YXA6IG1faXJxPSV1IGRldj0lMDJ4OiUwMnguJXUgaW50eD0ldVxuIiwKLSAgICAgICAgICAgICAg IGQtPmRvbWFpbl9pZCwgd2hhdCwgbWFjaGluZV9nc2ksIHB0X2lycV9iaW5kLT51LnBjaS5idXMs Ci0gICAgICAgICAgICAgICBQQ0lfU0xPVChkZXZpY2UpLCBQQ0lfRlVOQyhkZXZpY2UpLCBwdF9p cnFfYmluZC0+dS5wY2kuaW50eCk7CisgICAgICAgIHByaW50ayhYRU5MT0dfR19JTkZPICJkJWQg JXMgdW5tYXA6IG1faXJxPSV1JXNcbiIsCisgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIHdo YXQsIG1hY2hpbmVfZ3NpLCBidWYpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtNjk2LDcg Kzc3Nyw4IEBAIGludCBodm1fZG9fSVJRX2RwY2koc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHBp cnEgKnBpcnEpCiAgICAgc3RydWN0IGh2bV9pcnFfZHBjaSAqZHBjaSA9IGRvbWFpbl9nZXRfaXJx X2RwY2koZCk7CiAgICAgc3RydWN0IGh2bV9waXJxX2RwY2kgKnBpcnFfZHBjaSA9IHBpcnFfZHBj aShwaXJxKTsKIAotICAgIGlmICggIWlvbW11X2VuYWJsZWQgfHwgIWRwY2kgfHwgIXBpcnFfZHBj aSB8fAorICAgIGlmICggIWlzX2h2bV9kb21haW4oZCkgfHwgIWlvbW11X2VuYWJsZWQgfHwKKyAg ICAgICAgICghaXNfaGFyZHdhcmVfZG9tYWluKGQpICYmICFkcGNpKSB8fCAhcGlycV9kcGNpIHx8 CiAgICAgICAgICAhKHBpcnFfZHBjaS0+ZmxhZ3MgJiBIVk1fSVJRX0RQQ0lfTUFQUEVEKSApCiAg ICAgICAgIHJldHVybiAwOwogCkBAIC03NTcsNyArODM5LDcgQEAgdm9pZCBodm1fZHBjaV9tc2lf ZW9pKHN0cnVjdCBkb21haW4gKmQsIGludCB2ZWN0b3IpCiAKIHN0YXRpYyB2b2lkIGh2bV9kaXJx X2Fzc2lzdChzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgaHZtX3BpcnFfZHBjaSAqcGlycV9kcGNp KQogewotICAgIGlmICggdW5saWtlbHkoIWh2bV9kb21haW5faXJxKGQpLT5kcGNpKSApCisgICAg aWYgKCB1bmxpa2VseSghaHZtX2RvbWFpbl9pcnEoZCktPmRwY2kpICYmICFpc19oYXJkd2FyZV9k b21haW4oZCkgKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CiAgICAgICAg IHJldHVybjsKQEAgLTc4OSwxMCArODcxLDE3IEBAIHN0YXRpYyB2b2lkIGh2bV9kaXJxX2Fzc2lz dChzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgaHZtX3BpcnFfZHBjaSAqcGlycV9kcGNpKQogCiAg ICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBkaWdsLCAmcGlycV9kcGNpLT5kaWdsX2xpc3Qs IGxpc3QgKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoIShwaXJxX2RwY2ktPmZsYWdz ICYgSFZNX0lSUV9EUENJX0lERU5USVRZX0dTSSkpOwogICAgICAgICAgICAgaHZtX3BjaV9pbnR4 X2Fzc2VydChkLCBkaWdsLT5kZXZpY2UsIGRpZ2wtPmludHgpOwogICAgICAgICAgICAgcGlycV9k cGNpLT5wZW5kaW5nKys7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoIHBpcnFfZHBjaS0+Zmxh Z3MgJiBIVk1fSVJRX0RQQ0lfSURFTlRJVFlfR1NJICkKKyAgICAgICAgeworICAgICAgICAgICAg aHZtX2dzaV9hc3NlcnQoZCwgcGlycS0+cGlycSk7CisgICAgICAgICAgICBwaXJxX2RwY2ktPnBl bmRpbmcrKzsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICggcGlycV9kcGNpLT5mbGFncyAmIEhW TV9JUlFfRFBDSV9UUkFOU0xBVEUgKQogICAgICAgICB7CiAgICAgICAgICAgICAvKiBmb3IgdHJh bnNsYXRlZCBNU0kgdG8gSU5UeCBpbnRlcnJ1cHQsIGVvaSBhcyBlYXJseSBhcyBwb3NzaWJsZSAq LwpAQCAtODE0LDE3ICs5MDMsMTAgQEAgc3RhdGljIHZvaWQgaHZtX2RpcnFfYXNzaXN0KHN0cnVj dCBkb21haW4gKmQsIHN0cnVjdCBodm1fcGlycV9kcGNpICpwaXJxX2RwY2kpCiAgICAgc3Bpbl91 bmxvY2soJmQtPmV2ZW50X2xvY2spOwogfQogCi1zdGF0aWMgdm9pZCBfX2h2bV9kcGNpX2VvaShz dHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IGh2bV9naXJxX2RwY2lfbWFwcGluZyAqZ2lycSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHVuaW9uIHZpb2FwaWNfcmVkaXJfZW50cnkgKmVudCkKK3N0YXRpYyB2b2lkIGh2bV9w aXJxX2VvaShzdHJ1Y3QgcGlycSAqcGlycSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1bmlvbiB2aW9hcGljX3JlZGlyX2VudHJ5ICplbnQpCiB7Ci0gICAgc3RydWN0IHBpcnEgKnBp cnEgPSBwaXJxX2luZm8oZCwgZ2lycS0+bWFjaGluZV9nc2kpOwotICAgIHN0cnVjdCBodm1fcGly cV9kcGNpICpwaXJxX2RwY2k7Ci0KLSAgICBpZiAoICFodm1fZG9tYWluX3VzZV9waXJxKGQsIHBp cnEpICkKLSAgICAgICAgaHZtX3BjaV9pbnR4X2RlYXNzZXJ0KGQsIGdpcnEtPmRldmljZSwgZ2ly cS0+aW50eCk7Ci0KLSAgICBwaXJxX2RwY2kgPSBwaXJxX2RwY2kocGlycSk7CisgICAgc3RydWN0 IGh2bV9waXJxX2RwY2kgKnBpcnFfZHBjaSA9IHBpcnFfZHBjaShwaXJxKTsKIAogICAgIC8qCiAg ICAgICogTm8gbmVlZCB0byBnZXQgdmVjdG9yIGxvY2sgZm9yIHRpbWVyCkBAIC04MzksNiArOTIx LDMxIEBAIHN0YXRpYyB2b2lkIF9faHZtX2RwY2lfZW9pKHN0cnVjdCBkb21haW4gKmQsCiAgICAg cGlycV9ndWVzdF9lb2kocGlycSk7CiB9CiAKK3N0YXRpYyB2b2lkIF9faHZtX2RwY2lfZW9pKHN0 cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qg aHZtX2dpcnFfZHBjaV9tYXBwaW5nICpnaXJxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgdW5pb24gdmlvYXBpY19yZWRpcl9lbnRyeSAqZW50KQoreworICAgIHN0cnVjdCBwaXJx ICpwaXJxID0gcGlycV9pbmZvKGQsIGdpcnEtPm1hY2hpbmVfZ3NpKTsKKworICAgIGlmICggIWh2 bV9kb21haW5fdXNlX3BpcnEoZCwgcGlycSkgKQorICAgICAgICBodm1fcGNpX2ludHhfZGVhc3Nl cnQoZCwgZ2lycS0+ZGV2aWNlLCBnaXJxLT5pbnR4KTsKKworICAgIGh2bV9waXJxX2VvaShwaXJx LCBlbnQpOworfQorCitzdGF0aWMgdm9pZCBodm1fZ3NpX2VvaShzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBpbnQgZ3NpLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5pb24gdmlv YXBpY19yZWRpcl9lbnRyeSAqZW50KQoreworICAgIHN0cnVjdCBwaXJxICpwaXJxID0gcGlycV9p bmZvKGQsIGdzaSk7CisKKyAgICAvKiBDaGVjayBpZiBHU0kgaXMgYWN0dWFsbHkgbWFwcGVkLiAq LworICAgIGlmICggIXBpcnFfZHBjaShwaXJxKSApCisgICAgICAgIHJldHVybjsKKworICAgIGh2 bV9nc2lfZGVhc3NlcnQoZCwgZ3NpKTsKKyAgICBodm1fcGlycV9lb2kocGlycSwgZW50KTsKK30K Kwogdm9pZCBodm1fZHBjaV9lb2koc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGd1ZXN0 X2dzaSwKICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuaW9uIHZpb2FwaWNfcmVkaXJfZW50cnkg KmVudCkKIHsKQEAgLTg0OCw2ICs5NTUsMTMgQEAgdm9pZCBodm1fZHBjaV9lb2koc3RydWN0IGRv bWFpbiAqZCwgdW5zaWduZWQgaW50IGd1ZXN0X2dzaSwKICAgICBpZiAoICFpb21tdV9lbmFibGVk ICkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKCBpc19oYXJkd2FyZV9kb21haW4oZCkgKQor ICAgIHsKKyAgICAgICAgc3Bpbl9sb2NrKCZkLT5ldmVudF9sb2NrKTsKKyAgICAgICAgaHZtX2dz aV9lb2koZCwgZ3Vlc3RfZ3NpLCBlbnQpOworICAgICAgICBnb3RvIHVubG9jazsKKyAgICB9CisK ICAgICBpZiAoIGd1ZXN0X2dzaSA8IE5SX0lTQUlSUVMgKQogICAgIHsKICAgICAgICAgaHZtX2Rw Y2lfaXNhaXJxX2VvaShkLCBndWVzdF9nc2kpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVu L2h2bS9pcnEuaCBiL3hlbi9pbmNsdWRlL3hlbi9odm0vaXJxLmgKaW5kZXggNjcxYTZmMmUwNi4u MGQyYzcyYzEwOSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2h2bS9pcnEuaAorKysgYi94 ZW4vaW5jbHVkZS94ZW4vaHZtL2lycS5oCkBAIC00MCw2ICs0MCw3IEBAIHN0cnVjdCBkZXZfaW50 eF9nc2lfbGluayB7CiAjZGVmaW5lIF9IVk1fSVJRX0RQQ0lfRU9JX0xBVENIX1NISUZUICAgICAg ICAgICAzCiAjZGVmaW5lIF9IVk1fSVJRX0RQQ0lfR1VFU1RfUENJX1NISUZUICAgICAgICAgICA0 CiAjZGVmaW5lIF9IVk1fSVJRX0RQQ0lfR1VFU1RfTVNJX1NISUZUICAgICAgICAgICA1CisjZGVm aW5lIF9IVk1fSVJRX0RQQ0lfSURFTlRJVFlfR1NJX1NISUZUICAgICAgICA2CiAjZGVmaW5lIF9I Vk1fSVJRX0RQQ0lfVFJBTlNMQVRFX1NISUZUICAgICAgICAgIDE1CiAjZGVmaW5lIEhWTV9JUlFf RFBDSV9NQUNIX1BDSSAgICAgICAgKDEgPDwgX0hWTV9JUlFfRFBDSV9NQUNIX1BDSV9TSElGVCkK ICNkZWZpbmUgSFZNX0lSUV9EUENJX01BQ0hfTVNJICAgICAgICAoMSA8PCBfSFZNX0lSUV9EUENJ X01BQ0hfTVNJX1NISUZUKQpAQCAtNDcsNiArNDgsNyBAQCBzdHJ1Y3QgZGV2X2ludHhfZ3NpX2xp bmsgewogI2RlZmluZSBIVk1fSVJRX0RQQ0lfRU9JX0xBVENIICAgICAgICgxIDw8IF9IVk1fSVJR X0RQQ0lfRU9JX0xBVENIX1NISUZUKQogI2RlZmluZSBIVk1fSVJRX0RQQ0lfR1VFU1RfUENJICAg ICAgICgxIDw8IF9IVk1fSVJRX0RQQ0lfR1VFU1RfUENJX1NISUZUKQogI2RlZmluZSBIVk1fSVJR X0RQQ0lfR1VFU1RfTVNJICAgICAgICgxIDw8IF9IVk1fSVJRX0RQQ0lfR1VFU1RfTVNJX1NISUZU KQorI2RlZmluZSBIVk1fSVJRX0RQQ0lfSURFTlRJVFlfR1NJICAgICgxIDw8IF9IVk1fSVJRX0RQ Q0lfSURFTlRJVFlfR1NJX1NISUZUKQogI2RlZmluZSBIVk1fSVJRX0RQQ0lfVFJBTlNMQVRFICAg ICAgICgxIDw8IF9IVk1fSVJRX0RQQ0lfVFJBTlNMQVRFX1NISUZUKQogCiAjZGVmaW5lIFZNU0lf REVTVF9JRF9NQVNLIDB4ZmYKQEAgLTEyMyw2ICsxMjUsMTAgQEAgdm9pZCBodm1faXNhX2lycV9h c3NlcnQoCiB2b2lkIGh2bV9pc2FfaXJxX2RlYXNzZXJ0KAogICAgIHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGludCBpc2FfaXJxKTsKIAorLyogTW9kaWZ5IHN0YXRlIG9mIEdTSXMuICovCit2 b2lkIGh2bV9nc2lfYXNzZXJ0KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBnc2kpOwor dm9pZCBodm1fZ3NpX2RlYXNzZXJ0KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBnc2kp OworCiBpbnQgaHZtX3NldF9wY2lfbGlua19yb3V0ZShzdHJ1Y3QgZG9tYWluICpkLCB1OCBsaW5r LCB1OCBpc2FfaXJxKTsKIAogaW50IGh2bV9pbmplY3RfbXNpKHN0cnVjdCBkb21haW4gKmQsIHVp bnQ2NF90IGFkZHIsIHVpbnQzMl90IGRhdGEpOwotLSAKMi4xMS4wIChBcHBsZSBHaXQtODEpCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==