From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ankur Arora Subject: [RFC PATCH 13/16] drivers/xen: gnttab, evtchn, xenbus API changes Date: Thu, 9 May 2019 10:25:37 -0700 Message-ID: <20190509172540.12398-14-ankur.a.arora__10690.4399626487$1557422807$gmane$org@oracle.com> References: <20190509172540.12398-1-ankur.a.arora@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hOmnm-0000hm-Je for xen-devel@lists.xenproject.org; Thu, 09 May 2019 17:25:50 +0000 In-Reply-To: <20190509172540.12398-1-ankur.a.arora@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org Cc: jgross@suse.com, sstabellini@kernel.org, konrad.wilk@oracle.com, ankur.a.arora@oracle.com, pbonzini@redhat.com, boris.ostrovsky@oracle.com, joao.m.martins@oracle.com List-Id: xen-devel@lists.xenproject.org TWVjaGFuaWNhbCBjaGFuZ2VzLCBub3cgbW9zdCBvZiB0aGVzZSBjYWxscyB0YWtlIHhlbmhvc3Rf dCAqCmFzIHBhcmFtZXRlci4KCkNvLWRldmVsb3BlZC1ieTogSm9hbyBNYXJ0aW5zIDxqb2FvLm0u bWFydGluc0BvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbmt1ciBBcm9yYSA8YW5rdXIuYS5h cm9yYUBvcmFjbGUuY29tPgotLS0KIGRyaXZlcnMveGVuL2NwdV9ob3RwbHVnLmMgICAgIHwgMTQg KysrKysrLS0tLS0tLQogZHJpdmVycy94ZW4vZ250YWxsb2MuYyAgICAgICAgfCAxMyArKysrKysr Ky0tLS0KIGRyaXZlcnMveGVuL2dudGRldi5jICAgICAgICAgIHwgMTYgKysrKysrKysrKystLS0t CiBkcml2ZXJzL3hlbi9tYW5hZ2UuYyAgICAgICAgICB8IDM3ICsrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3hlbi9wbGF0Zm9ybS1wY2kuYyAgICB8IDEyICsrKysr KystLS0tLQogZHJpdmVycy94ZW4vc3lzLWh5cGVydmlzb3IuYyAgfCAxMiArKysrKysrKy0tLS0K IGRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMgICAgIHwgMTAgKysrKysrKy0tLQogZHJpdmVycy94 ZW4veGVuZnMveGVuc3RvcmVkLmMgfCAgNyArKysrLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDczIGlu c2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2Nw dV9ob3RwbHVnLmMgYi9kcml2ZXJzL3hlbi9jcHVfaG90cGx1Zy5jCmluZGV4IGFmZWI5NDQ0NmQz NC4uNGEwNWJjMDI4OTU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9jcHVfaG90cGx1Zy5jCisr KyBiL2RyaXZlcnMveGVuL2NwdV9ob3RwbHVnLmMKQEAgLTMxLDEzICszMSwxMyBAQCBzdGF0aWMg dm9pZCBkaXNhYmxlX2hvdHBsdWdfY3B1KGludCBjcHUpCiAJdW5sb2NrX2RldmljZV9ob3RwbHVn KCk7CiB9CiAKLXN0YXRpYyBpbnQgdmNwdV9vbmxpbmUodW5zaWduZWQgaW50IGNwdSkKK3N0YXRp YyBpbnQgdmNwdV9vbmxpbmUoeGVuaG9zdF90ICp4aCwgdW5zaWduZWQgaW50IGNwdSkKIHsKIAlp bnQgZXJyOwogCWNoYXIgZGlyWzE2XSwgc3RhdGVbMTZdOwogCiAJc3ByaW50ZihkaXIsICJjcHUv JXUiLCBjcHUpOwotCWVyciA9IHhlbmJ1c19zY2FuZih4aF9kZWZhdWx0LCBYQlRfTklMLCBkaXIs ICJhdmFpbGFiaWxpdHkiLCAiJTE1cyIsIHN0YXRlKTsKKwllcnIgPSB4ZW5idXNfc2NhbmYoeGgs IFhCVF9OSUwsIGRpciwgImF2YWlsYWJpbGl0eSIsICIlMTVzIiwgc3RhdGUpOwogCWlmIChlcnIg IT0gMSkgewogCQlpZiAoIXhlbl9pbml0aWFsX2RvbWFpbigpKQogCQkJcHJfZXJyKCJVbmFibGUg dG8gcmVhZCBjcHUgc3RhdGVcbiIpOwpAQCAtNTIsMTIgKzUyLDEyIEBAIHN0YXRpYyBpbnQgdmNw dV9vbmxpbmUodW5zaWduZWQgaW50IGNwdSkKIAlwcl9lcnIoInVua25vd24gc3RhdGUoJXMpIG9u IENQVSVkXG4iLCBzdGF0ZSwgY3B1KTsKIAlyZXR1cm4gLUVJTlZBTDsKIH0KLXN0YXRpYyB2b2lk IHZjcHVfaG90cGx1Zyh1bnNpZ25lZCBpbnQgY3B1KQorc3RhdGljIHZvaWQgdmNwdV9ob3RwbHVn KHhlbmhvc3RfdCAqeGgsIHVuc2lnbmVkIGludCBjcHUpCiB7CiAJaWYgKCFjcHVfcG9zc2libGUo Y3B1KSkKIAkJcmV0dXJuOwogCi0Jc3dpdGNoICh2Y3B1X29ubGluZShjcHUpKSB7CisJc3dpdGNo ICh2Y3B1X29ubGluZSh4aCwgY3B1KSkgewogCWNhc2UgMToKIAkJZW5hYmxlX2hvdHBsdWdfY3B1 KGNwdSk7CiAJCWJyZWFrOwpAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfdmNw dV9ob3RwbHVnX2V2ZW50KHN0cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoLAogCWNwdXN0ciA9IHN0 cnN0cihwYXRoLCAiY3B1LyIpOwogCWlmIChjcHVzdHIgIT0gTlVMTCkgewogCQlzc2NhbmYoY3B1 c3RyLCAiY3B1LyV1IiwgJmNwdSk7Ci0JCXZjcHVfaG90cGx1ZyhjcHUpOworCQl2Y3B1X2hvdHBs dWcod2F0Y2gtPnhoLCBjcHUpOwogCX0KIH0KIApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgaW50 IHNldHVwX2NwdV93YXRjaGVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbm90aWZpZXIsCiAJKHZv aWQpcmVnaXN0ZXJfeGVuYnVzX3dhdGNoKHhoX2RlZmF1bHQsICZjcHVfd2F0Y2gpOwogCiAJZm9y X2VhY2hfcG9zc2libGVfY3B1KGNwdSkgewotCQlpZiAodmNwdV9vbmxpbmUoY3B1KSA9PSAwKSB7 CisJCWlmICh2Y3B1X29ubGluZShjcHVfd2F0Y2gueGgsIGNwdSkgPT0gMCkgewogCQkJKHZvaWQp Y3B1X2Rvd24oY3B1KTsKIAkJCXNldF9jcHVfcHJlc2VudChjcHUsIGZhbHNlKTsKIAkJfQpAQCAt MTE0LDcgKzExNCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHNldHVwX3ZjcHVfaG90cGx1Z19ldmVu dCh2b2lkKQogI2VuZGlmCiAJCXJldHVybiAtRU5PREVWOwogCi0JcmVnaXN0ZXJfeGVuc3RvcmVf bm90aWZpZXIoJnhzbl9jcHUpOworCXJlZ2lzdGVyX3hlbnN0b3JlX25vdGlmaWVyKHhoX2RlZmF1 bHQsICZ4c25fY3B1KTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4v Z250YWxsb2MuYyBiL2RyaXZlcnMveGVuL2dudGFsbG9jLmMKaW5kZXggZTA3ODIzODg2ZmE4Li5h NDkwZTRlOGM4NTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2dudGFsbG9jLmMKKysrIGIvZHJp dmVycy94ZW4vZ250YWxsb2MuYwpAQCAtNzksNiArNzksOCBAQCBzdGF0aWMgTElTVF9IRUFEKGdy ZWZfbGlzdCk7CiBzdGF0aWMgREVGSU5FX01VVEVYKGdyZWZfbXV0ZXgpOwogc3RhdGljIGludCBn cmVmX3NpemU7CiAKK3N0YXRpYyB4ZW5ob3N0X3QgKnhoOworCiBzdHJ1Y3Qgbm90aWZ5X2luZm8g ewogCXVpbnQxNl90IHBnb2ZmOjEyOyAgICAvKiBCaXRzIDAtMTE6IE9mZnNldCBvZiB0aGUgYnl0 ZSB0byBjbGVhciAqLwogCXVpbnQxNl90IGZsYWdzOjI7ICAgICAvKiBCaXRzIDEyLTEzOiBVbm1h cCBub3RpZmljYXRpb24gZmxhZ3MgKi8KQEAgLTE0NCw3ICsxNDYsNyBAQCBzdGF0aWMgaW50IGFk ZF9ncmVmcyhzdHJ1Y3QgaW9jdGxfZ250YWxsb2NfYWxsb2NfZ3JlZiAqb3AsCiAJCX0KIAogCQkv KiBHcmFudCBmb3JlaWduIGFjY2VzcyB0byB0aGUgcGFnZS4gKi8KLQkJcmMgPSBnbnR0YWJfZ3Jh bnRfZm9yZWlnbl9hY2Nlc3Mob3AtPmRvbWlkLAorCQlyYyA9IGdudHRhYl9ncmFudF9mb3JlaWdu X2FjY2Vzcyh4aCwgb3AtPmRvbWlkLAogCQkJCQkJIHhlbl9wYWdlX3RvX2dmbihncmVmLT5wYWdl KSwKIAkJCQkJCSByZWFkb25seSk7CiAJCWlmIChyYyA8IDApCkBAIC0xOTYsMTMgKzE5OCwxMyBA QCBzdGF0aWMgdm9pZCBfX2RlbF9ncmVmKHN0cnVjdCBnbnRhbGxvY19ncmVmICpncmVmKQogCWdy ZWYtPm5vdGlmeS5mbGFncyA9IDA7CiAKIAlpZiAoZ3JlZi0+Z3JlZl9pZCkgewotCQlpZiAoZ250 dGFiX3F1ZXJ5X2ZvcmVpZ25fYWNjZXNzKGdyZWYtPmdyZWZfaWQpKQorCQlpZiAoZ250dGFiX3F1 ZXJ5X2ZvcmVpZ25fYWNjZXNzKHhoLCBncmVmLT5ncmVmX2lkKSkKIAkJCXJldHVybjsKIAotCQlp ZiAoIWdudHRhYl9lbmRfZm9yZWlnbl9hY2Nlc3NfcmVmKGdyZWYtPmdyZWZfaWQsIDApKQorCQlp ZiAoIWdudHRhYl9lbmRfZm9yZWlnbl9hY2Nlc3NfcmVmKHhoLCBncmVmLT5ncmVmX2lkLCAwKSkK IAkJCXJldHVybjsKIAotCQlnbnR0YWJfZnJlZV9ncmFudF9yZWZlcmVuY2UoZ3JlZi0+Z3JlZl9p ZCk7CisJCWdudHRhYl9mcmVlX2dyYW50X3JlZmVyZW5jZSh4aCwgZ3JlZi0+Z3JlZl9pZCk7CiAJ fQogCiAJZ3JlZl9zaXplLS07CkBAIC01ODYsNiArNTg4LDkgQEAgc3RhdGljIGludCBfX2luaXQg Z250YWxsb2NfaW5pdCh2b2lkKQogCWlmICgheGVuX2RvbWFpbigpKQogCQlyZXR1cm4gLUVOT0RF VjsKIAorCS8qIExpbWl0IHRvIGRlZmF1bHQgeGVuaG9zdCBmb3Igbm93LiAqLworCXhoID0geGhf ZGVmYXVsdDsKKwogCWVyciA9IG1pc2NfcmVnaXN0ZXIoJmdudGFsbG9jX21pc2NkZXYpOwogCWlm IChlcnIgIT0gMCkgewogCQlwcl9lcnIoIkNvdWxkIG5vdCByZWdpc3RlciBtaXNjIGdudGFsbG9j IGRldmljZVxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9nbnRkZXYuYyBiL2RyaXZlcnMv eGVuL2dudGRldi5jCmluZGV4IDBmMGM5NTFjZDViMS4uNDBhNDJhYmUyZGQwIDEwMDY0NAotLS0g YS9kcml2ZXJzL3hlbi9nbnRkZXYuYworKysgYi9kcml2ZXJzL3hlbi9nbnRkZXYuYwpAQCAtNjcs NiArNjcsOCBAQCBzdGF0aWMgYXRvbWljX3QgcGFnZXNfbWFwcGVkID0gQVRPTUlDX0lOSVQoMCk7 CiBzdGF0aWMgaW50IHVzZV9wdGVtb2Q7CiAjZGVmaW5lIHBvcHVsYXRlX2ZyZWVhYmxlX21hcHMg dXNlX3B0ZW1vZAogCitzdGF0aWMgeGVuaG9zdF90ICp4aDsKKwogc3RhdGljIGludCB1bm1hcF9n cmFudF9wYWdlcyhzdHJ1Y3QgZ250ZGV2X2dyYW50X21hcCAqbWFwLAogCQkJICAgICBpbnQgb2Zm c2V0LCBpbnQgcGFnZXMpOwogCkBAIC0xMTQsNyArMTE2LDcgQEAgc3RhdGljIHZvaWQgZ250ZGV2 X2ZyZWVfbWFwKHN0cnVjdCBnbnRkZXZfZ3JhbnRfbWFwICptYXApCiAJfSBlbHNlCiAjZW5kaWYK IAlpZiAobWFwLT5wYWdlcykKLQkJZ250dGFiX2ZyZWVfcGFnZXMobWFwLT5jb3VudCwgbWFwLT5w YWdlcyk7CisJCWdudHRhYl9mcmVlX3BhZ2VzKHhoLCBtYXAtPmNvdW50LCBtYXAtPnBhZ2VzKTsK IAogI2lmZGVmIENPTkZJR19YRU5fR1JBTlRfRE1BX0FMTE9DCiAJa2ZyZWUobWFwLT5mcmFtZXMp OwpAQCAtMTgzLDcgKzE4NSw3IEBAIHN0cnVjdCBnbnRkZXZfZ3JhbnRfbWFwICpnbnRkZXZfYWxs b2NfbWFwKHN0cnVjdCBnbnRkZXZfcHJpdiAqcHJpdiwgaW50IGNvdW50LAogCQlhZGQtPmRtYV9i dXNfYWRkciA9IGFyZ3MuZGV2X2J1c19hZGRyOwogCX0gZWxzZQogI2VuZGlmCi0JaWYgKGdudHRh Yl9hbGxvY19wYWdlcyhjb3VudCwgYWRkLT5wYWdlcykpCisJaWYgKGdudHRhYl9hbGxvY19wYWdl cyh4aCwgY291bnQsIGFkZC0+cGFnZXMpKQogCQlnb3RvIGVycjsKIAogCWZvciAoaSA9IDA7IGkg PCBjb3VudDsgaSsrKSB7CkBAIC0zMzksNyArMzQxLDcgQEAgaW50IGdudGRldl9tYXBfZ3JhbnRf cGFnZXMoc3RydWN0IGdudGRldl9ncmFudF9tYXAgKm1hcCkKIAl9CiAKIAlwcl9kZWJ1ZygibWFw ICVkKyVkXG4iLCBtYXAtPmluZGV4LCBtYXAtPmNvdW50KTsKLQllcnIgPSBnbnR0YWJfbWFwX3Jl ZnMobWFwLT5tYXBfb3BzLCB1c2VfcHRlbW9kID8gbWFwLT5rbWFwX29wcyA6IE5VTEwsCisJZXJy ID0gZ250dGFiX21hcF9yZWZzKHhoLCBtYXAtPm1hcF9vcHMsIHVzZV9wdGVtb2QgPyBtYXAtPmtt YXBfb3BzIDogTlVMTCwKIAkJCW1hcC0+cGFnZXMsIG1hcC0+Y291bnQpOwogCWlmIChlcnIpCiAJ CXJldHVybiBlcnI7CkBAIC0zODUsNiArMzg3LDcgQEAgc3RhdGljIGludCBfX3VubWFwX2dyYW50 X3BhZ2VzKHN0cnVjdCBnbnRkZXZfZ3JhbnRfbWFwICptYXAsIGludCBvZmZzZXQsCiAJdW5tYXBf ZGF0YS5rdW5tYXBfb3BzID0gdXNlX3B0ZW1vZCA/IG1hcC0+a3VubWFwX29wcyArIG9mZnNldCA6 IE5VTEw7CiAJdW5tYXBfZGF0YS5wYWdlcyA9IG1hcC0+cGFnZXMgKyBvZmZzZXQ7CiAJdW5tYXBf ZGF0YS5jb3VudCA9IHBhZ2VzOworCXVubWFwX2RhdGEueGggPSB4aDsKIAogCWVyciA9IGdudHRh Yl91bm1hcF9yZWZzX3N5bmMoJnVubWFwX2RhdGEpOwogCWlmIChlcnIpCkBAIC04NzcsNyArODgw LDcgQEAgc3RhdGljIGludCBnbnRkZXZfY29weShzdHJ1Y3QgZ250ZGV2X2NvcHlfYmF0Y2ggKmJh dGNoKQogewogCXVuc2lnbmVkIGludCBpOwogCi0JZ250dGFiX2JhdGNoX2NvcHkoYmF0Y2gtPm9w cywgYmF0Y2gtPm5yX29wcyk7CisJZ250dGFiX2JhdGNoX2NvcHkoeGgsIGJhdGNoLT5vcHMsIGJh dGNoLT5ucl9vcHMpOwogCWdudGRldl9wdXRfcGFnZXMoYmF0Y2gpOwogCiAJLyoKQEAgLTEyMTAs OCArMTIxMywxMyBAQCBzdGF0aWMgaW50IF9faW5pdCBnbnRkZXZfaW5pdCh2b2lkKQogCWlmICgh eGVuX2RvbWFpbigpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAorCS8qCisJICogVXNlIGZvciBtYXBw aW5ncyBncmFudHMgcmVsYXRlZCB0byB0aGUgZGVmYXVsdCB4ZW5ob3N0LgorCSAqLworCXhoID0g eGhfZGVmYXVsdDsKIAl1c2VfcHRlbW9kID0gIXhlbl9mZWF0dXJlKFhFTkZFQVRfYXV0b190cmFu c2xhdGVkX3BoeXNtYXApOwogCisKIAllcnIgPSBtaXNjX3JlZ2lzdGVyKCZnbnRkZXZfbWlzY2Rl dik7CiAJaWYgKGVyciAhPSAwKSB7CiAJCXByX2VycigiQ291bGQgbm90IHJlZ2lzdGVyIGdudGRl diBkZXZpY2VcbiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vbWFuYWdlLmMgYi9kcml2ZXJz L3hlbi9tYW5hZ2UuYwppbmRleCA5YTY5ZDk1NWRkNWMuLjE2NTVkMGEwMzlmZCAxMDA2NDQKLS0t IGEvZHJpdmVycy94ZW4vbWFuYWdlLmMKKysrIGIvZHJpdmVycy94ZW4vbWFuYWdlLmMKQEAgLTIy NywxNCArMjI3LDE0IEBAIHN0YXRpYyB2b2lkIHNodXRkb3duX2hhbmRsZXIoc3RydWN0IHhlbmJ1 c193YXRjaCAqd2F0Y2gsCiAJCXJldHVybjsKIAogIGFnYWluOgotCWVyciA9IHhlbmJ1c190cmFu c2FjdGlvbl9zdGFydCh4aF9kZWZhdWx0LCAmeGJ0KTsKKwllcnIgPSB4ZW5idXNfdHJhbnNhY3Rp b25fc3RhcnQod2F0Y2gtPnhoLCAmeGJ0KTsKIAlpZiAoZXJyKQogCQlyZXR1cm47CiAKLQlzdHIg PSAoY2hhciAqKXhlbmJ1c19yZWFkKHhoX2RlZmF1bHQsIHhidCwgImNvbnRyb2wiLCAic2h1dGRv d24iLCBOVUxMKTsKKwlzdHIgPSAoY2hhciAqKXhlbmJ1c19yZWFkKHdhdGNoLT54aCwgeGJ0LCAi Y29udHJvbCIsICJzaHV0ZG93biIsIE5VTEwpOwogCS8qIElnbm9yZSByZWFkIGVycm9ycyBhbmQg ZW1wdHkgcmVhZHMuICovCiAJaWYgKFhFTkJVU19JU19FUlJfUkVBRChzdHIpKSB7Ci0JCXhlbmJ1 c190cmFuc2FjdGlvbl9lbmQoeGhfZGVmYXVsdCwgeGJ0LCAxKTsKKwkJeGVuYnVzX3RyYW5zYWN0 aW9uX2VuZCh3YXRjaC0+eGgsIHhidCwgMSk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTI0NSw5ICsy NDUsOSBAQCBzdGF0aWMgdm9pZCBzaHV0ZG93bl9oYW5kbGVyKHN0cnVjdCB4ZW5idXNfd2F0Y2gg KndhdGNoLAogCiAJLyogT25seSBhY2tub3dsZWRnZSBjb21tYW5kcyB3aGljaCB3ZSBhcmUgcHJl cGFyZWQgdG8gaGFuZGxlLiAqLwogCWlmIChpZHggPCBBUlJBWV9TSVpFKHNodXRkb3duX2hhbmRs ZXJzKSkKLQkJeGVuYnVzX3dyaXRlKHhoX2RlZmF1bHQsIHhidCwgImNvbnRyb2wiLCAic2h1dGRv d24iLCAiIik7CisJCXhlbmJ1c193cml0ZSh3YXRjaC0+eGgsIHhidCwgImNvbnRyb2wiLCAic2h1 dGRvd24iLCAiIik7CiAKLQllcnIgPSB4ZW5idXNfdHJhbnNhY3Rpb25fZW5kKHhoX2RlZmF1bHQs IHhidCwgMCk7CisJZXJyID0geGVuYnVzX3RyYW5zYWN0aW9uX2VuZCh3YXRjaC0+eGgsIHhidCwg MCk7CiAJaWYgKGVyciA9PSAtRUFHQUlOKSB7CiAJCWtmcmVlKHN0cik7CiAJCWdvdG8gYWdhaW47 CkBAIC0yNzIsMTAgKzI3MiwxMCBAQCBzdGF0aWMgdm9pZCBzeXNycV9oYW5kbGVyKHN0cnVjdCB4 ZW5idXNfd2F0Y2ggKndhdGNoLCBjb25zdCBjaGFyICpwYXRoLAogCWludCBlcnI7CiAKICBhZ2Fp bjoKLQllcnIgPSB4ZW5idXNfdHJhbnNhY3Rpb25fc3RhcnQoeGhfZGVmYXVsdCwgJnhidCk7CisJ ZXJyID0geGVuYnVzX3RyYW5zYWN0aW9uX3N0YXJ0KHdhdGNoLT54aCwgJnhidCk7CiAJaWYgKGVy cikKIAkJcmV0dXJuOwotCWVyciA9IHhlbmJ1c19zY2FuZih4aF9kZWZhdWx0LCB4YnQsICJjb250 cm9sIiwgInN5c3JxIiwgIiVjIiwgJnN5c3JxX2tleSk7CisJZXJyID0geGVuYnVzX3NjYW5mKHdh dGNoLT54aCwgeGJ0LCAiY29udHJvbCIsICJzeXNycSIsICIlYyIsICZzeXNycV9rZXkpOwogCWlm IChlcnIgPCAwKSB7CiAJCS8qCiAJCSAqIFRoZSBYZW5zdG9yZSB3YXRjaCBmaXJlcyBkaXJlY3Rs eSBhZnRlciByZWdpc3RlcmluZyBpdCBhbmQKQEAgLTI4NywyMSArMjg3LDIxIEBAIHN0YXRpYyB2 b2lkIHN5c3JxX2hhbmRsZXIoc3RydWN0IHhlbmJ1c193YXRjaCAqd2F0Y2gsIGNvbnN0IGNoYXIg KnBhdGgsCiAJCWlmIChlcnIgIT0gLUVOT0VOVCAmJiBlcnIgIT0gLUVSQU5HRSkKIAkJCXByX2Vy cigiRXJyb3IgJWQgcmVhZGluZyBzeXNycSBjb2RlIGluIGNvbnRyb2wvc3lzcnFcbiIsCiAJCQkg ICAgICAgZXJyKTsKLQkJeGVuYnVzX3RyYW5zYWN0aW9uX2VuZCh4aF9kZWZhdWx0LCB4YnQsIDEp OworCQl4ZW5idXNfdHJhbnNhY3Rpb25fZW5kKHdhdGNoLT54aCwgeGJ0LCAxKTsKIAkJcmV0dXJu OwogCX0KIAogCWlmIChzeXNycV9rZXkgIT0gJ1wwJykgewotCQllcnIgPSB4ZW5idXNfcHJpbnRm KHhoX2RlZmF1bHQsIHhidCwgImNvbnRyb2wiLCAic3lzcnEiLCAiJWMiLCAnXDAnKTsKKwkJZXJy ID0geGVuYnVzX3ByaW50Zih3YXRjaC0+eGgsIHhidCwgImNvbnRyb2wiLCAic3lzcnEiLCAiJWMi LCAnXDAnKTsKIAkJaWYgKGVycikgewogCQkJcHJfZXJyKCIlczogRXJyb3IgJWQgd3JpdGluZyBz eXNycSBpbiBjb250cm9sL3N5c3JxXG4iLAogCQkJICAgICAgIF9fZnVuY19fLCBlcnIpOwotCQkJ eGVuYnVzX3RyYW5zYWN0aW9uX2VuZCh4aF9kZWZhdWx0LCB4YnQsIDEpOworCQkJeGVuYnVzX3Ry YW5zYWN0aW9uX2VuZCh3YXRjaC0+eGgsIHhidCwgMSk7CiAJCQlyZXR1cm47CiAJCX0KIAl9CiAK LQllcnIgPSB4ZW5idXNfdHJhbnNhY3Rpb25fZW5kKHhoX2RlZmF1bHQsIHhidCwgMCk7CisJZXJy ID0geGVuYnVzX3RyYW5zYWN0aW9uX2VuZCh3YXRjaC0+eGgsIHhidCwgMCk7CiAJaWYgKGVyciA9 PSAtRUFHQUlOKQogCQlnb3RvIGFnYWluOwogCkBAIC0zMjQsMTQgKzMyNCwxNCBAQCBzdGF0aWMg c3RydWN0IG5vdGlmaWVyX2Jsb2NrIHhlbl9yZWJvb3RfbmIgPSB7CiAJLm5vdGlmaWVyX2NhbGwg PSBwb3dlcm9mZl9uYiwKIH07CiAKLXN0YXRpYyBpbnQgc2V0dXBfc2h1dGRvd25fd2F0Y2hlcih2 b2lkKQorc3RhdGljIGludCBzZXR1cF9zaHV0ZG93bl93YXRjaGVyKHhlbmhvc3RfdCAqeGgpCiB7 CiAJaW50IGVycjsKIAlpbnQgaWR4OwogI2RlZmluZSBGRUFUVVJFX1BBVEhfU0laRSAoU0hVVERP V05fQ01EX1NJWkUgKyBzaXplb2YoImZlYXR1cmUtIikpCiAJY2hhciBub2RlW0ZFQVRVUkVfUEFU SF9TSVpFXTsKIAotCWVyciA9IHJlZ2lzdGVyX3hlbmJ1c193YXRjaCh4aF9kZWZhdWx0LCAmc2h1 dGRvd25fd2F0Y2gpOworCWVyciA9IHJlZ2lzdGVyX3hlbmJ1c193YXRjaCh4aCwgJnNodXRkb3du X3dhdGNoKTsKIAlpZiAoZXJyKSB7CiAJCXByX2VycigiRmFpbGVkIHRvIHNldCBzaHV0ZG93biB3 YXRjaGVyXG4iKTsKIAkJcmV0dXJuIGVycjsKQEAgLTMzOSw3ICszMzksNyBAQCBzdGF0aWMgaW50 IHNldHVwX3NodXRkb3duX3dhdGNoZXIodm9pZCkKIAogCiAjaWZkZWYgQ09ORklHX01BR0lDX1NZ U1JRCi0JZXJyID0gcmVnaXN0ZXJfeGVuYnVzX3dhdGNoKHhoX2RlZmF1bHQsICZzeXNycV93YXRj aCk7CisJZXJyID0gcmVnaXN0ZXJfeGVuYnVzX3dhdGNoKHhoLCAmc3lzcnFfd2F0Y2gpOwogCWlm IChlcnIpIHsKIAkJcHJfZXJyKCJGYWlsZWQgdG8gc2V0IHN5c3JxIHdhdGNoZXJcbiIpOwogCQly ZXR1cm4gZXJyOwpAQCAtMzUxLDcgKzM1MSw3IEBAIHN0YXRpYyBpbnQgc2V0dXBfc2h1dGRvd25f d2F0Y2hlcih2b2lkKQogCQkJY29udGludWU7CiAJCXNucHJpbnRmKG5vZGUsIEZFQVRVUkVfUEFU SF9TSVpFLCAiZmVhdHVyZS0lcyIsCiAJCQkgc2h1dGRvd25faGFuZGxlcnNbaWR4XS5jb21tYW5k KTsKLQkJZXJyID0geGVuYnVzX3ByaW50Zih4aF9kZWZhdWx0LCBYQlRfTklMLCAiY29udHJvbCIs IG5vZGUsICIldSIsIDEpOworCQllcnIgPSB4ZW5idXNfcHJpbnRmKHhoLCBYQlRfTklMLCAiY29u dHJvbCIsIG5vZGUsICIldSIsIDEpOwogCQlpZiAoZXJyKSB7CiAJCQlwcl9lcnIoIiVzOiBFcnJv ciAlZCB3cml0aW5nICVzXG4iLCBfX2Z1bmNfXywKIAkJCQllcnIsIG5vZGUpOwpAQCAtMzY0LDkg KzM2NCw5IEBAIHN0YXRpYyBpbnQgc2V0dXBfc2h1dGRvd25fd2F0Y2hlcih2b2lkKQogCiBzdGF0 aWMgaW50IHNodXRkb3duX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbm90aWZpZXIsCiAJ CQkgIHVuc2lnbmVkIGxvbmcgZXZlbnQsCi0JCQkgIHZvaWQgKmRhdGEpCisJCQkgIHZvaWQgKnho KQogewotCXNldHVwX3NodXRkb3duX3dhdGNoZXIoKTsKKwlzZXR1cF9zaHV0ZG93bl93YXRjaGVy KCh4ZW5ob3N0X3QgKikgeGgpOwogCXJldHVybiBOT1RJRllfRE9ORTsKIH0KIApAQCAtMzc4LDcg KzM3OCw4IEBAIGludCB4ZW5fc2V0dXBfc2h1dGRvd25fZXZlbnQodm9pZCkKIAogCWlmICgheGVu X2RvbWFpbigpKQogCQlyZXR1cm4gLUVOT0RFVjsKLQlyZWdpc3Rlcl94ZW5zdG9yZV9ub3RpZmll cigmeGVuc3RvcmVfbm90aWZpZXIpOworCisJcmVnaXN0ZXJfeGVuc3RvcmVfbm90aWZpZXIoeGhf ZGVmYXVsdCwgJnhlbnN0b3JlX25vdGlmaWVyKTsKIAlyZWdpc3Rlcl9yZWJvb3Rfbm90aWZpZXIo Jnhlbl9yZWJvb3RfbmIpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9w bGF0Zm9ybS1wY2kuYyBiL2RyaXZlcnMveGVuL3BsYXRmb3JtLXBjaS5jCmluZGV4IDVkN2RjYWQw YjBhMC4uOGZkYjAxYzRhNjEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9wbGF0Zm9ybS1wY2ku YworKysgYi9kcml2ZXJzL3hlbi9wbGF0Zm9ybS1wY2kuYwpAQCAtMTU0LDE4ICsxNTQsMjAgQEAg c3RhdGljIGludCBwbGF0Zm9ybV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJCX0K IAl9CiAKLQltYXhfbnJfZ2ZyYW1lcyA9IGdudHRhYl9tYXhfZ3JhbnRfZnJhbWVzKCk7CisJbWF4 X25yX2dmcmFtZXMgPSBnbnR0YWJfbWF4X2dyYW50X2ZyYW1lcyh4aF9kZWZhdWx0KTsKIAlncmFu dF9mcmFtZXMgPSBhbGxvY194ZW5fbW1pbyhQQUdFX1NJWkUgKiBtYXhfbnJfZ2ZyYW1lcyk7Ci0J cmV0ID0gZ250dGFiX3NldHVwX2F1dG9feGxhdF9mcmFtZXMoZ3JhbnRfZnJhbWVzKTsKKwlyZXQg PSBnbnR0YWJfc2V0dXBfYXV0b194bGF0X2ZyYW1lcyh4aF9kZWZhdWx0LCBncmFudF9mcmFtZXMp OwogCWlmIChyZXQpCiAJCWdvdG8gb3V0OwotCXJldCA9IGdudHRhYl9pbml0KCk7CisKKwkvKiBI Vk0gb25seSwgd2UgZG9uJ3QgbmVlZCB4aF9yZW1vdGUgKi8KKwlyZXQgPSBnbnR0YWJfaW5pdCh4 aF9kZWZhdWx0KTsKIAlpZiAocmV0KQogCQlnb3RvIGdyYW50X291dDsKLQl4ZW5idXNfcHJvYmUo TlVMTCk7CisJX194ZW5idXNfcHJvYmUoeGhfZGVmYXVsdC0+eGVuc3RvcmVfcHJpdmF0ZSk7CiAJ cmV0dXJuIDA7CiBncmFudF9vdXQ6Ci0JZ250dGFiX2ZyZWVfYXV0b194bGF0X2ZyYW1lcygpOwor CWdudHRhYl9mcmVlX2F1dG9feGxhdF9mcmFtZXMoeGhfZGVmYXVsdCk7CiBvdXQ6CiAJcGNpX3Jl bGVhc2VfcmVnaW9uKHBkZXYsIDApOwogbWVtX291dDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVu L3N5cy1oeXBlcnZpc29yLmMgYi9kcml2ZXJzL3hlbi9zeXMtaHlwZXJ2aXNvci5jCmluZGV4IDAw NWE4OThlN2EyMy4uZDY5YzA3OTA2OTJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9zeXMtaHlw ZXJ2aXNvci5jCisrKyBiL2RyaXZlcnMveGVuL3N5cy1oeXBlcnZpc29yLmMKQEAgLTE0LDYgKzE0 LDcgQEAKICNpbmNsdWRlIDxsaW51eC9lcnIuaD4KIAogI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2Uv eGVuLmg+CisjaW5jbHVkZSA8eGVuL3hlbmhvc3QuaD4KICNpbmNsdWRlIDxhc20veGVuL2h5cGVy dmlzb3IuaD4KICNpbmNsdWRlIDxhc20veGVuL2h5cGVyY2FsbC5oPgogCkBAIC0xNDEsMTUgKzE0 MiwxNSBAQCBzdGF0aWMgc3NpemVfdCB1dWlkX3Nob3dfZmFsbGJhY2soc3RydWN0IGh5cF9zeXNm c19hdHRyICphdHRyLCBjaGFyICpidWZmZXIpCiB7CiAJY2hhciAqdm0sICp2YWw7CiAJaW50IHJl dDsKLQlleHRlcm4gaW50IHhlbnN0b3JlZF9yZWFkeTsKIAorCS8qIERpc2FibGUgZm9yIG5vdzog eGVuc3RvcmVkX3JlYWR5IGlzIHByaXZhdGUgdG8geGVuYnVzCiAJaWYgKCF4ZW5zdG9yZWRfcmVh ZHkpCi0JCXJldHVybiAtRUJVU1k7CisJCXJldHVybiAtRUJVU1k7Ki8KIAotCXZtID0geGVuYnVz X3JlYWQoWEJUX05JTCwgInZtIiwgIiIsIE5VTEwpOworCXZtID0geGVuYnVzX3JlYWQoeGhfZGVm YXVsdCwgWEJUX05JTCwgInZtIiwgIiIsIE5VTEwpOwogCWlmIChJU19FUlIodm0pKQogCQlyZXR1 cm4gUFRSX0VSUih2bSk7Ci0JdmFsID0geGVuYnVzX3JlYWQoWEJUX05JTCwgdm0sICJ1dWlkIiwg TlVMTCk7CisJdmFsID0geGVuYnVzX3JlYWQoeGhfZGVmYXVsdCwgWEJUX05JTCwgdm0sICJ1dWlk IiwgTlVMTCk7CiAJa2ZyZWUodm0pOwogCWlmIChJU19FUlIodmFsKSkKIAkJcmV0dXJuIFBUUl9F UlIodmFsKTsKQEAgLTYwMiw2ICs2MDMsOSBAQCBzdGF0aWMgc3RydWN0IGtvYmpfdHlwZSBoeXBf c3lzZnNfa29ial90eXBlID0gewogCS5zeXNmc19vcHMgPSAmaHlwX3N5c2ZzX29wcywKIH07CiAK Ky8qCisgKiBGb3Igbm93LCBkZWZhdWx0IHhlbmhvc3Qgb25seS4KKyAqLwogc3RhdGljIGludCBf X2luaXQgaHlwZXJ2aXNvcl9zdWJzeXNfaW5pdCh2b2lkKQogewogCWlmICgheGVuX2RvbWFpbigp KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYyBiL2RyaXZlcnMveGVuL3hl bi1iYWxsb29uLmMKaW5kZXggZDM0ZDliMWFmN2E4Li45ZDQ0OGRkN2ZmMTcgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMKKysrIGIvZHJpdmVycy94ZW4veGVuLWJhbGxvb24u YwpAQCAtNDAsNiArNDAsNyBAQAogCiAjaW5jbHVkZSA8eGVuL3hlbi5oPgogI2luY2x1ZGUgPHhl bi9pbnRlcmZhY2UveGVuLmg+CisjaW5jbHVkZSA8eGVuL3hlbmhvc3QuaD4KICNpbmNsdWRlIDx4 ZW4vYmFsbG9vbi5oPgogI2luY2x1ZGUgPHhlbi94ZW5idXMuaD4KICNpbmNsdWRlIDx4ZW4vZmVh dHVyZXMuaD4KQEAgLTk5LDExICsxMDAsMTEgQEAgc3RhdGljIHN0cnVjdCB4ZW5idXNfd2F0Y2gg dGFyZ2V0X3dhdGNoID0gewogCiBzdGF0aWMgaW50IGJhbGxvb25faW5pdF93YXRjaGVyKHN0cnVj dCBub3RpZmllcl9ibG9jayAqbm90aWZpZXIsCiAJCQkJdW5zaWduZWQgbG9uZyBldmVudCwKLQkJ CQl2b2lkICpkYXRhKQorCQkJCXZvaWQgKnhoKQogewogCWludCBlcnI7CiAKLQllcnIgPSByZWdp c3Rlcl94ZW5idXNfd2F0Y2goeGhfZGVmYXVsdCwgJnRhcmdldF93YXRjaCk7CisJZXJyID0gcmVn aXN0ZXJfeGVuYnVzX3dhdGNoKHhoLCAmdGFyZ2V0X3dhdGNoKTsKIAlpZiAoZXJyKQogCQlwcl9l cnIoIkZhaWxlZCB0byBzZXQgYmFsbG9vbiB3YXRjaGVyXG4iKTsKIApAQCAtMTIwLDcgKzEyMSwx MCBAQCB2b2lkIHhlbl9iYWxsb29uX2luaXQodm9pZCkKIAogCXJlZ2lzdGVyX3hlbl9zZWxmYmFs bG9vbmluZygmYmFsbG9vbl9kZXYpOwogCi0JcmVnaXN0ZXJfeGVuc3RvcmVfbm90aWZpZXIoJnhl bnN0b3JlX25vdGlmaWVyKTsKKwkvKgorCSAqIGJhbGxvb25pbmcgaXMgb25seSBjb25jZXJuZWQg d2l0aCB0aGUgZGVmYXVsdCB4ZW5ob3N0LgorCSAqLworCXJlZ2lzdGVyX3hlbnN0b3JlX25vdGlm aWVyKHhoX2RlZmF1bHQsICZ4ZW5zdG9yZV9ub3RpZmllcik7CiB9CiBFWFBPUlRfU1lNQk9MX0dQ TCh4ZW5fYmFsbG9vbl9pbml0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4veGVuZnMveGVu c3RvcmVkLmMgYi9kcml2ZXJzL3hlbi94ZW5mcy94ZW5zdG9yZWQuYwppbmRleCBmNTkyMzVmOWY4 YTIuLjFkNjY5NzRhZTczMCAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4veGVuZnMveGVuc3RvcmVk LmMKKysrIGIvZHJpdmVycy94ZW4veGVuZnMveGVuc3RvcmVkLmMKQEAgLTgsNiArOCw3IEBACiAj aW5jbHVkZSA8eGVuL3hlbmJ1cy5oPgogCiAjaW5jbHVkZSAieGVuZnMuaCIKKyNpbmNsdWRlICIu Li94ZW5idXMveGVuYnVzLmgiIC8qIEZJWE1FICovCiAKIHN0YXRpYyBzc2l6ZV90IHhzZF9yZWFk KHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLAogCQkJICAgIHNpemVfdCBzaXpl LCBsb2ZmX3QgKm9mZikKQEAgLTI1LDcgKzI2LDcgQEAgc3RhdGljIGludCB4c2RfcmVsZWFzZShz dHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHN0YXRpYyBpbnQgeHNkX2t2 YV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogewogCWZpbGUt PnByaXZhdGVfZGF0YSA9ICh2b2lkICopa2FzcHJpbnRmKEdGUF9LRVJORUwsICIweCVwIiwKLQkJ CQkJICAgICAgIHhlbl9zdG9yZV9pbnRlcmZhY2UpOworCQkJCQkgICAgICAgeHNfcHJpdih4aF9k ZWZhdWx0KS0+c3RvcmVfaW50ZXJmYWNlKTsKIAlpZiAoIWZpbGUtPnByaXZhdGVfZGF0YSkKIAkJ cmV0dXJuIC1FTk9NRU07CiAJcmV0dXJuIDA7CkBAIC0zOSw3ICs0MCw3IEBAIHN0YXRpYyBpbnQg eHNkX2t2YV9tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlpZiAocmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLT52 bV9zdGFydCwKLQkJCSAgICB2aXJ0X3RvX3Bmbih4ZW5fc3RvcmVfaW50ZXJmYWNlKSwKKwkJCSAg ICB2aXJ0X3RvX3Bmbih4c19wcml2KHhoX2RlZmF1bHQpLT5zdG9yZV9pbnRlcmZhY2UpLAogCQkJ ICAgIHNpemUsIHZtYS0+dm1fcGFnZV9wcm90KSkKIAkJcmV0dXJuIC1FQUdBSU47CiAKQEAgLTU2 LDcgKzU3LDcgQEAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB4c2Rfa3ZhX2ZpbGVfb3Bz ID0gewogc3RhdGljIGludCB4c2RfcG9ydF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVj dCBmaWxlICpmaWxlKQogewogCWZpbGUtPnByaXZhdGVfZGF0YSA9ICh2b2lkICopa2FzcHJpbnRm KEdGUF9LRVJORUwsICIlZCIsCi0JCQkJCSAgICAgICB4ZW5fc3RvcmVfZXZ0Y2huKTsKKwkJCQkJ ICAgICAgIHhzX3ByaXYoeGhfZGVmYXVsdCktPnN0b3JlX2V2dGNobik7CiAJaWYgKCFmaWxlLT5w cml2YXRlX2RhdGEpCiAJCXJldHVybiAtRU5PTUVNOwogCXJldHVybiAwOwotLSAKMi4yMC4xCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==