From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dongli Zhang Subject: [PATCH 2/6] xenbus: implement the xenwatch multithreading framework Date: Fri, 14 Sep 2018 15:34:12 +0800 Message-ID: <1536910456-13337-3-git-send-email-dongli.zhang__24435.6236573823$1536910374$gmane$org@oracle.com> References: <1536910456-13337-1-git-send-email-dongli.zhang@oracle.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 1g0ic1-0008Lh-QE for xen-devel@lists.xenproject.org; Fri, 14 Sep 2018 07:33:57 +0000 In-Reply-To: <1536910456-13337-1-git-send-email-dongli.zhang@oracle.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, linux-kernel@vger.kernel.org Cc: jgross@suse.com, wei.liu2@citrix.com, konrad.wilk@oracle.com, srinivas.eeda@oracle.com, paul.durrant@citrix.com, boris.ostrovsky@oracle.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBpcyB0aGUgMm5kIHBhdGNoIG9mIGEgKDYtcGF0Y2gpIHBhdGNoIHNldC4KClRoaXMgcGF0 Y2ggaW1wbGVtZW50cyB0aGUgeGVud2F0Y2ggbXVsdGl0aHJlYWRpbmcgZnJhbWV3b3JrIHRvIGNy ZWF0ZSBvcgpkZXN0cm95IHRoZSBwZXItZG9tVSB4ZW53YXRjaCB0aHJlYWQuIFRoZSB4ZW53YXRj aCB0aHJlYWQgaXMgY3JlYXRlZCBvcgpkZXN0cm95ZWQgZHVyaW5nIHhlbmJ1cyBkZXZpY2UgcHJv YmluZyBvciByZW1vdmluZyAodGhhdCBpcywKeGVuYnVzX2Rldl9wcm9iZSgpIG9yIHhlbmJ1c19k ZXZfcmVtb3ZlKCkpIGlmIHRoZSBjb3JyZXNwb25kaW5nIHB2IGRyaXZlcgpoYXMgeGVud2F0Y2gg bXVsdGl0aHJlYWRpbmcgZmVhdHVyZSBlbmFibGVkLiBBcyB0aGVyZSBpcyBvbmx5IG9uZSBzaW5n bGUKcGVyLWRvbVUgeGVud2F0Y2ggdGhyZWFkIGZvciBlYWNoIGRvbWlkLCBwcm9iaW5nIHRoZSB4 ZW5idXMgZGV2aWNlIGZvciB0aGUKc2FtZSBkb21pZCBhZ2FpbiB3b3VsZCBub3QgY3JlYXRlIHRo ZSB0aHJlYWQgZm9yIHRoZSBzYW1lIGRvbWlkIGFnYWluLCBidXQKb25seSBpbmNyZW1lbnQgdGhl IHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgdGhyZWFkJ3MgbXR3YXRjaCBkb21haW4uIFdoZW4gYQp4 ZW5idXMgZGV2aWNlIGlzIHJlbW92ZWQsIHRoZSByZWZlcmVuY2UgY291bnQgaXMgZGVjcmVtZW50 ZWQuIFRoZSBwZXItZG9tVQp4ZW53YXRjaCB0aHJlYWQgaXMgZGVzdHJveWVkIHdoZW4gdGhlIHJl ZmVyZW5jZSBjb3VudCBvZiBpdHMgbXR3YXRjaCBkb21haW4KaXMgemVybywgdGhhdCBpcywgYWwg eGVuYnVzIGRldmljZXMgKHdob3NlIG10d2F0Y2ggZmVhdHVyZSBpcyBlbmFibGVkKSBvZgpzdWNo IG10d2F0Y2ggZG9tYWluIGFyZSByZW1vdmVkLgoKVGhlcmVmb3JlLCBhIGRvbWlkIGhhcyBpdHMg b3duIHBlci1kb21VIHhlbndhdGNoIHRocmVhZCBvbmx5IHdoZW4gaXQgaXMKYXR0YWNoZWQgd2l0 aCBkb20wIGJhY2tlbmQgeGVuYnVzIGRldmljZSB3aG9zZSBwdiBkcml2ZXIgaGFzIHRoZSBmZWF0 dXJlCmVuYWJsZWQuIFRoZSBkb21pZCB3b3VsZCBub3QgaGF2ZSBpdHMgb3duIHhlbndhdGNoIHRo cmVhZCB3aGVuIGl0IGlzIG5vdApydW5uaW5nIGFueSBtdHdhdGNoLWVuYWJsZWQgeGVuYnVzIGRl dmljZS4KCldoZW4gYSB3YXRjaCAod2l0aCB4ZW53YXRjaCBtdWx0aXRocmVhZGluZyBlbmFibGVk KSBpcyB1bnJlZ2lzdGVyZWQsIHdlCndpbGwgZ2VuZXJhbGx5IHRyYXZlcnNlIGFsbCBtdHdhdGNo IGRvbWFpbnMgdG8gcmVtb3ZlIGFsbCBpbmZsaWdodCBwZW5kaW5nCmV2ZW50cyBmaXJlZCBieSBz dWNoIHdhdGNoLiBIb3dldmVyLCBvbmUgb3B0aW1pemF0aW9uIGluIHRoaXMgcGF0Y2ggaXMgd2UK b25seSBuZWVkIHRvIHJlbW92ZSBwZW5kaW5nIGV2ZW50cyBmcm9tIGEgc3BlY2lmaWMgbXR3YXRj aCBkb21haW4gd2hlbiB0aGUKd2F0Y2ggaXMgcmVnaXN0ZXJlZCBmb3IgYSBzcGVjaWZpYyBkb21p ZCwgdGhhdCBpcywgd2hlbiBpdHMgb3duZXJfaWQgZmllbGQKaXMgbm9uLXplcm8uCgpTaWduZWQt b2ZmLWJ5OiBEb25nbGkgWmhhbmcgPGRvbmdsaS56aGFuZ0BvcmFjbGUuY29tPgotLS0KIGRyaXZl cnMveGVuL3hlbmJ1cy94ZW5idXNfcHJvYmUuYyB8ICAgNiArCiBkcml2ZXJzL3hlbi94ZW5idXMv eGVuYnVzX3hzLmMgICAgfCAyNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIGluY2x1ZGUveGVuL3hlbmJ1cy5oICAgICAgICAgICAgICB8ICAgMyArCiAzIGZpbGVzIGNo YW5nZWQsIDI4MiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4veGVuYnVz L3hlbmJ1c19wcm9iZS5jIGIvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19wcm9iZS5jCmluZGV4 IDViNDcxODguLjU3NTU1OTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNf cHJvYmUuYworKysgYi9kcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX3Byb2JlLmMKQEAgLTIzNiw2 ICsyMzYsOSBAQCBpbnQgeGVuYnVzX2Rldl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpfZGV2KQogCWlm IChlcnIpCiAJCWdvdG8gZmFpbDsKIAorCWlmICh4ZW5fbXR3YXRjaCAmJiBkcnYtPnVzZV9tdHdh dGNoKQorCQltdHdhdGNoX2NyZWF0ZV9kb21haW4oZGV2LT5vdGhlcmVuZF9pZCk7CisKIAllcnIg PSB3YXRjaF9vdGhlcmVuZChkZXYpOwogCWlmIChlcnIpIHsKIAkJZGV2X3dhcm4oJmRldi0+ZGV2 LCAid2F0Y2hfb3RoZXJlbmQgb24gJXMgZmFpbGVkLlxuIiwKQEAgLTI2Myw2ICsyNjYsOSBAQCBp bnQgeGVuYnVzX2Rldl9yZW1vdmUoc3RydWN0IGRldmljZSAqX2RldikKIAlpZiAoZHJ2LT5yZW1v dmUpCiAJCWRydi0+cmVtb3ZlKGRldik7CiAKKwlpZiAoeGVuX210d2F0Y2ggJiYgZHJ2LT51c2Vf bXR3YXRjaCkKKwkJbXR3YXRjaF9wdXRfZG9tYWluKGRldi0+b3RoZXJlbmRfaWQpOworCiAJZnJl ZV9vdGhlcmVuZF9kZXRhaWxzKGRldik7CiAKIAl4ZW5idXNfc3dpdGNoX3N0YXRlKGRldiwgWGVu YnVzU3RhdGVDbG9zZWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c194 cy5jIGIvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c194cy5jCmluZGV4IDNmMTM3ZDIuLjc0MWRj NTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfeHMuYworKysgYi9kcml2 ZXJzL3hlbi94ZW5idXMveGVuYnVzX3hzLmMKQEAgLTEwOCw2ICsxMDgsMjAxIEBAIHN0YXRpYyBf X2luaXQgaW50IHhlbl9wYXJzZV9tdHdhdGNoKGNoYXIgKmFyZykKIH0KIGVhcmx5X3BhcmFtKCJ4 ZW5fbXR3YXRjaCIsIHhlbl9wYXJzZV9tdHdhdGNoKTsKIAorc3RydWN0IG10d2F0Y2hfZG9tYWlu ICptdHdhdGNoX2ZpbmRfZG9tYWluKGRvbWlkX3QgZG9taWQpCit7CisJc3RydWN0IG10d2F0Y2hf ZG9tYWluICpkb21haW47CisJaW50IGhhc2ggPSBNVFdBVENIX0hBU0goZG9taWQpOworCXN0cnVj dCBobGlzdF9oZWFkICpoYXNoX2hlYWQgPSAmbXR3YXRjaF9pbmZvLT5kb21haW5faGFzaFtoYXNo XTsKKworCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkb21haW4sIGhhc2hfaGVhZCwgaGFzaF9u b2RlKSB7CisJCWlmIChkb21haW4tPmRvbWlkID09IGRvbWlkKQorCQkJcmV0dXJuIGRvbWFpbjsK Kwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyogcGVyLWRvbVUgdGhyZWFkIGZvciB4ZW53YXRj aCBtdWx0aXRocmVhZGluZy4gKi8KK3N0YXRpYyBpbnQgbXR3YXRjaF90aHJlYWQodm9pZCAqYXJn KQoreworCXN0cnVjdCBtdHdhdGNoX2RvbWFpbiAqZG9tYWluID0gKHN0cnVjdCBtdHdhdGNoX2Rv bWFpbiAqKSBhcmc7CisJc3RydWN0IGxpc3RfaGVhZCAqZW50OworCXN0cnVjdCB4c193YXRjaF9l dmVudCAqZXZlbnQ7CisKKwlkb21haW4tPnBpZCA9IGN1cnJlbnQtPnBpZDsKKworCWZvciAoOzsp IHsKKwkJd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGRvbWFpbi0+ZXZlbnRzX3dxLAorCQkJCQkg IWxpc3RfZW1wdHkoJmRvbWFpbi0+ZXZlbnRzKSB8fAorCQkJCQkgZG9tYWluLT5zdGF0ZSA9PSBN VFdBVENIX0RPTUFJTl9ET1dOKTsKKworCQlpZiAoZG9tYWluLT5zdGF0ZSA9PSBNVFdBVENIX0RP TUFJTl9ET1dOICYmCisJCSAgICBsaXN0X2VtcHR5KCZkb21haW4tPmV2ZW50cykpCisJCQlicmVh azsKKworCQltdXRleF9sb2NrKCZkb21haW4tPmRvbWFpbl9tdXRleCk7CisKKwkJc3Bpbl9sb2Nr KCZkb21haW4tPmV2ZW50c19sb2NrKTsKKwkJZW50ID0gZG9tYWluLT5ldmVudHMubmV4dDsKKwkJ aWYgKGVudCAhPSAmZG9tYWluLT5ldmVudHMpCisJCQlsaXN0X2RlbChlbnQpOworCQlzcGluX3Vu bG9jaygmZG9tYWluLT5ldmVudHNfbG9jayk7CisKKwkJaWYgKGVudCAhPSAmZG9tYWluLT5ldmVu dHMpIHsKKwkJCWV2ZW50ID0gbGlzdF9lbnRyeShlbnQsIHN0cnVjdCB4c193YXRjaF9ldmVudCwg bGlzdCk7CisJCQlldmVudC0+aGFuZGxlLT5jYWxsYmFjayhldmVudC0+aGFuZGxlLCBldmVudC0+ cGF0aCwKKwkJCQkJCWV2ZW50LT50b2tlbik7CisJCQlrZnJlZShldmVudCk7CisJCX0KKworCQlt dXRleF91bmxvY2soJmRvbWFpbi0+ZG9tYWluX211dGV4KTsKKwl9CisKKwkvKgorCSAqIGRvbWFp bi0+c3RhdGUgaXMgYWxyZWFkeSBzZXQgdG8gTVRXQVRDSF9ET01BSU5fRE9XTiAodG8gYXZvaWQK KwkgKiBuZXcgZXZlbnQgdG8gZG9tYWluLT5ldmVudHMpIHdoZW4gYWJvdmUgZm9yIGxvb3AgYnJl YWtzLCBzbworCSAqIHRoYXQgdGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQgdG8gY2xlYW51cCBkb21h aW4tPmV2ZW50cyBhZ2Fpbi4KKwkgKi8KKworCXNwaW5fbG9jaygmbXR3YXRjaF9pbmZvLT5kb21h aW5fbG9jayk7CisJbGlzdF9kZWxfcmN1KCZkb21haW4tPmxpc3Rfbm9kZSk7CisJc3Bpbl91bmxv Y2soJm10d2F0Y2hfaW5mby0+ZG9tYWluX2xvY2spOworCisJc3Bpbl9sb2NrKCZtdHdhdGNoX2lu Zm8tPnB1cmdlX2xvY2spOworCWxpc3RfYWRkKCZkb21haW4tPnB1cmdlX25vZGUsICZtdHdhdGNo X2luZm8tPnB1cmdlX2xpc3QpOworCXNwaW5fdW5sb2NrKCZtdHdhdGNoX2luZm8tPnB1cmdlX2xv Y2spOworCisJc2NoZWR1bGVfd29yaygmbXR3YXRjaF9pbmZvLT5wdXJnZV93b3JrKTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgdm9pZCBkZWxheWVkX2Rlc3Ryb3lfZG9tYWluKHN0cnVjdCBy Y3VfaGVhZCAqaGVhZCkKK3sKKwlzdHJ1Y3QgbXR3YXRjaF9kb21haW4gKmRvbWFpbjsKKworCWRv bWFpbiA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgbXR3YXRjaF9kb21haW4sIHJjdSk7CisJ a2ZyZWUoZG9tYWluKTsKK30KKworc3RhdGljIHZvaWQgeGVuX210d2F0Y2hfcHVyZ2VfZG9tYWlu KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3QgbXR3YXRjaF9kb21haW4gKmRv bWFpbjsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpub2RlOworCisJd2hpbGUgKCFsaXN0X2VtcHR5KCZt dHdhdGNoX2luZm8tPnB1cmdlX2xpc3QpKSB7CisKKwkJc3Bpbl9sb2NrKCZtdHdhdGNoX2luZm8t PnB1cmdlX2xvY2spOworCQlub2RlID0gbXR3YXRjaF9pbmZvLT5wdXJnZV9saXN0Lm5leHQ7CisJ CWlmIChub2RlICE9ICZtdHdhdGNoX2luZm8tPnB1cmdlX2xpc3QpCisJCQlsaXN0X2RlbChub2Rl KTsKKwkJc3Bpbl91bmxvY2soJm10d2F0Y2hfaW5mby0+cHVyZ2VfbG9jayk7CisKKwkJaWYgKG5v ZGUgIT0gJm10d2F0Y2hfaW5mby0+cHVyZ2VfbGlzdCkgeworCQkJZG9tYWluID0gbGlzdF9lbnRy eShub2RlLCBzdHJ1Y3QgbXR3YXRjaF9kb21haW4sCisJCQkJCSAgICBwdXJnZV9ub2RlKTsKKwkJ CWt0aHJlYWRfc3RvcChkb21haW4tPnRhc2spOworCisJCQljYWxsX3JjdSgmZG9tYWluLT5yY3Us IGRlbGF5ZWRfZGVzdHJveV9kb21haW4pOworCQl9CisJfQorfQorCisvKiBSdW5uaW5nIGluIHRo ZSBjb250ZXh0IG9mIGRlZmF1bHQgeGVud2F0Y2gga3RocmVhZC4gKi8KK3ZvaWQgbXR3YXRjaF9j cmVhdGVfZG9tYWluKGRvbWlkX3QgZG9taWQpCit7CisJc3RydWN0IG10d2F0Y2hfZG9tYWluICpk b21haW47CisKKwlpZiAoIWRvbWlkKSB7CisJCXByX2VycigiRGVmYXVsdCB4ZW53YXRjaCB0aHJl YWQgaXMgZm9yIGRvbTBcbiIpOworCQlyZXR1cm47CisJfQorCisJc3Bpbl9sb2NrKCZtdHdhdGNo X2luZm8tPmRvbWFpbl9sb2NrKTsKKworCWRvbWFpbiA9IG10d2F0Y2hfZmluZF9kb21haW4oZG9t aWQpOworCWlmIChkb21haW4pIHsKKwkJYXRvbWljX2luYygmZG9tYWluLT5yZWZjbnQpOworCQlz cGluX3VubG9jaygmbXR3YXRjaF9pbmZvLT5kb21haW5fbG9jayk7CisJCXJldHVybjsKKwl9CisK Kwlkb21haW4gPSBremFsbG9jKHNpemVvZigqZG9tYWluKSwgR0ZQX0FUT01JQyk7CisJaWYgKCFk b21haW4pIHsKKwkJc3Bpbl91bmxvY2soJm10d2F0Y2hfaW5mby0+ZG9tYWluX2xvY2spOworCQlw cl9lcnIoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIG10d2F0Y2ggdGhyZWFkICVkXG4i LAorCQkgICAgICAgZG9taWQpOworCQlyZXR1cm47CisJfQorCisJZG9tYWluLT5kb21pZCA9IGRv bWlkOworCWF0b21pY19zZXQoJmRvbWFpbi0+cmVmY250LCAxKTsKKwltdXRleF9pbml0KCZkb21h aW4tPmRvbWFpbl9tdXRleCk7CisJSU5JVF9MSVNUX0hFQUQoJmRvbWFpbi0+cHVyZ2Vfbm9kZSk7 CisKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZkb21haW4tPmV2ZW50c193cSk7CisJc3Bpbl9sb2Nr X2luaXQoJmRvbWFpbi0+ZXZlbnRzX2xvY2spOworCUlOSVRfTElTVF9IRUFEKCZkb21haW4tPmV2 ZW50cyk7CisKKwlsaXN0X2FkZF90YWlsX3JjdSgmZG9tYWluLT5saXN0X25vZGUsICZtdHdhdGNo X2luZm8tPmRvbWFpbl9saXN0KTsKKworCWhsaXN0X2FkZF9oZWFkX3JjdSgmZG9tYWluLT5oYXNo X25vZGUsCisJCQkgICAmbXR3YXRjaF9pbmZvLT5kb21haW5faGFzaFtNVFdBVENIX0hBU0goZG9t aWQpXSk7CisKKwlzcGluX3VubG9jaygmbXR3YXRjaF9pbmZvLT5kb21haW5fbG9jayk7CisKKwlk b21haW4tPnRhc2sgPSBrdGhyZWFkX3J1bihtdHdhdGNoX3RocmVhZCwgZG9tYWluLAorCQkJCSAg ICJ4ZW4tbXR3YXRjaC0lZCIsIGRvbWlkKTsKKworCWlmICghZG9tYWluLT50YXNrKSB7CisJCXBy X2VycigibXR3YXRjaCBrdGhyZWFkIGNyZWF0aW9uIGlzIGZhaWxlZFxuIik7CisJCWRvbWFpbi0+ c3RhdGUgPSBNVFdBVENIX0RPTUFJTl9ET1dOOworCisJCXJldHVybjsKKwl9CisKKwlkb21haW4t PnN0YXRlID0gTVRXQVRDSF9ET01BSU5fVVA7Cit9CisKKy8qIFJ1bm5pbmcgaW4gdGhlIGNvbnRl eHQgb2YgZGVmYXVsdCB4ZW53YXRjaCBrdGhyZWFkLiAqLwordm9pZCBtdHdhdGNoX3B1dF9kb21h aW4oZG9taWRfdCBkb21pZCkKK3sKKwlzdHJ1Y3QgbXR3YXRjaF9kb21haW4gKmRvbWFpbjsKKwor CXNwaW5fbG9jaygmbXR3YXRjaF9pbmZvLT5kb21haW5fbG9jayk7CisKKwlkb21haW4gPSBtdHdh dGNoX2ZpbmRfZG9tYWluKGRvbWlkKTsKKwlpZiAoIWRvbWFpbikgeworCQlzcGluX3VubG9jaygm bXR3YXRjaF9pbmZvLT5kb21haW5fbG9jayk7CisJCXByX2VycigibXR3YXRjaCBrdGhyZWFkIGZv ciBkb21pZD0lZCBkb2VzIG5vdCBleGlzdFxuIiwKKwkJICAgICAgIGRvbWlkKTsKKwkJcmV0dXJu OworCX0KKworCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZkb21haW4tPnJlZmNudCkpIHsKKwor CQlobGlzdF9kZWxfcmN1KCZkb21haW4tPmhhc2hfbm9kZSk7CisKKwkJaWYgKCFkb21haW4tPnRh c2spIHsKKwkJCS8qCisJCQkgKiBBcyB0aGUgdGFzayBpcyBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBk dXJpbmcKKwkJCSAqIG10d2F0Y2hfY3JlYXRlX2RvbWFpbigpLCB3ZSBkbyBub3QgbmVlZCB0byB3 YWl0CisJCQkgKiBmb3IgdGhlIGtlcm5lbCB0aHJlYWQgdG8gY29tcGxldGUuCisJCQkgKi8KKwkJ CWxpc3RfZGVsX3JjdSgmZG9tYWluLT5saXN0X25vZGUpOworCQkJY2FsbF9yY3UoJmRvbWFpbi0+ cmN1LCBkZWxheWVkX2Rlc3Ryb3lfZG9tYWluKTsKKwkJfSBlbHNlIHsKKwkJCXNwaW5fbG9jaygm ZG9tYWluLT5ldmVudHNfbG9jayk7CisJCQlkb21haW4tPnN0YXRlID0gTVRXQVRDSF9ET01BSU5f RE9XTjsKKwkJCXNwaW5fdW5sb2NrKCZkb21haW4tPmV2ZW50c19sb2NrKTsKKworCQkJd2FrZV91 cCgmZG9tYWluLT5ldmVudHNfd3EpOworCQl9CisJfQorCisJc3Bpbl91bmxvY2soJm10d2F0Y2hf aW5mby0+ZG9tYWluX2xvY2spOworfQorCiBzdGF0aWMgdm9pZCB4c19zdXNwZW5kX2VudGVyKHZv aWQpCiB7CiAJc3Bpbl9sb2NrKCZ4c19zdGF0ZV9sb2NrKTsKQEAgLTc5Myw2ICs5ODgsODAgQEAg aW50IHJlZ2lzdGVyX3hlbmJ1c193YXRjaChzdHJ1Y3QgeGVuYnVzX3dhdGNoICp3YXRjaCkKIH0K IEVYUE9SVF9TWU1CT0xfR1BMKHJlZ2lzdGVyX3hlbmJ1c193YXRjaCk7CiAKK3N0YXRpYyB2b2lk IF9fdW5yZWdpc3Rlcl9zaW5nbGVfbXR3YXRjaChzdHJ1Y3QgeGVuYnVzX3dhdGNoICp3YXRjaCwK KwkJCQkJc3RydWN0IG10d2F0Y2hfZG9tYWluICpkb21haW4pCit7CisJc3RydWN0IHhzX3dhdGNo X2V2ZW50ICpldmVudCwgKnRtcDsKKworCWlmIChjdXJyZW50LT5waWQgIT0gZG9tYWluLT5waWQp CisJCW11dGV4X2xvY2soJmRvbWFpbi0+ZG9tYWluX211dGV4KTsKKworCXNwaW5fbG9jaygmZG9t YWluLT5ldmVudHNfbG9jayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGV2ZW50LCB0bXAs CisJCQkJICZkb21haW4tPmV2ZW50cywgbGlzdCkgeworCQlpZiAoZXZlbnQtPmhhbmRsZSAhPSB3 YXRjaCkKKwkJCWNvbnRpbnVlOworCQlsaXN0X2RlbCgmZXZlbnQtPmxpc3QpOworCQlrZnJlZShl dmVudCk7CisJfQorCXNwaW5fdW5sb2NrKCZkb21haW4tPmV2ZW50c19sb2NrKTsKKworCWlmIChj dXJyZW50LT5waWQgIT0gZG9tYWluLT5waWQpCisJCW11dGV4X3VubG9jaygmZG9tYWluLT5kb21h aW5fbXV0ZXgpOworfQorCitzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyX3NpbmdsZV9tdHdhdGNoKHN0 cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoLAorCQkJCSAgICAgIGRvbWlkX3QgZG9taWQpCit7CisJ c3RydWN0IG10d2F0Y2hfZG9tYWluICpkb21haW47CisJYm9vbCBmb3VuZCA9IGZhbHNlOworCisJ cmN1X3JlYWRfbG9jaygpOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoZG9tYWluLCAmbXR3 YXRjaF9pbmZvLT5kb21haW5fbGlzdCwKKwkJCQlsaXN0X25vZGUpIHsKKwkJaWYgKGRvbWFpbi0+ ZG9taWQgPT0gZG9taWQpIHsKKwkJCWZvdW5kID0gdHJ1ZTsKKwkJCV9fdW5yZWdpc3Rlcl9zaW5n bGVfbXR3YXRjaCh3YXRjaCwgZG9tYWluKTsKKwkJfQorCX0KKworCVdBUk5fT05fT05DRSh1bmxp a2VseSghZm91bmQpKTsKKworCXJjdV9yZWFkX3VubG9jaygpOworfQorCitzdGF0aWMgdm9pZCB1 bnJlZ2lzdGVyX2FsbF9tdHdhdGNoKHN0cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoKQoreworCXN0 cnVjdCBtdHdhdGNoX2RvbWFpbiAqZG9tYWluOworCisJcmN1X3JlYWRfbG9jaygpOworCisJbGlz dF9mb3JfZWFjaF9lbnRyeV9yY3UoZG9tYWluLCAmbXR3YXRjaF9pbmZvLT5kb21haW5fbGlzdCwK KwkJCQlsaXN0X25vZGUpIHsKKwkJX191bnJlZ2lzdGVyX3NpbmdsZV9tdHdhdGNoKHdhdGNoLCBk b21haW4pOworCX0KKworCXJjdV9yZWFkX3VubG9jaygpOworfQorCitzdGF0aWMgdm9pZCB1bnJl Z2lzdGVyX210d2F0Y2goc3RydWN0IHhlbmJ1c193YXRjaCAqd2F0Y2gpCit7CisJLyoKKwkgKiBH ZW5lcmFsbHksIHRvIHVucmVnaXN0ZXIgYSB3YXRjaC4gd2UgbmVlZCB0byB0cmF2ZXJzZSBhbGwK KwkgKiBtdHdhdGNoIGRvbWFpbnMgdG8gcmVtb3ZlIGFsbCBpbmZsaWdodCBwZW5kaW5nIHdhdGNo IGV2ZW50cyBmb3IKKwkgKiBzdWNoIHdhdGNoLgorCSAqCisJICogT25lIGV4Y2VwdGlvbiBpcyB3 ZSBvbmx5IG5lZWQgdG8gcmVtb3ZlIHBlbmRpbmcgd2F0Y2ggZXZlbnRzCisJICogZnJvbSBhIHNp bmdsZSBtdHdhdGNoIGRvbWFpbiB3aGVuIHRoZSB3YXRjaCBpcyByZWdpc3RlcmVkIGZvciBhCisJ ICogc3BlY2lmaWMgZG9taWQuCisJICovCisJaWYgKHdhdGNoLT5vd25lcl9pZCkKKwkJdW5yZWdp c3Rlcl9zaW5nbGVfbXR3YXRjaCh3YXRjaCwgd2F0Y2gtPm93bmVyX2lkKTsKKwllbHNlCisJCXVu cmVnaXN0ZXJfYWxsX210d2F0Y2god2F0Y2gpOworfQorCiB2b2lkIHVucmVnaXN0ZXJfeGVuYnVz X3dhdGNoKHN0cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoKQogewogCXN0cnVjdCB4c193YXRjaF9l dmVudCAqZXZlbnQsICp0bXA7CkBAIC04MzEsNiArMTEwMCw5IEBAIHZvaWQgdW5yZWdpc3Rlcl94 ZW5idXNfd2F0Y2goc3RydWN0IHhlbmJ1c193YXRjaCAqd2F0Y2gpCiAKIAlpZiAoY3VycmVudC0+ cGlkICE9IHhlbndhdGNoX3BpZCkKIAkJbXV0ZXhfdW5sb2NrKCZ4ZW53YXRjaF9tdXRleCk7CisK KwlpZiAoeGVuX210d2F0Y2ggJiYgd2F0Y2gtPmdldF9kb21pZCkKKwkJdW5yZWdpc3Rlcl9tdHdh dGNoKHdhdGNoKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHVucmVnaXN0ZXJfeGVuYnVzX3dhdGNo KTsKIApAQCAtOTU0LDYgKzEyMjYsNyBAQCBpbnQgeHNfaW5pdCh2b2lkKQogCiAJCXNwaW5fbG9j a19pbml0KCZtdHdhdGNoX2luZm8tPnB1cmdlX2xvY2spOwogCQlJTklUX0xJU1RfSEVBRCgmbXR3 YXRjaF9pbmZvLT5wdXJnZV9saXN0KTsKKwkJSU5JVF9XT1JLKCZtdHdhdGNoX2luZm8tPnB1cmdl X3dvcmssIHhlbl9tdHdhdGNoX3B1cmdlX2RvbWFpbik7CiAKIAkJeGVuX210d2F0Y2ggPSB0cnVl OwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi94ZW5idXMuaCBiL2luY2x1ZGUveGVuL3hlbmJ1 cy5oCmluZGV4IGU4MDcxMTQuLjRhYzJjZWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUveGVuL3hlbmJ1 cy5oCisrKyBiL2luY2x1ZGUveGVuL3hlbmJ1cy5oCkBAIC0yNDEsNiArMjQxLDkgQEAgZXh0ZXJu IGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgeGVuX3hlbmJ1c19mb3BzOwogZXh0ZXJuIHN0 cnVjdCB4ZW5zdG9yZV9kb21haW5faW50ZXJmYWNlICp4ZW5fc3RvcmVfaW50ZXJmYWNlOwogZXh0 ZXJuIGludCB4ZW5fc3RvcmVfZXZ0Y2huOwogCit2b2lkIG10d2F0Y2hfY3JlYXRlX2RvbWFpbihk b21pZF90IGRvbWlkKTsKK3ZvaWQgbXR3YXRjaF9wdXRfZG9tYWluKGRvbWlkX3QgZG9taWQpOwor CiBleHRlcm4gYm9vbCB4ZW5fbXR3YXRjaDsKIAogI2RlZmluZSBNVFdBVENIX0hBU0hfU0laRSAy NTYKLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA==