From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrey Grodzovsky Subject: [PATCH v6 1/2] drm/sched: Refactor ring mirror list handling. Date: Thu, 27 Dec 2018 14:28:06 -0500 Message-ID: <1545938887-22901-1-git-send-email-andrey.grodzovsky@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, ckoenig.leichtzumerken-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org, etnaviv-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: david1.zhou-5C7GfCeVMHo@public.gmane.org, Monk.Liu-5C7GfCeVMHo@public.gmane.org, Andrey Grodzovsky List-Id: dri-devel@lists.freedesktop.org RGVjYXVwbGUgc2NoZWQgdGhyZWFkcyBzdG9wIGFuZCBzdGFydCBhbmQgcmluZyBtaXJyb3IKbGlz dCBoYW5kbGluZyBmcm9tIHRoZSBwb2xpY3kgb2Ygd2hhdCB0byBkbyBhYm91dCB0aGUKZ3VpbHR5 IGpvYnMuCldoZW4gc3RvcHBwaW5nIHRoZSBzY2hlZCB0aHJlYWQgYW5kIGRldGFjaGluZyBzY2hl ZCBmZW5jZXMKZnJvbSBub24gc2lnbmFsZWQgSFcgZmVuZXMgd2FpdCBmb3IgYWxsIHNpZ25hbGVk IEhXIGZlbmNlcwp0byBjb21wbGV0ZSBiZWZvcmUgcmVydW5uaW5nIHRoZSBqb2JzLgoKdjI6IEZp eCByZXN1Ym1pc3Npb24gb2YgZ3VpbHR5IGpvYiBpbnRvIEhXIGFmdGVyIHJlZmFjdG9yaW5nLgoK djQ6CkZ1bGwgcmVzdGFydCBmb3IgYWxsIHRoZSBqb2JzLCBub3Qgb25seSBmcm9tIGd1aWx0eSBy aW5nLgpFeHRyYWN0IGthcm1hIGluY3JlYXNlIGludG8gc3RhbmRhbG9uZSBmdW5jdGlvbi4KCnY1 OgpSZXdvcmsgd2FpdGluZyBmb3Igc2lnbmFsZWQgam9icyB3aXRob3V0IHJlbHlpbmcgb24gdGhl IGpvYgpzdHJ1Y3QgaXRzZWxmIGFzIHRob3NlIG1pZ2h0IGFscmVhZHkgYmUgZnJlZWQgZm9yIG5v biAnZ3VpbHR5Jwpqb2IncyBzY2hlZHVsZXJzLgpFeHBvc2Uga2FybWEgaW5jcmVhc2UgdG8gZHJp dmVycy4KCnY2OgpVc2UgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlX2NvbnRpbnVlIGFuZCBkcm1f c2NoZWRfcHJvY2Vzc19qb2IKaW4gY2FzZSBmZW5jZSBhbHJlYWR5IHNpZ25hbGVkLgpDYWxsIGRy bV9zY2hlZF9pbmNyZWFzZV9rYXJtYSBvbmx5IG9uY2UgZm9yIGFtZGdwdSBhbmQgYWRkIGRvY3Vt ZW50YXRpb24uCgpTdWdnZXN0ZWQtYnk6IENocmlzdGlhbiBLb2VuaWcgPENocmlzdGlhbi5Lb2Vu aWdAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogQW5kcmV5IEdyb2R6b3Zza3kgPGFuZHJleS5ncm9k em92c2t5QGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rl dmljZS5jIHwgIDIwICsrLQogZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9zY2hlZC5j ICAgIHwgIDExICstCiBkcml2ZXJzL2dwdS9kcm0vc2NoZWR1bGVyL3NjaGVkX21haW4uYyAgICAg fCAxOTUgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS92M2Qv djNkX3NjaGVkLmMgICAgICAgICAgICB8ICAxMiArLQogaW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxl ci5oICAgICAgICAgICAgICAgIHwgICA4ICstCiA1IGZpbGVzIGNoYW5nZWQsIDE1NyBpbnNlcnRp b25zKCspLCA4OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfZGV2aWNlLmMKaW5kZXggOThkZjhlNC4uNmEwNjAxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYwpAQCAtMzI5OCwxNyArMzI5OCwxNSBAQCBzdGF0aWMg aW50IGFtZGdwdV9kZXZpY2VfcHJlX2FzaWNfcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCiAJCWlmICghcmluZyB8fCAhcmluZy0+c2NoZWQudGhyZWFkKQogCQkJY29udGludWU7CiAK LQkJa3RocmVhZF9wYXJrKHJpbmctPnNjaGVkLnRocmVhZCk7Ci0KLQkJaWYgKGpvYiAmJiBqb2It PmJhc2Uuc2NoZWQgIT0gJnJpbmctPnNjaGVkKQotCQkJY29udGludWU7Ci0KLQkJZHJtX3NjaGVk X2h3X2pvYl9yZXNldCgmcmluZy0+c2NoZWQsIGpvYiA/ICZqb2ItPmJhc2UgOiBOVUxMKTsKKwkJ ZHJtX3NjaGVkX3N0b3AoJnJpbmctPnNjaGVkLCBqb2IgPyAmam9iLT5iYXNlIDogTlVMTCk7CiAK IAkJLyogYWZ0ZXIgYWxsIGh3IGpvYnMgYXJlIHJlc2V0LCBodyBmZW5jZSBpcyBtZWFuaW5nbGVz cywgc28gZm9yY2VfY29tcGxldGlvbiAqLwogCQlhbWRncHVfZmVuY2VfZHJpdmVyX2ZvcmNlX2Nv bXBsZXRpb24ocmluZyk7CiAJfQogCisJaWYoam9iKQorCQlkcm1fc2NoZWRfaW5jcmVhc2Vfa2Fy bWEoJmpvYi0+YmFzZSk7CisKIAogCiAJaWYgKCFhbWRncHVfc3Jpb3ZfdmYoYWRldikpIHsKQEAg LTM0NTQsMTQgKzM0NTIsMTAgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X2RldmljZV9wb3N0X2FzaWNf cmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCWlmICghcmluZyB8fCAhcmluZy0+ c2NoZWQudGhyZWFkKQogCQkJY29udGludWU7CiAKLQkJLyogb25seSBuZWVkIHJlY292ZXJ5IHNj aGVkIG9mIHRoZSBnaXZlbiBqb2IncyByaW5nCi0JCSAqIG9yIGFsbCByaW5ncyAoaW4gdGhlIGNh c2UgQGpvYiBpcyBOVUxMKQotCQkgKiBhZnRlciBhYm92ZSBhbWRncHVfcmVzZXQgYWNjb21wbGlz aGVkCi0JCSAqLwotCQlpZiAoKCFqb2IgfHwgam9iLT5iYXNlLnNjaGVkID09ICZyaW5nLT5zY2hl ZCkgJiYgIWFkZXYtPmFzaWNfcmVzZXRfcmVzKQotCQkJZHJtX3NjaGVkX2pvYl9yZWNvdmVyeSgm cmluZy0+c2NoZWQpOworCQlpZiAoIWFkZXYtPmFzaWNfcmVzZXRfcmVzKQorCQkJZHJtX3NjaGVk X3Jlc3VibWl0X2pvYnMoJnJpbmctPnNjaGVkKTsKIAotCQlrdGhyZWFkX3VucGFyayhyaW5nLT5z Y2hlZC50aHJlYWQpOworCQlkcm1fc2NoZWRfc3RhcnQoJnJpbmctPnNjaGVkLCAhYWRldi0+YXNp Y19yZXNldF9yZXMpOwogCX0KIAogCWlmICghYW1kZ3B1X2RldmljZV9oYXNfZGNfc3VwcG9ydChh ZGV2KSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9zY2hl ZC5jIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9zY2hlZC5jCmluZGV4IDQ5YTY3 NjMuLjZmMTI2OGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZf c2NoZWQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X3NjaGVkLmMKQEAg LTEwOSwxNiArMTA5LDE5IEBAIHN0YXRpYyB2b2lkIGV0bmF2aXZfc2NoZWRfdGltZWRvdXRfam9i KHN0cnVjdCBkcm1fc2NoZWRfam9iICpzY2hlZF9qb2IpCiAJfQogCiAJLyogYmxvY2sgc2NoZWR1 bGVyICovCi0Ja3RocmVhZF9wYXJrKGdwdS0+c2NoZWQudGhyZWFkKTsKLQlkcm1fc2NoZWRfaHdf am9iX3Jlc2V0KCZncHUtPnNjaGVkLCBzY2hlZF9qb2IpOworCWRybV9zY2hlZF9zdG9wKCZncHUt PnNjaGVkLCBzY2hlZF9qb2IpOworCisJaWYoc2NoZWRfam9iKQorCQlkcm1fc2NoZWRfaW5jcmVh c2Vfa2FybWEoc2NoZWRfam9iKTsKIAogCS8qIGdldCB0aGUgR1BVIGJhY2sgaW50byB0aGUgaW5p dCBzdGF0ZSAqLwogCWV0bmF2aXZfY29yZV9kdW1wKGdwdSk7CiAJZXRuYXZpdl9ncHVfcmVjb3Zl cl9oYW5nKGdwdSk7CiAKKwlkcm1fc2NoZWRfcmVzdWJtaXRfam9icygmZ3B1LT5zY2hlZCk7CisK IAkvKiByZXN0YXJ0IHNjaGVkdWxlciBhZnRlciBHUFUgaXMgdXNhYmxlIGFnYWluICovCi0JZHJt X3NjaGVkX2pvYl9yZWNvdmVyeSgmZ3B1LT5zY2hlZCk7Ci0Ja3RocmVhZF91bnBhcmsoZ3B1LT5z Y2hlZC50aHJlYWQpOworCWRybV9zY2hlZF9zdGFydCgmZ3B1LT5zY2hlZCwgdHJ1ZSk7CiB9CiAK IHN0YXRpYyB2b2lkIGV0bmF2aXZfc2NoZWRfZnJlZV9qb2Ioc3RydWN0IGRybV9zY2hlZF9qb2Ig KnNjaGVkX2pvYikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvc2NoZWRf bWFpbi5jIGIvZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9zY2hlZF9tYWluLmMKaW5kZXggZGJi NjkwNi4uNTRlODA5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9zY2hl ZF9tYWluLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9zY2hlZF9tYWluLmMKQEAg LTYwLDggKzYwLDYgQEAKIAogc3RhdGljIHZvaWQgZHJtX3NjaGVkX3Byb2Nlc3Nfam9iKHN0cnVj dCBkbWFfZmVuY2UgKmYsIHN0cnVjdCBkbWFfZmVuY2VfY2IgKmNiKTsKIAotc3RhdGljIHZvaWQg ZHJtX3NjaGVkX2V4cGVsX2pvYl91bmxvY2tlZChzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc19qb2Ip OwotCiAvKioKICAqIGRybV9zY2hlZF9ycV9pbml0IC0gaW5pdGlhbGl6ZSBhIGdpdmVuIHJ1biBx dWV1ZSBzdHJ1Y3QKICAqCkBAIC0zMzUsNiArMzMzLDUxIEBAIHN0YXRpYyB2b2lkIGRybV9zY2hl ZF9qb2JfdGltZWRvdXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7CiB9CiAKKyAvKioKKyAgKiBk cm1fc2NoZWRfaW5jcmVhc2Vfa2FybWEgLSBVcGRhdGUgc2NoZWRfZW50aXR5IGd1aWx0eSBmbGFn CisgICoKKyAgKiBAYmFkOiBUaGUgam9iIGd1aWx0eSBvZiB0aW1lIG91dAorICAqCisgICogSW5j cmVtZW50IG9uIGV2ZXJ5IGhhbmcgY2F1c2VkIGJ5IHRoZSAnYmFkJyBqb2IuIElmIHRoaXMgZXhj ZWVkcyB0aGUgaGFuZworICAqIGxpbWl0IG9mIHRoZSBzY2hlZHVsZXIgdGhlbiB0aGUgcmVzcGVj dGl2ZSBzY2hlZCBlbnRpdHkgaXMgbWFya2VkIGd1aWx0eSBhbmQKKyAgKiBqb2JzIGZyb20gaXQg d2lsbCBub3QgYmUgc2NoZWR1bGVkIGZ1cnRoZXIKKyAgKi8KK3ZvaWQgZHJtX3NjaGVkX2luY3Jl YXNlX2thcm1hKHN0cnVjdCBkcm1fc2NoZWRfam9iICpiYWQpCit7CisJaW50IGk7CisJc3RydWN0 IGRybV9zY2hlZF9lbnRpdHkgKnRtcDsKKwlzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5 OworCXN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQgPSBiYWQtPnNjaGVkOworCisJLyog ZG9uJ3QgaW5jcmVhc2UgQGJhZCdzIGthcm1hIGlmIGl0J3MgZnJvbSBLRVJORUwgUlEsCisJICog YmVjYXVzZSBzb21ldGltZXMgR1BVIGhhbmcgd291bGQgY2F1c2Uga2VybmVsIGpvYnMgKGxpa2Ug Vk0gdXBkYXRpbmcgam9icykKKwkgKiBjb3JydXB0IGJ1dCBrZWVwIGluIG1pbmQgdGhhdCBrZXJu ZWwgam9icyBhbHdheXMgY29uc2lkZXJlZCBnb29kLgorCSAqLworCWlmIChiYWQtPnNfcHJpb3Jp dHkgIT0gRFJNX1NDSEVEX1BSSU9SSVRZX0tFUk5FTCkgeworCQlhdG9taWNfaW5jKCZiYWQtPmth cm1hKTsKKwkJZm9yIChpID0gRFJNX1NDSEVEX1BSSU9SSVRZX01JTjsgaSA8IERSTV9TQ0hFRF9Q UklPUklUWV9LRVJORUw7CisJCSAgICAgaSsrKSB7CisJCQlzdHJ1Y3QgZHJtX3NjaGVkX3JxICpy cSA9ICZzY2hlZC0+c2NoZWRfcnFbaV07CisKKwkJCXNwaW5fbG9jaygmcnEtPmxvY2spOworCQkJ bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVudGl0eSwgdG1wLCAmcnEtPmVudGl0aWVzLCBsaXN0 KSB7CisJCQkJaWYgKGJhZC0+c19mZW5jZS0+c2NoZWR1bGVkLmNvbnRleHQgPT0KKwkJCQkgICAg ZW50aXR5LT5mZW5jZV9jb250ZXh0KSB7CisJCQkJCWlmIChhdG9taWNfcmVhZCgmYmFkLT5rYXJt YSkgPgorCQkJCQkgICAgYmFkLT5zY2hlZC0+aGFuZ19saW1pdCkKKwkJCQkJCWlmIChlbnRpdHkt Pmd1aWx0eSkKKwkJCQkJCQlhdG9taWNfc2V0KGVudGl0eS0+Z3VpbHR5LCAxKTsKKwkJCQkJYnJl YWs7CisJCQkJfQorCQkJfQorCQkJc3Bpbl91bmxvY2soJnJxLT5sb2NrKTsKKwkJCWlmICgmZW50 aXR5LT5saXN0ICE9ICZycS0+ZW50aXRpZXMpCisJCQkJYnJlYWs7CisJCX0KKwl9Cit9CitFWFBP UlRfU1lNQk9MKGRybV9zY2hlZF9pbmNyZWFzZV9rYXJtYSk7CisKIC8qKgogICogZHJtX3NjaGVk X2h3X2pvYl9yZXNldCAtIHN0b3AgdGhlIHNjaGVkdWxlciBpZiBpdCBjb250YWlucyB0aGUgYmFk IGpvYgogICoKQEAgLTM0MiwxMyArMzg1LDIyIEBAIHN0YXRpYyB2b2lkIGRybV9zY2hlZF9qb2Jf dGltZWRvdXQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogICogQGJhZDogYmFkIHNjaGVkdWxl ciBqb2IKICAqCiAgKi8KLXZvaWQgZHJtX3NjaGVkX2h3X2pvYl9yZXNldChzdHJ1Y3QgZHJtX2dw dV9zY2hlZHVsZXIgKnNjaGVkLCBzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqYmFkKQordm9pZCBkcm1f c2NoZWRfc3RvcChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLCBzdHJ1Y3QgZHJtX3Nj aGVkX2pvYiAqYmFkKQogewotCXN0cnVjdCBkcm1fc2NoZWRfam9iICpzX2pvYjsKLQlzdHJ1Y3Qg ZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5LCAqdG1wOworCXN0cnVjdCBkcm1fc2NoZWRfam9iICpz X2pvYiwgKnRtcDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwotCWludCBpOworCXN0cnVjdCBkbWFf ZmVuY2UgKndhaXRfZmVuY2UgPSAgTlVMTDsKKwlpbnQgcjsKKworCWt0aHJlYWRfcGFyayhzY2hl ZC0+dGhyZWFkKTsKIAorCS8qCisJICogVmVyaWZ5IGFsbCB0aGUgc2lnbmFsZWQgam9icyBpbiBt aXJyb3IgbGlzdCBhcmUgcmVtb3ZlZCBmcm9tIHRoZSByaW5nCisJICogYnkgd2FpdGluZyBmb3Ig dGhlaXIgcmVzcGVjdGl2ZSBzY2hlZHVsZXIgZmVuY2VzIHRvIHNpZ25hbC4KKwkgKiBDb250aW51 YWxseSAgcmVwZWF0IHRyYXZlcnNpbmcgdGhlIHJpbmcgbWlycm9yIGxpc3QgdW50aWwgbm8gbW9y ZSBzaWduYWxlZAorCSAqIGZlbmNlcyBhcmUgZm91bmQKKwkgKi8KK3JldHJ5X3dhaXQ6CiAJc3Bp bl9sb2NrX2lycXNhdmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7CiAJbGlzdF9mb3Jf ZWFjaF9lbnRyeV9yZXZlcnNlKHNfam9iLCAmc2NoZWQtPnJpbmdfbWlycm9yX2xpc3QsIG5vZGUp IHsKIAkJaWYgKHNfam9iLT5zX2ZlbmNlLT5wYXJlbnQgJiYKQEAgLTM1NywzNSArNDA5LDQzIEBA IHZvaWQgZHJtX3NjaGVkX2h3X2pvYl9yZXNldChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNj aGVkLCBzdHJ1Y3QgZHJtX3NjaGVkX2pvCiAJCQlkbWFfZmVuY2VfcHV0KHNfam9iLT5zX2ZlbmNl LT5wYXJlbnQpOwogCQkJc19qb2ItPnNfZmVuY2UtPnBhcmVudCA9IE5VTEw7CiAJCQlhdG9taWNf ZGVjKCZzY2hlZC0+aHdfcnFfY291bnQpOworCQl9IGVsc2UgeworCQkJIHdhaXRfZmVuY2UgPSBk bWFfZmVuY2VfZ2V0KCZzX2pvYi0+c19mZW5jZS0+ZmluaXNoZWQpOworCQkJIGJyZWFrOwogCQl9 CiAJfQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFn cyk7CiAKLQlpZiAoYmFkICYmIGJhZC0+c19wcmlvcml0eSAhPSBEUk1fU0NIRURfUFJJT1JJVFlf S0VSTkVMKSB7Ci0JCWF0b21pY19pbmMoJmJhZC0+a2FybWEpOwotCQkvKiBkb24ndCBpbmNyZWFz ZSBAYmFkJ3Mga2FybWEgaWYgaXQncyBmcm9tIEtFUk5FTCBSUSwKLQkJICogYmVjdWFzZSBzb21l dGltZXMgR1BVIGhhbmcgd291bGQgY2F1c2Uga2VybmVsIGpvYnMgKGxpa2UgVk0gdXBkYXRpbmcg am9icykKLQkJICogY29ycnVwdCBidXQga2VlcCBpbiBtaW5kIHRoYXQga2VybmVsIGpvYnMgYWx3 YXlzIGNvbnNpZGVyZWQgZ29vZC4KLQkJICovCi0JCWZvciAoaSA9IERSTV9TQ0hFRF9QUklPUklU WV9NSU47IGkgPCBEUk1fU0NIRURfUFJJT1JJVFlfS0VSTkVMOyBpKysgKSB7Ci0JCQlzdHJ1Y3Qg ZHJtX3NjaGVkX3JxICpycSA9ICZzY2hlZC0+c2NoZWRfcnFbaV07CisJLyogTm8gc2lnbmFsZWQg am9icyBpbiB0aGUgcmluZywgaXRzIHNhZmUgdG8gcHJvY2VlZCB0byBBU0lDIHJlc2V0ICovCisJ aWYgKCF3YWl0X2ZlbmNlKSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjaGVkLT5qb2Jf bGlzdF9sb2NrLCBmbGFncyk7CisJCXJldHVybjsKKwl9CiAKLQkJCXNwaW5fbG9jaygmcnEtPmxv Y2spOwotCQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVudGl0eSwgdG1wLCAmcnEtPmVudGl0 aWVzLCBsaXN0KSB7Ci0JCQkJaWYgKGJhZC0+c19mZW5jZS0+c2NoZWR1bGVkLmNvbnRleHQgPT0g ZW50aXR5LT5mZW5jZV9jb250ZXh0KSB7Ci0JCQkJICAgIGlmIChhdG9taWNfcmVhZCgmYmFkLT5r YXJtYSkgPiBiYWQtPnNjaGVkLT5oYW5nX2xpbWl0KQotCQkJCQkJaWYgKGVudGl0eS0+Z3VpbHR5 KQotCQkJCQkJCWF0b21pY19zZXQoZW50aXR5LT5ndWlsdHksIDEpOwotCQkJCQlicmVhazsKLQkJ CQl9Ci0JCQl9Ci0JCQlzcGluX3VubG9jaygmcnEtPmxvY2spOwotCQkJaWYgKCZlbnRpdHktPmxp c3QgIT0gJnJxLT5lbnRpdGllcykKLQkJCQlicmVhazsKKwkvKiBSZXN0b3JlIHJlbW92ZWQgY2Ig c2luY2UgcmVtb3ZpbmcgYWdhaW4gYWxyZWFkeSByZW1vdmVkIGNiIGlzIHVuZGVmaW5lZCAqLwor CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZV9jb250aW51ZShzX2pvYiwgdG1wLCAmc2NoZWQtPnJp bmdfbWlycm9yX2xpc3QsIG5vZGUpIHsKKworCQlpZiAoc19qb2ItPnNfZmVuY2UtPnBhcmVudCkg eworCQkJciA9IGRtYV9mZW5jZV9hZGRfY2FsbGJhY2soc19qb2ItPnNfZmVuY2UtPnBhcmVudCwK KwkJCQkJCSAgICZzX2pvYi0+c19mZW5jZS0+Y2IsCisJCQkJCQkgICBkcm1fc2NoZWRfcHJvY2Vz c19qb2IpOworCQkJaWYgKHIgPT0gLUVOT0VOVCkKKwkJCQlkcm1fc2NoZWRfcHJvY2Vzc19qb2Io c19qb2ItPnNfZmVuY2UtPnBhcmVudCwKKwkJCQkJCSAgICAgICZzX2pvYi0+c19mZW5jZS0+Y2Ip OworCQkJZWxzZSBpZiAocikKKwkJCQlEUk1fRVJST1IoImZlbmNlIGFkZCBjYWxsYmFjayBmYWls ZWQgKCVkKVxuIiwKKwkJCQkJICByKTsKIAkJfQogCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxhZ3MpOworCisJZG1hX2ZlbmNlX3dhaXQod2FpdF9m ZW5jZSwgZmFsc2UpOworCWRtYV9mZW5jZV9wdXQod2FpdF9mZW5jZSk7CisJd2FpdF9mZW5jZSA9 IE5VTEw7CisKKwlnb3RvIHJldHJ5X3dhaXQ7CiB9Ci1FWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9o d19qb2JfcmVzZXQpOworCitFWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9zdG9wKTsKIAogLyoqCiAg KiBkcm1fc2NoZWRfam9iX3JlY292ZXJ5IC0gcmVjb3ZlciBqb2JzIGFmdGVyIGEgcmVzZXQKQEAg LTM5MywzMyArNDUzLDIxIEBAIEVYUE9SVF9TWU1CT0woZHJtX3NjaGVkX2h3X2pvYl9yZXNldCk7 CiAgKiBAc2NoZWQ6IHNjaGVkdWxlciBpbnN0YW5jZQogICoKICAqLwotdm9pZCBkcm1fc2NoZWRf am9iX3JlY292ZXJ5KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCit2b2lkIGRybV9z Y2hlZF9zdGFydChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLCBib29sIGZ1bGxfcmVj b3ZlcnkpCiB7CiAJc3RydWN0IGRybV9zY2hlZF9qb2IgKnNfam9iLCAqdG1wOwotCWJvb2wgZm91 bmRfZ3VpbHR5ID0gZmFsc2U7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgcjsKIAorCWlm ICghZnVsbF9yZWNvdmVyeSkKKwkJZ290byB1bnBhcms7CisKIAlzcGluX2xvY2tfaXJxc2F2ZSgm c2NoZWQtPmpvYl9saXN0X2xvY2ssIGZsYWdzKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUo c19qb2IsIHRtcCwgJnNjaGVkLT5yaW5nX21pcnJvcl9saXN0LCBub2RlKSB7CiAJCXN0cnVjdCBk cm1fc2NoZWRfZmVuY2UgKnNfZmVuY2UgPSBzX2pvYi0+c19mZW5jZTsKLQkJc3RydWN0IGRtYV9m ZW5jZSAqZmVuY2U7Ci0JCXVpbnQ2NF90IGd1aWx0eV9jb250ZXh0OwotCi0JCWlmICghZm91bmRf Z3VpbHR5ICYmIGF0b21pY19yZWFkKCZzX2pvYi0+a2FybWEpID4gc2NoZWQtPmhhbmdfbGltaXQp IHsKLQkJCWZvdW5kX2d1aWx0eSA9IHRydWU7Ci0JCQlndWlsdHlfY29udGV4dCA9IHNfam9iLT5z X2ZlbmNlLT5zY2hlZHVsZWQuY29udGV4dDsKLQkJfQotCi0JCWlmIChmb3VuZF9ndWlsdHkgJiYg c19qb2ItPnNfZmVuY2UtPnNjaGVkdWxlZC5jb250ZXh0ID09IGd1aWx0eV9jb250ZXh0KQotCQkJ ZG1hX2ZlbmNlX3NldF9lcnJvcigmc19mZW5jZS0+ZmluaXNoZWQsIC1FQ0FOQ0VMRUQpOwotCi0J CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7Ci0J CWZlbmNlID0gc2NoZWQtPm9wcy0+cnVuX2pvYihzX2pvYik7Ci0JCWF0b21pY19pbmMoJnNjaGVk LT5od19ycV9jb3VudCk7CisJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlID0gc19qb2ItPnNfZmVu Y2UtPnBhcmVudDsKIAogCQlpZiAoZmVuY2UpIHsKLQkJCXNfZmVuY2UtPnBhcmVudCA9IGRtYV9m ZW5jZV9nZXQoZmVuY2UpOwogCQkJciA9IGRtYV9mZW5jZV9hZGRfY2FsbGJhY2soZmVuY2UsICZz X2ZlbmNlLT5jYiwKIAkJCQkJCSAgIGRybV9zY2hlZF9wcm9jZXNzX2pvYik7CiAJCQlpZiAociA9 PSAtRU5PRU5UKQpAQCAtNDI3LDE4ICs0NzUsNDcgQEAgdm9pZCBkcm1fc2NoZWRfam9iX3JlY292 ZXJ5KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCiAJCQllbHNlIGlmIChyKQogCQkJ CURSTV9FUlJPUigiZmVuY2UgYWRkIGNhbGxiYWNrIGZhaWxlZCAoJWQpXG4iLAogCQkJCQkgIHIp OwotCQkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7Ci0JCX0gZWxzZSB7Ci0JCQlpZiAoc19mZW5jZS0+ ZmluaXNoZWQuZXJyb3IgPCAwKQotCQkJCWRybV9zY2hlZF9leHBlbF9qb2JfdW5sb2NrZWQoc19q b2IpOworCQl9IGVsc2UKIAkJCWRybV9zY2hlZF9wcm9jZXNzX2pvYihOVUxMLCAmc19mZW5jZS0+ Y2IpOwotCQl9Ci0JCXNwaW5fbG9ja19pcnFzYXZlKCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxh Z3MpOwogCX0KKwogCWRybV9zY2hlZF9zdGFydF90aW1lb3V0KHNjaGVkKTsKIAlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxhZ3MpOworCit1bnBhcms6CisJ a3RocmVhZF91bnBhcmsoc2NoZWQtPnRocmVhZCk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9zY2hl ZF9zdGFydCk7CisKKy8qKgorICogZHJtX3NjaGVkX3Jlc3VibWl0X2pvYnMgLSBoZWxwZXIgdG8g cmVsdW5jaCBqb2IgZnJvbSBtaXJyb3IgcmluZyBsaXN0CisgKgorICogQHNjaGVkOiBzY2hlZHVs ZXIgaW5zdGFuY2UKKyAqCisgKi8KK3ZvaWQgZHJtX3NjaGVkX3Jlc3VibWl0X2pvYnMoc3RydWN0 IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCkKK3sKKwlzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc19q b2IsICp0bXA7CisJdWludDY0X3QgZ3VpbHR5X2NvbnRleHQ7CisJYm9vbCBmb3VuZF9ndWlsdHkg PSBmYWxzZTsKKworCS8qVE9ETyBETyB3ZSBuZWVkIHNwaW5sb2NrIGhlcmUgPyAqLworCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShzX2pvYiwgdG1wLCAmc2NoZWQtPnJpbmdfbWlycm9yX2xpc3Qs IG5vZGUpIHsKKwkJc3RydWN0IGRybV9zY2hlZF9mZW5jZSAqc19mZW5jZSA9IHNfam9iLT5zX2Zl bmNlOworCisJCWlmICghZm91bmRfZ3VpbHR5ICYmIGF0b21pY19yZWFkKCZzX2pvYi0+a2FybWEp ID4gc2NoZWQtPmhhbmdfbGltaXQpIHsKKwkJCWZvdW5kX2d1aWx0eSA9IHRydWU7CisJCQlndWls dHlfY29udGV4dCA9IHNfam9iLT5zX2ZlbmNlLT5zY2hlZHVsZWQuY29udGV4dDsKKwkJfQorCisJ CWlmIChmb3VuZF9ndWlsdHkgJiYgc19qb2ItPnNfZmVuY2UtPnNjaGVkdWxlZC5jb250ZXh0ID09 IGd1aWx0eV9jb250ZXh0KQorCQkJZG1hX2ZlbmNlX3NldF9lcnJvcigmc19mZW5jZS0+ZmluaXNo ZWQsIC1FQ0FOQ0VMRUQpOworCisJCXNfam9iLT5zX2ZlbmNlLT5wYXJlbnQgPSBzY2hlZC0+b3Bz LT5ydW5fam9iKHNfam9iKTsKKwkJYXRvbWljX2luYygmc2NoZWQtPmh3X3JxX2NvdW50KTsKKwl9 CiB9Ci1FWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9qb2JfcmVjb3ZlcnkpOworRVhQT1JUX1NZTUJP TChkcm1fc2NoZWRfcmVzdWJtaXRfam9icyk7CiAKIC8qKgogICogZHJtX3NjaGVkX2pvYl9pbml0 IC0gaW5pdCBhIHNjaGVkdWxlciBqb2IKQEAgLTYzNCwyNiArNzExLDE0IEBAIHN0YXRpYyBpbnQg ZHJtX3NjaGVkX21haW4odm9pZCAqcGFyYW0pCiAJCQkJRFJNX0VSUk9SKCJmZW5jZSBhZGQgY2Fs bGJhY2sgZmFpbGVkICglZClcbiIsCiAJCQkJCSAgcik7CiAJCQlkbWFfZmVuY2VfcHV0KGZlbmNl KTsKLQkJfSBlbHNlIHsKLQkJCWlmIChzX2ZlbmNlLT5maW5pc2hlZC5lcnJvciA8IDApCi0JCQkJ ZHJtX3NjaGVkX2V4cGVsX2pvYl91bmxvY2tlZChzY2hlZF9qb2IpOworCQl9IGVsc2UKIAkJCWRy bV9zY2hlZF9wcm9jZXNzX2pvYihOVUxMLCAmc19mZW5jZS0+Y2IpOwotCQl9CiAKIAkJd2FrZV91 cCgmc2NoZWQtPmpvYl9zY2hlZHVsZWQpOwogCX0KIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZv aWQgZHJtX3NjaGVkX2V4cGVsX2pvYl91bmxvY2tlZChzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc19q b2IpCi17Ci0Jc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCA9IHNfam9iLT5zY2hlZDsK LQotCXNwaW5fbG9jaygmc2NoZWQtPmpvYl9saXN0X2xvY2spOwotCWxpc3RfZGVsX2luaXQoJnNf am9iLT5ub2RlKTsKLQlzcGluX3VubG9jaygmc2NoZWQtPmpvYl9saXN0X2xvY2spOwotfQotCiAv KioKICAqIGRybV9zY2hlZF9pbml0IC0gSW5pdCBhIGdwdSBzY2hlZHVsZXIgaW5zdGFuY2UKICAq CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zY2hlZC5jIGIvZHJpdmVycy9n cHUvZHJtL3YzZC92M2Rfc2NoZWQuYwppbmRleCA0NDViMmVmLi5mNzZkOWVkIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zY2hlZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92 M2QvdjNkX3NjaGVkLmMKQEAgLTE3OCwxOCArMTc4LDIyIEBAIHYzZF9qb2JfdGltZWRvdXQoc3Ry dWN0IGRybV9zY2hlZF9qb2IgKnNjaGVkX2pvYikKIAlmb3IgKHEgPSAwOyBxIDwgVjNEX01BWF9R VUVVRVM7IHErKykgewogCQlzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkID0gJnYzZC0+ cXVldWVbcV0uc2NoZWQ7CiAKLQkJa3RocmVhZF9wYXJrKHNjaGVkLT50aHJlYWQpOwotCQlkcm1f c2NoZWRfaHdfam9iX3Jlc2V0KHNjaGVkLCAoc2NoZWRfam9iLT5zY2hlZCA9PSBzY2hlZCA/CisJ CWRybV9zY2hlZF9zdG9wKHNjaGVkLCAoc2NoZWRfam9iLT5zY2hlZCA9PSBzY2hlZCA/CiAJCQkJ CSAgICAgICBzY2hlZF9qb2IgOiBOVUxMKSk7CisKKwkJaWYoc2NoZWRfam9iKQorCQkJZHJtX3Nj aGVkX2luY3JlYXNlX2thcm1hKHNjaGVkX2pvYik7CiAJfQogCiAJLyogZ2V0IHRoZSBHUFUgYmFj ayBpbnRvIHRoZSBpbml0IHN0YXRlICovCiAJdjNkX3Jlc2V0KHYzZCk7CiAKKwlmb3IgKHEgPSAw OyBxIDwgVjNEX01BWF9RVUVVRVM7IHErKykKKwkJZHJtX3NjaGVkX3Jlc3VibWl0X2pvYnMoc2No ZWRfam9iLT5zY2hlZCk7CisKIAkvKiBVbmJsb2NrIHNjaGVkdWxlcnMgYW5kIHJlc3RhcnQgdGhl aXIgam9icy4gKi8KIAlmb3IgKHEgPSAwOyBxIDwgVjNEX01BWF9RVUVVRVM7IHErKykgewotCQlk cm1fc2NoZWRfam9iX3JlY292ZXJ5KCZ2M2QtPnF1ZXVlW3FdLnNjaGVkKTsKLQkJa3RocmVhZF91 bnBhcmsodjNkLT5xdWV1ZVtxXS5zY2hlZC50aHJlYWQpOworCQlkcm1fc2NoZWRfc3RhcnQoJnYz ZC0+cXVldWVbcV0uc2NoZWQsIHRydWUpOwogCX0KIAogCW11dGV4X3VubG9jaygmdjNkLT5yZXNl dF9sb2NrKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2dwdV9zY2hlZHVsZXIuaCBiL2luY2x1 ZGUvZHJtL2dwdV9zY2hlZHVsZXIuaAppbmRleCA0N2UxOTc5Li40ZjIxZmFmIDEwMDY0NAotLS0g YS9pbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmgKKysrIGIvaW5jbHVkZS9kcm0vZ3B1X3NjaGVk dWxlci5oCkBAIC0yOTgsOSArMjk4LDExIEBAIGludCBkcm1fc2NoZWRfam9iX2luaXQoc3RydWN0 IGRybV9zY2hlZF9qb2IgKmpvYiwKIAkJICAgICAgIHZvaWQgKm93bmVyKTsKIHZvaWQgZHJtX3Nj aGVkX2pvYl9jbGVhbnVwKHN0cnVjdCBkcm1fc2NoZWRfam9iICpqb2IpOwogdm9pZCBkcm1fc2No ZWRfd2FrZXVwKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpOwotdm9pZCBkcm1fc2No ZWRfaHdfam9iX3Jlc2V0KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCi0JCQkgICAg c3RydWN0IGRybV9zY2hlZF9qb2IgKmpvYik7Ci12b2lkIGRybV9zY2hlZF9qb2JfcmVjb3Zlcnko c3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCk7Cit2b2lkIGRybV9zY2hlZF9zdG9wKHN0 cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCisJCSAgICBzdHJ1Y3QgZHJtX3NjaGVkX2pv YiAqam9iKTsKK3ZvaWQgZHJtX3NjaGVkX3N0YXJ0KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAq c2NoZWQsIGJvb2wgZnVsbF9yZWNvdmVyeSk7Cit2b2lkIGRybV9zY2hlZF9yZXN1Ym1pdF9qb2Jz KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpOwordm9pZCBkcm1fc2NoZWRfaW5jcmVh c2Vfa2FybWEoc3RydWN0IGRybV9zY2hlZF9qb2IgKmJhZCk7CiBib29sIGRybV9zY2hlZF9kZXBl bmRlbmN5X29wdGltaXplZChzdHJ1Y3QgZG1hX2ZlbmNlKiBmZW5jZSwKIAkJCQkgICAgc3RydWN0 IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eSk7CiB2b2lkIGRybV9zY2hlZF9mYXVsdChzdHJ1Y3Qg ZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKTsKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2FtZC1nZngK