From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jonas Mark (BT-FIR/ENG1)" Subject: AW: [PATCH 2/5] spi: implement companion-spi driver Date: Thu, 7 Jun 2018 14:58:24 +0000 Message-ID: References: <1528224240-30786-1-git-send-email-mark.jonas@de.bosch.com> <1528224240-30786-3-git-send-email-mark.jonas@de.bosch.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: Wolfgang Grandegger , Marc Kleine-Budde , "linux-can@vger.kernel.org" , netdev , "Linux Kernel Mailing List" , Heiko Schocher , "ZHU Yi (BT-FIR/ENG1-Zhu)" To: Andy Shevchenko Return-path: In-Reply-To: Content-Language: de-DE Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org SGVsbG8gQW5keSwNCg0KVGhhbmsgeW91IHZlcnkgbXVjaCBmb3IgeW91ciBmZWVkYmFjay4NCg0K PiA+ICsgICAgICAgLypUT0RPOiBzdXBwb3J0IG11dGlwbGUgcGFja2V0cyBpbiBvbmUgd3JpdGUg aW4gZnV0dXJlKi8NCj4gDQo+IEhtbS4uLiBFaXRoZXIgZml4IHRoaXMsIG9yIHJlbW92ZSBjb21t ZW50Pw0KDQpBZ3JlZWQsIHdlIHdpbGwgbWFuYWdlIGlkZWFzIGZvciBmdXR1cmUgY2hhbmdlcyBh dCBhIGRpZmZlcmVudCBwbGFjZS4NCg0KPiA+ICsgICAgICAgaWYgKGNvcHlfZnJvbV91c2VyKHAu ZGF0YSwgYnVmLCBzaXplb2YocCkpID09IDApIHsNCj4gPiArICAgICAgICAgICAgICAgaWYgKGlz X2Nhbl90eXBlKCZwKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsNCj4gPiArICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9pbmZvKHBh cmVudCwgImNvcHkgZnJvbSB1c2VyIG5vdCBzdWNjZWVkIGluIG9uZSBjYWxsXG4iKTsNCj4gDQo+ IFNob3VsZG4ndCBpdCByZXR1cm4gaW1tZWRpYXRlbHk/DQoNClllcywgaXQgc2hvdWxkLiBXaWxs IGJlIGNoYW5nZWQuDQoNCj4gDQo+ID4gKyAgICAgICB9DQo+IA0KPiA+ICsNCj4gPiArICAgICAg IGVycm9yID0gcW1faW9fdHhxX2luKCZwcml2LT5wbS5xbSwgYnVmLCBjb3VudCwgJmNvcGllZCk7 DQo+IA0KPiAuLi53aGF0IHRoZSBwb2ludCB0byBjYWxsIGlmIHdlIGdvdCBnYXJiYWdlIGZyb20g dXNlciBzcGFjZT8NCg0KV2lsbCBiZSBjaGFuZ2VkIHdpdGggdGhlIGNvZGUgYWJvdmUuDQoNCj4g PiArICAgICAgIGlmICghZXJyb3IpIHsNCj4gDQo+IFRoZSB1c3VhbCBwYXR0ZXJuIGlzIHRvIGNo ZWNrIGZvciBlcnJvcnMgZmlyc3QuDQoNClVuZGVyc3Rvb2QsIHdpbGwgYmUgY2hhbmdlZC4NCg0K PiA+ICsgICAgICAgICAgICAgICB3YWtlX3VwX2ludGVycnVwdGlibGUoJnByaXYtPndhaXQpOw0K PiA+ICsgICAgICAgICAgICAgICBwcml2LT5wbS5zdGF0cy5pb190eCsrOw0KPiA+ICsgICAgICAg ICAgICAgICByZXR1cm4gY29waWVkOw0KPiA+ICsgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAg ICAgICAgICAgcHJpdi0+cG0uc3RhdHMuaW9fdHhfb3ZlcmZsb3dzKys7DQo+ID4gKyAgICAgICB9 DQo+ID4gKyAgICAgICByZXR1cm4gZXJyb3I7DQo+ID4gK30NCj4gDQo+ID4gKyAgICAgICAuLi4g cW1faW9fcnhxX291dCgmcHJpdi0+cG0ucW0sIGJ1ZiwgY291bnQsICZjb3BpZWQpOw0KPiANCj4g PiArICAgICAgIC4uLiBwbV9jYW5fZGF0YV90eCgmcHJpdi0+cG0sIHBvcnQsIHByaW8sIGNmKTsN Cj4gDQo+IE9oLCBvaCwgb2guDQo+IA0KPiBUaGVzZSBuYW1lc3BhY2VzIGFyZSB0b28gZ2VuZXJp YywgbW9yZW92ZXIgcG0gaXMga2luZGEgb2NjdXBpZWQgYnkNCj4gcG93ZXIgbWFuYWdlbWVudC4g WW91IGJyaW5nIGEgbG90IG9mIGNvbmZ1c2lvbiBoZXJlLCBJIHRoaW5rLg0KDQpXZSBhZ3JlZSBh bmQgd2Ugc3RhcnRlZCB0aGlua2luZyBhYm91dCBiZXR0ZXIgbmFtZXMuIFdlIHdpbGwgc2VuZCBh IHByb3Bvc2FsLg0KDQo+ID4gKyAgICAgICBlcnIgPSBwbV9jYW5fZ2V0X3R4cV9zdGF0dXMocG0s IHBvcnQpOw0KPiA+ICsgICAgICAgaWYgKCFlcnIpIHsNCj4gDQo+IGlmIChlcnIpDQo+ICByZXR1 cm4gZXJyOw0KDQpZZXMsIHdpbGwgYmUgY2hhbmdlZC4NCg0KPiA+ICsgICAgICAgfQ0KPiA+ICsg ICAgICAgcmV0dXJuIGVycjsNCj4gDQo+IA0KPiA+ICsgICAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgcmV0LCB2YWx1ZTsNCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBzc2NhbmYoYnVm LCAiJWQiLCAmdmFsdWUpOw0KPiA+ICsgICAgICAgaWYgKHJldCAhPSAxKSB7DQo+IA0KPiA+ICsg ICAgICAgfQ0KPiANCj4gWW91IGhhdmUgdG8gYmUgY29uc2lzdGVudCBpbiB5b3VyIGNvZGUuDQo+ IA0KPiBJJ3ZlIGFscmVhZHkgbm90aWNlZA0KPiANCj4gZXJyDQo+IGVycm9yDQo+IA0KPiBhbmQg bm93DQo+IA0KPiByZXQNCj4gDQo+IENob29zZSBvbmUgYW5kIHN0aWNrIHdpdGggaXQuDQoNClll cywgd2lsbCBiZSBjaGFuZ2VkLg0KDQo+IEFsc28gY2hlY2sgeW91ciBlbnRpcmUgcGF0Y2ggc2Vy aWVzJyBjb2RlIGZvciBjb25zaXN0ZW5jeS4NCg0KV2Ugd2lsbCBoYXZlIGEgbG9vay4NCg0KPiA+ ICtzdGF0aWMgREVWSUNFX0FUVFIoZHVtcF9wYWNrZXRzLCBTX0lSVUdPIHwgU19JV1VTUiwNCj4g PiArICAgICAgICAgICAgICAgICAgIHNob3dfZHVtcF9wYWNrZXRzLCBzdG9yZV9kdW1wX3BhY2tl dHMpOw0KPiANCj4gV2UgaGF2ZSBoZWxwZXJzLCBsaWtlIERFVklDRV9BVFRSX1JXKCkuDQoNCldp bGwgYmUgY2hhbmdlZC4NCg0KPiA+ICsgICAgICAgICAgICAgICByZXQgID0gc25wcmludGYoYnVm ICsgcG9zLCBQQUdFX1NJWkUgLSBwb3MsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiXG50eDogJXUsIHJ4OiAldSwgZXJyOiAldVxuXG4iLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdG90YWwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwcml2LT5wbS5zdGF0cy5jYW5fcnhfb3ZlcmZsb3dzW2ldLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJpdi0+cG0uc3RhdHMuY2FuX2Vycl9vdmVyZmxvd3NbaV0p Ow0KPiANCj4gUGxlYXNlLCBhdm9pZCBsZWFkaW5nICdcbicuDQoNCldlIHRoaW5rIHdlIHdpbGwg c3RpY2sgdG8gdGhlIGV4aXN0aW5nLiBPdGhlcndlaXNlIHdlIHdvdWxkIGhhdmUgdG8NCmluc2Vy dCBhbm90aGVyIHBhaXIgb2Ygc3ByaW50KCkgYW5kIHBvcyArPSByZXQuIElzIGl0IHdvcnRoIHRo YXQ/DQoNCj4gDQo+ID4gKyAgICAgICBncGlvX3NldF92YWx1ZShwcml2LT5jc19ncGlvcywgcHJp di0+Y3NfZ3Bpb3NfYXNzZXJ0KTsNCj4gDQo+ID4gKyAgICAgICBncGlvX3NldF92YWx1ZShwcml2 LT5jc19ncGlvcywgIXByaXYtPmNzX2dwaW9zX2Fzc2VydCk7DQo+IA0KPiBDYW4geW91IHN3aXRj aCB0byBHUElPIGRlc2NyaXB0b3IgQVBJPw0KDQpZZXMsIHdlIGFyZSB3b3JraW5nIG9uIGl0Lg0K DQo+ID4gKyAgICAgICB1bnNpZ25lZCBpbnQgY291bnQgPSBSRUFEWV9QT0xMX1VTIC8gUkVBRFlf UE9MTF9VU19HUkFOOw0KPiA+ICsgICAgICAgd2hpbGUgKGNvdW50LS0pIHsNCj4gDQo+IEZvciBj b3VudGluZyBsaWtlIHRoaXMgYmV0dGVyIHRvIGhhdmUNCj4gZG8gew0KPiB9IHdoaWxlICgtLWNv dW50KTsNCj4gDQo+IFRoZSByYXRpb25hbGUsIHJlYWRlciBhdCBmaXJzdCBnbGFuY2Ugd2lsbCBr bm93IHRoYXQgdGhlIGxvb3Agd2lsbA0KPiBpdGVyYXRlIGF0IGxlYXN0IG9uY2UuDQoNCkFncmVl ZCwgd2lsbCBiZSBjaGFuZ2VkLg0KDQo+ID4gKyAgICAgICAgICAgICAgIGlmIChzbGF2ZV9pc19u b3RfYnVzeShwcml2KSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4g PiArDQo+IA0KPiA+ICsgICAgICAgICAgICAgICB1ZGVsYXkoUkVBRFlfUE9MTF9VU19HUkFOKTsN Cj4gDQo+IFNob3VsZCBpdCBiZSBhdG9taWM/DQo+IENhbiBpdCB1c2UgcmVhZF9wb2xsXyogdHlw ZSBvZiBoZWxwZXJzIGluc3RlYWQ/DQoNClllcywgaXQgc2hhbGwgYmUgYXRvbWljIGJlY2F1c2Ug d2UgbmVlZCB0byByZWR1Y2UgdGhlIGxhdGVuY3kgYXQNCmRldGVjdGluZyB0aGUgZGUtYXNzZXJ0 aW9uIG9mIHRoZSBidXN5IHNpZ25hbC4gV2UgYWNjZXB0IHRoYXQgdGhpcyB3aWxsDQpjb3N0IENQ VSB0aW1lLg0KDQpJbiBjYXNlIHRoZSBDb21wYW5pb24gaXRzZWxmIGlzIHZlcnkgYnVzeSBhbmQg ZG9lcyBub3QgcmVwbHkgcXVpY2tseSB3ZQ0KYXJlIGhhdmUgc2Vjb25kIHBvbGxpbmcgbG9vcCBi ZWxvdyB3aGljaCBzbGVlcHMgbG9uZ2VyIGFuZCBpcyBub24tYXRvbWljLg0KDQo+IEFib3ZlIGNv bW1lbnRzIGFwcGxpY2FibGUgdG8gZW50aXJlIGNvZGUgeW91IGhhdmUuDQoNCldlIHdpbGwgbG9v ayBhdCBpdC4NCg0KPiA+ICtzdGF0aWMgdm9pZCBjb21wYW5pb25fc3BpX2NwdV90b19iZTMyKGNo YXIgKmJ1ZikNCj4gPiArew0KPiA+ICsgICAgICAgdTMyICpidWYzMiA9ICh1MzIqKWJ1ZjsNCj4g PiArICAgICAgIGludCAgaTsNCj4gPiArDQo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgKEJD UF9QQUNLRVRfU0laRSAvIHNpemVvZih1MzIpKTsgaSsrLCBidWYzMisrKQ0KPiA+ICsgICAgICAg ICAgICAgICAqYnVmMzIgPSBjcHVfdG9fYmUzMigqYnVmMzIpOw0KPiA+ICt9DQo+IA0KPiBUaGlz IGVudGlyZSBmdW5jdGlvbiBzaG91bGQgYmUgcmVwbGFjZWQgYnkgb25lIG9mIHRoZSBoZWxwZXJz IGZyb20NCj4gaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJpYy5oDQo+IA0KPiBJIGd1ZXNz IGNwdV90b19iZTMyX2FycmF5KCkgaXMgYSByaWdodCBvbmUuDQoNCkNvcnJlY3QuIFdlIGFyZSB0 ZXN0aW5nIHRoZSBkcml2ZXIgYWdhaW5zdCA0LjE0IGFuZCB0aGF0IGZ1bmN0aW9uIGlzIG5vdA0K YXZhaWxhYmxlIHRoZXJlLiBJdCB3aWxsIGJlIGNoYW5nZWQgbGF0ZXIuDQoNCj4gPiArc3RhdGlj IHZvaWQgY29tcGFuaW9uX3NwaV9iZTMyX3RvX2NwdShjaGFyICpidWYpDQo+ID4gK3sNCj4gPiAr ICAgICAgIHUzMiAqYnVmMzIgPSAodTMyKilidWY7DQo+ID4gKyAgICAgICBpbnQgIGk7DQo+ID4g Kw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IChCQ1BfUEFDS0VUX1NJWkUgLyBzaXplb2Yo dTMyKSk7IGkrKywgYnVmMzIrKykNCj4gPiArICAgICAgICAgICAgICAgKmJ1ZjMyID0gYmUzMl90 b19jcHUoKmJ1ZjMyKTsNCj4gPiArfQ0KPiANCj4gRGl0dG8uDQo+IA0KPiBSZWNvbW1lbmRhdGlv bjogY2hlY2sgeW91ciBjb2RlIGFnYWluc3QgZXhpc3RpbmcgaGVscGVycy4NCg0KWWVzLCBldmVy eSBrZXJuZWwgcmVsZWFzZSBicmluZ3MgbmV3IGhlbHBlcnMuIFdlIHdpbGwgaGF2ZSB0byBsZWFy biBob3cNCnRvIGtlZXAgdHJhY2sgb2YgdGhlIGFkZGl0aW9ucy4NCg0KPiA+ICsgICAgICAgICAg ICAgICBwID0gKGNvbnN0IHN0cnVjdCBjb21wYW5pb25fcGFja2V0Kil0cmFuc2Zlci0+dHhfYnVm Ow0KPiANCj4gPiArICAgICAgIGNvbXBhbmlvbl9zcGlfY3B1X3RvX2JlMzIoKGNoYXIqKXRyYW5z ZmVyLT50eF9idWYpOw0KPiANCj4gSWYgdHhfYnVmIGlzIHR5cGUgb2Ygdm9pZCAqIGFsbCB0aGVz ZSBjYXN0aW5ncyBhcmUgcmVkdW5kYW50Lg0KDQpUaGUgdHlwZSBpcyBjb25zdCB2b2lkKi4gU28g dGhlIGZpcnN0IGNhc3QgaXMgc3VwZXJmbHVvdXMsIHRoZSBzZWNvbmQNCmlzIG5vdC4NCg0KPiBB bHNvIGxvb2tpbmcgYXQgdGhlIGZ1bmN0aW9uLCBkaWQgeW91IGNvbnNpZGVyIHRvIHVzZSB3aGF0 ZXZlciBTUEkNCj4gY29yZSBwcm92aWRlcywgbGlrZSBDUyBoYW5kbGluZywgbWVzc2FnZXMgaGFu ZGxpbmcgYW5kIHNvIG9uPw0KDQpTUEkgQ1MgaGFzIHRvIGJlIGRvbmUgbWFudWFsbHkgaW4gb3Vy IGNhc2UgYmVjYXVzZSB3ZSBuZWVkIHRvIHdhaXQNCnVudGlsIHRoZSBDb21wYW5pb24gc2lnbmFs cyB0aGF0IGl0IGlzIHJlYWR5IGZvciB0aGUgdHJhbnNmZXIuDQoNCkRvIHlvdSBoYXZlIGNvbmNy ZXRlIHByb3Bvc2FscyByZWdhcmRpbmcgbWVzc2FnZXMgaGFuZGxpbmc/DQoNCj4gPiArc3RhdGlj IGludCBjb21wYW5pb25fc3BpX3RocmVhZCh2b2lkICpkYXRhKQ0KPiA+ICt7DQo+ID4gKyAgICAg ICBzdHJ1Y3QgY29tcGFuaW9uX3NwaV9wcml2ICpwcml2ID0gZGF0YTsNCj4gPiArICAgICAgIHN0 cnVjdCBjb21wYW5pb25fcGFja2V0ICAgIHR4X3BhY2tldDsNCj4gPiArICAgICAgIHN0cnVjdCBj b21wYW5pb25fcGFja2V0ICAgIHJ4X3BhY2tldDsNCj4gPiArICAgICAgIHN0cnVjdCBzcGlfbWVz c2FnZSAgICAgICAgIG1lc3NhZ2U7DQo+ID4gKyAgICAgICBzdHJ1Y3Qgc3BpX3RyYW5zZmVyICAg ICAgICB0cmFuc2ZlcjsNCj4gPiArDQo+ID4gKyAgICAgICBtZW1zZXQoJnRyYW5zZmVyLCAwLCBz aXplb2YodHJhbnNmZXIpKTsNCj4gPiArICAgICAgIHRyYW5zZmVyLnR4X2J1ZiAgICAgICAgPSB0 eF9wYWNrZXQuZGF0YTsNCj4gPiArICAgICAgIHRyYW5zZmVyLnJ4X2J1ZiAgICAgICAgPSByeF9w YWNrZXQuZGF0YTsNCj4gPiArICAgICAgIHRyYW5zZmVyLmxlbiAgICAgICAgICAgPSBzaXplb2Yo c3RydWN0IGNvbXBhbmlvbl9wYWNrZXQpOw0KPiANCj4gPiArICAgICAgIHRyYW5zZmVyLmNzX2No YW5nZSAgICAgPSAwOw0KPiANCj4gUmVkdW5kYW50Lg0KDQpZZXMsIGl0IGlzIHJlZHVuZGFudC4g V2Ugd2FudCB0byBleHBsaWNpdGx5IHNob3cgaGVyZSB0aGF0IHRoZSBDUw0KaGFuZGxpbmcgaXMg ZG9uZSBtYW51YWxseS4NCg0KPiA+ICsgICAgICAgZm9yICg7Oykgew0KPiANCj4gSW5maW5pdGUg bG9vcHMgYXJlIGV2aWwgaW4gbW9zdCBvZiB0aGUgY2FzZXMuDQo+IEkgc2VlIGhlcmUNCj4gDQo+ IGRvIHsNCj4gfSB3aGlsZSAoa3RocmVhZF9zaG91bGRfc3RvcCgpKTsNCg0KWWVzLCB3aWxsIGJl IGZpeGVkLg0KDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNvbXBhbmlv bl9zcGlfb2ZfbWF0Y2hbXSA9IHsNCj4gPiArICAgICAgIHsgLmNvbXBhdGlibGUgPSBEUklWRVJf TkFNRSwgLmRhdGEgPSBOVUxMLCB9LA0KPiA+ICsgICAgICAgeyAvKiBzZW50aW5lbCAqLyB9LA0K PiANCj4gdGVybWluYXRvcnMgYmV0dGVyIHdpdGhvdXQgY29tbWFzLg0KDQpZZXMsIHdpbGwgYmUg Zml4ZWQuDQoNCj4gPiArICAgICAgICAgICAgICAgLm93bmVyICAgICAgICAgID0gVEhJU19NT0RV TEUsDQo+IA0KPiBUaGlzIGlzIHJlZHVuZGFudCwgbWFjcm8geW91IGFyZSB1c2luZyBiZWxvdyBz ZXRzIHRoYXQuDQoNCldpbGwgYmUgZml4ZWQuDQoNCj4gU29tZXRoaW5nIHdyb25nIHdpdGggaW5k ZW50YXRpb24gaW4gdGhpcyBmaWxlLg0KDQpZZXMsIHdlIHdpbGwgbmVlZCB0byB3b3JrIG9uIHRo ZSBpbmRlbnRhdGlvbi4gV2Ugd2lsbCBkbyBpdCBpbiBhDQpmb2xsb3dpbmcgcm91bmQuDQoNCj4g PiArI2RlZmluZSBDSEVDS19TSVpFKHgpIEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGNvbXBh bmlvbl9wYWNrZXQpICE9IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplb2YoeCkpDQo+IA0KPiBCZXR0ZXIgdG8gc3BsaXQgbGlrZQ0KPiAgX1NJWkUoeCkgXA0K PiBCVUlMRF9CVUdfT04oKQ0KDQpXaWxsIGJlIGZpeGVkLg0KDQo+ID4gK3ZvaWQgcG1faW5pdChz dHJ1Y3QgY29tcGFuaW9uX3Byb3RvY29sX21hbmFnZXIgKnBtKQ0KPiANCj4gVW5mb3J0dW5hdGVs eSwgaG9ycmlibGUgbmFtZSBmb3IgdGhlIGZ1bmN0aW9uLg0KPiBOYW1lc3BhY2UgaXMga2luZGEg b2NjdXBpZWQsIG5hbWUgaXRzZWxmIHdheSB0b28gZ2VuZXJpYy4NCg0KWWVzLCB3ZSB3aWxsIHNl bmQgYSBwcm9wb3NhbC4NCg0KPiA+ICsgICAgICAgaWYgKGN0cmwgJiBDQU5fQ1RSTE1PREVfTElT VEVOT05MWSkNCj4gPiArICAgICAgICAgICAgICAgcC5tb2RlID0gQkNQX0NBTl9NT0RFX0xJU1RF TjsNCj4gPiArICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RT VVBQOw0KPiANCj4gaWYgKCEoY29uZCkpDQo+ICByZXR1cm4gLUVSUk5POw0KDQpXaWxsIGJlIGZp eGVkLg0KDQo+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQo+ID4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzDQo+ID4gKyAqIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KPiANCj4gRG8geW91IHN0 aWxsIG5lZWQgdGhpcyB0ZXh0Pw0KDQpEbyB5b3UgbWVhbiB0aGUgU1BEWCBpcyBlbm91Z2g/IFRo ZW4sIHllcywgd2UgY2FuIHJlbW92ZSBpdC4NCg0KPiA+ICsgKiBUT0RPOiBhZGQgbW9yZSBzdGF0 aXN0aWNzIGZpZWxkcyBhbmQgZXhwb3J0IHRvIHN5c2ZzDQo+IA0KPiBEbyBpdCBvciByZW1vdmUg dGhlIGNvbW1lbnQ/DQo+IA0KPiA+ICsgKiBUT0RPOiByZS10aGluayB0aGUgZGF0YSBzdHJ1Y3R1 cmUgZm9yIGhhbmRsZSBDQU4gcmVzcG9uc2UNCj4gDQo+IERpdHRvLg0KDQpXZSB3aWxsIGhhbmRs ZSBmdXR1cmUgaW1wcm92ZW1lbnQgaWRlYXMgaW4gYSBkaWZmZXJlbnQgcGxhY2UuDQoNCj4gPiAr LyoqDQo+ID4gKyAqIEJDUCBzdGF0dXMgZmllbGQgZGVmaW5pdGlvbnMNCj4gPiArICovDQo+ID4g KyNkZWZpbmUgQkNQX1NUQVRVU19TVUNDRVNTIDB4MDB1DQo+ID4gKyNkZWZpbmUgQkNQX1NUQVRV U19VTktOT1dOIDB4MDF1DQo+ID4gKyNkZWZpbmUgQkNQX1NUQVRVU19PVEhFUiAgIDB4MDJ1DQo+ IA0KPiBCSVQoKSA/DQoNCk5vLCB0aGVzZSBhcmUgZml4ZWQgbnVtYmVycywgbm90IGJpdCBmaWVs ZHMuDQoNCj4gPiArc3RydWN0IGNvbXBhbmlvbl9wYWNrZXQgew0KPiA+ICsgICAgICAgX191OCBk YXRhW0JDUF9QQUNLRVRfU0laRV07DQo+ID4gK307DQo+IA0KPiBJcyBpdCBnb2luZyBmcm9tIC8g dG8gdXNlciBzcGFjZT8gT3RoZXJ3aXNlIHdoeSBfXyBraW5kIG9mIHR5cGU/DQoNCldpbGwgYmUg Zml4ZWQuDQoNCj4gPiArI2RlZmluZSBDQU5fTUFYX0lOX0FfUk9XIDgNCj4gPiArDQo+ID4gKw0K PiA+ICsNCj4gDQo+IFRvbyBtYW55IGJsYW5rIGxpbmVzLg0KDQpZZXMuIFdpbGwgYmUgZml4ZWQu DQoNCj4gPiAraW50IGNvbXBhbmlvbl9kb19jYW5fZXJyKHN0cnVjdCBkZXZpY2UgICAgICAgICAg ICpwYXJlbnQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICB1OCAgICAgICAgICAgICAg ICAgICAgICAgcG9ydCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjYW5f YmVycl9jb3VudGVyICpiZWMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICB1OCAgICAg ICAgICAgICAgICAgICAgICAqc3RhdGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICB1 OCAgICAgICAgICAgICAgICAgICAgICAqY29kZSk7DQo+IA0KPiArIGJsYW5rIGxpbmUgaGVyZS4N Cg0KV2lsbCBiZSBmaXhlZC4NCg0KPiANCj4gPiArI2RlZmluZSBDT01QQU5JT05fQ0FOX1NUQVRF X1dBUk5JTkcgMHgwMXUNCj4gPiArI2RlZmluZSBDT01QQU5JT05fQ0FOX1NUQVRFX1BBU1NJVkUg MHgwMnUNCj4gPiArI2RlZmluZSBDT01QQU5JT05fQ0FOX1NUQVRFX0JVU19PRkYgMHgwNHUNCj4g PiArI2RlZmluZSBDT01QQU5JT05fQ0FOX0VSUk9SX1NUVUZGICAgMHgwMXUNCj4gPiArI2RlZmlu ZSBDT01QQU5JT05fQ0FOX0VSUk9SX0ZPUk0gICAgMHgwMnUNCj4gPiArI2RlZmluZSBDT01QQU5J T05fQ0FOX0VSUk9SX0FDSyAgICAgMHgwNHUNCj4gPiArI2RlZmluZSBDT01QQU5JT05fQ0FOX0VS Uk9SX0JJVDEgICAgMHgwOHUNCj4gPiArI2RlZmluZSBDT01QQU5JT05fQ0FOX0VSUk9SX0JJVDAg ICAgMHgxMHUNCj4gPiArI2RlZmluZSBDT01QQU5JT05fQ0FOX0VSUk9SX0NSQyAgICAgMHgyMHUN Cj4gPiArI2RlZmluZSBDT01QQU5JT05fQ0FOX0VSUk9SX1JYT1YgICAgMHg4MHUNCj4gDQo+IEJJ VCgpID8NCg0KWWVzLCB0aGlzIGlzIGEgYml0IGZpZWxkLiBXaWxsIGJlIGZpeGVkLg0KDQpHcmVl dGluZ3MsDQpNYXJrDQoNCkJ1aWxkaW5nIFRlY2hub2xvZ2llcywgUGFuZWwgU29mdHdhcmUgRmly ZSAoQlQtRklSL0VORzEpIA0KQm9zY2ggU2ljaGVyaGVpdHNzeXN0ZW1lIEdtYkggfCBQb3N0ZmFj aCAxMSAxMSB8IDg1NjI2IEdyYXNicnVubiB8IEdFUk1BTlkgfCB3d3cuYm9zY2hzZWN1cml0eS5j b20NCg0KU2l0ejogU3R1dHRnYXJ0LCBSZWdpc3RlcmdlcmljaHQ6IEFtdHNnZXJpY2h0IFN0dXR0 Z2FydCBIUkIgMjMxMTggDQpBdWZzaWNodHNyYXRzdm9yc2l0emVuZGVyOiBTdGVmYW4gSGFydHVu ZzsgR2VzY2jDpGZ0c2bDvGhydW5nOiBHZXJ0IHZhbiBJcGVyZW4sIEFuZHJlYXMgQmFydHosIFRo b21hcyBRdWFudGUsIEJlcm5oYXJkIFNjaHVzdGVyIA0K