From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: Re: [PATCH 2/6] xenbus: implement the xenwatch multithreading framework Date: Fri, 14 Sep 2018 10:56:23 +0200 Message-ID: <2084a3de-29bc-f255-5134-879f1aeb1329__46229.2114542381$1536915314$gmane$org@suse.com> References: <1536910456-13337-1-git-send-email-dongli.zhang@oracle.com> <1536910456-13337-3-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 1g0jtq-0000kF-N0 for xen-devel@lists.xenproject.org; Fri, 14 Sep 2018 08:56:26 +0000 In-Reply-To: <1536910456-13337-3-git-send-email-dongli.zhang@oracle.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Dongli Zhang , xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org Cc: 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 T24gMTQvMDkvMTggMDk6MzQsIERvbmdsaSBaaGFuZyB3cm90ZToKPiBUaGlzIGlzIHRoZSAybmQg cGF0Y2ggb2YgYSAoNi1wYXRjaCkgcGF0Y2ggc2V0Lgo+IAo+IFRoaXMgcGF0Y2ggaW1wbGVtZW50 cyB0aGUgeGVud2F0Y2ggbXVsdGl0aHJlYWRpbmcgZnJhbWV3b3JrIHRvIGNyZWF0ZSBvcgo+IGRl c3Ryb3kgdGhlIHBlci1kb21VIHhlbndhdGNoIHRocmVhZC4gVGhlIHhlbndhdGNoIHRocmVhZCBp cyBjcmVhdGVkIG9yCj4gZGVzdHJveWVkIGR1cmluZyB4ZW5idXMgZGV2aWNlIHByb2Jpbmcgb3Ig cmVtb3ZpbmcgKHRoYXQgaXMsCj4geGVuYnVzX2Rldl9wcm9iZSgpIG9yIHhlbmJ1c19kZXZfcmVt b3ZlKCkpIGlmIHRoZSBjb3JyZXNwb25kaW5nIHB2IGRyaXZlcgo+IGhhcyB4ZW53YXRjaCBtdWx0 aXRocmVhZGluZyBmZWF0dXJlIGVuYWJsZWQuIEFzIHRoZXJlIGlzIG9ubHkgb25lIHNpbmdsZQo+ IHBlci1kb21VIHhlbndhdGNoIHRocmVhZCBmb3IgZWFjaCBkb21pZCwgcHJvYmluZyB0aGUgeGVu YnVzIGRldmljZSBmb3IgdGhlCj4gc2FtZSBkb21pZCBhZ2FpbiB3b3VsZCBub3QgY3JlYXRlIHRo ZSB0aHJlYWQgZm9yIHRoZSBzYW1lIGRvbWlkIGFnYWluLCBidXQKPiBvbmx5IGluY3JlbWVudCB0 aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSB0aHJlYWQncyBtdHdhdGNoIGRvbWFpbi4gV2hlbiBh Cj4geGVuYnVzIGRldmljZSBpcyByZW1vdmVkLCB0aGUgcmVmZXJlbmNlIGNvdW50IGlzIGRlY3Jl bWVudGVkLiBUaGUgcGVyLWRvbVUKPiB4ZW53YXRjaCB0aHJlYWQgaXMgZGVzdHJveWVkIHdoZW4g dGhlIHJlZmVyZW5jZSBjb3VudCBvZiBpdHMgbXR3YXRjaCBkb21haW4KPiBpcyB6ZXJvLCB0aGF0 IGlzLCBhbCB4ZW5idXMgZGV2aWNlcyAod2hvc2UgbXR3YXRjaCBmZWF0dXJlIGlzIGVuYWJsZWQp IG9mCj4gc3VjaCBtdHdhdGNoIGRvbWFpbiBhcmUgcmVtb3ZlZC4KPiAKPiBUaGVyZWZvcmUsIGEg ZG9taWQgaGFzIGl0cyBvd24gcGVyLWRvbVUgeGVud2F0Y2ggdGhyZWFkIG9ubHkgd2hlbiBpdCBp cwo+IGF0dGFjaGVkIHdpdGggZG9tMCBiYWNrZW5kIHhlbmJ1cyBkZXZpY2Ugd2hvc2UgcHYgZHJp dmVyIGhhcyB0aGUgZmVhdHVyZQo+IGVuYWJsZWQuIFRoZSBkb21pZCB3b3VsZCBub3QgaGF2ZSBp dHMgb3duIHhlbndhdGNoIHRocmVhZCB3aGVuIGl0IGlzIG5vdAo+IHJ1bm5pbmcgYW55IG10d2F0 Y2gtZW5hYmxlZCB4ZW5idXMgZGV2aWNlLgo+IAo+IFdoZW4gYSB3YXRjaCAod2l0aCB4ZW53YXRj aCBtdWx0aXRocmVhZGluZyBlbmFibGVkKSBpcyB1bnJlZ2lzdGVyZWQsIHdlCj4gd2lsbCBnZW5l cmFsbHkgdHJhdmVyc2UgYWxsIG10d2F0Y2ggZG9tYWlucyB0byByZW1vdmUgYWxsIGluZmxpZ2h0 IHBlbmRpbmcKPiBldmVudHMgZmlyZWQgYnkgc3VjaCB3YXRjaC4gSG93ZXZlciwgb25lIG9wdGlt aXphdGlvbiBpbiB0aGlzIHBhdGNoIGlzIHdlCj4gb25seSBuZWVkIHRvIHJlbW92ZSBwZW5kaW5n IGV2ZW50cyBmcm9tIGEgc3BlY2lmaWMgbXR3YXRjaCBkb21haW4gd2hlbiB0aGUKPiB3YXRjaCBp cyByZWdpc3RlcmVkIGZvciBhIHNwZWNpZmljIGRvbWlkLCB0aGF0IGlzLCB3aGVuIGl0cyBvd25l cl9pZCBmaWVsZAo+IGlzIG5vbi16ZXJvLgo+IAo+IFNpZ25lZC1vZmYtYnk6IERvbmdsaSBaaGFu ZyA8ZG9uZ2xpLnpoYW5nQG9yYWNsZS5jb20+Cj4gLS0tCj4gIGRyaXZlcnMveGVuL3hlbmJ1cy94 ZW5idXNfcHJvYmUuYyB8ICAgNiArCj4gIGRyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfeHMuYyAg ICB8IDI3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBpbmNsdWRl L3hlbi94ZW5idXMuaCAgICAgICAgICAgICAgfCAgIDMgKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDI4 MiBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5i dXNfcHJvYmUuYyBiL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfcHJvYmUuYwo+IGluZGV4IDVi NDcxODguLjU3NTU1OTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19w cm9iZS5jCj4gKysrIGIvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c19wcm9iZS5jCj4gQEAgLTIz Niw2ICsyMzYsOSBAQCBpbnQgeGVuYnVzX2Rldl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpfZGV2KQo+ ICAJaWYgKGVycikKPiAgCQlnb3RvIGZhaWw7Cj4gIAo+ICsJaWYgKHhlbl9tdHdhdGNoICYmIGRy di0+dXNlX210d2F0Y2gpCj4gKwkJbXR3YXRjaF9jcmVhdGVfZG9tYWluKGRldi0+b3RoZXJlbmRf aWQpOwo+ICsKPiAgCWVyciA9IHdhdGNoX290aGVyZW5kKGRldik7Cj4gIAlpZiAoZXJyKSB7Cj4g IAkJZGV2X3dhcm4oJmRldi0+ZGV2LCAid2F0Y2hfb3RoZXJlbmQgb24gJXMgZmFpbGVkLlxuIiwK PiBAQCAtMjYzLDYgKzI2Niw5IEBAIGludCB4ZW5idXNfZGV2X3JlbW92ZShzdHJ1Y3QgZGV2aWNl ICpfZGV2KQo+ICAJaWYgKGRydi0+cmVtb3ZlKQo+ICAJCWRydi0+cmVtb3ZlKGRldik7Cj4gIAo+ ICsJaWYgKHhlbl9tdHdhdGNoICYmIGRydi0+dXNlX210d2F0Y2gpCj4gKwkJbXR3YXRjaF9wdXRf ZG9tYWluKGRldi0+b3RoZXJlbmRfaWQpOwo+ICsKPiAgCWZyZWVfb3RoZXJlbmRfZGV0YWlscyhk ZXYpOwo+ICAKPiAgCXhlbmJ1c19zd2l0Y2hfc3RhdGUoZGV2LCBYZW5idXNTdGF0ZUNsb3NlZCk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfeHMuYyBiL2RyaXZlcnMv eGVuL3hlbmJ1cy94ZW5idXNfeHMuYwo+IGluZGV4IDNmMTM3ZDIuLjc0MWRjNTQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy94ZW4veGVuYnVzL3hlbmJ1c194cy5jCj4gKysrIGIvZHJpdmVycy94ZW4v eGVuYnVzL3hlbmJ1c194cy5jCj4gQEAgLTEwOCw2ICsxMDgsMjAxIEBAIHN0YXRpYyBfX2luaXQg aW50IHhlbl9wYXJzZV9tdHdhdGNoKGNoYXIgKmFyZykKPiAgfQo+ICBlYXJseV9wYXJhbSgieGVu X210d2F0Y2giLCB4ZW5fcGFyc2VfbXR3YXRjaCk7Cj4gIAo+ICtzdHJ1Y3QgbXR3YXRjaF9kb21h aW4gKm10d2F0Y2hfZmluZF9kb21haW4oZG9taWRfdCBkb21pZCkKPiArewo+ICsJc3RydWN0IG10 d2F0Y2hfZG9tYWluICpkb21haW47Cj4gKwlpbnQgaGFzaCA9IE1UV0FUQ0hfSEFTSChkb21pZCk7 Cj4gKwlzdHJ1Y3QgaGxpc3RfaGVhZCAqaGFzaF9oZWFkID0gJm10d2F0Y2hfaW5mby0+ZG9tYWlu X2hhc2hbaGFzaF07Cj4gKwo+ICsJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRvbWFpbiwgaGFz aF9oZWFkLCBoYXNoX25vZGUpIHsKPiArCQlpZiAoZG9tYWluLT5kb21pZCA9PSBkb21pZCkKPiAr CQkJcmV0dXJuIGRvbWFpbjsKPiArCX0KPiArCj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiAr LyogcGVyLWRvbVUgdGhyZWFkIGZvciB4ZW53YXRjaCBtdWx0aXRocmVhZGluZy4gKi8KPiArc3Rh dGljIGludCBtdHdhdGNoX3RocmVhZCh2b2lkICphcmcpCj4gK3sKPiArCXN0cnVjdCBtdHdhdGNo X2RvbWFpbiAqZG9tYWluID0gKHN0cnVjdCBtdHdhdGNoX2RvbWFpbiAqKSBhcmc7Cj4gKwlzdHJ1 Y3QgbGlzdF9oZWFkICplbnQ7Cj4gKwlzdHJ1Y3QgeHNfd2F0Y2hfZXZlbnQgKmV2ZW50Owo+ICsK PiArCWRvbWFpbi0+cGlkID0gY3VycmVudC0+cGlkOwo+ICsKPiArCWZvciAoOzspIHsKPiArCQl3 YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZG9tYWluLT5ldmVudHNfd3EsCj4gKwkJCQkJICFsaXN0 X2VtcHR5KCZkb21haW4tPmV2ZW50cykgfHwKPiArCQkJCQkgZG9tYWluLT5zdGF0ZSA9PSBNVFdB VENIX0RPTUFJTl9ET1dOKTsKPiArCj4gKwkJaWYgKGRvbWFpbi0+c3RhdGUgPT0gTVRXQVRDSF9E T01BSU5fRE9XTiAmJgo+ICsJCSAgICBsaXN0X2VtcHR5KCZkb21haW4tPmV2ZW50cykpCj4gKwkJ CWJyZWFrOwo+ICsKPiArCQltdXRleF9sb2NrKCZkb21haW4tPmRvbWFpbl9tdXRleCk7Cj4gKwo+ ICsJCXNwaW5fbG9jaygmZG9tYWluLT5ldmVudHNfbG9jayk7Cj4gKwkJZW50ID0gZG9tYWluLT5l dmVudHMubmV4dDsKPiArCQlpZiAoZW50ICE9ICZkb21haW4tPmV2ZW50cykKPiArCQkJbGlzdF9k ZWwoZW50KTsKPiArCQlzcGluX3VubG9jaygmZG9tYWluLT5ldmVudHNfbG9jayk7Cj4gKwo+ICsJ CWlmIChlbnQgIT0gJmRvbWFpbi0+ZXZlbnRzKSB7Cj4gKwkJCWV2ZW50ID0gbGlzdF9lbnRyeShl bnQsIHN0cnVjdCB4c193YXRjaF9ldmVudCwgbGlzdCk7Cj4gKwkJCWV2ZW50LT5oYW5kbGUtPmNh bGxiYWNrKGV2ZW50LT5oYW5kbGUsIGV2ZW50LT5wYXRoLAo+ICsJCQkJCQlldmVudC0+dG9rZW4p Owo+ICsJCQlrZnJlZShldmVudCk7Cj4gKwkJfQo+ICsKPiArCQltdXRleF91bmxvY2soJmRvbWFp bi0+ZG9tYWluX211dGV4KTsKPiArCX0KClRoaXMgaXMgbmVhcmx5IHRoZSBzYW1lIGNvZGluZyBh cyB4ZW53YXRjaF90aHJlYWQoKS4gV2h5IGRvbid0IHlvdQpkZWZpbmUgYSBuZXcgKHN1Yi0pc3Ry dWN0dXJlIGNvbnRhaW5pbmcgdGhlIG5lZWRlZCBlbGVtZW50cyBhbmQgbW92ZQp4ZW53YXRjaF9w aWQsIHdhdGNoX2V2ZW50c193YWl0cSwgd2F0Y2hfZXZlbnRzLCB4ZW53YXRjaF9tdXRleCwKd2F0 Y2hfZXZlbnRzX2xvY2sgaW50byBzdWNoIGEgc3RydWN0dXJlPyBUaGVuIHlvdSBjb3VsZCBhIGNv bW1vbgpmdW5jdGlvbiBmb3IgYm90aCBwdXJwb3NlcyAoeW91J2QgbmVlZCB0byBzZXQgc3RhdGUg Zm9yCnhlbndhdGNoX3RocmVhZCgpIHRvIERPTUFJTl9VUCBhbmQgYWRkIGEgY2FsbGJhY2sgZm9y IHRlc3RpbmcgdGhlCnRocmVhZCBlbmQgY29uZGl0aW9uKS4KCj4gKwo+ICsJLyoKPiArCSAqIGRv bWFpbi0+c3RhdGUgaXMgYWxyZWFkeSBzZXQgdG8gTVRXQVRDSF9ET01BSU5fRE9XTiAodG8gYXZv aWQKPiArCSAqIG5ldyBldmVudCB0byBkb21haW4tPmV2ZW50cykgd2hlbiBhYm92ZSBmb3IgbG9v cCBicmVha3MsIHNvCj4gKwkgKiB0aGF0IHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50IHRvIGNsZWFu dXAgZG9tYWluLT5ldmVudHMgYWdhaW4uCj4gKwkgKi8KPiArCj4gKwlzcGluX2xvY2soJm10d2F0 Y2hfaW5mby0+ZG9tYWluX2xvY2spOwo+ICsJbGlzdF9kZWxfcmN1KCZkb21haW4tPmxpc3Rfbm9k ZSk7Cj4gKwlzcGluX3VubG9jaygmbXR3YXRjaF9pbmZvLT5kb21haW5fbG9jayk7Cj4gKwo+ICsJ c3Bpbl9sb2NrKCZtdHdhdGNoX2luZm8tPnB1cmdlX2xvY2spOwo+ICsJbGlzdF9hZGQoJmRvbWFp bi0+cHVyZ2Vfbm9kZSwgJm10d2F0Y2hfaW5mby0+cHVyZ2VfbGlzdCk7Cj4gKwlzcGluX3VubG9j aygmbXR3YXRjaF9pbmZvLT5wdXJnZV9sb2NrKTsKPiArCj4gKwlzY2hlZHVsZV93b3JrKCZtdHdh dGNoX2luZm8tPnB1cmdlX3dvcmspOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBkZWxheWVkX2Rlc3Ryb3lfZG9tYWluKHN0cnVjdCByY3VfaGVhZCAqaGVhZCkKPiAr ewo+ICsJc3RydWN0IG10d2F0Y2hfZG9tYWluICpkb21haW47Cj4gKwo+ICsJZG9tYWluID0gY29u dGFpbmVyX29mKGhlYWQsIHN0cnVjdCBtdHdhdGNoX2RvbWFpbiwgcmN1KTsKPiArCWtmcmVlKGRv bWFpbik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHhlbl9tdHdhdGNoX3B1cmdlX2RvbWFpbihz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gK3sKPiArCXN0cnVjdCBtdHdhdGNoX2RvbWFpbiAq ZG9tYWluOwo+ICsJc3RydWN0IGxpc3RfaGVhZCAqbm9kZTsKPiArCj4gKwl3aGlsZSAoIWxpc3Rf ZW1wdHkoJm10d2F0Y2hfaW5mby0+cHVyZ2VfbGlzdCkpIHsKPiArCj4gKwkJc3Bpbl9sb2NrKCZt dHdhdGNoX2luZm8tPnB1cmdlX2xvY2spOwo+ICsJCW5vZGUgPSBtdHdhdGNoX2luZm8tPnB1cmdl X2xpc3QubmV4dDsKPiArCQlpZiAobm9kZSAhPSAmbXR3YXRjaF9pbmZvLT5wdXJnZV9saXN0KQo+ ICsJCQlsaXN0X2RlbChub2RlKTsKPiArCQlzcGluX3VubG9jaygmbXR3YXRjaF9pbmZvLT5wdXJn ZV9sb2NrKTsKPiArCj4gKwkJaWYgKG5vZGUgIT0gJm10d2F0Y2hfaW5mby0+cHVyZ2VfbGlzdCkg ewo+ICsJCQlkb21haW4gPSBsaXN0X2VudHJ5KG5vZGUsIHN0cnVjdCBtdHdhdGNoX2RvbWFpbiwK PiArCQkJCQkgICAgcHVyZ2Vfbm9kZSk7Cj4gKwkJCWt0aHJlYWRfc3RvcChkb21haW4tPnRhc2sp Owo+ICsKPiArCQkJY2FsbF9yY3UoJmRvbWFpbi0+cmN1LCBkZWxheWVkX2Rlc3Ryb3lfZG9tYWlu KTsKPiArCQl9Cj4gKwl9Cj4gK30KPiArCj4gKy8qIFJ1bm5pbmcgaW4gdGhlIGNvbnRleHQgb2Yg ZGVmYXVsdCB4ZW53YXRjaCBrdGhyZWFkLiAqLwo+ICt2b2lkIG10d2F0Y2hfY3JlYXRlX2RvbWFp bihkb21pZF90IGRvbWlkKQo+ICt7Cj4gKwlzdHJ1Y3QgbXR3YXRjaF9kb21haW4gKmRvbWFpbjsK PiArCj4gKwlpZiAoIWRvbWlkKSB7Cj4gKwkJcHJfZXJyKCJEZWZhdWx0IHhlbndhdGNoIHRocmVh ZCBpcyBmb3IgZG9tMFxuIik7CgpTaG91bGQgd2UgcmVhbGx5IGV4Y2x1ZGUgZG9tMD8gV2hhdCBp ZiBhIGRyaXZlciBkb21haW4gd2FudHMgdG8gc3VwcG9ydAphIGRvbTAgYmFzZWQgZnJvbnRlbmQ/ Cgo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwlzcGluX2xvY2soJm10d2F0Y2hfaW5mby0+ZG9t YWluX2xvY2spOwo+ICsKPiArCWRvbWFpbiA9IG10d2F0Y2hfZmluZF9kb21haW4oZG9taWQpOwo+ ICsJaWYgKGRvbWFpbikgewo+ICsJCWF0b21pY19pbmMoJmRvbWFpbi0+cmVmY250KTsKPiArCQlz cGluX3VubG9jaygmbXR3YXRjaF9pbmZvLT5kb21haW5fbG9jayk7Cj4gKwkJcmV0dXJuOwo+ICsJ fQo+ICsKPiArCWRvbWFpbiA9IGt6YWxsb2Moc2l6ZW9mKCpkb21haW4pLCBHRlBfQVRPTUlDKTsK PiArCWlmICghZG9tYWluKSB7Cj4gKwkJc3Bpbl91bmxvY2soJm10d2F0Y2hfaW5mby0+ZG9tYWlu X2xvY2spOwo+ICsJCXByX2VycigiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgbXR3YXRj aCB0aHJlYWQgJWRcbiIsCj4gKwkJICAgICAgIGRvbWlkKTsKCk5vIGFsbG9jIGVycm9yIG1lc3Nh Z2VzLCBwbGVhc2UhCgo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwlkb21haW4tPmRvbWlkID0g ZG9taWQ7Cj4gKwlhdG9taWNfc2V0KCZkb21haW4tPnJlZmNudCwgMSk7Cj4gKwltdXRleF9pbml0 KCZkb21haW4tPmRvbWFpbl9tdXRleCk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmZG9tYWluLT5wdXJn ZV9ub2RlKTsKPiArCj4gKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZkb21haW4tPmV2ZW50c193cSk7 Cj4gKwlzcGluX2xvY2tfaW5pdCgmZG9tYWluLT5ldmVudHNfbG9jayk7Cj4gKwlJTklUX0xJU1Rf SEVBRCgmZG9tYWluLT5ldmVudHMpOwo+ICsKPiArCWxpc3RfYWRkX3RhaWxfcmN1KCZkb21haW4t Pmxpc3Rfbm9kZSwgJm10d2F0Y2hfaW5mby0+ZG9tYWluX2xpc3QpOwo+ICsKPiArCWhsaXN0X2Fk ZF9oZWFkX3JjdSgmZG9tYWluLT5oYXNoX25vZGUsCj4gKwkJCSAgICZtdHdhdGNoX2luZm8tPmRv bWFpbl9oYXNoW01UV0FUQ0hfSEFTSChkb21pZCldKTsKPiArCj4gKwlzcGluX3VubG9jaygmbXR3 YXRjaF9pbmZvLT5kb21haW5fbG9jayk7Cj4gKwo+ICsJZG9tYWluLT50YXNrID0ga3RocmVhZF9y dW4obXR3YXRjaF90aHJlYWQsIGRvbWFpbiwKPiArCQkJCSAgICJ4ZW4tbXR3YXRjaC0lZCIsIGRv bWlkKTsKPiArCj4gKwlpZiAoIWRvbWFpbi0+dGFzaykgewo+ICsJCXByX2VycigibXR3YXRjaCBr dGhyZWFkIGNyZWF0aW9uIGlzIGZhaWxlZFxuIik7Cj4gKwkJZG9tYWluLT5zdGF0ZSA9IE1UV0FU Q0hfRE9NQUlOX0RPV047Cj4gKwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwlkb21haW4tPnN0 YXRlID0gTVRXQVRDSF9ET01BSU5fVVA7Cj4gK30KPiArCj4gKy8qIFJ1bm5pbmcgaW4gdGhlIGNv bnRleHQgb2YgZGVmYXVsdCB4ZW53YXRjaCBrdGhyZWFkLiAqLwo+ICt2b2lkIG10d2F0Y2hfcHV0 X2RvbWFpbihkb21pZF90IGRvbWlkKQo+ICt7Cj4gKwlzdHJ1Y3QgbXR3YXRjaF9kb21haW4gKmRv bWFpbjsKPiArCj4gKwlzcGluX2xvY2soJm10d2F0Y2hfaW5mby0+ZG9tYWluX2xvY2spOwo+ICsK PiArCWRvbWFpbiA9IG10d2F0Y2hfZmluZF9kb21haW4oZG9taWQpOwo+ICsJaWYgKCFkb21haW4p IHsKPiArCQlzcGluX3VubG9jaygmbXR3YXRjaF9pbmZvLT5kb21haW5fbG9jayk7Cj4gKwkJcHJf ZXJyKCJtdHdhdGNoIGt0aHJlYWQgZm9yIGRvbWlkPSVkIGRvZXMgbm90IGV4aXN0XG4iLAo+ICsJ CSAgICAgICBkb21pZCk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCWlmIChhdG9taWNfZGVj X2FuZF90ZXN0KCZkb21haW4tPnJlZmNudCkpIHsKPiArCj4gKwkJaGxpc3RfZGVsX3JjdSgmZG9t YWluLT5oYXNoX25vZGUpOwo+ICsKPiArCQlpZiAoIWRvbWFpbi0+dGFzaykgewo+ICsJCQkvKgo+ ICsJCQkgKiBBcyB0aGUgdGFzayBpcyBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBkdXJpbmcKPiArCQkJ ICogbXR3YXRjaF9jcmVhdGVfZG9tYWluKCksIHdlIGRvIG5vdCBuZWVkIHRvIHdhaXQKPiArCQkJ ICogZm9yIHRoZSBrZXJuZWwgdGhyZWFkIHRvIGNvbXBsZXRlLgo+ICsJCQkgKi8KPiArCQkJbGlz dF9kZWxfcmN1KCZkb21haW4tPmxpc3Rfbm9kZSk7Cj4gKwkJCWNhbGxfcmN1KCZkb21haW4tPnJj dSwgZGVsYXllZF9kZXN0cm95X2RvbWFpbik7Cj4gKwkJfSBlbHNlIHsKPiArCQkJc3Bpbl9sb2Nr KCZkb21haW4tPmV2ZW50c19sb2NrKTsKPiArCQkJZG9tYWluLT5zdGF0ZSA9IE1UV0FUQ0hfRE9N QUlOX0RPV047Cj4gKwkJCXNwaW5fdW5sb2NrKCZkb21haW4tPmV2ZW50c19sb2NrKTsKPiArCj4g KwkJCXdha2VfdXAoJmRvbWFpbi0+ZXZlbnRzX3dxKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJc3Bp bl91bmxvY2soJm10d2F0Y2hfaW5mby0+ZG9tYWluX2xvY2spOwo+ICt9Cj4gKwo+ICBzdGF0aWMg dm9pZCB4c19zdXNwZW5kX2VudGVyKHZvaWQpCj4gIHsKPiAgCXNwaW5fbG9jaygmeHNfc3RhdGVf bG9jayk7Cj4gQEAgLTc5Myw2ICs5ODgsODAgQEAgaW50IHJlZ2lzdGVyX3hlbmJ1c193YXRjaChz dHJ1Y3QgeGVuYnVzX3dhdGNoICp3YXRjaCkKPiAgfQo+ICBFWFBPUlRfU1lNQk9MX0dQTChyZWdp c3Rlcl94ZW5idXNfd2F0Y2gpOwo+ICAKPiArc3RhdGljIHZvaWQgX191bnJlZ2lzdGVyX3Npbmds ZV9tdHdhdGNoKHN0cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoLAo+ICsJCQkJCXN0cnVjdCBtdHdh dGNoX2RvbWFpbiAqZG9tYWluKQo+ICt7Cj4gKwlzdHJ1Y3QgeHNfd2F0Y2hfZXZlbnQgKmV2ZW50 LCAqdG1wOwo+ICsKPiArCWlmIChjdXJyZW50LT5waWQgIT0gZG9tYWluLT5waWQpCj4gKwkJbXV0 ZXhfbG9jaygmZG9tYWluLT5kb21haW5fbXV0ZXgpOwo+ICsKPiArCXNwaW5fbG9jaygmZG9tYWlu LT5ldmVudHNfbG9jayk7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZXZlbnQsIHRtcCwK PiArCQkJCSAmZG9tYWluLT5ldmVudHMsIGxpc3QpIHsKPiArCQlpZiAoZXZlbnQtPmhhbmRsZSAh PSB3YXRjaCkKPiArCQkJY29udGludWU7Cj4gKwkJbGlzdF9kZWwoJmV2ZW50LT5saXN0KTsKPiAr CQlrZnJlZShldmVudCk7Cj4gKwl9Cj4gKwlzcGluX3VubG9jaygmZG9tYWluLT5ldmVudHNfbG9j ayk7Cj4gKwo+ICsJaWYgKGN1cnJlbnQtPnBpZCAhPSBkb21haW4tPnBpZCkKPiArCQltdXRleF91 bmxvY2soJmRvbWFpbi0+ZG9tYWluX211dGV4KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdW5y ZWdpc3Rlcl9zaW5nbGVfbXR3YXRjaChzdHJ1Y3QgeGVuYnVzX3dhdGNoICp3YXRjaCwKPiArCQkJ CSAgICAgIGRvbWlkX3QgZG9taWQpCj4gK3sKPiArCXN0cnVjdCBtdHdhdGNoX2RvbWFpbiAqZG9t YWluOwo+ICsJYm9vbCBmb3VuZCA9IGZhbHNlOwo+ICsKPiArCXJjdV9yZWFkX2xvY2soKTsKPiAr Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShkb21haW4sICZtdHdhdGNoX2luZm8tPmRvbWFp bl9saXN0LAo+ICsJCQkJbGlzdF9ub2RlKSB7Cj4gKwkJaWYgKGRvbWFpbi0+ZG9taWQgPT0gZG9t aWQpIHsKPiArCQkJZm91bmQgPSB0cnVlOwo+ICsJCQlfX3VucmVnaXN0ZXJfc2luZ2xlX210d2F0 Y2god2F0Y2gsIGRvbWFpbik7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCVdBUk5fT05fT05DRSh1bmxp a2VseSghZm91bmQpKTsKPiArCj4gKwlyY3VfcmVhZF91bmxvY2soKTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgdW5yZWdpc3Rlcl9hbGxfbXR3YXRjaChzdHJ1Y3QgeGVuYnVzX3dhdGNoICp3YXRj aCkKPiArewo+ICsJc3RydWN0IG10d2F0Y2hfZG9tYWluICpkb21haW47Cj4gKwo+ICsJcmN1X3Jl YWRfbG9jaygpOwo+ICsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRvbWFpbiwgJm10d2F0 Y2hfaW5mby0+ZG9tYWluX2xpc3QsCj4gKwkJCQlsaXN0X25vZGUpIHsKPiArCQlfX3VucmVnaXN0 ZXJfc2luZ2xlX210d2F0Y2god2F0Y2gsIGRvbWFpbik7Cj4gKwl9Cj4gKwo+ICsJcmN1X3JlYWRf dW5sb2NrKCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHVucmVnaXN0ZXJfbXR3YXRjaChzdHJ1 Y3QgeGVuYnVzX3dhdGNoICp3YXRjaCkKPiArewo+ICsJLyoKPiArCSAqIEdlbmVyYWxseSwgdG8g dW5yZWdpc3RlciBhIHdhdGNoLiB3ZSBuZWVkIHRvIHRyYXZlcnNlIGFsbAo+ICsJICogbXR3YXRj aCBkb21haW5zIHRvIHJlbW92ZSBhbGwgaW5mbGlnaHQgcGVuZGluZyB3YXRjaCBldmVudHMgZm9y Cj4gKwkgKiBzdWNoIHdhdGNoLgo+ICsJICoKPiArCSAqIE9uZSBleGNlcHRpb24gaXMgd2Ugb25s eSBuZWVkIHRvIHJlbW92ZSBwZW5kaW5nIHdhdGNoIGV2ZW50cwo+ICsJICogZnJvbSBhIHNpbmds ZSBtdHdhdGNoIGRvbWFpbiB3aGVuIHRoZSB3YXRjaCBpcyByZWdpc3RlcmVkIGZvciBhCj4gKwkg KiBzcGVjaWZpYyBkb21pZC4KPiArCSAqLwo+ICsJaWYgKHdhdGNoLT5vd25lcl9pZCkKCkFnYWlu OiAwIGFzIGEgc3BlY2lhbCB2YWx1ZSBpc24ndCBhIGdvb2QgaWRlYS4gTWF5YmUgdXNlIG9uZSBv ZiB0aGUKcmVzZXJ2ZWQgRE9NSURzLCBsaWtlIERPTUlEX1NFTEY/CgoKSnVlcmdlbgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==