From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v9 02/11] x86/mmcfg: add handlers for the PVH Dom0 MMCFG areas Date: Wed, 14 Mar 2018 14:03:59 +0000 Message-ID: <20180314140408.40947-3-roger.pau@citrix.com> References: <20180314140408.40947-1-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ew79l-0003nQ-L0 for xen-devel@lists.xenproject.org; Wed, 14 Mar 2018 14:13:29 +0000 In-Reply-To: <20180314140408.40947-1-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Paul Durrant , Jan Beulich , Boris Ostrovsky , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org SW50cm9kdWNlIGEgc2V0IG9mIGhhbmRsZXJzIGZvciB0aGUgYWNjZXNzZXMgdG8gdGhlIE1NQ0ZH IGFyZWFzLiBUaG9zZQphcmVhcyBhcmUgc2V0dXAgYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mIHRo ZSBoYXJkd2FyZSBNTUNGRyB0YWJsZXMsCmFuZCB0aGUgbGlzdCBvZiBoYW5kbGVkIE1NQ0ZHIGFy ZWFzIGlzIHN0b3JlZCBpbnNpZGUgb2YgdGhlIGh2bV9kb21haW4Kc3RydWN0LgoKVGhlIHJlYWQv d3JpdGVzIGFyZSBmb3J3YXJkZWQgdG8gdGhlIGdlbmVyaWMgdnBjaSBoYW5kbGVycyBvbmNlIHRo ZQphZGRyZXNzIGlzIGRlY29kZWQgaW4gb3JkZXIgdG8gb2J0YWluIHRoZSBkZXZpY2UgYW5kIHJl Z2lzdGVyIHRoZQpndWVzdCBpcyB0cnlpbmcgdG8gYWNjZXNzLgoKU2lnbmVkLW9mZi1ieTogUm9n ZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+ClJldmlld2VkLWJ5OiBQYXVsIER1 cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogSmFuIEJldWxpY2gg PGpiZXVsaWNoQHN1c2UuY29tPgotLS0KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNv bT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBQYXVs IER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgotLS0KQ2hhbmdlcyBzaW5jZSB2NzoK IC0gQWRkIGNoZWNrIGZvciBlbmRfYnVzID49IHN0YXJ0X2J1cyB0byByZWdpc3Rlcl92cGNpX21t Y2ZnX2hhbmRsZXIuCiAtIFByb3RlY3QgZGVzdHJveV92cGNpX21tY2ZnIHdpdGggdGhlIG1tY2Zn X2xvY2suCgpDaGFuZ2VzIHNpbmNlIHY2OgogLSBNb3ZlIGFsbG9jYXRpb24gb2YgbW1jZmcgb3V0 c2lkZSBvZiB0aGUgbG9ja2VkIHJlZ2lvbi4KIC0gRG8gcHJvcGVyIG92ZXJsYXAgY2hlY2tzIHdo ZW4gYWRkaW5nIG1tY2ZnIHJlZ2lvbnMuCiAtIFJldHVybiBfUkVUUlkgaWYgdGhlIG1jZmcgcmVn aW9uIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgcmVhZC93cml0ZQogICBoYW5kbGVycy4gVGhpcyBt ZWFucyB0aGUgbWNmZyBhcmVhIGhhcyBiZWVuIHJlbW92ZWQgYmV0d2VlbiB0aGUKICAgYWNjZXB0 IGFuZCB0aGUgcmVhZC93cml0ZSBjYWxscy4KCkNoYW5nZXMgc2luY2UgdjU6CiAtIFN3aXRjaCB0 byB1c2UgcGNpX3NiZGZfdC4KIC0gU3dpdGNoIHRvIHRoZSBuZXcgcGVyIHZwY2kgbG9ja3MuCiAt IE1vdmUgdGhlIG1tY2ZnIHJlbGF0ZWQgZXh0ZXJuYWwgZGVmaW5pdGlvbnMgdG8gYXNtLXg4Ni9w Y2kuaC4KCkNoYW5nZXMgc2luY2UgdjQ6CiAtIENoYW5nZSB0aGUgYXR0cmlidXRlIG9mIHB2aF9z ZXR1cF9tbWNmZyB0byBfX2h3ZG9tX2luaXQuCiAtIFRyeSB0byBhZGQgYXMgbWFueSBNTUNGRyBy ZWdpb25zIGFzIHBvc3NpYmxlLCBldmVuIGlmIG9uZSBmYWlscyB0bwogICBhZGQuCiAtIENoYW5n ZSBzb21lIGZpZWxkcyBvZiB0aGUgaHZtX21tY2ZnIHN0cnVjdDogdHVybiBzaXplIGludG8gYQog ICB1bnNpZ25lZCBpbnQsIHNlZ21lbnQgaW50byB1aW50MTZfdCBhbmQgYnVzIGludG8gdWludDhf dC4KIC0gQ29udmVydCBzb21lIGFkZHJlc3MgcGFyYW1ldGVycyBmcm9tIHVuc2lnbmVkIGxvbmcg dG8gcGFkZHJfdCBmb3IKICAgY29uc2lzdGVuY3kuCiAtIE1ha2UgdnBjaV9tbWNmZ19kZWNvZGVf YWRkciByZXR1cm4gdGhlIGRlY29kZWQgcmVnaXN0ZXIgaW4gdGhlCiAgIHJldHVybiBvZiB0aGUg ZnVuY3Rpb24uCiAtIEludHJvZHVjZSBhIG5ldyBtYWNybyB0byBjb252ZXJ0IGEgTU1DRkcgYWRk cmVzcyBpbnRvIGEgQkRGLCBhbmQKICAgdXNlIGl0IGluIHZwY2lfbW1jZmdfZGVjb2RlX2FkZHIg dG8gY2xhcmlmeSB0aGUgbG9naWMuCiAtIEluIHZwY2lfbW1jZmdfe3JlYWQvd3JpdGV9IHVuaWZ5 IHRoZSBsb2dpYyBmb3IgOEIgYWNjZXNzZXMgYW5kCiAgIHNtYWxsZXIgb25lcy4KIC0gQWRkIHRo ZSBfX2h3ZG9tX2luaXQgYXR0cmlidXRlIHRvIHJlZ2lzdGVyX3ZwY2lfbW1jZmdfaGFuZGxlci4K IC0gVGVzdCB0aGF0IHJlZyArIHNpemUgZG9lc24ndCBjcm9zcyBhIGRldmljZSBib3VuZGFyeS4K CkNoYW5nZXMgc2luY2UgdjM6CiAtIFByb3BhZ2F0ZSBjaGFuZ2VzIGZyb20gcHJldmlvdXMgcGF0 Y2hlczogZHJvcCB4ZW5fIHByZWZpeCBmb3IgdnBjaQogICBmdW5jdGlvbnMsIHBhc3Mgc2xvdCBh bmQgZnVuYyBpbnN0ZWFkIG9mIGRldmZuIGFuZCBmaXggdGhlIGVycm9yCiAgIHBhdGhzIG9mIHRo ZSBNTUNGRyBoYW5kbGVycy4KIC0gcy9lY2FtL21tY2ZnLy4KIC0gTW92ZSB0aGUgZGVzdHJveSBj b2RlIHRvIGEgc2VwYXJhdGUgZnVuY3Rpb24sIHNvIHRoZSBodm1fbW1jZmcKICAgc3RydWN0IGNh biBiZSBwcml2YXRlIHRvIGh2bS9pby5jLgogLSBDb25zdGlmeSB0aGUgcmV0dXJuIG9mIHZwY2lf bW1jZmdfZmluZC4KIC0gVXNlIGQgaW5zdGVhZCBvZiB2LT5kb21haW4gaW4gdnBjaV9tbWNmZ19h Y2NlcHQuCiAtIEFsbG93IDhieXRlIGFjY2Vzc2VzIHRvIHRoZSBtbWNmZy4KCkNoYW5nZXMgc2lu Y2UgdjE6CiAtIEFkZGVkIGxvY2tpbmcuCi0tLQogeGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxk LmMgICAgfCAgMjEgKysrKysKIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgIHwgICA0 ICsKIHhlbi9hcmNoL3g4Ni9odm0vaW8uYyAgICAgICAgICAgIHwgMTg0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLQogeGVuL2FyY2gveDg2L3g4Nl82NC9tbWNvbmZpZy5o ICAgfCAgIDQgLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmggfCAgIDQgKwogeGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vaW8uaCAgICAgfCAgIDcgKysKIHhlbi9pbmNsdWRlL2FzbS14 ODYvcGNpLmggICAgICAgIHwgICA2ICsrCiA3IGZpbGVzIGNoYW5nZWQsIDIyNSBpbnNlcnRpb25z KCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZG9tMF9i dWlsZC5jIGIveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxkLmMKaW5kZXggYWZlYmFlYzcwYi4u YjhhYTEzMmFkZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxkLmMKKysr IGIveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxkLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNs dWRlIDx4ZW4vaW5pdC5oPgogI2luY2x1ZGUgPHhlbi9saWJlbGYuaD4KICNpbmNsdWRlIDx4ZW4v bXVsdGlib290Lmg+CisjaW5jbHVkZSA8eGVuL3BjaS5oPgogI2luY2x1ZGUgPHhlbi9zb2Z0aXJx Lmg+CiAKICNpbmNsdWRlIDxhY3BpL2FjdGFibGVzLmg+CkBAIC0xMDU1LDYgKzEwNTYsMjQgQEAg c3RhdGljIGludCBfX2luaXQgcHZoX3NldHVwX2FjcGkoc3RydWN0IGRvbWFpbiAqZCwgcGFkZHJf dCBzdGFydF9pbmZvKQogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCBfX2h3ZG9tX2lu aXQgcHZoX3NldHVwX21tY2ZnKHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgdW5zaWduZWQgaW50 IGk7CisgICAgaW50IHJjOworCisgICAgZm9yICggaSA9IDA7IGkgPCBwY2lfbW1jZmdfY29uZmln X251bTsgaSsrICkKKyAgICB7CisgICAgICAgIHJjID0gcmVnaXN0ZXJfdnBjaV9tbWNmZ19oYW5k bGVyKGQsIHBjaV9tbWNmZ19jb25maWdbaV0uYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGNpX21tY2ZnX2NvbmZpZ1tpXS5zdGFydF9idXNfbnVtYmVy LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY2lfbW1jZmdfY29u ZmlnW2ldLmVuZF9idXNfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwY2lfbW1jZmdfY29uZmlnW2ldLnBjaV9zZWdtZW50KTsKKyAgICAgICAgaWYgKCBy YyApCisgICAgICAgICAgICBwcmludGsoIlVuYWJsZSB0byBzZXR1cCBNTUNGRyBoYW5kbGVyIGF0 ICUjbHggZm9yIHNlZ21lbnQgJXVcbiIsCisgICAgICAgICAgICAgICAgICAgcGNpX21tY2ZnX2Nv bmZpZ1tpXS5hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgIHBjaV9tbWNmZ19jb25maWdbaV0u cGNpX3NlZ21lbnQpOworICAgIH0KK30KKwogaW50IF9faW5pdCBkb20wX2NvbnN0cnVjdF9wdmgo c3RydWN0IGRvbWFpbiAqZCwgY29uc3QgbW9kdWxlX3QgKmltYWdlLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbWFnZV9oZWFkcm9vbSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1vZHVsZV90ICppbml0cmQsCkBAIC0xMDk2LDYgKzExMTUsOCBA QCBpbnQgX19pbml0IGRvbTBfY29uc3RydWN0X3B2aChzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBt b2R1bGVfdCAqaW1hZ2UsCiAgICAgICAgIHJldHVybiByYzsKICAgICB9CiAKKyAgICBwdmhfc2V0 dXBfbW1jZmcoZCk7CisKICAgICBwYW5pYygiQnVpbGRpbmcgYSBQVkh2MiBEb20wIGlzIG5vdCB5 ZXQgc3VwcG9ydGVkLiIpOwogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggYTg0MDEzMGMxNy4u NjkwZDY4YWVmZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4v YXJjaC94ODYvaHZtL2h2bS5jCkBAIC01ODUsOCArNTg1LDEwIEBAIGludCBodm1fZG9tYWluX2lu aXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkb21jcl9mbGFncywKICAg ICBzcGluX2xvY2tfaW5pdCgmZC0+YXJjaC5odm1fZG9tYWluLmlycV9sb2NrKTsKICAgICBzcGlu X2xvY2tfaW5pdCgmZC0+YXJjaC5odm1fZG9tYWluLnVjX2xvY2spOwogICAgIHNwaW5fbG9ja19p bml0KCZkLT5hcmNoLmh2bV9kb21haW4ud3JpdGVfbWFwLmxvY2spOworICAgIHJ3bG9ja19pbml0 KCZkLT5hcmNoLmh2bV9kb21haW4ubW1jZmdfbG9jayk7CiAgICAgSU5JVF9MSVNUX0hFQUQoJmQt PmFyY2guaHZtX2RvbWFpbi53cml0ZV9tYXAubGlzdCk7CiAgICAgSU5JVF9MSVNUX0hFQUQoJmQt PmFyY2guaHZtX2RvbWFpbi5nMm1faW9wb3J0X2xpc3QpOworICAgIElOSVRfTElTVF9IRUFEKCZk LT5hcmNoLmh2bV9kb21haW4ubW1jZmdfcmVnaW9ucyk7CiAKICAgICByYyA9IGNyZWF0ZV9wZXJk b21haW5fbWFwcGluZyhkLCBQRVJET01BSU5fVklSVF9TVEFSVCwgMCwgTlVMTCwgTlVMTCk7CiAg ICAgaWYgKCByYyApCkBAIC03MzIsNiArNzM0LDggQEAgdm9pZCBodm1fZG9tYWluX2Rlc3Ryb3ko c3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgbGlzdF9kZWwoJmlvcG9ydC0+bGlzdCk7CiAgICAg ICAgIHhmcmVlKGlvcG9ydCk7CiAgICAgfQorCisgICAgZGVzdHJveV92cGNpX21tY2ZnKGQpOwog fQogCiBzdGF0aWMgaW50IGh2bV9zYXZlX3RzY19hZGp1c3Qoc3RydWN0IGRvbWFpbiAqZCwgaHZt X2RvbWFpbl9jb250ZXh0X3QgKmgpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2lvLmMg Yi94ZW4vYXJjaC94ODYvaHZtL2lvLmMKaW5kZXggNjkxNGJkNjgzNC4uMDQ0MjVjMDY0YiAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pby5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaW8u YwpAQCAtMjgzLDcgKzI4Myw3IEBAIHVuc2lnbmVkIGludCBodm1fcGNpX2RlY29kZV9hZGRyKHVu c2lnbmVkIGludCBjZjgsIHVuc2lnbmVkIGludCBhZGRyLAogc3RhdGljIGJvb2wgdnBjaV9hY2Nl c3NfYWxsb3dlZCh1bnNpZ25lZCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgbGVuKQogewogICAgIC8q IENoZWNrIGFjY2VzcyBzaXplLiAqLwotICAgIGlmICggbGVuICE9IDEgJiYgbGVuICE9IDIgJiYg bGVuICE9IDQgKQorICAgIGlmICggbGVuICE9IDEgJiYgbGVuICE9IDIgJiYgbGVuICE9IDQgJiYg bGVuICE9IDggKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvKiBDaGVjayB0aGF0IGFj Y2VzcyBpcyBzaXplIGFsaWduZWQuICovCkBAIC0zODMsNiArMzgzLDE4OCBAQCB2b2lkIHJlZ2lz dGVyX3ZwY2lfcG9ydGlvX2hhbmRsZXIoc3RydWN0IGRvbWFpbiAqZCkKICAgICBoYW5kbGVyLT5v cHMgPSAmdnBjaV9wb3J0aW9fb3BzOwogfQogCitzdHJ1Y3QgaHZtX21tY2ZnIHsKKyAgICBzdHJ1 Y3QgbGlzdF9oZWFkIG5leHQ7CisgICAgcGFkZHJfdCBhZGRyOworICAgIHVuc2lnbmVkIGludCBz aXplOworICAgIHVpbnQxNl90IHNlZ21lbnQ7CisgICAgdWludDhfdCBzdGFydF9idXM7Cit9Owor CisvKiBIYW5kbGVycyB0byB0cmFwIFBDSSBNTUNGRyBjb25maWcgYWNjZXNzZXMuICovCitzdGF0 aWMgY29uc3Qgc3RydWN0IGh2bV9tbWNmZyAqdnBjaV9tbWNmZ19maW5kKGNvbnN0IHN0cnVjdCBk b21haW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBhZGRyX3QgYWRkcikKK3sKKyAgICBjb25zdCBzdHJ1Y3QgaHZtX21tY2ZnICptbWNmZzsKKwor ICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBtbWNmZywgJmQtPmFyY2guaHZtX2RvbWFpbi5tbWNm Z19yZWdpb25zLCBuZXh0ICkKKyAgICAgICAgaWYgKCBhZGRyID49IG1tY2ZnLT5hZGRyICYmIGFk ZHIgPCBtbWNmZy0+YWRkciArIG1tY2ZnLT5zaXplICkKKyAgICAgICAgICAgIHJldHVybiBtbWNm ZzsKKworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IHZwY2lfbW1j ZmdfZGVjb2RlX2FkZHIoY29uc3Qgc3RydWN0IGh2bV9tbWNmZyAqbW1jZmcsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZHJfdCBhZGRyLCBwY2lfc2JkZl90 ICpzYmRmKQoreworICAgIGFkZHIgLT0gbW1jZmctPmFkZHI7CisgICAgc2JkZi0+YmRmID0gTU1D RkdfQkRGKGFkZHIpOworICAgIHNiZGYtPmJ1cyArPSBtbWNmZy0+c3RhcnRfYnVzOworICAgIHNi ZGYtPnNlZyA9IG1tY2ZnLT5zZWdtZW50OworCisgICAgcmV0dXJuIGFkZHIgJiAoUENJX0NGR19T UEFDRV9FWFBfU0laRSAtIDEpOworfQorCitzdGF0aWMgaW50IHZwY2lfbW1jZmdfYWNjZXB0KHN0 cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIpCit7CisgICAgc3RydWN0IGRvbWFpbiAq ZCA9IHYtPmRvbWFpbjsKKyAgICBib29sIGZvdW5kOworCisgICAgcmVhZF9sb2NrKCZkLT5hcmNo Lmh2bV9kb21haW4ubW1jZmdfbG9jayk7CisgICAgZm91bmQgPSB2cGNpX21tY2ZnX2ZpbmQoZCwg YWRkcik7CisgICAgcmVhZF91bmxvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5tbWNmZ19sb2NrKTsK KworICAgIHJldHVybiBmb3VuZDsKK30KKworc3RhdGljIGludCB2cGNpX21tY2ZnX3JlYWQoc3Ry dWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBsZW4sIHVuc2lnbmVkIGxvbmcgKmRhdGEpCit7CisgICAgc3RydWN0 IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKKyAgICBjb25zdCBzdHJ1Y3QgaHZtX21tY2ZnICptbWNm ZzsKKyAgICB1bnNpZ25lZCBpbnQgcmVnOworICAgIHBjaV9zYmRmX3Qgc2JkZjsKKworICAgICpk YXRhID0gfjB1bDsKKworICAgIHJlYWRfbG9jaygmZC0+YXJjaC5odm1fZG9tYWluLm1tY2ZnX2xv Y2spOworICAgIG1tY2ZnID0gdnBjaV9tbWNmZ19maW5kKGQsIGFkZHIpOworICAgIGlmICggIW1t Y2ZnICkKKyAgICB7CisgICAgICAgIHJlYWRfdW5sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4ubW1j ZmdfbG9jayk7CisgICAgICAgIHJldHVybiBYODZFTVVMX1JFVFJZOworICAgIH0KKworICAgIHJl ZyA9IHZwY2lfbW1jZmdfZGVjb2RlX2FkZHIobW1jZmcsIGFkZHIsICZzYmRmKTsKKyAgICByZWFk X3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWluLm1tY2ZnX2xvY2spOworCisgICAgaWYgKCAhdnBj aV9hY2Nlc3NfYWxsb3dlZChyZWcsIGxlbikgfHwKKyAgICAgICAgIChyZWcgKyBsZW4pID4gUENJ X0NGR19TUEFDRV9FWFBfU0laRSApCisgICAgICAgIHJldHVybiBYODZFTVVMX09LQVk7CisKKyAg ICAvKgorICAgICAqIEFjY29yZGluZyB0byB0aGUgUENJZSAzLjFBIHNwZWNpZmljYXRpb246Cisg ICAgICogIC0gQ29uZmlndXJhdGlvbiBSZWFkcyBhbmQgV3JpdGVzIG11c3QgdXN1YWxseSBiZSBE V09SRCBvciBzbWFsbGVyCisgICAgICogICAgaW4gc2l6ZS4KKyAgICAgKiAgLSBCZWNhdXNlIFJv b3QgQ29tcGxleCBpbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCByZXF1aXJlZCB0byBzdXBwb3J0Cisg ICAgICogICAgYWNjZXNzZXMgdG8gYSBSQ1JCIHRoYXQgY3Jvc3MgRFcgYm91bmRhcmllcyBbLi4u XSBzb2Z0d2FyZQorICAgICAqICAgIHNob3VsZCB0YWtlIGNhcmUgbm90IHRvIGNhdXNlIHRoZSBn ZW5lcmF0aW9uIG9mIHN1Y2ggYWNjZXNzZXMKKyAgICAgKiAgICB3aGVuIGFjY2Vzc2luZyBhIFJD UkIgdW5sZXNzIHRoZSBSb290IENvbXBsZXggd2lsbCBzdXBwb3J0IHRoZQorICAgICAqICAgIGFj Y2Vzcy4KKyAgICAgKiAgWGVuIGhvd2V2ZXIgc3VwcG9ydHMgOGJ5dGUgYWNjZXNzZXMgYnkgc3Bs aXR0aW5nIHRoZW0gaW50byB0d28KKyAgICAgKiAgNGJ5dGUgYWNjZXNzZXMuCisgICAgICovCisg ICAgKmRhdGEgPSB2cGNpX3JlYWQoc2JkZiwgcmVnLCBtaW4oNHUsIGxlbikpOworICAgIGlmICgg bGVuID09IDggKQorICAgICAgICAqZGF0YSB8PSAodWludDY0X3QpdnBjaV9yZWFkKHNiZGYsIHJl ZyArIDQsIDQpIDw8IDMyOworCisgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKK30KKworc3RhdGlj IGludCB2cGNpX21tY2ZnX3dyaXRlKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQg bG9uZyBkYXRhKQoreworICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CisgICAgY29u c3Qgc3RydWN0IGh2bV9tbWNmZyAqbW1jZmc7CisgICAgdW5zaWduZWQgaW50IHJlZzsKKyAgICBw Y2lfc2JkZl90IHNiZGY7CisKKyAgICByZWFkX2xvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5tbWNm Z19sb2NrKTsKKyAgICBtbWNmZyA9IHZwY2lfbW1jZmdfZmluZChkLCBhZGRyKTsKKyAgICBpZiAo ICFtbWNmZyApCisgICAgeworICAgICAgICByZWFkX3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWlu Lm1tY2ZnX2xvY2spOworICAgICAgICByZXR1cm4gWDg2RU1VTF9SRVRSWTsKKyAgICB9CisKKyAg ICByZWcgPSB2cGNpX21tY2ZnX2RlY29kZV9hZGRyKG1tY2ZnLCBhZGRyLCAmc2JkZik7CisgICAg cmVhZF91bmxvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5tbWNmZ19sb2NrKTsKKworICAgIGlmICgg IXZwY2lfYWNjZXNzX2FsbG93ZWQocmVnLCBsZW4pIHx8CisgICAgICAgICAocmVnICsgbGVuKSA+ IFBDSV9DRkdfU1BBQ0VfRVhQX1NJWkUgKQorICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwor CisgICAgdnBjaV93cml0ZShzYmRmLCByZWcsIG1pbig0dSwgbGVuKSwgZGF0YSk7CisgICAgaWYg KCBsZW4gPT0gOCApCisgICAgICAgIHZwY2lfd3JpdGUoc2JkZiwgcmVnICsgNCwgNCwgZGF0YSA+ PiAzMik7CisKKyAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworfQorCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGh2bV9tbWlvX29wcyB2cGNpX21tY2ZnX29wcyA9IHsKKyAgICAuY2hlY2sgPSB2cGNpX21t Y2ZnX2FjY2VwdCwKKyAgICAucmVhZCA9IHZwY2lfbW1jZmdfcmVhZCwKKyAgICAud3JpdGUgPSB2 cGNpX21tY2ZnX3dyaXRlLAorfTsKKworaW50IF9faHdkb21faW5pdCByZWdpc3Rlcl92cGNpX21t Y2ZnX2hhbmRsZXIoc3RydWN0IGRvbWFpbiAqZCwgcGFkZHJfdCBhZGRyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0X2J1cywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBlbmRfYnVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgaW50IHNlZykKK3sKKyAgICBzdHJ1Y3QgaHZtX21tY2ZnICptbWNmZywgKm5ldyA9 IHhtYWxsb2Moc3RydWN0IGh2bV9tbWNmZyk7CisKKyAgICBBU1NFUlQoaXNfaGFyZHdhcmVfZG9t YWluKGQpKTsKKworICAgIGlmICggIW5ldyApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisg ICAgaWYgKCBzdGFydF9idXMgPiBlbmRfYnVzICkKKyAgICB7CisgICAgICAgIHhmcmVlKG5ldyk7 CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIG5ldy0+YWRkciA9IGFkZHIg KyAoc3RhcnRfYnVzIDw8IDIwKTsKKyAgICBuZXctPnN0YXJ0X2J1cyA9IHN0YXJ0X2J1czsKKyAg ICBuZXctPnNlZ21lbnQgPSBzZWc7CisgICAgbmV3LT5zaXplID0gKGVuZF9idXMgLSBzdGFydF9i dXMgKyAxKSA8PCAyMDsKKworICAgIHdyaXRlX2xvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5tbWNm Z19sb2NrKTsKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggbW1jZmcsICZkLT5hcmNoLmh2bV9k b21haW4ubW1jZmdfcmVnaW9ucywgbmV4dCApCisgICAgICAgIGlmICggbmV3LT5hZGRyIDwgbW1j ZmctPmFkZHIgKyBtbWNmZy0+c2l6ZSAmJgorICAgICAgICAgICAgIG1tY2ZnLT5hZGRyIDwgbmV3 LT5hZGRyICsgbmV3LT5zaXplICkKKyAgICAgICAgeworICAgICAgICAgICAgd3JpdGVfdW5sb2Nr KCZkLT5hcmNoLmh2bV9kb21haW4ubW1jZmdfbG9jayk7CisgICAgICAgICAgICB4ZnJlZShuZXcp OworICAgICAgICAgICAgcmV0dXJuIC1FRVhJU1Q7CisgICAgICAgIH0KKworICAgIGlmICggbGlz dF9lbXB0eSgmZC0+YXJjaC5odm1fZG9tYWluLm1tY2ZnX3JlZ2lvbnMpICkKKyAgICAgICAgcmVn aXN0ZXJfbW1pb19oYW5kbGVyKGQsICZ2cGNpX21tY2ZnX29wcyk7CisKKyAgICBsaXN0X2FkZCgm bmV3LT5uZXh0LCAmZC0+YXJjaC5odm1fZG9tYWluLm1tY2ZnX3JlZ2lvbnMpOworICAgIHdyaXRl X3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWluLm1tY2ZnX2xvY2spOworCisgICAgcmV0dXJuIDA7 Cit9CisKK3ZvaWQgZGVzdHJveV92cGNpX21tY2ZnKHN0cnVjdCBkb21haW4gKmQpCit7CisgICAg c3RydWN0IGxpc3RfaGVhZCAqbW1jZmdfcmVnaW9ucyA9ICZkLT5hcmNoLmh2bV9kb21haW4ubW1j ZmdfcmVnaW9uczsKKworICAgIHdyaXRlX2xvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5tbWNmZ19s b2NrKTsKKyAgICB3aGlsZSAoICFsaXN0X2VtcHR5KG1tY2ZnX3JlZ2lvbnMpICkKKyAgICB7Cisg ICAgICAgIHN0cnVjdCBodm1fbW1jZmcgKm1tY2ZnID0gbGlzdF9maXJzdF9lbnRyeShtbWNmZ19y ZWdpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGh2bV9tbWNmZywgbmV4dCk7CisKKyAgICAgICAgbGlzdF9kZWwoJm1tY2ZnLT5u ZXh0KTsKKyAgICAgICAgeGZyZWUobW1jZmcpOworICAgIH0KKyAgICB3cml0ZV91bmxvY2soJmQt PmFyY2guaHZtX2RvbWFpbi5tbWNmZ19sb2NrKTsKK30KKwogLyoKICAqIExvY2FsIHZhcmlhYmxl czoKICAqIG1vZGU6IEMKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW1jb25maWcu aCBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW1jb25maWcuaAppbmRleCA3NTM3NTE5NDE0Li4yZTgz Njg0OGFkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L21tY29uZmlnLmgKKysrIGIv eGVuL2FyY2gveDg2L3g4Nl82NC9tbWNvbmZpZy5oCkBAIC03NCwxMCArNzQsNiBAQCBzdGF0aWMg aW5saW5lIHZvaWQgbW1pb19jb25maWdfd3JpdGVsKHZvaWQgX19pb21lbSAqcG9zLCB1MzIgdmFs KQogICAgIGFzbSB2b2xhdGlsZSgibW92bCAlJWVheCwoJTEpIiA6OiAiYSIgKHZhbCksICJyIiAo cG9zKSA6ICJtZW1vcnkiKTsKIH0KIAotLyogZXh0ZXJuYWwgdmFyaWFibGUgZGVmaW5lcyAqLwot ZXh0ZXJuIGludCBwY2lfbW1jZmdfY29uZmlnX251bTsKLWV4dGVybiBzdHJ1Y3QgYWNwaV9tY2Zn X2FsbG9jYXRpb24gKnBjaV9tbWNmZ19jb25maWc7Ci0KIC8qIGZ1bmN0aW9uIHByb3RvdHlwZXMg Ki8KIGludCBhY3BpX3BhcnNlX21jZmcoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICpoZWFkZXIp OwogaW50IHBjaV9tbWNmZ19yZXNlcnZlZCh1aW50NjRfdCBhZGRyZXNzLCB1bnNpZ25lZCBpbnQg c2VnbWVudCwKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKaW5kZXggN2YxMjhjMDVmZi4uZDFkOTMz ZDc5MSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKKysrIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKQEAgLTE4NCw2ICsxODQsMTAgQEAgc3Ry dWN0IGh2bV9kb21haW4gewogICAgIC8qIExpc3Qgb2YgZ3Vlc3QgdG8gbWFjaGluZSBJTyBwb3J0 cyBtYXBwaW5nLiAqLwogICAgIHN0cnVjdCBsaXN0X2hlYWQgZzJtX2lvcG9ydF9saXN0OwogCisg ICAgLyogTGlzdCBvZiBNTUNGRyByZWdpb25zIHRyYXBwZWQgYnkgWGVuLiAqLworICAgIHN0cnVj dCBsaXN0X2hlYWQgbW1jZmdfcmVnaW9uczsKKyAgICByd2xvY2tfdCBtbWNmZ19sb2NrOworCiAg ICAgLyogTGlzdCBvZiBwZXJtYW5lbnRseSB3cml0ZS1tYXBwZWQgcGFnZXMuICovCiAgICAgc3Ry dWN0IHsKICAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vaW8uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvLmgKaW5kZXggZmYw YmVhNWQ1My4uMTY0NjVjZWIzMCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v aW8uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pby5oCkBAIC0xNjMsNiArMTYzLDEz IEBAIHZvaWQgcmVnaXN0ZXJfZzJtX3BvcnRpb19oYW5kbGVyKHN0cnVjdCBkb21haW4gKmQpOwog LyogSFZNIHBvcnQgSU8gaGFuZGxlciBmb3IgdlBDSSBhY2Nlc3Nlcy4gKi8KIHZvaWQgcmVnaXN0 ZXJfdnBjaV9wb3J0aW9faGFuZGxlcihzdHJ1Y3QgZG9tYWluICpkKTsKIAorLyogSFZNIE1NSU8g aGFuZGxlciBmb3IgUENJIE1NQ0ZHIGFjY2Vzc2VzLiAqLworaW50IHJlZ2lzdGVyX3ZwY2lfbW1j ZmdfaGFuZGxlcihzdHJ1Y3QgZG9tYWluICpkLCBwYWRkcl90IGFkZHIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdGFydF9idXMsIHVuc2lnbmVkIGludCBl bmRfYnVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2Vn KTsKKy8qIERlc3Ryb3kgdHJhY2tlZCBNTUNGRyBhcmVhcy4gKi8KK3ZvaWQgZGVzdHJveV92cGNp X21tY2ZnKHN0cnVjdCBkb21haW4gKmQpOworCiAjZW5kaWYgLyogX19BU01fWDg2X0hWTV9JT19I X18gKi8KIAogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3BjaS5oIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9wY2kuaAppbmRleCAzNjgwMWQzMTdiLi5jYzA1MDQ1ZTljIDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3BjaS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYv cGNpLmgKQEAgLTYsNiArNiw4IEBACiAjZGVmaW5lIENGOF9BRERSX0hJKGNmOCkgKCAgKChjZjgp ICYgMHgwZjAwMDAwMCkgPj4gMTYpCiAjZGVmaW5lIENGOF9FTkFCTEVEKGNmOCkgKCEhKChjZjgp ICYgMHg4MDAwMDAwMCkpCiAKKyNkZWZpbmUgTU1DRkdfQkRGKGFkZHIpICAoICgoYWRkcikgJiAw eDBmZmZmMDAwKSA+PiAxMikKKwogI2RlZmluZSBJU19TTkJfR0ZYKGlkKSAoaWQgPT0gMHgwMTA2 ODA4NiB8fCBpZCA9PSAweDAxMTY4MDg2IFwKICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGlk ID09IDB4MDEyNjgwODYgfHwgaWQgPT0gMHgwMTAyODA4NiBcCiAgICAgICAgICAgICAgICAgICAg ICAgICB8fCBpZCA9PSAweDAxMTI4MDg2IHx8IGlkID09IDB4MDEyMjgwODYgXApAQCAtMjYsNCAr MjgsOCBAQCBib29sX3QgcGNpX21tY2ZnX2RlY29kZSh1bnNpZ25lZCBsb25nIG1mbiwgdW5zaWdu ZWQgaW50ICpzZWcsCiBib29sX3QgcGNpX3JvX21tY2ZnX2RlY29kZSh1bnNpZ25lZCBsb25nIG1m biwgdW5zaWduZWQgaW50ICpzZWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgKmJkZik7CiAKKy8qIE1NQ0ZHIGV4dGVybmFsIHZhcmlhYmxlIGRlZmluZXMgKi8KK2V4 dGVybiBpbnQgcGNpX21tY2ZnX2NvbmZpZ19udW07CitleHRlcm4gc3RydWN0IGFjcGlfbWNmZ19h bGxvY2F0aW9uICpwY2lfbW1jZmdfY29uZmlnOworCiAjZW5kaWYgLyogX19YODZfUENJX0hfXyAq LwotLSAKMi4xNi4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA==