From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH for-next 7/8] x86/domain: move PV specific code to pv/domain.c Date: Mon, 10 Apr 2017 14:27:15 +0100 Message-ID: <20170410132716.31610-8-wei.liu2@citrix.com> References: <20170410132716.31610-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cxZxM-00035O-69 for xen-devel@lists.xenproject.org; Mon, 10 Apr 2017 14:06:12 +0000 In-Reply-To: <20170410132716.31610-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org TW92ZSBhbGwgdGhlIFBWIHNwZWNpZmljIGNvZGUgYWxvbmcgd2l0aCB0aGUgc3VwcG9ydGluZyBj b2RlIHRvCnB2L2RvbWFpbi5jLgoKVGhpcyBpbiB0dXJuIHJlcXVpcmVzIGV4cG9ydGluZyBhIGZl dyBmdW5jdGlvbnMgaW4gaGVhZGVyIGZpbGVzLiBFeHBvcnQKcGFyYXZpcnQgY29udGV4dCBzd2l0 Y2ggZnVuY3Rpb25zIGluIGRvbWFpbi5oIGFuZCBjcmVhdGUgcHYvcHYuaCBmb3IKdGhlIHJlc3Qu CgpObyBmdW5jdGlvbmFsIGNoYW5nZS4KClNpZ25lZC1vZmYtYnk6IFdlaSBMaXUgPHdlaS5saXUy QGNpdHJpeC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2RvbWFpbi5jICAgICAgICB8IDI1MCArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9wdi9NYWtl ZmlsZSAgICAgfCAgIDEgKwogeGVuL2FyY2gveDg2L3B2L2RvbWFpbi5jICAgICB8IDI3MCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20t eDg2L2RvbWFpbi5oIHwgICAzICsKIHhlbi9pbmNsdWRlL2FzbS14ODYvcHYvcHYuaCAgfCAgMjkg KysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMzA2IGluc2VydGlvbnMoKyksIDI0NyBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9hc20teDg2L3B2L3B2LmgKCmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKaW5kZXggZWQxNmFkZjc3 YS4uNGEyMzYzZmM5NiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbi5jCisrKyBiL3hl bi9hcmNoL3g4Ni9kb21haW4uYwpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgPHhlbi9pb21t dS5oPgogI2luY2x1ZGUgPGNvbXBhdC92Y3B1Lmg+CiAjaW5jbHVkZSA8YXNtL3Bzci5oPgorI2lu Y2x1ZGUgPGFzbS9wdi9wdi5oPgogCiBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgdmNwdSAqLCBjdXJy X3ZjcHUpOwogCkBAIC03MCw5ICs3MSw2IEBAIHN0YXRpYyB2b2lkIGRlZmF1bHRfaWRsZSh2b2lk KTsKIHZvaWQgKCpwbV9pZGxlKSAodm9pZCkgX19yZWFkX21vc3RseSA9IGRlZmF1bHRfaWRsZTsK IHZvaWQgKCpkZWFkX2lkbGUpICh2b2lkKSBfX3JlYWRfbW9zdGx5ID0gZGVmYXVsdF9kZWFkX2lk bGU7CiAKLXN0YXRpYyB2b2lkIHBhcmF2aXJ0X2N0eHRfc3dpdGNoX2Zyb20oc3RydWN0IHZjcHUg KnYpOwotc3RhdGljIHZvaWQgcGFyYXZpcnRfY3R4dF9zd2l0Y2hfdG8oc3RydWN0IHZjcHUgKnYp OwotCiBzdGF0aWMgdm9pZCBkZWZhdWx0X2lkbGUodm9pZCkKIHsKICAgICBsb2NhbF9pcnFfZGlz YWJsZSgpOwpAQCAtMTQ1LDEzICsxNDMsNiBAQCBzdGF0aWMgdm9pZCBub3JldHVybiBjb250aW51 ZV9pZGxlX2RvbWFpbihzdHJ1Y3QgdmNwdSAqdikKICAgICByZXNldF9zdGFja19hbmRfanVtcChp ZGxlX2xvb3ApOwogfQogCi1zdGF0aWMgdm9pZCBub3JldHVybiBjb250aW51ZV9ub25pZGxlX2Rv bWFpbihzdHJ1Y3QgdmNwdSAqdikKLXsKLSAgICBjaGVja193YWtldXBfZnJvbV93YWl0KCk7Ci0g ICAgbWFya19yZWdzX2RpcnR5KGd1ZXN0X2NwdV91c2VyX3JlZ3MoKSk7Ci0gICAgcmVzZXRfc3Rh Y2tfYW5kX2p1bXAocmV0X2Zyb21faW50cik7Ci19Ci0KIHZvaWQgZHVtcF9wYWdlZnJhbWVfaW5m byhzdHJ1Y3QgZG9tYWluICpkKQogewogICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CkBAIC0z MTMsMTI5ICszMDQsNiBAQCB2b2lkIGZyZWVfdmNwdV9zdHJ1Y3Qoc3RydWN0IHZjcHUgKnYpCiAg ICAgZnJlZV94ZW5oZWFwX3BhZ2Uodik7CiB9CiAKLXN0YXRpYyBpbnQgc2V0dXBfY29tcGF0X2w0 KHN0cnVjdCB2Y3B1ICp2KQotewotICAgIHN0cnVjdCBwYWdlX2luZm8gKnBnOwotICAgIGw0X3Bn ZW50cnlfdCAqbDR0YWI7Ci0KLSAgICBwZyA9IGFsbG9jX2RvbWhlYXBfcGFnZSh2LT5kb21haW4s IE1FTUZfbm9fb3duZXIpOwotICAgIGlmICggcGcgPT0gTlVMTCApCi0gICAgICAgIHJldHVybiAt RU5PTUVNOwotCi0gICAgLyogVGhpcyBwYWdlIG5lZWRzIHRvIGxvb2sgbGlrZSBhIHBhZ2V0YWJs ZSBzbyB0aGF0IGl0IGNhbiBiZSBzaGFkb3dlZCAqLwotICAgIHBnLT51LmludXNlLnR5cGVfaW5m byA9IFBHVF9sNF9wYWdlX3RhYmxlfFBHVF92YWxpZGF0ZWR8MTsKLQotICAgIGw0dGFiID0gX19t YXBfZG9tYWluX3BhZ2UocGcpOwotICAgIGNsZWFyX3BhZ2UobDR0YWIpOwotICAgIGluaXRfZ3Vl c3RfbDRfdGFibGUobDR0YWIsIHYtPmRvbWFpbiwgMSk7Ci0gICAgdW5tYXBfZG9tYWluX3BhZ2Uo bDR0YWIpOwotCi0gICAgdi0+YXJjaC5ndWVzdF90YWJsZSA9IHBhZ2V0YWJsZV9mcm9tX3BhZ2Uo cGcpOwotICAgIHYtPmFyY2guZ3Vlc3RfdGFibGVfdXNlciA9IHYtPmFyY2guZ3Vlc3RfdGFibGU7 Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgcmVsZWFzZV9jb21wYXRfbDQoc3Ry dWN0IHZjcHUgKnYpCi17Ci0gICAgZnJlZV9kb21oZWFwX3BhZ2UocGFnZXRhYmxlX2dldF9wYWdl KHYtPmFyY2guZ3Vlc3RfdGFibGUpKTsKLSAgICB2LT5hcmNoLmd1ZXN0X3RhYmxlID0gcGFnZXRh YmxlX251bGwoKTsKLSAgICB2LT5hcmNoLmd1ZXN0X3RhYmxlX3VzZXIgPSBwYWdldGFibGVfbnVs bCgpOwotfQotCi1pbnQgc3dpdGNoX2NvbXBhdChzdHJ1Y3QgZG9tYWluICpkKQotewotICAgIHN0 cnVjdCB2Y3B1ICp2OwotICAgIGludCByYzsKLQotICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSB8 fCBkLT50b3RfcGFnZXMgIT0gMCApCi0gICAgICAgIHJldHVybiAtRUFDQ0VTOwotICAgIGlmICgg aXNfcHZfMzJiaXRfZG9tYWluKGQpICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBkLT5hcmNo Lmhhc18zMmJpdF9zaGluZm8gPSAxOwotICAgIGlmICggaXNfcHZfZG9tYWluKGQpICkKLSAgICAg ICAgZC0+YXJjaC5pc18zMmJpdF9wdiA9IDE7Ci0KLSAgICBmb3JfZWFjaF92Y3B1KCBkLCB2ICkK LSAgICB7Ci0gICAgICAgIHJjID0gc2V0dXBfY29tcGF0X2FyZ194bGF0KHYpOwotICAgICAgICBp ZiAoICFyYyApCi0gICAgICAgICAgICByYyA9IHNldHVwX2NvbXBhdF9sNCh2KTsKLQotICAgICAg ICBpZiAoIHJjICkKLSAgICAgICAgICAgIGdvdG8gdW5kb19hbmRfZmFpbDsKLSAgICB9Ci0KLSAg ICBkb21haW5fc2V0X2FsbG9jX2JpdHNpemUoZCk7Ci0gICAgcmVjYWxjdWxhdGVfY3B1aWRfcG9s aWN5KGQpOwotCi0gICAgZC0+YXJjaC54ODdfZmlwX3dpZHRoID0gNDsKLQotICAgIHJldHVybiAw OwotCi0gdW5kb19hbmRfZmFpbDoKLSAgICBkLT5hcmNoLmlzXzMyYml0X3B2ID0gZC0+YXJjaC5o YXNfMzJiaXRfc2hpbmZvID0gMDsKLSAgICBmb3JfZWFjaF92Y3B1KCBkLCB2ICkKLSAgICB7Ci0g ICAgICAgIGZyZWVfY29tcGF0X2FyZ194bGF0KHYpOwotCi0gICAgICAgIGlmICggIXBhZ2V0YWJs ZV9pc19udWxsKHYtPmFyY2guZ3Vlc3RfdGFibGUpICkKLSAgICAgICAgICAgIHJlbGVhc2VfY29t cGF0X2w0KHYpOwotICAgIH0KLQotICAgIHJldHVybiByYzsKLX0KLQotc3RhdGljIGludCBwdl92 Y3B1X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUgKnYpCi17Ci0gICAgc3RydWN0IGRvbWFpbiAqZCA9 IHYtPmRvbWFpbjsKLSAgICBpbnQgcmMgPSAwOwotCi0gICAgc3Bpbl9sb2NrX2luaXQoJnYtPmFy Y2gucHZfdmNwdS5zaGFkb3dfbGR0X2xvY2spOwotCi0gICAgaWYgKCAhaXNfaWRsZV9kb21haW4o ZCkgKQotICAgIHsKLSAgICAgICAgcmMgPSBjcmVhdGVfcGVyZG9tYWluX21hcHBpbmcoZCwgR0RU X1ZJUlRfU1RBUlQodiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEg PDwgR0RUX0xEVF9WQ1BVX1NISUZULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkLT5hcmNoLnB2X2RvbWFpbi5nZHRfbGR0X2wxdGFiLCBOVUxMKTsKLSAgICAgICAgaWYg KCByYyApCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAgICAgQlVJTERfQlVHX09OKE5S X1ZFQ1RPUlMgKiBzaXplb2YoKnYtPmFyY2gucHZfdmNwdS50cmFwX2N0eHQpID4KLSAgICAgICAg ICAgICAgICAgICAgIFBBR0VfU0laRSk7Ci0gICAgICAgIHYtPmFyY2gucHZfdmNwdS50cmFwX2N0 eHQgPSB4emFsbG9jX2FycmF5KHN0cnVjdCB0cmFwX2luZm8sCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5SX1ZFQ1RPUlMpOwotICAgICAgICBpZiAo ICF2LT5hcmNoLnB2X3ZjcHUudHJhcF9jdHh0ICkKLSAgICAgICAgewotICAgICAgICAgICAgcmMg PSAtRU5PTUVNOwotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0KLSAgICAgICAg LyogUFYgZ3Vlc3RzIGJ5IGRlZmF1bHQgaGF2ZSBhIDEwMEh6IHRpY2tlci4gKi8KLSAgICAgICAg di0+cGVyaW9kaWNfcGVyaW9kID0gTUlMTElTRUNTKDEwKTsKLSAgICB9Ci0gICAgZWxzZQotICAg ICAgICB2LT5hcmNoLmNyMyA9IF9fcGEoaWRsZV9wZ190YWJsZSk7Ci0KLSAgICB2LT5hcmNoLnB2 X3ZjcHUuY3RybHJlZ1s0XSA9IHJlYWxfY3I0X3RvX3B2X2d1ZXN0X2NyNChtbXVfY3I0X2ZlYXR1 cmVzKTsKLQotICAgIGlmICggaXNfcHZfMzJiaXRfZG9tYWluKGQpICkKLSAgICB7Ci0gICAgICAg IGlmICggKHJjID0gc2V0dXBfY29tcGF0X2FyZ194bGF0KHYpKSApCi0gICAgICAgICAgICBnb3Rv IGRvbmU7Ci0KLSAgICAgICAgaWYgKCAocmMgPSBzZXR1cF9jb21wYXRfbDQodikpICkKLSAgICAg ICAgewotICAgICAgICAgICAgZnJlZV9jb21wYXRfYXJnX3hsYXQodik7Ci0gICAgICAgICAgICBn b3RvIGRvbmU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSBkb25lOgotICAgIHJldHVybiByYzsKLX0K LQogaW50IHZjcHVfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICBzdHJ1Y3QgZG9t YWluICpkID0gdi0+ZG9tYWluOwpAQCAtNDc5LDE3ICszNDcsNiBAQCBpbnQgdmNwdV9pbml0aWFs aXNlKHN0cnVjdCB2Y3B1ICp2KQogICAgIHJldHVybiByYzsKIH0KIAotc3RhdGljIHZvaWQgcHZf dmNwdV9kZXN0cm95KHN0cnVjdCB2Y3B1ICp2KQotewotICAgIGlmICggaXNfcHZfMzJiaXRfdmNw dSh2KSApCi0gICAgewotICAgICAgICBmcmVlX2NvbXBhdF9hcmdfeGxhdCh2KTsKLSAgICAgICAg cmVsZWFzZV9jb21wYXRfbDQodik7Ci0gICAgfQotCi0gICAgeGZyZWUodi0+YXJjaC5wdl92Y3B1 LnRyYXBfY3R4dCk7Ci19Ci0KIHZvaWQgdmNwdV9kZXN0cm95KHN0cnVjdCB2Y3B1ICp2KQogewog ICAgIHhmcmVlKHYtPmFyY2gudm1fZXZlbnQpOwpAQCAtNTI3LDY0ICszODQsNiBAQCBzdGF0aWMg Ym9vbCBlbXVsYXRpb25fZmxhZ3Nfb2soY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3Qg ZW1mbGFncykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgcHZfZG9tYWluX2Rl c3Ryb3koc3RydWN0IGRvbWFpbiAqZCkKLXsKLSAgICB4ZnJlZShkLT5hcmNoLnB2X2RvbWFpbi5j cHVpZG1hc2tzKTsKLSAgICBmcmVlX3hlbmhlYXBfcGFnZShkLT5hcmNoLnB2X2RvbWFpbi5nZHRf bGR0X2wxdGFiKTsKLX0KLQotc3RhdGljIGludCBwdl9kb21haW5faW5pdGlhbGlzZShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgZG9tY3JfZmxhZ3MpCi17Ci0gICAgc3RhdGljIGNvbnN0 IHN0cnVjdCBhcmNoX2NzdyBwdl9jc3cgPSB7Ci0gICAgICAgIC5mcm9tID0gcGFyYXZpcnRfY3R4 dF9zd2l0Y2hfZnJvbSwKLSAgICAgICAgLnRvICAgPSBwYXJhdmlydF9jdHh0X3N3aXRjaF90bywK LSAgICAgICAgLnRhaWwgPSBjb250aW51ZV9ub25pZGxlX2RvbWFpbiwKLSAgICB9OwotICAgIGlu dCByYyA9IC1FTk9NRU07Ci0KLSAgICBkLT5hcmNoLnB2X2RvbWFpbi5nZHRfbGR0X2wxdGFiID0K LSAgICAgICAgYWxsb2NfeGVuaGVhcF9wYWdlcygwLCBNRU1GX25vZGUoZG9tYWluX3RvX25vZGUo ZCkpKTsKLSAgICBpZiAoICFkLT5hcmNoLnB2X2RvbWFpbi5nZHRfbGR0X2wxdGFiICkKLSAgICAg ICAgZ290byBmYWlsOwotICAgIGNsZWFyX3BhZ2UoZC0+YXJjaC5wdl9kb21haW4uZ2R0X2xkdF9s MXRhYik7Ci0KLSAgICBpZiAoIGxldmVsbGluZ19jYXBzICYgfkxDQVBfZmF1bHRpbmcgKQotICAg IHsKLSAgICAgICAgZC0+YXJjaC5wdl9kb21haW4uY3B1aWRtYXNrcyA9IHhtYWxsb2Moc3RydWN0 IGNwdWlkbWFza3MpOwotICAgICAgICBpZiAoICFkLT5hcmNoLnB2X2RvbWFpbi5jcHVpZG1hc2tz ICkKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgKmQtPmFyY2gucHZfZG9tYWluLmNw dWlkbWFza3MgPSBjcHVpZG1hc2tfZGVmYXVsdHM7Ci0gICAgfQotCi0gICAgcmMgPSBjcmVhdGVf cGVyZG9tYWluX21hcHBpbmcoZCwgR0RUX0xEVF9WSVJUX1NUQVJULAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdEVF9MRFRfTUJZVEVTIDw8ICgyMCAtIFBBR0VfU0hJRlQpLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwotICAgIGlmICgg cmMgKQotICAgICAgICBnb3RvIGZhaWw7Ci0KLSAgICBkLT5hcmNoLmN0eHRfc3dpdGNoID0gJnB2 X2NzdzsKLQotICAgIC8qIDY0LWJpdCBQViBndWVzdCBieSBkZWZhdWx0LiAqLwotICAgIGQtPmFy Y2guaXNfMzJiaXRfcHYgPSBkLT5hcmNoLmhhc18zMmJpdF9zaGluZm8gPSAwOwotCi0gICAgcmV0 dXJuIDA7Ci0KLWZhaWw6Ci0gICAgaWYgKCBkLT5hcmNoLnB2X2RvbWFpbi5nZHRfbGR0X2wxdGFi ICkKLSAgICB7Ci0gICAgICAgIGZyZWVfeGVuaGVhcF9wYWdlKGQtPmFyY2gucHZfZG9tYWluLmdk dF9sZHRfbDF0YWIpOwotICAgICAgICBkLT5hcmNoLnB2X2RvbWFpbi5nZHRfbGR0X2wxdGFiID0g TlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoIGQtPmFyY2gucHZfZG9tYWluLmNwdWlkbWFza3MgKQot ICAgIHsKLSAgICAgICAgeGZyZWUoZC0+YXJjaC5wdl9kb21haW4uY3B1aWRtYXNrcyk7Ci0gICAg ICAgIGQtPmFyY2gucHZfZG9tYWluLmNwdWlkbWFza3MgPSBOVUxMOwotICAgIH0KLQotICAgIHJl dHVybiByYzsKLX0KLQogaW50IGFyY2hfZG9tYWluX2NyZWF0ZShzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBpbnQgZG9tY3JfZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4 ZW5fYXJjaF9kb21haW5jb25maWcgKmNvbmZpZykKIHsKQEAgLTg2Miw0OSArNjYxLDYgQEAgaW50 IGFyY2hfZG9tYWluX3NvZnRfcmVzZXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICByZXR1cm4gcmV0 OwogfQogCi0vKgotICogVGhlc2UgYXJlIHRoZSBtYXNrcyBvZiBDUjQgYml0cyAoc3ViamVjdCB0 byBoYXJkd2FyZSBhdmFpbGFiaWxpdHkpIHdoaWNoIGEKLSAqIFBWIGd1ZXN0IG1heSBub3QgbGVn aXRpbWlhdGVseSBhdHRlbXB0IHRvIG1vZGlmeS4KLSAqLwotc3RhdGljIHVuc2lnbmVkIGxvbmcg X19yZWFkX21vc3RseSBwdl9jcjRfbWFzaywgY29tcGF0X3B2X2NyNF9tYXNrOwotCi1zdGF0aWMg aW50IF9faW5pdCBpbml0X3B2X2NyNF9tYXNrcyh2b2lkKQotewotICAgIHVuc2lnbmVkIGxvbmcg Y29tbW9uX21hc2sgPSB+WDg2X0NSNF9UU0Q7Ci0KLSAgICAvKgotICAgICAqIEFsbCBQViBndWVz dHMgbWF5IGF0dGVtcHQgdG8gbW9kaWZ5IFRTRCwgREUgYW5kIE9TWFNBVkUuCi0gICAgICovCi0g ICAgaWYgKCBjcHVfaGFzX2RlICkKLSAgICAgICAgY29tbW9uX21hc2sgJj0gflg4Nl9DUjRfREU7 Ci0gICAgaWYgKCBjcHVfaGFzX3hzYXZlICkKLSAgICAgICAgY29tbW9uX21hc2sgJj0gflg4Nl9D UjRfT1NYU0FWRTsKLQotICAgIHB2X2NyNF9tYXNrID0gY29tcGF0X3B2X2NyNF9tYXNrID0gY29t bW9uX21hc2s7Ci0KLSAgICAvKgotICAgICAqIDY0Yml0IFBWIGd1ZXN0cyBtYXkgYXR0ZW1wdCB0 byBtb2RpZnkgRlNHU0JBU0UuCi0gICAgICovCi0gICAgaWYgKCBjcHVfaGFzX2ZzZ3NiYXNlICkK LSAgICAgICAgcHZfY3I0X21hc2sgJj0gflg4Nl9DUjRfRlNHU0JBU0U7Ci0KLSAgICByZXR1cm4g MDsKLX0KLV9faW5pdGNhbGwoaW5pdF9wdl9jcjRfbWFza3MpOwotCi11bnNpZ25lZCBsb25nIHB2 X2d1ZXN0X2NyNF9maXh1cChjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBndWVz dF9jcjQpCi17Ci0gICAgdW5zaWduZWQgbG9uZyBodl9jcjQgPSByZWFsX2NyNF90b19wdl9ndWVz dF9jcjQocmVhZF9jcjQoKSk7Ci0gICAgdW5zaWduZWQgbG9uZyBtYXNrID0gaXNfcHZfMzJiaXRf dmNwdSh2KSA/IGNvbXBhdF9wdl9jcjRfbWFzayA6IHB2X2NyNF9tYXNrOwotCi0gICAgaWYgKCAo Z3Vlc3RfY3I0ICYgbWFzaykgIT0gKGh2X2NyNCAmIG1hc2spICkKLSAgICAgICAgcHJpbnRrKFhF TkxPR19HX1dBUk5JTkcKLSAgICAgICAgICAgICAgICJkJWQgYXR0ZW1wdGVkIHRvIGNoYW5nZSAl cHYncyBDUjQgZmxhZ3MgJTA4bHggLT4gJTA4bHhcbiIsCi0gICAgICAgICAgICAgICBjdXJyZW50 LT5kb21haW4tPmRvbWFpbl9pZCwgdiwgaHZfY3I0LCBndWVzdF9jcjQpOwotCi0gICAgcmV0dXJu IChodl9jcjQgJiBtYXNrKSB8IChndWVzdF9jcjQgJiB+bWFzayk7Ci19Ci0KICNkZWZpbmUgeGVu X3ZjcHVfZ3Vlc3RfY29udGV4dCB2Y3B1X2d1ZXN0X2NvbnRleHQKICNkZWZpbmUgZnB1X2N0eHQg ZnB1X2N0eHQueAogQ0hFQ0tfRklFTERfKHN0cnVjdCwgdmNwdV9ndWVzdF9jb250ZXh0LCBmcHVf Y3R4dCk7CkBAIC0xOTE3LDcgKzE2NzMsNyBAQCBzdGF0aWMgdm9pZCBzYXZlX3NlZ21lbnRzKHN0 cnVjdCB2Y3B1ICp2KQogCiAjZGVmaW5lIHN3aXRjaF9rZXJuZWxfc3RhY2sodikgKCh2b2lkKTAp CiAKLXN0YXRpYyB2b2lkIHBhcmF2aXJ0X2N0eHRfc3dpdGNoX2Zyb20oc3RydWN0IHZjcHUgKnYp Cit2b2lkIHBhcmF2aXJ0X2N0eHRfc3dpdGNoX2Zyb20oc3RydWN0IHZjcHUgKnYpCiB7CiAgICAg c2F2ZV9zZWdtZW50cyh2KTsKIApAQCAtMTkzMSw3ICsxNjg3LDcgQEAgc3RhdGljIHZvaWQgcGFy YXZpcnRfY3R4dF9zd2l0Y2hfZnJvbShzdHJ1Y3QgdmNwdSAqdikKICAgICAgICAgd3JpdGVfZGVi dWdyZWcoNywgMCk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhcmF2aXJ0X2N0eHRfc3dpdGNoX3RvKHN0 cnVjdCB2Y3B1ICp2KQordm9pZCBwYXJhdmlydF9jdHh0X3N3aXRjaF90byhzdHJ1Y3QgdmNwdSAq dikKIHsKICAgICB1bnNpZ25lZCBsb25nIGNyNDsKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L3B2L01ha2VmaWxlIGIveGVuL2FyY2gveDg2L3B2L01ha2VmaWxlCmluZGV4IGVhOTQ1OTk0Mzgu LjI3Mzc4MjRlODEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wdi9NYWtlZmlsZQorKysgYi94 ZW4vYXJjaC94ODYvcHYvTWFrZWZpbGUKQEAgLTEsMiArMSwzIEBACiBvYmoteSArPSBoeXBlcmNh bGwubwogb2JqLWJpbi15ICs9IGRvbTBfYnVpbGQuaW5pdC5vCitvYmoteSArPSBkb21haW4ubwpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3B2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L3B2L2Rv bWFpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBiODJlZTJiYmMK LS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMKQEAgLTAsMCArMSwy NzAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGFyY2gveDg2L3B2L2RvbWFpbi5jCisg KgorICogUFYtc3BlY2lmaWMgZG9tYWluIGhhbmRsaW5nCisgKi8KKworLyoKKyAqICBDb3B5cmln aHQgKEMpIDE5OTUgIExpbnVzIFRvcnZhbGRzCisgKgorICogIFBlbnRpdW0gSUlJIEZYU1IsIFNT RSBzdXBwb3J0CisgKiAgR2FyZXRoIEh1Z2hlcyA8Z2FyZXRoQHZhbGludXguY29tPiwgTWF5IDIw MDAKKyAqLworCisKKyNpbmNsdWRlIDx4ZW4vZG9tYWluX3BhZ2UuaD4KKyNpbmNsdWRlIDx4ZW4v ZXJybm8uaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisK K3N0YXRpYyB2b2lkIG5vcmV0dXJuIGNvbnRpbnVlX25vbmlkbGVfZG9tYWluKHN0cnVjdCB2Y3B1 ICp2KQoreworICAgIGNoZWNrX3dha2V1cF9mcm9tX3dhaXQoKTsKKyAgICBtYXJrX3JlZ3NfZGly dHkoZ3Vlc3RfY3B1X3VzZXJfcmVncygpKTsKKyAgICByZXNldF9zdGFja19hbmRfanVtcChyZXRf ZnJvbV9pbnRyKTsKK30KKworc3RhdGljIGludCBzZXR1cF9jb21wYXRfbDQoc3RydWN0IHZjcHUg KnYpCit7CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7CisgICAgbDRfcGdlbnRyeV90ICpsNHRh YjsKKworICAgIHBnID0gYWxsb2NfZG9taGVhcF9wYWdlKHYtPmRvbWFpbiwgTUVNRl9ub19vd25l cik7CisgICAgaWYgKCBwZyA9PSBOVUxMICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKKyAg ICAvKiBUaGlzIHBhZ2UgbmVlZHMgdG8gbG9vayBsaWtlIGEgcGFnZXRhYmxlIHNvIHRoYXQgaXQg Y2FuIGJlIHNoYWRvd2VkICovCisgICAgcGctPnUuaW51c2UudHlwZV9pbmZvID0gUEdUX2w0X3Bh Z2VfdGFibGV8UEdUX3ZhbGlkYXRlZHwxOworCisgICAgbDR0YWIgPSBfX21hcF9kb21haW5fcGFn ZShwZyk7CisgICAgY2xlYXJfcGFnZShsNHRhYik7CisgICAgaW5pdF9ndWVzdF9sNF90YWJsZShs NHRhYiwgdi0+ZG9tYWluLCAxKTsKKyAgICB1bm1hcF9kb21haW5fcGFnZShsNHRhYik7CisKKyAg ICB2LT5hcmNoLmd1ZXN0X3RhYmxlID0gcGFnZXRhYmxlX2Zyb21fcGFnZShwZyk7CisgICAgdi0+ YXJjaC5ndWVzdF90YWJsZV91c2VyID0gdi0+YXJjaC5ndWVzdF90YWJsZTsKKworICAgIHJldHVy biAwOworfQorCitzdGF0aWMgdm9pZCByZWxlYXNlX2NvbXBhdF9sNChzdHJ1Y3QgdmNwdSAqdikK K3sKKyAgICBmcmVlX2RvbWhlYXBfcGFnZShwYWdldGFibGVfZ2V0X3BhZ2Uodi0+YXJjaC5ndWVz dF90YWJsZSkpOworICAgIHYtPmFyY2guZ3Vlc3RfdGFibGUgPSBwYWdldGFibGVfbnVsbCgpOwor ICAgIHYtPmFyY2guZ3Vlc3RfdGFibGVfdXNlciA9IHBhZ2V0YWJsZV9udWxsKCk7Cit9CisKK2lu dCBzd2l0Y2hfY29tcGF0KHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgc3RydWN0IHZjcHUgKnY7 CisgICAgaW50IHJjOworCisgICAgaWYgKCBpc19odm1fZG9tYWluKGQpIHx8IGQtPnRvdF9wYWdl cyAhPSAwICkKKyAgICAgICAgcmV0dXJuIC1FQUNDRVM7CisgICAgaWYgKCBpc19wdl8zMmJpdF9k b21haW4oZCkgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGQtPmFyY2guaGFzXzMyYml0X3No aW5mbyA9IDE7CisgICAgaWYgKCBpc19wdl9kb21haW4oZCkgKQorICAgICAgICBkLT5hcmNoLmlz XzMyYml0X3B2ID0gMTsKKworICAgIGZvcl9lYWNoX3ZjcHUoIGQsIHYgKQorICAgIHsKKyAgICAg ICAgcmMgPSBzZXR1cF9jb21wYXRfYXJnX3hsYXQodik7CisgICAgICAgIGlmICggIXJjICkKKyAg ICAgICAgICAgIHJjID0gc2V0dXBfY29tcGF0X2w0KHYpOworCisgICAgICAgIGlmICggcmMgKQor ICAgICAgICAgICAgZ290byB1bmRvX2FuZF9mYWlsOworICAgIH0KKworICAgIGRvbWFpbl9zZXRf YWxsb2NfYml0c2l6ZShkKTsKKyAgICByZWNhbGN1bGF0ZV9jcHVpZF9wb2xpY3koZCk7CisKKyAg ICBkLT5hcmNoLng4N19maXBfd2lkdGggPSA0OworCisgICAgcmV0dXJuIDA7CisKKyB1bmRvX2Fu ZF9mYWlsOgorICAgIGQtPmFyY2guaXNfMzJiaXRfcHYgPSBkLT5hcmNoLmhhc18zMmJpdF9zaGlu Zm8gPSAwOworICAgIGZvcl9lYWNoX3ZjcHUoIGQsIHYgKQorICAgIHsKKyAgICAgICAgZnJlZV9j b21wYXRfYXJnX3hsYXQodik7CisKKyAgICAgICAgaWYgKCAhcGFnZXRhYmxlX2lzX251bGwodi0+ YXJjaC5ndWVzdF90YWJsZSkgKQorICAgICAgICAgICAgcmVsZWFzZV9jb21wYXRfbDQodik7Cisg ICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCitpbnQgcHZfdmNwdV9pbml0aWFsaXNlKHN0cnVj dCB2Y3B1ICp2KQoreworICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CisgICAgaW50 IHJjID0gMDsKKworICAgIHNwaW5fbG9ja19pbml0KCZ2LT5hcmNoLnB2X3ZjcHUuc2hhZG93X2xk dF9sb2NrKTsKKworICAgIGlmICggIWlzX2lkbGVfZG9tYWluKGQpICkKKyAgICB7CisgICAgICAg IHJjID0gY3JlYXRlX3BlcmRvbWFpbl9tYXBwaW5nKGQsIEdEVF9WSVJUX1NUQVJUKHYpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIDw8IEdEVF9MRFRfVkNQVV9TSElG VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+YXJjaC5wdl9kb21h aW4uZ2R0X2xkdF9sMXRhYiwgTlVMTCk7CisgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAg Z290byBkb25lOworCisgICAgICAgIEJVSUxEX0JVR19PTihOUl9WRUNUT1JTICogc2l6ZW9mKCp2 LT5hcmNoLnB2X3ZjcHUudHJhcF9jdHh0KSA+CisgICAgICAgICAgICAgICAgICAgICBQQUdFX1NJ WkUpOworICAgICAgICB2LT5hcmNoLnB2X3ZjcHUudHJhcF9jdHh0ID0geHphbGxvY19hcnJheShz dHJ1Y3QgdHJhcF9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOUl9WRUNUT1JTKTsKKyAgICAgICAgaWYgKCAhdi0+YXJjaC5wdl92Y3B1LnRy YXBfY3R4dCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJjID0gLUVOT01FTTsKKyAgICAgICAg ICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFBWIGd1ZXN0cyBieSBkZWZh dWx0IGhhdmUgYSAxMDBIeiB0aWNrZXIuICovCisgICAgICAgIHYtPnBlcmlvZGljX3BlcmlvZCA9 IE1JTExJU0VDUygxMCk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgdi0+YXJjaC5jcjMgPSBf X3BhKGlkbGVfcGdfdGFibGUpOworCisgICAgdi0+YXJjaC5wdl92Y3B1LmN0cmxyZWdbNF0gPSBy ZWFsX2NyNF90b19wdl9ndWVzdF9jcjQobW11X2NyNF9mZWF0dXJlcyk7CisKKyAgICBpZiAoIGlz X3B2XzMyYml0X2RvbWFpbihkKSApCisgICAgeworICAgICAgICBpZiAoIChyYyA9IHNldHVwX2Nv bXBhdF9hcmdfeGxhdCh2KSkgKQorICAgICAgICAgICAgZ290byBkb25lOworCisgICAgICAgIGlm ICggKHJjID0gc2V0dXBfY29tcGF0X2w0KHYpKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZy ZWVfY29tcGF0X2FyZ194bGF0KHYpOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9 CisgICAgfQorCisgZG9uZToKKyAgICByZXR1cm4gcmM7Cit9CisKK3ZvaWQgcHZfdmNwdV9kZXN0 cm95KHN0cnVjdCB2Y3B1ICp2KQoreworICAgIGlmICggaXNfcHZfMzJiaXRfdmNwdSh2KSApCisg ICAgeworICAgICAgICBmcmVlX2NvbXBhdF9hcmdfeGxhdCh2KTsKKyAgICAgICAgcmVsZWFzZV9j b21wYXRfbDQodik7CisgICAgfQorCisgICAgeGZyZWUodi0+YXJjaC5wdl92Y3B1LnRyYXBfY3R4 dCk7Cit9CisKK3ZvaWQgcHZfZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAg ICB4ZnJlZShkLT5hcmNoLnB2X2RvbWFpbi5jcHVpZG1hc2tzKTsKKyAgICBmcmVlX3hlbmhlYXBf cGFnZShkLT5hcmNoLnB2X2RvbWFpbi5nZHRfbGR0X2wxdGFiKTsKK30KKworaW50IHB2X2RvbWFp bl9pbml0aWFsaXNlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBkb21jcl9mbGFncykK K3sKKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0IGFyY2hfY3N3IHB2X2NzdyA9IHsKKyAgICAgICAg LmZyb20gPSBwYXJhdmlydF9jdHh0X3N3aXRjaF9mcm9tLAorICAgICAgICAudG8gICA9IHBhcmF2 aXJ0X2N0eHRfc3dpdGNoX3RvLAorICAgICAgICAudGFpbCA9IGNvbnRpbnVlX25vbmlkbGVfZG9t YWluLAorICAgIH07CisgICAgaW50IHJjID0gLUVOT01FTTsKKworICAgIGQtPmFyY2gucHZfZG9t YWluLmdkdF9sZHRfbDF0YWIgPQorICAgICAgICBhbGxvY194ZW5oZWFwX3BhZ2VzKDAsIE1FTUZf bm9kZShkb21haW5fdG9fbm9kZShkKSkpOworICAgIGlmICggIWQtPmFyY2gucHZfZG9tYWluLmdk dF9sZHRfbDF0YWIgKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgY2xlYXJfcGFnZShkLT5hcmNo LnB2X2RvbWFpbi5nZHRfbGR0X2wxdGFiKTsKKworICAgIGlmICggbGV2ZWxsaW5nX2NhcHMgJiB+ TENBUF9mYXVsdGluZyApCisgICAgeworICAgICAgICBkLT5hcmNoLnB2X2RvbWFpbi5jcHVpZG1h c2tzID0geG1hbGxvYyhzdHJ1Y3QgY3B1aWRtYXNrcyk7CisgICAgICAgIGlmICggIWQtPmFyY2gu cHZfZG9tYWluLmNwdWlkbWFza3MgKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAq ZC0+YXJjaC5wdl9kb21haW4uY3B1aWRtYXNrcyA9IGNwdWlkbWFza19kZWZhdWx0czsKKyAgICB9 CisKKyAgICByYyA9IGNyZWF0ZV9wZXJkb21haW5fbWFwcGluZyhkLCBHRFRfTERUX1ZJUlRfU1RB UlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RUX0xEVF9NQllURVMgPDwg KDIwIC0gUEFHRV9TSElGVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TCwgTlVMTCk7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIGQtPmFy Y2guY3R4dF9zd2l0Y2ggPSAmcHZfY3N3OworCisgICAgLyogNjQtYml0IFBWIGd1ZXN0IGJ5IGRl ZmF1bHQuICovCisgICAgZC0+YXJjaC5pc18zMmJpdF9wdiA9IGQtPmFyY2guaGFzXzMyYml0X3No aW5mbyA9IDA7CisKKyAgICByZXR1cm4gMDsKKworZmFpbDoKKyAgICBpZiAoIGQtPmFyY2gucHZf ZG9tYWluLmdkdF9sZHRfbDF0YWIgKQorICAgIHsKKyAgICAgICAgZnJlZV94ZW5oZWFwX3BhZ2Uo ZC0+YXJjaC5wdl9kb21haW4uZ2R0X2xkdF9sMXRhYik7CisgICAgICAgIGQtPmFyY2gucHZfZG9t YWluLmdkdF9sZHRfbDF0YWIgPSBOVUxMOworICAgIH0KKworICAgIGlmICggZC0+YXJjaC5wdl9k b21haW4uY3B1aWRtYXNrcyApCisgICAgeworICAgICAgICB4ZnJlZShkLT5hcmNoLnB2X2RvbWFp bi5jcHVpZG1hc2tzKTsKKyAgICAgICAgZC0+YXJjaC5wdl9kb21haW4uY3B1aWRtYXNrcyA9IE5V TEw7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCisvKgorICogVGhlc2UgYXJlIHRoZSBt YXNrcyBvZiBDUjQgYml0cyAoc3ViamVjdCB0byBoYXJkd2FyZSBhdmFpbGFiaWxpdHkpIHdoaWNo IGEKKyAqIFBWIGd1ZXN0IG1heSBub3QgbGVnaXRpbWlhdGVseSBhdHRlbXB0IHRvIG1vZGlmeS4K KyAqLworc3RhdGljIHVuc2lnbmVkIGxvbmcgX19yZWFkX21vc3RseSBwdl9jcjRfbWFzaywgY29t cGF0X3B2X2NyNF9tYXNrOworCitzdGF0aWMgaW50IF9faW5pdCBpbml0X3B2X2NyNF9tYXNrcyh2 b2lkKQoreworICAgIHVuc2lnbmVkIGxvbmcgY29tbW9uX21hc2sgPSB+WDg2X0NSNF9UU0Q7CisK KyAgICAvKgorICAgICAqIEFsbCBQViBndWVzdHMgbWF5IGF0dGVtcHQgdG8gbW9kaWZ5IFRTRCwg REUgYW5kIE9TWFNBVkUuCisgICAgICovCisgICAgaWYgKCBjcHVfaGFzX2RlICkKKyAgICAgICAg Y29tbW9uX21hc2sgJj0gflg4Nl9DUjRfREU7CisgICAgaWYgKCBjcHVfaGFzX3hzYXZlICkKKyAg ICAgICAgY29tbW9uX21hc2sgJj0gflg4Nl9DUjRfT1NYU0FWRTsKKworICAgIHB2X2NyNF9tYXNr ID0gY29tcGF0X3B2X2NyNF9tYXNrID0gY29tbW9uX21hc2s7CisKKyAgICAvKgorICAgICAqIDY0 Yml0IFBWIGd1ZXN0cyBtYXkgYXR0ZW1wdCB0byBtb2RpZnkgRlNHU0JBU0UuCisgICAgICovCisg ICAgaWYgKCBjcHVfaGFzX2ZzZ3NiYXNlICkKKyAgICAgICAgcHZfY3I0X21hc2sgJj0gflg4Nl9D UjRfRlNHU0JBU0U7CisKKyAgICByZXR1cm4gMDsKK30KK19faW5pdGNhbGwoaW5pdF9wdl9jcjRf bWFza3MpOworCit1bnNpZ25lZCBsb25nIHB2X2d1ZXN0X2NyNF9maXh1cChjb25zdCBzdHJ1Y3Qg dmNwdSAqdiwgdW5zaWduZWQgbG9uZyBndWVzdF9jcjQpCit7CisgICAgdW5zaWduZWQgbG9uZyBo dl9jcjQgPSByZWFsX2NyNF90b19wdl9ndWVzdF9jcjQocmVhZF9jcjQoKSk7CisgICAgdW5zaWdu ZWQgbG9uZyBtYXNrID0gaXNfcHZfMzJiaXRfdmNwdSh2KSA/IGNvbXBhdF9wdl9jcjRfbWFzayA6 IHB2X2NyNF9tYXNrOworCisgICAgaWYgKCAoZ3Vlc3RfY3I0ICYgbWFzaykgIT0gKGh2X2NyNCAm IG1hc2spICkKKyAgICAgICAgcHJpbnRrKFhFTkxPR19HX1dBUk5JTkcKKyAgICAgICAgICAgICAg ICJkJWQgYXR0ZW1wdGVkIHRvIGNoYW5nZSAlcHYncyBDUjQgZmxhZ3MgJTA4bHggLT4gJTA4bHhc biIsCisgICAgICAgICAgICAgICBjdXJyZW50LT5kb21haW4tPmRvbWFpbl9pZCwgdiwgaHZfY3I0 LCBndWVzdF9jcjQpOworCisgICAgcmV0dXJuIChodl9jcjQgJiBtYXNrKSB8IChndWVzdF9jcjQg JiB+bWFzayk7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBj LWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0 CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmgK aW5kZXggNmFiOTg3ZjIzMS4uZTYyNjIxNzhlOCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9kb21haW4uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5oCkBAIC03NCw2 ICs3NCw5IEBAIGludCBtYXBjYWNoZV9kb21haW5faW5pdChzdHJ1Y3QgZG9tYWluICopOwogaW50 IG1hcGNhY2hlX3ZjcHVfaW5pdChzdHJ1Y3QgdmNwdSAqKTsKIHZvaWQgbWFwY2FjaGVfb3ZlcnJp ZGVfY3VycmVudChzdHJ1Y3QgdmNwdSAqKTsKIAordm9pZCBwYXJhdmlydF9jdHh0X3N3aXRjaF9m cm9tKHN0cnVjdCB2Y3B1ICp2KTsKK3ZvaWQgcGFyYXZpcnRfY3R4dF9zd2l0Y2hfdG8oc3RydWN0 IHZjcHUgKnYpOworCiAvKiB4ODYvNjQ6IHRvZ2dsZSBndWVzdCBiZXR3ZWVuIGtlcm5lbCBhbmQg dXNlciBtb2Rlcy4gKi8KIHZvaWQgdG9nZ2xlX2d1ZXN0X21vZGUoc3RydWN0IHZjcHUgKik7CiAK ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHYvcHYuaCBiL3hlbi9pbmNsdWRlL2Fz bS14ODYvcHYvcHYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iYTJk MDU0ZDA4Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9wdi5oCkBA IC0wLDAgKzEsMjkgQEAKKy8qCisgKiBwdi9wdi5oCisgKgorICogUFYgZ3Vlc3QgaW50ZXJmYWNl IGRlZmluaXRpb25zCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFdlaSBMaXUgPHdlaS5saXUy QGNpdHJpeC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBh bmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlLCB2ZXJz aW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoK KyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisg Ki8KKworI2lmbmRlZiBfX1g4Nl9QVl9IX18KKyNkZWZpbmUgX19YODZfUFZfSF9fCisKK2ludCBw dl92Y3B1X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUgKnYpOwordm9pZCBwdl92Y3B1X2Rlc3Ryb3ko c3RydWN0IHZjcHUgKnYpOwordm9pZCBwdl9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9tYWluICpk KTsKK2ludCBwdl9kb21haW5faW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBp bnQgZG9tY3JfZmxhZ3MpOworCisjZW5kaWYJLyogX19YODZfUFZfSF9fICovCi0tIAoyLjExLjAK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK