From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chunming Zhou Subject: [PATCH] [RFC]drm: add syncobj timeline support v5 Date: Fri, 14 Sep 2018 18:37:47 +0800 Message-ID: <20180914103747.23663-1-david1.zhou@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Id: Discussion list for AMD gfx 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 Cc: Chunming Zhou , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Daniel Rakos , Daniel Vetter , Dave Airlie , Christian Konig VGhpcyBwYXRjaCBpcyBmb3IgVktfS0hSX3RpbWVsaW5lX3NlbWFwaG9yZSBleHRlbnNpb24sIHNl bWFwaG9yZSBpcyBjYWxsZWQgc3luY29iaiBpbiBrZXJuZWwgc2lkZToKVGhpcyBleHRlbnNpb24g aW50cm9kdWNlcyBhIG5ldyB0eXBlIG9mIHN5bmNvYmogdGhhdCBoYXMgYW4gaW50ZWdlciBwYXls b2FkCmlkZW50aWZ5aW5nIGEgcG9pbnQgaW4gYSB0aW1lbGluZS4gU3VjaCB0aW1lbGluZSBzeW5j b2JqcyBzdXBwb3J0IHRoZQpmb2xsb3dpbmcgb3BlcmF0aW9uczoKICAgKiBDUFUgcXVlcnkgLSBB IGhvc3Qgb3BlcmF0aW9uIHRoYXQgYWxsb3dzIHF1ZXJ5aW5nIHRoZSBwYXlsb2FkIG9mIHRoZQog ICAgIHRpbWVsaW5lIHN5bmNvYmouCiAgICogQ1BVIHdhaXQgLSBBIGhvc3Qgb3BlcmF0aW9uIHRo YXQgYWxsb3dzIGEgYmxvY2tpbmcgd2FpdCBmb3IgYQogICAgIHRpbWVsaW5lIHN5bmNvYmogdG8g cmVhY2ggYSBzcGVjaWZpZWQgdmFsdWUuCiAgICogRGV2aWNlIHdhaXQgLSBBIGRldmljZSBvcGVy YXRpb24gdGhhdCBhbGxvd3Mgd2FpdGluZyBmb3IgYQogICAgIHRpbWVsaW5lIHN5bmNvYmogdG8g cmVhY2ggYSBzcGVjaWZpZWQgdmFsdWUuCiAgICogRGV2aWNlIHNpZ25hbCAtIEEgZGV2aWNlIG9w ZXJhdGlvbiB0aGF0IGFsbG93cyBhZHZhbmNpbmcgdGhlCiAgICAgdGltZWxpbmUgc3luY29iaiB0 byBhIHNwZWNpZmllZCB2YWx1ZS4KClNpbmNlIGl0J3MgYSB0aW1lbGluZSwgdGhhdCBtZWFucyB0 aGUgZnJvbnQgdGltZSBwb2ludChQVCkgYWx3YXlzIGlzIHNpZ25hbGVkIGJlZm9yZSB0aGUgbGF0 ZSBQVC4KYS4gc2lnbmFsIFBUIGRlc2lnbjoKU2lnbmFsIFBUIGZlbmNlIE4gZGVwZW5kcyBvbiBQ VFtOLTFdIGZlbmNlIGFuZCBzaWduYWwgb3BlcnRpb24gZmVuY2UsIHdoZW4gUFRbTl0gZmVuY2Ug aXMgc2lnbmFsZWQsCnRoZSB0aW1lbGluZSB3aWxsIGluY3JlYXNlIHRvIHZhbHVlIG9mIFBUW05d LgpiLiB3YWl0IFBUIGRlc2lnbjoKV2FpdCBQVCBmZW5jZSBpcyBzaWduYWxlZCBieSByZWFjaGlu ZyB0aW1lbGluZSBwb2ludCB2YWx1ZSwgd2hlbiB0aW1lbGluZSBpcyBpbmNyZWFzaW5nLCB3aWxs IGNvbXBhcmUKd2FpdCBQVHMgdmFsdWUgd2l0aCBuZXcgdGltZWxpbmUgdmFsdWUsIGlmIFBUIHZh bHVlIGlzIGxvd2VyIHRoYW4gdGltZWxpbmUgdmFsdWUsIHRoZW4gd2FpdCBQVCB3aWxsIGJlCnNp Z25hbGVkLCBvdGhlcndpc2Uga2VlcCBpbiBsaXN0LiBzeW5jb2JqIHdhaXQgb3BlcmF0aW9uIGNh biB3YWl0IG9uIGFueSBwb2ludCBvZiB0aW1lbGluZSwKc28gbmVlZCBhIFJCIHRyZWUgdG8gb3Jk ZXIgdGhlbS4gQW5kIHdhaXQgUFQgY291bGQgYWhlYWQgb2Ygc2lnbmFsIFBULCB3ZSBuZWVkIGEg c3VtaXNzaW9uIGZlbmNlIHRvCnBlcmZvcm0gdGhhdC4KCnYyOgoxLiByZW1vdmUgdW51c2VkIERS TV9TWU5DT0JKX0NSRUFURV9UWVBFX05PUk1BTC4gKENocmlzdGlhbikKMi4gbW92ZSB1bmV4cG9z ZWQgZGVuaXRpb25zIHRvIC5jIGZpbGUuIChEYW5pZWwgVmV0dGVyKQozLiBzcGxpdCB1cCB0aGUg Y2hhbmdlIHRvIGRybV9zeW5jb2JqX2ZpbmRfZmVuY2UoKSBpbiBhIHNlcGFyYXRlIHBhdGNoLiAo Q2hyaXN0aWFuKQo0LiBzcGxpdCB1cCB0aGUgY2hhbmdlIHRvIGRybV9zeW5jb2JqX3JlcGxhY2Vf ZmVuY2UoKSBpbiBhIHNlcGFyYXRlIHBhdGNoLgo1LiBkcm9wIHRoZSBzdWJtaXNzaW9uX2ZlbmNl IGltcGxlbWVudGF0aW9uIGFuZCBpbnN0ZWFkIHVzZSB3YWl0X2V2ZW50KCkgZm9yIHRoYXQuIChD aHJpc3RpYW4pCjYuIFdBUk5fT04ocG9pbnQgIT0gMCkgZm9yIE5PUk1BTCB0eXBlIHN5bmNvYmog Y2FzZS4gKERhbmllbCBWZXR0ZXIpCgp2MzoKMS4gcmVwbGFjZSBub3JtYWwgc3luY29iaiB3aXRo IHRpbWVsaW5lIGltcGxlbWVuYXRpb24uIChWZXR0ZXIgYW5kIENocmlzdGlhbikKICAgIGEuIG5v cm1hbCBzeW5jb2JqIHNpZ25hbCBvcCB3aWxsIGNyZWF0ZSBhIHNpZ25hbCBQVCB0byB0YWlsIG9m IHNpZ25hbCBwdCBsaXN0LgogICAgYi4gbm9ybWFsIHN5bmNvYmogd2FpdCBvcCB3aWxsIGNyZWF0 ZSBhIHdhaXQgcHQgd2l0aCBsYXN0IHNpZ25hbCBwb2ludCwgYW5kIHRoaXMgd2FpdCBQVCBpcyBv bmx5IHNpZ25hbGVkIGJ5IHJlbGF0ZWQgc2lnbmFsIHBvaW50IFBULgoyLiBtYW55IGJ1ZyBmaXgg YW5kIGNsZWFuIHVwCjMuIHN0dWIgZmVuY2UgbW92aW5nIGlzIG1vdmVkIHRvIG90aGVyIHBhdGNo LgoKdjTvvJoKMS4gZml4IFJCIHRyZWUgbG9vcCB3aXRoIHdoaWxlKG5vZGU9cmJfZmlyc3QoLi4u KSkuIChDaHJpc3RpYW4pCjIuIGZpeCBzeW5jb2JqIGxpZmVjeWNsZS4gKENocmlzdGlhbikKMy4g b25seSBlbmFibGVfc2lnbmFsaW5nIHdoZW4gdGhlcmUgaXMgd2FpdF9wdC4gKENocmlzdGlhbikK NC4gZml4IHRpbWVsaW5lIHBhdGggaXNzdWVzLgo1LiB3cml0ZSBhIHRpbWVsaW5lIHRlc3QgaW4g bGliZHJtCgp2NTogKENocmlzdGlhbikKMS4gc2VtYXBob3JlIGlzIGNhbGxlZCBzeW5jb2JqIGlu IGtlcm5lbCBzaWRlLgoyLiBkb24ndCBuZWVkICd0aW1lbGluZScgY2hhcmFjdGVycyBpbiBzb21l IGZ1bmN0aW9uIG5hbWUuCjMuIGtlZXAgc3luY29iaiBjYgoKbm9ybWFsIHN5bmNvYmogaXMgdGVz dGVkIGJ5IC4vZGVxcC12ayAtbiBkRVFQLVZLKnNlbWFwaG9yZSoKdGltZWxpbmUgc3luY29iaiBp cyB0ZXN0ZWQgYnkgLi9hbWRncHVfdGVzdCAtcyA5CgpTaWduZWQtb2ZmLWJ5OiBDaHVubWluZyBa aG91IDxkYXZpZDEuemhvdUBhbWQuY29tPgpDYzogQ2hyaXN0aWFuIEtvbmlnIDxjaHJpc3RpYW4u a29lbmlnQGFtZC5jb20+CkNjOiBEYXZlIEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29tPgpDYzog RGFuaWVsIFJha29zIDxEYW5pZWwuUmFrb3NAYW1kLmNvbT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRh bmllbEBmZndsbC5jaD4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyAgICAgICAg ICAgICAgfCAyOTQgKysrKysrKysrKysrKysrKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMgfCAgIDQgKy0KIGluY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgg ICAgICAgICAgICAgICAgICB8ICA2MiArKystLQogaW5jbHVkZS91YXBpL2RybS9kcm0uaCAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgMjkyIGluc2VydGlvbnMo KyksIDY5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3lu Y29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKaW5kZXggZTljZTYyM2QwNDll Li5lNzhkMDc2ZjI3MDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCkBAIC01Niw2ICs1Niw5IEBACiAj aW5jbHVkZSAiZHJtX2ludGVybmFsLmgiCiAjaW5jbHVkZSA8ZHJtL2RybV9zeW5jb2JqLmg+CiAK Ky8qIG1lcmdlIG5vcm1hbCBzeW5jb2JqIHRvIHRpbWVsaW5lIHN5bmNvYmosIHRoZSBwb2ludCBp bnRlcnZhbCBpcyAxICovCisjZGVmaW5lIERSTV9TWU5DT0JKX05PUk1BTF9QT0lOVCAxCisKIHN0 cnVjdCBkcm1fc3luY29ial9zdHViX2ZlbmNlIHsKIAlzdHJ1Y3QgZG1hX2ZlbmNlIGJhc2U7CiAJ c3BpbmxvY2tfdCBsb2NrOwpAQCAtODIsNiArODUsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBk bWFfZmVuY2Vfb3BzIGRybV9zeW5jb2JqX3N0dWJfZmVuY2Vfb3BzID0gewogCS5yZWxlYXNlID0g ZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZV9yZWxlYXNlLAogfTsKIAorc3RydWN0IGRybV9zeW5jb2Jq X3NpZ25hbF9wdCB7CisJc3RydWN0IGRtYV9mZW5jZV9hcnJheSAqYmFzZTsKKwl1NjQgICAgdmFs dWU7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworfTsKIAogLyoqCiAgKiBkcm1fc3luY29ial9m aW5kIC0gbG9va3VwIGFuZCByZWZlcmVuY2UgYSBzeW5jIG9iamVjdC4KQEAgLTEyNCw3ICsxMzIs NyBAQCBzdGF0aWMgaW50IGRybV9zeW5jb2JqX2ZlbmNlX2dldF9vcl9hZGRfY2FsbGJhY2soc3Ry dWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAogewogCWludCByZXQ7CiAKLQkqZmVuY2UgPSBkcm1f c3luY29ial9mZW5jZV9nZXQoc3luY29iaik7CisJcmV0ID0gZHJtX3N5bmNvYmpfc2VhcmNoX2Zl bmNlKHN5bmNvYmosIDAsIDAsIGZlbmNlKTsKIAlpZiAoKmZlbmNlKQogCQlyZXR1cm4gMTsKIApA QCAtMTMzLDEwICsxNDEsMTAgQEAgc3RhdGljIGludCBkcm1fc3luY29ial9mZW5jZV9nZXRfb3Jf YWRkX2NhbGxiYWNrKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKIAkgKiBoYXZlIHRoZSBs b2NrLCB0cnkgb25lIG1vcmUgdGltZSBqdXN0IHRvIGJlIHN1cmUgd2UgZG9uJ3QgYWRkIGEKIAkg KiBjYWxsYmFjayB3aGVuIGEgZmVuY2UgaGFzIGFscmVhZHkgYmVlbiBzZXQuCiAJICovCi0JaWYg KHN5bmNvYmotPmZlbmNlKSB7Ci0JCSpmZW5jZSA9IGRtYV9mZW5jZV9nZXQocmN1X2RlcmVmZXJl bmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5jZSwKLQkJCQkJCQkJIGxvY2tkZXBfaXNfaGVsZCgm c3luY29iai0+bG9jaykpKTsKLQkJcmV0ID0gMTsKKwlpZiAoZmVuY2UpIHsKKwkJZHJtX3N5bmNv Ympfc2VhcmNoX2ZlbmNlKHN5bmNvYmosIDAsIDAsIGZlbmNlKTsKKwkJaWYgKCpmZW5jZSkKKwkJ CXJldCA9IDE7CiAJfSBlbHNlIHsKIAkJKmZlbmNlID0gTlVMTDsKIAkJZHJtX3N5bmNvYmpfYWRk X2NhbGxiYWNrX2xvY2tlZChzeW5jb2JqLCBjYiwgZnVuYyk7CkBAIC0xNjQsNiArMTcyLDE1MSBA QCB2b2lkIGRybV9zeW5jb2JqX3JlbW92ZV9jYWxsYmFjayhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5 bmNvYmosCiAJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwogfQogCitzdGF0aWMgdm9pZCBk cm1fc3luY29ial90aW1lbGluZV9pbml0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKKwkJ CQkgICAgICBzdHJ1Y3QgZHJtX3N5bmNvYmpfdGltZWxpbmUgKnN5bmNvYmpfdGltZWxpbmUpCit7 CisJc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKKwlzeW5jb2JqX3RpbWVsaW5lLT50aW1lbGlu ZV9jb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7CisJc3luY29ial90aW1lbGlu ZS0+dGltZWxpbmUgPSAwOworCXN5bmNvYmpfdGltZWxpbmUtPnNpZ25hbF9wb2ludCA9IDA7CisJ aW5pdF93YWl0cXVldWVfaGVhZCgmc3luY29ial90aW1lbGluZS0+d3EpOworCisJSU5JVF9MSVNU X0hFQUQoJnN5bmNvYmpfdGltZWxpbmUtPnNpZ25hbF9wdF9saXN0KTsKKwlzcGluX3VubG9jaygm c3luY29iai0+bG9jayk7Cit9CisKK3N0YXRpYyB2b2lkIGRybV9zeW5jb2JqX3RpbWVsaW5lX2Zp bmkoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAorCQkJCSAgICAgIHN0cnVjdCBkcm1fc3lu Y29ial90aW1lbGluZSAqc3luY29ial90aW1lbGluZSkKK3sKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpf c2lnbmFsX3B0ICpzaWduYWxfcHQgPSBOVUxMLCAqdG1wOworCisJc3Bpbl9sb2NrKCZzeW5jb2Jq LT5sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2lnbmFsX3B0LCB0bXAsCisJCQkJ ICZzeW5jb2JqX3RpbWVsaW5lLT5zaWduYWxfcHRfbGlzdCwgbGlzdCkgeworCQlsaXN0X2RlbCgm c2lnbmFsX3B0LT5saXN0KTsKKwkJZG1hX2ZlbmNlX3B1dCgmc2lnbmFsX3B0LT5iYXNlLT5iYXNl KTsKKwkJa2ZyZWUoc2lnbmFsX3B0KTsKKwl9CisJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2sp OworfQorCitzdGF0aWMgc3RydWN0IGRtYV9mZW5jZQorKmRybV9zeW5jb2JqX2ZpbmRfc2lnbmFs X3B0X2Zvcl9wb2ludChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCisJCQkJICAgICAgdWlu dDY0X3QgcG9pbnQpCit7CisJc3RydWN0IGRybV9zeW5jb2JqX3RpbWVsaW5lICp0aW1lbGluZSA9 ICZzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lOworCXN0cnVjdCBkcm1fc3luY29ial9zaWduYWxf cHQgKnNpZ25hbF9wdDsKKworCWlmICgoc3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBF X1RJTUVMSU5FKSAmJgorCSAgICAocG9pbnQgPD0gdGltZWxpbmUtPnRpbWVsaW5lKSkgeworCQlz dHJ1Y3QgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZSAqZmVuY2UgPQorCQkJa3phbGxvYyhzaXplb2Yo c3RydWN0IGRybV9zeW5jb2JqX3N0dWJfZmVuY2UpLAorCQkJCUdGUF9LRVJORUwpOworCisJCWlm ICghZmVuY2UpCisJCQlyZXR1cm4gTlVMTDsKKwkJc3Bpbl9sb2NrX2luaXQoJmZlbmNlLT5sb2Nr KTsKKwkJZG1hX2ZlbmNlX2luaXQoJmZlbmNlLT5iYXNlLAorCQkJICAgICAgICZkcm1fc3luY29i al9zdHViX2ZlbmNlX29wcywKKwkJCSAgICAgICAmZmVuY2UtPmxvY2ssCisJCQkgICAgICAgc3lu Y29iai0+c3luY29ial90aW1lbGluZS50aW1lbGluZV9jb250ZXh0LAorCQkJICAgICAgIHBvaW50 KTsKKworCQlkbWFfZmVuY2Vfc2lnbmFsKCZmZW5jZS0+YmFzZSk7CisJCXJldHVybiAmZmVuY2Ut PmJhc2U7CisJfQorCisJbGlzdF9mb3JfZWFjaF9lbnRyeShzaWduYWxfcHQsICZ0aW1lbGluZS0+ c2lnbmFsX3B0X2xpc3QsIGxpc3QpIHsKKwkJaWYgKHBvaW50ID4gc2lnbmFsX3B0LT52YWx1ZSkK KwkJCWNvbnRpbnVlOworCQlpZiAoKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9O T1JNQUwpICYmCisJCSAgICAocG9pbnQgIT0gc2lnbmFsX3B0LT52YWx1ZSkpCisJCQljb250aW51 ZTsKKwkJcmV0dXJuIGRtYV9mZW5jZV9nZXQoJnNpZ25hbF9wdC0+YmFzZS0+YmFzZSk7CisJfQor CXJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50IGRybV9zeW5jb2JqX2NyZWF0ZV9zaWduYWxf cHQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAorCQkJCQlzdHJ1Y3QgZG1hX2ZlbmNlICpm ZW5jZSwKKwkJCQkJdTY0IHBvaW50KQoreworCXN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQg KnNpZ25hbF9wdCA9CisJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkcm1fc3luY29ial9zaWduYWxf cHQpLCBHRlBfS0VSTkVMKTsKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0ICp0YWlsX3B0 OworCXN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZXM7CisJaW50IG51bV9mZW5jZXMgPSAwOworCWlu dCByZXQgPSAwLCBpOworCisJaWYgKCFzaWduYWxfcHQpCisJCXJldHVybiAtRU5PTUVNOworCWlm IChzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lLnNpZ25hbF9wb2ludCA+PSBwb2ludCkgeworCQlE Uk1fV0FSTigiQSBsYXRlciBzaWduYWwgaXMgcmVhZHkhIik7CisJCWdvdG8gb3V0OworCX0KKwlp ZiAoIWZlbmNlKQorCQlnb3RvIG91dDsKKworCWZlbmNlcyA9IGttYWxsb2NfYXJyYXkoc2l6ZW9m KHZvaWQgKiksIDIsIEdGUF9LRVJORUwpOworCWlmICghZmVuY2VzKQorCQlnb3RvIG91dDsKKwlm ZW5jZXNbbnVtX2ZlbmNlcysrXSA9IGRtYV9mZW5jZV9nZXQoZmVuY2UpOworCS8qIHRpbWVsaW5l IHN5bmNvYmogbXVzdCB0YWtlIHRoaXMgZGVwZW5kZW5jeSAqLworCWlmIChzeW5jb2JqLT50eXBl ID09IERSTV9TWU5DT0JKX1RZUEVfVElNRUxJTkUpIHsKKwkJc3Bpbl9sb2NrKCZzeW5jb2JqLT5s b2NrKTsKKwkJaWYgKCFsaXN0X2VtcHR5KCZzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lLnNpZ25h bF9wdF9saXN0KSkgeworCQkJdGFpbF9wdCA9IGxpc3RfbGFzdF9lbnRyeSgmc3luY29iai0+c3lu Y29ial90aW1lbGluZS5zaWduYWxfcHRfbGlzdCwKKwkJCQkJCSAgc3RydWN0IGRybV9zeW5jb2Jq X3NpZ25hbF9wdCwgbGlzdCk7CisJCQlmZW5jZXNbbnVtX2ZlbmNlcysrXSA9IGRtYV9mZW5jZV9n ZXQoJnRhaWxfcHQtPmJhc2UtPmJhc2UpOworCQl9CisJCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5s b2NrKTsKKwl9CisJc2lnbmFsX3B0LT5iYXNlID0gZG1hX2ZlbmNlX2FycmF5X2NyZWF0ZShudW1f ZmVuY2VzLCBmZW5jZXMsCisJCQkJCQkgc3luY29iai0+c3luY29ial90aW1lbGluZS50aW1lbGlu ZV9jb250ZXh0LAorCQkJCQkJIHBvaW50LCBmYWxzZSk7CisJaWYgKCFzaWduYWxfcHQtPmJhc2Up CisJCWdvdG8gZmFpbDsKKworCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CisJc2lnbmFsX3B0 LT52YWx1ZSA9IHBvaW50OworCUlOSVRfTElTVF9IRUFEKCZzaWduYWxfcHQtPmxpc3QpOworCWxp c3RfYWRkX3RhaWwoJnNpZ25hbF9wdC0+bGlzdCwgJnN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUu c2lnbmFsX3B0X2xpc3QpOworCXN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUuc2lnbmFsX3BvaW50 ID0gcG9pbnQ7CisJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOworCXdha2VfdXBfYWxsKCZz eW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lLndxKTsKKworCXJldHVybiAwOworZmFpbDoKKwlmb3Ig KGkgPSAwOyBpIDwgbnVtX2ZlbmNlczsgaSsrKQorCQlkbWFfZmVuY2VfcHV0KGZlbmNlc1tpXSk7 CisJa2ZyZWUoZmVuY2VzKTsKK291dDoKKwlrZnJlZShzaWduYWxfcHQpOworCXJldHVybiByZXQ7 Cit9CisKK3N0YXRpYyB2b2lkIGRybV9zeW5jb2JqX2dhcmJhZ2VfY29sbGVjdGlvbihzdHJ1Y3Qg ZHJtX3N5bmNvYmogKnN5bmNvYmopCit7CisJc3RydWN0IGRybV9zeW5jb2JqX3RpbWVsaW5lICp0 aW1lbGluZSA9ICZzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lOworCXN0cnVjdCBkcm1fc3luY29i al9zaWduYWxfcHQgKnNpZ25hbF9wdCwgKnRtcDsKKworCXNwaW5fbG9jaygmc3luY29iai0+bG9j ayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNpZ25hbF9wdCwgdG1wLAorCQkJCSAmdGlt ZWxpbmUtPnNpZ25hbF9wdF9saXN0LCBsaXN0KSB7CisJCWlmIChkbWFfZmVuY2VfaXNfc2lnbmFs ZWQoJnNpZ25hbF9wdC0+YmFzZS0+YmFzZSkpIHsKKwkJCXRpbWVsaW5lLT50aW1lbGluZSA9IHNp Z25hbF9wdC0+dmFsdWU7CisJCQlsaXN0X2RlbCgmc2lnbmFsX3B0LT5saXN0KTsKKwkJCWRtYV9m ZW5jZV9wdXQoJnNpZ25hbF9wdC0+YmFzZS0+YmFzZSk7CisJCQlrZnJlZShzaWduYWxfcHQpOwor CQl9IGVsc2UgeworCQkJLypzaWduYWxfcHQgaXMgaW4gb3JkZXIgaW4gbGlzdCwgZnJvbSBzbWFs bCB0byBiaWcsIHNvCisJCQkgKiB0aGUgbGF0ZXIgbXVzdCBub3QgYmUgc2lnbmFsIGVpdGhlciAq LworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7Cit9 CiAvKioKICAqIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UgLSByZXBsYWNlIGZlbmNlIGluIGEg c3luYyBvYmplY3QuCiAgKiBAc3luY29iajogU3luYyBvYmplY3QgdG8gcmVwbGFjZSBmZW5jZSBp bgpAQCAtMTc2LDI4ICszMjksMzcgQEAgdm9pZCBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN0 cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKIAkJCSAgICAgICB1NjQgcG9pbnQsCiAJCQkgICAg ICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCiB7Ci0Jc3RydWN0IGRtYV9mZW5jZSAqb2xkX2Zl bmNlOwotCXN0cnVjdCBkcm1fc3luY29ial9jYiAqY3VyLCAqdG1wOwotCi0JaWYgKGZlbmNlKQot CQlkbWFfZmVuY2VfZ2V0KGZlbmNlKTsKLQotCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7Ci0K LQlvbGRfZmVuY2UgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHN5bmNvYmotPmZlbmNlLAot CQkJCQkgICAgICBsb2NrZGVwX2lzX2hlbGQoJnN5bmNvYmotPmxvY2spKTsKLQlyY3VfYXNzaWdu X3BvaW50ZXIoc3luY29iai0+ZmVuY2UsIGZlbmNlKTsKKwlkcm1fc3luY29ial9nYXJiYWdlX2Nv bGxlY3Rpb24oc3luY29iaik7CisJaWYgKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQ RV9USU1FTElORSkgeworCQlpZiAoZmVuY2UpCisJCQlkcm1fc3luY29ial9jcmVhdGVfc2lnbmFs X3B0KHN5bmNvYmosIGZlbmNlLCBwb2ludCk7CisJfSBlbHNlIGlmIChzeW5jb2JqLT50eXBlID09 IERSTV9TWU5DT0JKX1RZUEVfTk9STUFMKSB7CisJCXU2NCBwdF92YWx1ZTsKKworCQlpZiAoIWZl bmNlKSB7CisJCQlkcm1fc3luY29ial90aW1lbGluZV9maW5pKHN5bmNvYmosCisJCQkJCQkgICZz eW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lKTsKKwkJCWRybV9zeW5jb2JqX3RpbWVsaW5lX2luaXQo c3luY29iaiwKKwkJCQkJCSAgJnN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUpOworCQkJcmV0dXJu OworCQl9CisJCXB0X3ZhbHVlID0gc3luY29iai0+c3luY29ial90aW1lbGluZS5zaWduYWxfcG9p bnQgKworCQkJRFJNX1NZTkNPQkpfTk9STUFMX1BPSU5UOworCQlkcm1fc3luY29ial9jcmVhdGVf c2lnbmFsX3B0KHN5bmNvYmosIGZlbmNlLCBwdF92YWx1ZSk7CisJfSBlbHNlIHsKKwkJRFJNX0VS Uk9SKCJ0aGUgc3luY29iaiB0eXBlIGlzbid0IHN1cHBvcnRcbiIpOworCQlyZXR1cm47CisJfQor CWlmIChmZW5jZSkgeworCQlzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgKmN1ciwgKnRtcDsKIAotCWlm IChmZW5jZSAhPSBvbGRfZmVuY2UpIHsKKwkJc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKIAkJ bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGN1ciwgdG1wLCAmc3luY29iai0+Y2JfbGlzdCwgbm9k ZSkgewogCQkJbGlzdF9kZWxfaW5pdCgmY3VyLT5ub2RlKTsKIAkJCWN1ci0+ZnVuYyhzeW5jb2Jq LCBjdXIpOwogCQl9CisJCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKIAl9Ci0KLQlzcGlu X3VubG9jaygmc3luY29iai0+bG9jayk7Ci0KLQlkbWFfZmVuY2VfcHV0KG9sZF9mZW5jZSk7CiB9 CiBFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UpOwogCkBAIC0yMjAsNiAr MzgyLDI1IEBAIHN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN0cnVj dCBkcm1fc3luY29iaiAqc3luY29iaikKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHN0cnVjdCBk bWFfZmVuY2UgKgorZHJtX3N5bmNvYmpfcG9pbnRfZ2V0KHN0cnVjdCBkcm1fc3luY29iaiAqc3lu Y29iaiwgdTY0IHBvaW50LCB1NjQgZmxhZ3MpCit7CisJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7 CisJaW50IHJldCA9IDA7CisKKwlpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dB SVRfRk9SX1NVQk1JVCkgeworCQlyZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQoc3luY29iai0+c3lu Y29ial90aW1lbGluZS53cSwKKwkJCQkJcG9pbnQgPD0gc3luY29iai0+c3luY29ial90aW1lbGlu ZS5zaWduYWxfcG9pbnQsCisJCQkJCW1zZWNzX3RvX2ppZmZpZXMoMTAwMDApKTsgLyogd2FpdCAx MHMgKi8KKwkJaWYgKHJldCA8PSAwKQorCQkJcmV0dXJuIE5VTEw7CisJfQorCXNwaW5fbG9jaygm c3luY29iai0+bG9jayk7CisJZmVuY2UgPSBkcm1fc3luY29ial9maW5kX3NpZ25hbF9wdF9mb3Jf cG9pbnQoc3luY29iaiwgcG9pbnQpOworCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKKwly ZXR1cm4gZmVuY2U7Cit9CisKIC8qKgogICogZHJtX3N5bmNvYmpfZmluZF9mZW5jZSAtIGxvb2t1 cCBhbmQgcmVmZXJlbmNlIHRoZSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0CiAgKiBAZmlsZV9wcml2 YXRlOiBkcm0gZmlsZSBwcml2YXRlIHBvaW50ZXIKQEAgLTIzNCwyMCArNDE1LDQ2IEBAIHN0YXRp YyBpbnQgZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN0cnVjdCBkcm1fc3luY29iaiAq c3luY29iaikKICAqIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBmZW5jZSwgd2hpY2ggbXVz dCBiZSByZWxlYXNlZCBieSBjYWxsaW5nCiAgKiBkbWFfZmVuY2VfcHV0KCkuCiAgKi8KLWludCBk cm1fc3luY29ial9maW5kX2ZlbmNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAotCQkJ ICAgdTMyIGhhbmRsZSwgdTY0IHBvaW50LAotCQkJICAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNl KQoraW50IGRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNv YmosIHU2NCBwb2ludCwKKwkJCSAgICAgdTY0IGZsYWdzLCBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVu Y2UpCiB7Ci0Jc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChm aWxlX3ByaXZhdGUsIGhhbmRsZSk7CiAJaW50IHJldCA9IDA7CiAKIAlpZiAoIXN5bmNvYmopCiAJ CXJldHVybiAtRU5PRU5UOwogCi0JKmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNv YmopOworCWRybV9zeW5jb2JqX2dhcmJhZ2VfY29sbGVjdGlvbihzeW5jb2JqKTsKKwlpZiAoc3lu Y29iai0+dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX05PUk1BTCkgeworCQkvKk5PUk1BTCBzeW5j b2JqIGFsd2F5cyB3YWl0IG9uIGxhc3QgcHQgKi8KKwkJdTY0IHRhaWxfcHRfdmFsdWUgPSBzeW5j b2JqLT5zeW5jb2JqX3RpbWVsaW5lLnNpZ25hbF9wb2ludDsKKworCQlpZiAodGFpbF9wdF92YWx1 ZSA9PSAwKQorCQkJdGFpbF9wdF92YWx1ZSArPSBEUk1fU1lOQ09CSl9OT1JNQUxfUE9JTlQ7CisJ CS8qIE5PUk1BTCBzeW5jb2JqIGRvZXNuJ3QgY2FyZSBwb2ludCB2YWx1ZSAqLworCQlXQVJOX09O KHBvaW50ICE9IDApOworCQkqZmVuY2UgPSBkcm1fc3luY29ial9wb2ludF9nZXQoc3luY29iaiwg dGFpbF9wdF92YWx1ZSwKKwkJCQkJCQlmbGFncyk7CisJfSBlbHNlIGlmIChzeW5jb2JqLT50eXBl ID09IERSTV9TWU5DT0JKX1RZUEVfVElNRUxJTkUpIHsKKwkJKmZlbmNlID0gZHJtX3N5bmNvYmpf cG9pbnRfZ2V0KHN5bmNvYmosIHBvaW50LAorCQkJCQkJCWZsYWdzKTsKKwl9IGVsc2UgeworCQlE Uk1fRVJST1IoIkRvbid0IHN1cHBvcnQgdGhpcyB0eXBlIHN5bmNvYmpcbiIpOworCQkqZmVuY2Ug PSBOVUxMOworCX0KIAlpZiAoISpmZW5jZSkgewogCQlyZXQgPSAtRUlOVkFMOwogCX0KKwlyZXR1 cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9zZWFyY2hfZmVuY2UpOworaW50 IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCisJ CQkgICB1MzIgaGFuZGxlLCB1NjQgcG9pbnQsCisJCQkgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVu Y2UpIHsKKwlzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBkcm1fc3luY29ial9maW5kKGZp bGVfcHJpdmF0ZSwgaGFuZGxlKTsKKworCWludCByZXQgPSBkcm1fc3luY29ial9zZWFyY2hfZmVu Y2Uoc3luY29iaiwgcG9pbnQsCisJCQkJCURSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1Jf U1VCTUlULAorCQkJCQlmZW5jZSk7CiAJZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopOwogCXJldHVy biByZXQ7CiB9CkBAIC0yNjQsNyArNDcxLDcgQEAgdm9pZCBkcm1fc3luY29ial9mcmVlKHN0cnVj dCBrcmVmICprcmVmKQogCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiA9IGNvbnRhaW5lcl9v ZihrcmVmLAogCQkJCQkJICAgc3RydWN0IGRybV9zeW5jb2JqLAogCQkJCQkJICAgcmVmY291bnQp OwotCWRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3luY29iaiwgMCwgTlVMTCk7CisJZHJtX3N5 bmNvYmpfdGltZWxpbmVfZmluaShzeW5jb2JqLCAmc3luY29iai0+c3luY29ial90aW1lbGluZSk7 CiAJa2ZyZWUoc3luY29iaik7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX2ZyZWUpOwpA QCAtMjk0LDYgKzUwMSwxMSBAQCBpbnQgZHJtX3N5bmNvYmpfY3JlYXRlKHN0cnVjdCBkcm1fc3lu Y29iaiAqKm91dF9zeW5jb2JqLCB1aW50MzJfdCBmbGFncywKIAlrcmVmX2luaXQoJnN5bmNvYmot PnJlZmNvdW50KTsKIAlJTklUX0xJU1RfSEVBRCgmc3luY29iai0+Y2JfbGlzdCk7CiAJc3Bpbl9s b2NrX2luaXQoJnN5bmNvYmotPmxvY2spOworCWlmIChmbGFncyAmIERSTV9TWU5DT0JKX0NSRUFU RV9UWVBFX1RJTUVMSU5FKQorCQlzeW5jb2JqLT50eXBlID0gRFJNX1NZTkNPQkpfVFlQRV9USU1F TElORTsKKwllbHNlCisJCXN5bmNvYmotPnR5cGUgPSBEUk1fU1lOQ09CSl9UWVBFX05PUk1BTDsK Kwlkcm1fc3luY29ial90aW1lbGluZV9pbml0KHN5bmNvYmosICZzeW5jb2JqLT5zeW5jb2JqX3Rp bWVsaW5lKTsKIAogCWlmIChmbGFncyAmIERSTV9TWU5DT0JKX0NSRUFURV9TSUdOQUxFRCkgewog CQlyZXQgPSBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3luY29iaik7CkBAIC01NzYs NyArNzg4LDggQEAgZHJtX3N5bmNvYmpfY3JlYXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCiAJCXJldHVybiAtRU5PREVWOwogCiAJLyogbm8gdmFsaWQgZmxhZ3Mg eWV0ICovCi0JaWYgKGFyZ3MtPmZsYWdzICYgfkRSTV9TWU5DT0JKX0NSRUFURV9TSUdOQUxFRCkK KwlpZiAoYXJncy0+ZmxhZ3MgJiB+KERSTV9TWU5DT0JKX0NSRUFURV9TSUdOQUxFRCB8CisJCQkg ICAgRFJNX1NZTkNPQkpfQ1JFQVRFX1RZUEVfVElNRUxJTkUpKQogCQlyZXR1cm4gLUVJTlZBTDsK IAogCXJldHVybiBkcm1fc3luY29ial9jcmVhdGVfYXNfaGFuZGxlKGZpbGVfcHJpdmF0ZSwKQEAg LTY2OSw5ICs4ODIsOCBAQCBzdGF0aWMgdm9pZCBzeW5jb2JqX3dhaXRfc3luY29ial9mdW5jKHN0 cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKIAlzdHJ1Y3Qgc3luY29ial93YWl0X2VudHJ5ICp3 YWl0ID0KIAkJY29udGFpbmVyX29mKGNiLCBzdHJ1Y3Qgc3luY29ial93YWl0X2VudHJ5LCBzeW5j b2JqX2NiKTsKIAotCS8qIFRoaXMgaGFwcGVucyBpbnNpZGUgdGhlIHN5bmNvYmogbG9jayAqLwot CXdhaXQtPmZlbmNlID0gZG1hX2ZlbmNlX2dldChyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHN5 bmNvYmotPmZlbmNlLAotCQkJCQkJCSAgICAgIGxvY2tkZXBfaXNfaGVsZCgmc3luY29iai0+bG9j aykpKTsKKwlkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgMCwgMCwgJndhaXQtPmZl bmNlKTsKKwogCXdha2VfdXBfcHJvY2Vzcyh3YWl0LT50YXNrKTsKIH0KIApAQCAtNjk4LDcgKzkx MCw4IEBAIHN0YXRpYyBzaWduZWQgbG9uZyBkcm1fc3luY29ial9hcnJheV93YWl0X3RpbWVvdXQo c3RydWN0IGRybV9zeW5jb2JqICoqc3luY29ianMsCiAJc2lnbmFsZWRfY291bnQgPSAwOwogCWZv ciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAJCWVudHJpZXNbaV0udGFzayA9IGN1cnJlbnQ7 Ci0JCWVudHJpZXNbaV0uZmVuY2UgPSBkcm1fc3luY29ial9mZW5jZV9nZXQoc3luY29ianNbaV0p OworCQlyZXQgPSBkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29ianNbaV0sIDAsIDAsCisJ CQkJCSAgICAgICAmZW50cmllc1tpXS5mZW5jZSk7CiAJCWlmICghZW50cmllc1tpXS5mZW5jZSkg ewogCQkJaWYgKGZsYWdzICYgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQp IHsKIAkJCQljb250aW51ZTsKQEAgLTk3MCwxMiArMTE4MywyMSBAQCBkcm1fc3luY29ial9yZXNl dF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWlmIChyZXQgPCAw KQogCQlyZXR1cm4gcmV0OwogCi0JZm9yIChpID0gMDsgaSA8IGFyZ3MtPmNvdW50X2hhbmRsZXM7 IGkrKykKLQkJZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzeW5jb2Jqc1tpXSwgMCwgTlVMTCk7 Ci0KKwlmb3IgKGkgPSAwOyBpIDwgYXJncy0+Y291bnRfaGFuZGxlczsgaSsrKSB7CisJCWlmIChz eW5jb2Jqc1tpXS0+dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX1RJTUVMSU5FKSB7CisJCQlEUk1f RVJST1IoInRpbWVsaW5lIHN5bmNvYmogY2Fubm90IHJlc2V0IVxuIik7CisJCQlyZXQgPSAtRUlO VkFMOworCQkJZ290byBvdXQ7CisJCX0KKwkJZHJtX3N5bmNvYmpfdGltZWxpbmVfZmluaShzeW5j b2Jqc1tpXSwKKwkJCQkJICAmc3luY29ianNbaV0tPnN5bmNvYmpfdGltZWxpbmUpOworCQlkcm1f c3luY29ial90aW1lbGluZV9pbml0KHN5bmNvYmpzW2ldLAorCQkJCQkgICZzeW5jb2Jqc1tpXS0+ c3luY29ial90aW1lbGluZSk7CisJfQorb3V0OgogCWRybV9zeW5jb2JqX2FycmF5X2ZyZWUoc3lu Y29ianMsIGFyZ3MtPmNvdW50X2hhbmRsZXMpOwogCi0JcmV0dXJuIDA7CisJcmV0dXJuIHJldDsK IH0KIAogaW50CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVj YnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKaW5k ZXggMGE4ZDJkNjRmMzgwLi41NzllOTFhNTg1OGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMKQEAgLTIxMzcsNyArMjEzNyw5IEBAIGF3YWl0X2ZlbmNlX2Fy cmF5KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAogCQlpZiAoIShmbGFncyAmIEk5MTVfRVhF Q19GRU5DRV9XQUlUKSkKIAkJCWNvbnRpbnVlOwogCi0JCWZlbmNlID0gZHJtX3N5bmNvYmpfZmVu Y2VfZ2V0KHN5bmNvYmopOworCQlkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgMCwK KwkJCQkJIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VCTUlULAorCQkJCQkgJmZl bmNlKTsKIAkJaWYgKCFmZW5jZSkKIAkJCXJldHVybiAtRUlOVkFMOwogCmRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fc3luY29iai5oIGIvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaAppbmRl eCA0MjU0MzJiODVhODcuLjk1MzU1MjFlNjYyMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJt X3N5bmNvYmouaAorKysgYi9pbmNsdWRlL2RybS9kcm1fc3luY29iai5oCkBAIC0zMCw2ICszMCwy NSBAQAogCiBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2I7CiAKK2VudW0gZHJtX3N5bmNvYmpfdHlwZSB7 CisJRFJNX1NZTkNPQkpfVFlQRV9OT1JNQUwsCisJRFJNX1NZTkNPQkpfVFlQRV9USU1FTElORQor fTsKKworc3RydWN0IGRybV9zeW5jb2JqX3RpbWVsaW5lIHsKKwl3YWl0X3F1ZXVlX2hlYWRfdAl3 cTsKKwl1NjQgdGltZWxpbmVfY29udGV4dDsKKwkvKioKKwkgKiBAdGltZWxpbmU6IHN5bmNvYmog dGltZWxpbmUKKwkgKi8KKwl1NjQgdGltZWxpbmU7CisJdTY0IHNpZ25hbF9wb2ludDsKKworCisJ c3RydWN0IHJiX3Jvb3Qgd2FpdF9wdF90cmVlOworCXN0cnVjdCBsaXN0X2hlYWQgc2lnbmFsX3B0 X2xpc3Q7Cit9OworCiAvKioKICAqIHN0cnVjdCBkcm1fc3luY29iaiAtIHN5bmMgb2JqZWN0Lgog ICoKQEAgLTQxLDE5ICs2MCwxOSBAQCBzdHJ1Y3QgZHJtX3N5bmNvYmogewogCSAqLwogCXN0cnVj dCBrcmVmIHJlZmNvdW50OwogCS8qKgotCSAqIEBmZW5jZToKLQkgKiBOVUxMIG9yIGEgcG9pbnRl ciB0byB0aGUgZmVuY2UgYm91bmQgdG8gdGhpcyBvYmplY3QuCi0JICoKLQkgKiBUaGlzIGZpZWxk IHNob3VsZCBub3QgYmUgdXNlZCBkaXJlY3RseS4gVXNlIGRybV9zeW5jb2JqX2ZlbmNlX2dldCgp Ci0JICogYW5kIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UoKSBpbnN0ZWFkLgorCSAqIEB0eXBl OiBpbmRpY2F0ZSBzeW5jb2JqIHR5cGUKIAkgKi8KLQlzdHJ1Y3QgZG1hX2ZlbmNlIF9fcmN1ICpm ZW5jZTsKKwllbnVtIGRybV9zeW5jb2JqX3R5cGUgdHlwZTsKIAkvKioKLQkgKiBAY2JfbGlzdDog TGlzdCBvZiBjYWxsYmFja3MgdG8gY2FsbCB3aGVuIHRoZSAmZmVuY2UgZ2V0cyByZXBsYWNlZC4K KwkgKiBAc3luY29ial90aW1lbGluZTogdGltZWxpbmUKIAkgKi8KKwlzdHJ1Y3QgZHJtX3N5bmNv YmpfdGltZWxpbmUgc3luY29ial90aW1lbGluZTsKKwkvKioKKyAgICAgICAgICogQGNiX2xpc3Q6 IExpc3Qgb2YgY2FsbGJhY2tzIHRvIGNhbGwgd2hlbiB0aGUgJmZlbmNlIGdldHMgcmVwbGFjZWQu CisgICAgICAgICAqLwogCXN0cnVjdCBsaXN0X2hlYWQgY2JfbGlzdDsKIAkvKioKLQkgKiBAbG9j azogUHJvdGVjdHMgJmNiX2xpc3QgYW5kIHdyaXRlLWxvY2tzICZmZW5jZS4KKwkgKiBAbG9jazog UHJvdGVjdHMgc3luY29iaiBsaXN0IGFuZCB3cml0ZS1sb2NrcyAmZmVuY2UuCiAJICovCiAJc3Bp bmxvY2tfdCBsb2NrOwogCS8qKgpAQCAtNjgsNyArODcsNyBAQCB0eXBlZGVmIHZvaWQgKCpkcm1f c3luY29ial9mdW5jX3QpKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKIC8qKgogICogc3Ry dWN0IGRybV9zeW5jb2JqX2NiIC0gY2FsbGJhY2sgZm9yIGRybV9zeW5jb2JqX2FkZF9jYWxsYmFj awogICogQG5vZGU6IHVzZWQgYnkgZHJtX3N5bmNvYl9hZGRfY2FsbGJhY2sgdG8gYXBwZW5kIHRo aXMgc3RydWN0IHRvCi0gKgkgICZkcm1fc3luY29iai5jYl9saXN0CisgKiAgICAgICAmZHJtX3N5 bmNvYmouY2JfbGlzdAogICogQGZ1bmM6IGRybV9zeW5jb2JqX2Z1bmNfdCB0byBjYWxsCiAgKgog ICogVGhpcyBzdHJ1Y3Qgd2lsbCBiZSBpbml0aWFsaXplZCBieSBkcm1fc3luY29ial9hZGRfY2Fs bGJhY2ssIGFkZGl0aW9uYWwKQEAgLTEwNiwyOSArMTI1LDYgQEAgZHJtX3N5bmNvYmpfcHV0KHN0 cnVjdCBkcm1fc3luY29iaiAqb2JqKQogCWtyZWZfcHV0KCZvYmotPnJlZmNvdW50LCBkcm1fc3lu Y29ial9mcmVlKTsKIH0KIAotLyoqCi0gKiBkcm1fc3luY29ial9mZW5jZV9nZXQgLSBnZXQgYSBy ZWZlcmVuY2UgdG8gYSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0Ci0gKiBAc3luY29iajogc3luYyBv YmplY3QuCi0gKgotICogVGhpcyBhY3F1aXJlcyBhZGRpdGlvbmFsIHJlZmVyZW5jZSB0byAmZHJt X3N5bmNvYmouZmVuY2UgY29udGFpbmVkIGluIEBvYmosCi0gKiBpZiBub3QgTlVMTC4gSXQgaXMg aWxsZWdhbCB0byBjYWxsIHRoaXMgd2l0aG91dCBhbHJlYWR5IGhvbGRpbmcgYSByZWZlcmVuY2Uu Ci0gKiBObyBsb2NrcyByZXF1aXJlZC4KLSAqCi0gKiBSZXR1cm5zOgotICogRWl0aGVyIHRoZSBm ZW5jZSBvZiBAb2JqIG9yIE5VTEwgaWYgdGhlcmUncyBub25lLgotICovCi1zdGF0aWMgaW5saW5l IHN0cnVjdCBkbWFfZmVuY2UgKgotZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN0cnVjdCBkcm1fc3lu Y29iaiAqc3luY29iaikKLXsKLQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKLQotCXJjdV9yZWFk X2xvY2soKTsKLQlmZW5jZSA9IGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUoJnN5bmNvYmotPmZlbmNl KTsKLQlyY3VfcmVhZF91bmxvY2soKTsKLQotCXJldHVybiBmZW5jZTsKLX0KLQogc3RydWN0IGRy bV9zeW5jb2JqICpkcm1fc3luY29ial9maW5kKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRl LAogCQkJCSAgICAgdTMyIGhhbmRsZSk7CiB2b2lkIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uo c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1NjQgcG9pbnQsCkBAIC0xNDIsNSArMTM4LDcg QEAgaW50IGRybV9zeW5jb2JqX2NyZWF0ZShzdHJ1Y3QgZHJtX3N5bmNvYmogKipvdXRfc3luY29i aiwgdWludDMyX3QgZmxhZ3MsCiBpbnQgZHJtX3N5bmNvYmpfZ2V0X2hhbmRsZShzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGVfcHJpdmF0ZSwKIAkJCSAgIHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwg dTMyICpoYW5kbGUpOwogaW50IGRybV9zeW5jb2JqX2dldF9mZChzdHJ1Y3QgZHJtX3N5bmNvYmog KnN5bmNvYmosIGludCAqcF9mZCk7CitpbnQgZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN0cnVj dCBkcm1fc3luY29iaiAqc3luY29iaiwgdTY0IHBvaW50LAorCQkJICAgICB1NjQgZmxhZ3MsIHN0 cnVjdCBkbWFfZmVuY2UgKipmZW5jZSk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91 YXBpL2RybS9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKaW5kZXggMzAwZjMzNjYzM2Yy Li5jZWJkYjI1NDFlYjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKKysrIGIv aW5jbHVkZS91YXBpL2RybS9kcm0uaApAQCAtNzE3LDYgKzcxNyw3IEBAIHN0cnVjdCBkcm1fcHJp bWVfaGFuZGxlIHsKIHN0cnVjdCBkcm1fc3luY29ial9jcmVhdGUgewogCV9fdTMyIGhhbmRsZTsK ICNkZWZpbmUgRFJNX1NZTkNPQkpfQ1JFQVRFX1NJR05BTEVEICgxIDw8IDApCisjZGVmaW5lIERS TV9TWU5DT0JKX0NSRUFURV9UWVBFX1RJTUVMSU5FICgxIDw8IDEpCiAJX191MzIgZmxhZ3M7CiB9 OwogCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=