From mboxrd@z Thu Jan 1 00:00:00 1970 From: majianpeng Subject: Re: Re: [PATCH 4/4] raid1: Rewrite the implementation of iobarrier. Date: Fri, 15 Nov 2013 14:55:02 +0800 Message-ID: <201311151454593252903@gmail.com> References: <201308281940511854138@gmail.com> <20131024125059.1a440152@notabene.brown> <201310290930116677124@gmail.com> <20131031133314.522f30ad@notabene.brown> <201310311114307462606@gmail.com> <20131114174438.7f2db666@notabene.brown> <201311151029513246491@gmail.com>, <20131115144211.5ac78deb@notabene.brown> Reply-To: majianpeng Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Sender: linux-raid-owner@vger.kernel.org To: NeilBrown Cc: linux-raid List-Id: linux-raid.ids Pk9uIEZyaSwgMTUgTm92IDIwMTMgMTA6Mjk6NTYgKzA4MDAgbWFqaWFucGVuZyA8bWFqaWFucGVu Z0BnbWFpbC5jb20+IHdyb3RlOg0KPg0KPj4gPj4gWWVzLkhvdyBhYm91dCB0aG9zZSBjb2RlOg0K Pj4gPj4gc3Bpbl9sb2NrX2lycSgmY29uZi0+cmVzeW5jX2xvY2spOw0KPj4gPj4gcmV0cnlfY2hl Y2s6DQo+PiA+PiAgICAgICAgIGlmIChuZWVkX3RvX3dhaXRfZm9yX3N5bmMoY29uZiwgYmlvKSkg ew0KPj4gPj4gICAgICAgICAgICAgICAgIGNvbmYtPm5yX3dhaXRpbmcrKzsNCj4+ID4+ICAgICAg ICAgICAgICAgICAvKiBXYWl0IGZvciB0aGUgYmFycmllciB0byBkcm9wLg0KPj4gPj4gICAgICAg ICAgICAgICAgICAqIEhvd2V2ZXIgaWYgdGhlcmUgYXJlIGFscmVhZHkgcGVuZGluZw0KPj4gPj4g ICAgICAgICAgICAgICAgICAqIHJlcXVlc3RzIChwcmV2ZW50aW5nIHRoZSBiYXJyaWVyIGZyb20N Cj4+ID4+ICAgICAgICAgICAgICAgICAgKiByaXNpbmcgY29tcGxldGVseSksIGFuZCB0aGUNCj4+ ID4+ICAgICAgICAgICAgICAgICAgKiBwcmUtcHJvY2VzcyBiaW8gcXVldWUgaXNuJ3QgZW1wdHks DQo+PiA+PiAgICAgICAgICAgICAgICAgICogdGhlbiBkb24ndCB3YWl0LCBhcyB3ZSBuZWVkIHRv IGVtcHR5DQo+PiA+PiAgICAgICAgICAgICAgICAgICogdGhhdCBxdWV1ZSB0byBnZXQgdGhlIG5y X3BlbmRpbmcNCj4+ID4+ICAgICAgICAgICAgICAgICAgKiBjb3VudCBkb3duLg0KPj4gPj4gICAg ICAgICAgICAgICAgICAqLw0KPj4gPj4gICAgICAgICAgICAgICAgIHdhaXRfZXZlbnRfbG9ja19p cnEoY29uZi0+d2FpdF9iYXJyaWVyLA0KPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIWNvbmYtPmFycmF5X2Zyb3plbiAmJg0KPj4gPj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCFjb25mLT5iYXJyaWVyIHx8DQo+PiA+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY29uZi0+bnJfcGVuZGluZyAmJg0KPj4gPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQtPmJpb19saXN0ICYmDQo+PiA+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWJpb19saXN0X2VtcHR5KGN1 cnJlbnQtPmJpb19saXN0KSkpLA0KPj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uZi0+cmVzeW5jX2xvY2spOw0KPj4gPj4gICAgICAgICAgICAgICAgIGNvbmYtPm5y X3dhaXRpbmctLTsNCj4+ID4+IAkJCQlnb3RvIHJldHJ5X2NoZWNrOw0KPj4gPj4gPg0KPj4gPg0K Pj4gPkl0IHdvdWxkIGxvb2sgYSBsb3QgYmV0dGVyIGlmIHlvdSBtYWRlIGl0IGEgd2hpbGUgbG9v cDoNCj4+ID4NCj4+ID4gd2hpbGUgKG5lZWRfdG9fd2FpdC4uLi4pIHsNCj4+ID4gICAgIG5yX3dh aXRpbmcrKw0KPj4gPiAgICAgd2FpdF9ldmVudC4uLi4uDQo+PiA+ICAgICBucl93YWl0aW5nLS0N Cj4+ID4gaWYgKGJpb19kYXRhX2Rpci4uLi4uDQo+PiA+DQo+PiBGb3IgdGhpcywgaSB0aGluayBp dCBkb247dCBuZWVkIHdoaWxlKCkgb3IgcmVjaGVjay4NCj4+IFRoZSBjb2RlIHNob3VsZDoNCj4+ IA0KPj4gaWYgKG5lZGRfdG9fd2FpdC4uLikgew0KPj4gCW5yX3dhaXRpbmcrKw0KPj4gCXdhaXRf ZXZlbnQuLi4uLg0KPj4gCW5yX3dhaXRpbmctLQ0KPj4gfQ0KPj4gaWYgKGJpbyAmJiBiaW9fZGF0 YV9kaXIoYmlvKSA9PSBXUklURSkgew0KPj4gCSBkbzsNCj4+IH0NCj4+IA0KPj4gSSB0aGluayBh Z2FpbiBuZWVkX3RvX3dhaXQuLi4oKSxpdCBtdXN0IHJldHVybiBmYWxzZS4gU28gd2UgZG9uJ3Qg cmVjaGVjayB0aGlzLg0KPj4gT3IgYW0gSSBtaXNzaW5nIHNvbWV0aGluZz8NCj4+IA0KPg0KPkFu ICdpZicgaXMgZmluZS4gIEkganVzdCBkaWRuJ3QgbGlrZSB0aGUgZ290by4NCj5JZiB5b3UgY2Fu IHNlbmQgbWUgdGhlIHVwZGF0ZWQgcGF0Y2ggaW4gYSBkYXkgb3IgMiBJIHNob3VsZCBiZSBhYmxl IHRvIGdldCBpdA0KPmludG8gdGhlIGN1cnJlbnQgbWVyZ2Ugd2luZG93Lg0KPg0KPnRoYW5rcywN Cj5OZWlsQnJvd24NCj4NClRoYW5rcyB2ZXJ5IG11Y2ggbmVpbCEgQmVsb3cgdGhlIGxhdGVzdCBw YXRjaC4NCg0KU3ViamVjdDpyYWlkMTogUmV3cml0ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaW9i YXJyaWVyLg0KDQpUaGVyZSBpcyBhIGlvYmFycmllciBpbiByYWlkMSBiZWNhdXNlIHRoZSBjb250 ZW5kIGJldHdlZW4gbm9ybWFsIElPIGFuZA0KcmVzeW5jIElPLkl0IHN1c3BlbmQgYWxsIG5vcm1h bCBJTyB3aGVuIHJleXN5bmMuDQpCdXQgaWYgbm9ybWFsSU8gaXMgb3V0cmFuZ2UgdGhlIHJlc3lu YyB3aW5kd29zLHRoZXJlIGlzIG5vIGNvbnRlbmQuDQpTbyBJIHJld3JpdGUgdGhlIGlvYmFycmll ci4NCg0KSSBwYXRpdGlvbiB0aGUgd2hvbGUgc3BhY2UgaW50byBmaXZlIHBhcnRzLg0KfC0tLS0t LS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tfA0K ICAgICAgICAgUGEgICAgbmV4dF9yZXN5bmMgICBzdGFydF9uZXh0X3dpbmRvdyAgICAgIFBiDQoN ClBhICsgU1lOQ19XSU5ET1cgPSBuZXh0X3Jlc3luYw0KbmV4dF9yZXN5bmMgKyBORVhUX05PUk1B TElPX0RJU1RBTkNFID0gc3RhcnRfbmV4dF93aW5kb3cNCnN0YXJ0X25leHRfd2luZG93ICsgTkVY VF9OT1JNQUlMSU9fRElTVEFOQ0UgPSBQYg0KDQpGaXJzdGx5IGkgaW50cm9kdWNlIHNvbWUgY29u Y2VwdHM6DQoxOlJFU1lOQ19XSU5ET1c6IEZvciByZXN5bmMsIHRoZXJlIGFyZSAzMiByZXN5bmMg cmVxdWVzdHMgYXQgbW9zdCBhdCB0aGUNCnNhbWUgdGltZS5BIHN5bmMgcmVxdWVzdCBpcyBSRVNZ TkNfQkxPQ0tfU0laRSg2NCoxMDI0KS4NClNvIHRoZSBSRVNZTkNfV0lORE9XIGlzIDMyICogUkVT WU5DX0JMT0NLX1NJWkUsIHRoYXQgaXMgMk1CLg0KMjpORVhUX05PUk1BTElPX0RJU1RBTkNFOiBp dCBpbmRpY2F0ZSB0aGUgZGlzdGFuY2UgYmV0d2VlbiBuZXh0X3Jlc3luYw0KYW5kIHN0YXJ0X25l eHRfd2luZG93Lkl0IGFsc28gaW5kaWNhdGUgdGhlIGRpc3RhbmNlIGJldHdlZW4NCnN0YXJ0X25l eHRfd2luZG93IGFuZCBQYi5Ob3cgaXQgaXMgMyAqIFJFU1lOQ19XSU5ET1dfU0laRS5JdCBjYW4g dHVuZS4NCjM6bmV4dF9yZXN5bmM6IG1lYW4gdGhlIG5leHQgc3RhcnQgc2VjdG9yIHdoaWNoIHdp bGwgYmVpbmcgZG8gc3luYy4NCjQ6UGEgbWVhbnM6IGEgcG9zaXRpb24gd2hpY2ggYmVmb3JlIFJF U1lOQ19XSU5ET1cgZGlzdGFuY2UgZnJvbQ0KbmV4dF9yZXN5bmMuDQo1OnN0YXJ0X25leHRfd2lu ZG93OiBtZWFucyBhIHBvc2l0aW9uIHdoaWNoIGFmdGVyIE5FWFRfTk9STUFMSU9fRElTVEFOQ0UN CmRpc3RhbmNlIGZyb20gbmV4dF9yZXN5bmMuRm9yIG5vcm1hbGlvIGFmdGVyIHRoaXMgcG9zaXRp b24sDQppdCBjYW4ndCB3YWl0IHJlc3luY2lvIHRvIGNvbXBsZXRlLg0KNjpQYjogbWVhbnMgYSBw b3NpdGlvbiB3aGljaCBhZnRlciAyICogTkVYVF9OT1JNQUxJT19ESVNUQU5DRSBkaXN0YW5jZQ0K ZnJvbSBuZXh0X3Jlc3luYy4NCjc6Y3VycmVudF93aW5kb3dfcmVxdWVzdHM6IG1lYW5zIHRoZSBj b3VudCBvZiBub3JtYWxJTyBiZXR3ZWVuIFBiIGFuZA0Kc3RhcnRfbmV4dF93aW5kb3cuDQo4Om5l eHRfd2luZG93X3JlcXVlc3RzOiBtZWFucyB0aGUgY291bnQgb2Ygbm9ubWFsSU8gYWZ0ZXIgUGIu DQoNCk5vcm1hbElPIHdpbGwgYmUgcGFydGl0aW9uZWQgaW50byBmb3VyIHR5cGVzOg0KTm9JTzE6 IGl0IG1lYW5zIHRoZSBlbmQgc2VjdG9yIG9mIGJpbyBpcyBzbWFsbGVyIG9yIGVxdWFsIHRoZSBQ YS4NCk5vSU8yOiBpdCBtZWFucyB0aGUgc3RhcnQgc2VjdG9yIG9mIGJpbyBsYXJnZXIgb3IgZXF1 YWwgUGINCk5vSU8zOiBpdCBtZWFucyB0aGUgc3RhcnQgc2VjdG9yIG9mIGJpbyBsYXJnZXIgb3Ig ZXF1YWwNCnN0YXJ0X25leHRfd2luZG93Lg0KTm9JTzQ6IGl0IG1lYW5zIHRoZSBsb2NhdGlvbiBi ZXR3ZWVuIFBhIGFuZCBzdGFydF9uZXh0X3dpbmRvdw0KDQp8LS0tLS0tLS18LS0tLS0tLS0tLS18 LS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18DQogICAgfCAg ICBQYSAgIHwgICBuZXh0X3Jlc3luYyAgIHwgIHN0YXJ0X25leHRfd2luZG93ICAgfCAgIFBiICAg fA0KICBOb0lPMSAgICAgTm9JTzQgICAgICAgICAgICAgTm9JTzQgICAgICAgICAgICAgICAgICBO b0lPMyAgICAgTm9JTzINCg0KRm9yIE5vSU8xLGl0IGRvbid0IHVzZSBpb2JhcnJpZXIuDQpGb3Ig Tm9JTzQsaXQgdXNlZCB0aGUgb3JpZ2luYWwgaW9iYXJyaWVyIG1lY2hhbmlzbS5UaGUgbm9ybmFs SU8gYW5kDQpyZXN5bmNJTyBtdXN0IGJlIGNvbnRlbmQuDQpGb3IgTm9JTzIvMywgaSBhZGQgdHdv IGZpZWxkcyBpbiBzdHJ1Y3QgcjFjb25mICJjdXJyZW50X3dpbmRvd19yZXF1ZXN0cywNCm5leHRf d2luZG93X3JlcXVlc3RzIi5UaGV5IGluZGljYXRlIHRoZSBjb3VudCBvZiB0d28gdHlwZXMuDQpG b3IgdGhvc2UsIHRoZXkgZG9uJ3Qgd2FpdCByZXN5bmMgaW8gdG8gY29tcGxldGUuDQoNCkZvciBy ZXN5bmMgYWN0aW9uLCBpZiB0aGVyZSBhcmUgTm9JTzRzLCBpdCBtdXN0IGJlIHdhaXRlZC5JZiBu b3QsaXQNCmZvcndhcmQuQnV0IGlmIHN5bmMgYWN0aW9uIHJlYWNoZWQgdG8gdGhlIHN0YXJ0X25l eHRfd2luZG93IGFuZA0KY3VycmVudF93aW5kb3dfcmVxdWVzdGVzID4gMCAodGhhdCBpcyB0aGVy ZSBhcmUgTm9JTzNzKSxpdCBtdXN0DQp3YWl0IHVudGlsIHRoZSBjdXJyZW50X3dpbmRvd19yZXF1 ZXN0cyBiZWNhbWUgemVyby4NCklmIGN1cnJlbnRfd2luZG93X3JlcXVlc3RzIGJlY2FtZSB6ZXJv LHRoZSBzdGFydF9uZXh0X3dpbmRvdyBhbHNvDQpmb3J3YXJkLiBUaGUgY3VycmVudF93aW5kb3df cmVxdWVzdHMgd2lsbCByZXBsYWNlZCBieQ0KbmV4dF93aW5kb3dfcmVxdWVzdHMuDQoNClRoZXJl IGlzIGEgcHJvYmxlbSB3aGljaCB3aGVuIGFuZCBob3cgdG8gY2hhbmdlIGZyb20gTm9JTzIgdG8g Tm9JTzMuT25seQ0Kc28sIHRoZSBzeW5jIGFjdGlvbiBjYW4gZm9yd2FyZC4NCg0KSSBhZGQgYSBm aWVsZCBpbiBzdHJ1Y3QgcjFjb25mICJzdGFydF9uZXh0X3dpbmRvdyIuV2hhdCBjb25kaXRpb24g d2lsbA0KY2hhbmdlPw0KQTogaWYgc3RhcnRfbmV4dF93aW5kb3cgPT0gTWF4U2VjdG9yLCBpdCBt ZWFucyB0aGVyZSBhcmUgbm8gTm9JTzIvMy4NCiAgIFNvIHN0YXJ0X25leHRfd2luZG93ID0gbmV4 dF9yZXN5bmMgKyBORVhUX05PUk1BTElPX0RJU1RBTkNFDQpCOiBpZiBjdXJyZW50X3dpbmRvd19y ZXF1ZXN0cyA9PSAwICYmIG5leHRfd2luZG93X3JlcXVlc3RzICE9IDAsIGl0DQogICBtZWFucyBz dGFydF9uZXh0X3dpbmRvdyBtb3ZlIHRvIFBiDQoNClRoZXJlIGlzIGFudGhvciBwcm9ibGVtIHdo aWNoIGhvdyB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4NCm9sZCBOb0lPMihub3cgaXQgaXMgTm9J TzMpIGFuZCBOb0lPMi4NCkZvciBleGFtcGxlLCB0aGVyZSBhcmUgbWFueSBiaW9zIHdoaWNoIGFy ZSBOb0lPMiBhbmQgYSBiaW8gd2hpY2ggaXMNCk5vSU8zLiBOb0lPMyBmaXJzdGx5IGNvbXBsZXRl ZCxzbyB0aGUgYmlvcyBvZiBOb0lPMiBiZWNhbWUgTm9JTzMuDQpBdCBnZW5lcmFsLHdlIHVzZSBm bGFncyBhbmQgbGlzdF9oZWFkLiBUaGUgY29kZXMgc2hvdWxkOg0KPmxpc3Rfc3BsaWNlX2luaXQo Tm9JTzIsIE5vSU8zKTsNCj5jdXJyZW50X3dpbmRvd19yZXF1ZXN0cyA9IG5leHRfd2luZG93X3Jl cXVlc3RzOw0KPm5leHRfd2luZG93X3JlcXVlc3RzID0gMDsNCj5saXN0X2Zvcl9lYWNoX2VudHJ5 KE5vSU8zKXsNCj4gICAgICAgY2xlYXJfYml0KE5vSU8yX0ZMQUcpLA0KPiAgICAgICBzZXRfYml0 KE5vSU8zX0ZMQUcsDQo+fQ0KSWYgdGhlcmUgYXJlIG1hbnkgTm9JTzIsIGl0IHdpbGwgdGFrZSB0 b28gbXVjaCB0aW1lIGluDQpsaXN0X2Zvcl9lYWNoX2VudHJ5Lg0KQXZvaWQgdGhpcywgaSBhZGQg YSBmaWVsZCBpbiBzdHJ1Y3QgcjFiaW8gInN0YXJ0X25leHRfd2luZG93Ii4NCkkgdXNlZCB0aGlz IHRvIHJlY29yZCB0aGUgcG9zaXRpb24gY29uZi0+c3RhcnRfbmV4dF93aW5kb3cgd2hlbiBjYWxs DQp3YWl0X2JhcnJpZXIgaW4gZnVuYyBtYWtlX3JlcXVlc3QuDQoNCkluIGZ1bmMgYWxsb3dfYmFy cmllciwgaXQgY2hlY2sgdGhlIGNvbmYtPnN0YXJ0X25leHRfd2luZG93Lg0KSWYgcjFiaW8tPnN0 YXRfbmV4dF93aW5kb3cgPT0gY29uZi0+c3RhcnRfbmV4dF93aW5kb3csaXQgbWVhbg0KdGhlcmUg aXMgbm8gdHJhbnNpdGlvbiBiZXR3ZWVuIE5vSU8yIGFuZCBOb0lPMy4NCklmIHIxYmlvLT5zdGFy dF9uZXh0X3dpbmRvdyAhPSBjb25mLT5zdGFydF9uZXh0X3dpbmRvdyxpdCBtZWFuDQp0aGVyZSBp cyBhIHRybmFzaXRvbiBiZXR3ZWVuIE5vSU8yIGFuZCBOb0lPMy5CZWNhdXNlIHRoZXJlIGlzIGF0 IG1vc3QNCm9uZQ0KdHJhbnN0aW9uLlNvIGl0IG9ubHkgbWVhbnMgdGhlIGJpbyBpcyBvbGQgTm9J TzIuDQoNCkZvciBvbmUgYmlvLHRoZXJlIGFyZSBtYW55IHIxYmlvJ3MuU28gd2UgbWFrZSBzdXJl IHRoZQ0KYWxsIHIxYmlvLT5zdGFydF9uZXh0X3dpbmRvdyBhcmUgdGhlIHNhbWUgdmFsdWUuDQpJ ZiB3ZSBtZXQgYmxvY2tlZF9kZXYgaW4gbWFrZV9yZXF1ZXN0KCksIGl0IG11c3QgY2FsbCBhbGxv d19iYXJyaWVyDQphbmQgd2FpdF9iYXJyaWVyLlNvIHRoZSBmb3JtZXIgYW5kIHRoZSBsYXRlciB2 YWx1ZSBvZg0KY29uZi0+c3RhcnRfbmV4dF93aW5kb3cgd2lsbCBiZSBjaGFuZ2UuDQpJZiB0aGVy ZSBhcmUgbWFueSByMWJpbydzIHdpdGggZGlmZmVybmV0IHN0YXJ0X25leHRfd2luZG93LA0KZm9y IHRoZSByZWxldmFudCBiaW8sIGl0IGRlcGVudCBvbiB0aGUgbGFzdCB2YWx1ZSBvZiByMWJpby4N Ckl0IHdpbGwgY2F1c2UgZXJyb3IuVG8gYXZvaWQgdGhpcywgd2UgbXVzdCB3YWl0IHByZXZpb3Vz IHIxYmlvcw0KdG8gY29tcGxldGUuDQoNClNpZ25lZC1vZmYtYnk6IEppYW5wZW5nIE1hIDxtYWpp YW5wZW5nQGdtYWlsLmNvbT4NCi0tLQ0KIGRyaXZlcnMvbWQvcmFpZDEuYyB8IDEyNyArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQ0KIGRyaXZlcnMv bWQvcmFpZDEuaCB8ICAxNCArKysrKysNCiAyIGZpbGVzIGNoYW5nZWQsIDEyOCBpbnNlcnRpb25z KCspLCAxMyBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEuYyBi L2RyaXZlcnMvbWQvcmFpZDEuYw0KaW5kZXggYjRhNmRjZC4uODI5NjYwOSAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvbWQvcmFpZDEuYw0KKysrIGIvZHJpdmVycy9tZC9yYWlkMS5jDQpAQCAtNjYsNyAr NjYsOCBAQA0KICAqLw0KIHN0YXRpYyBpbnQgbWF4X3F1ZXVlZF9yZXF1ZXN0cyA9IDEwMjQ7DQog DQotc3RhdGljIHZvaWQgYWxsb3dfYmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25mKTsNCitzdGF0 aWMgdm9pZCBhbGxvd19iYXJyaWVyKHN0cnVjdCByMWNvbmYgKmNvbmYsIHNlY3Rvcl90IHN0YXJ0 X25leHRfd2luZG93LA0KKwkJCQlzZWN0b3JfdCBiaV9zZWN0b3IpOw0KIHN0YXRpYyB2b2lkIGxv d2VyX2JhcnJpZXIoc3RydWN0IHIxY29uZiAqY29uZik7DQogDQogc3RhdGljIHZvaWQgKiByMWJp b19wb29sX2FsbG9jKGdmcF90IGdmcF9mbGFncywgdm9pZCAqZGF0YSkNCkBAIC0yMjcsNiArMjI4 LDggQEAgc3RhdGljIHZvaWQgY2FsbF9iaW9fZW5kaW8oc3RydWN0IHIxYmlvICpyMV9iaW8pDQog CXN0cnVjdCBiaW8gKmJpbyA9IHIxX2Jpby0+bWFzdGVyX2JpbzsNCiAJaW50IGRvbmU7DQogCXN0 cnVjdCByMWNvbmYgKmNvbmYgPSByMV9iaW8tPm1kZGV2LT5wcml2YXRlOw0KKwlzZWN0b3JfdCBz dGFydF9uZXh0X3dpbmRvdyA9IHIxX2Jpby0+c3RhcnRfbmV4dF93aW5kb3c7DQorCXNlY3Rvcl90 IGJpX3NlY3RvciA9IGJpby0+Ymlfc2VjdG9yOw0KIA0KIAlpZiAoYmlvLT5iaV9waHlzX3NlZ21l bnRzKSB7DQogCQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KQEAgLTIzNCw2ICsyMzcsMTEgQEAgc3Rh dGljIHZvaWQgY2FsbF9iaW9fZW5kaW8oc3RydWN0IHIxYmlvICpyMV9iaW8pDQogCQliaW8tPmJp X3BoeXNfc2VnbWVudHMtLTsNCiAJCWRvbmUgPSAoYmlvLT5iaV9waHlzX3NlZ21lbnRzID09IDAp Ow0KIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY29uZi0+ZGV2aWNlX2xvY2ssIGZsYWdzKTsN CisJCS8qDQorCQkgKiBtYWtlX3JlcXVlc3QoKSBtaWdodCBiZSB3YWl0aW5nIGZvcg0KKwkJICog YmlfcGh5c19zZWdtZW50cyB0byBkZWNyZWFzZQ0KKwkJICovDQorCQl3YWtlX3VwKCZjb25mLT53 YWl0X2JhcnJpZXIpOw0KIAl9IGVsc2UNCiAJCWRvbmUgPSAxOw0KIA0KQEAgLTI0NSw3ICsyNTMs NyBAQCBzdGF0aWMgdm9pZCBjYWxsX2Jpb19lbmRpbyhzdHJ1Y3QgcjFiaW8gKnIxX2JpbykNCiAJ CSAqIFdha2UgdXAgYW55IHBvc3NpYmxlIHJlc3luYyB0aHJlYWQgdGhhdCB3YWl0cyBmb3IgdGhl IGRldmljZQ0KIAkJICogdG8gZ28gaWRsZS4NCiAJCSAqLw0KLQkJYWxsb3dfYmFycmllcihjb25m KTsNCisJCWFsbG93X2JhcnJpZXIoY29uZiwgc3RhcnRfbmV4dF93aW5kb3csIGJpX3NlY3Rvcik7 DQogCX0NCiB9DQogDQpAQCAtODI3LDEwICs4MzUsMTggQEAgc3RhdGljIHZvaWQgcmFpc2VfYmFy cmllcihzdHJ1Y3QgcjFjb25mICpjb25mKQ0KIAkvKiBibG9jayBhbnkgbmV3IElPIGZyb20gc3Rh cnRpbmcgKi8NCiAJY29uZi0+YmFycmllcisrOw0KIA0KLQkvKiBOb3cgd2FpdCBmb3IgYWxsIHBl bmRpbmcgSU8gdG8gY29tcGxldGUgKi8NCisJLyogRm9yIHRob3NlIGNvbmRpdGlvbnMgd2UgbXVz dCB3YWl0Og0KKwkgKiBBOndoaWxlIHRoZSBhcnJheSBpcyBpbiBmcm96ZW4gc3RhdGUNCisJICog Qjp3aGlsZSBiYXJyaWVyID49IFJFU1lOQ19ERVBUSCwgbWVhbmluZyByZXN5bmMgcmVhY2gNCisJ ICogICB0aGUgbWF4IGNvdW50IHdoaWNoIGFsbG93ZWQuDQorCSAqIEM6bmV4dF9yZXN5bmMgKyBS RVNZTkNfU0VDVE9SUyA+IHN0YXJ0X25leHRfd2luZG93LCBtZWFuaW5nDQorCSAqICAgbmV4dCBy ZXN5bmMgd2lsbCByZWFjaCB0byB3aW5kb3cgd2hpY2ggbm9ybWFsIGJpb3MgYXJlIGhhbmRsaW5n Lg0KKwkgKi8NCiAJd2FpdF9ldmVudF9sb2NrX2lycShjb25mLT53YWl0X2JhcnJpZXIsDQogCQkJ ICAgICFjb25mLT5hcnJheV9mcm96ZW4gJiYNCi0JCQkgICAgIWNvbmYtPm5yX3BlbmRpbmcgJiYg Y29uZi0+YmFycmllciA8IFJFU1lOQ19ERVBUSCwNCisJCQkgICAgY29uZi0+YmFycmllciA8IFJF U1lOQ19ERVBUSCAmJg0KKwkJCSAgICAoY29uZi0+c3RhcnRfbmV4dF93aW5kb3cgPj0NCisJCQkg ICAgIGNvbmYtPm5leHRfcmVzeW5jICsgUkVTWU5DX1NFQ1RPUlMpLA0KIAkJCSAgICBjb25mLT5y ZXN5bmNfbG9jayk7DQogDQogCXNwaW5fdW5sb2NrX2lycSgmY29uZi0+cmVzeW5jX2xvY2spOw0K QEAgLTg0NiwxMCArODYyLDMzIEBAIHN0YXRpYyB2b2lkIGxvd2VyX2JhcnJpZXIoc3RydWN0IHIx Y29uZiAqY29uZikNCiAJd2FrZV91cCgmY29uZi0+d2FpdF9iYXJyaWVyKTsNCiB9DQogDQotc3Rh dGljIHZvaWQgd2FpdF9iYXJyaWVyKHN0cnVjdCByMWNvbmYgKmNvbmYpDQorc3RhdGljIGJvb2wg bmVlZF90b193YWl0X2Zvcl9zeW5jKHN0cnVjdCByMWNvbmYgKmNvbmYsIHN0cnVjdCBiaW8gKmJp bykNCit7DQorCWJvb2wgd2FpdCA9IGZhbHNlOw0KKw0KKwlpZiAoY29uZi0+YXJyYXlfZnJvemVu IHx8ICFiaW8pDQorCQl3YWl0ID0gdHJ1ZTsNCisJZWxzZSBpZiAoY29uZi0+YmFycmllciAmJiBi aW9fZGF0YV9kaXIoYmlvKSA9PSBXUklURSkgew0KKwkJaWYgKGNvbmYtPm5leHRfcmVzeW5jIDwg UkVTWU5DX1dJTkRPV19TRUNUT1JTKQ0KKwkJCXdhaXQgPSB0cnVlOw0KKwkJZWxzZSBpZiAoKGNv bmYtPm5leHRfcmVzeW5jIC0gUkVTWU5DX1dJTkRPV19TRUNUT1JTDQorCQkJCT49IGJpb19lbmRf c2VjdG9yKGJpbykpIHx8DQorCQkJIChjb25mLT5uZXh0X3Jlc3luYyArIE5FWFRfTk9STUFMSU9f RElTVEFOQ0UNCisJCQkJPD0gYmlvLT5iaV9zZWN0b3IpKQ0KKwkJCXdhaXQgPSBmYWxzZTsNCisJ CWVsc2UNCisJCQl3YWl0ID0gdHJ1ZTsNCisJfQ0KKw0KKwlyZXR1cm4gd2FpdDsNCit9DQorDQor c3RhdGljIHNlY3Rvcl90IHdhaXRfYmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25mLCBzdHJ1Y3Qg YmlvICpiaW8pDQogew0KKwlzZWN0b3JfdCBzZWN0b3IgPSAwOw0KKw0KIAlzcGluX2xvY2tfaXJx KCZjb25mLT5yZXN5bmNfbG9jayk7DQotCWlmIChjb25mLT5iYXJyaWVyKSB7DQorCWlmIChuZWVk X3RvX3dhaXRfZm9yX3N5bmMoY29uZiwgYmlvKSkgew0KIAkJY29uZi0+bnJfd2FpdGluZysrOw0K IAkJLyogV2FpdCBmb3IgdGhlIGJhcnJpZXIgdG8gZHJvcC4NCiAJCSAqIEhvd2V2ZXIgaWYgdGhl cmUgYXJlIGFscmVhZHkgcGVuZGluZw0KQEAgLTg2MywyMSArOTAyLDY1IEBAIHN0YXRpYyB2b2lk IHdhaXRfYmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25mKQ0KIAkJd2FpdF9ldmVudF9sb2NrX2ly cShjb25mLT53YWl0X2JhcnJpZXIsDQogCQkJCSAgICAhY29uZi0+YXJyYXlfZnJvemVuICYmDQog CQkJCSAgICAoIWNvbmYtPmJhcnJpZXIgfHwNCi0JCQkJICAgIChjb25mLT5ucl9wZW5kaW5nICYm DQorCQkJCSAgICAoKGNvbmYtPnN0YXJ0X25leHRfd2luZG93IDwNCisJCQkJICAgICAgY29uZi0+ bmV4dF9yZXN5bmMgKyBSRVNZTkNfU0VDVE9SUykgJiYNCiAJCQkJICAgICBjdXJyZW50LT5iaW9f bGlzdCAmJg0KIAkJCQkgICAgICFiaW9fbGlzdF9lbXB0eShjdXJyZW50LT5iaW9fbGlzdCkpKSwN CiAJCQkJICAgIGNvbmYtPnJlc3luY19sb2NrKTsNCiAJCWNvbmYtPm5yX3dhaXRpbmctLTsNCiAJ fQ0KKw0KKwlpZiAoYmlvICYmIGJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFKSB7DQorCQlpZiAo Y29uZi0+bmV4dF9yZXN5bmMgKyBORVhUX05PUk1BTElPX0RJU1RBTkNFDQorCQkJCTw9IGJpby0+ Ymlfc2VjdG9yKSB7DQorCQkJaWYgKGNvbmYtPnN0YXJ0X25leHRfd2luZG93ID09IE1heFNlY3Rv cikNCisJCQkJY29uZi0+c3RhcnRfbmV4dF93aW5kb3cgPQ0KKwkJCQkJY29uZi0+bmV4dF9yZXN5 bmMgKw0KKwkJCQkJCU5FWFRfTk9STUFMSU9fRElTVEFOQ0U7DQorDQorCQkJaWYgKChjb25mLT5z dGFydF9uZXh0X3dpbmRvdyArIE5FWFRfTk9STUFMSU9fRElTVEFOQ0UpDQorCQkJCTw9IGJpby0+ Ymlfc2VjdG9yKQ0KKwkJCQljb25mLT5uZXh0X3dpbmRvd19yZXF1ZXN0cysrOw0KKwkJCWVsc2UN CisJCQkJY29uZi0+Y3VycmVudF93aW5kb3dfcmVxdWVzdHMrKzsNCisJCX0NCisJCWlmIChiaW8t PmJpX3NlY3RvciA+PSBjb25mLT5zdGFydF9uZXh0X3dpbmRvdykNCisJCQlzZWN0b3IgPSBjb25m LT5zdGFydF9uZXh0X3dpbmRvdzsNCisJfQ0KKw0KIAljb25mLT5ucl9wZW5kaW5nKys7DQogCXNw aW5fdW5sb2NrX2lycSgmY29uZi0+cmVzeW5jX2xvY2spOw0KKwlyZXR1cm4gc2VjdG9yOw0KIH0N CiANCi1zdGF0aWMgdm9pZCBhbGxvd19iYXJyaWVyKHN0cnVjdCByMWNvbmYgKmNvbmYpDQorc3Rh dGljIHZvaWQgYWxsb3dfYmFycmllcihzdHJ1Y3QgcjFjb25mICpjb25mLCBzZWN0b3JfdCBzdGFy dF9uZXh0X3dpbmRvdywNCisJCQkJc2VjdG9yX3QgYmlfc2VjdG9yKQ0KIHsNCiAJdW5zaWduZWQg bG9uZyBmbGFnczsNCisNCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmNvbmYtPnJlc3luY19sb2NrLCBm bGFncyk7DQogCWNvbmYtPm5yX3BlbmRpbmctLTsNCisJaWYgKHN0YXJ0X25leHRfd2luZG93KSB7 DQorCQlpZiAoc3RhcnRfbmV4dF93aW5kb3cgPT0gY29uZi0+c3RhcnRfbmV4dF93aW5kb3cpIHsN CisJCQlpZiAoY29uZi0+c3RhcnRfbmV4dF93aW5kb3cgKyBORVhUX05PUk1BTElPX0RJU1RBTkNF DQorCQkJCTw9IGJpX3NlY3RvcikNCisJCQkJY29uZi0+bmV4dF93aW5kb3dfcmVxdWVzdHMtLTsN CisJCQllbHNlDQorCQkJCWNvbmYtPmN1cnJlbnRfd2luZG93X3JlcXVlc3RzLS07DQorCQl9IGVs c2UNCisJCQljb25mLT5jdXJyZW50X3dpbmRvd19yZXF1ZXN0cy0tOw0KKw0KKwkJaWYgKCFjb25m LT5jdXJyZW50X3dpbmRvd19yZXF1ZXN0cykgew0KKwkJCWlmIChjb25mLT5uZXh0X3dpbmRvd19y ZXF1ZXN0cykgew0KKwkJCQljb25mLT5jdXJyZW50X3dpbmRvd19yZXF1ZXN0cyA9DQorCQkJCQlj b25mLT5uZXh0X3dpbmRvd19yZXF1ZXN0czsNCisJCQkJY29uZi0+bmV4dF93aW5kb3dfcmVxdWVz dHMgPSAwOw0KKwkJCQljb25mLT5zdGFydF9uZXh0X3dpbmRvdyArPQ0KKwkJCQkJTkVYVF9OT1JN QUxJT19ESVNUQU5DRTsNCisJCQl9IGVsc2UNCisJCQkJY29uZi0+c3RhcnRfbmV4dF93aW5kb3cg PSBNYXhTZWN0b3I7DQorCQl9DQorCX0NCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY29uZi0+ cmVzeW5jX2xvY2ssIGZsYWdzKTsNCiAJd2FrZV91cCgmY29uZi0+d2FpdF9iYXJyaWVyKTsNCiB9 DQpAQCAtMTAxMiw2ICsxMDk1LDcgQEAgc3RhdGljIHZvaWQgbWFrZV9yZXF1ZXN0KHN0cnVjdCBt ZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKiBiaW8pDQogCWludCBmaXJzdF9jbG9uZTsNCiAJaW50 IHNlY3RvcnNfaGFuZGxlZDsNCiAJaW50IG1heF9zZWN0b3JzOw0KKwlzZWN0b3JfdCBzdGFydF9u ZXh0X3dpbmRvdzsNCiANCiAJLyoNCiAJICogUmVnaXN0ZXIgdGhlIG5ldyByZXF1ZXN0IGFuZCB3 YWl0IGlmIHRoZSByZWNvbnN0cnVjdGlvbg0KQEAgLTEwNDEsNyArMTEyNSw3IEBAIHN0YXRpYyB2 b2lkIG1ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogYmlvKQ0K IAkJZmluaXNoX3dhaXQoJmNvbmYtPndhaXRfYmFycmllciwgJncpOw0KIAl9DQogDQotCXdhaXRf YmFycmllcihjb25mKTsNCisJc3RhcnRfbmV4dF93aW5kb3cgPSB3YWl0X2JhcnJpZXIoY29uZiwg YmlvKTsNCiANCiAJYml0bWFwID0gbWRkZXYtPmJpdG1hcDsNCiANCkBAIC0xMTYyLDYgKzEyNDYs NyBAQCByZWFkX2FnYWluOg0KIA0KIAlkaXNrcyA9IGNvbmYtPnJhaWRfZGlza3MgKiAyOw0KICBy ZXRyeV93cml0ZToNCisJcjFfYmlvLT5zdGFydF9uZXh0X3dpbmRvdyA9IHN0YXJ0X25leHRfd2lu ZG93Ow0KIAlibG9ja2VkX3JkZXYgPSBOVUxMOw0KIAlyY3VfcmVhZF9sb2NrKCk7DQogCW1heF9z ZWN0b3JzID0gcjFfYmlvLT5zZWN0b3JzOw0KQEAgLTEyMzAsMTQgKzEzMTUsMjQgQEAgcmVhZF9h Z2FpbjoNCiAJaWYgKHVubGlrZWx5KGJsb2NrZWRfcmRldikpIHsNCiAJCS8qIFdhaXQgZm9yIHRo aXMgZGV2aWNlIHRvIGJlY29tZSB1bmJsb2NrZWQgKi8NCiAJCWludCBqOw0KKwkJc2VjdG9yX3Qg b2xkID0gc3RhcnRfbmV4dF93aW5kb3c7DQogDQogCQlmb3IgKGogPSAwOyBqIDwgaTsgaisrKQ0K IAkJCWlmIChyMV9iaW8tPmJpb3Nbal0pDQogCQkJCXJkZXZfZGVjX3BlbmRpbmcoY29uZi0+bWly cm9yc1tqXS5yZGV2LCBtZGRldik7DQogCQlyMV9iaW8tPnN0YXRlID0gMDsNCi0JCWFsbG93X2Jh cnJpZXIoY29uZik7DQorCQlhbGxvd19iYXJyaWVyKGNvbmYsIHN0YXJ0X25leHRfd2luZG93LCBi aW8tPmJpX3NlY3Rvcik7DQogCQltZF93YWl0X2Zvcl9ibG9ja2VkX3JkZXYoYmxvY2tlZF9yZGV2 LCBtZGRldik7DQotCQl3YWl0X2JhcnJpZXIoY29uZik7DQorCQlzdGFydF9uZXh0X3dpbmRvdyA9 IHdhaXRfYmFycmllcihjb25mLCBiaW8pOw0KKwkJLyoNCisJCSAqIFdlIG11c3QgbWFrZSBzdXJl IHRoZSBtdWx0aSByMWJpb3Mgb2YgYmlvIGhhdmUNCisJCSAqIHRoZSBzYW1lIHZhbHVlIG9mIGJp X3BoeXNfc2VnbWVudHMNCisJCSAqLw0KKwkJaWYgKGJpby0+YmlfcGh5c19zZWdtZW50cyAmJiBv bGQgJiYNCisJCQlvbGQgIT0gc3RhcnRfbmV4dF93aW5kb3cpDQorCQkJLyp3YWl0IHRoZSBmb3Jt ZXIgcjFiaW8ocykgY29tcGxldGVkKi8NCisJCQl3YWl0X2V2ZW50KGNvbmYtPndhaXRfYmFycmll ciwNCisJCQkJCWJpby0+YmlfcGh5c19zZWdtZW50cyA9PSAxKTsNCiAJCWdvdG8gcmV0cnlfd3Jp dGU7DQogCX0NCiANCkBAIC0xNDM3LDExICsxNTMyLDE0IEBAIHN0YXRpYyB2b2lkIHByaW50X2Nv bmYoc3RydWN0IHIxY29uZiAqY29uZikNCiANCiBzdGF0aWMgdm9pZCBjbG9zZV9zeW5jKHN0cnVj dCByMWNvbmYgKmNvbmYpDQogew0KLQl3YWl0X2JhcnJpZXIoY29uZik7DQotCWFsbG93X2JhcnJp ZXIoY29uZik7DQorCXdhaXRfYmFycmllcihjb25mLCBOVUxMKTsNCisJYWxsb3dfYmFycmllcihj b25mLCAwLCAwKTsNCiANCiAJbWVtcG9vbF9kZXN0cm95KGNvbmYtPnIxYnVmX3Bvb2wpOw0KIAlj b25mLT5yMWJ1Zl9wb29sID0gTlVMTDsNCisNCisJY29uZi0+bmV4dF9yZXN5bmMgPSAwOw0KKwlj b25mLT5zdGFydF9uZXh0X3dpbmRvdyA9IE1heFNlY3RvcjsNCiB9DQogDQogc3RhdGljIGludCBy YWlkMV9zcGFyZV9hY3RpdmUoc3RydWN0IG1kZGV2ICptZGRldikNCkBAIC0yNzEzLDYgKzI4MTEs OSBAQCBzdGF0aWMgc3RydWN0IHIxY29uZiAqc2V0dXBfY29uZihzdHJ1Y3QgbWRkZXYgKm1kZGV2 KQ0KIAljb25mLT5wZW5kaW5nX2NvdW50ID0gMDsNCiAJY29uZi0+cmVjb3ZlcnlfZGlzYWJsZWQg PSBtZGRldi0+cmVjb3ZlcnlfZGlzYWJsZWQgLSAxOw0KIA0KKwljb25mLT5zdGFydF9uZXh0X3dp bmRvdyA9IE1heFNlY3RvcjsNCisJY29uZi0+Y3VycmVudF93aW5kb3dfcmVxdWVzdHMgPSBjb25m LT5uZXh0X3dpbmRvd19yZXF1ZXN0cyA9IDA7DQorDQogCWVyciA9IC1FSU87DQogCWZvciAoaSA9 IDA7IGkgPCBjb25mLT5yYWlkX2Rpc2tzICogMjsgaSsrKSB7DQogDQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZC9yYWlkMS5oIGIvZHJpdmVycy9tZC9yYWlkMS5oDQppbmRleCAzMzFhOThhLi4wNzQy NWExIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9tZC9yYWlkMS5oDQorKysgYi9kcml2ZXJzL21kL3Jh aWQxLmgNCkBAIC00MSw2ICs0MSwxOSBAQCBzdHJ1Y3QgcjFjb25mIHsNCiAJICovDQogCXNlY3Rv cl90CQluZXh0X3Jlc3luYzsNCiANCisJLyp3aGVuIHJhaWQxIHN0YXJ0IHJlc3luYyx3ZSBkaXZp ZGUgcmFpZCBpbnRvIGZvdXIgcGFydGl0aW9ucw0KKwkgKiB8LS0tLS0tLS0tfC0tLS0tLS0tLS0t LS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfA0KKwkgKiAgICAgICAgbmV4 dF9yZXN5bmMgICBzdGFydF9uZXh0X3dpbmRvdyAgICAgICAgUGMNCisJICogTm93IHN0YXJ0X25l eHRfd2luZG93ID0gbmV4dF9yZXN5bmMgKyBORVhUX05PUk1BTElPX0RJU1RBTkNFDQorCSAqIFBj ID0gc3RhcnRfbmV4dF93aW5kb3cgKyBORVhUX05PUk1BTElPX0RJU1RBTkNFDQorCSAqIGN1cnJl bnRfd2luZG93X3JlcXVlc3RzIG1lYW5zIHRoZSBjb3VudCBvZiBub3JtYWxJTyBiZXR3ZWVuDQor CSAqIHN0YXJ0X25leHRfd2luZG93IGFuZCBQYy4NCisJICogbmV4dF93aW5kb3dfcmVxdWVzdHMg bWVhbnMgdGhlIGNvdW50IG9mIG5vcm5hbElPIGFmdGVyIFBjLg0KKwkgKiAqLw0KKwlzZWN0b3Jf dAkJc3RhcnRfbmV4dF93aW5kb3c7DQorCWludAkJCWN1cnJlbnRfd2luZG93X3JlcXVlc3RzOw0K KwlpbnQJCQluZXh0X3dpbmRvd19yZXF1ZXN0czsNCisNCiAJc3BpbmxvY2tfdAkJZGV2aWNlX2xv Y2s7DQogDQogCS8qIGxpc3Qgb2YgJ3N0cnVjdCByMWJpbycgdGhhdCBuZWVkIHRvIGJlIHByb2Nl c3NlZCBieSByYWlkMWQsDQpAQCAtMTEyLDYgKzEyNSw3IEBAIHN0cnVjdCByMWJpbyB7DQogCQkJ CQkJICogaW4gdGhpcyBCZWhpbmRJTyByZXF1ZXN0DQogCQkJCQkJICovDQogCXNlY3Rvcl90CQlz ZWN0b3I7DQorCXNlY3Rvcl90CQlzdGFydF9uZXh0X3dpbmRvdzsNCiAJaW50CQkJc2VjdG9yczsN CiAJdW5zaWduZWQgbG9uZwkJc3RhdGU7DQogCXN0cnVjdCBtZGRldgkJKm1kZGV2Ow0KLS0gDQox LjguNA==