From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH for-next v2 09/10] x86/domain: move PV specific code to pv/domain.c Date: Tue, 25 Apr 2017 14:52:10 +0100 Message-ID: <20170425135211.4696-10-wei.liu2@citrix.com> References: <20170425135211.4696-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d30tA-0007Fh-As for xen-devel@lists.xenproject.org; Tue, 25 Apr 2017 13:52:20 +0000 In-Reply-To: <20170425135211.4696-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 dyBmdW5jdGlvbnMgaW4gaGVhZGVyIGZpbGVzLiBDcmVhdGUKcHYvZG9tYWluLmggZm9yIHRoYXQu CgpObyBmdW5jdGlvbmFsIGNoYW5nZS4KClNpZ25lZC1vZmYtYnk6IFdlaSBMaXUgPHdlaS5saXUy QGNpdHJpeC5jb20+Ci0tLQpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzog QW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94 ODYvZG9tYWluLmMgICAgICAgICAgIHwgMjE0ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogeGVuL2FyY2gveDg2L3B2L01ha2VmaWxlICAgICAgICB8ICAgMSArCiB4ZW4vYXJj aC94ODYvcHYvZG9tYWluLmMgICAgICAgIHwgMjMyICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvcHYvZG9tYWluLmggfCAgMzAgKysr KysrCiA0IGZpbGVzIGNoYW5nZWQsIDI3MCBpbnNlcnRpb25zKCspLCAyMDcgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gveDg2L3B2L2RvbWFpbi5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgeGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9kb21haW4uaAoKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwppbmRleCBmNWU5MTc0 MzFkLi43YzgzZmVjOGZjIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tYWluLmMKKysrIGIv eGVuL2FyY2gveDg2L2RvbWFpbi5jCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSA8eGVuL2lv bW11Lmg+CiAjaW5jbHVkZSA8Y29tcGF0L3ZjcHUuaD4KICNpbmNsdWRlIDxhc20vcHNyLmg+Cisj aW5jbHVkZSA8YXNtL3B2L2RvbWFpbi5oPgogCiBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgdmNwdSAq LCBjdXJyX3ZjcHUpOwogCkBAIC03MCw5ICs3MSw2IEBAIHN0YXRpYyB2b2lkIGRlZmF1bHRfaWRs ZSh2b2lkKTsKIHZvaWQgKCpwbV9pZGxlKSAodm9pZCkgX19yZWFkX21vc3RseSA9IGRlZmF1bHRf aWRsZTsKIHZvaWQgKCpkZWFkX2lkbGUpICh2b2lkKSBfX3JlYWRfbW9zdGx5ID0gZGVmYXVsdF9k ZWFkX2lkbGU7CiAKLXN0YXRpYyB2b2lkIHBhcmF2aXJ0X2N0eHRfc3dpdGNoX2Zyb20oc3RydWN0 IHZjcHUgKnYpOwotc3RhdGljIHZvaWQgcGFyYXZpcnRfY3R4dF9zd2l0Y2hfdG8oc3RydWN0IHZj cHUgKnYpOwotCiBzdGF0aWMgdm9pZCBkZWZhdWx0X2lkbGUodm9pZCkKIHsKICAgICBsb2NhbF9p cnFfZGlzYWJsZSgpOwpAQCAtMTQ1LDEzICsxNDMsNiBAQCBzdGF0aWMgdm9pZCBub3JldHVybiBj b250aW51ZV9pZGxlX2RvbWFpbihzdHJ1Y3QgdmNwdSAqdikKICAgICByZXNldF9zdGFja19hbmRf anVtcChpZGxlX2xvb3ApOwogfQogCi1zdGF0aWMgdm9pZCBub3JldHVybiBjb250aW51ZV9ub25p ZGxlX2RvbWFpbihzdHJ1Y3QgdmNwdSAqdikKLXsKLSAgICBjaGVja193YWtldXBfZnJvbV93YWl0 KCk7Ci0gICAgbWFya19yZWdzX2RpcnR5KGd1ZXN0X2NwdV91c2VyX3JlZ3MoKSk7Ci0gICAgcmVz ZXRfc3RhY2tfYW5kX2p1bXAocmV0X2Zyb21faW50cik7Ci19Ci0KIHZvaWQgZHVtcF9wYWdlZnJh bWVfaW5mbyhzdHJ1Y3QgZG9tYWluICpkKQogewogICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7 CkBAIC0zMTMsMTM1ICszMDQsNiBAQCB2b2lkIGZyZWVfdmNwdV9zdHJ1Y3Qoc3RydWN0IHZjcHUg KnYpCiAgICAgZnJlZV94ZW5oZWFwX3BhZ2Uodik7CiB9CiAKLXN0YXRpYyBpbnQgc2V0dXBfY29t cGF0X2w0KHN0cnVjdCB2Y3B1ICp2KQotewotICAgIHN0cnVjdCBwYWdlX2luZm8gKnBnOwotICAg IGw0X3BnZW50cnlfdCAqbDR0YWI7Ci0KLSAgICBwZyA9IGFsbG9jX2RvbWhlYXBfcGFnZSh2LT5k b21haW4sIE1FTUZfbm9fb3duZXIpOwotICAgIGlmICggcGcgPT0gTlVMTCApCi0gICAgICAgIHJl dHVybiAtRU5PTUVNOwotCi0gICAgLyogVGhpcyBwYWdlIG5lZWRzIHRvIGxvb2sgbGlrZSBhIHBh Z2V0YWJsZSBzbyB0aGF0IGl0IGNhbiBiZSBzaGFkb3dlZCAqLwotICAgIHBnLT51LmludXNlLnR5 cGVfaW5mbyA9IFBHVF9sNF9wYWdlX3RhYmxlfFBHVF92YWxpZGF0ZWR8MTsKLQotICAgIGw0dGFi ID0gX19tYXBfZG9tYWluX3BhZ2UocGcpOwotICAgIGNsZWFyX3BhZ2UobDR0YWIpOwotICAgIGlu aXRfZ3Vlc3RfbDRfdGFibGUobDR0YWIsIHYtPmRvbWFpbiwgMSk7Ci0gICAgdW5tYXBfZG9tYWlu X3BhZ2UobDR0YWIpOwotCi0gICAgdi0+YXJjaC5ndWVzdF90YWJsZSA9IHBhZ2V0YWJsZV9mcm9t X3BhZ2UocGcpOwotICAgIHYtPmFyY2guZ3Vlc3RfdGFibGVfdXNlciA9IHYtPmFyY2guZ3Vlc3Rf dGFibGU7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgcmVsZWFzZV9jb21wYXRf bDQoc3RydWN0IHZjcHUgKnYpCi17Ci0gICAgaWYgKCAhcGFnZXRhYmxlX2lzX251bGwodi0+YXJj aC5ndWVzdF90YWJsZSkgKQotICAgICAgICBmcmVlX2RvbWhlYXBfcGFnZShwYWdldGFibGVfZ2V0 X3BhZ2Uodi0+YXJjaC5ndWVzdF90YWJsZSkpOwotICAgIHYtPmFyY2guZ3Vlc3RfdGFibGUgPSBw YWdldGFibGVfbnVsbCgpOwotICAgIHYtPmFyY2guZ3Vlc3RfdGFibGVfdXNlciA9IHBhZ2V0YWJs ZV9udWxsKCk7Ci19Ci0KLWludCBzd2l0Y2hfY29tcGF0KHN0cnVjdCBkb21haW4gKmQpCi17Ci0g ICAgc3RydWN0IHZjcHUgKnY7Ci0gICAgaW50IHJjOwotCi0gICAgaWYgKCBpc19odm1fZG9tYWlu KGQpIHx8IGQtPnRvdF9wYWdlcyAhPSAwICkKLSAgICAgICAgcmV0dXJuIC1FQUNDRVM7Ci0gICAg aWYgKCBpc19wdl8zMmJpdF9kb21haW4oZCkgKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGQt PmFyY2guaGFzXzMyYml0X3NoaW5mbyA9IDE7Ci0gICAgaWYgKCBpc19wdl9kb21haW4oZCkgKQot ICAgICAgICBkLT5hcmNoLmlzXzMyYml0X3B2ID0gMTsKLQotICAgIGZvcl9lYWNoX3ZjcHUoIGQs IHYgKQotICAgIHsKLSAgICAgICAgcmMgPSBzZXR1cF9jb21wYXRfYXJnX3hsYXQodik7Ci0gICAg ICAgIGlmICggIXJjICkKLSAgICAgICAgICAgIHJjID0gc2V0dXBfY29tcGF0X2w0KHYpOwotCi0g ICAgICAgIGlmICggcmMgKQotICAgICAgICAgICAgZ290byB1bmRvX2FuZF9mYWlsOwotICAgIH0K LQotICAgIGRvbWFpbl9zZXRfYWxsb2NfYml0c2l6ZShkKTsKLSAgICByZWNhbGN1bGF0ZV9jcHVp ZF9wb2xpY3koZCk7Ci0KLSAgICBkLT5hcmNoLng4N19maXBfd2lkdGggPSA0OwotCi0gICAgcmV0 dXJuIDA7Ci0KLSB1bmRvX2FuZF9mYWlsOgotICAgIGQtPmFyY2guaXNfMzJiaXRfcHYgPSBkLT5h cmNoLmhhc18zMmJpdF9zaGluZm8gPSAwOwotICAgIGZvcl9lYWNoX3ZjcHUoIGQsIHYgKQotICAg IHsKLSAgICAgICAgZnJlZV9jb21wYXRfYXJnX3hsYXQodik7Ci0gICAgICAgIHJlbGVhc2VfY29t cGF0X2w0KHYpOwotICAgIH0KLQotICAgIHJldHVybiByYzsKLX0KLQotc3RhdGljIGludCBwdl9j cmVhdGVfZ2R0X2xkdF9sMXRhYihzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdikKLXsK LSAgICByZXR1cm4gY3JlYXRlX3BlcmRvbWFpbl9tYXBwaW5nKGQsIEdEVF9WSVJUX1NUQVJUKHYp LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA8PCBHRFRfTERUX1ZDUFVf U0hJRlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5hcmNoLnB2X2Rv bWFpbi5nZHRfbGR0X2wxdGFiLCBOVUxMKTsKLX0KLQotc3RhdGljIHZvaWQgcHZfZGVzdHJveV9n ZHRfbGR0X2wxdGFiKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2KQotewotICAgIGRl c3Ryb3lfcGVyZG9tYWluX21hcHBpbmcoZCwgR0RUX1ZJUlRfU1RBUlQodiksIDEgPDwgR0RUX0xE VF9WQ1BVX1NISUZUKTsKLX0KLQotc3RhdGljIHZvaWQgcHZfdmNwdV9kZXN0cm95KHN0cnVjdCB2 Y3B1ICp2KTsKLXN0YXRpYyBpbnQgcHZfdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQot ewotICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47Ci0gICAgaW50IHJjOwotCi0gICAg QVNTRVJUKCFpc19pZGxlX2RvbWFpbihkKSk7Ci0KLSAgICBzcGluX2xvY2tfaW5pdCgmdi0+YXJj aC5wdl92Y3B1LnNoYWRvd19sZHRfbG9jayk7Ci0KLSAgICByYyA9IHB2X2NyZWF0ZV9nZHRfbGR0 X2wxdGFiKGQsIHYpOwotICAgIGlmICggcmMgKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICBC VUlMRF9CVUdfT04oTlJfVkVDVE9SUyAqIHNpemVvZigqdi0+YXJjaC5wdl92Y3B1LnRyYXBfY3R4 dCkgPgotICAgICAgICAgICAgICAgICBQQUdFX1NJWkUpOwotICAgIHYtPmFyY2gucHZfdmNwdS50 cmFwX2N0eHQgPSB4emFsbG9jX2FycmF5KHN0cnVjdCB0cmFwX2luZm8sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlJfVkVDVE9SUyk7Ci0gICAgaWYgKCAh di0+YXJjaC5wdl92Y3B1LnRyYXBfY3R4dCApCi0gICAgewotICAgICAgICByYyA9IC1FTk9NRU07 Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBQViBndWVzdHMgYnkgZGVmYXVs dCBoYXZlIGEgMTAwSHogdGlja2VyLiAqLwotICAgIHYtPnBlcmlvZGljX3BlcmlvZCA9IE1JTExJ U0VDUygxMCk7Ci0KLSAgICB2LT5hcmNoLnB2X3ZjcHUuY3RybHJlZ1s0XSA9IHJlYWxfY3I0X3Rv X3B2X2d1ZXN0X2NyNChtbXVfY3I0X2ZlYXR1cmVzKTsKLQotICAgIGlmICggaXNfcHZfMzJiaXRf ZG9tYWluKGQpICkKLSAgICB7Ci0gICAgICAgIGlmICggKHJjID0gc2V0dXBfY29tcGF0X2FyZ194 bGF0KHYpKSApCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAgICAgaWYgKCAocmMgPSBz ZXR1cF9jb21wYXRfbDQodikpICkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSBk b25lOgotICAgIGlmICggcmMgKQotICAgICAgICBwdl92Y3B1X2Rlc3Ryb3kodik7Ci0gICAgcmV0 dXJuIHJjOwotfQotCiBpbnQgdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQogewogICAg IHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CkBAIC00ODYsMTkgKzM0OCw2IEBAIGludCB2 Y3B1X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUgKnYpCiAgICAgcmV0dXJuIHJjOwogfQogCi1zdGF0 aWMgdm9pZCBwdl92Y3B1X2Rlc3Ryb3koc3RydWN0IHZjcHUgKnYpCi17Ci0gICAgaWYgKCBpc19w dl8zMmJpdF92Y3B1KHYpICkKLSAgICB7Ci0gICAgICAgIGZyZWVfY29tcGF0X2FyZ194bGF0KHYp OwotICAgICAgICByZWxlYXNlX2NvbXBhdF9sNCh2KTsKLSAgICB9Ci0KLSAgICBwdl9kZXN0cm95 X2dkdF9sZHRfbDF0YWIodi0+ZG9tYWluLCB2KTsKLSAgICB4ZnJlZSh2LT5hcmNoLnB2X3ZjcHUu dHJhcF9jdHh0KTsKLSAgICB2LT5hcmNoLnB2X3ZjcHUudHJhcF9jdHh0ID0gTlVMTDsKLX0KLQog dm9pZCB2Y3B1X2Rlc3Ryb3koc3RydWN0IHZjcHUgKnYpCiB7CiAgICAgeGZyZWUodi0+YXJjaC52 bV9ldmVudCk7CkBAIC01MzYsNTkgKzM4NSw4IEBAIHN0YXRpYyBib29sIGVtdWxhdGlvbl9mbGFn c19vayhjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCBlbWZsYWdzKQogICAgIHJldHVy biB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBwdl9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9tYWlu ICpkKQotewotICAgIGRlc3Ryb3lfcGVyZG9tYWluX21hcHBpbmcoZCwgR0RUX0xEVF9WSVJUX1NU QVJULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RUX0xEVF9NQllURVMgPDwgKDIw IC0gUEFHRV9TSElGVCkpOwotICAgIHhmcmVlKGQtPmFyY2gucHZfZG9tYWluLmNwdWlkbWFza3Mp OwotICAgIGQtPmFyY2gucHZfZG9tYWluLmNwdWlkbWFza3MgPSBOVUxMOwotICAgIGZyZWVfeGVu aGVhcF9wYWdlKGQtPmFyY2gucHZfZG9tYWluLmdkdF9sZHRfbDF0YWIpOwotICAgIGQtPmFyY2gu cHZfZG9tYWluLmdkdF9sZHRfbDF0YWIgPSBOVUxMOwotfQotCi1zdGF0aWMgaW50IHB2X2RvbWFp bl9pbml0aWFsaXNlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBkb21jcl9mbGFncywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhlbl9hcmNoX2RvbWFpbmNv bmZpZyAqY29uZmlnKQotewotICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJjaF9jc3cgcHZfY3N3 ID0gewotICAgICAgICAuZnJvbSA9IHBhcmF2aXJ0X2N0eHRfc3dpdGNoX2Zyb20sCi0gICAgICAg IC50byAgID0gcGFyYXZpcnRfY3R4dF9zd2l0Y2hfdG8sCi0gICAgICAgIC50YWlsID0gY29udGlu dWVfbm9uaWRsZV9kb21haW4sCi0gICAgfTsKLSAgICBpbnQgcmMgPSAtRU5PTUVNOwotCi0gICAg ZC0+YXJjaC5wdl9kb21haW4uZ2R0X2xkdF9sMXRhYiA9Ci0gICAgICAgIGFsbG9jX3hlbmhlYXBf cGFnZXMoMCwgTUVNRl9ub2RlKGRvbWFpbl90b19ub2RlKGQpKSk7Ci0gICAgaWYgKCAhZC0+YXJj aC5wdl9kb21haW4uZ2R0X2xkdF9sMXRhYiApCi0gICAgICAgIGdvdG8gZmFpbDsKLSAgICBjbGVh cl9wYWdlKGQtPmFyY2gucHZfZG9tYWluLmdkdF9sZHRfbDF0YWIpOwotCi0gICAgaWYgKCBsZXZl bGxpbmdfY2FwcyAmIH5MQ0FQX2ZhdWx0aW5nICkKLSAgICB7Ci0gICAgICAgIGQtPmFyY2gucHZf ZG9tYWluLmNwdWlkbWFza3MgPSB4bWFsbG9jKHN0cnVjdCBjcHVpZG1hc2tzKTsKLSAgICAgICAg aWYgKCAhZC0+YXJjaC5wdl9kb21haW4uY3B1aWRtYXNrcyApCi0gICAgICAgICAgICBnb3RvIGZh aWw7Ci0gICAgICAgICpkLT5hcmNoLnB2X2RvbWFpbi5jcHVpZG1hc2tzID0gY3B1aWRtYXNrX2Rl ZmF1bHRzOwotICAgIH0KLQotICAgIHJjID0gY3JlYXRlX3BlcmRvbWFpbl9tYXBwaW5nKGQsIEdE VF9MRFRfVklSVF9TVEFSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRFRf TERUX01CWVRFUyA8PCAoMjAgLSBQQUdFX1NISUZUKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOVUxMLCBOVUxMKTsKLSAgICBpZiAoIHJjICkKLSAgICAgICAgZ290byBmYWls OwotCi0gICAgZC0+YXJjaC5jdHh0X3N3aXRjaCA9ICZwdl9jc3c7Ci0KLSAgICAvKiA2NC1iaXQg UFYgZ3Vlc3QgYnkgZGVmYXVsdC4gKi8KLSAgICBkLT5hcmNoLmlzXzMyYml0X3B2ID0gZC0+YXJj aC5oYXNfMzJiaXRfc2hpbmZvID0gMDsKLQotICAgIHJldHVybiAwOwotCi0gZmFpbDoKLSAgICBw dl9kb21haW5fZGVzdHJveShkKTsKLQotICAgIHJldHVybiByYzsKLX0KLQordm9pZCBwYXJhdmly dF9jdHh0X3N3aXRjaF9mcm9tKHN0cnVjdCB2Y3B1ICp2KTsKK3ZvaWQgcGFyYXZpcnRfY3R4dF9z d2l0Y2hfdG8oc3RydWN0IHZjcHUgKnYpOwogaW50IGFyY2hfZG9tYWluX2NyZWF0ZShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgZG9tY3JfZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB4ZW5fYXJjaF9kb21haW5jb25maWcgKmNvbmZpZykKIHsKQEAgLTE5MTksNyAr MTcxNyw4IEBAIHN0YXRpYyB2b2lkIHNhdmVfc2VnbWVudHMoc3RydWN0IHZjcHUgKnYpCiAKICNk ZWZpbmUgc3dpdGNoX2tlcm5lbF9zdGFjayh2KSAoKHZvaWQpMCkKIAotc3RhdGljIHZvaWQgcGFy YXZpcnRfY3R4dF9zd2l0Y2hfZnJvbShzdHJ1Y3QgdmNwdSAqdikKKy8qIE5lZWRlZCBieSBQViBn dWVzdHMgKi8KK3ZvaWQgcGFyYXZpcnRfY3R4dF9zd2l0Y2hfZnJvbShzdHJ1Y3QgdmNwdSAqdikK IHsKICAgICBzYXZlX3NlZ21lbnRzKHYpOwogCkBAIC0xOTMzLDcgKzE3MzIsOCBAQCBzdGF0aWMg dm9pZCBwYXJhdmlydF9jdHh0X3N3aXRjaF9mcm9tKHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICB3 cml0ZV9kZWJ1Z3JlZyg3LCAwKTsKIH0KIAotc3RhdGljIHZvaWQgcGFyYXZpcnRfY3R4dF9zd2l0 Y2hfdG8oc3RydWN0IHZjcHUgKnYpCisvKiBOZWVkZWQgYnkgUFYgZ3Vlc3RzICovCit2b2lkIHBh cmF2aXJ0X2N0eHRfc3dpdGNoX3RvKHN0cnVjdCB2Y3B1ICp2KQogewogICAgIHVuc2lnbmVkIGxv bmcgY3I0OwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvTWFrZWZpbGUgYi94ZW4vYXJj aC94ODYvcHYvTWFrZWZpbGUKaW5kZXggZWE5NDU5OTQzOC4uMjczNzgyNGU4MSAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L3B2L01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9NYWtlZmls ZQpAQCAtMSwyICsxLDMgQEAKIG9iai15ICs9IGh5cGVyY2FsbC5vCiBvYmotYmluLXkgKz0gZG9t MF9idWlsZC5pbml0Lm8KK29iai15ICs9IGRvbWFpbi5vCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvcHYvZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvcHYvZG9tYWluLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNTYyYzNkMDNmNQotLS0gL2Rldi9udWxsCisrKyBiL3hl bi9hcmNoL3g4Ni9wdi9kb21haW4uYwpAQCAtMCwwICsxLDIzMiBAQAorLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorICogYXJjaC94ODYvcHYvZG9tYWluLmMKKyAqCisgKiBQViBkb21haW4gaGFuZGxp bmcKKyAqLworCisvKgorICogIENvcHlyaWdodCAoQykgMTk5NSAgTGludXMgVG9ydmFsZHMKKyAq CisgKiAgUGVudGl1bSBJSUkgRlhTUiwgU1NFIHN1cHBvcnQKKyAqICBHYXJldGggSHVnaGVzIDxn YXJldGhAdmFsaW51eC5jb20+LCBNYXkgMjAwMAorICovCisKKyNpbmNsdWRlIDx4ZW4vZG9tYWlu X3BhZ2UuaD4KKyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+Cisj aW5jbHVkZSA8eGVuL3NjaGVkLmg+CisKK3N0YXRpYyB2b2lkIG5vcmV0dXJuIGNvbnRpbnVlX25v bmlkbGVfZG9tYWluKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIGNoZWNrX3dha2V1cF9mcm9tX3dh aXQoKTsKKyAgICBtYXJrX3JlZ3NfZGlydHkoZ3Vlc3RfY3B1X3VzZXJfcmVncygpKTsKKyAgICBy ZXNldF9zdGFja19hbmRfanVtcChyZXRfZnJvbV9pbnRyKTsKK30KKworc3RhdGljIGludCBzZXR1 cF9jb21wYXRfbDQoc3RydWN0IHZjcHUgKnYpCit7CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7 CisgICAgbDRfcGdlbnRyeV90ICpsNHRhYjsKKworICAgIHBnID0gYWxsb2NfZG9taGVhcF9wYWdl KHYtPmRvbWFpbiwgTUVNRl9ub19vd25lcik7CisgICAgaWYgKCBwZyA9PSBOVUxMICkKKyAgICAg ICAgcmV0dXJuIC1FTk9NRU07CisKKyAgICAvKiBUaGlzIHBhZ2UgbmVlZHMgdG8gbG9vayBsaWtl IGEgcGFnZXRhYmxlIHNvIHRoYXQgaXQgY2FuIGJlIHNoYWRvd2VkICovCisgICAgcGctPnUuaW51 c2UudHlwZV9pbmZvID0gUEdUX2w0X3BhZ2VfdGFibGV8UEdUX3ZhbGlkYXRlZHwxOworCisgICAg bDR0YWIgPSBfX21hcF9kb21haW5fcGFnZShwZyk7CisgICAgY2xlYXJfcGFnZShsNHRhYik7Cisg ICAgaW5pdF9ndWVzdF9sNF90YWJsZShsNHRhYiwgdi0+ZG9tYWluLCAxKTsKKyAgICB1bm1hcF9k b21haW5fcGFnZShsNHRhYik7CisKKyAgICB2LT5hcmNoLmd1ZXN0X3RhYmxlID0gcGFnZXRhYmxl X2Zyb21fcGFnZShwZyk7CisgICAgdi0+YXJjaC5ndWVzdF90YWJsZV91c2VyID0gdi0+YXJjaC5n dWVzdF90YWJsZTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCByZWxlYXNlX2Nv bXBhdF9sNChzdHJ1Y3QgdmNwdSAqdikKK3sKKyAgICBpZiAoICFwYWdldGFibGVfaXNfbnVsbCh2 LT5hcmNoLmd1ZXN0X3RhYmxlKSApCisgICAgICAgIGZyZWVfZG9taGVhcF9wYWdlKHBhZ2V0YWJs ZV9nZXRfcGFnZSh2LT5hcmNoLmd1ZXN0X3RhYmxlKSk7CisgICAgdi0+YXJjaC5ndWVzdF90YWJs ZSA9IHBhZ2V0YWJsZV9udWxsKCk7CisgICAgdi0+YXJjaC5ndWVzdF90YWJsZV91c2VyID0gcGFn ZXRhYmxlX251bGwoKTsKK30KKworaW50IHN3aXRjaF9jb21wYXQoc3RydWN0IGRvbWFpbiAqZCkK K3sKKyAgICBzdHJ1Y3QgdmNwdSAqdjsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIGlzX2h2bV9k b21haW4oZCkgfHwgZC0+dG90X3BhZ2VzICE9IDAgKQorICAgICAgICByZXR1cm4gLUVBQ0NFUzsK KyAgICBpZiAoIGlzX3B2XzMyYml0X2RvbWFpbihkKSApCisgICAgICAgIHJldHVybiAwOworCisg ICAgZC0+YXJjaC5oYXNfMzJiaXRfc2hpbmZvID0gMTsKKyAgICBpZiAoIGlzX3B2X2RvbWFpbihk KSApCisgICAgICAgIGQtPmFyY2guaXNfMzJiaXRfcHYgPSAxOworCisgICAgZm9yX2VhY2hfdmNw dSggZCwgdiApCisgICAgeworICAgICAgICByYyA9IHNldHVwX2NvbXBhdF9hcmdfeGxhdCh2KTsK KyAgICAgICAgaWYgKCAhcmMgKQorICAgICAgICAgICAgcmMgPSBzZXR1cF9jb21wYXRfbDQodik7 CisKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAgICBnb3RvIHVuZG9fYW5kX2ZhaWw7Cisg ICAgfQorCisgICAgZG9tYWluX3NldF9hbGxvY19iaXRzaXplKGQpOworICAgIHJlY2FsY3VsYXRl X2NwdWlkX3BvbGljeShkKTsKKworICAgIGQtPmFyY2gueDg3X2ZpcF93aWR0aCA9IDQ7CisKKyAg ICByZXR1cm4gMDsKKworIHVuZG9fYW5kX2ZhaWw6CisgICAgZC0+YXJjaC5pc18zMmJpdF9wdiA9 IGQtPmFyY2guaGFzXzMyYml0X3NoaW5mbyA9IDA7CisgICAgZm9yX2VhY2hfdmNwdSggZCwgdiAp CisgICAgeworICAgICAgICBmcmVlX2NvbXBhdF9hcmdfeGxhdCh2KTsKKyAgICAgICAgcmVsZWFz ZV9jb21wYXRfbDQodik7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50 IHB2X2NyZWF0ZV9nZHRfbGR0X2wxdGFiKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2 KQoreworICAgIHJldHVybiBjcmVhdGVfcGVyZG9tYWluX21hcHBpbmcoZCwgR0RUX1ZJUlRfU1RB UlQodiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIDw8IEdEVF9MRFRf VkNQVV9TSElGVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPmFyY2gu cHZfZG9tYWluLmdkdF9sZHRfbDF0YWIsIE5VTEwpOworfQorCitzdGF0aWMgdm9pZCBwdl9kZXN0 cm95X2dkdF9sZHRfbDF0YWIoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZjcHUgKnYpCit7Cisg ICAgZGVzdHJveV9wZXJkb21haW5fbWFwcGluZyhkLCBHRFRfVklSVF9TVEFSVCh2KSwgMSA8PCBH RFRfTERUX1ZDUFVfU0hJRlQpOworfQorCit2b2lkIHB2X3ZjcHVfZGVzdHJveShzdHJ1Y3QgdmNw dSAqdikKK3sKKyAgICBpZiAoIGlzX3B2XzMyYml0X3ZjcHUodikgKQorICAgIHsKKyAgICAgICAg ZnJlZV9jb21wYXRfYXJnX3hsYXQodik7CisgICAgICAgIHJlbGVhc2VfY29tcGF0X2w0KHYpOwor ICAgIH0KKworICAgIHB2X2Rlc3Ryb3lfZ2R0X2xkdF9sMXRhYih2LT5kb21haW4sIHYpOworICAg IHhmcmVlKHYtPmFyY2gucHZfdmNwdS50cmFwX2N0eHQpOworICAgIHYtPmFyY2gucHZfdmNwdS50 cmFwX2N0eHQgPSBOVUxMOworfQorCitpbnQgcHZfdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1 ICp2KQoreworICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CisgICAgaW50IHJjOwor CisgICAgQVNTRVJUKCFpc19pZGxlX2RvbWFpbihkKSk7CisKKyAgICBzcGluX2xvY2tfaW5pdCgm di0+YXJjaC5wdl92Y3B1LnNoYWRvd19sZHRfbG9jayk7CisKKyAgICByYyA9IHB2X2NyZWF0ZV9n ZHRfbGR0X2wxdGFiKGQsIHYpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIGRvbmU7CisK KyAgICBCVUlMRF9CVUdfT04oTlJfVkVDVE9SUyAqIHNpemVvZigqdi0+YXJjaC5wdl92Y3B1LnRy YXBfY3R4dCkgPgorICAgICAgICAgICAgICAgICBQQUdFX1NJWkUpOworICAgIHYtPmFyY2gucHZf dmNwdS50cmFwX2N0eHQgPSB4emFsbG9jX2FycmF5KHN0cnVjdCB0cmFwX2luZm8sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlJfVkVDVE9SUyk7CisgICAg aWYgKCAhdi0+YXJjaC5wdl92Y3B1LnRyYXBfY3R4dCApCisgICAgeworICAgICAgICByYyA9IC1F Tk9NRU07CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICAvKiBQViBndWVzdHMgYnkg ZGVmYXVsdCBoYXZlIGEgMTAwSHogdGlja2VyLiAqLworICAgIHYtPnBlcmlvZGljX3BlcmlvZCA9 IE1JTExJU0VDUygxMCk7CisKKyAgICB2LT5hcmNoLnB2X3ZjcHUuY3RybHJlZ1s0XSA9IHJlYWxf Y3I0X3RvX3B2X2d1ZXN0X2NyNChtbXVfY3I0X2ZlYXR1cmVzKTsKKworICAgIGlmICggaXNfcHZf MzJiaXRfZG9tYWluKGQpICkKKyAgICB7CisgICAgICAgIGlmICggKHJjID0gc2V0dXBfY29tcGF0 X2FyZ194bGF0KHYpKSApCisgICAgICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAgICAgaWYgKCAo cmMgPSBzZXR1cF9jb21wYXRfbDQodikpICkKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9 CisKKyBkb25lOgorICAgIGlmICggcmMgKQorICAgICAgICBwdl92Y3B1X2Rlc3Ryb3kodik7Cisg ICAgcmV0dXJuIHJjOworfQorCit2b2lkIHB2X2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4g KmQpCit7CisgICAgZGVzdHJveV9wZXJkb21haW5fbWFwcGluZyhkLCBHRFRfTERUX1ZJUlRfU1RB UlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRFRfTERUX01CWVRFUyA8PCAoMjAg LSBQQUdFX1NISUZUKSk7CisgICAgeGZyZWUoZC0+YXJjaC5wdl9kb21haW4uY3B1aWRtYXNrcyk7 CisgICAgZC0+YXJjaC5wdl9kb21haW4uY3B1aWRtYXNrcyA9IE5VTEw7CisgICAgZnJlZV94ZW5o ZWFwX3BhZ2UoZC0+YXJjaC5wdl9kb21haW4uZ2R0X2xkdF9sMXRhYik7CisgICAgZC0+YXJjaC5w dl9kb21haW4uZ2R0X2xkdF9sMXRhYiA9IE5VTEw7Cit9CisKKworZXh0ZXJuIHZvaWQgcGFyYXZp cnRfY3R4dF9zd2l0Y2hfZnJvbShzdHJ1Y3QgdmNwdSAqdik7CitleHRlcm4gdm9pZCBwYXJhdmly dF9jdHh0X3N3aXRjaF90byhzdHJ1Y3QgdmNwdSAqdik7CisKK2ludCBwdl9kb21haW5faW5pdGlh bGlzZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgZG9tY3JfZmxhZ3MsCisgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHhlbl9hcmNoX2RvbWFpbmNvbmZpZyAqY29uZmlnKQor eworICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJjaF9jc3cgcHZfY3N3ID0geworICAgICAgICAu ZnJvbSA9IHBhcmF2aXJ0X2N0eHRfc3dpdGNoX2Zyb20sCisgICAgICAgIC50byAgID0gcGFyYXZp cnRfY3R4dF9zd2l0Y2hfdG8sCisgICAgICAgIC50YWlsID0gY29udGludWVfbm9uaWRsZV9kb21h aW4sCisgICAgfTsKKyAgICBpbnQgcmMgPSAtRU5PTUVNOworCisgICAgZC0+YXJjaC5wdl9kb21h aW4uZ2R0X2xkdF9sMXRhYiA9CisgICAgICAgIGFsbG9jX3hlbmhlYXBfcGFnZXMoMCwgTUVNRl9u b2RlKGRvbWFpbl90b19ub2RlKGQpKSk7CisgICAgaWYgKCAhZC0+YXJjaC5wdl9kb21haW4uZ2R0 X2xkdF9sMXRhYiApCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBjbGVhcl9wYWdlKGQtPmFyY2gu cHZfZG9tYWluLmdkdF9sZHRfbDF0YWIpOworCisgICAgaWYgKCBsZXZlbGxpbmdfY2FwcyAmIH5M Q0FQX2ZhdWx0aW5nICkKKyAgICB7CisgICAgICAgIGQtPmFyY2gucHZfZG9tYWluLmNwdWlkbWFz a3MgPSB4bWFsbG9jKHN0cnVjdCBjcHVpZG1hc2tzKTsKKyAgICAgICAgaWYgKCAhZC0+YXJjaC5w dl9kb21haW4uY3B1aWRtYXNrcyApCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICpk LT5hcmNoLnB2X2RvbWFpbi5jcHVpZG1hc2tzID0gY3B1aWRtYXNrX2RlZmF1bHRzOworICAgIH0K KworICAgIHJjID0gY3JlYXRlX3BlcmRvbWFpbl9tYXBwaW5nKGQsIEdEVF9MRFRfVklSVF9TVEFS VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRFRfTERUX01CWVRFUyA8PCAo MjAgLSBQQUdFX1NISUZUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM LCBOVUxMKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgZC0+YXJj aC5jdHh0X3N3aXRjaCA9ICZwdl9jc3c7CisKKyAgICAvKiA2NC1iaXQgUFYgZ3Vlc3QgYnkgZGVm YXVsdC4gKi8KKyAgICBkLT5hcmNoLmlzXzMyYml0X3B2ID0gZC0+YXJjaC5oYXNfMzJiaXRfc2hp bmZvID0gMDsKKworICAgIHJldHVybiAwOworCisgIGZhaWw6CisgICAgcHZfZG9tYWluX2Rlc3Ry b3koZCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6Cisg KiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAor ICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9kb21haW4uaCBiL3hlbi9pbmNsdWRl L2FzbS14ODYvcHYvZG9tYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uNjI4OGFlMjRkZgotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHYv ZG9tYWluLmgKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIHB2L2RvbWFpbi5oCisgKgorICogUFYg Z3Vlc3QgaW50ZXJmYWNlIGRlZmluaXRpb25zCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFdl aSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisg KiBMaWNlbnNlLCB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBfX1g4Nl9QVl9ET01BSU5fSF9fCisjZGVmaW5l IF9fWDg2X1BWX0RPTUFJTl9IX18KKwordm9pZCBwdl92Y3B1X2Rlc3Ryb3koc3RydWN0IHZjcHUg KnYpOworaW50IHB2X3ZjcHVfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAqdik7Cit2b2lkIHB2X2Rv bWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpOworaW50IHB2X2RvbWFpbl9pbml0aWFsaXNl KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBkb21jcl9mbGFncywKKyAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgeGVuX2FyY2hfZG9tYWluY29uZmlnICpjb25maWcpOworCisj ZW5kaWYJLyogX19YODZfUFZfRE9NQUlOX0hfXyAqLwotLSAKMi4xMS4wCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==