From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sharat Masetty Subject: [PATCH 09/13] drm/msm: Use the DRM common Scheduler Date: Mon, 1 Oct 2018 18:01:41 +0530 Message-ID: <1538397105-19581-10-git-send-email-smasetty@codeaurora.org> References: <1538397105-19581-1-git-send-email-smasetty@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1538397105-19581-1-git-send-email-smasetty-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, Sharat Masetty , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org VGhpcyBwYXRjaCBob29rcyB1cCB0aGUgRFJNIGdwdSBzY2hlZHVsZXIgdG8gdGhlIG1zbSBEUk0g ZHJpdmVyLiBUaGUKbW9zdCBub3RpY2VhYmxlIGNoYW5nZXMgdG8gdGhlIGRyaXZlciBhcmUgYXMg Zm9sbG93cy4gVGhlIHN1Ym1pdCBwYXRoIGlzCnNwbGl0IGludG8gdHdvIHBhcnRzLCBpbiB0aGUg dXNlciBjb250ZXh0IHRoZSBzdWJtaXQoam9iKSBpcyBjcmVhdGVkIGFuZAphZGRlZCB0byBvbmUg b2YgdGhlIGVudGl0eSdzIHNjaGVkdWxlciBydW4gcXVldWUuIFRoZSBzY2hlZHVsZXIgdGhlbgp0 cmllcyB0byBkcmFpbiB0aGUgcXVldWUgYnkgc3VibWl0dGluZyB0aGUgam9icyB0aGUgaGFyZHdh cmUgdG8gYWN0IHVwb24uClRoZSBzdWJtaXQgam9iIHNpdHMgb24gdGhlIHNjaGVkdWxlciBxdWV1 ZSB1bnRpbCBhbGwgdGhlIGRlcGVuZGVudApmZW5jZXMgYXJlIHdhaXRlZCB1cG9uIHN1Y2Nlc3Nm dWxseS4KCldlIGhhdmUgb25lIHNjaGVkdWxlciBpbnN0YW5jZSBwZXIgcmluZy4gVGhlIHN1Ym1p dHF1ZXVlcyB3aWxsIGhvc3QgYQpzY2hlZHVsZXIgZW50aXR5IG9iamVjdC4gVGhpcyBlbnRpdHkg d2lsbCBiZSBtYXBwZWQgdG8gdGhlIHNjaGVkdWxlcidzCmRlZmF1bHQgcnVucXVldWUuIFRoaXMg c2hvdWxkIGJlIGdvb2QgZm9yIG5vdywgYnV0IGluIGZ1dHVyZSBpdCBpcyBwb3NzaWJsZQp0byBl eHRlbmQgdGhlIEFQSSB0byBhbGxvdyBmb3Igc2NoZWR1bGluZyBhbW9uZ3N0IHRoZSBzdWJtaXRx dWV1ZXMgb24gdGhlCnNhbWUgcmluZy4KCldpdGggdGhpcyBwYXRjaCB0aGUgcm9sZSBvZiB0aGUg c3RydWN0X211dGV4IGxvY2sgaGFzIGJlZW4gZ3JlYXRseSByZWR1Y2VkIGluCnNjb3BlIGluIHRo ZSBzdWJtaXQgcGF0aCwgZXZpZGVudGx5IHdoZW4gYWN0dWFsbHkgcHV0dGluZyB0aGUgam9iIG9u IHRoZQpyaW5nYnVmZmVyLiBUaGlzIHNob3VsZCBlbmFibGUgdXMgd2l0aCBpbmNyZWFzZWQgcGFy YWxsZWxpc20gaW4gdGhlCmRyaXZlciB3aGljaCBzaG91bGQgdHJhbnNsYXRlIHRvIGJldHRlciBw ZXJmb3JtYW5jZSBvdmVyYWxsIGhvcGVmdWxseS4KClNpZ25lZC1vZmYtYnk6IFNoYXJhdCBNYXNl dHR5IDxzbWFzZXR0eUBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL0tj b25maWcgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUgICAg ICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oICAgICAgICAgfCAg IDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbS5jICAgICAgICAgfCAgIDggKy0KIGRy aXZlcnMvZ3B1L2RybS9tc20vbXNtX2dlbS5oICAgICAgICAgfCAgIDYgKwogZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZ2VtX3N1Ym1pdC5jICB8IDEzOCArKysrKysrKystLS0tLS0KIGRyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2dwdS5jICAgICAgICAgfCAgNzIgKysrKysrLS0KIGRyaXZlcnMvZ3B1 L2RybS9tc20vbXNtX2dwdS5oICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL21zbS9t c21fcmluZ2J1ZmZlci5jICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yaW5nYnVm ZmVyLmggIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3NjaGVkLmMgICAgICAgfCAz MTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL21z bS9tc21fc2NoZWQuaCAgICAgICB8ICAxOCArKwogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3Vi bWl0cXVldWUuYyB8ICAxOCArLQogMTMgZmlsZXMgY2hhbmdlZCwgNTA3IGluc2VydGlvbnMoKyks IDg1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20v bXNtX3NjaGVkLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9z Y2hlZC5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9LY29uZmlnIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9LY29uZmlnCmluZGV4IDM4Y2JkZTkuLjBkMDE4MTAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tc20vS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL0tj b25maWcKQEAgLTE1LDYgKzE1LDcgQEAgY29uZmlnIERSTV9NU00KIAlzZWxlY3QgU05EX1NPQ19I RE1JX0NPREVDIGlmIFNORF9TT0MKIAlzZWxlY3QgU1lOQ19GSUxFCiAJc2VsZWN0IFBNX09QUAor CXNlbGVjdCBEUk1fU0NIRUQKIAlkZWZhdWx0IHkKIAloZWxwCiAJICBEUk0vS01TIGRyaXZlciBm b3IgTVNNL3NuYXBkcmFnb24uCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2Vm aWxlIGIvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQppbmRleCBjZDQwYzA1Li43MWVkOTIx IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vTWFrZWZpbGUKQEAgLTYwLDcgKzYwLDggQEAgbXNtLXkgOj0gXAogCW1zbV9w ZXJmLm8gXAogCW1zbV9yZC5vIFwKIAltc21fcmluZ2J1ZmZlci5vIFwKLQltc21fc3VibWl0cXVl dWUubworCW1zbV9zdWJtaXRxdWV1ZS5vIFwKKwltc21fc2NoZWQubwogCiBtc20tJChDT05GSUdf REVCVUdfRlMpICs9IGFkcmVuby9hNXh4X2RlYnVnZnMubwogCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL21zbV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCmlu ZGV4IGIyZGExZmIuLmU0NjFhOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNt X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCkBAIC0yMTMsOCArMjEz LDcgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICptc21fZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJs ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogaW50IG1zbV9nZW1fbWFkdmlzZShzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaiwgdW5zaWduZWQgbWFkdik7CiBpbnQgbXNtX2dlbV9zeW5jX29iamVj dChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKIAkJc3RydWN0IG1zbV9mZW5jZV9jb250ZXh0 ICpmY3R4LCBib29sIGV4Y2x1c2l2ZSk7Ci12b2lkIG1zbV9nZW1fbW92ZV90b19hY3RpdmUoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCi0JCXN0cnVjdCBtc21fZ3B1ICpncHUsIGJvb2wgZXhj bHVzaXZlLCBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSk7Cit2b2lkIG1zbV9nZW1fbW92ZV90b19h Y3RpdmUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBtc21fZ3B1ICpncHUpOwog dm9pZCBtc21fZ2VtX21vdmVfdG9faW5hY3RpdmUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmop OwogaW50IG1zbV9nZW1fY3B1X3ByZXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHVpbnQz Ml90IG9wLCBrdGltZV90ICp0aW1lb3V0KTsKIGludCBtc21fZ2VtX2NwdV9maW5pKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqb2JqKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNt X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMKaW5kZXggZjU4M2JiNC4uN2Ex MmYzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmMKQEAgLTY2MywxNiArNjYzLDEyIEBAIGludCBtc21f Z2VtX3N5bmNfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAogCXJldHVybiAwOwog fQogCi12b2lkIG1zbV9nZW1fbW92ZV90b19hY3RpdmUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmosCi0JCXN0cnVjdCBtc21fZ3B1ICpncHUsIGJvb2wgZXhjbHVzaXZlLCBzdHJ1Y3QgZG1hX2Zl bmNlICpmZW5jZSkKK3ZvaWQgbXNtX2dlbV9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaiwgc3RydWN0IG1zbV9ncHUgKmdwdSkKIHsKIAlzdHJ1Y3QgbXNtX2dlbV9vYmpl Y3QgKm1zbV9vYmogPSB0b19tc21fYm8ob2JqKTsKIAlXQVJOX09OKG1zbV9vYmotPm1hZHYgIT0g TVNNX01BRFZfV0lMTE5FRUQpOwogCW1zbV9vYmotPmdwdSA9IGdwdTsKLQlpZiAoZXhjbHVzaXZl KQotCQlyZXNlcnZhdGlvbl9vYmplY3RfYWRkX2V4Y2xfZmVuY2UobXNtX29iai0+cmVzdiwgZmVu Y2UpOwotCWVsc2UKLQkJcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9zaGFyZWRfZmVuY2UobXNtX29i ai0+cmVzdiwgZmVuY2UpOworCiAJbGlzdF9kZWxfaW5pdCgmbXNtX29iai0+bW1fbGlzdCk7CiAJ bGlzdF9hZGRfdGFpbCgmbXNtX29iai0+bW1fbGlzdCwgJmdwdS0+YWN0aXZlX2xpc3QpOwogfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtLmggYi9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9nZW0uaAppbmRleCBjYWUzYWE1Li44YzYyNjlmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9n ZW0uaApAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSA8bGludXgva3JlZi5oPgogI2luY2x1 ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+CisjaW5jbHVkZSA8ZHJtL2dwdV9zY2hlZHVsZXIuaD4K ICNpbmNsdWRlICJtc21fZHJ2LmgiCiAKIC8qIEFkZGl0aW9uYWwgaW50ZXJuYWwtdXNlIG9ubHkg Qk8gZmxhZ3M6ICovCkBAIC0xMzYsNiArMTM3LDcgQEAgZW51bSBtc21fZ2VtX2xvY2sgewogICog bGFzdHMgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgc3VibWl0LWlvY3RsLgogICovCiBzdHJ1Y3Qg bXNtX2dlbV9zdWJtaXQgeworCXN0cnVjdCBkcm1fc2NoZWRfam9iIHNjaGVkX2pvYjsKIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2OwogCXN0cnVjdCBtc21fZmlsZV9wcml2YXRlICpjdHg7CiAJc3Ry dWN0IG1zbV9ncHUgKmdwdTsKQEAgLTE0NCw2ICsxNDYsNyBAQCBzdHJ1Y3QgbXNtX2dlbV9zdWJt aXQgewogCXN0cnVjdCB3d19hY3F1aXJlX2N0eCB0aWNrZXQ7CiAJdWludDMyX3Qgc2Vxbm87CQkv KiBTZXF1ZW5jZSBudW1iZXIgb2YgdGhlIHN1Ym1pdCBvbiB0aGUgcmluZyAqLwogCXN0cnVjdCBk bWFfZmVuY2UgKmh3X2ZlbmNlOworCXN0cnVjdCBkbWFfZmVuY2UgKmluX2ZlbmNlLCAqb3V0X2Zl bmNlOwogCWludCBvdXRfZmVuY2VfaWQ7CiAJc3RydWN0IG1zbV9ncHVfc3VibWl0cXVldWUgKnF1 ZXVlOwogCXN0cnVjdCBwaWQgKnBpZDsgICAgLyogc3VibWl0dGluZyBwcm9jZXNzICovCkBAIC0x NjIsNiArMTY1LDkgQEAgc3RydWN0IG1zbV9nZW1fc3VibWl0IHsKIAkJdWludDMyX3QgZmxhZ3M7 CiAJCXN0cnVjdCBtc21fZ2VtX29iamVjdCAqb2JqOwogCQl1aW50NjRfdCBpb3ZhOworCQlzdHJ1 Y3QgZG1hX2ZlbmNlICpleGNsOworCQl1aW50MzJfdCBucl9zaGFyZWQ7CisJCXN0cnVjdCBkbWFf ZmVuY2UgKipzaGFyZWQ7CiAJfSBib3NbMF07CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9nZW1fc3VibWl0LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW1f c3VibWl0LmMKaW5kZXggNzkzMWMyYS4uZGZmOTQ1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZ2VtX3N1Ym1pdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dl bV9zdWJtaXQuYwpAQCAtNjUsMjMgKzY1LDM3IEBAIHZvaWQgbXNtX2dlbV9zdWJtaXRfZnJlZShz dHJ1Y3QgbXNtX2dlbV9zdWJtaXQgKnN1Ym1pdCkKIHsKIAlpbnQgaTsKIAorCW11dGV4X2xvY2so JnN1Ym1pdC0+cmluZy0+ZmVuY2VfaWRyX2xvY2spOwogCWlkcl9yZW1vdmUoJnN1Ym1pdC0+cmlu Zy0+ZmVuY2VfaWRyLCBzdWJtaXQtPm91dF9mZW5jZV9pZCk7Ci0KLQlkbWFfZmVuY2VfcHV0KHN1 Ym1pdC0+aHdfZmVuY2UpOworCW11dGV4X3VubG9jaygmc3VibWl0LT5yaW5nLT5mZW5jZV9pZHJf bG9jayk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgc3VibWl0LT5ucl9ib3M7IGkrKykgeworCQlpbnQg ajsKKwogCQlzdHJ1Y3QgbXNtX2dlbV9vYmplY3QgKm1zbV9vYmogPSBzdWJtaXQtPmJvc1tpXS5v Ymo7CiAKIAkJaWYgKHN1Ym1pdC0+Ym9zW2ldLmZsYWdzICYgQk9fUElOTkVEKQogCQkJbXNtX2dl bV9wdXRfaW92YSgmbXNtX29iai0+YmFzZSwgc3VibWl0LT5ncHUtPmFzcGFjZSk7CiAKLQkJZHJt X2dlbV9vYmplY3RfcHV0KCZtc21fb2JqLT5iYXNlKTsKKwkJZHJtX2dlbV9vYmplY3RfcHV0X3Vu bG9ja2VkKCZtc21fb2JqLT5iYXNlKTsKKworCQkvKgorCQkgKiBXaGlsZSB3ZSBhcmUgYXQgaXQs IGNsZWFyIHRoZSBzYXZlZCBleGNsdXNpdmUgYW5kIHNoYXJlZAorCQkgKiBmZW5jZXMgaWYgYW55 CisJCSAqLworCQlkbWFfZmVuY2VfcHV0KHN1Ym1pdC0+Ym9zW2ldLmV4Y2wpOworCisJCWZvciAo aiA9IDA7IGogPCBzdWJtaXQtPmJvc1tpXS5ucl9zaGFyZWQ7IGorKykKKwkJCWRtYV9mZW5jZV9w dXQoc3VibWl0LT5ib3NbaV0uc2hhcmVkW2pdKTsKKworCQlrZnJlZShzdWJtaXQtPmJvc1tpXS5z aGFyZWQpOwogCX0KIAotCWxpc3RfZGVsKCZzdWJtaXQtPm5vZGUpOwogCXB1dF9waWQoc3VibWl0 LT5waWQpOwogCW1zbV9zdWJtaXRxdWV1ZV9wdXQoc3VibWl0LT5xdWV1ZSk7CiAKKwlkbWFfZmVu Y2VfcHV0KHN1Ym1pdC0+aW5fZmVuY2UpOworCWRtYV9mZW5jZV9wdXQoc3VibWl0LT5vdXRfZmVu Y2UpOwogCWtmcmVlKHN1Ym1pdCk7CiB9CiAKQEAgLTIzOCw2ICsyNTIsMjcgQEAgc3RhdGljIGlu dCBzdWJtaXRfbG9ja19vYmplY3RzKHN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0KQogCXJl dHVybiByZXQ7CiB9CiAKK3N0YXRpYyB2b2lkIHN1Ym1pdF9hdHRhY2hfZmVuY2VzX2FuZF91bmxv Y2soc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQpCit7CisJaW50IGk7CisKKwlmb3IgKGkg PSAwOyBpIDwgc3VibWl0LT5ucl9ib3M7IGkrKykgeworCQlzdHJ1Y3QgbXNtX2dlbV9vYmplY3Qg Km1zbV9vYmogPSBzdWJtaXQtPmJvc1tpXS5vYmo7CisKKwkJaWYgKHN1Ym1pdC0+Ym9zW2ldLmZs YWdzICYgTVNNX1NVQk1JVF9CT19XUklURSkKKwkJCXJlc2VydmF0aW9uX29iamVjdF9hZGRfZXhj bF9mZW5jZShtc21fb2JqLT5yZXN2LAorCQkJCQlzdWJtaXQtPm91dF9mZW5jZSk7CisJCWVsc2UK KwkJCXJlc2VydmF0aW9uX29iamVjdF9hZGRfc2hhcmVkX2ZlbmNlKG1zbV9vYmotPnJlc3YsCisJ CQkJCXN1Ym1pdC0+b3V0X2ZlbmNlKTsKKworCQlpZiAoc3VibWl0LT5ib3NbaV0uZmxhZ3MgJiBC T19MT0NLRUQpIHsKKwkJCXd3X211dGV4X3VubG9jaygmbXNtX29iai0+cmVzdi0+bG9jayk7CisJ CQlzdWJtaXQtPmJvc1tpXS5mbGFncyAmPSB+Qk9fTE9DS0VEOworCQl9CisJfQorfQorCiBzdGF0 aWMgaW50IHN1Ym1pdF9mZW5jZV9zeW5jKHN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0LCBi b29sIG5vX2ltcGxpY2l0KQogewogCWludCBpLCByZXQgPSAwOwpAQCAtMjYwLDEwICsyOTUsMjQg QEAgc3RhdGljIGludCBzdWJtaXRfZmVuY2Vfc3luYyhzdHJ1Y3QgbXNtX2dlbV9zdWJtaXQgKnN1 Ym1pdCwgYm9vbCBub19pbXBsaWNpdCkKIAkJaWYgKG5vX2ltcGxpY2l0KQogCQkJY29udGludWU7 CiAKLQkJcmV0ID0gbXNtX2dlbV9zeW5jX29iamVjdCgmbXNtX29iai0+YmFzZSwgc3VibWl0LT5y aW5nLT5mY3R4LAotCQkJd3JpdGUpOwotCQlpZiAocmV0KQotCQkJYnJlYWs7CisJCWlmICh3cml0 ZSkgeworCQkJLyoKKwkJCSAqIFNhdmUgdGhlIHBlciBidWZmZXIgc2hhcmVkIGFuZCBleGNsdXNp dmUgZmVuY2VzIGZvcgorCQkJICogdGhlIHNjaGVkdWxlciB0aHJlYWQgdG8gd2FpdCBvbi4KKwkJ CSAqCisJCQkgKiBOb3RlOiBUaGUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlIHN0b3JpbmcgdGhl CisJCQkgKiBzaGFyZWQgZmVuY2VzIHdpbGwgYmUgcmVsZWFzZWQgd2hlbiB0aGUgc2NoZWR1bGVy CisJCQkgKiBpcyBkb25lIHdhaXRpbmcgb24gYWxsIHRoZSBzYXZlZCBmZW5jZXMuCisJCQkgKi8K KwkJCXJldCA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRfZmVuY2VzX3JjdShtc21fb2JqLT5yZXN2 LAorCQkJCQkmc3VibWl0LT5ib3NbaV0uZXhjbCwKKwkJCQkJJnN1Ym1pdC0+Ym9zW2ldLm5yX3No YXJlZCwKKwkJCQkJJnN1Ym1pdC0+Ym9zW2ldLnNoYXJlZCk7CisJCQlpZiAocmV0KQorCQkJCXJl dHVybiByZXQ7CisJCX0gZWxzZQorCQkJc3VibWl0LT5ib3NbaV0uZXhjbCA9CisJCQkJcmVzZXJ2 YXRpb25fb2JqZWN0X2dldF9leGNsX3JjdShtc21fb2JqLT5yZXN2KTsKIAl9CiAKIAlyZXR1cm4g cmV0OwpAQCAtNDI1LDcgKzQ3NCw2IEBAIGludCBtc21faW9jdGxfZ2VtX3N1Ym1pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXN0cnVjdCBtc21fZmlsZV9wcml2YXRlICpj dHggPSBmaWxlLT5kcml2ZXJfcHJpdjsKIAlzdHJ1Y3QgbXNtX2dlbV9zdWJtaXQgKnN1Ym1pdDsK IAlzdHJ1Y3QgbXNtX2dwdSAqZ3B1ID0gcHJpdi0+Z3B1OwotCXN0cnVjdCBkbWFfZmVuY2UgKmlu X2ZlbmNlID0gTlVMTDsKIAlzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGUgPSBOVUxMOwogCXN0 cnVjdCBtc21fZ3B1X3N1Ym1pdHF1ZXVlICpxdWV1ZTsKIAlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIg KnJpbmc7CkBAIC00NTcsMzIgKzUwNSwxMSBAQCBpbnQgbXNtX2lvY3RsX2dlbV9zdWJtaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAogCXJpbmcgPSBncHUtPnJiW3F1ZXVl LT5wcmlvXTsKIAotCWlmIChhcmdzLT5mbGFncyAmIE1TTV9TVUJNSVRfRkVOQ0VfRkRfSU4pIHsK LQkJaW5fZmVuY2UgPSBzeW5jX2ZpbGVfZ2V0X2ZlbmNlKGFyZ3MtPmZlbmNlX2ZkKTsKLQotCQlp ZiAoIWluX2ZlbmNlKQotCQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQkJLyoKLQkJICogV2FpdCBpZiB0 aGUgZmVuY2UgaXMgZnJvbSBhIGZvcmVpZ24gY29udGV4dCwgb3IgaWYgdGhlIGZlbmNlCi0JCSAq IGFycmF5IGNvbnRhaW5zIGFueSBmZW5jZSBmcm9tIGEgZm9yZWlnbiBjb250ZXh0LgotCQkgKi8K LQkJaWYgKCFkbWFfZmVuY2VfbWF0Y2hfY29udGV4dChpbl9mZW5jZSwgcmluZy0+ZmN0eC0+Y29u dGV4dCkpIHsKLQkJCXJldCA9IGRtYV9mZW5jZV93YWl0KGluX2ZlbmNlLCB0cnVlKTsKLQkJCWlm IChyZXQpCi0JCQkJcmV0dXJuIHJldDsKLQkJfQotCX0KLQotCXJldCA9IG11dGV4X2xvY2tfaW50 ZXJydXB0aWJsZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7 Ci0KIAlpZiAoYXJncy0+ZmxhZ3MgJiBNU01fU1VCTUlUX0ZFTkNFX0ZEX09VVCkgewogCQlvdXRf ZmVuY2VfZmQgPSBnZXRfdW51c2VkX2ZkX2ZsYWdzKE9fQ0xPRVhFQyk7CiAJCWlmIChvdXRfZmVu Y2VfZmQgPCAwKSB7CiAJCQlyZXQgPSBvdXRfZmVuY2VfZmQ7Ci0JCQlnb3RvIG91dF91bmxvY2s7 CisJCQlnb3RvIG91dF9lcnI7CiAJCX0KIAl9CiAKQEAgLTQ5MCw3ICs1MTcsMTYgQEAgaW50IG1z bV9pb2N0bF9nZW1fc3VibWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJ CQlhcmdzLT5ucl9jbWRzLCBjdHgpOwogCWlmICghc3VibWl0KSB7CiAJCXJldCA9IC1FTk9NRU07 Ci0JCWdvdG8gb3V0X3VubG9jazsKKwkJZ290byBvdXRfZXJyOworCX0KKworCWlmIChhcmdzLT5m bGFncyAmIE1TTV9TVUJNSVRfRkVOQ0VfRkRfSU4pIHsKKwkJc3VibWl0LT5pbl9mZW5jZSA9IHN5 bmNfZmlsZV9nZXRfZmVuY2UoYXJncy0+ZmVuY2VfZmQpOworCisJCWlmICghc3VibWl0LT5pbl9m ZW5jZSkgeworCQkJcmV0ID0gLUVJTlZBTDsKKwkJCWdvdG8gb3V0OworCQl9CiAJfQogCiAJaWYg KGFyZ3MtPmZsYWdzICYgTVNNX1NVQk1JVF9TVURPKQpAQCAtNTczLDI4ICs2MDksMTYgQEAgaW50 IG1zbV9pb2N0bF9nZW1fc3VibWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CiAKIAlzdWJtaXQtPm5yX2NtZHMgPSBpOwogCi0JbXNtX2dwdV9zdWJtaXQoc3VibWl0KTsKLQlp ZiAoSVNfRVJSKHN1Ym1pdC0+aHdfZmVuY2UpKSB7Ci0JCXJldCA9IFBUUl9FUlIoc3VibWl0LT5o d19mZW5jZSk7Ci0JCXN1Ym1pdC0+aHdfZmVuY2UgPSBOVUxMOworCXJldCA9IG1zbV9zY2hlZF9q b2JfaW5pdCgmc3VibWl0LT5zY2hlZF9qb2IpOworCWlmIChyZXQpCiAJCWdvdG8gb3V0OwotCX0K IAotCS8qCi0JICogTm8gcHJvdGVjdGlvbiBzaG91bGQgYmUgb2theSBoZXJlIHNpbmNlIHRoaXMg aXMgcHJvdGVjdGVkIGJ5IHRoZSBiaWcKLQkgKiBHUFUgbG9jay4KLQkgKi8KLQlzdWJtaXQtPm91 dF9mZW5jZV9pZCA9IGlkcl9hbGxvY19jeWNsaWMoJnJpbmctPmZlbmNlX2lkciwKLQkJCXN1Ym1p dC0+aHdfZmVuY2UsIDAsIElOVF9NQVgsIEdGUF9LRVJORUwpOwotCWlmIChzdWJtaXQtPm91dF9m ZW5jZV9pZCA8IDApIHsKLQkJcmV0ID0gLUVOT01FTTsKLQkJZ290byBvdXQ7Ci0JfQorCXN1Ym1p dF9hdHRhY2hfZmVuY2VzX2FuZF91bmxvY2soc3VibWl0KTsKIAogCWFyZ3MtPmZlbmNlID0gc3Vi bWl0LT5vdXRfZmVuY2VfaWQ7CiAKIAlpZiAoYXJncy0+ZmxhZ3MgJiBNU01fU1VCTUlUX0ZFTkNF X0ZEX09VVCkgewotCQlzeW5jX2ZpbGUgPSBzeW5jX2ZpbGVfY3JlYXRlKHN1Ym1pdC0+aHdfZmVu Y2UpOworCQlzeW5jX2ZpbGUgPSBzeW5jX2ZpbGVfY3JlYXRlKHN1Ym1pdC0+b3V0X2ZlbmNlKTsK IAkJaWYgKCFzeW5jX2ZpbGUpIHsKIAkJCXJldCA9IC1FTk9NRU07CiAJCQlnb3RvIG91dDsKQEAg LTYwNCwxNCArNjI4LDIyIEBAIGludCBtc21faW9jdGxfZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAogCX0KIAogb3V0OgotCWlmIChpbl9mZW5jZSkKLQkJZG1h X2ZlbmNlX3B1dChpbl9mZW5jZSk7CisJLyoKKwkgKiBDbGVhbiB1cCB0aGUgc3VibWl0IGJpdHMg YW5kIHBpZWNlcyB3aGljaCBhcmUgbm90IG5lZWRlZCBiZXlvbmQgdGhpcworCSAqIGZ1bmN0aW9u IGNvbnRleHQKKwkgKi8KIAlzdWJtaXRfY2xlYW51cChzdWJtaXQpOwotCWlmIChyZXQpCisKKwlp ZiAoIXJldCkKKwkJLyoKKwkJICogSWYgd2UgcmVhY2hlZCBoZXJlLCB0aGVuIGFsbCBpcyB3ZWxs LiBQdXNoIHRoZSBqb2IgdG8gdGhlCisJCSAqIHNjaGVkdWxlcgorCQkgKi8KKwkJbXNtX3NjaGVk X3B1c2hfam9iKHN1Ym1pdCk7CisJZWxzZQogCQltc21fZ2VtX3N1Ym1pdF9mcmVlKHN1Ym1pdCk7 Ci1vdXRfdW5sb2NrOgorb3V0X2VycjoKIAlpZiAocmV0ICYmIChvdXRfZmVuY2VfZmQgPj0gMCkp CiAJCXB1dF91bnVzZWRfZmQob3V0X2ZlbmNlX2ZkKTsKLQltdXRleF91bmxvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZ3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYwppbmRleCBjZDVm ZTQ5Li40ODFhNTVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9ncHUuYwpAQCAtMjk1LDEyICsyOTUsMTcgQEAg c3RhdGljIHZvaWQgdXBkYXRlX2ZlbmNlcyhzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBzdHJ1Y3QgbXNt X3JpbmdidWZmZXIgKnJpbmcsCiBmaW5kX3N1Ym1pdChzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJp bmcsIHVpbnQzMl90IGZlbmNlKQogewogCXN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0Owor CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKLQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJnJpbmct PmdwdS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmcmluZy0+bG9j aywgZmxhZ3MpOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShzdWJtaXQsICZyaW5nLT5zdWJtaXRz LCBub2RlKQotCQlpZiAoc3VibWl0LT5zZXFubyA9PSBmZW5jZSkKKwkJaWYgKHN1Ym1pdC0+c2Vx bm8gPT0gZmVuY2UpIHsKKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJpbmctPmxvY2ssIGZs YWdzKTsKIAkJCXJldHVybiBzdWJtaXQ7CisJCX0KKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JnJpbmctPmxvY2ssIGZsYWdzKTsKIAogCXJldHVybiBOVUxMOwogfQpAQCAtMzE2LDYgKzMyMSwx MiBAQCBzdGF0aWMgdm9pZCByZWNvdmVyX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp CiAJc3RydWN0IG1zbV9yaW5nYnVmZmVyICpjdXJfcmluZyA9IGdwdS0+ZnVuY3MtPmFjdGl2ZV9y aW5nKGdwdSk7CiAJaW50IGk7CiAKKwlzdWJtaXQgPSBmaW5kX3N1Ym1pdChjdXJfcmluZywgY3Vy X3JpbmctPm1lbXB0cnMtPmZlbmNlICsgMSk7CisJcmV0dXJuIG1zbV9zY2hlZF9ncHVfcmVjb3Zl cnkoZ3B1LCBzdWJtaXQpOworCisJLyoKKwkgKiBUaGUgdW51c2VkIGNvZGUgYmVsb3cgd2lsbCBi ZSByZW1vdmVkIGluIGEgc3Vic2VxdWVudCBwYXRjaAorCSAqLwogCW11dGV4X2xvY2soJmRldi0+ c3RydWN0X211dGV4KTsKIAogCWRldl9lcnIoZGV2LT5kZXYsICIlczogaGFuZ2NoZWNrIHJlY292 ZXIhXG4iLCBncHUtPm5hbWUpOwpAQCAtNTkxLDExICs2MDIsMzYgQEAgc3RhdGljIHZvaWQgcmV0 aXJlX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJbXV0ZXhfdW5sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7CiB9CiAKLS8qIGNhbGwgZnJvbSBpcnEgaGFuZGxlciB0byBzY2hlZHVs ZSB3b3JrIHRvIHJldGlyZSBibydzICovCitzdGF0aWMgdm9pZCBzaWduYWxfaHdfZmVuY2VzKHN0 cnVjdCBtc21fcmluZ2J1ZmZlciAqcmluZykKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXN0 cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0LCAqdG1wOworCisJc3Bpbl9sb2NrX2lycXNhdmUo JnJpbmctPmxvY2ssIGZsYWdzKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzdWJtaXQs IHRtcCwgJnJpbmctPnN1Ym1pdHMsIG5vZGUpIHsKKwkJaWYgKHN1Ym1pdC0+c2Vxbm8gPiByaW5n LT5tZW1wdHJzLT5mZW5jZSkKKwkJCWJyZWFrOworCisJCWxpc3RfZGVsKCZzdWJtaXQtPm5vZGUp OworCisJCWRtYV9mZW5jZV9zaWduYWwoc3VibWl0LT5od19mZW5jZSk7CisJfQorCisJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmcmluZy0+bG9jaywgZmxhZ3MpOworfQorCisvKgorICogQ2FsbGVk IGZyb20gdGhlIElSUSBjb250ZXh0IHRvIHNpZ25hbCBoYXJkd2FyZSBmZW5jZXMgZm9yIHRoZSBj b21wbGV0ZWQKKyAqIHN1Ym1pdHMKKyAqLwogdm9pZCBtc21fZ3B1X3JldGlyZShzdHJ1Y3QgbXNt X2dwdSAqZ3B1KQogewotCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBncHUtPmRldi0+ ZGV2X3ByaXZhdGU7Ci0JcXVldWVfd29yayhwcml2LT53cSwgJmdwdS0+cmV0aXJlX3dvcmspOwor CWludCBpOworCisJZm9yIChpID0gMDsgaSA8IGdwdS0+bnJfcmluZ3M7IGkrKykKKwkJc2lnbmFs X2h3X2ZlbmNlcyhncHUtPnJiW2ldKTsKKwogCXVwZGF0ZV9zd19jbnRycyhncHUpOwogfQogCkBA IC02MDYsMjUgKzY0MiwyOCBAQCBzdHJ1Y3QgZG1hX2ZlbmNlICptc21fZ3B1X3N1Ym1pdChzdHJ1 Y3QgbXNtX2dlbV9zdWJtaXQgKnN1Ym1pdCkKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZ3B1 LT5kZXY7CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 CiAJc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nID0gc3VibWl0LT5yaW5nOworCXVuc2lnbmVk IGxvbmcgZmxhZ3M7CiAJaW50IGk7CiAKLQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+ c3RydWN0X211dGV4KSk7Ci0KIAlzdWJtaXQtPmh3X2ZlbmNlID0gbXNtX2ZlbmNlX2FsbG9jKHJp bmctPmZjdHgpOwogCWlmIChJU19FUlIoc3VibWl0LT5od19mZW5jZSkpCiAJCXJldHVybiBzdWJt aXQtPmh3X2ZlbmNlOwogCi0JcG1fcnVudGltZV9nZXRfc3luYygmZ3B1LT5wZGV2LT5kZXYpOwot Ci0JbXNtX2dwdV9od19pbml0KGdwdSk7CisJc3Bpbl9sb2NrX2lycXNhdmUoJnJpbmctPmxvY2ss IGZsYWdzKTsKKwlsaXN0X2FkZF90YWlsKCZzdWJtaXQtPm5vZGUsICZyaW5nLT5zdWJtaXRzKTsK KwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyaW5nLT5sb2NrLCBmbGFncyk7CiAKIAlzdWJtaXQt PnNlcW5vID0gKytyaW5nLT5zZXFubzsKIAotCWxpc3RfYWRkX3RhaWwoJnN1Ym1pdC0+bm9kZSwg JnJpbmctPnN1Ym1pdHMpOworCXVwZGF0ZV9zd19jbnRycyhncHUpOwogCi0JbXNtX3JkX2R1bXBf c3VibWl0KHByaXYtPnJkLCBzdWJtaXQsIE5VTEwpOworCW11dGV4X2xvY2soJmRldi0+c3RydWN0 X211dGV4KTsKIAotCXVwZGF0ZV9zd19jbnRycyhncHUpOworCXBtX3J1bnRpbWVfZ2V0X3N5bmMo JmdwdS0+cGRldi0+ZGV2KTsKKworCW1zbV9ncHVfaHdfaW5pdChncHUpOworCisJbXNtX3JkX2R1 bXBfc3VibWl0KHByaXYtPnJkLCBzdWJtaXQsIE5VTEwpOwogCiAJZm9yIChpID0gMDsgaSA8IHN1 Ym1pdC0+bnJfYm9zOyBpKyspIHsKIAkJc3RydWN0IG1zbV9nZW1fb2JqZWN0ICptc21fb2JqID0g c3VibWl0LT5ib3NbaV0ub2JqOwpAQCAtNjM0LDE2ICs2NzMsMTMgQEAgc3RydWN0IGRtYV9mZW5j ZSAqbXNtX2dwdV9zdWJtaXQoc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQpCiAJCSAqLwog CQlXQVJOX09OKGlzX2FjdGl2ZShtc21fb2JqKSAmJiAobXNtX29iai0+Z3B1ICE9IGdwdSkpOwog Ci0JCWlmIChzdWJtaXQtPmJvc1tpXS5mbGFncyAmIE1TTV9TVUJNSVRfQk9fV1JJVEUpCi0JCQlt c21fZ2VtX21vdmVfdG9fYWN0aXZlKCZtc21fb2JqLT5iYXNlLCBncHUsIHRydWUsIHN1Ym1pdC0+ aHdfZmVuY2UpOwotCQllbHNlIGlmIChzdWJtaXQtPmJvc1tpXS5mbGFncyAmIE1TTV9TVUJNSVRf Qk9fUkVBRCkKLQkJCW1zbV9nZW1fbW92ZV90b19hY3RpdmUoJm1zbV9vYmotPmJhc2UsIGdwdSwg ZmFsc2UsIHN1Ym1pdC0+aHdfZmVuY2UpOworCQltc21fZ2VtX21vdmVfdG9fYWN0aXZlKCZtc21f b2JqLT5iYXNlLCBncHUpOwogCX0KIAogCWdwdS0+ZnVuY3MtPnN1Ym1pdChncHUsIHN1Ym1pdCwg c3VibWl0LT5jdHgpOwogCXByaXYtPmxhc3RjdHggPSBzdWJtaXQtPmN0eDsKIAotCWhhbmdjaGVj a190aW1lcl9yZXNldChncHUpOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwog CiAJcmV0dXJuIHN1Ym1pdC0+aHdfZmVuY2U7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9ncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5oCmluZGV4IGRk NTU5NzkuLjNiZDE5MjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2dwdS5oCkBAIC0xNzMsNiArMTczLDggQEAg c3RydWN0IG1zbV9ncHVfc3VibWl0cXVldWUgewogCWludCBmYXVsdHM7CiAJc3RydWN0IGxpc3Rf aGVhZCBub2RlOwogCXN0cnVjdCBrcmVmIHJlZjsKKwlzdHJ1Y3QgbXNtX2dwdSAqZ3B1OworCXN0 cnVjdCBkcm1fc2NoZWRfZW50aXR5IHNjaGVkX2VudGl0eTsKIH07CiAKIHN0YXRpYyBpbmxpbmUg dm9pZCBncHVfd3JpdGUoc3RydWN0IG1zbV9ncHUgKmdwdSwgdTMyIHJlZywgdTMyIGRhdGEpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yaW5nYnVmZmVyLmMgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL21zbV9yaW5nYnVmZmVyLmMKaW5kZXggMDg4OTc2Ni4uZWYyYmYxMCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fcmluZ2J1ZmZlci5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX3JpbmdidWZmZXIuYwpAQCAtNTYsOSArNTYsMTQgQEAgc3RydWN0 IG1zbV9yaW5nYnVmZmVyICptc21fcmluZ2J1ZmZlcl9uZXcoc3RydWN0IG1zbV9ncHUgKmdwdSwg aW50IGlkLAogCiAJc25wcmludGYocmluZy0+bmFtZSwgc2l6ZW9mKHJpbmctPm5hbWUpLCAibXNt LWdwdS1yaW5nLSVkIiwgcmluZy0+aWQpOwogCisJaWYgKG1zbV9zY2hlZF9pbml0KCZyaW5nLT5z Y2hlZCwgcmluZy0+bmFtZSkgIT0gMCkgeworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIGZhaWw7 CisJfQogCXJpbmctPmZjdHggPSBtc21fZmVuY2VfY29udGV4dF9hbGxvYyhncHUtPmRldiwgcmlu Zy0+bmFtZSk7CiAKIAlpZHJfaW5pdCgmcmluZy0+ZmVuY2VfaWRyKTsKKwltdXRleF9pbml0KCZy aW5nLT5mZW5jZV9pZHJfbG9jayk7CiAKIAlyZXR1cm4gcmluZzsKIApAQCAtNzQsNiArNzksNyBA QCB2b2lkIG1zbV9yaW5nYnVmZmVyX2Rlc3Ryb3koc3RydWN0IG1zbV9yaW5nYnVmZmVyICpyaW5n KQogCiAJbXNtX2ZlbmNlX2NvbnRleHRfZnJlZShyaW5nLT5mY3R4KTsKIAorCW1zbV9zY2hlZF9j bGVhbnVwKCZyaW5nLT5zY2hlZCk7CiAJaWYgKHJpbmctPmJvKSB7CiAJCW1zbV9nZW1fcHV0X2lv dmEocmluZy0+Ym8sIHJpbmctPmdwdS0+YXNwYWNlKTsKIAkJbXNtX2dlbV9wdXRfdmFkZHIocmlu Zy0+Ym8pOwpAQCAtODEsNiArODcsNyBAQCB2b2lkIG1zbV9yaW5nYnVmZmVyX2Rlc3Ryb3koc3Ry dWN0IG1zbV9yaW5nYnVmZmVyICpyaW5nKQogCX0KIAogCWlkcl9kZXN0cm95KCZyaW5nLT5mZW5j ZV9pZHIpOworCW11dGV4X2Rlc3Ryb3koJnJpbmctPmZlbmNlX2lkcl9sb2NrKTsKIAogCWtmcmVl KHJpbmcpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fcmluZ2J1ZmZl ci5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fcmluZ2J1ZmZlci5oCmluZGV4IDUyMzM3M2Iu LjEwYWU0YTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3JpbmdidWZmZXIu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9yaW5nYnVmZmVyLmgKQEAgLTE5LDYgKzE5 LDcgQEAKICNkZWZpbmUgX19NU01fUklOR0JVRkZFUl9IX18KIAogI2luY2x1ZGUgIm1zbV9kcnYu aCIKKyNpbmNsdWRlICJtc21fc2NoZWQuaCIKIAogI2RlZmluZSByYm1lbXB0cihyaW5nLCBtZW1i ZXIpICBcCiAJKChyaW5nKS0+bWVtcHRyc19pb3ZhICsgb2Zmc2V0b2Yoc3RydWN0IG1zbV9yYm1l bXB0cnMsIG1lbWJlcikpCkBAIC00Miw3ICs0Myw5IEBAIHN0cnVjdCBtc21fcmluZ2J1ZmZlciB7 CiAJdWludDY0X3QgbWVtcHRyc19pb3ZhOwogCXN0cnVjdCBtc21fZmVuY2VfY29udGV4dCAqZmN0 eDsKIAlzdHJ1Y3QgaWRyIGZlbmNlX2lkcjsKKwlzdHJ1Y3QgbXV0ZXggZmVuY2VfaWRyX2xvY2s7 CiAJc3BpbmxvY2tfdCBsb2NrOworCXN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciBzY2hlZDsKIH07 CiAKIHN0cnVjdCBtc21fcmluZ2J1ZmZlciAqbXNtX3JpbmdidWZmZXJfbmV3KHN0cnVjdCBtc21f Z3B1ICpncHUsIGludCBpZCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3Nj aGVkLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zY2hlZC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjhiODA1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9zY2hlZC5jCkBAIC0wLDAgKzEsMzEzIEBACisvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMCAqLworLyogQ29weXJpZ2h0IChjKSAyMDE4LCBUaGUgTGludXgg Rm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKi8KKworI2luY2x1ZGUgIm1zbV9ncHUu aCIKKyNpbmNsdWRlICJtc21fZ2VtLmgiCisjaW5jbHVkZSAibXNtX3NjaGVkLmgiCisKKyNpbmNs dWRlIDxsaW51eC9zdHJpbmdfaGVscGVycy5oPgorI2luY2x1ZGUgPGxpbnV4L2t0aHJlYWQuaD4K Kworc3RydWN0IG1zbV9nZW1fc3VibWl0ICp0b19tc21fZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJtX3Nj aGVkX2pvYiAqc2NoZWRfam9iKQoreworCXJldHVybiBjb250YWluZXJfb2Yoc2NoZWRfam9iLCBz dHJ1Y3QgbXNtX2dlbV9zdWJtaXQsIHNjaGVkX2pvYik7Cit9CisKKy8qCisgKiBHbyB0aHJvdWdo IHRoZSBibydzIG9uZSBieSBvbmUgYW5kIHJldHVybiB0aGUgcHJldmlvdXNseSBzYXZlZCBzaGFy ZWQgYW5kCisgKiBleGNsdXNpdmUgZmVuY2VzLiBJZiB0aGUgc2NoZWR1bGVyIGdldHMgdGhlIGZl bmNlLCB0aGVuIGl0IHRha2VzIGNhcmUgb2YKKyAqIHJlbGVhc2luZyB0aGUgcmVmZXJlbmNlIG9u IHRoZSBmZW5jZS4KKyAqLworc3RhdGljIHN0cnVjdCBkbWFfZmVuY2UgKm1zbV9zY2hlZF9kZXBl bmRlbmN5KHN0cnVjdCBkcm1fc2NoZWRfam9iICpzY2hlZF9qb2IsCisJCXN0cnVjdCBkcm1fc2No ZWRfZW50aXR5ICplbnRpdHkpCit7CisJc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQgPSB0 b19tc21fZ2VtX3N1Ym1pdChzY2hlZF9qb2IpOworCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwor CWludCBpOworCisJaWYgKHN1Ym1pdC0+aW5fZmVuY2UpIHsKKwkJZmVuY2UgPSBzdWJtaXQtPmlu X2ZlbmNlOworCQlzdWJtaXQtPmluX2ZlbmNlID0gTlVMTDsKKworCQlpZiAoIWRtYV9mZW5jZV9p c19zaWduYWxlZChmZW5jZSkpCisJCQlyZXR1cm4gZmVuY2U7CisKKwkJZG1hX2ZlbmNlX3B1dChm ZW5jZSk7CisJfQorCisJLyogUmV0dXJuIHRoZSBwcmV2aW91c2x5IHNhdmVkIHNoYXJlZCBhbmQg ZXhjbHVzaXZlIGZlbmNlcyBpZiBhbnkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgc3VibWl0LT5ucl9i b3M7IGkrKykgeworCQlpbnQgajsKKworCQlpZiAoc3VibWl0LT5ib3NbaV0uZXhjbCkgeworCQkJ ZmVuY2UgPSBzdWJtaXQtPmJvc1tpXS5leGNsOworCQkJc3VibWl0LT5ib3NbaV0uZXhjbCA9IE5V TEw7CisKKwkJCWlmICghZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGZlbmNlKSkKKwkJCQlyZXR1cm4g ZmVuY2U7CisKKwkJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOworCQl9CisKKwkJZm9yIChqID0gMDsg aiA8IHN1Ym1pdC0+Ym9zW2ldLm5yX3NoYXJlZDsgaisrKSB7CisJCQlpZiAoIXN1Ym1pdC0+Ym9z W2ldLnNoYXJlZFtqXSkKKwkJCQljb250aW51ZTsKKworCQkJZmVuY2UgPSBzdWJtaXQtPmJvc1tp XS5zaGFyZWRbal07CisJCQlzdWJtaXQtPmJvc1tpXS5zaGFyZWRbal0gPSBOVUxMOworCisJCQlp ZiAoIWRtYV9mZW5jZV9pc19zaWduYWxlZChmZW5jZSkpCisJCQkJcmV0dXJuIGZlbmNlOworCisJ CQlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKKwkJfQorCisJCWtmcmVlKHN1Ym1pdC0+Ym9zW2ldLnNo YXJlZCk7CisJCXN1Ym1pdC0+Ym9zW2ldLm5yX3NoYXJlZCA9IDA7CisJCXN1Ym1pdC0+Ym9zW2ld LnNoYXJlZCA9IE5VTEw7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qg ZG1hX2ZlbmNlICptc21fc2NoZWRfcnVuX2pvYihzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRf am9iKQoreworCXN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0ID0gdG9fbXNtX2dlbV9zdWJt aXQoc2NoZWRfam9iKTsKKworCXJldHVybiAhc2NoZWRfam9iLT5zX2ZlbmNlLT5maW5pc2hlZC5l cnJvciA/CisJCW1zbV9ncHVfc3VibWl0KHN1Ym1pdCkgOiBOVUxMOworfQorCitzdGF0aWMgdm9p ZCBkdW1wX2JhZF9zdWJtaXQoc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQpCit7CisJc3Ry dWN0IG1zbV9ncHUgKmdwdSA9IHN1Ym1pdC0+Z3B1OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBncHUtPmRldjsKKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7CisJY2hhciB0YXNrX25hbWVbMzJdID0g ezB9OworCisJcmN1X3JlYWRfbG9jaygpOworCXRhc2sgPSBwaWRfdGFzayhzdWJtaXQtPnBpZCwg UElEVFlQRV9QSUQpOworCWlmICh0YXNrKSB7CisJCWNoYXIgKmNtZDsKKworCQljbWQgPSBrc3Ry ZHVwX3F1b3RhYmxlX2NtZGxpbmUodGFzaywgR0ZQX0tFUk5FTCk7CisKKwkJZGV2X2VycigmZ3B1 LT5wZGV2LT5kZXYsICIlczogb2ZmZW5kaW5nIHRhc2s6ICVzICglcylcbiIsCisJCQkJZ3B1LT5u YW1lLCB0YXNrLT5jb21tLCBjbWQpOworCisJCXNucHJpbnRmKHRhc2tfbmFtZSwgc2l6ZW9mKHRh c2tfbmFtZSksCisJCQkJIm9mZmVuZGluZyB0YXNrOiAlcyAoJXMpIiwgdGFzay0+Y29tbSwgY21k KTsKKworCQlrZnJlZShjbWQpOworCX0KKwlyY3VfcmVhZF91bmxvY2soKTsKKworCW11dGV4X2xv Y2soJmdwdS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCW1zbV9yZF9kdW1wX3N1Ym1pdChwcml2LT5o YW5ncmQsIHN1Ym1pdCwgdGFza19uYW1lKTsKKwltdXRleF91bmxvY2soJmdwdS0+ZGV2LT5zdHJ1 Y3RfbXV0ZXgpOworfQorCit2b2lkIG1zbV9zY2hlZF9ncHVfcmVjb3Zlcnkoc3RydWN0IG1zbV9n cHUgKmdwdSwgc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJtaXQpCit7CisJaW50IGk7CisJc3Rh dGljIGF0b21pY190IGdwdV9yZWNvdmVyeTsKKworCS8qIENoZWNrIGlmIGEgR1BVIHJlY292ZXJ5 IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MgKi8KKwlpZiAoIShhdG9taWNfY21weGNoZygmZ3B1X3Jl Y292ZXJ5LCAwLCAxKSA9PSAwKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBQYXVzZSB0aGUgc2No ZWR1bGVycyBzbyB3ZSBkb24ndCBnZXQgbmV3IHJlcXVlc3RzIHdoaWxlIHRoZSByZWNvdmVyeQor CSAqIGlzIGluIHByb2dyZXNzCisJICovCisJZm9yIChpID0gMDsgaSA8IGdwdS0+bnJfcmluZ3M7 IGkrKykKKwkJa3RocmVhZF9wYXJrKGdwdS0+cmJbaV0tPnNjaGVkLnRocmVhZCk7CisKKwkvKgor CSAqIERpc2FibGUgaW50ZXJydXB0cyBzbyB3ZSBkb24ndCBnZXQgaW50ZXJydXB0ZWQgd2hpbGUg dGhlIHJlY292ZXJ5IGlzCisJICogaW4gcHJvZ3Jlc3MKKwkgKi8KKwlkaXNhYmxlX2lycShncHUt PmlycSk7CisKKwlkZXZfZXJyKCZncHUtPnBkZXYtPmRldiwgIiVzOiBoYW5nY2hlY2sgcmVjb3Zl ciFcbiIsIGdwdS0+bmFtZSk7CisKKwlpZiAoc3VibWl0KQorCQlkdW1wX2JhZF9zdWJtaXQoc3Vi bWl0KTsKKworCS8qCisJICogRm9yIGVhY2ggcmluZywgd2UgZG8gdGhlIGZvbGxvd2luZworCSAq IGEpIEluZm9ybSB0aGUgc2NoZWR1bGVyIHRvIGRyb3AgdGhlIGhhcmR3YXJlIGZlbmNlIGZvciB0 aGUKKwkgKiBzdWJtaXNzaW9ucyBvbiBpdHMgbWlycm9yIGxpc3QKKwkgKiBiKSBUaGUgc3VibWl0 KGpvYikgbGlzdCBvbiB0aGUgcmluZyBpcyBub3QgdXNlZnVsIGFueW1vcmUKKwkgKiBhcyB3ZSBh cmUgZ29pbmcgZm9yIGEgZ3B1IHJlc2V0LCBzbyB3ZSBlbXB0eSB0aGUgc3VibWl0IGxpc3QKKwkg Ki8KKwlmb3IgKGkgPSAwOyBpIDwgZ3B1LT5ucl9yaW5nczsgaSsrKSB7CisJCXN0cnVjdCBtc21f Z2VtX3N1Ym1pdCAqam9iLCAqdG1wOworCQl1bnNpZ25lZCBsb25nIGZsYWdzOworCQlzdHJ1Y3Qg bXNtX3JpbmdidWZmZXIgKnJpbmcgPSBncHUtPnJiW2ldOworCisJCS8qIGEpIFJlbGVhc2UgdGhl IGhhcmR3YXJlIGZlbmNlcyAqLworCQlkcm1fc2NoZWRfaHdfam9iX3Jlc2V0KCZyaW5nLT5zY2hl ZCwKKwkJCQkoc3VibWl0ICYmIHN1Ym1pdC0+cmluZyA9PSByaW5nKSA/CisJCQkJJnN1Ym1pdC0+ c2NoZWRfam9iIDogTlVMTCk7CisKKwkJLyogYikgRnJlZSB1cCB0aGUgcmluZyBzdWJtaXQgbGlz dCAqLworCQlzcGluX2xvY2tfaXJxc2F2ZSgmcmluZy0+bG9jaywgZmxhZ3MpOworCisJCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShqb2IsIHRtcCwgJnJpbmctPnN1Ym1pdHMsIG5vZGUpCisJCQls aXN0X2RlbCgmam9iLT5ub2RlKTsKKworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyaW5nLT5s b2NrLCBmbGFncyk7CisJfQorCisJLyogUG93ZXIgY3ljbGUgYW5kIHJlc2V0IHRoZSBHUFUgYmFj ayB0byBpbml0IHN0YXRlICovCisJbXV0ZXhfbG9jaygmZ3B1LT5kZXYtPnN0cnVjdF9tdXRleCk7 CisKKwlwbV9ydW50aW1lX2dldF9zeW5jKCZncHUtPnBkZXYtPmRldik7CisJZ3B1LT5mdW5jcy0+ cmVjb3ZlcihncHUpOworCXBtX3J1bnRpbWVfcHV0X3N5bmMoJmdwdS0+cGRldi0+ZGV2KTsKKwor CW11dGV4X3VubG9jaygmZ3B1LT5kZXYtPnN0cnVjdF9tdXRleCk7CisKKwkvKiBSZS1lbmFibGUg dGhlIGludGVycnVwdHMgb25jZSB0aGUgZ3B1IHJlc2V0IGlzIGNvbXBsZXRlICovCisJZW5hYmxl X2lycShncHUtPmlycSk7CisKKwkvKgorCSAqIFRoZSBHUFUgaXMgaG9wZWZ1bGx5IGJhY2sgaW4g Z29vZCBzaGFwZSwgbm93IHJlcXVlc3QgdGhlIHNjaGVkdWxlcnMKKwkgKiB0byByZXBsYXkgaXRz IG1pcnJvciBsaXN0LCBzdGFydGluZyB3aXRoIHRoZSBzY2hlZHVsZXIgb24gdGhlIGhpZ2hlc3QK KwkgKiBwcmlvcml0eSByaW5nCisJICovCisJZm9yIChpID0gMDsgaSA8IGdwdS0+bnJfcmluZ3M7 IGkrKykgeworCQlkcm1fc2NoZWRfam9iX3JlY292ZXJ5KCZncHUtPnJiW2ldLT5zY2hlZCk7CisJ CWt0aHJlYWRfdW5wYXJrKGdwdS0+cmJbaV0tPnNjaGVkLnRocmVhZCk7CisJfQorCisJYXRvbWlj X3NldCgmZ3B1X3JlY292ZXJ5LCAwKTsKK30KKworc3RhdGljIHZvaWQgbXNtX3NjaGVkX3RpbWVk b3V0X2pvYihzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqYmFkX2pvYikKK3sKKwlzdHJ1Y3QgbXNtX2dl bV9zdWJtaXQgKnN1Ym1pdCA9IHRvX21zbV9nZW1fc3VibWl0KGJhZF9qb2IpOworCXN0cnVjdCBt c21fZ3B1ICpncHUgPSBzdWJtaXQtPmdwdTsKKwlzdHJ1Y3QgbXNtX3JpbmdidWZmZXIgKnJpbmcg PSBzdWJtaXQtPnJpbmc7CisKKwkvKgorCSAqIElmIHRoaXMgc3VibWlzc2lvbiBjb21wbGV0ZWQg aW4gdGhlIG1lYW4gdGltZSwgdGhlbiB0aGUgdGltZW91dCBpcworCSAqIHNwdXJpb3VzCisJICov CisJaWYgKHN1Ym1pdC0+c2Vxbm8gPD0gc3VibWl0LT5yaW5nLT5tZW1wdHJzLT5mZW5jZSkKKwkJ cmV0dXJuOworCisJZGV2X2VycigmZ3B1LT5wZGV2LT5kZXYsICIlczogaGFuZ2NoZWNrIGRldGVj dGVkIGdwdSBsb2NrdXAgcmIgJWQhXG4iLAorCQkJZ3B1LT5uYW1lLCByaW5nLT5pZCk7CisJZGV2 X2VycigmZ3B1LT5wZGV2LT5kZXYsICIlczogICAgIGNvbXBsZXRlZCBmZW5jZTogJXVcbiIsCisJ CQlncHUtPm5hbWUsIHJpbmctPm1lbXB0cnMtPmZlbmNlKTsKKwlkZXZfZXJyKCZncHUtPnBkZXYt PmRldiwgIiVzOiAgICAgc3VibWl0dGVkIGZlbmNlOiAldVxuIiwKKwkJCWdwdS0+bmFtZSwgcmlu Zy0+c2Vxbm8pOworCisJbXNtX3NjaGVkX2dwdV9yZWNvdmVyeShncHUsIHN1Ym1pdCk7Cit9CisK K3N0YXRpYyB2b2lkIG1zbV9zY2hlZF9mcmVlX2pvYihzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2No ZWRfam9iKQoreworCXN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0ID0gdG9fbXNtX2dlbV9z dWJtaXQoc2NoZWRfam9iKTsKKwlzdHJ1Y3QgbXNtX2dwdSAqZ3B1ID0gc3VibWl0LT5ncHU7CisJ aW50IGk7CisKKwltdXRleF9sb2NrKCZncHUtPmRldi0+c3RydWN0X211dGV4KTsKKworCWZvciAo aSA9IDA7IGkgPCBzdWJtaXQtPm5yX2JvczsgaSsrKSB7CisJCXN0cnVjdCBtc21fZ2VtX29iamVj dCAqbXNtX29iaiA9IHN1Ym1pdC0+Ym9zW2ldLm9iajsKKworCQltc21fZ2VtX21vdmVfdG9faW5h Y3RpdmUoJm1zbV9vYmotPmJhc2UpOworCX0KKworCW11dGV4X3VubG9jaygmZ3B1LT5kZXYtPnN0 cnVjdF9tdXRleCk7CisKKwlwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KCZncHUtPnBkZXYtPmRl dik7CisJcG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQoJmdwdS0+cGRldi0+ZGV2KTsKKworCW1z bV9nZW1fc3VibWl0X2ZyZWUoc3VibWl0KTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f c2NoZWRfYmFja2VuZF9vcHMgbXNtX3NjaGVkX29wcyA9IHsKKwkuZGVwZW5kZW5jeSA9IG1zbV9z Y2hlZF9kZXBlbmRlbmN5LAorCS5ydW5fam9iID0gbXNtX3NjaGVkX3J1bl9qb2IsCisJLnRpbWVk b3V0X2pvYiA9IG1zbV9zY2hlZF90aW1lZG91dF9qb2IsCisJLmZyZWVfam9iID0gbXNtX3NjaGVk X2ZyZWVfam9iLAorfTsKKworaW50IG1zbV9zY2hlZF9qb2JfaW5pdChzdHJ1Y3QgZHJtX3NjaGVk X2pvYiAqc2NoZWRfam9iKQoreworCWludCByZXQ7CisJc3RydWN0IG1zbV9nZW1fc3VibWl0ICpz dWJtaXQgPSB0b19tc21fZ2VtX3N1Ym1pdChzY2hlZF9qb2IpOworCXN0cnVjdCBtc21fcmluZ2J1 ZmZlciAqcmluZyA9IHN1Ym1pdC0+cmluZzsKKworCXJldCA9IGRybV9zY2hlZF9qb2JfaW5pdChz Y2hlZF9qb2IsICZyaW5nLT5zY2hlZCwKKwkJCSZzdWJtaXQtPnF1ZXVlLT5zY2hlZF9lbnRpdHks IHN1Ym1pdC0+Y3R4KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJc3VibWl0LT5vdXRf ZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KCZzdWJtaXQtPnNjaGVkX2pvYi5zX2ZlbmNlLT5maW5pc2hl ZCk7CisKKwltdXRleF9sb2NrKCZyaW5nLT5mZW5jZV9pZHJfbG9jayk7CisJc3VibWl0LT5vdXRf ZmVuY2VfaWQgPSBpZHJfYWxsb2NfY3ljbGljKCZyaW5nLT5mZW5jZV9pZHIsCisJCQkJCQlzdWJt aXQtPm91dF9mZW5jZSwgMCwgSU5UX01BWCwKKwkJCQkJCUdGUF9LRVJORUwpOworCW11dGV4X3Vu bG9jaygmcmluZy0+ZmVuY2VfaWRyX2xvY2spOworCisJaWYgKHN1Ym1pdC0+b3V0X2ZlbmNlX2lk IDwgMCkgeworCQkvKgorCQkgKiBUT0RPOiBUaGUgc2NoZWR1bGVyJ3MgZmluaXNoZWQgZmVuY2Ug bGVha3MgaGVyZSBzaW5jZSB0aGUKKwkJICogam9iIHdpbGwgbm90IGJlIHB1c2hlZCB0byB0aGUg cXVldWUuIE5lZWQgdG8gdXBkYXRlIHNjaGVkdWxlcgorCQkgKiB0byBmaXggdGhpcyBjbGVhbmx5 KD8pCisJCSAqLworCQlkbWFfZmVuY2VfcHV0KHN1Ym1pdC0+b3V0X2ZlbmNlKTsKKwkJc3VibWl0 LT5vdXRfZmVuY2UgPSBOVUxMOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlyZXR1cm4gMDsK K30KKwordm9pZCBtc21fc2NoZWRfcHVzaF9qb2Ioc3RydWN0IG1zbV9nZW1fc3VibWl0ICpzdWJt aXQpCit7CisJcmV0dXJuIGRybV9zY2hlZF9lbnRpdHlfcHVzaF9qb2IoJnN1Ym1pdC0+c2NoZWRf am9iLAorCQkJJnN1Ym1pdC0+cXVldWUtPnNjaGVkX2VudGl0eSk7Cit9CisKK2ludCBtc21fc2No ZWRfaW5pdChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLCBjb25zdCBjaGFyICpuYW1l KQoreworCXJldHVybiBkcm1fc2NoZWRfaW5pdChzY2hlZCwgJm1zbV9zY2hlZF9vcHMsIDQsIDAs CisJCQltc2Vjc190b19qaWZmaWVzKDUwMCksIG5hbWUpOworfQorCit2b2lkIG1zbV9zY2hlZF9j bGVhbnVwKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCit7CisJZHJtX3NjaGVkX2Zp bmkoc2NoZWQpOworfQorCisvKgorICogQ3JlYXRlIGEgbmV3IGVudGl0eSBvbiB0aGUgc2NoZWR1 bGVycyBub3JtYWwgcHJpb3JpdHkgcnVucXVldWUuIEZvciBub3cgd2UKKyAqIGNob29zZSB0byBh bHdheXMgdXNlIHRoZSBub3JtYWwgcnVuIHF1ZXVlIHByaW9yaXR5LCBidXQgaW4gZnV0dXJlIGl0 cworICogcG9zc2libGUgd2l0aCBzb21lIGV4dGVuc2lvbiB0byB0aGUgbXNtIGRybSBpbnRlcmZh Y2UsIHRvIGNyZWF0ZSB0aGUKKyAqIHN1Ym1pdHF1ZXVlKGVudGl0aWVzKSBvZiBkaWZmZXJlbnQg cHJpb3JpdGllcyBvbiB0aGUgc2FtZSByaW5nLCB0aGVyZWJ5CisgKiBhbGxvd2luZyB0byBwcmlv cnRpemUgYW5kIHNjaGVkdWxlIHN1Ym1pdHF1ZXVlcyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgcmlu ZworICovCitpbnQgbXNtX3NjaGVkX2VudGl0eV9pbml0KHN0cnVjdCBtc21fZ3B1ICpncHUsCisJ CXN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICpzY2hlZF9lbnRpdHksIGludCBwcmlvKQoreworCXN0 cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQgPSAmZ3B1LT5yYltwcmlvXS0+c2NoZWQ7CisK KwlyZXR1cm4gZHJtX3NjaGVkX2VudGl0eV9pbml0KHNjaGVkLCBzY2hlZF9lbnRpdHksCisJCQkm c2NoZWQtPnNjaGVkX3JxW0RSTV9TQ0hFRF9QUklPUklUWV9OT1JNQUxdLCBOVUxMKTsKK30KKwor dm9pZCBtc21fc2NoZWRfZW50aXR5X2NsZWFudXAoc3RydWN0IG1zbV9ncHUgKmdwdSwKKwkJc3Ry dWN0IGRybV9zY2hlZF9lbnRpdHkgKnNjaGVkX2VudGl0eSwgaW50IHByaW8pCit7CisJc3RydWN0 IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCA9ICZncHUtPnJiW3ByaW9dLT5zY2hlZDsKKworCWRy bV9zY2hlZF9lbnRpdHlfZmluaShzY2hlZCwgc2NoZWRfZW50aXR5KTsKK30KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3NjaGVkLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9zY2hlZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYjI3MjgKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zY2hlZC5oCkBAIC0wLDAg KzEsMTggQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCisvKiBDb3B5 cmlnaHQgKGMpIDIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk LiAqLworCisjaWZuZGVmIF9fTVNNX1NDSEVEX0hfXworI2RlZmluZSBfX01TTV9TQ0hFRF9IX18K KworI2luY2x1ZGUgPGRybS9ncHVfc2NoZWR1bGVyLmg+CisKK2ludCBtc21fc2NoZWRfaW5pdChz dHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLCBjb25zdCBjaGFyICpuYW1lKTsKK3ZvaWQg bXNtX3NjaGVkX2NsZWFudXAoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCk7CitpbnQg bXNtX3NjaGVkX2VudGl0eV9pbml0KHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBkcm1fc2No ZWRfZW50aXR5ICpxdWV1ZSwKKwkJaW50IHByaW8pOwordm9pZCBtc21fc2NoZWRfZW50aXR5X2Ns ZWFudXAoc3RydWN0IG1zbV9ncHUgKmdwdSwKKwkJc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKnF1 ZXVlLCBpbnQgcHJpbyk7CitpbnQgbXNtX3NjaGVkX2pvYl9pbml0KHN0cnVjdCBkcm1fc2NoZWRf am9iICpzY2hlZF9qb2IpOwordm9pZCBtc21fc2NoZWRfcHVzaF9qb2Ioc3RydWN0IG1zbV9nZW1f c3VibWl0ICpzdWJtaXQpOwordm9pZCBtc21fc2NoZWRfZ3B1X3JlY292ZXJ5KHN0cnVjdCBtc21f Z3B1ICpncHUsIHN0cnVjdCBtc21fZ2VtX3N1Ym1pdCAqc3VibWl0KTsKKyNlbmRpZiAvKiBfX01T TV9TQ0hFRF9IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N1Ym1p dHF1ZXVlLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9zdWJtaXRxdWV1ZS5jCmluZGV4IDMy NWRhNDQuLmI2ZWIxM2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX3N1Ym1p dHF1ZXVlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fc3VibWl0cXVldWUuYwpAQCAt MTksNiArMTksNyBAQCB2b2lkIG1zbV9zdWJtaXRxdWV1ZV9kZXN0cm95KHN0cnVjdCBrcmVmICpr cmVmKQogCXN0cnVjdCBtc21fZ3B1X3N1Ym1pdHF1ZXVlICpxdWV1ZSA9IGNvbnRhaW5lcl9vZihr cmVmLAogCQlzdHJ1Y3QgbXNtX2dwdV9zdWJtaXRxdWV1ZSwgcmVmKTsKIAorCW1zbV9zY2hlZF9l bnRpdHlfY2xlYW51cChxdWV1ZS0+Z3B1LCAmcXVldWUtPnNjaGVkX2VudGl0eSwgcXVldWUtPnBy aW8pOwogCWtmcmVlKHF1ZXVlKTsKIH0KIApAQCAtNjUsNiArNjYsNyBAQCBpbnQgbXNtX3N1Ym1p dHF1ZXVlX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgbXNtX2ZpbGVfcHJp dmF0ZSAqY3R4LAogewogCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBkcm0tPmRldl9w cml2YXRlOwogCXN0cnVjdCBtc21fZ3B1X3N1Ym1pdHF1ZXVlICpxdWV1ZTsKKwlzdHJ1Y3QgbXNt X2dwdSAqZ3B1ID0gcHJpdi0+Z3B1OwogCiAJaWYgKCFjdHgpCiAJCXJldHVybiAtRU5PREVWOwpA QCAtNzcsMTMgKzc5LDE2IEBAIGludCBtc21fc3VibWl0cXVldWVfY3JlYXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkcm0sIHN0cnVjdCBtc21fZmlsZV9wcml2YXRlICpjdHgsCiAJa3JlZl9pbml0KCZx dWV1ZS0+cmVmKTsKIAlxdWV1ZS0+ZmxhZ3MgPSBmbGFnczsKIAotCWlmIChwcml2LT5ncHUpIHsK LQkJaWYgKHByaW8gPj0gcHJpdi0+Z3B1LT5ucl9yaW5ncykgewotCQkJa2ZyZWUocXVldWUpOwot CQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KKwlpZiAoZ3B1KSB7CisJCWlmIChwcmlvID49IGdwdS0+ bnJfcmluZ3MpCisJCQlnb3RvIGZhaWw7CisKKwkJaWYgKG1zbV9zY2hlZF9lbnRpdHlfaW5pdChw cml2LT5ncHUsICZxdWV1ZS0+c2NoZWRfZW50aXR5LAorCQkJCQlwcmlvKSkKKwkJCWdvdG8gZmFp bDsKIAogCQlxdWV1ZS0+cHJpbyA9IHByaW87CisJCXF1ZXVlLT5ncHUgPSBncHU7CiAJfQogCiAJ d3JpdGVfbG9jaygmY3R4LT5xdWV1ZWxvY2spOwpAQCAtOTgsNiArMTAzLDkgQEAgaW50IG1zbV9z dWJtaXRxdWV1ZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0IG1zbV9maWxl X3ByaXZhdGUgKmN0eCwKIAl3cml0ZV91bmxvY2soJmN0eC0+cXVldWVsb2NrKTsKIAogCXJldHVy biAwOworZmFpbDoKKwlrZnJlZShxdWV1ZSk7CisJcmV0dXJuIC1FSU5WQUw7CiB9CiAKIGludCBt c21fc3VibWl0cXVldWVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgbXNtX2Zp bGVfcHJpdmF0ZSAqY3R4KQotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ZyZWVkcmVubwo=