From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v11 02/12] x86/mmcfg: add handlers for the PVH Dom0 MMCFG areas Date: Tue, 20 Mar 2018 15:15:33 +0000 Message-ID: <20180320151543.84348-3-roger.pau@citrix.com> References: <20180320151543.84348-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.89) (envelope-from ) id 1eyJ9D-0002HZ-IM for xen-devel@lists.xenproject.org; Tue, 20 Mar 2018 15:25:59 +0000 In-Reply-To: <20180320151543.84348-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 dWlsZC5jIGIveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxkLmMKaW5kZXggMWM3MDQxNmFmNC4u MjU5ODE0ZDk1ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9kb20wX2J1aWxkLmMKKysr 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 eDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggOGI3NzNmZGNmOS4u MGFmYjY1MWI3ZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4v YXJjaC94ODYvaHZtL2h2bS5jCkBAIC01ODQsOCArNTg0LDEwIEBAIGludCBodm1fZG9tYWluX2lu aXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCkKICAgICBzcGluX2xvY2tfaW5pdCgmZC0+YXJjaC5o dm1fZG9tYWluLmlycV9sb2NrKTsKICAgICBzcGluX2xvY2tfaW5pdCgmZC0+YXJjaC5odm1fZG9t YWluLnVjX2xvY2spOwogICAgIHNwaW5fbG9ja19pbml0KCZkLT5hcmNoLmh2bV9kb21haW4ud3Jp dGVfbWFwLmxvY2spOworICAgIHJ3bG9ja19pbml0KCZkLT5hcmNoLmh2bV9kb21haW4ubW1jZmdf bG9jayk7CiAgICAgSU5JVF9MSVNUX0hFQUQoJmQtPmFyY2guaHZtX2RvbWFpbi53cml0ZV9tYXAu bGlzdCk7CiAgICAgSU5JVF9MSVNUX0hFQUQoJmQtPmFyY2guaHZtX2RvbWFpbi5nMm1faW9wb3J0 X2xpc3QpOworICAgIElOSVRfTElTVF9IRUFEKCZkLT5hcmNoLmh2bV9kb21haW4ubW1jZmdfcmVn aW9ucyk7CiAKICAgICByYyA9IGNyZWF0ZV9wZXJkb21haW5fbWFwcGluZyhkLCBQRVJET01BSU5f VklSVF9TVEFSVCwgMCwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKCByYyApCkBAIC03MzEsNiArNzMz LDggQEAgdm9pZCBodm1fZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAg bGlzdF9kZWwoJmlvcG9ydC0+bGlzdCk7CiAgICAgICAgIHhmcmVlKGlvcG9ydCk7CiAgICAgfQor CisgICAgZGVzdHJveV92cGNpX21tY2ZnKGQpOwogfQogCiBzdGF0aWMgaW50IGh2bV9zYXZlX3Rz Y19hZGp1c3Qoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2lvLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lvLmMKaW5k ZXggNjkxNGJkNjgzNC4uMDQ0MjVjMDY0YiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9p by5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaW8uYwpAQCAtMjgzLDcgKzI4Myw3IEBAIHVuc2ln bmVkIGludCBodm1fcGNpX2RlY29kZV9hZGRyKHVuc2lnbmVkIGludCBjZjgsIHVuc2lnbmVkIGlu dCBhZGRyLAogc3RhdGljIGJvb2wgdnBjaV9hY2Nlc3NfYWxsb3dlZCh1bnNpZ25lZCBpbnQgcmVn LCB1bnNpZ25lZCBpbnQgbGVuKQogewogICAgIC8qIENoZWNrIGFjY2VzcyBzaXplLiAqLwotICAg IGlmICggbGVuICE9IDEgJiYgbGVuICE9IDIgJiYgbGVuICE9IDQgKQorICAgIGlmICggbGVuICE9 IDEgJiYgbGVuICE9IDIgJiYgbGVuICE9IDQgJiYgbGVuICE9IDggKQogICAgICAgICByZXR1cm4g ZmFsc2U7CiAKICAgICAvKiBDaGVjayB0aGF0IGFjY2VzcyBpcyBzaXplIGFsaWduZWQuICovCkBA IC0zODMsNiArMzgzLDE4OCBAQCB2b2lkIHJlZ2lzdGVyX3ZwY2lfcG9ydGlvX2hhbmRsZXIoc3Ry dWN0IGRvbWFpbiAqZCkKICAgICBoYW5kbGVyLT5vcHMgPSAmdnBjaV9wb3J0aW9fb3BzOwogfQog CitzdHJ1Y3QgaHZtX21tY2ZnIHsKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIG5leHQ7CisgICAgcGFk ZHJfdCBhZGRyOworICAgIHVuc2lnbmVkIGludCBzaXplOworICAgIHVpbnQxNl90IHNlZ21lbnQ7 CisgICAgdWludDhfdCBzdGFydF9idXM7Cit9OworCisvKiBIYW5kbGVycyB0byB0cmFwIFBDSSBN TUNGRyBjb25maWcgYWNjZXNzZXMuICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGh2bV9tbWNmZyAq dnBjaV9tbWNmZ19maW5kKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgYWRkcikKK3sKKyAgICBjb25z dCBzdHJ1Y3QgaHZtX21tY2ZnICptbWNmZzsKKworICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBt bWNmZywgJmQtPmFyY2guaHZtX2RvbWFpbi5tbWNmZ19yZWdpb25zLCBuZXh0ICkKKyAgICAgICAg aWYgKCBhZGRyID49IG1tY2ZnLT5hZGRyICYmIGFkZHIgPCBtbWNmZy0+YWRkciArIG1tY2ZnLT5z aXplICkKKyAgICAgICAgICAgIHJldHVybiBtbWNmZzsKKworICAgIHJldHVybiBOVUxMOworfQor CitzdGF0aWMgdW5zaWduZWQgaW50IHZwY2lfbW1jZmdfZGVjb2RlX2FkZHIoY29uc3Qgc3RydWN0 IGh2bV9tbWNmZyAqbW1jZmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFkZHJfdCBhZGRyLCBwY2lfc2JkZl90ICpzYmRmKQoreworICAgIGFkZHIgLT0gbW1j ZmctPmFkZHI7CisgICAgc2JkZi0+YmRmID0gTU1DRkdfQkRGKGFkZHIpOworICAgIHNiZGYtPmJ1 cyArPSBtbWNmZy0+c3RhcnRfYnVzOworICAgIHNiZGYtPnNlZyA9IG1tY2ZnLT5zZWdtZW50Owor CisgICAgcmV0dXJuIGFkZHIgJiAoUENJX0NGR19TUEFDRV9FWFBfU0laRSAtIDEpOworfQorCitz dGF0aWMgaW50IHZwY2lfbW1jZmdfYWNjZXB0KHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25n IGFkZHIpCit7CisgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKKyAgICBib29sIGZv dW5kOworCisgICAgcmVhZF9sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4ubW1jZmdfbG9jayk7Cisg ICAgZm91bmQgPSB2cGNpX21tY2ZnX2ZpbmQoZCwgYWRkcik7CisgICAgcmVhZF91bmxvY2soJmQt PmFyY2guaHZtX2RvbWFpbi5tbWNmZ19sb2NrKTsKKworICAgIHJldHVybiBmb3VuZDsKK30KKwor c3RhdGljIGludCB2cGNpX21tY2ZnX3JlYWQoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcg YWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4sIHVuc2ln bmVkIGxvbmcgKmRhdGEpCit7CisgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKKyAg ICBjb25zdCBzdHJ1Y3QgaHZtX21tY2ZnICptbWNmZzsKKyAgICB1bnNpZ25lZCBpbnQgcmVnOwor ICAgIHBjaV9zYmRmX3Qgc2JkZjsKKworICAgICpkYXRhID0gfjB1bDsKKworICAgIHJlYWRfbG9j aygmZC0+YXJjaC5odm1fZG9tYWluLm1tY2ZnX2xvY2spOworICAgIG1tY2ZnID0gdnBjaV9tbWNm Z19maW5kKGQsIGFkZHIpOworICAgIGlmICggIW1tY2ZnICkKKyAgICB7CisgICAgICAgIHJlYWRf dW5sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4ubW1jZmdfbG9jayk7CisgICAgICAgIHJldHVybiBY ODZFTVVMX1JFVFJZOworICAgIH0KKworICAgIHJlZyA9IHZwY2lfbW1jZmdfZGVjb2RlX2FkZHIo bW1jZmcsIGFkZHIsICZzYmRmKTsKKyAgICByZWFkX3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWlu Lm1tY2ZnX2xvY2spOworCisgICAgaWYgKCAhdnBjaV9hY2Nlc3NfYWxsb3dlZChyZWcsIGxlbikg fHwKKyAgICAgICAgIChyZWcgKyBsZW4pID4gUENJX0NGR19TUEFDRV9FWFBfU0laRSApCisgICAg ICAgIHJldHVybiBYODZFTVVMX09LQVk7CisKKyAgICAvKgorICAgICAqIEFjY29yZGluZyB0byB0 aGUgUENJZSAzLjFBIHNwZWNpZmljYXRpb246CisgICAgICogIC0gQ29uZmlndXJhdGlvbiBSZWFk cyBhbmQgV3JpdGVzIG11c3QgdXN1YWxseSBiZSBEV09SRCBvciBzbWFsbGVyCisgICAgICogICAg aW4gc2l6ZS4KKyAgICAgKiAgLSBCZWNhdXNlIFJvb3QgQ29tcGxleCBpbXBsZW1lbnRhdGlvbnMg YXJlIG5vdCByZXF1aXJlZCB0byBzdXBwb3J0CisgICAgICogICAgYWNjZXNzZXMgdG8gYSBSQ1JC IHRoYXQgY3Jvc3MgRFcgYm91bmRhcmllcyBbLi4uXSBzb2Z0d2FyZQorICAgICAqICAgIHNob3Vs ZCB0YWtlIGNhcmUgbm90IHRvIGNhdXNlIHRoZSBnZW5lcmF0aW9uIG9mIHN1Y2ggYWNjZXNzZXMK KyAgICAgKiAgICB3aGVuIGFjY2Vzc2luZyBhIFJDUkIgdW5sZXNzIHRoZSBSb290IENvbXBsZXgg d2lsbCBzdXBwb3J0IHRoZQorICAgICAqICAgIGFjY2Vzcy4KKyAgICAgKiAgWGVuIGhvd2V2ZXIg c3VwcG9ydHMgOGJ5dGUgYWNjZXNzZXMgYnkgc3BsaXR0aW5nIHRoZW0gaW50byB0d28KKyAgICAg KiAgNGJ5dGUgYWNjZXNzZXMuCisgICAgICovCisgICAgKmRhdGEgPSB2cGNpX3JlYWQoc2JkZiwg cmVnLCBtaW4oNHUsIGxlbikpOworICAgIGlmICggbGVuID09IDggKQorICAgICAgICAqZGF0YSB8 PSAodWludDY0X3QpdnBjaV9yZWFkKHNiZGYsIHJlZyArIDQsIDQpIDw8IDMyOworCisgICAgcmV0 dXJuIFg4NkVNVUxfT0tBWTsKK30KKworc3RhdGljIGludCB2cGNpX21tY2ZnX3dyaXRlKHN0cnVj dCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyBkYXRhKQoreworICAgIHN0cnVjdCBk b21haW4gKmQgPSB2LT5kb21haW47CisgICAgY29uc3Qgc3RydWN0IGh2bV9tbWNmZyAqbW1jZmc7 CisgICAgdW5zaWduZWQgaW50IHJlZzsKKyAgICBwY2lfc2JkZl90IHNiZGY7CisKKyAgICByZWFk X2xvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5tbWNmZ19sb2NrKTsKKyAgICBtbWNmZyA9IHZwY2lf bW1jZmdfZmluZChkLCBhZGRyKTsKKyAgICBpZiAoICFtbWNmZyApCisgICAgeworICAgICAgICBy ZWFkX3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWluLm1tY2ZnX2xvY2spOworICAgICAgICByZXR1 cm4gWDg2RU1VTF9SRVRSWTsKKyAgICB9CisKKyAgICByZWcgPSB2cGNpX21tY2ZnX2RlY29kZV9h ZGRyKG1tY2ZnLCBhZGRyLCAmc2JkZik7CisgICAgcmVhZF91bmxvY2soJmQtPmFyY2guaHZtX2Rv bWFpbi5tbWNmZ19sb2NrKTsKKworICAgIGlmICggIXZwY2lfYWNjZXNzX2FsbG93ZWQocmVnLCBs ZW4pIHx8CisgICAgICAgICAocmVnICsgbGVuKSA+IFBDSV9DRkdfU1BBQ0VfRVhQX1NJWkUgKQor ICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworCisgICAgdnBjaV93cml0ZShzYmRmLCByZWcs IG1pbig0dSwgbGVuKSwgZGF0YSk7CisgICAgaWYgKCBsZW4gPT0gOCApCisgICAgICAgIHZwY2lf d3JpdGUoc2JkZiwgcmVnICsgNCwgNCwgZGF0YSA+PiAzMik7CisKKyAgICByZXR1cm4gWDg2RU1V TF9PS0FZOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGh2bV9tbWlvX29wcyB2cGNpX21tY2Zn X29wcyA9IHsKKyAgICAuY2hlY2sgPSB2cGNpX21tY2ZnX2FjY2VwdCwKKyAgICAucmVhZCA9IHZw Y2lfbW1jZmdfcmVhZCwKKyAgICAud3JpdGUgPSB2cGNpX21tY2ZnX3dyaXRlLAorfTsKKworaW50 IF9faHdkb21faW5pdCByZWdpc3Rlcl92cGNpX21tY2ZnX2hhbmRsZXIoc3RydWN0IGRvbWFpbiAq ZCwgcGFkZHJfdCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IHN0YXJ0X2J1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBlbmRfYnVzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNlZykKK3sKKyAgICBz dHJ1Y3QgaHZtX21tY2ZnICptbWNmZywgKm5ldyA9IHhtYWxsb2Moc3RydWN0IGh2bV9tbWNmZyk7 CisKKyAgICBBU1NFUlQoaXNfaGFyZHdhcmVfZG9tYWluKGQpKTsKKworICAgIGlmICggIW5ldyAp CisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgaWYgKCBzdGFydF9idXMgPiBlbmRfYnVz ICkKKyAgICB7CisgICAgICAgIHhmcmVlKG5ldyk7CisgICAgICAgIHJldHVybiAtRUlOVkFMOwor ICAgIH0KKworICAgIG5ldy0+YWRkciA9IGFkZHIgKyAoc3RhcnRfYnVzIDw8IDIwKTsKKyAgICBu ZXctPnN0YXJ0X2J1cyA9IHN0YXJ0X2J1czsKKyAgICBuZXctPnNlZ21lbnQgPSBzZWc7CisgICAg bmV3LT5zaXplID0gKGVuZF9idXMgLSBzdGFydF9idXMgKyAxKSA8PCAyMDsKKworICAgIHdyaXRl X2xvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5tbWNmZ19sb2NrKTsKKyAgICBsaXN0X2Zvcl9lYWNo X2VudHJ5ICggbW1jZmcsICZkLT5hcmNoLmh2bV9kb21haW4ubW1jZmdfcmVnaW9ucywgbmV4dCAp CisgICAgICAgIGlmICggbmV3LT5hZGRyIDwgbW1jZmctPmFkZHIgKyBtbWNmZy0+c2l6ZSAmJgor ICAgICAgICAgICAgIG1tY2ZnLT5hZGRyIDwgbmV3LT5hZGRyICsgbmV3LT5zaXplICkKKyAgICAg ICAgeworICAgICAgICAgICAgd3JpdGVfdW5sb2NrKCZkLT5hcmNoLmh2bV9kb21haW4ubW1jZmdf bG9jayk7CisgICAgICAgICAgICB4ZnJlZShuZXcpOworICAgICAgICAgICAgcmV0dXJuIC1FRVhJ U1Q7CisgICAgICAgIH0KKworICAgIGlmICggbGlzdF9lbXB0eSgmZC0+YXJjaC5odm1fZG9tYWlu Lm1tY2ZnX3JlZ2lvbnMpICkKKyAgICAgICAgcmVnaXN0ZXJfbW1pb19oYW5kbGVyKGQsICZ2cGNp X21tY2ZnX29wcyk7CisKKyAgICBsaXN0X2FkZCgmbmV3LT5uZXh0LCAmZC0+YXJjaC5odm1fZG9t YWluLm1tY2ZnX3JlZ2lvbnMpOworICAgIHdyaXRlX3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWlu Lm1tY2ZnX2xvY2spOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgZGVzdHJveV92cGNpX21t Y2ZnKHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgc3RydWN0IGxpc3RfaGVhZCAqbW1jZmdfcmVn aW9ucyA9ICZkLT5hcmNoLmh2bV9kb21haW4ubW1jZmdfcmVnaW9uczsKKworICAgIHdyaXRlX2xv Y2soJmQtPmFyY2guaHZtX2RvbWFpbi5tbWNmZ19sb2NrKTsKKyAgICB3aGlsZSAoICFsaXN0X2Vt cHR5KG1tY2ZnX3JlZ2lvbnMpICkKKyAgICB7CisgICAgICAgIHN0cnVjdCBodm1fbW1jZmcgKm1t Y2ZnID0gbGlzdF9maXJzdF9lbnRyeShtbWNmZ19yZWdpb25zLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGh2bV9tbWNmZywgbmV4dCk7 CisKKyAgICAgICAgbGlzdF9kZWwoJm1tY2ZnLT5uZXh0KTsKKyAgICAgICAgeGZyZWUobW1jZmcp OworICAgIH0KKyAgICB3cml0ZV91bmxvY2soJmQtPmFyY2guaHZtX2RvbWFpbi5tbWNmZ19sb2Nr KTsKK30KKwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAqIG1vZGU6IEMKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni94ODZfNjQvbW1jb25maWcuaCBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW1j b25maWcuaAppbmRleCA3NTM3NTE5NDE0Li4yZTgzNjg0OGFkIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYveDg2XzY0L21tY29uZmlnLmgKKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9tbWNvbmZp Zy5oCkBAIC03NCwxMCArNzQsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbW1pb19jb25maWdfd3Jp dGVsKHZvaWQgX19pb21lbSAqcG9zLCB1MzIgdmFsKQogICAgIGFzbSB2b2xhdGlsZSgibW92bCAl JWVheCwoJTEpIiA6OiAiYSIgKHZhbCksICJyIiAocG9zKSA6ICJtZW1vcnkiKTsKIH0KIAotLyog ZXh0ZXJuYWwgdmFyaWFibGUgZGVmaW5lcyAqLwotZXh0ZXJuIGludCBwY2lfbW1jZmdfY29uZmln X251bTsKLWV4dGVybiBzdHJ1Y3QgYWNwaV9tY2ZnX2FsbG9jYXRpb24gKnBjaV9tbWNmZ19jb25m aWc7Ci0KIC8qIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KIGludCBhY3BpX3BhcnNlX21jZmcoc3Ry dWN0IGFjcGlfdGFibGVfaGVhZGVyICpoZWFkZXIpOwogaW50IHBjaV9tbWNmZ19yZXNlcnZlZCh1 aW50NjRfdCBhZGRyZXNzLCB1bnNpZ25lZCBpbnQgc2VnbWVudCwKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9t YWluLmgKaW5kZXggN2YxMjhjMDVmZi4uZDFkOTMzZDc5MSAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9t YWluLmgKQEAgLTE4NCw2ICsxODQsMTAgQEAgc3RydWN0IGh2bV9kb21haW4gewogICAgIC8qIExp c3Qgb2YgZ3Vlc3QgdG8gbWFjaGluZSBJTyBwb3J0cyBtYXBwaW5nLiAqLwogICAgIHN0cnVjdCBs aXN0X2hlYWQgZzJtX2lvcG9ydF9saXN0OwogCisgICAgLyogTGlzdCBvZiBNTUNGRyByZWdpb25z IHRyYXBwZWQgYnkgWGVuLiAqLworICAgIHN0cnVjdCBsaXN0X2hlYWQgbW1jZmdfcmVnaW9uczsK KyAgICByd2xvY2tfdCBtbWNmZ19sb2NrOworCiAgICAgLyogTGlzdCBvZiBwZXJtYW5lbnRseSB3 cml0ZS1tYXBwZWQgcGFnZXMuICovCiAgICAgc3RydWN0IHsKICAgICAgICAgc3BpbmxvY2tfdCBs b2NrOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW8uaCBiL3hlbi9pbmNs dWRlL2FzbS14ODYvaHZtL2lvLmgKaW5kZXggZmYwYmVhNWQ1My4uMTY0NjVjZWIzMCAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW8uaAorKysgYi94ZW4vaW5jbHVkZS9hc20t eDg2L2h2bS9pby5oCkBAIC0xNjMsNiArMTYzLDEzIEBAIHZvaWQgcmVnaXN0ZXJfZzJtX3BvcnRp b19oYW5kbGVyKHN0cnVjdCBkb21haW4gKmQpOwogLyogSFZNIHBvcnQgSU8gaGFuZGxlciBmb3Ig dlBDSSBhY2Nlc3Nlcy4gKi8KIHZvaWQgcmVnaXN0ZXJfdnBjaV9wb3J0aW9faGFuZGxlcihzdHJ1 Y3QgZG9tYWluICpkKTsKIAorLyogSFZNIE1NSU8gaGFuZGxlciBmb3IgUENJIE1NQ0ZHIGFjY2Vz c2VzLiAqLworaW50IHJlZ2lzdGVyX3ZwY2lfbW1jZmdfaGFuZGxlcihzdHJ1Y3QgZG9tYWluICpk LCBwYWRkcl90IGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBzdGFydF9idXMsIHVuc2lnbmVkIGludCBlbmRfYnVzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2VnKTsKKy8qIERlc3Ryb3kgdHJhY2tlZCBNTUNG RyBhcmVhcy4gKi8KK3ZvaWQgZGVzdHJveV92cGNpX21tY2ZnKHN0cnVjdCBkb21haW4gKmQpOwor CiAjZW5kaWYgLyogX19BU01fWDg2X0hWTV9JT19IX18gKi8KIAogCmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS9hc20teDg2L3BjaS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wY2kuaAppbmRleCAz NjgwMWQzMTdiLi5jYzA1MDQ1ZTljIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bj aS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcGNpLmgKQEAgLTYsNiArNiw4IEBACiAjZGVm aW5lIENGOF9BRERSX0hJKGNmOCkgKCAgKChjZjgpICYgMHgwZjAwMDAwMCkgPj4gMTYpCiAjZGVm aW5lIENGOF9FTkFCTEVEKGNmOCkgKCEhKChjZjgpICYgMHg4MDAwMDAwMCkpCiAKKyNkZWZpbmUg TU1DRkdfQkRGKGFkZHIpICAoICgoYWRkcikgJiAweDBmZmZmMDAwKSA+PiAxMikKKwogI2RlZmlu ZSBJU19TTkJfR0ZYKGlkKSAoaWQgPT0gMHgwMTA2ODA4NiB8fCBpZCA9PSAweDAxMTY4MDg2IFwK ICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGlkID09IDB4MDEyNjgwODYgfHwgaWQgPT0gMHgw MTAyODA4NiBcCiAgICAgICAgICAgICAgICAgICAgICAgICB8fCBpZCA9PSAweDAxMTI4MDg2IHx8 IGlkID09IDB4MDEyMjgwODYgXApAQCAtMjYsNCArMjgsOCBAQCBib29sX3QgcGNpX21tY2ZnX2Rl Y29kZSh1bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgaW50ICpzZWcsCiBib29sX3QgcGNpX3Jv X21tY2ZnX2RlY29kZSh1bnNpZ25lZCBsb25nIG1mbiwgdW5zaWduZWQgaW50ICpzZWcsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmJkZik7CiAKKy8qIE1NQ0ZHIGV4 dGVybmFsIHZhcmlhYmxlIGRlZmluZXMgKi8KK2V4dGVybiBpbnQgcGNpX21tY2ZnX2NvbmZpZ19u dW07CitleHRlcm4gc3RydWN0IGFjcGlfbWNmZ19hbGxvY2F0aW9uICpwY2lfbW1jZmdfY29uZmln OworCiAjZW5kaWYgLyogX19YODZfUENJX0hfXyAqLwotLSAKMi4xNi4yCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0 Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==