From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Grodzovsky, Andrey" Subject: Re: [PATCH v5 1/2] drm/sched: Refactor ring mirror list handling. Date: Wed, 9 Jan 2019 15:18:18 +0000 Message-ID: References: <1545333815-29870-1-git-send-email-andrey.grodzovsky@amd.com> <109f33b9-0a24-08e3-053d-57923b4d7e7f@amd.com> <642bdffd-afe9-1a58-4f32-9ef7a4cb22b7@amd.com> <5e256bb1-d4aa-f965-2799-d68c9f925b66@gmail.com> <6a2b45d7-0fa3-38fe-98b2-a538b663c6cc@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_003_ea37c55fee56cce7a4e11a599642c54camdcom_" Return-path: In-Reply-To: <6a2b45d7-0fa3-38fe-98b2-a538b663c6cc@gmail.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Koenig, Christian" , "dri-devel@lists.freedesktop.org" , "amd-gfx@lists.freedesktop.org" , "eric@anholt.net" , "etnaviv@lists.freedesktop.org" Cc: "Liu, Monk" List-Id: dri-devel@lists.freedesktop.org --_003_ea37c55fee56cce7a4e11a599642c54camdcom_ Content-Type: text/plain; charset="utf-8" Content-ID: <8F218486C0C7A2438A2436CF25D54ED0@namprd12.prod.outlook.com> Content-Transfer-Encoding: base64 DQoNCk9uIDAxLzA5LzIwMTkgMDU6MjIgQU0sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6DQo+IEFt IDA3LjAxLjE5IHVtIDIwOjQ3IHNjaHJpZWIgR3JvZHpvdnNreSwgQW5kcmV5Og0KPj4NCj4+IE9u IDAxLzA3LzIwMTkgMDk6MTMgQU0sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6DQo+Pj4gQW0gMDMu MDEuMTkgdW0gMTg6NDIgc2NocmllYiBHcm9kem92c2t5LCBBbmRyZXk6DQo+Pj4+IE9uIDAxLzAz LzIwMTkgMTE6MjAgQU0sIEdyb2R6b3Zza3ksIEFuZHJleSB3cm90ZToNCj4+Pj4+IE9uIDAxLzAz LzIwMTkgMDM6NTQgQU0sIEtvZW5pZywgQ2hyaXN0aWFuIHdyb3RlOg0KPj4+Pj4+IEFtIDIxLjEy LjE4IHVtIDIxOjM2IHNjaHJpZWIgR3JvZHpvdnNreSwgQW5kcmV5Og0KPj4+Pj4+PiBPbiAxMi8y MS8yMDE4IDAxOjM3IFBNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOg0KPj4+Pj4+Pj4gQW0gMjAu MTIuMTggdW0gMjA6MjMgc2NocmllYiBBbmRyZXkgR3JvZHpvdnNreToNCj4+Pj4+Pj4+PiBEZWNh dXBsZSBzY2hlZCB0aHJlYWRzIHN0b3AgYW5kIHN0YXJ0IGFuZCByaW5nIG1pcnJvcg0KPj4+Pj4+ Pj4+IGxpc3QgaGFuZGxpbmcgZnJvbSB0aGUgcG9saWN5IG9mIHdoYXQgdG8gZG8gYWJvdXQgdGhl DQo+Pj4+Pj4+Pj4gZ3VpbHR5IGpvYnMuDQo+Pj4+Pj4+Pj4gV2hlbiBzdG9wcHBpbmcgdGhlIHNj aGVkIHRocmVhZCBhbmQgZGV0YWNoaW5nIHNjaGVkIGZlbmNlcw0KPj4+Pj4+Pj4+IGZyb20gbm9u IHNpZ25hbGVkIEhXIGZlbmVzIHdhaXQgZm9yIGFsbCBzaWduYWxlZCBIVyBmZW5jZXMNCj4+Pj4+ Pj4+PiB0byBjb21wbGV0ZSBiZWZvcmUgcmVydW5uaW5nIHRoZSBqb2JzLg0KPj4+Pj4+Pj4+DQo+ Pj4+Pj4+Pj4gdjI6IEZpeCByZXN1Ym1pc3Npb24gb2YgZ3VpbHR5IGpvYiBpbnRvIEhXIGFmdGVy IHJlZmFjdG9yaW5nLg0KPj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4gdjQ6DQo+Pj4+Pj4+Pj4gRnVsbCBy ZXN0YXJ0IGZvciBhbGwgdGhlIGpvYnMsIG5vdCBvbmx5IGZyb20gZ3VpbHR5IHJpbmcuDQo+Pj4+ Pj4+Pj4gRXh0cmFjdCBrYXJtYSBpbmNyZWFzZSBpbnRvIHN0YW5kYWxvbmUgZnVuY3Rpb24uDQo+ Pj4+Pj4+Pj4NCj4+Pj4+Pj4+PiB2NToNCj4+Pj4+Pj4+PiBSZXdvcmsgd2FpdGluZyBmb3Igc2ln bmFsZWQgam9icyB3aXRob3V0IHJlbHlpbmcgb24gdGhlIGpvYg0KPj4+Pj4+Pj4+IHN0cnVjdCBp dHNlbGYgYXMgdGhvc2UgbWlnaHQgYWxyZWFkeSBiZSBmcmVlZCBmb3Igbm9uICdndWlsdHknDQo+ Pj4+Pj4+Pj4gam9iJ3Mgc2NoZWR1bGVycy4NCj4+Pj4+Pj4+PiBFeHBvc2Uga2FybWEgaW5jcmVh c2UgdG8gZHJpdmVycy4NCj4+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+IFN1Z2dlc3RlZC1ieTogQ2hyaXN0 aWFuIEtvZW5pZyA8Q2hyaXN0aWFuLktvZW5pZ0BhbWQuY29tPg0KPj4+Pj4+Pj4+IFNpZ25lZC1v ZmYtYnk6IEFuZHJleSBHcm9kem92c2t5IDxhbmRyZXkuZ3JvZHpvdnNreUBhbWQuY29tPg0KPj4+ Pj4+Pj4+IC0tLQ0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9kZXZpY2UuYyB8wqAgMTggKy0tDQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqAgZHJp dmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9zY2hlZC5jIHzCoCAxMSArLQ0KPj4+Pj4+Pj4+ IMKgwqDCoMKgIMKgIGRyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvc2NoZWRfbWFpbi5jIHwgMTg4 DQo+Pj4+Pj4+Pj4gKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0NCj4+Pj4+Pj4+PiDCoMKg wqDCoCDCoCBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zY2hlZC5jIHzCoCAxMiArLQ0KPj4+Pj4+ Pj4+IMKgwqDCoMKgIMKgIGluY2x1ZGUvZHJtL2dwdV9zY2hlZHVsZXIuaCB8wqAgMTAgKy0NCj4+ Pj4+Pj4+PiDCoMKgwqDCoCDCoCA1IGZpbGVzIGNoYW5nZWQsIDE1MSBpbnNlcnRpb25zKCspLCA4 OCBkZWxldGlvbnMoLSkNCj4+Pj4+Pj4+Pg0KPj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4+Pj4+Pj4+PiBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYw0KPj4+Pj4+Pj4+IGluZGV4IDhhMDc4 ZjQuLmE0YmQyZDMgMTAwNjQ0DQo+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2RldmljZS5jDQo+Pj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jDQo+Pj4+Pj4+Pj4gQEAgLTMyOTgsMTIgKzMyOTgsMTAg QEAgc3RhdGljIGludA0KPj4+Pj4+Pj4+IGFtZGdwdV9kZXZpY2VfcHJlX2FzaWNfcmVzZXQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoMKg wqDCoMKgIGlmICghcmluZyB8fCAhcmluZy0+c2NoZWQudGhyZWFkKQ0KPj4+Pj4+Pj4+IMKgwqDC oMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOw0KPj4+Pj4+Pj4+IMKgwqDC oMKgIMKgIC0ga3RocmVhZF9wYXJrKHJpbmctPnNjaGVkLnRocmVhZCk7DQo+Pj4+Pj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIGRybV9zY2hlZF9zdG9wKCZyaW5nLT5zY2hlZCwgam9iID8gJmpvYi0+YmFz ZSA6IE5VTEwpOw0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIC3CoMKgwqDCoMKgwqDCoCBpZiAoam9i ICYmIGpvYi0+YmFzZS5zY2hlZCAhPSAmcmluZy0+c2NoZWQpDQo+Pj4+Pj4+Pj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY29udGludWU7DQo+Pj4+Pj4+Pj4gLQ0KPj4+Pj4+Pj4+IC0gZHJtX3Nj aGVkX2h3X2pvYl9yZXNldCgmcmluZy0+c2NoZWQsIGpvYiA/ICZqb2ItPmJhc2UgOg0KPj4+Pj4+ Pj4+IE5VTEwpOw0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZihqb2IpDQo+Pj4+Pj4+Pj4g KyBkcm1fc2NoZWRfaW5jcmVhc2Vfa2FybWEoJmpvYi0+YmFzZSk7DQo+Pj4+Pj4+PiBTaW5jZSB3 ZSBkcm9wcGVkIHRoZSAiam9iICYmIGpvYi0+YmFzZS5zY2hlZCAhPSAmcmluZy0+c2NoZWQiIA0K Pj4+Pj4+Pj4gY2hlY2sNCj4+Pj4+Pj4+IGFib3ZlIHRoaXMgd2lsbCBub3cgaW5jcmVhc2UgdGhl IGpvYnMga2FybWEgbXVsdGlwbGUgdGltZXMuDQo+Pj4+Pj4+Pg0KPj4+Pj4+Pj4gTWF5YmUganVz dCBtb3ZlIHRoYXQgb3V0c2lkZSBvZiB0aGUgbG9vcC4NCj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4gwqDC oMKgwqAgwqAgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGFmdGVyIGFsbCBodyBqb2JzIGFyZSByZXNl dCwgaHcgZmVuY2UgaXMNCj4+Pj4+Pj4+PiBtZWFuaW5nbGVzcywNCj4+Pj4+Pj4+PiBzbyBmb3Jj ZV9jb21wbGV0aW9uICovDQo+Pj4+Pj4+Pj4gYW1kZ3B1X2ZlbmNlX2RyaXZlcl9mb3JjZV9jb21w bGV0aW9uKHJpbmcpOw0KPj4+Pj4+Pj4+IEBAIC0zNDU0LDE0ICszNDUyLDEwIEBAIHN0YXRpYyB2 b2lkDQo+Pj4+Pj4+Pj4gYW1kZ3B1X2RldmljZV9wb3N0X2FzaWNfcmVzZXQoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsDQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgIGlm ICghcmluZyB8fCAhcmluZy0+c2NoZWQudGhyZWFkKQ0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOw0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIC3C oMKgwqDCoMKgwqDCoCAvKiBvbmx5IG5lZWQgcmVjb3Zlcnkgc2NoZWQgb2YgdGhlIGdpdmVuIGpv YidzIA0KPj4+Pj4+Pj4+IHJpbmcNCj4+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoCAqIG9yIGFs bCByaW5ncyAoaW4gdGhlIGNhc2UgQGpvYiBpcyBOVUxMKQ0KPj4+Pj4+Pj4+IC3CoMKgwqDCoMKg wqDCoMKgICogYWZ0ZXIgYWJvdmUgYW1kZ3B1X3Jlc2V0IGFjY29tcGxpc2hlZA0KPj4+Pj4+Pj4+ IC3CoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGlmICgoIWpv YiB8fCBqb2ItPmJhc2Uuc2NoZWQgPT0gJnJpbmctPnNjaGVkKSAmJg0KPj4+Pj4+Pj4+ICFhZGV2 LT5hc2ljX3Jlc2V0X3JlcykNCj4+Pj4+Pj4+PiAtIGRybV9zY2hlZF9qb2JfcmVjb3ZlcnkoJnJp bmctPnNjaGVkKTsNCj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFhZGV2LT5hc2ljX3Jl c2V0X3JlcykNCj4+Pj4+Pj4+PiArIGRybV9zY2hlZF9yZXN1Ym1pdF9qb2JzKCZyaW5nLT5zY2hl ZCk7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqAgLSBrdGhyZWFkX3VucGFyayhyaW5nLT5zY2hlZC50 aHJlYWQpOw0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fc2NoZWRfc3RhcnQoJnJpbmct PnNjaGVkLCAhYWRldi0+YXNpY19yZXNldF9yZXMpOw0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDC oMKgwqAgfQ0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIMKgwqDCoMKgwqAgaWYgKCFhbWRncHVfZGV2 aWNlX2hhc19kY19zdXBwb3J0KGFkZXYpKSB7DQo+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfc2NoZWQuYw0KPj4+Pj4+Pj4+IGIvZHJpdmVycy9n cHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9zY2hlZC5jDQo+Pj4+Pj4+Pj4gaW5kZXggNDlhNjc2My4u NmYxMjY4ZiAxMDA2NDQNCj4+Pj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9l dG5hdml2X3NjaGVkLmMNCj4+Pj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9l dG5hdml2X3NjaGVkLmMNCj4+Pj4+Pj4+PiBAQCAtMTA5LDE2ICsxMDksMTkgQEAgc3RhdGljIHZv aWQgDQo+Pj4+Pj4+Pj4gZXRuYXZpdl9zY2hlZF90aW1lZG91dF9qb2Ioc3RydWN0DQo+Pj4+Pj4+ Pj4gZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iKQ0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKg wqAgfQ0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIMKgwqDCoMKgwqAgLyogYmxvY2sgc2NoZWR1bGVy ICovDQo+Pj4+Pj4+Pj4gLcKgwqDCoCBrdGhyZWFkX3BhcmsoZ3B1LT5zY2hlZC50aHJlYWQpOw0K Pj4+Pj4+Pj4+IC3CoMKgwqAgZHJtX3NjaGVkX2h3X2pvYl9yZXNldCgmZ3B1LT5zY2hlZCwgc2No ZWRfam9iKTsNCj4+Pj4+Pj4+PiArwqDCoMKgIGRybV9zY2hlZF9zdG9wKCZncHUtPnNjaGVkLCBz Y2hlZF9qb2IpOw0KPj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+PiArwqDCoMKgIGlmKHNjaGVkX2pvYikN Cj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgZHJtX3NjaGVkX2luY3JlYXNlX2thcm1hKHNjaGVk X2pvYik7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqAgwqDCoMKgwqDCoCAvKiBnZXQgdGhlIEdQVSBi YWNrIGludG8gdGhlIGluaXQgc3RhdGUgKi8NCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKg IGV0bmF2aXZfY29yZV9kdW1wKGdwdSk7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoCBl dG5hdml2X2dwdV9yZWNvdmVyX2hhbmcoZ3B1KTsNCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCArIGRy bV9zY2hlZF9yZXN1Ym1pdF9qb2JzKCZncHUtPnNjaGVkKTsNCj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+ Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoCAvKiByZXN0YXJ0IHNjaGVkdWxlciBhZnRlciBHUFUgaXMg dXNhYmxlIGFnYWluICovDQo+Pj4+Pj4+Pj4gLcKgwqDCoCBkcm1fc2NoZWRfam9iX3JlY292ZXJ5 KCZncHUtPnNjaGVkKTsNCj4+Pj4+Pj4+PiAtwqDCoMKgIGt0aHJlYWRfdW5wYXJrKGdwdS0+c2No ZWQudGhyZWFkKTsNCj4+Pj4+Pj4+PiArwqDCoMKgIGRybV9zY2hlZF9zdGFydCgmZ3B1LT5zY2hl ZCwgdHJ1ZSk7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqAgfQ0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKg IMKgIHN0YXRpYyB2b2lkIGV0bmF2aXZfc2NoZWRfZnJlZV9qb2Ioc3RydWN0IGRybV9zY2hlZF9q b2INCj4+Pj4+Pj4+PiAqc2NoZWRfam9iKQ0KPj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vc2NoZWR1bGVyL3NjaGVkX21haW4uYw0KPj4+Pj4+Pj4+IGIvZHJpdmVycy9ncHUv ZHJtL3NjaGVkdWxlci9zY2hlZF9tYWluLmMNCj4+Pj4+Pj4+PiBpbmRleCBkYmI2OTA2Li5iNWM1 YmVlIDEwMDY0NA0KPj4+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvc2No ZWRfbWFpbi5jDQo+Pj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9zY2hl ZF9tYWluLmMNCj4+Pj4+Pj4+PiBAQCAtNjAsOCArNjAsNiBAQA0KPj4+Pj4+Pj4+IMKgwqDCoMKg IMKgIMKgIHN0YXRpYyB2b2lkIGRybV9zY2hlZF9wcm9jZXNzX2pvYihzdHJ1Y3QgZG1hX2ZlbmNl ICpmLA0KPj4+Pj4+Pj4+IHN0cnVjdA0KPj4+Pj4+Pj4+IGRtYV9mZW5jZV9jYiAqY2IpOw0KPj4+ Pj4+Pj4+IMKgwqDCoMKgIMKgIC1zdGF0aWMgdm9pZCBkcm1fc2NoZWRfZXhwZWxfam9iX3VubG9j a2VkKHN0cnVjdA0KPj4+Pj4+Pj4+IGRybV9zY2hlZF9qb2INCj4+Pj4+Pj4+PiAqc19qb2IpOw0K Pj4+Pj4+Pj4+IC0NCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCAvKioNCj4+Pj4+Pj4+PiDCoMKgwqDC oCDCoMKgICogZHJtX3NjaGVkX3JxX2luaXQgLSBpbml0aWFsaXplIGEgZ2l2ZW4gcnVuIHF1ZXVl IHN0cnVjdA0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqAgKg0KPj4+Pj4+Pj4+IEBAIC0zMzUsNiAr MzMzLDQyIEBAIHN0YXRpYyB2b2lkIGRybV9zY2hlZF9qb2JfdGltZWRvdXQoc3RydWN0DQo+Pj4+ Pj4+Pj4gd29ya19zdHJ1Y3QgKndvcmspDQo+Pj4+Pj4+Pj4gc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmc2NoZWQtPmpvYl9saXN0X2xvY2ssIGZsYWdzKTsNCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCB9 DQo+Pj4+Pj4+PiBLZXJuZWwgZG9jIGhlcmUgd291bGQgYmUgbmljZSB0byBoYXZlLg0KPj4+Pj4+ Pj4NCj4+Pj4+Pj4+PiArdm9pZCBkcm1fc2NoZWRfaW5jcmVhc2Vfa2FybWEoc3RydWN0IGRybV9z Y2hlZF9qb2IgKmJhZCkNCj4+Pj4+Pj4+PiArew0KPj4+Pj4+Pj4+ICvCoMKgwqAgaW50IGk7DQo+ Pj4+Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqdG1wOw0KPj4+Pj4+Pj4+ ICvCoMKgwqAgc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eTsNCj4+Pj4+Pj4+PiArwqDC oMKgIHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQgPSBiYWQtPnNjaGVkOw0KPj4+Pj4+ Pj4+ICsNCj4+Pj4+Pj4+PiArwqDCoMKgIC8qIGRvbid0IGluY3JlYXNlIEBiYWQncyBrYXJtYSBp ZiBpdCdzIGZyb20gS0VSTkVMIFJRLA0KPj4+Pj4+Pj4+ICvCoMKgwqDCoCAqIGJlY2F1c2Ugc29t ZXRpbWVzIEdQVSBoYW5nIHdvdWxkIGNhdXNlIGtlcm5lbCBqb2JzIA0KPj4+Pj4+Pj4+IChsaWtl IFZNDQo+Pj4+Pj4+Pj4gdXBkYXRpbmcgam9icykNCj4+Pj4+Pj4+PiArwqDCoMKgwqAgKiBjb3Jy dXB0IGJ1dCBrZWVwIGluIG1pbmQgdGhhdCBrZXJuZWwgam9icyBhbHdheXMgDQo+Pj4+Pj4+Pj4g Y29uc2lkZXJlZA0KPj4+Pj4+Pj4+IGdvb2QuDQo+Pj4+Pj4+Pj4gK8KgwqDCoMKgICovDQo+Pj4+ Pj4+Pj4gK8KgwqDCoCBpZiAoYmFkLT5zX3ByaW9yaXR5ICE9IERSTV9TQ0hFRF9QUklPUklUWV9L RVJORUwpIHsNCj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgYXRvbWljX2luYygmYmFkLT5rYXJt YSk7DQo+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGZvciAoaSA9IERSTV9TQ0hFRF9QUklPUklU WV9NSU47IGkgPA0KPj4+Pj4+Pj4+IERSTV9TQ0hFRF9QUklPUklUWV9LRVJORUw7DQo+Pj4+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpKyspIHsNCj4+Pj4+Pj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX3JxICpycSA9ICZzY2hlZC0+c2NoZWRfcnFb aV07DQo+Pj4+Pj4+Pj4gKw0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwaW5f bG9jaygmcnEtPmxvY2spOw0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShlbnRpdHksIHRtcCwgJnJxLT5lbnRpdGllcywNCj4+Pj4+Pj4+ PiBsaXN0KSB7DQo+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo YmFkLT5zX2ZlbmNlLT5zY2hlZHVsZWQuY29udGV4dCA9PQ0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnRpdHktPmZlbmNlX2NvbnRleHQpIHsNCj4+ Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGF0b21p Y19yZWFkKCZiYWQtPmthcm1hKSA+DQo+Pj4+Pj4+Pj4gKyBiYWQtPnNjaGVkLT5oYW5nX2xpbWl0 KQ0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChlbnRpdHktPmd1aWx0eSkNCj4+Pj4+Pj4+PiArIGF0b21pY19zZXQoZW50aXR5LT5n dWlsdHksIDEpOw0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBicmVhazsNCj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0N Cj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3Bpbl91bmxvY2soJnJxLT5sb2NrKTsNCj4+Pj4+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpZiAoJmVudGl0eS0+bGlzdCAhPSAmcnEtPmVudGl0aWVzKQ0KPj4+ Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+Pj4+Pj4+Pj4g K8KgwqDCoMKgwqDCoMKgIH0NCj4+Pj4+Pj4+PiArwqDCoMKgIH0NCj4+Pj4+Pj4+PiArfQ0KPj4+ Pj4+Pj4+ICtFWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9pbmNyZWFzZV9rYXJtYSk7DQo+Pj4+Pj4+ Pj4gKw0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIC8qKg0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqAg KiBkcm1fc2NoZWRfaHdfam9iX3Jlc2V0IC0gc3RvcCB0aGUgc2NoZWR1bGVyIGlmIGl0DQo+Pj4+ Pj4+Pj4gY29udGFpbnMgdGhlDQo+Pj4+Pj4+Pj4gYmFkIGpvYg0KPj4+Pj4+Pj4+IMKgwqDCoMKg IMKgwqAgKg0KPj4+Pj4+Pj4+IEBAIC0zNDIsMTMgKzM3NiwyMiBAQCBzdGF0aWMgdm9pZCBkcm1f c2NoZWRfam9iX3RpbWVkb3V0KHN0cnVjdA0KPj4+Pj4+Pj4+IHdvcmtfc3RydWN0ICp3b3JrKQ0K Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqAgKiBAYmFkOiBiYWQgc2NoZWR1bGVyIGpvYg0KPj4+Pj4+ Pj4+IMKgwqDCoMKgIMKgwqAgKg0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqAgKi8NCj4+Pj4+Pj4+ PiAtdm9pZCBkcm1fc2NoZWRfaHdfam9iX3Jlc2V0KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAq c2NoZWQsDQo+Pj4+Pj4+Pj4gc3RydWN0DQo+Pj4+Pj4+Pj4gZHJtX3NjaGVkX2pvYiAqYmFkKQ0K Pj4+Pj4+Pj4+ICt2b2lkIGRybV9zY2hlZF9zdG9wKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAq c2NoZWQsIHN0cnVjdA0KPj4+Pj4+Pj4+IGRybV9zY2hlZF9qb2IgKmJhZCkNCj4+Pj4+Pj4+PiDC oMKgwqDCoCDCoCB7DQo+Pj4+Pj4+Pj4gLcKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc19q b2I7DQo+Pj4+Pj4+Pj4gLcKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5LCAq dG1wOw0KPj4+Pj4+Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9zY2hlZF9qb2IgKnNfam9iLCAqbGFz dF9qb2I7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIGZsYWdz Ow0KPj4+Pj4+Pj4+IC3CoMKgwqAgaW50IGk7DQo+Pj4+Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgZG1h X2ZlbmNlICp3YWl0X2ZlbmNlID3CoCBOVUxMOw0KPj4+Pj4+Pj4+ICvCoMKgwqAgaW50IHI7DQo+ Pj4+Pj4+Pj4gKw0KPj4+Pj4+Pj4+ICvCoMKgwqAga3RocmVhZF9wYXJrKHNjaGVkLT50aHJlYWQp Ow0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgICvCoMKgwqAgLyoNCj4+Pj4+Pj4+PiArwqDCoMKgwqAg KiBWZXJpZnkgYWxsIHRoZSBzaWduYWxlZCBqb2JzIGluIG1pcnJvciBsaXN0IGFyZSByZW1vdmVk DQo+Pj4+Pj4+Pj4gZnJvbQ0KPj4+Pj4+Pj4+IHRoZSByaW5nDQo+Pj4+Pj4+Pj4gK8KgwqDCoMKg ICogYnkgd2FpdGluZyBmb3IgdGhlaXIgcmVzcGVjdGl2ZSBzY2hlZHVsZXIgZmVuY2VzIHRvIA0K Pj4+Pj4+Pj4+IHNpZ25hbC4NCj4+Pj4+Pj4+PiArwqDCoMKgwqAgKiBDb250aW51YWxsecKgIHJl cGVhdCB0cmF2ZXJzaW5nIHRoZSByaW5nIG1pcnJvciBsaXN0DQo+Pj4+Pj4+Pj4gdW50aWwgbm8N Cj4+Pj4+Pj4+PiBtb3JlIHNpZ25hbGVkDQo+Pj4+Pj4+Pj4gK8KgwqDCoMKgICogZmVuY2VzIGFy ZSBmb3VuZA0KPj4+Pj4+Pj4+ICvCoMKgwqDCoCAqLw0KPj4+Pj4+Pj4+ICtyZXRyeV93YWl0Og0K Pj4+Pj4+Pj4+IHNwaW5fbG9ja19pcnFzYXZlKCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxhZ3Mp Ow0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqAgbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZl cnNlKHNfam9iLA0KPj4+Pj4+Pj4+ICZzY2hlZC0+cmluZ19taXJyb3JfbGlzdCwNCj4+Pj4+Pj4+ PiBub2RlKSB7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChzX2pv Yi0+c19mZW5jZS0+cGFyZW50ICYmDQo+Pj4+Pj4+Pj4gQEAgLTM1NywzNSArNDAwLDQ1IEBAIHZv aWQgZHJtX3NjaGVkX2h3X2pvYl9yZXNldChzdHJ1Y3QNCj4+Pj4+Pj4+PiBkcm1fZ3B1X3NjaGVk dWxlciAqc2NoZWQsIHN0cnVjdCBkcm1fc2NoZWRfam8NCj4+Pj4+Pj4+PiBkbWFfZmVuY2VfcHV0 KHNfam9iLT5zX2ZlbmNlLT5wYXJlbnQpOw0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHNfam9iLT5zX2ZlbmNlLT5wYXJlbnQgPSBOVUxMOw0KPj4+Pj4+Pj4+ IGF0b21pY19kZWMoJnNjaGVkLT5od19ycV9jb3VudCk7DQo+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDC oMKgIH0gZWxzZSB7DQo+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3YWl0X2Zl bmNlID0NCj4+Pj4+Pj4+PiBkbWFfZmVuY2VfZ2V0KCZzX2pvYi0+c19mZW5jZS0+ZmluaXNoZWQp Ow0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGFzdF9qb2IgPSBzX2pvYjsN Cj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+Pj4+Pj4+IMKg wqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDC oCB9DQo+Pj4+Pj4+Pj4gLSBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzY2hlZC0+am9iX2xpc3Rf bG9jaywgZmxhZ3MpOw0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIC3CoMKgwqAgaWYgKGJhZCAmJiBi YWQtPnNfcHJpb3JpdHkgIT0NCj4+Pj4+Pj4+PiBEUk1fU0NIRURfUFJJT1JJVFlfS0VSTkVMKSB7 DQo+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGF0b21pY19pbmMoJmJhZC0+a2FybWEpOw0KPj4+ Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCAvKiBkb24ndCBpbmNyZWFzZSBAYmFkJ3Mga2FybWEgaWYg aXQncyBmcm9tIEtFUk5FTCBSUSwNCj4+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoCAqIGJlY3Vh c2Ugc29tZXRpbWVzIEdQVSBoYW5nIHdvdWxkIGNhdXNlIGtlcm5lbCBqb2JzDQo+Pj4+Pj4+Pj4g KGxpa2UNCj4+Pj4+Pj4+PiBWTSB1cGRhdGluZyBqb2JzKQ0KPj4+Pj4+Pj4+IC3CoMKgwqDCoMKg wqDCoMKgICogY29ycnVwdCBidXQga2VlcCBpbiBtaW5kIHRoYXQga2VybmVsIGpvYnMgYWx3YXlz DQo+Pj4+Pj4+Pj4gY29uc2lkZXJlZCBnb29kLg0KPj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKg ICovDQo+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGZvciAoaSA9IERSTV9TQ0hFRF9QUklPUklU WV9NSU47IGkgPA0KPj4+Pj4+Pj4+IERSTV9TQ0hFRF9QUklPUklUWV9LRVJORUw7IGkrKyApIHsN Cj4+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX3JxICpy cSA9ICZzY2hlZC0+c2NoZWRfcnFbaV07DQo+Pj4+Pj4+Pj4gK8KgwqDCoCAvKiBObyBzaWduYWxl ZCBqb2JzIGluIHRoZSByaW5nLCBpdHMgc2FmZSB0byBwcm9jZWVkIHRvIEFTSUMNCj4+Pj4+Pj4+ PiByZXNldCAqLw0KPj4+Pj4+Pj4+ICvCoMKgwqAgaWYgKCF3YWl0X2ZlbmNlKSB7DQo+Pj4+Pj4+ Pj4gKyBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxhZ3Mp Ow0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIGRvbmU7DQo+Pj4+Pj4+Pj4gK8KgwqDC oCB9DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqAgLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Bpbl9s b2NrKCZycS0+bG9jayk7DQo+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKGVudGl0eSwgdG1wLCAmcnEtPmVudGl0aWVzLA0KPj4+Pj4+Pj4+ IGxpc3QpIHsNCj4+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChi YWQtPnNfZmVuY2UtPnNjaGVkdWxlZC5jb250ZXh0ID09DQo+Pj4+Pj4+Pj4gZW50aXR5LT5mZW5j ZV9jb250ZXh0KSB7DQo+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlmIChhdG9taWNfcmVhZCgmYmFkLT5rYXJtYSkgPg0KPj4+Pj4+Pj4+IGJhZC0+c2No ZWQtPmhhbmdfbGltaXQpDQo+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaWYgKGVudGl0eS0+Z3VpbHR5KQ0KPj4+Pj4+Pj4+IC0gYXRvbWlj X3NldChlbnRpdHktPmd1aWx0eSwgMSk7DQo+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfQ0KPj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+Pj4+ Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcGluX3VubG9jaygmcnEtPmxvY2spOw0KPj4+ Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgmZW50aXR5LT5saXN0ICE9ICZycS0+ ZW50aXRpZXMpDQo+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVh azsNCj4+Pj4+Pj4+PiArwqDCoMKgIC8qIFJlc3RvcmUgcmVtb3ZlZCBjYiBzaW5jZSByZW1vdmlu ZyBhZ2FpbiBhbHJlYWR5IHJlbW92ZWQNCj4+Pj4+Pj4+PiBjYiBpcw0KPj4+Pj4+Pj4+IHVuZGVm aW5lZCAqLw0KPj4+Pj4+Pj4+ICvCoMKgwqAgbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKHNf am9iLCAmc2NoZWQtPnJpbmdfbWlycm9yX2xpc3QsDQo+Pj4+Pj4+Pj4gbm9kZSkgew0KPj4+Pj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZihzX2pvYiA9PSBsYXN0X2pvYikNCj4+Pj4+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+Pj4+Pj4+IE5lZWQgdG8gZG91YmxlIGNoZWNr IGFmdGVyIHRoZSBob2xpZGF5cywgYnV0IHlvdSBzaG91bGQgYmUgYWJsZQ0KPj4+Pj4+Pj4gdG8g dXNlDQo+Pj4+Pj4+PiBsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlIGhlcmUuDQo+Pj4+Pj4+ IEkgdGhpbmsgaXQgc2hvdWxkIHdvcmsgLSBraW5kIG9mIHRyYXZlcnNpbmcgYmFjayBvbiBhbGwg dGhlIGpvYnMNCj4+Pj4+Pj4gd2UganVzdA0KPj4+Pj4+PiByZW1vdmVkIHRoZWlyIGNhbGxiYWNr cy4NCj4+Pj4+PiBXcmFwcGluZyB5b3VyIGhlYWQgYXJvdW5kIHN0dWZmIGFnYWluIGFmdGVyIHRo ZSBob2xpZGF5cyBzb21ldGltZXMNCj4+Pj4+PiBzaG93cw0KPj4+Pj4+IG5ldyBwcm9ibGVtcyB3 ZSBoYXZlIGNvbXBsZXRlbHkgbWlzc2VkIDopDQo+Pj4+Pj4NCj4+Pj4+PiBBZGRpbmcgdGhlIGNh bGxiYWNrcyBhZ2FpbiB3b24ndCB3b3JrIGJlY2F1c2Ugd2UgaGF2ZSBmcmVlZCB1cCBvdXINCj4+ Pj4+PiByZWZlcmVuY2UgdG8gdGhlIGhhcmR3YXJlIGZlbmNlIGFib3ZlOg0KPj4+Pj4+PiBkbWFf ZmVuY2VfcHV0KHNfam9iLT5zX2ZlbmNlLT5wYXJlbnQpOw0KPj4+Pj4+PiDCoMKgwqDCoCDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzX2pvYi0+c19mZW5jZS0+cGFyZW50ID0gTlVMTDsNCj4+ Pj4+PiBXZSBuZWVkIHRvIGRyb3AgdGhpcyBvciB3ZSB3b3VsZCBuZXZlciBiZSBhYmxlIHRvIHJl LWFkZCB0aGUgZmVuY2VzDQo+Pj4+PiBZZWEsIHRoYXQgYSBiaWcgbWlzcyBvbiBteSBzaWRlLi4u DQo+Pj4+Pg0KPj4+Pj4+IC4NCj4+Pj4+Pg0KPj4+Pj4+IEJ1dCBJJ20gc3RpbGwgbm90IHN1cmUg aWYgd2Ugc2hvdWxkbid0IHJlbHkgb24gdGhlIGNvcnJlY3Qgb3JkZXIgb2YNCj4+Pj4+PiBzaWdu YWxpbmcgYW5kIHNpbXBsaWZ5IHRoaXMgaW5zdGVhZC4NCj4+Pj4+IEFzIHlvdSBzYWlkIGJlZm9y ZSwgb25jZSB3ZSBzd2l0Y2hlZCB0byBzaWduYWxpbmcgdGhlIHBhcmVudCBmcm9tIHRoZQ0KPj4+ Pj4gaW50ZXJydXB0IGNvbnRleHQgaW5zdGVhZCBvZiBzY2hlZHVsZWQgd29yayBubyBkYW5nZXIg b2YgcmFjZSB0aGVyZQ0KPj4+PiBDb3JyZWN0aW9uIGhlcmUgLSBvbmNlIHdlIHN3aXRjaGVkIHJl bW92aW5nIHRoZSBqb2IgZnJvbSBtaXJyb3JfcmluZw0KPj4+PiBsaXN0IGRpcmVjdGx5IGluIGlu dGVycnVwdCBjb250ZXh0IGluc3RlYWQgbGF0ZXIgZnJvbSBzY2hlZHVsZWQgd29yaw0KPj4+IE9r LCBzbyBsZXQncyBzdGljayB3aXRoIHRoZSBhcHByb2FjaCBvZiBvbmx5IHdhaXRpbmcgZm9yIHRo ZSBmaXJzdA0KPj4+IHNpZ25hbGVkIG9uZSBmb3VuZC4NCj4+Pg0KPj4+IEJ1dCB3ZSBuZWVkIHRv IHJlbW92ZSBzZXR0aW5nIHRoZSBwYXJlbnQgZmVuY2UgdG8gTlVMTCBvciBvdGhlcndpc2Ugd2UN Cj4+PiB3b24ndCBiZSBhYmxlIHRvIGFkZCB0aGUgY2FsbGJhY2sgZXZlciBhZ2Fpbi4NCj4+Pg0K Pj4+IENocmlzdGlhbi4NCj4+IEJ1dCB3ZSB3aWxsIG5vdCBiZSBhZGRpbmcgdGhlIGNiIGJhY2sg aW4gZHJtX3NjaGVkX3N0b3AgYW55bW9yZSwgbm93IHdlDQo+PiBhcmUgb25seSBnb2luZyB0byBh ZGQgYmFjayB0aGUgY2IgaW4gZHJtX3NjaGVkX3N0YXJ0ciBhZnRlciByZXJ1bm5pbmcNCj4+IHRo b3NlIGpvYnMgaW4gZHJtX3NjaGVkX3Jlc3VibWl0X2pvYnMgYW5kIGFzc2lnbiB0aGVtIGEgbmV3 IHBhcmVudCB0aGVyZQ0KPj4gYW55d2F5Lg0KPg0KPiBZZWFoLCBidXQgd2hlbiB3ZSBmaW5kIHRo YXQgd2UgZG9uJ3QgbmVlZCB0byByZXNldCBhbnl0aGluZyBhbnltb3JlIA0KPiB0aGVuIGFkZGlu ZyB0aGUgY2FsbGJhY2tzIGFnYWluIHdvbid0IGJlIHBvc3NpYmxlIGFueSBtb3JlLg0KPg0KPiBD aHJpc3RpYW4uDQoNCkkgYW0gbm90IHN1cmUgSSB1bmRlcnN0YW5kIGl0LCBjYW4gdSBwb2ludCBt ZSB0byBleGFtcGxlIG9mIGhvdyB0aGlzIA0Kd2lsbCBoYXBwZW4gPyBJIGFtIGF0dGFjaGluZyBt eSBsYXRlc3QgcGF0Y2hlcyB3aXRoIHdhaXRpbmcgb25seSBmb3IgdGhlIA0KbGFzdCBqb2IncyBm ZW5jZSBoZXJlIGp1c3Qgc28gd2UgYXJlIG9uIHNhbWUgcGFnZSByZWdhcmRpbmcgdGhlIGNvZGUu DQoNCkFuZHJleQ0KDQo+DQo+Pg0KPj4gQW5kcmV5DQo+Pg0KPj4+PiBBbmRyZXkNCj4+Pj4NCj4+ Pj4+ICwgc28NCj4+Pj4+IHdoYXQgaWYgd2Ugc3VibWl0IGpvYiBBIGFuZCBhZnRlciBpdCBqb2Ig QiBhbmQgQiBjb21wbGV0ZXMgYmVmb3JlIEENCj4+Pj4+IChsaWtlIHRoZSBzeW5jIGRlcGVuZGVu Y3kgdGVzdCBpbiBsaWJkcm0gYW1kZ3B1IHRlc3RzIGJ1dCB3aXRob3V0DQo+Pj4+PiBhZGRpbmcN Cj4+Pj4+IGV4cGxpY2l0IGRlcGVuZGVuY3kgdG8gdGhlIHNlY29uZCBjb21tYW5kIG9uIHRoZSBm aXJzdCkgSSBiZWxpZXZlIA0KPj4+Pj4gdGhhdA0KPj4+Pj4gc3RpbGwgaW4gdGhpcyBjYXNlIGpv YiBCJ3MgcGFyZW50IChIVykgZmVuY2Ugd2lsbCBub3QgYmUgc2lnbmFsZWQNCj4+Pj4+IGJlZm9y ZQ0KPj4+Pj4gam9iIEEgY29tcGxldGVzIHNpbmNlIEVPUCBldmVudCBpcyBub3Qgc2lnbmFsZWQg dW50aWwgdGhlIGVudGlyZSBwaXBlDQo+Pj4+PiBjb21wbGV0ZWQgYW5kIGZsdXNoZWQgaXQncyBj YXNoZXMgaW5jbHVkaW5nIGpvYiBBLiBTbyBmcm9tIHRoaXMNCj4+Pj4+IHNlZW1zIHRvDQo+Pj4+ PiBtZSB0aGF0IGluZGVlZCBpdCdzIGVub3VnaCB0byB3YWl0IGZvciB0aGUgbGFzdCBpbnNlcnRl ZCBqb2IncyBwYXJlbnQNCj4+Pj4+IChIVykgZmVuY2UgaW4gcmluZyBtaXJyb3IgbGlzdCB0byBz aWduYWwuDQo+Pj4+PiBMZXQgbWUga25vdyB3aGF0IHlvdSB0aGluayBvbiB0aGF0Lg0KPj4+Pj4N Cj4+Pj4+IFAuUyBWNSBpcyBub3QgdGhlIGxhc3QgaXRlcmF0aW9uIGFuZCB0aGVyZSB3YXMgVjYg c2VyaWVzLg0KPj4+Pj4NCj4+Pj4+IEFuZHJleQ0KPj4+Pj4NCj4+Pj4+PiBSZWdhcmRzLA0KPj4+ Pj4+IENocmlzdGlhbi4NCj4+Pj4+Pg0KPj4+Pj4+PiBBbmRyZXkNCj4+Pj4+Pj4NCj4+Pj4+Pj4+ PiArDQo+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChzX2pvYi0+c19mZW5jZS0+cGFyZW50 KSB7DQo+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgciA9IGRtYV9mZW5jZV9hZGRf Y2FsbGJhY2soc19qb2ItPnNfZmVuY2UtPnBhcmVudCwNCj4+Pj4+Pj4+PiArICZzX2pvYi0+c19m ZW5jZS0+Y2IsDQo+Pj4+Pj4+Pj4gKyBkcm1fc2NoZWRfcHJvY2Vzc19qb2IpOw0KPj4+Pj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyKQ0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJmZW5jZSByZXN0b3JlIGNhbGxiYWNrIGZhaWxl ZCANCj4+Pj4+Pj4+PiAoJWQpXG4iLA0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByKTsN Cj4+Pj4+Pj4+IFdoZW4geW91IGZhaWwgdG8gYWRkIHRoZSBjYWxsYmFjayB0aGlzIG1lYW5zIHRo YXQgeW91IG5lZWQgdG8gY2FsbA0KPj4+Pj4+Pj4gY2FsbCBkcm1fc2NoZWRfcHJvY2Vzc19qb2Ig bWFudWFsbHkgaGVyZS4NCj4+Pj4+Pj4+DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoMKg wqDCoMKgIH0NCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgIH0NCj4+Pj4+Pj4+PiArIHNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7DQo+Pj4+ Pj4+Pj4gKw0KPj4+Pj4+Pj4+ICvCoMKgwqAgZG1hX2ZlbmNlX3dhaXQod2FpdF9mZW5jZSwgZmFs c2UpOw0KPj4+Pj4+Pj4+ICvCoMKgwqAgZG1hX2ZlbmNlX3B1dCh3YWl0X2ZlbmNlKTsNCj4+Pj4+ Pj4+PiArwqDCoMKgIHdhaXRfZmVuY2UgPSBOVUxMOw0KPj4+Pj4+Pj4+ICsNCj4+Pj4+Pj4+PiAr wqDCoMKgIGdvdG8gcmV0cnlfd2FpdDsNCj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4gK2RvbmU6DQo+ Pj4+Pj4+Pj4gK8KgwqDCoCByZXR1cm47DQo+Pj4+Pj4+PiBEcm9wIHRoZSBkb25lOiBsYWJlbCBh bmQgcmV0dXJuIGRpcmVjdGx5IGFib3ZlLg0KPj4+Pj4+Pj4NCj4+Pj4+Pj4+IEFwYXJ0IGZyb20g YWxsIHRob3NlIG5pdCBwaWNrcyB0aGF0IHN0YXJ0cyB0byBsb29rIGxpa2UgaXQgc2hvdWxkDQo+ Pj4+Pj4+PiB3b3JrLA0KPj4+Pj4+Pj4gQ2hyaXN0aWFuLg0KPj4+Pj4+Pj4NCj4+Pj4+Pj4+PiDC oMKgwqDCoCDCoCB9DQo+Pj4+Pj4+Pj4gLUVYUE9SVF9TWU1CT0woZHJtX3NjaGVkX2h3X2pvYl9y ZXNldCk7DQo+Pj4+Pj4+Pj4gK0VYUE9SVF9TWU1CT0woZHJtX3NjaGVkX3N0b3ApOw0KPj4+Pj4+ Pj4+IMKgwqDCoMKgIMKgIMKgIC8qKg0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqAgKiBkcm1fc2No ZWRfam9iX3JlY292ZXJ5IC0gcmVjb3ZlciBqb2JzIGFmdGVyIGEgcmVzZXQNCj4+Pj4+Pj4+PiBA QCAtMzkzLDMzICs0NDYsMjEgQEAgRVhQT1JUX1NZTUJPTChkcm1fc2NoZWRfaHdfam9iX3Jlc2V0 KTsNCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgICogQHNjaGVkOiBzY2hlZHVsZXIgaW5zdGFuY2UN Cj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgICoNCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgICovDQo+ Pj4+Pj4+Pj4gLXZvaWQgZHJtX3NjaGVkX2pvYl9yZWNvdmVyeShzdHJ1Y3QgZHJtX2dwdV9zY2hl ZHVsZXIgKnNjaGVkKQ0KPj4+Pj4+Pj4+ICt2b2lkIGRybV9zY2hlZF9zdGFydChzdHJ1Y3QgZHJt X2dwdV9zY2hlZHVsZXIgKnNjaGVkLCBib29sDQo+Pj4+Pj4+Pj4gZnVsbF9yZWNvdmVyeSkNCj4+ Pj4+Pj4+PiDCoMKgwqDCoCDCoCB7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoCBzdHJ1 Y3QgZHJtX3NjaGVkX2pvYiAqc19qb2IsICp0bXA7DQo+Pj4+Pj4+Pj4gLcKgwqDCoCBib29sIGZv dW5kX2d1aWx0eSA9IGZhbHNlOw0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqAgdW5zaWdu ZWQgbG9uZyBmbGFnczsNCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgIGludCByOw0KPj4+ Pj4+Pj4+IMKgwqDCoMKgIMKgICvCoMKgwqAgaWYgKCFmdWxsX3JlY292ZXJ5KQ0KPj4+Pj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBnb3RvIHVucGFyazsNCj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4gc3Bp bl9sb2NrX2lycXNhdmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7DQo+Pj4+Pj4+Pj4g wqDCoMKgwqAgwqDCoMKgwqDCoCBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc19qb2IsIHRtcCwN Cj4+Pj4+Pj4+PiAmc2NoZWQtPnJpbmdfbWlycm9yX2xpc3QsDQo+Pj4+Pj4+Pj4gbm9kZSkgew0K Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2Zl bmNlICpzX2ZlbmNlID0gc19qb2ItPnNfZmVuY2U7DQo+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKg IHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOw0KPj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCB1aW50 NjRfdCBndWlsdHlfY29udGV4dDsNCj4+Pj4+Pj4+PiAtDQo+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDC oMKgIGlmICghZm91bmRfZ3VpbHR5ICYmIGF0b21pY19yZWFkKCZzX2pvYi0+a2FybWEpID4NCj4+ Pj4+Pj4+PiBzY2hlZC0+aGFuZ19saW1pdCkgew0KPj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGZvdW5kX2d1aWx0eSA9IHRydWU7DQo+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZ3VpbHR5X2NvbnRleHQgPSBzX2pvYi0+c19mZW5jZS0+c2NoZWR1bGVkLmNvbnRleHQ7 DQo+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIH0NCj4+Pj4+Pj4+PiAtDQo+Pj4+Pj4+Pj4gLcKg wqDCoMKgwqDCoMKgIGlmIChmb3VuZF9ndWlsdHkgJiYgc19qb2ItPnNfZmVuY2UtPnNjaGVkdWxl ZC5jb250ZXh0ID09DQo+Pj4+Pj4+Pj4gZ3VpbHR5X2NvbnRleHQpDQo+Pj4+Pj4+Pj4gLSBkbWFf ZmVuY2Vfc2V0X2Vycm9yKCZzX2ZlbmNlLT5maW5pc2hlZCwgLUVDQU5DRUxFRCk7DQo+Pj4+Pj4+ Pj4gLQ0KPj4+Pj4+Pj4+IC0gc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2NoZWQtPmpvYl9saXN0 X2xvY2ssIGZsYWdzKTsNCj4+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgZmVuY2UgPSBzY2hlZC0+ b3BzLT5ydW5fam9iKHNfam9iKTsNCj4+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgYXRvbWljX2lu Yygmc2NoZWQtPmh3X3JxX2NvdW50KTsNCj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGRtYV9mZW5jZSAqZmVuY2UgPSBzX2pvYi0+c19mZW5jZS0+cGFyZW50Ow0KPj4+Pj4+Pj4+IMKg wqDCoMKgIMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZmVuY2UpIHsNCj4+Pj4+Pj4+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBzX2ZlbmNlLT5wYXJlbnQgPSBkbWFfZmVuY2VfZ2V0KGZlbmNl KTsNCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByID0gZG1h X2ZlbmNlX2FkZF9jYWxsYmFjayhmZW5jZSwgDQo+Pj4+Pj4+Pj4gJnNfZmVuY2UtPmNiLA0KPj4+ Pj4+Pj4+IGRybV9zY2hlZF9wcm9jZXNzX2pvYik7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHIgPT0gLUVOT0VOVCkNCj4+Pj4+Pj4+PiBAQCAtNDI3 LDE4ICs0NjgsNDcgQEAgdm9pZCBkcm1fc2NoZWRfam9iX3JlY292ZXJ5KHN0cnVjdA0KPj4+Pj4+ Pj4+IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCkNCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlIGlmIChyKQ0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJmZW5jZSBhZGQgY2FsbGJh Y2sgZmFpbGVkIA0KPj4+Pj4+Pj4+ICglZClcbiIsDQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByKTsNCj4+Pj4+Pj4+PiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkbWFfZmVuY2VfcHV0KGZlbmNlKTsNCj4+Pj4+Pj4+PiAt wqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsNCj4+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpZiAoc19mZW5jZS0+ZmluaXNoZWQuZXJyb3IgPCAwKQ0KPj4+Pj4+Pj4+IC0gZHJtX3NjaGVk X2V4cGVsX2pvYl91bmxvY2tlZChzX2pvYik7DQo+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0g ZWxzZQ0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9z Y2hlZF9wcm9jZXNzX2pvYihOVUxMLCAmc19mZW5jZS0+Y2IpOw0KPj4+Pj4+Pj4+IC3CoMKgwqDC oMKgwqDCoCB9DQo+Pj4+Pj4+Pj4gLSBzcGluX2xvY2tfaXJxc2F2ZSgmc2NoZWQtPmpvYl9saXN0 X2xvY2ssIGZsYWdzKTsNCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgIH0NCj4+Pj4+Pj4+ PiArDQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoCBkcm1fc2NoZWRfc3RhcnRfdGltZW91 dChzY2hlZCk7DQo+Pj4+Pj4+Pj4gc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2NoZWQtPmpvYl9s aXN0X2xvY2ssIGZsYWdzKTsNCj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4gK3VucGFyazoNCj4+Pj4+ Pj4+PiArwqDCoMKgIGt0aHJlYWRfdW5wYXJrKHNjaGVkLT50aHJlYWQpOw0KPj4+Pj4+Pj4+ICt9 DQo+Pj4+Pj4+Pj4gK0VYUE9SVF9TWU1CT0woZHJtX3NjaGVkX3N0YXJ0KTsNCj4+Pj4+Pj4+PiAr DQo+Pj4+Pj4+Pj4gKy8qKg0KPj4+Pj4+Pj4+ICsgKiBkcm1fc2NoZWRfcmVzdWJtaXRfam9icyAt IGhlbHBlciB0byByZWx1bmNoIGpvYiBmcm9tIG1pcnJvcg0KPj4+Pj4+Pj4+IHJpbmcNCj4+Pj4+ Pj4+PiBsaXN0DQo+Pj4+Pj4+Pj4gKyAqDQo+Pj4+Pj4+Pj4gKyAqIEBzY2hlZDogc2NoZWR1bGVy IGluc3RhbmNlDQo+Pj4+Pj4+Pj4gKyAqDQo+Pj4+Pj4+Pj4gKyAqLw0KPj4+Pj4+Pj4+ICt2b2lk IGRybV9zY2hlZF9yZXN1Ym1pdF9qb2JzKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQp DQo+Pj4+Pj4+Pj4gK3sNCj4+Pj4+Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fc2NoZWRfam9iICpz X2pvYiwgKnRtcDsNCj4+Pj4+Pj4+PiArwqDCoMKgIHVpbnQ2NF90IGd1aWx0eV9jb250ZXh0Ow0K Pj4+Pj4+Pj4+ICvCoMKgwqAgYm9vbCBmb3VuZF9ndWlsdHkgPSBmYWxzZTsNCj4+Pj4+Pj4+PiAr DQo+Pj4+Pj4+Pj4gK8KgwqDCoCAvKlRPRE8gRE8gd2UgbmVlZCBzcGlubG9jayBoZXJlID8gKi8N Cj4+Pj4+Pj4+PiArwqDCoMKgIGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzX2pvYiwgdG1wLCAN Cj4+Pj4+Pj4+PiAmc2NoZWQtPnJpbmdfbWlycm9yX2xpc3QsDQo+Pj4+Pj4+Pj4gbm9kZSkgew0K Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2ZlbmNlICpzX2ZlbmNl ID0gc19qb2ItPnNfZmVuY2U7DQo+Pj4+Pj4+Pj4gKw0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDC oCBpZiAoIWZvdW5kX2d1aWx0eSAmJiBhdG9taWNfcmVhZCgmc19qb2ItPmthcm1hKSA+DQo+Pj4+ Pj4+Pj4gc2NoZWQtPmhhbmdfbGltaXQpIHsNCj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBmb3VuZF9ndWlsdHkgPSB0cnVlOw0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGd1aWx0eV9jb250ZXh0ID0gc19qb2ItPnNfZmVuY2UtPnNjaGVkdWxlZC5jb250ZXh0Ow0K Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+Pj4+Pj4gKw0KPj4+Pj4+Pj4+ICvCoMKg wqDCoMKgwqDCoCBpZiAoZm91bmRfZ3VpbHR5ICYmIHNfam9iLT5zX2ZlbmNlLT5zY2hlZHVsZWQu Y29udGV4dCA9PQ0KPj4+Pj4+Pj4+IGd1aWx0eV9jb250ZXh0KQ0KPj4+Pj4+Pj4+ICsgZG1hX2Zl bmNlX3NldF9lcnJvcigmc19mZW5jZS0+ZmluaXNoZWQsIC1FQ0FOQ0VMRUQpOw0KPj4+Pj4+Pj4+ ICsNCj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgc19qb2ItPnNfZmVuY2UtPnBhcmVudCA9IHNj aGVkLT5vcHMtPnJ1bl9qb2Ioc19qb2IpOw0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBhdG9t aWNfaW5jKCZzY2hlZC0+aHdfcnFfY291bnQpOw0KPj4+Pj4+Pj4+ICvCoMKgwqAgfQ0KPj4+Pj4+ Pj4+IMKgwqDCoMKgIMKgIH0NCj4+Pj4+Pj4+PiAtRVhQT1JUX1NZTUJPTChkcm1fc2NoZWRfam9i X3JlY292ZXJ5KTsNCj4+Pj4+Pj4+PiArRVhQT1JUX1NZTUJPTChkcm1fc2NoZWRfcmVzdWJtaXRf am9icyk7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqAgwqAgLyoqDQo+Pj4+Pj4+Pj4gwqDCoMKgwqAg wqDCoCAqIGRybV9zY2hlZF9qb2JfaW5pdCAtIGluaXQgYSBzY2hlZHVsZXIgam9iDQo+Pj4+Pj4+ Pj4gQEAgLTYzNCwyNiArNzA0LDE0IEBAIHN0YXRpYyBpbnQgZHJtX3NjaGVkX21haW4odm9pZCAq cGFyYW0pDQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBEUk1fRVJST1IoImZlbmNlIGFkZCBjYWxsYmFjayBmYWlsZWQgDQo+Pj4+Pj4+Pj4gKCVk KVxuIiwNCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHIpOw0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGRtYV9mZW5jZV9wdXQoZmVuY2UpOw0KPj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDC oCB9IGVsc2Ugew0KPj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChzX2ZlbmNl LT5maW5pc2hlZC5lcnJvciA8IDApDQo+Pj4+Pj4+Pj4gLSBkcm1fc2NoZWRfZXhwZWxfam9iX3Vu bG9ja2VkKHNjaGVkX2pvYik7DQo+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0gZWxzZQ0KPj4+ Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9zY2hlZF9wcm9j ZXNzX2pvYihOVUxMLCAmc19mZW5jZS0+Y2IpOw0KPj4+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCB9 DQo+Pj4+Pj4+Pj4gd2FrZV91cCgmc2NoZWQtPmpvYl9zY2hlZHVsZWQpOw0KPj4+Pj4+Pj4+IMKg wqDCoMKgIMKgwqDCoMKgwqAgfQ0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqAgcmV0dXJu IDA7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqAgfQ0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIC1zdGF0 aWMgdm9pZCBkcm1fc2NoZWRfZXhwZWxfam9iX3VubG9ja2VkKHN0cnVjdA0KPj4+Pj4+Pj4+IGRy bV9zY2hlZF9qb2IgKnNfam9iKQ0KPj4+Pj4+Pj4+IC17DQo+Pj4+Pj4+Pj4gLcKgwqDCoCBzdHJ1 Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkID0gc19qb2ItPnNjaGVkOw0KPj4+Pj4+Pj4+IC0N Cj4+Pj4+Pj4+PiAtwqDCoMKgIHNwaW5fbG9jaygmc2NoZWQtPmpvYl9saXN0X2xvY2spOw0KPj4+ Pj4+Pj4+IC3CoMKgwqAgbGlzdF9kZWxfaW5pdCgmc19qb2ItPm5vZGUpOw0KPj4+Pj4+Pj4+IC3C oMKgwqAgc3Bpbl91bmxvY2soJnNjaGVkLT5qb2JfbGlzdF9sb2NrKTsNCj4+Pj4+Pj4+PiAtfQ0K Pj4+Pj4+Pj4+IC0NCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCAvKioNCj4+Pj4+Pj4+PiDCoMKgwqDC oCDCoMKgICogZHJtX3NjaGVkX2luaXQgLSBJbml0IGEgZ3B1IHNjaGVkdWxlciBpbnN0YW5jZQ0K Pj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqAgKg0KPj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdjNkL3YzZF9zY2hlZC5jDQo+Pj4+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vdjNk L3YzZF9zY2hlZC5jDQo+Pj4+Pj4+Pj4gaW5kZXggNDQ1YjJlZi4uZjc2ZDllZCAxMDA2NDQNCj4+ Pj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zY2hlZC5jDQo+Pj4+Pj4+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc2NoZWQuYw0KPj4+Pj4+Pj4+IEBAIC0xNzgs MTggKzE3OCwyMiBAQCB2M2Rfam9iX3RpbWVkb3V0KHN0cnVjdCBkcm1fc2NoZWRfam9iDQo+Pj4+ Pj4+Pj4gKnNjaGVkX2pvYikNCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgIGZvciAocSA9 IDA7IHEgPCBWM0RfTUFYX1FVRVVFUzsgcSsrKSB7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQgPQ0KPj4+Pj4+Pj4+ ICZ2M2QtPnF1ZXVlW3FdLnNjaGVkOw0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgIC3CoMKgwqDCoMKg wqDCoCBrdGhyZWFkX3Bhcmsoc2NoZWQtPnRocmVhZCk7DQo+Pj4+Pj4+Pj4gLcKgwqDCoMKgwqDC oMKgIGRybV9zY2hlZF9od19qb2JfcmVzZXQoc2NoZWQsIChzY2hlZF9qb2ItPnNjaGVkID09IA0K Pj4+Pj4+Pj4+IHNjaGVkID8NCj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgZHJtX3NjaGVkX3N0 b3Aoc2NoZWQsIChzY2hlZF9qb2ItPnNjaGVkID09IHNjaGVkID8NCj4+Pj4+Pj4+PiDCoMKgwqDC oCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzY2hlZF9qb2IgOiBOVUxMKSk7DQo+Pj4+Pj4+Pj4gKw0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKg wqDCoCBpZihzY2hlZF9qb2IpDQo+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJt X3NjaGVkX2luY3JlYXNlX2thcm1hKHNjaGVkX2pvYik7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDC oMKgwqDCoCB9DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqAgwqDCoMKgwqDCoCAvKiBnZXQgdGhlIEdQ VSBiYWNrIGludG8gdGhlIGluaXQgc3RhdGUgKi8NCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDC oMKgIHYzZF9yZXNldCh2M2QpOw0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgICvCoMKgwqAgZm9yIChx ID0gMDsgcSA8IFYzRF9NQVhfUVVFVUVTOyBxKyspDQo+Pj4+Pj4+Pj4gKyBkcm1fc2NoZWRfcmVz dWJtaXRfam9icyhzY2hlZF9qb2ItPnNjaGVkKTsNCj4+Pj4+Pj4+PiArDQo+Pj4+Pj4+Pj4gwqDC oMKgwqAgwqDCoMKgwqDCoCAvKiBVbmJsb2NrIHNjaGVkdWxlcnMgYW5kIHJlc3RhcnQgdGhlaXIg am9icy4gKi8NCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgwqDCoMKgIGZvciAocSA9IDA7IHEgPCBW M0RfTUFYX1FVRVVFUzsgcSsrKSB7DQo+Pj4+Pj4+Pj4gLSBkcm1fc2NoZWRfam9iX3JlY292ZXJ5 KCZ2M2QtPnF1ZXVlW3FdLnNjaGVkKTsNCj4+Pj4+Pj4+PiAtIGt0aHJlYWRfdW5wYXJrKHYzZC0+ cXVldWVbcV0uc2NoZWQudGhyZWFkKTsNCj4+Pj4+Pj4+PiArIGRybV9zY2hlZF9zdGFydCgmdjNk LT5xdWV1ZVtxXS5zY2hlZCwgdHJ1ZSk7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoCB9 DQo+Pj4+Pj4+Pj4gbXV0ZXhfdW5sb2NrKCZ2M2QtPnJlc2V0X2xvY2spOw0KPj4+Pj4+Pj4+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmgNCj4+Pj4+Pj4+PiBiL2luY2x1 ZGUvZHJtL2dwdV9zY2hlZHVsZXIuaA0KPj4+Pj4+Pj4+IGluZGV4IDQ3ZTE5NzkuLjVhYjJkOTcg MTAwNjQ0DQo+Pj4+Pj4+Pj4gLS0tIGEvaW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxlci5oDQo+Pj4+ Pj4+Pj4gKysrIGIvaW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxlci5oDQo+Pj4+Pj4+Pj4gQEAgLTE3 NSw2ICsxNzUsNyBAQCBzdHJ1Y3QgZHJtX3NjaGVkX2ZlbmNlDQo+Pj4+Pj4+Pj4gKnRvX2RybV9z Y2hlZF9mZW5jZShzdHJ1Y3QNCj4+Pj4+Pj4+PiBkbWFfZmVuY2UgKmYpOw0KPj4+Pj4+Pj4+IMKg wqDCoMKgIMKgwqAgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmluaXNoZWQgdG8gcmVt b3ZlIHRoZSBqb2IgZnJvbSB0aGUNCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgICogQGRybV9ncHVf c2NoZWR1bGVyLnJpbmdfbWlycm9yX2xpc3QuDQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoCAqIEBu b2RlOiB1c2VkIHRvIGFwcGVuZCB0aGlzIHN0cnVjdCB0byB0aGUNCj4+Pj4+Pj4+PiBAZHJtX2dw dV9zY2hlZHVsZXIucmluZ19taXJyb3JfbGlzdC4NCj4+Pj4+Pj4+PiArICogQGZpbmlzaF9ub2Rl OiB1c2VkIGluIGEgbGlzdCB0byB3YWl0IG9uIGJlZm9yZSByZXNldHRpbmcgdGhlDQo+Pj4+Pj4+ Pj4gc2NoZWR1bGVyDQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoCAqIEBpZDogYSB1bmlxdWUgaWQg YXNzaWduZWQgdG8gZWFjaCBqb2Igc2NoZWR1bGVkIG9uIHRoZQ0KPj4+Pj4+Pj4+IHNjaGVkdWxl ci4NCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgICogQGthcm1hOiBpbmNyZW1lbnQgb24gZXZlcnkg aGFuZyBjYXVzZWQgYnkgdGhpcyBqb2IuIElmDQo+Pj4+Pj4+Pj4gdGhpcw0KPj4+Pj4+Pj4+IGV4 Y2VlZHMgdGhlIGhhbmcNCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoMKgICrCoMKgwqDCoMKgwqDCoMKg IGxpbWl0IG9mIHRoZSBzY2hlZHVsZXIgdGhlbiB0aGUgam9iIGlzIG1hcmtlZA0KPj4+Pj4+Pj4+ IGd1aWx0eSBhbmQNCj4+Pj4+Pj4+PiB3aWxsIG5vdA0KPj4+Pj4+Pj4+IEBAIC0xOTMsNiArMTk0 LDcgQEAgc3RydWN0IGRybV9zY2hlZF9qb2Igew0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKg wqAgc3RydWN0IGRtYV9mZW5jZV9jYsKgwqDCoMKgwqDCoMKgIGZpbmlzaF9jYjsNCj4+Pj4+Pj4+ PiDCoMKgwqDCoCDCoMKgwqDCoMKgIHN0cnVjdCB3b3JrX3N0cnVjdMKgwqDCoMKgwqDCoMKgIGZp bmlzaF93b3JrOw0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKgwqDCoMKgwqAgc3RydWN0IGxpc3RfaGVh ZMKgwqDCoMKgwqDCoMKgIG5vZGU7DQo+Pj4+Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgbGlzdF9oZWFk wqDCoMKgwqDCoMKgwqAgZmluaXNoX25vZGU7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAgwqDCoMKgwqDC oCB1aW50NjRfdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWQ7DQo+Pj4+Pj4+Pj4gwqDCoMKgwqAg wqDCoMKgwqDCoCBhdG9taWNfdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga2FybWE7DQo+Pj4+Pj4+ Pj4gwqDCoMKgwqAgwqDCoMKgwqDCoCBlbnVtIGRybV9zY2hlZF9wcmlvcml0eSBzX3ByaW9yaXR5 Ow0KPj4+Pj4+Pj4+IEBAIC0yOTgsOSArMzAwLDExIEBAIGludCBkcm1fc2NoZWRfam9iX2luaXQo c3RydWN0IGRybV9zY2hlZF9qb2INCj4+Pj4+Pj4+PiAqam9iLA0KPj4+Pj4+Pj4+IMKgwqDCoMKg IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZvaWQgKm93bmVyKTsNCj4+Pj4+Pj4+ PiDCoMKgwqDCoCDCoCB2b2lkIGRybV9zY2hlZF9qb2JfY2xlYW51cChzdHJ1Y3QgZHJtX3NjaGVk X2pvYiAqam9iKTsNCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCB2b2lkIGRybV9zY2hlZF93YWtldXAo c3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCk7DQo+Pj4+Pj4+Pj4gLXZvaWQgZHJtX3Nj aGVkX2h3X2pvYl9yZXNldChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLA0KPj4+Pj4+ Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9zY2hlZF9qb2Ig KmpvYik7DQo+Pj4+Pj4+Pj4gLXZvaWQgZHJtX3NjaGVkX2pvYl9yZWNvdmVyeShzdHJ1Y3QgZHJt X2dwdV9zY2hlZHVsZXIgKnNjaGVkKTsNCj4+Pj4+Pj4+PiArdm9pZCBkcm1fc2NoZWRfc3RvcChz dHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLA0KPj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN0cnVjdCBkcm1fc2NoZWRfam9iICpqb2IpOw0KPj4+Pj4+Pj4+ICt2b2lkIGRy bV9zY2hlZF9zdGFydChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLCBib29sDQo+Pj4+ Pj4+Pj4gZnVsbF9yZWNvdmVyeSk7DQo+Pj4+Pj4+Pj4gK3ZvaWQgZHJtX3NjaGVkX3Jlc3VibWl0 X2pvYnMoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCk7DQo+Pj4+Pj4+Pj4gK3ZvaWQg ZHJtX3NjaGVkX2luY3JlYXNlX2thcm1hKHN0cnVjdCBkcm1fc2NoZWRfam9iICpiYWQpOw0KPj4+ Pj4+Pj4+IMKgwqDCoMKgIMKgIGJvb2wgZHJtX3NjaGVkX2RlcGVuZGVuY3lfb3B0aW1pemVkKHN0 cnVjdCBkbWFfZmVuY2UqIA0KPj4+Pj4+Pj4+IGZlbmNlLA0KPj4+Pj4+Pj4+IMKgwqDCoMKgIMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVk X2VudGl0eSAqZW50aXR5KTsNCj4+Pj4+Pj4+PiDCoMKgwqDCoCDCoCB2b2lkIGRybV9zY2hlZF9m YXVsdChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKTsNCj4+Pj4+Pj4+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+Pj4+Pj4+PiBhbWQtZ2Z4 IG1haWxpbmcgbGlzdA0KPj4+Pj4+Pj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+ Pj4+Pj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1k LWdmeA0KPj4+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fDQo+Pj4+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QNCj4+Pj4+PiBhbWQtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZw0KPj4+Pj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vYW1kLWdmeA0KPj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18NCj4+Pj4+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QNCj4+Pj4+IGRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+Pj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsDQo+Pj4+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+Pj4+IGRyaS1kZXZlbCBtYWlsaW5n IGxpc3QNCj4+Pj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPj4+PiBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA0KPj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+IGFtZC1nZngg bWFpbGluZyBsaXN0DQo+PiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPj4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4DQo+DQoNCg== --_003_ea37c55fee56cce7a4e11a599642c54camdcom_ Content-Type: text/x-patch; name="0001-drm-sched-Refactor-ring-mirror-list-handling.patch" Content-Description: 0001-drm-sched-Refactor-ring-mirror-list-handling.patch Content-Disposition: attachment; filename="0001-drm-sched-Refactor-ring-mirror-list-handling.patch"; size=14320; creation-date="Wed, 09 Jan 2019 15:18:18 GMT"; modification-date="Wed, 09 Jan 2019 15:18:18 GMT" Content-ID: <100E21570C7E924EA5E2818334B53397@namprd12.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBkY2IzZTE4NzNlMmM4ODE3MDU4MTUzMmQzYzQ1NjNjYjhkZTRjNGIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogQW5kcmV5IEdyb2R6b3Zza3kgPGFuZHJleS5ncm9kem92c2t5 QGFtZC5jb20+DQpEYXRlOiBUdWUsIDQgRGVjIDIwMTggMTY6NTY6MTQgLTA1MDANClN1YmplY3Q6 IGRybS9zY2hlZDogUmVmYWN0b3IgcmluZyBtaXJyb3IgbGlzdCBoYW5kbGluZy4NCg0KRGVjYXVw bGUgc2NoZWQgdGhyZWFkcyBzdG9wIGFuZCBzdGFydCBhbmQgcmluZyBtaXJyb3INCmxpc3QgaGFu ZGxpbmcgZnJvbSB0aGUgcG9saWN5IG9mIHdoYXQgdG8gZG8gYWJvdXQgdGhlDQpndWlsdHkgam9i cy4NCldoZW4gc3RvcHBwaW5nIHRoZSBzY2hlZCB0aHJlYWQgYW5kIGRldGFjaGluZyBzY2hlZCBm ZW5jZXMNCmZyb20gbm9uIHNpZ25hbGVkIEhXIGZlbmVzIHdhaXQgZm9yIGFsbCBzaWduYWxlZCBI VyBmZW5jZXMNCnRvIGNvbXBsZXRlIGJlZm9yZSByZXJ1bm5pbmcgdGhlIGpvYnMuDQoNCnYyOiBG aXggcmVzdWJtaXNzaW9uIG9mIGd1aWx0eSBqb2IgaW50byBIVyBhZnRlciByZWZhY3RvcmluZy4N Cg0KdjQ6DQpGdWxsIHJlc3RhcnQgZm9yIGFsbCB0aGUgam9icywgbm90IG9ubHkgZnJvbSBndWls dHkgcmluZy4NCkV4dHJhY3Qga2FybWEgaW5jcmVhc2UgaW50byBzdGFuZGFsb25lIGZ1bmN0aW9u Lg0KDQp2NToNClJld29yayB3YWl0aW5nIGZvciBzaWduYWxlZCBqb2JzIHdpdGhvdXQgcmVseWlu ZyBvbiB0aGUgam9iDQpzdHJ1Y3QgaXRzZWxmIGFzIHRob3NlIG1pZ2h0IGFscmVhZHkgYmUgZnJl ZWQgZm9yIG5vbiAnZ3VpbHR5Jw0Kam9iJ3Mgc2NoZWR1bGVycy4NCkV4cG9zZSBrYXJtYSBpbmNy ZWFzZSB0byBkcml2ZXJzLg0KDQp2NjoNClVzZSBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmVfY29u dGludWUgYW5kIGRybV9zY2hlZF9wcm9jZXNzX2pvYg0KaW4gY2FzZSBmZW5jZSBhbHJlYWR5IHNp Z25hbGVkLg0KQ2FsbCBkcm1fc2NoZWRfaW5jcmVhc2Vfa2FybWEgb25seSBvbmNlIGZvciBhbWRn cHUgYW5kIGFkZCBkb2N1bWVudGF0aW9uLg0KDQp2NzoNCldhaXQgb25seSBmb3IgdGhlIGxhdGVz dCBqb2IncyBmZW5jZS4NCg0KU3VnZ2VzdGVkLWJ5OiBDaHJpc3RpYW4gS29lbmlnIDxDaHJpc3Rp YW4uS29lbmlnQGFtZC5jb20+DQpTaWduZWQtb2ZmLWJ5OiBBbmRyZXkgR3JvZHpvdnNreSA8YW5k cmV5Lmdyb2R6b3Zza3lAYW1kLmNvbT4NCi0tLQ0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9kZXZpY2UuYyB8ICAyMCArKy0tDQogZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRu YXZpdl9zY2hlZC5jICAgIHwgIDExICstDQogZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9zY2hl ZF9tYWluLmMgICAgIHwgMTcyICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tDQogZHJpdmVy cy9ncHUvZHJtL3YzZC92M2Rfc2NoZWQuYyAgICAgICAgICAgIHwgIDEyICstDQogaW5jbHVkZS9k cm0vZ3B1X3NjaGVkdWxlci5oICAgICAgICAgICAgICAgIHwgICA4ICstDQogNSBmaWxlcyBjaGFu Z2VkLCAxMzQgaW5zZXJ0aW9ucygrKSwgODkgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCmluZGV4IDdmZjNhMjguLmEyMDdjNmIgMTAw NjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYw0KQEAgLTMyOTgs MTcgKzMyOTgsMTUgQEAgc3RhdGljIGludCBhbWRncHVfZGV2aWNlX3ByZV9hc2ljX3Jlc2V0KHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KIAkJaWYgKCFyaW5nIHx8ICFyaW5nLT5zY2hlZC50 aHJlYWQpDQogCQkJY29udGludWU7DQogDQotCQlrdGhyZWFkX3BhcmsocmluZy0+c2NoZWQudGhy ZWFkKTsNCi0NCi0JCWlmIChqb2IgJiYgam9iLT5iYXNlLnNjaGVkICE9ICZyaW5nLT5zY2hlZCkN Ci0JCQljb250aW51ZTsNCi0NCi0JCWRybV9zY2hlZF9od19qb2JfcmVzZXQoJnJpbmctPnNjaGVk LCBqb2IgPyAmam9iLT5iYXNlIDogTlVMTCk7DQorCQlkcm1fc2NoZWRfc3RvcCgmcmluZy0+c2No ZWQsIGpvYiA/ICZqb2ItPmJhc2UgOiBOVUxMKTsNCiANCiAJCS8qIGFmdGVyIGFsbCBodyBqb2Jz IGFyZSByZXNldCwgaHcgZmVuY2UgaXMgbWVhbmluZ2xlc3MsIHNvIGZvcmNlX2NvbXBsZXRpb24g Ki8NCiAJCWFtZGdwdV9mZW5jZV9kcml2ZXJfZm9yY2VfY29tcGxldGlvbihyaW5nKTsNCiAJfQ0K IA0KKwlpZihqb2IpDQorCQlkcm1fc2NoZWRfaW5jcmVhc2Vfa2FybWEoJmpvYi0+YmFzZSk7DQor DQogDQogDQogCWlmICghYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKSB7DQpAQCAtMzQ1NCwxNCArMzQ1 MiwxMCBAQCBzdGF0aWMgdm9pZCBhbWRncHVfZGV2aWNlX3Bvc3RfYXNpY19yZXNldChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwNCiAJCWlmICghcmluZyB8fCAhcmluZy0+c2NoZWQudGhyZWFk KQ0KIAkJCWNvbnRpbnVlOw0KIA0KLQkJLyogb25seSBuZWVkIHJlY292ZXJ5IHNjaGVkIG9mIHRo ZSBnaXZlbiBqb2IncyByaW5nDQotCQkgKiBvciBhbGwgcmluZ3MgKGluIHRoZSBjYXNlIEBqb2Ig aXMgTlVMTCkNCi0JCSAqIGFmdGVyIGFib3ZlIGFtZGdwdV9yZXNldCBhY2NvbXBsaXNoZWQNCi0J CSAqLw0KLQkJaWYgKCgham9iIHx8IGpvYi0+YmFzZS5zY2hlZCA9PSAmcmluZy0+c2NoZWQpICYm ICFhZGV2LT5hc2ljX3Jlc2V0X3JlcykNCi0JCQlkcm1fc2NoZWRfam9iX3JlY292ZXJ5KCZyaW5n LT5zY2hlZCk7DQorCQlpZiAoIWFkZXYtPmFzaWNfcmVzZXRfcmVzKQ0KKwkJCWRybV9zY2hlZF9y ZXN1Ym1pdF9qb2JzKCZyaW5nLT5zY2hlZCk7DQogDQotCQlrdGhyZWFkX3VucGFyayhyaW5nLT5z Y2hlZC50aHJlYWQpOw0KKwkJZHJtX3NjaGVkX3N0YXJ0KCZyaW5nLT5zY2hlZCwgIWFkZXYtPmFz aWNfcmVzZXRfcmVzKTsNCiAJfQ0KIA0KIAlpZiAoIWFtZGdwdV9kZXZpY2VfaGFzX2RjX3N1cHBv cnQoYWRldikpIHsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2 X3NjaGVkLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X3NjaGVkLmMNCmluZGV4 IDQ5YTY3NjMuLjZmMTI2OGYgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9l dG5hdml2X3NjaGVkLmMNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfc2No ZWQuYw0KQEAgLTEwOSwxNiArMTA5LDE5IEBAIHN0YXRpYyB2b2lkIGV0bmF2aXZfc2NoZWRfdGlt ZWRvdXRfam9iKHN0cnVjdCBkcm1fc2NoZWRfam9iICpzY2hlZF9qb2IpDQogCX0NCiANCiAJLyog YmxvY2sgc2NoZWR1bGVyICovDQotCWt0aHJlYWRfcGFyayhncHUtPnNjaGVkLnRocmVhZCk7DQot CWRybV9zY2hlZF9od19qb2JfcmVzZXQoJmdwdS0+c2NoZWQsIHNjaGVkX2pvYik7DQorCWRybV9z Y2hlZF9zdG9wKCZncHUtPnNjaGVkLCBzY2hlZF9qb2IpOw0KKw0KKwlpZihzY2hlZF9qb2IpDQor CQlkcm1fc2NoZWRfaW5jcmVhc2Vfa2FybWEoc2NoZWRfam9iKTsNCiANCiAJLyogZ2V0IHRoZSBH UFUgYmFjayBpbnRvIHRoZSBpbml0IHN0YXRlICovDQogCWV0bmF2aXZfY29yZV9kdW1wKGdwdSk7 DQogCWV0bmF2aXZfZ3B1X3JlY292ZXJfaGFuZyhncHUpOw0KIA0KKwlkcm1fc2NoZWRfcmVzdWJt aXRfam9icygmZ3B1LT5zY2hlZCk7DQorDQogCS8qIHJlc3RhcnQgc2NoZWR1bGVyIGFmdGVyIEdQ VSBpcyB1c2FibGUgYWdhaW4gKi8NCi0JZHJtX3NjaGVkX2pvYl9yZWNvdmVyeSgmZ3B1LT5zY2hl ZCk7DQotCWt0aHJlYWRfdW5wYXJrKGdwdS0+c2NoZWQudGhyZWFkKTsNCisJZHJtX3NjaGVkX3N0 YXJ0KCZncHUtPnNjaGVkLCB0cnVlKTsNCiB9DQogDQogc3RhdGljIHZvaWQgZXRuYXZpdl9zY2hl ZF9mcmVlX2pvYihzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iKQ0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvc2NoZWRfbWFpbi5jIGIvZHJpdmVycy9ncHUvZHJt L3NjaGVkdWxlci9zY2hlZF9tYWluLmMNCmluZGV4IGRiYjY5MDYuLmU3NThmYzYgMTAwNjQ0DQot LS0gYS9kcml2ZXJzL2dwdS9kcm0vc2NoZWR1bGVyL3NjaGVkX21haW4uYw0KKysrIGIvZHJpdmVy cy9ncHUvZHJtL3NjaGVkdWxlci9zY2hlZF9tYWluLmMNCkBAIC02MCw4ICs2MCw2IEBADQogDQog c3RhdGljIHZvaWQgZHJtX3NjaGVkX3Byb2Nlc3Nfam9iKHN0cnVjdCBkbWFfZmVuY2UgKmYsIHN0 cnVjdCBkbWFfZmVuY2VfY2IgKmNiKTsNCiANCi1zdGF0aWMgdm9pZCBkcm1fc2NoZWRfZXhwZWxf am9iX3VubG9ja2VkKHN0cnVjdCBkcm1fc2NoZWRfam9iICpzX2pvYik7DQotDQogLyoqDQogICog ZHJtX3NjaGVkX3JxX2luaXQgLSBpbml0aWFsaXplIGEgZ2l2ZW4gcnVuIHF1ZXVlIHN0cnVjdA0K ICAqDQpAQCAtMzM1LDYgKzMzMyw1MSBAQCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfam9iX3RpbWVk b3V0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm c2NoZWQtPmpvYl9saXN0X2xvY2ssIGZsYWdzKTsNCiB9DQogDQorIC8qKg0KKyAgKiBkcm1fc2No ZWRfaW5jcmVhc2Vfa2FybWEgLSBVcGRhdGUgc2NoZWRfZW50aXR5IGd1aWx0eSBmbGFnDQorICAq DQorICAqIEBiYWQ6IFRoZSBqb2IgZ3VpbHR5IG9mIHRpbWUgb3V0DQorICAqDQorICAqIEluY3Jl bWVudCBvbiBldmVyeSBoYW5nIGNhdXNlZCBieSB0aGUgJ2JhZCcgam9iLiBJZiB0aGlzIGV4Y2Vl ZHMgdGhlIGhhbmcNCisgICogbGltaXQgb2YgdGhlIHNjaGVkdWxlciB0aGVuIHRoZSByZXNwZWN0 aXZlIHNjaGVkIGVudGl0eSBpcyBtYXJrZWQgZ3VpbHR5IGFuZA0KKyAgKiBqb2JzIGZyb20gaXQg d2lsbCBub3QgYmUgc2NoZWR1bGVkIGZ1cnRoZXINCisgICovDQordm9pZCBkcm1fc2NoZWRfaW5j cmVhc2Vfa2FybWEoc3RydWN0IGRybV9zY2hlZF9qb2IgKmJhZCkNCit7DQorCWludCBpOw0KKwlz dHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqdG1wOw0KKwlzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAq ZW50aXR5Ow0KKwlzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkID0gYmFkLT5zY2hlZDsN CisNCisJLyogZG9uJ3QgaW5jcmVhc2UgQGJhZCdzIGthcm1hIGlmIGl0J3MgZnJvbSBLRVJORUwg UlEsDQorCSAqIGJlY2F1c2Ugc29tZXRpbWVzIEdQVSBoYW5nIHdvdWxkIGNhdXNlIGtlcm5lbCBq b2JzIChsaWtlIFZNIHVwZGF0aW5nIGpvYnMpDQorCSAqIGNvcnJ1cHQgYnV0IGtlZXAgaW4gbWlu ZCB0aGF0IGtlcm5lbCBqb2JzIGFsd2F5cyBjb25zaWRlcmVkIGdvb2QuDQorCSAqLw0KKwlpZiAo YmFkLT5zX3ByaW9yaXR5ICE9IERSTV9TQ0hFRF9QUklPUklUWV9LRVJORUwpIHsNCisJCWF0b21p Y19pbmMoJmJhZC0+a2FybWEpOw0KKwkJZm9yIChpID0gRFJNX1NDSEVEX1BSSU9SSVRZX01JTjsg aSA8IERSTV9TQ0hFRF9QUklPUklUWV9LRVJORUw7DQorCQkgICAgIGkrKykgew0KKwkJCXN0cnVj dCBkcm1fc2NoZWRfcnEgKnJxID0gJnNjaGVkLT5zY2hlZF9ycVtpXTsNCisNCisJCQlzcGluX2xv Y2soJnJxLT5sb2NrKTsNCisJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZW50aXR5LCB0bXAs ICZycS0+ZW50aXRpZXMsIGxpc3QpIHsNCisJCQkJaWYgKGJhZC0+c19mZW5jZS0+c2NoZWR1bGVk LmNvbnRleHQgPT0NCisJCQkJICAgIGVudGl0eS0+ZmVuY2VfY29udGV4dCkgew0KKwkJCQkJaWYg KGF0b21pY19yZWFkKCZiYWQtPmthcm1hKSA+DQorCQkJCQkgICAgYmFkLT5zY2hlZC0+aGFuZ19s aW1pdCkNCisJCQkJCQlpZiAoZW50aXR5LT5ndWlsdHkpDQorCQkJCQkJCWF0b21pY19zZXQoZW50 aXR5LT5ndWlsdHksIDEpOw0KKwkJCQkJYnJlYWs7DQorCQkJCX0NCisJCQl9DQorCQkJc3Bpbl91 bmxvY2soJnJxLT5sb2NrKTsNCisJCQlpZiAoJmVudGl0eS0+bGlzdCAhPSAmcnEtPmVudGl0aWVz KQ0KKwkJCQlicmVhazsNCisJCX0NCisJfQ0KK30NCitFWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9p bmNyZWFzZV9rYXJtYSk7DQorDQogLyoqDQogICogZHJtX3NjaGVkX2h3X2pvYl9yZXNldCAtIHN0 b3AgdGhlIHNjaGVkdWxlciBpZiBpdCBjb250YWlucyB0aGUgYmFkIGpvYg0KICAqDQpAQCAtMzQy LDEzICszODUsMjIgQEAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX2pvYl90aW1lZG91dChzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspDQogICogQGJhZDogYmFkIHNjaGVkdWxlciBqb2INCiAgKg0KICAq Lw0KLXZvaWQgZHJtX3NjaGVkX2h3X2pvYl9yZXNldChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIg KnNjaGVkLCBzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqYmFkKQ0KK3ZvaWQgZHJtX3NjaGVkX3N0b3Ao c3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwgc3RydWN0IGRybV9zY2hlZF9qb2IgKmJh ZCkNCiB7DQogCXN0cnVjdCBkcm1fc2NoZWRfam9iICpzX2pvYjsNCi0Jc3RydWN0IGRybV9zY2hl ZF9lbnRpdHkgKmVudGl0eSwgKnRtcDsNCiAJdW5zaWduZWQgbG9uZyBmbGFnczsNCi0JaW50IGk7 DQorCXN0cnVjdCBkbWFfZmVuY2UgKmxhc3RfZmVuY2UgPSAgTlVMTDsNCisJaW50IHI7DQorDQor CWt0aHJlYWRfcGFyayhzY2hlZC0+dGhyZWFkKTsNCiANCisJLyoNCisJICogVmVyaWZ5IGFsbCB0 aGUgc2lnbmFsZWQgam9icyBpbiBtaXJyb3IgbGlzdCBhcmUgcmVtb3ZlZCBmcm9tIHRoZSByaW5n DQorCSAqIGJ5IHdhaXRpbmcgZm9yIHRoZSBsYXRlc3Qgam9iIHRvIGVudGVyIHRoZSBsaXN0LiBU aGlzIHNob3VsZCBpbnN1cmUgdGhhdA0KKwkgKiBhbHNvIGFsbCB0aGUgcHJldmlvdXMgam9icyB0 aGF0IHdlcmUgaW4gZmxpZ2h0IGFsc28gYWxyZWFkeSBzaW5nYWxlZA0KKwkgKiBhbmQgcmVtb3Zl ZCBmcm9tIHRoZSBsaXN0Lg0KKwkgKi8NCityZXRyeV93YWl0Og0KIAlzcGluX2xvY2tfaXJxc2F2 ZSgmc2NoZWQtPmpvYl9saXN0X2xvY2ssIGZsYWdzKTsNCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9y ZXZlcnNlKHNfam9iLCAmc2NoZWQtPnJpbmdfbWlycm9yX2xpc3QsIG5vZGUpIHsNCiAJCWlmIChz X2pvYi0+c19mZW5jZS0+cGFyZW50ICYmDQpAQCAtMzU3LDM1ICs0MDksMjAgQEAgdm9pZCBkcm1f c2NoZWRfaHdfam9iX3Jlc2V0KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsIHN0cnVj dCBkcm1fc2NoZWRfam8NCiAJCQlkbWFfZmVuY2VfcHV0KHNfam9iLT5zX2ZlbmNlLT5wYXJlbnQp Ow0KIAkJCXNfam9iLT5zX2ZlbmNlLT5wYXJlbnQgPSBOVUxMOw0KIAkJCWF0b21pY19kZWMoJnNj aGVkLT5od19ycV9jb3VudCk7DQorCQl9IGVsc2Ugew0KKwkJCSBsYXN0X2ZlbmNlID0gZG1hX2Zl bmNlX2dldCgmc19qb2ItPnNfZmVuY2UtPmZpbmlzaGVkKTsNCisJCQkgYnJlYWs7DQogCQl9DQog CX0NCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2NoZWQtPmpvYl9saXN0X2xvY2ssIGZsYWdz KTsNCiANCi0JaWYgKGJhZCAmJiBiYWQtPnNfcHJpb3JpdHkgIT0gRFJNX1NDSEVEX1BSSU9SSVRZ X0tFUk5FTCkgew0KLQkJYXRvbWljX2luYygmYmFkLT5rYXJtYSk7DQotCQkvKiBkb24ndCBpbmNy ZWFzZSBAYmFkJ3Mga2FybWEgaWYgaXQncyBmcm9tIEtFUk5FTCBSUSwNCi0JCSAqIGJlY3Vhc2Ug c29tZXRpbWVzIEdQVSBoYW5nIHdvdWxkIGNhdXNlIGtlcm5lbCBqb2JzIChsaWtlIFZNIHVwZGF0 aW5nIGpvYnMpDQotCQkgKiBjb3JydXB0IGJ1dCBrZWVwIGluIG1pbmQgdGhhdCBrZXJuZWwgam9i cyBhbHdheXMgY29uc2lkZXJlZCBnb29kLg0KLQkJICovDQotCQlmb3IgKGkgPSBEUk1fU0NIRURf UFJJT1JJVFlfTUlOOyBpIDwgRFJNX1NDSEVEX1BSSU9SSVRZX0tFUk5FTDsgaSsrICkgew0KLQkJ CXN0cnVjdCBkcm1fc2NoZWRfcnEgKnJxID0gJnNjaGVkLT5zY2hlZF9ycVtpXTsNCi0NCi0JCQlz cGluX2xvY2soJnJxLT5sb2NrKTsNCi0JCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZW50aXR5 LCB0bXAsICZycS0+ZW50aXRpZXMsIGxpc3QpIHsNCi0JCQkJaWYgKGJhZC0+c19mZW5jZS0+c2No ZWR1bGVkLmNvbnRleHQgPT0gZW50aXR5LT5mZW5jZV9jb250ZXh0KSB7DQotCQkJCSAgICBpZiAo YXRvbWljX3JlYWQoJmJhZC0+a2FybWEpID4gYmFkLT5zY2hlZC0+aGFuZ19saW1pdCkNCi0JCQkJ CQlpZiAoZW50aXR5LT5ndWlsdHkpDQotCQkJCQkJCWF0b21pY19zZXQoZW50aXR5LT5ndWlsdHks IDEpOw0KLQkJCQkJYnJlYWs7DQotCQkJCX0NCi0JCQl9DQotCQkJc3Bpbl91bmxvY2soJnJxLT5s b2NrKTsNCi0JCQlpZiAoJmVudGl0eS0+bGlzdCAhPSAmcnEtPmVudGl0aWVzKQ0KLQkJCQlicmVh azsNCi0JCX0NCisJaWYgKGxhc3RfZmVuY2UpIHsNCisJCWRtYV9mZW5jZV93YWl0KGxhc3RfZmVu Y2UsIGZhbHNlKTsNCisJCWRtYV9mZW5jZV9wdXQobGFzdF9mZW5jZSk7DQogCX0NCiB9DQotRVhQ T1JUX1NZTUJPTChkcm1fc2NoZWRfaHdfam9iX3Jlc2V0KTsNCisNCitFWFBPUlRfU1lNQk9MKGRy bV9zY2hlZF9zdG9wKTsNCiANCiAvKioNCiAgKiBkcm1fc2NoZWRfam9iX3JlY292ZXJ5IC0gcmVj b3ZlciBqb2JzIGFmdGVyIGEgcmVzZXQNCkBAIC0zOTMsMzMgKzQzMCwyMSBAQCBFWFBPUlRfU1lN Qk9MKGRybV9zY2hlZF9od19qb2JfcmVzZXQpOw0KICAqIEBzY2hlZDogc2NoZWR1bGVyIGluc3Rh bmNlDQogICoNCiAgKi8NCi12b2lkIGRybV9zY2hlZF9qb2JfcmVjb3Zlcnkoc3RydWN0IGRybV9n cHVfc2NoZWR1bGVyICpzY2hlZCkNCit2b2lkIGRybV9zY2hlZF9zdGFydChzdHJ1Y3QgZHJtX2dw dV9zY2hlZHVsZXIgKnNjaGVkLCBib29sIGZ1bGxfcmVjb3ZlcnkpDQogew0KIAlzdHJ1Y3QgZHJt X3NjaGVkX2pvYiAqc19qb2IsICp0bXA7DQotCWJvb2wgZm91bmRfZ3VpbHR5ID0gZmFsc2U7DQog CXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQogCWludCByOw0KIA0KKwlpZiAoIWZ1bGxfcmVjb3Zlcnkp DQorCQlnb3RvIHVucGFyazsNCisNCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnNjaGVkLT5qb2JfbGlz dF9sb2NrLCBmbGFncyk7DQogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzX2pvYiwgdG1wLCAm c2NoZWQtPnJpbmdfbWlycm9yX2xpc3QsIG5vZGUpIHsNCiAJCXN0cnVjdCBkcm1fc2NoZWRfZmVu Y2UgKnNfZmVuY2UgPSBzX2pvYi0+c19mZW5jZTsNCi0JCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNl Ow0KLQkJdWludDY0X3QgZ3VpbHR5X2NvbnRleHQ7DQotDQotCQlpZiAoIWZvdW5kX2d1aWx0eSAm JiBhdG9taWNfcmVhZCgmc19qb2ItPmthcm1hKSA+IHNjaGVkLT5oYW5nX2xpbWl0KSB7DQotCQkJ Zm91bmRfZ3VpbHR5ID0gdHJ1ZTsNCi0JCQlndWlsdHlfY29udGV4dCA9IHNfam9iLT5zX2ZlbmNl LT5zY2hlZHVsZWQuY29udGV4dDsNCi0JCX0NCi0NCi0JCWlmIChmb3VuZF9ndWlsdHkgJiYgc19q b2ItPnNfZmVuY2UtPnNjaGVkdWxlZC5jb250ZXh0ID09IGd1aWx0eV9jb250ZXh0KQ0KLQkJCWRt YV9mZW5jZV9zZXRfZXJyb3IoJnNfZmVuY2UtPmZpbmlzaGVkLCAtRUNBTkNFTEVEKTsNCi0NCi0J CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7DQot CQlmZW5jZSA9IHNjaGVkLT5vcHMtPnJ1bl9qb2Ioc19qb2IpOw0KLQkJYXRvbWljX2luYygmc2No ZWQtPmh3X3JxX2NvdW50KTsNCisJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlID0gc19qb2ItPnNf ZmVuY2UtPnBhcmVudDsNCiANCiAJCWlmIChmZW5jZSkgew0KLQkJCXNfZmVuY2UtPnBhcmVudCA9 IGRtYV9mZW5jZV9nZXQoZmVuY2UpOw0KIAkJCXIgPSBkbWFfZmVuY2VfYWRkX2NhbGxiYWNrKGZl bmNlLCAmc19mZW5jZS0+Y2IsDQogCQkJCQkJICAgZHJtX3NjaGVkX3Byb2Nlc3Nfam9iKTsNCiAJ CQlpZiAociA9PSAtRU5PRU5UKQ0KQEAgLTQyNywxOCArNDUyLDQ3IEBAIHZvaWQgZHJtX3NjaGVk X2pvYl9yZWNvdmVyeShzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKQ0KIAkJCWVsc2Ug aWYgKHIpDQogCQkJCURSTV9FUlJPUigiZmVuY2UgYWRkIGNhbGxiYWNrIGZhaWxlZCAoJWQpXG4i LA0KIAkJCQkJICByKTsNCi0JCQlkbWFfZmVuY2VfcHV0KGZlbmNlKTsNCi0JCX0gZWxzZSB7DQot CQkJaWYgKHNfZmVuY2UtPmZpbmlzaGVkLmVycm9yIDwgMCkNCi0JCQkJZHJtX3NjaGVkX2V4cGVs X2pvYl91bmxvY2tlZChzX2pvYik7DQorCQl9IGVsc2UNCiAJCQlkcm1fc2NoZWRfcHJvY2Vzc19q b2IoTlVMTCwgJnNfZmVuY2UtPmNiKTsNCi0JCX0NCi0JCXNwaW5fbG9ja19pcnFzYXZlKCZzY2hl ZC0+am9iX2xpc3RfbG9jaywgZmxhZ3MpOw0KIAl9DQorDQogCWRybV9zY2hlZF9zdGFydF90aW1l b3V0KHNjaGVkKTsNCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2NoZWQtPmpvYl9saXN0X2xv Y2ssIGZsYWdzKTsNCisNCit1bnBhcms6DQorCWt0aHJlYWRfdW5wYXJrKHNjaGVkLT50aHJlYWQp Ow0KIH0NCi1FWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9qb2JfcmVjb3ZlcnkpOw0KK0VYUE9SVF9T WU1CT0woZHJtX3NjaGVkX3N0YXJ0KTsNCisNCisvKioNCisgKiBkcm1fc2NoZWRfcmVzdWJtaXRf am9icyAtIGhlbHBlciB0byByZWx1bmNoIGpvYiBmcm9tIG1pcnJvciByaW5nIGxpc3QNCisgKg0K KyAqIEBzY2hlZDogc2NoZWR1bGVyIGluc3RhbmNlDQorICoNCisgKi8NCit2b2lkIGRybV9zY2hl ZF9yZXN1Ym1pdF9qb2JzKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpDQorew0KKwlz dHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc19qb2IsICp0bXA7DQorCXVpbnQ2NF90IGd1aWx0eV9jb250 ZXh0Ow0KKwlib29sIGZvdW5kX2d1aWx0eSA9IGZhbHNlOw0KKw0KKwkvKlRPRE8gRE8gd2UgbmVl ZCBzcGlubG9jayBoZXJlID8gKi8NCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNfam9iLCB0 bXAsICZzY2hlZC0+cmluZ19taXJyb3JfbGlzdCwgbm9kZSkgew0KKwkJc3RydWN0IGRybV9zY2hl ZF9mZW5jZSAqc19mZW5jZSA9IHNfam9iLT5zX2ZlbmNlOw0KKw0KKwkJaWYgKCFmb3VuZF9ndWls dHkgJiYgYXRvbWljX3JlYWQoJnNfam9iLT5rYXJtYSkgPiBzY2hlZC0+aGFuZ19saW1pdCkgew0K KwkJCWZvdW5kX2d1aWx0eSA9IHRydWU7DQorCQkJZ3VpbHR5X2NvbnRleHQgPSBzX2pvYi0+c19m ZW5jZS0+c2NoZWR1bGVkLmNvbnRleHQ7DQorCQl9DQorDQorCQlpZiAoZm91bmRfZ3VpbHR5ICYm IHNfam9iLT5zX2ZlbmNlLT5zY2hlZHVsZWQuY29udGV4dCA9PSBndWlsdHlfY29udGV4dCkNCisJ CQlkbWFfZmVuY2Vfc2V0X2Vycm9yKCZzX2ZlbmNlLT5maW5pc2hlZCwgLUVDQU5DRUxFRCk7DQor DQorCQlzX2pvYi0+c19mZW5jZS0+cGFyZW50ID0gc2NoZWQtPm9wcy0+cnVuX2pvYihzX2pvYik7 DQorCQlhdG9taWNfaW5jKCZzY2hlZC0+aHdfcnFfY291bnQpOw0KKwl9DQorfQ0KK0VYUE9SVF9T WU1CT0woZHJtX3NjaGVkX3Jlc3VibWl0X2pvYnMpOw0KIA0KIC8qKg0KICAqIGRybV9zY2hlZF9q b2JfaW5pdCAtIGluaXQgYSBzY2hlZHVsZXIgam9iDQpAQCAtNjM0LDI2ICs2ODgsMTQgQEAgc3Rh dGljIGludCBkcm1fc2NoZWRfbWFpbih2b2lkICpwYXJhbSkNCiAJCQkJRFJNX0VSUk9SKCJmZW5j ZSBhZGQgY2FsbGJhY2sgZmFpbGVkICglZClcbiIsDQogCQkJCQkgIHIpOw0KIAkJCWRtYV9mZW5j ZV9wdXQoZmVuY2UpOw0KLQkJfSBlbHNlIHsNCi0JCQlpZiAoc19mZW5jZS0+ZmluaXNoZWQuZXJy b3IgPCAwKQ0KLQkJCQlkcm1fc2NoZWRfZXhwZWxfam9iX3VubG9ja2VkKHNjaGVkX2pvYik7DQor CQl9IGVsc2UNCiAJCQlkcm1fc2NoZWRfcHJvY2Vzc19qb2IoTlVMTCwgJnNfZmVuY2UtPmNiKTsN Ci0JCX0NCiANCiAJCXdha2VfdXAoJnNjaGVkLT5qb2Jfc2NoZWR1bGVkKTsNCiAJfQ0KIAlyZXR1 cm4gMDsNCiB9DQogDQotc3RhdGljIHZvaWQgZHJtX3NjaGVkX2V4cGVsX2pvYl91bmxvY2tlZChz dHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc19qb2IpDQotew0KLQlzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVs ZXIgKnNjaGVkID0gc19qb2ItPnNjaGVkOw0KLQ0KLQlzcGluX2xvY2soJnNjaGVkLT5qb2JfbGlz dF9sb2NrKTsNCi0JbGlzdF9kZWxfaW5pdCgmc19qb2ItPm5vZGUpOw0KLQlzcGluX3VubG9jaygm c2NoZWQtPmpvYl9saXN0X2xvY2spOw0KLX0NCi0NCiAvKioNCiAgKiBkcm1fc2NoZWRfaW5pdCAt IEluaXQgYSBncHUgc2NoZWR1bGVyIGluc3RhbmNlDQogICoNCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdjNkL3YzZF9zY2hlZC5jIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc2NoZWQu Yw0KaW5kZXggNDQ1YjJlZi4uZjc2ZDllZCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS92 M2QvdjNkX3NjaGVkLmMNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3NjaGVkLmMNCkBA IC0xNzgsMTggKzE3OCwyMiBAQCB2M2Rfam9iX3RpbWVkb3V0KHN0cnVjdCBkcm1fc2NoZWRfam9i ICpzY2hlZF9qb2IpDQogCWZvciAocSA9IDA7IHEgPCBWM0RfTUFYX1FVRVVFUzsgcSsrKSB7DQog CQlzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkID0gJnYzZC0+cXVldWVbcV0uc2NoZWQ7 DQogDQotCQlrdGhyZWFkX3Bhcmsoc2NoZWQtPnRocmVhZCk7DQotCQlkcm1fc2NoZWRfaHdfam9i X3Jlc2V0KHNjaGVkLCAoc2NoZWRfam9iLT5zY2hlZCA9PSBzY2hlZCA/DQorCQlkcm1fc2NoZWRf c3RvcChzY2hlZCwgKHNjaGVkX2pvYi0+c2NoZWQgPT0gc2NoZWQgPw0KIAkJCQkJICAgICAgIHNj aGVkX2pvYiA6IE5VTEwpKTsNCisNCisJCWlmKHNjaGVkX2pvYikNCisJCQlkcm1fc2NoZWRfaW5j cmVhc2Vfa2FybWEoc2NoZWRfam9iKTsNCiAJfQ0KIA0KIAkvKiBnZXQgdGhlIEdQVSBiYWNrIGlu dG8gdGhlIGluaXQgc3RhdGUgKi8NCiAJdjNkX3Jlc2V0KHYzZCk7DQogDQorCWZvciAocSA9IDA7 IHEgPCBWM0RfTUFYX1FVRVVFUzsgcSsrKQ0KKwkJZHJtX3NjaGVkX3Jlc3VibWl0X2pvYnMoc2No ZWRfam9iLT5zY2hlZCk7DQorDQogCS8qIFVuYmxvY2sgc2NoZWR1bGVycyBhbmQgcmVzdGFydCB0 aGVpciBqb2JzLiAqLw0KIAlmb3IgKHEgPSAwOyBxIDwgVjNEX01BWF9RVUVVRVM7IHErKykgew0K LQkJZHJtX3NjaGVkX2pvYl9yZWNvdmVyeSgmdjNkLT5xdWV1ZVtxXS5zY2hlZCk7DQotCQlrdGhy ZWFkX3VucGFyayh2M2QtPnF1ZXVlW3FdLnNjaGVkLnRocmVhZCk7DQorCQlkcm1fc2NoZWRfc3Rh cnQoJnYzZC0+cXVldWVbcV0uc2NoZWQsIHRydWUpOw0KIAl9DQogDQogCW11dGV4X3VubG9jaygm djNkLT5yZXNldF9sb2NrKTsNCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVy LmggYi9pbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmgNCmluZGV4IDQ3ZTE5NzkuLjRmMjFmYWYg MTAwNjQ0DQotLS0gYS9pbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmgNCisrKyBiL2luY2x1ZGUv ZHJtL2dwdV9zY2hlZHVsZXIuaA0KQEAgLTI5OCw5ICsyOTgsMTEgQEAgaW50IGRybV9zY2hlZF9q b2JfaW5pdChzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqam9iLA0KIAkJICAgICAgIHZvaWQgKm93bmVy KTsNCiB2b2lkIGRybV9zY2hlZF9qb2JfY2xlYW51cChzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqam9i KTsNCiB2b2lkIGRybV9zY2hlZF93YWtldXAoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hl ZCk7DQotdm9pZCBkcm1fc2NoZWRfaHdfam9iX3Jlc2V0KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxl ciAqc2NoZWQsDQotCQkJICAgIHN0cnVjdCBkcm1fc2NoZWRfam9iICpqb2IpOw0KLXZvaWQgZHJt X3NjaGVkX2pvYl9yZWNvdmVyeShzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKTsNCit2 b2lkIGRybV9zY2hlZF9zdG9wKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsDQorCQkg ICAgc3RydWN0IGRybV9zY2hlZF9qb2IgKmpvYik7DQordm9pZCBkcm1fc2NoZWRfc3RhcnQoc3Ry dWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwgYm9vbCBmdWxsX3JlY292ZXJ5KTsNCit2b2lk IGRybV9zY2hlZF9yZXN1Ym1pdF9qb2JzKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQp Ow0KK3ZvaWQgZHJtX3NjaGVkX2luY3JlYXNlX2thcm1hKHN0cnVjdCBkcm1fc2NoZWRfam9iICpi YWQpOw0KIGJvb2wgZHJtX3NjaGVkX2RlcGVuZGVuY3lfb3B0aW1pemVkKHN0cnVjdCBkbWFfZmVu Y2UqIGZlbmNlLA0KIAkJCQkgICAgc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eSk7DQog dm9pZCBkcm1fc2NoZWRfZmF1bHQoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCk7DQot LSANCjIuNy40DQoNCg== --_003_ea37c55fee56cce7a4e11a599642c54camdcom_ Content-Type: text/x-patch; name="0002-drm-sched-Rework-HW-fence-processing.patch" Content-Description: 0002-drm-sched-Rework-HW-fence-processing.patch Content-Disposition: attachment; filename="0002-drm-sched-Rework-HW-fence-processing.patch"; size=7163; creation-date="Wed, 09 Jan 2019 15:18:18 GMT"; modification-date="Wed, 09 Jan 2019 15:18:18 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSA4MmY4NGYxOTk1ZjMwNTEzZGQ5MjZiMGYzY2E3YjA0N2ZmNzE2OGFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogQW5kcmV5IEdyb2R6b3Zza3kgPGFuZHJleS5ncm9kem92c2t5 QGFtZC5jb20+DQpEYXRlOiBXZWQsIDUgRGVjIDIwMTggMTQ6MjE6MjggLTA1MDANClN1YmplY3Q6 IGRybS9zY2hlZDogUmV3b3JrIEhXIGZlbmNlIHByb2Nlc3NpbmcuDQoNCkV4cGVkaXRlIGpvYiBk ZWxldGlvbiBmcm9tIHJpbmcgbWlycm9yIGxpc3QgdG8gdGhlIEhXIGZlbmNlIHNpZ25hbA0KY2Fs bGJhY2sgaW5zdGVhZCBmcm9tIGZpbmlzaF93b3JrLCB0b2dldGhlciB3aXRoIHdhaXRpbmcgZm9y IGFsbA0Kc3VjaCBmZW5jZXMgdG8gc2lnbmFsIGluIGRybV9zY2hlZF9zdG9wIHdlIGdhcmFudGVl IHRoYXQNCmFscmVhZHkgc2lnbmFsZWQgam9iIHdpbGwgbm90IGJlIHByb2Nlc3NlZCB0d2ljZS4N ClJlbW92ZSB0aGUgc2NoZWQgZmluaXNoIGZlbmNlIGNhbGxiYWNrIGFuZCBqdXN0IHN1Ym1pdCBm aW5pc2hfd29yaw0KZGlyZWN0bHkgZnJvbSB0aGUgSFcgZmVuY2UgY2FsbGJhY2suDQoNCnYyOiBG aXggY29tbWVudHMuDQp2MzogQXR0YWNoICBodyBmZW5jZSBjYiB0byBzY2hlZF9qb2INCnY1OiBS ZWJhc2UNCg0KU3VnZ2VzdGVkLWJ5OiBDaHJpc3RpYW4gS29lbmlnIDxDaHJpc3RpYW4uS29lbmln QGFtZC5jb20+DQpTaWduZWQtb2ZmLWJ5OiBBbmRyZXkgR3JvZHpvdnNreSA8YW5kcmV5Lmdyb2R6 b3Zza3lAYW1kLmNvbT4NCi0tLQ0KIGRyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvc2NoZWRfbWFp bi5jIHwgNTUgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQ0KIGluY2x1ZGUvZHJt L2dwdV9zY2hlZHVsZXIuaCAgICAgICAgICAgIHwgIDYgKystLQ0KIDIgZmlsZXMgY2hhbmdlZCwg MjkgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vc2NoZWR1bGVyL3NjaGVkX21haW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9zY2hlZHVs ZXIvc2NoZWRfbWFpbi5jDQppbmRleCBlNzU4ZmM2Li4xNmM2MzYzIDEwMDY0NA0KLS0tIGEvZHJp dmVycy9ncHUvZHJtL3NjaGVkdWxlci9zY2hlZF9tYWluLmMNCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9zY2hlZHVsZXIvc2NoZWRfbWFpbi5jDQpAQCAtMjg0LDggKzI4NCw2IEBAIHN0YXRpYyB2b2lk IGRybV9zY2hlZF9qb2JfZmluaXNoKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCiAJY2FuY2Vs X2RlbGF5ZWRfd29ya19zeW5jKCZzY2hlZC0+d29ya190ZHIpOw0KIA0KIAlzcGluX2xvY2tfaXJx c2F2ZSgmc2NoZWQtPmpvYl9saXN0X2xvY2ssIGZsYWdzKTsNCi0JLyogcmVtb3ZlIGpvYiBmcm9t IHJpbmdfbWlycm9yX2xpc3QgKi8NCi0JbGlzdF9kZWxfaW5pdCgmc19qb2ItPm5vZGUpOw0KIAkv KiBxdWV1ZSBURFIgZm9yIG5leHQgam9iICovDQogCWRybV9zY2hlZF9zdGFydF90aW1lb3V0KHNj aGVkKTsNCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2NoZWQtPmpvYl9saXN0X2xvY2ssIGZs YWdzKTsNCkBAIC0yOTMsMjIgKzI5MSwxMSBAQCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfam9iX2Zp bmlzaChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQogCXNjaGVkLT5vcHMtPmZyZWVfam9iKHNf am9iKTsNCiB9DQogDQotc3RhdGljIHZvaWQgZHJtX3NjaGVkX2pvYl9maW5pc2hfY2Ioc3RydWN0 IGRtYV9mZW5jZSAqZiwNCi0JCQkJICAgIHN0cnVjdCBkbWFfZmVuY2VfY2IgKmNiKQ0KLXsNCi0J c3RydWN0IGRybV9zY2hlZF9qb2IgKmpvYiA9IGNvbnRhaW5lcl9vZihjYiwgc3RydWN0IGRybV9z Y2hlZF9qb2IsDQotCQkJCQkJIGZpbmlzaF9jYik7DQotCXNjaGVkdWxlX3dvcmsoJmpvYi0+Zmlu aXNoX3dvcmspOw0KLX0NCi0NCiBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfam9iX2JlZ2luKHN0cnVj dCBkcm1fc2NoZWRfam9iICpzX2pvYikNCiB7DQogCXN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAq c2NoZWQgPSBzX2pvYi0+c2NoZWQ7DQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQogDQotCWRtYV9m ZW5jZV9hZGRfY2FsbGJhY2soJnNfam9iLT5zX2ZlbmNlLT5maW5pc2hlZCwgJnNfam9iLT5maW5p c2hfY2IsDQotCQkJICAgICAgIGRybV9zY2hlZF9qb2JfZmluaXNoX2NiKTsNCi0NCiAJc3Bpbl9s b2NrX2lycXNhdmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7DQogCWxpc3RfYWRkX3Rh aWwoJnNfam9iLT5ub2RlLCAmc2NoZWQtPnJpbmdfbWlycm9yX2xpc3QpOw0KIAlkcm1fc2NoZWRf c3RhcnRfdGltZW91dChzY2hlZCk7DQpAQCAtNDA1LDcgKzM5Miw3IEBAIHZvaWQgZHJtX3NjaGVk X3N0b3Aoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwgc3RydWN0IGRybV9zY2hlZF9q b2IgKmJhZCkNCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKHNfam9iLCAmc2NoZWQtPnJp bmdfbWlycm9yX2xpc3QsIG5vZGUpIHsNCiAJCWlmIChzX2pvYi0+c19mZW5jZS0+cGFyZW50ICYm DQogCQkgICAgZG1hX2ZlbmNlX3JlbW92ZV9jYWxsYmFjayhzX2pvYi0+c19mZW5jZS0+cGFyZW50 LA0KLQkJCQkJICAgICAgJnNfam9iLT5zX2ZlbmNlLT5jYikpIHsNCisJCQkJCSAgICAgICZzX2pv Yi0+Y2IpKSB7DQogCQkJZG1hX2ZlbmNlX3B1dChzX2pvYi0+c19mZW5jZS0+cGFyZW50KTsNCiAJ CQlzX2pvYi0+c19mZW5jZS0+cGFyZW50ID0gTlVMTDsNCiAJCQlhdG9taWNfZGVjKCZzY2hlZC0+ aHdfcnFfY291bnQpOw0KQEAgLTQzMywzMSArNDIwLDM0IEBAIEVYUE9SVF9TWU1CT0woZHJtX3Nj aGVkX3N0b3ApOw0KIHZvaWQgZHJtX3NjaGVkX3N0YXJ0KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxl ciAqc2NoZWQsIGJvb2wgZnVsbF9yZWNvdmVyeSkNCiB7DQogCXN0cnVjdCBkcm1fc2NoZWRfam9i ICpzX2pvYiwgKnRtcDsNCi0JdW5zaWduZWQgbG9uZyBmbGFnczsNCiAJaW50IHI7DQogDQogCWlm ICghZnVsbF9yZWNvdmVyeSkNCiAJCWdvdG8gdW5wYXJrOw0KIA0KLQlzcGluX2xvY2tfaXJxc2F2 ZSgmc2NoZWQtPmpvYl9saXN0X2xvY2ssIGZsYWdzKTsNCisJLyoNCisJICogTG9ja2luZyB0aGUg bGlzdCBpcyBub3QgcmVxdWlyZWQgaGVyZSBhcyB0aGUgc2NoZWQgdGhyZWFkIGlzIHBhcmtlZA0K KwkgKiBzbyBubyBuZXcgam9icyBhcmUgYmVpbmcgcHVzaGVkIGluIHRvIEhXIGFuZCBpbiBkcm1f c2NoZWRfc3RvcCB3ZQ0KKwkgKiBmbHVzaGVkIGFsbCB0aGUgam9icyB3aG8gd2VyZSBzdGlsbCBp biBtaXJyb3IgbGlzdCBidXQgd2hvIGFscmVhZHkNCisJICogc2lnbmFsZWQgYW5kIHJlbW92ZWQg dGhlbSBzZWxmIGZyb20gdGhlIGxpc3QuIEFsc28gY29uY3VycmVudA0KKwkgKiBHUFUgcmVjb3Zl cnMgY2FuJ3QgcnVuIGluIHBhcmFsbGVsLg0KKwkgKi8NCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKHNfam9iLCB0bXAsICZzY2hlZC0+cmluZ19taXJyb3JfbGlzdCwgbm9kZSkgew0KLQkJc3Ry dWN0IGRybV9zY2hlZF9mZW5jZSAqc19mZW5jZSA9IHNfam9iLT5zX2ZlbmNlOw0KIAkJc3RydWN0 IGRtYV9mZW5jZSAqZmVuY2UgPSBzX2pvYi0+c19mZW5jZS0+cGFyZW50Ow0KIA0KIAkJaWYgKGZl bmNlKSB7DQotCQkJciA9IGRtYV9mZW5jZV9hZGRfY2FsbGJhY2soZmVuY2UsICZzX2ZlbmNlLT5j YiwNCisJCQlyID0gZG1hX2ZlbmNlX2FkZF9jYWxsYmFjayhmZW5jZSwgJnNfam9iLT5jYiwNCiAJ CQkJCQkgICBkcm1fc2NoZWRfcHJvY2Vzc19qb2IpOw0KIAkJCWlmIChyID09IC1FTk9FTlQpDQot CQkJCWRybV9zY2hlZF9wcm9jZXNzX2pvYihmZW5jZSwgJnNfZmVuY2UtPmNiKTsNCisJCQkJZHJt X3NjaGVkX3Byb2Nlc3Nfam9iKGZlbmNlLCAmc19qb2ItPmNiKTsNCiAJCQllbHNlIGlmIChyKQ0K IAkJCQlEUk1fRVJST1IoImZlbmNlIGFkZCBjYWxsYmFjayBmYWlsZWQgKCVkKVxuIiwNCiAJCQkJ CSAgcik7DQogCQl9IGVsc2UNCi0JCQlkcm1fc2NoZWRfcHJvY2Vzc19qb2IoTlVMTCwgJnNfZmVu Y2UtPmNiKTsNCisJCQlkcm1fc2NoZWRfcHJvY2Vzc19qb2IoTlVMTCwgJnNfam9iLT5jYik7DQog CX0NCiANCiAJZHJtX3NjaGVkX3N0YXJ0X3RpbWVvdXQoc2NoZWQpOw0KLQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxhZ3MpOw0KIA0KIHVucGFyazoNCiAJ a3RocmVhZF91bnBhcmsoc2NoZWQtPnRocmVhZCk7DQpAQCAtNjA2LDE4ICs1OTYsMjcgQEAgZHJt X3NjaGVkX3NlbGVjdF9lbnRpdHkoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCkNCiAg Ki8NCiBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfcHJvY2Vzc19qb2Ioc3RydWN0IGRtYV9mZW5jZSAq Ziwgc3RydWN0IGRtYV9mZW5jZV9jYiAqY2IpDQogew0KLQlzdHJ1Y3QgZHJtX3NjaGVkX2ZlbmNl ICpzX2ZlbmNlID0NCi0JCWNvbnRhaW5lcl9vZihjYiwgc3RydWN0IGRybV9zY2hlZF9mZW5jZSwg Y2IpOw0KKwlzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc19qb2IgPSBjb250YWluZXJfb2YoY2IsIHN0 cnVjdCBkcm1fc2NoZWRfam9iLCBjYik7DQorCXN0cnVjdCBkcm1fc2NoZWRfZmVuY2UgKnNfZmVu Y2UgPSBzX2pvYi0+c19mZW5jZTsNCiAJc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCA9 IHNfZmVuY2UtPnNjaGVkOw0KKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KKw0KKwljYW5jZWxfZGVs YXllZF93b3JrKCZzY2hlZC0+d29ya190ZHIpOw0KIA0KLQlkbWFfZmVuY2VfZ2V0KCZzX2ZlbmNl LT5maW5pc2hlZCk7DQogCWF0b21pY19kZWMoJnNjaGVkLT5od19ycV9jb3VudCk7DQogCWF0b21p Y19kZWMoJnNjaGVkLT5udW1fam9icyk7DQorDQorCXNwaW5fbG9ja19pcnFzYXZlKCZzY2hlZC0+ am9iX2xpc3RfbG9jaywgZmxhZ3MpOw0KKwkvKiByZW1vdmUgam9iIGZyb20gcmluZ19taXJyb3Jf bGlzdCAqLw0KKwlsaXN0X2RlbF9pbml0KCZzX2pvYi0+bm9kZSk7DQorCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7DQorDQogCWRybV9zY2hlZF9m ZW5jZV9maW5pc2hlZChzX2ZlbmNlKTsNCiANCiAJdHJhY2VfZHJtX3NjaGVkX3Byb2Nlc3Nfam9i KHNfZmVuY2UpOw0KLQlkbWFfZmVuY2VfcHV0KCZzX2ZlbmNlLT5maW5pc2hlZCk7DQogCXdha2Vf dXBfaW50ZXJydXB0aWJsZSgmc2NoZWQtPndha2VfdXBfd29ya2VyKTsNCisNCisJc2NoZWR1bGVf d29yaygmc19qb2ItPmZpbmlzaF93b3JrKTsNCiB9DQogDQogLyoqDQpAQCAtNjgwLDE2ICs2Nzks MTYgQEAgc3RhdGljIGludCBkcm1fc2NoZWRfbWFpbih2b2lkICpwYXJhbSkNCiANCiAJCWlmIChm ZW5jZSkgew0KIAkJCXNfZmVuY2UtPnBhcmVudCA9IGRtYV9mZW5jZV9nZXQoZmVuY2UpOw0KLQkJ CXIgPSBkbWFfZmVuY2VfYWRkX2NhbGxiYWNrKGZlbmNlLCAmc19mZW5jZS0+Y2IsDQorCQkJciA9 IGRtYV9mZW5jZV9hZGRfY2FsbGJhY2soZmVuY2UsICZzY2hlZF9qb2ItPmNiLA0KIAkJCQkJCSAg IGRybV9zY2hlZF9wcm9jZXNzX2pvYik7DQogCQkJaWYgKHIgPT0gLUVOT0VOVCkNCi0JCQkJZHJt X3NjaGVkX3Byb2Nlc3Nfam9iKGZlbmNlLCAmc19mZW5jZS0+Y2IpOw0KKwkJCQlkcm1fc2NoZWRf cHJvY2Vzc19qb2IoZmVuY2UsICZzY2hlZF9qb2ItPmNiKTsNCiAJCQllbHNlIGlmIChyKQ0KIAkJ CQlEUk1fRVJST1IoImZlbmNlIGFkZCBjYWxsYmFjayBmYWlsZWQgKCVkKVxuIiwNCiAJCQkJCSAg cik7DQogCQkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7DQogCQl9IGVsc2UNCi0JCQlkcm1fc2NoZWRf cHJvY2Vzc19qb2IoTlVMTCwgJnNfZmVuY2UtPmNiKTsNCisJCQlkcm1fc2NoZWRfcHJvY2Vzc19q b2IoTlVMTCwgJnNjaGVkX2pvYi0+Y2IpOw0KIA0KIAkJd2FrZV91cCgmc2NoZWQtPmpvYl9zY2hl ZHVsZWQpOw0KIAl9DQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxlci5oIGIv aW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxlci5oDQppbmRleCA0ZjIxZmFmLi42MmMyMzUyIDEwMDY0 NA0KLS0tIGEvaW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxlci5oDQorKysgYi9pbmNsdWRlL2RybS9n cHVfc2NoZWR1bGVyLmgNCkBAIC0xMzgsMTAgKzEzOCw2IEBAIHN0cnVjdCBkcm1fc2NoZWRfZmVu Y2Ugew0KIAlzdHJ1Y3QgZG1hX2ZlbmNlCQlmaW5pc2hlZDsNCiANCiAgICAgICAgIC8qKg0KLSAg ICAgICAgICogQGNiOiB0aGUgY2FsbGJhY2sgZm9yIHRoZSBwYXJlbnQgZmVuY2UgYmVsb3cuDQot ICAgICAgICAgKi8NCi0Jc3RydWN0IGRtYV9mZW5jZV9jYgkJY2I7DQotICAgICAgICAvKioNCiAg ICAgICAgICAqIEBwYXJlbnQ6IHRoZSBmZW5jZSByZXR1cm5lZCBieSAmZHJtX3NjaGVkX2JhY2tl bmRfb3BzLnJ1bl9qb2INCiAgICAgICAgICAqIHdoZW4gc2NoZWR1bGluZyB0aGUgam9iIG9uIGhh cmR3YXJlLiBXZSBzaWduYWwgdGhlDQogICAgICAgICAgKiAmZHJtX3NjaGVkX2ZlbmNlLmZpbmlz aGVkIGZlbmNlIG9uY2UgcGFyZW50IGlzIHNpZ25hbGxlZC4NCkBAIC0xODEsNiArMTc3LDcgQEAg c3RydWN0IGRybV9zY2hlZF9mZW5jZSAqdG9fZHJtX3NjaGVkX2ZlbmNlKHN0cnVjdCBkbWFfZmVu Y2UgKmYpOw0KICAqICAgICAgICAgYmUgc2NoZWR1bGVkIGZ1cnRoZXIuDQogICogQHNfcHJpb3Jp dHk6IHRoZSBwcmlvcml0eSBvZiB0aGUgam9iLg0KICAqIEBlbnRpdHk6IHRoZSBlbnRpdHkgdG8g d2hpY2ggdGhpcyBqb2IgYmVsb25ncy4NCisgKiBAY2I6IHRoZSBjYWxsYmFjayBmb3IgdGhlIHBh cmVudCBmZW5jZSBpbiBzX2ZlbmNlLg0KICAqDQogICogQSBqb2IgaXMgY3JlYXRlZCBieSB0aGUg ZHJpdmVyIHVzaW5nIGRybV9zY2hlZF9qb2JfaW5pdCgpLCBhbmQNCiAgKiBzaG91bGQgY2FsbCBk cm1fc2NoZWRfZW50aXR5X3B1c2hfam9iKCkgb25jZSBpdCB3YW50cyB0aGUgc2NoZWR1bGVyDQpA QCAtMTk3LDYgKzE5NCw3IEBAIHN0cnVjdCBkcm1fc2NoZWRfam9iIHsNCiAJYXRvbWljX3QJCQlr YXJtYTsNCiAJZW51bSBkcm1fc2NoZWRfcHJpb3JpdHkJCXNfcHJpb3JpdHk7DQogCXN0cnVjdCBk cm1fc2NoZWRfZW50aXR5ICAqZW50aXR5Ow0KKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NiCQljYjsNCiB9 Ow0KIA0KIHN0YXRpYyBpbmxpbmUgYm9vbCBkcm1fc2NoZWRfaW52YWxpZGF0ZV9qb2Ioc3RydWN0 IGRybV9zY2hlZF9qb2IgKnNfam9iLA0KLS0gDQoyLjcuNA0KDQo= --_003_ea37c55fee56cce7a4e11a599642c54camdcom_ Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== --_003_ea37c55fee56cce7a4e11a599642c54camdcom_--